Не видит параметр макета 1с

Если ЗначениеЗаполнено(ВыборкаДанныеПоСкладу.ОсобыеОтметки) Тогда
ОбластьМакета = Макет.ПолучитьОбласть(«ОсобыеОтметки»);
ОбластьМакета.Параметры.Заполнить(ВыборкаДанныеПоСкладу);
ТабличныйДокумент.Вывести(ОбластьМакета);
Иначе
ОбластьМакета = Макет.ПолучитьОбласть(«ОсобыеОтметкиПустые»);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;

СтруктураЗаполнения = новый Структура;

Если ЗначениеЗаполнено(ВыборкаДанныеПоСкладу.ОсобыеОтметки) Тогда
ОбластьМакета = Макет.ПолучитьОбласть(«ОсобыеОтметки»);
СтруктураЗаполнения.Вставить(«ОсобыеОтметки», Строка(ДанныеПечати.Ссылка.НомерЗаказа) + «, » + ВыборкаДанныеПоСкладу.ОсобыеОтметки);
ОбластьМакета.Параметры.Заполнить(СтруктураЗаполнения);
ТабличныйДокумент.Вывести(ОбластьМакета);
Иначе
ОбластьМакета = Макет.ПолучитьОбласть(«ОсобыеОтметкиПустые»);
СтруктураЗаполнения.Вставить(«ОсобыеОтметки», Строка(ДанныеПечати.Ссылка.НомерЗаказа));
ОбластьМакета.Параметры.Заполнить(СтруктураЗаполнения);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;

Однако, результат такой же плачевный. Ах да, забыл про обращение к параметрам области напрямую:

Если ЗначениеЗаполнено(ВыборкаДанныеПоСкладу.ОсобыеОтметки) Тогда
ОбластьМакета = Макет.ПолучитьОбласть(«ОсобыеОтметки»);
ОсобыеОтметкиТекст = Строка(ДанныеПечати.Ссылка.НомерЗаказа) + «, » + ВыборкаДанныеПоСкладу.ОсобыеОтметки;
Иначе
ОбластьМакета = Макет.ПолучитьОбласть(«ОсобыеОтметкиПустые»);
ОсобыеОтметкиТекст = Строка(ДанныеПечати.Ссылка.НомерЗаказа);
КонецЕсли;
ОбластьМакета.Параметры.ОсобыеОтметки = ОсобыеОтметкиТекст;
ТабличныйДокумент.Вывести(ОбластьМакета);

Может, кто-нибудь укажет в чем ошибка:) Заранее спасибо за ответ.

Видимо кто-то забыл добавить в макет область с таким именем?

(SpreadsheetDocumentTemplateParameters)
Заполнить (Fill)
Синтаксис:

Тип: Произвольный.
Объект, из свойств которого будут заполняться параметры макета табличного документа.
Описание:

Заполняет параметры значениями свойств переданного объекта. Заполняются только те параметры, имена которых совпадают с именами свойств объекта.

Сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).

Источник

PROИТ

Office 365, AD, Active Directory, Sharepoint, C#, Powershell. Технические статьи и заметки.

1C. «Недопустимое значение параметра» при вызове макета в расширении

Дано: 1С (в данном примере конфигурация 1С:Университет ПРОФ), платформа 8.3.10. Создано расширение, в котором к документу добавлен новый макет. В модуле менеджера документа есть процедура, формирующая печатную форму на базе макета. Необходимо было заменить данную процедуру (при помощи директивы расширения «&Вместо») и заменить вызов встроенного макета на наш, добавленный в расширение.
Проблема: при вызове добавленного макета в момент его печати в режиме «1С:Предприятие» возникала ошибка при получении макета:

<ЗаявлениеПоступающегоРасширение Документ.ЗаявлениеПоступающего.МодульМенеджера(176)>: Ошибка при вызове метода контекста (ПолучитьМакет)
Макет = Документы.ЗаявлениеПоступающего.ПолучитьМакет («Расш1_МакетЗаявлениеПоступающего»);
по причине:
Недопустимое значение параметра (параметр номер ‘1’)

Не видит параметр макета 1с. Смотреть фото Не видит параметр макета 1с. Смотреть картинку Не видит параметр макета 1с. Картинка про Не видит параметр макета 1с. Фото Не видит параметр макета 1с

