Имя: Пароль:
1C
 
Как сделать ссылку на временную таблицу из документа во ВПФ УТ10.3 (подробно внутри)
0 Shecurok
 
28.01.20
09:37
Здравствуйте форумчане.
Еще многого не знаю и прошу помощи.
Необходимо было немного доработать печатную форм УПД для УТ10.3, а именно заполнить ответственных лиц с доверенностью. Решено было прикрутить ВПФ с формой выбора ответственного лица, и уже из формы вызывается сама процедура печатать.
Так вот, код брал из типовых модулей, в целом ничего сложного, сделать форму тоже оказалось не проблематично, там всего несколько кнопок.

Вся мой ВПФ, повторюсь, сделана из кусков кода типовой УТ.
Но не могу вывести платежно-расчетные документы.
За вывод ПРД отвечает этот код:

СтрокаПоДокументу = "";
    Если ДанныеДляПечати.Свойство("ТаблицаДатОплат") Тогда
        Для каждого ПараметрыДокументаОплаты Из ДанныеДляПечати.ТаблицаДатОплат Цикл
            
            Если НЕ ЗначениеЗаполнено(ПараметрыДокументаОплаты.НомерПлатежноРасчетногоДокумента)
                И НЕ ЗначениеЗаполнено(ПараметрыДокументаОплаты.ДатаПлатежноРасчетногоДокумента) Тогда
                Продолжить;
            КонецЕсли;
            СтрокаПоДокументу = СтрокаПоДокументу
                + ?(ПустаяСтрока(СтрокаПоДокументу), ?(ЭтоПечатьУПД, "", "К платежно-расчетному документу № "),", ")
                + ПараметрыДокументаОплаты.НомерПлатежноРасчетногоДокумента
                + " от " + Формат(ПараметрыДокументаОплаты.ДатаПлатежноРасчетногоДокумента, "ДФ=dd.MM.yyyy") + " г.";
            
        КонецЦикла;
    КонецЕсли;
    Если ПустаяСтрока(СтрокаПоДокументу) Тогда
        Если ДанныеДляПечати.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс
            ИЛИ ДанныеДляПечати.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента Тогда
            СтрокаПоДокументу = ?(ЭтоПечатьУПД, "", "К платежно-расчетному документу № ") + "-- от --";
        Иначе
            СтрокаПоДокументу = ?(ЭтоПечатьУПД, "", "К платежно-расчетному документу № ") + "   от";
        КонецЕсли;
    КонецЕсли;
Скрыть


Тут нас интересует самое начало:
Если ДанныеДляПечати.Свойство("ТаблицаДатОплат") Тогда


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

Скрыть


Вот это вот ДатаНомерДокументовОплаты нам по идее и необходимо. Но в СФ выданный это Табличная часть, в коде это делается так:
Процедура ЗаполнитьДатуИНомерДокументовОплаты()
    
    ЕстьДокументыРасчетов = ДокументОснование.Метаданные().ТабличныеЧасти.Найти("ДокументыРасчетовСКонтрагентом") <> Неопределено;
    Если Не ЕстьДокументыРасчетов Тогда
        Возврат;
    КонецЕсли;
    
    ТекстЗапроса =
    "ВЫБРАТЬ
    |    ДокументыРасчетовСКонтрагентом.ДокументРасчетовСКонтрагентом КАК ДокументОплаты
    |ИЗ
    |    Документ.РеализацияТоваровУслуг.ДокументыРасчетовСКонтрагентом КАК ДокументыРасчетовСКонтрагентом
    |ГДЕ
    |    ДокументыРасчетовСКонтрагентом.Ссылка = &Ссылка";
    ИмяТаблицы = ДокументОснование.Метаданные().ПолноеИмя();
    Запрос = Новый Запрос();
    Запрос.Текст = СтрЗаменить(ТекстЗапроса, "Документ.РеализацияТоваровУслуг", ИмяТаблицы);
    Запрос.УстановитьПараметр("Ссылка", ДокументОснование.Ссылка);
    Результат = Запрос.Выполнить();
    ВыборкаДокументов = Результат.Выбрать();
    
    Пока ВыборкаДокументов.Следующий() Цикл
        МетаданныеДокумента = ВыборкаДокументов.ДокументОплаты.Метаданные();
        ИспользоватьДанныеВходящегоДокумента =
        МетаданныеДокумента.Реквизиты.Найти("НомерВходящегоДокумента") <> Неопределено И
        МетаданныеДокумента.Реквизиты.Найти("ДатаВходящегоДокумента")  <> Неопределено;
        НовыйПРД = ДатаНомерДокументовОплаты.Добавить();
        Если ИспользоватьДанныеВходящегоДокумента Тогда
            Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВыборкаДокументов.ДокументОплаты, "НомерВходящегоДокумента, ДатаВходящегоДокумента");
            НовыйПРД.НомерПлатежноРасчетногоДокумента = Реквизиты.НомерВходящегоДокумента;
            НовыйПРД.ДатаПлатежноРасчетногоДокумента  = Реквизиты.ДатаВходящегоДокумента;
        Иначе
            Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВыборкаДокументов.ДокументОплаты, "Дата");
            НовыйПРД.НомерПлатежноРасчетногоДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(ВыборкаДокументов.ДокументОплаты);
            НовыйПРД.ДатаПлатежноРасчетногоДокумента  = Реквизиты.Дата;
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры
Скрыть


Пробовал пойти по простому пути, скопировал всё в свою ВПФ, скопировал табличную часть, в процедуре, что выше ДокументОснование заменил на СсылкуНаОбъект (у меня такой реквизит есть), но ничего, выводится всё так же "--".
Каким образом мне вытащить ТаблицуДатОплат из документа СФ?