![]() |
|
Как сделать ссылку на временную таблицу из документа во ВПФ УТ10.3 (подробно внутри) | ☑ | ||
---|---|---|---|---|
0
Shecurok
28.01.20
✎
09:37
|
Здравствуйте форумчане.
Еще многого не знаю и прошу помощи. Необходимо было немного доработать печатную форм УПД для УТ10.3, а именно заполнить ответственных лиц с доверенностью. Решено было прикрутить ВПФ с формой выбора ответственного лица, и уже из формы вызывается сама процедура печатать. Так вот, код брал из типовых модулей, в целом ничего сложного, сделать форму тоже оказалось не проблематично, там всего несколько кнопок. Вся мой ВПФ, повторюсь, сделана из кусков кода типовой УТ. Но не могу вывести платежно-расчетные документы. За вывод ПРД отвечает этот код: СтрокаПоДокументу = ""; Если ДанныеДляПечати.Свойство("ТаблицаДатОплат") Тогда Для каждого ПараметрыДокументаОплаты Из ДанныеДляПечати.ТаблицаДатОплат Цикл Если НЕ ЗначениеЗаполнено(ПараметрыДокументаОплаты.НомерПлатежноРасчетногоДокумента) И НЕ ЗначениеЗаполнено(ПараметрыДокументаОплаты.ДатаПлатежноРасчетногоДокумента) Тогда Продолжить; КонецЕсли; СтрокаПоДокументу = СтрокаПоДокументу + ?(ПустаяСтрока(СтрокаПоДокументу), ?(ЭтоПечатьУПД, "", "К платежно-расчетному документу № "),", ") + ПараметрыДокументаОплаты.НомерПлатежноРасчетногоДокумента + " от " + Формат(ПараметрыДокументаОплаты.ДатаПлатежноРасчетногоДокумента, "ДФ=dd.MM.yyyy") + " г."; КонецЦикла; КонецЕсли; Если ПустаяСтрока(СтрокаПоДокументу) Тогда Если ДанныеДляПечати.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс ИЛИ ДанныеДляПечати.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента Тогда СтрокаПоДокументу = ?(ЭтоПечатьУПД, "", "К платежно-расчетному документу № ") + "-- от --"; Иначе СтрокаПоДокументу = ?(ЭтоПечатьУПД, "", "К платежно-расчетному документу № ") + " от"; КонецЕсли; КонецЕсли; Скрыть Тут нас интересует самое начало: Если ДанныеДляПечати.Свойство("ТаблицаДатОплат") Тогда Вот это вот свойство. И вот это свойство указывается в документе СФВыданный, а именно: ТаблицаДатОплат = ДатаНомерДокументовОплаты.Выгрузить(); ТаблицаДатОплат.Свернуть("ДатаПлатежноРасчетногоДокумента, НомерПлатежноРасчетногоДокумента"); СтрокиКУдалению = Новый массив(); Для каждого СтрокаОплат Из ТаблицаДатОплат Цикл Если не ЗначениеЗаполнено(СтрокаОплат.ДатаПлатежноРасчетногоДокумента) и ПустаяСтрока(СтрокаОплат.НомерПлатежноРасчетногоДокумента) Тогда СтрокиКУдалению.Добавить(СтрокаОплат); КонецЕсли; КонецЦикла; Для каждого СтрокаКУдалению Из СтрокиКУдалению Цикл ТаблицаДатОплат.Удалить(СтрокаКУдалению); КонецЦикла; ДанныеДляПечати.Вставить("ТаблицаДатОплат", ТаблицаДатОплат); Скрыть Вот это вот ДатаНомерДокументовОплаты нам по идее и необходимо. Но в СФ выданный это Табличная часть, в коде это делается так: Процедура ЗаполнитьДатуИНомерДокументовОплаты() ЕстьДокументыРасчетов = ДокументОснование.Метаданные().ТабличныеЧасти.Найти("ДокументыРасчетовСКонтрагентом") <> Неопределено; Если Не ЕстьДокументыРасчетов Тогда Возврат; КонецЕсли; ТекстЗапроса = "ВЫБРАТЬ | ДокументыРасчетовСКонтрагентом.ДокументРасчетовСКонтрагентом КАК ДокументОплаты |ИЗ | Документ.РеализацияТоваровУслуг.ДокументыРасчетовСКонтрагентом КАК ДокументыРасчетовСКонтрагентом |ГДЕ | ДокументыРасчетовСКонтрагентом.Ссылка = &Ссылка"; ИмяТаблицы = ДокументОснование.Метаданные().ПолноеИмя(); Запрос = Новый Запрос(); Запрос.Текст = СтрЗаменить(ТекстЗапроса, "Документ.РеализацияТоваровУслуг", ИмяТаблицы); Запрос.УстановитьПараметр("Ссылка", ДокументОснование.Ссылка); Результат = Запрос.Выполнить(); ВыборкаДокументов = Результат.Выбрать(); Пока ВыборкаДокументов.Следующий() Цикл МетаданныеДокумента = ВыборкаДокументов.ДокументОплаты.Метаданные(); ИспользоватьДанныеВходящегоДокумента = МетаданныеДокумента.Реквизиты.Найти("НомерВходящегоДокумента") <> Неопределено И МетаданныеДокумента.Реквизиты.Найти("ДатаВходящегоДокумента") <> Неопределено; НовыйПРД = ДатаНомерДокументовОплаты.Добавить(); Если ИспользоватьДанныеВходящегоДокумента Тогда Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВыборкаДокументов.ДокументОплаты, "НомерВходящегоДокумента, ДатаВходящегоДокумента"); НовыйПРД.НомерПлатежноРасчетногоДокумента = Реквизиты.НомерВходящегоДокумента; НовыйПРД.ДатаПлатежноРасчетногоДокумента = Реквизиты.ДатаВходящегоДокумента; Иначе Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВыборкаДокументов.ДокументОплаты, "Дата"); НовыйПРД.НомерПлатежноРасчетногоДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(ВыборкаДокументов.ДокументОплаты); НовыйПРД.ДатаПлатежноРасчетногоДокумента = Реквизиты.Дата; КонецЕсли; КонецЦикла; КонецПроцедуры Скрыть Пробовал пойти по простому пути, скопировал всё в свою ВПФ, скопировал табличную часть, в процедуре, что выше ДокументОснование заменил на СсылкуНаОбъект (у меня такой реквизит есть), но ничего, выводится всё так же "--". Каким образом мне вытащить ТаблицуДатОплат из документа СФ? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |