![]() |
|
Макет печатной формы - не видит параметр области | ☑ | ||
---|---|---|---|---|
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) Да, Вы победили! Большое спасибо всем за ответы. Действительно, стоило сюда посмотреть с самого начала, но даже подумать не мог, что так происходит...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |