Имя: Пароль:
1C
1С v8
Макет печатной формы - не видит параметр области
0 Родом из детства
 
09.12.20
12:50
Попросили добавить в уже имеющийся параметр данные по номеру накладной - казалось бы, ничего сложного, однако, уже несколько часов не могу понять в чем дело...
Прежде там получали запросом необходимую инфу и заполняли параметры области подобным образом:
            
                        Если ЗначениеЗаполнено(ВыборкаДанныеПоСкладу.ОсобыеОтметки) Тогда
                ОбластьМакета = Макет.ПолучитьОбласть("ОсобыеОтметки");
                ОбластьМакета.Параметры.Заполнить(ВыборкаДанныеПоСкладу);
                ТабличныйДокумент.Вывести(ОбластьМакета);
            Иначе
                ОбластьМакета = Макет.ПолучитьОбласть("ОсобыеОтметкиПустые");
                ТабличныйДокумент.Вывести(ОбластьМакета);
            КонецЕсли;

Выходит использовали следующую конструкцию: ТекстовыйДокумент.Параметры.Заполнить() - в синтаксис помощнике никакой информации по ней нет, однако, на одном форуме человек предположил, что эта процедура сопоставляет имена параметров области с наименованием колонок выборки - ладно, появилась идея создать структуру и передавать её в эту процедуру.

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

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

Тоже безуспешно...
Проверил в отладке некоторые моменты:
1) Обнаружил странную конструкцию
чекаю - ОбластьМакета.Параметры.ОсобыеОтметки - возвращает "Поле объекта не обнаружено". То есть явно почему-то не обратиться к параметрам, смотрю ОбластьМакета.Параметры - 0. Вообще не совсем понимаю, что подразумевается под областью макета, тк она, как дерево, имеет подобласти, или типо того -> ОбластьМакета.Области.ОсобыеОтметкиПустые - казалось бы, стоило обратиться к параметрам следующим образом: ОбластьМакета.Области.ОсобыеОтметкиПустые.Параметры.ОсобыеОтметки, но нет - поля "ОбластьМакета.Области.ОсобыеОтметкиПустые.Параметры" отсутствует, существует ОбластьМакета.Области.ОсобыеОтметкиПустые.Параметр, да и он пустой(неопределено)

Может, кто-нибудь укажет в чем ошибка:) Заранее спасибо за ответ...
1 Малыш Джон
 
09.12.20
12:55
Видимо кто-то забыл добавить в макет область с таким именем?

по поводу "ТекстовыйДокумент.Параметры.Заполнить() - в синтаксис помощнике никакой информации по ней нет":

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

Заполнить(<Объект>)
Параметры:

<Объект> (обязательный)

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

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

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
2 Малыш Джон
 
09.12.20
12:57
(1) "Видимо кто-то забыл добавить в макет область с таким именем?" читать как "Видимо кто-то забыл добавить в макет ячейку с параметром с таким именем?"
3 Родом из детства
 
09.12.20
12:59
(2) В самом макете есть и обе области(ОсобыеОтметки и ОсобыеОтметкиПустые), у каждой из них есть ячейка типа "параметр" с названием "ОсобыеОтметки". Может, я туплю, конечно жестко - не знаю, но, вроде, всё уже проверил
4 Родом из детства
 
09.12.20
12:59
(1) А по поводу описания процедуры - так и не понял, структуру мою она съест, или нет? По идее - да
5 Малыш Джон
 
09.12.20
13:01
(3) тогда макет не тот
или печатную форму не переоткрыл после добавления параметра
или кеш
6 Родом из детства
 
09.12.20
13:03
(5) Ну вообще это внешняя печатная форма, то есть обработка. Там для отладки сделал форму обработки, где выбираю документ и печатаю его. Обработку перезапускал, значит, по идее, печатная форма тоже переоткрывалась. А вот с кэшем дел не имел - молодой ещё:)
7 hhhh
 
09.12.20
13:07
(6) возможно есть ОБластьМакета переменная в другом месте. Давайте скрины показывайте
8 Родом из детства
 
09.12.20
13:11
(7) Сейчас попробую- в первый раз тут:)
9 Вафель
 
09.12.20
13:11
а может это печ форма изменена в пользовательском режиме?
10 Родом из детства
 
09.12.20
13:12
(9) А я её открываю, как внешнюю обработку, так, что думаю, нет
11 hhhh
 
09.12.20
13:14
(10) не факт. Откуда макет берется?
12 Родом из детства
 
09.12.20
13:16
Немного картинок:
https://ibb.co/wyF6M2L - Сам макет, точнее эти две области, которые заполняются в зависимости от условия. Как видим, ячейка - параметр, названия совпадают
https://ibb.co/VgGLN8x - Тут чекаю в отладке
13 Родом из детства
 
09.12.20
13:18
(11) Макет = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПечатьОбщихФорм.ПФ_MXL_МХ1") - кстати, а ведь действительно
14 Родом из детства
 
09.12.20
13:24
(11) Да, Вы победили! Большое спасибо всем за ответы. Действительно, стоило сюда посмотреть с самого начала, но даже подумать не мог, что так происходит...