1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
Родом из детства 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 | |||
Родом из детства 6 - 09.12.20 - 13:03 | (5) Ну вообще это внешняя печатная форма, то есть обработка. Там для отладки сделал форму обработки, где выбираю документ и печатаю его. Обработку перезапускал, значит, по идее, печатная форма тоже переоткрывалась. А вот с кэшем дел не имел - молодой ещё:) | ||
hhhh 7 - 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) А я её открываю, как внешнюю обработку, так, что думаю, нет | ||
hhhh 11 - 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) Да, Вы победили! Большое спасибо всем за ответы. Действительно, стоило сюда посмотреть с самого начала, но даже подумать не мог, что так происходит... |
|
Список тем форума |