Не видит параметр макета 1с. Смотреть фото Не видит параметр макета 1с. Смотреть картинку Не видит параметр макета 1с. Картинка про Не видит параметр макета 1с. Фото Не видит параметр макета 1с

Код, вызывающий ошибку:

Не видит параметр макета 1с. Смотреть фото Не видит параметр макета 1с. Смотреть картинку Не видит параметр макета 1с. Картинка про Не видит параметр макета 1с. Фото Не видит параметр макета 1с

Не видит параметр макета 1с. Смотреть фото Не видит параметр макета 1с. Смотреть картинку Не видит параметр макета 1с. Картинка про Не видит параметр макета 1с. Фото Не видит параметр макета 1с

А затем из заменяемой процедуры вызвать эту функцию:

Не видит параметр макета 1с. Смотреть фото Не видит параметр макета 1с. Смотреть картинку Не видит параметр макета 1с. Картинка про Не видит параметр макета 1с. Фото Не видит параметр макета 1с

(как оказалось этот способ не нужен. Причину читайте ниже)

Не видит параметр макета 1с. Смотреть фото Не видит параметр макета 1с. Смотреть картинку Не видит параметр макета 1с. Картинка про Не видит параметр макета 1с. Фото Не видит параметр макета 1с

——
Видимо это всё-таки какой-то глюк платформы (протестировано на 8.3.10.2252 и 8.3.10.2299), но если просто добавить пустой макет в общие макеты в расширении, то команда, ранее вызывавшая ошибку (ПолучитьМакет из макета документа без допфункций на сервере), начинает нормально работать. При удалении пустого общего макета, команда вызова макета из документа снова вызывает ошибку (даже если вынесена в функцию на сервере, как показано в способе 1).
Т.е. если всё-таки хочется сделать макеты нормально в документе (ожидая, что когда-нибудь этот глюк исправят), то нужно сделать макет-заглушку в общих макетах. Например:

Источник

Вывод параметров на макет

(26) Конечно, мы же строку не выводим, ыхыхы

Потому что получение штрихкода почему-то после цикла обхода выборки.

upd: а, не разобрался сперва. Отладчик что говорит?

Вот так должно взлететь, думаю.

(13)так?
или туплю
Процедура РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаДетали)

Пока ВыборкаДетали.Следующий() Цикл

ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
Иначе

Пока ВыборкаРезультат.Следующий() Цикл
_Дополнительно = Новый Структура;
_Дополнительно.Вставить(«ВариантИсполнения»,ВыборкаДетали.ВИ);
_Дополнительно.Вставить(«ЕдИзм»,ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить(«_ШК»,_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
КонецЦикла;

КонецЕсли;
Если НЕ глПустоеЗначение(ВыборкаДетали.ВИ) Тогда
_Дополнительно = Новый Структура;
_Дополнительно.Вставить(«ВариантИсполнения»,ВыборкаДетали.ВИ);
_Дополнительно.Вставить(«ЕдИзм»,ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить(«_ШК»,_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
иначе
Пока ВыборкаРезультат.Следующий() Цикл
_Дополнительно = Новый Структура;
_Дополнительно.Вставить(«ВариантИсполнения»,ВыборкаДетали.ВИ);
_Дополнительно.Вставить(«ЕдИзм»,ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить(«_ШК»,_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
КонецЦикла;

КонецЕсли;
КонецЦикла;
КонецПроцедуры

Источник

Получение всех параметров макета + маленькие хитрости

Маленькие хитрости передачи параметров в макеты печатных форм.

Без претензий на изобретение – тут ничего нового, просто накопилось, потому и решил написать эту заметку.

Первый звонок от клиента на базовой БП вызвал лёгкое недоумение – ежели бы ошибка была в релизе, то шквал звонков был бы практически обеспечен, а тут тишина, только один, но …подключился, посмотрел – действительно, сваливается по ошибке:

Не видит параметр макета 1с. Смотреть фото Не видит параметр макета 1с. Смотреть картинку Не видит параметр макета 1с. Картинка про Не видит параметр макета 1с. Фото Не видит параметр макета 1с

Решение – маленькая хитрость, параметр должен остаться в макете, но в печатную форму выводиться не должен. Путей решения увиделось два:

Не видит параметр макета 1с. Смотреть фото Не видит параметр макета 1с. Смотреть картинку Не видит параметр макета 1с. Картинка про Не видит параметр макета 1с. Фото Не видит параметр макета 1с

Результат – можно писать любой текст, где захочется, главное, чтобы параметр остался в макете:

Не видит параметр макета 1с. Смотреть фото Не видит параметр макета 1с. Смотреть картинку Не видит параметр макета 1с. Картинка про Не видит параметр макета 1с. Фото Не видит параметр макета 1с

Дальше возникают всякие «вредные» мысли: если существует вероятность того, что макет может каким-либо «волшебным» образом измениться, зачем заставлять людей мучиться вытворением хитростей, типа описанной выше?

Если рисуем свою печатную форму и знаем, что с макетом может произойти всё, что угодно, то не стоит использовать конструкции вывода параметров типа:

Лучше собрать возможные параметры в структуру и заполнить параметры макета не несколько строк, как выше, а как то так:

Теперь, чтобы быстро использовать эти варианты с заполнением ячейки всеми параметрами формы или создания структуры, родилась идея использовать обработку, которая составит строку для шаблона ячейки параметров, или строку для создания фиксированной структуры для модуля печатной формы.

Параметры шаблона нужны для случаев, когда заполнением параметров напрямую (через структуру) управлять нельзя, например, конфигурация на поддержке, снимать нельзя в силу каких-то вполне объективных причин, а пользователю зачем-то нужно периодически менять макет.

Может быть ещё вариант – есть какой-то макет, в котором туча параметров, пропустить которые по недогляду вполне возможно, но очень не хотелось бы.

По итогам получилась обработка, в которую можно вывести все параметры общего маета, или макета из файла с итоговыми строками параметров и строки, для копипаста в текст конструктора структуры:

Не видит параметр макета 1с. Смотреть фото Не видит параметр макета 1с. Смотреть картинку Не видит параметр макета 1с. Картинка про Не видит параметр макета 1с. Фото Не видит параметр макета 1с

Может быть и другая ситуация – есть макет, там туча параметров, и не хочется пропустить какой-нибудь.

Источник

Перестали работать все печатные формы

(1) Можно написать что угодно и достаточно одной точки, например, «Фигня.ТрудовойДоговор» прекрасно работает. А все изза того что производится поиск в РегистрСведений.ПользовательскиеМакетыПечати, в котором измерениями являются : Объект = Фигня, ИмяМакета = ТрудовойДоговор. После того как программа не нашла аналогов вашей Фигне в этом регистре, она открывает ваш макет ТрудовойДоговор.

Считаю что это должны исправить, т.к. для ВПФ нечего указать в качестве пути. А вы считаете что это должны исправить?

если в вашем внешнем макете ( печатной форме) таблица называлась Общая
но после обновления разрботчики ее назвали Общие

В передаваемых параметрах (шестой) к процедуре ВывестиТабличныйДокументВКоллекцию нужен полный путь до печатной формы.

(6) не совсем понял, внешняя печатная форма расположена в этойже самой внешней обработки, что нужно сдлать чтобы система не ругалась. В приведенном выше примере сылается на нахождение формы в документе.

Так же вопрос, если одна печатная форма (новая, расположена в самой обработке) используется на два документа? то данную функцию нельзя универсально использовать? нужно вместо одной обработки сделать две?

Я поступил следующим образом.
Добавил в расширение УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию с функцией Перед

Теперь печатные формы переделывать не потребуется.

Добавьте в расширение процедуру общего модуля УправлениеПечатьюМультиязычность &Вместо(«ЯзыкиМакета»).

//и будет вам счастье:) не надо будет трогать ни одну форму

Твоим способом заработает, НО ПРИ ЭТОМ СТАНДАРТНЫЕ ПФ перестанут работать.
НУЖНО ПРОСТО В ОБРАБОТКУ ПРОПИСАТЬ полный муть на макет, например :

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, «ДоговорПодрядаСБК») Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,»ДоговорПодрядаСБК», «ДоговорПодрядаСБК»,
ПечатьДоговора(МассивОбъектов, ОбъектыПечати),,
» Документ.ДоговорРаботыУслуги.ПФ_MXL_ДыговорПодряда «);

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *