Имя: Пароль:
1C
 
ВнешняяПечатнаяФорма СчетНаОплату
,
0 1Сnewk
 
21.05.24
14:15
Подскажите пожалуйста!

В Счете на оплату хочу вместо номенклатуры вывести Номенклатура партнера. Из типовой взяла печатную форму, переделала во внешнюю ПФ, добавила запрос  - выводит, но в отдельной строке. Как сделать, чтобы он заменил всю номенклатуру на НоменклатуруПартнера? (желательно если оно не пустое (это наверно уже через
"?(ЗначениеЗаполнено(Наименование), 1, 0);"?
1 1Сnewk
 
21.05.24
14:32
Подробности
Процедура ЗаполнитьТабличныйДокументСчетаНаОплату(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, ПараметрыПечати)
    
    ШаблоныОшибок = Новый Структура;
    ШаблоныОшибок.Вставить("Товары", НСтр("ru = 'В документе %1 отсутствуют товары. Печать счета на оплату не требуется'"));
    ШаблоныОшибок.Вставить("ЗаменяющиеТовары", НСтр("ru = 'В документе %1 отсутствуют заменяющие товары. Печать счета на оплату не требуется'"));
    ШаблоныОшибок.Вставить("Этапы", НСтр("ru = 'В документе %1 отсутствуют этапы оплаты. Печать счета на оплату не требуется'"));
    
    ИспользуетсяУчетНДС = ПолучитьФункциональнуюОпцию("ИспользоватьУчетНДС");
    ИспользоватьРучныеСкидки         = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВПродажах");
    ИспользоватьАвтоматическиеСкидки = ПолучитьФункциональнуюОпцию("ИспользоватьАвтоматическиеСкидкиВПродажах");
    
    КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
    ИмяКолонкиКодов = КолонкаКодов.ИмяКолонки;
    ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки;
    
    СтруктураИмяДопКолонки = Новый Структура("ИмяКолонкиКодов, ПредставлениеКолонкиКодов", ИмяКолонкиКодов, ПредставлениеКолонкиКодов);
    
    ДанныеПечати = ДанныеДляПечати.РезультатПоШапке.Выбрать();
    ЭтапыОплаты = ДанныеДляПечати.РезультатПоЭтапамОплаты.Выгрузить();
    Товары = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выгрузить();
    
    ЭтапыЗалоговойТары = ЭтапыОплаты.НайтиСтроки(Новый Структура("ЭтоЗалогЗаТару", Истина));
    ТолькоЗалогЗаТару = ЭтапыЗалоговойТары.Количество() = ЭтапыОплаты.Количество() И ЭтапыЗалоговойТары.Количество() > 0;
    
    Если Товары.Колонки.Найти("Содержание")=Неопределено Тогда
        ЕстьСодержание = Ложь;
    Иначе
        ЕстьСодержание = Истина;
    КонецЕсли;
    
    ПоказыватьНДС = Константы.ВыводитьДопКолонкиНДС.Получить();
    ПервыйДокумент = Истина;
    
    Пока ДанныеПечати.Следующий() Цикл
        
        Отказ = Ложь;
        
        СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
        
        ИспользоватьНаборы = Ложь;
        Если Товары.Колонки.Найти("ЭтоНабор") <> Неопределено Тогда
            ИспользоватьНаборы = Истина;
        КонецЕсли;
    

        ТаблицаТовары = Товары.НайтиСтроки(СтруктураПоиска);
        ТаблицаЭтапыОплаты = ЭтапыОплаты.НайтиСтроки(СтруктураПоиска);
        
        ПроверкаЗаполненияДокумента(ДанныеПечати, ТаблицаТовары, ТаблицаЭтапыОплаты, ШаблоныОшибок, Отказ, Истина);
        Если Отказ Тогда
            Продолжить;
        КонецЕсли;
        
        Если ПервыйДокумент Тогда
            ПервыйДокумент = Ложь;
        Иначе
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        
        НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
        
        ЗаголовокСкидки = ФормированиеПечатныхФорм.НужноВыводитьСкидки(ТаблицаТовары, ИспользоватьРучныеСкидки Или ИспользоватьАвтоматическиеСкидки);
        ЕстьСкидки = ЗаголовокСкидки.ЕстьСкидки;
        
        НазванияОбластей = НазванияОбластей(ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару И ПоказыватьНДС, ЕстьСкидки);
        
        Макет = Новый ТабличныйДокумент;
        ЗаполнитьРеквизитыШапкиСчетаНаОплату(ДанныеПечати, Макет, ТабличныйДокумент, ТаблицаЭтапыОплаты, ТаблицаТовары);
        
        Если ДанныеПечати.ЧастичнаяОплата ИЛИ ТипЗнч(ДанныеПечати.ДокументОснование) = Тип("ДокументСсылка.ОтчетКомитенту") Тогда
            
            ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицыЧастичнаяОплата");
            ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
            
            ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицыЧастичнаяОплата");
            ОбластьСтрокаТаблицы.Параметры.Заполнить(ДанныеПечати);
            ОбластьСтрокаТаблицы.Параметры.НомерСтроки = 1;
            ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);      
            
          
            

            
            ОбластьИтого = Макет.ПолучитьОбласть("ПодвалТаблицыЧастичнаяОплата");
            СтруктураДанныхИтого = Новый Структура;
            СтруктураДанныхИтого.Вставить("Всего", ДанныеПечати.СуммаДокумента);
            ОбластьИтого.Параметры.Заполнить(СтруктураДанныхИтого);
            ОбластьИтого.Параметры.Заполнить(ДанныеПечати);
            ТабличныйДокумент.Присоединить(ОбластьИтого);
            
            // Вывести ИтогоНДС
            СоответствиеСтавокНДС = Новый Соответствие;
            Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару
                И НЕ ДанныеПечати.ОперацияОблагаетсяНДСУПокупателя Тогда
                ОбластьИтогоНДС = Макет.ПолучитьОбласть("ПодвалТаблицыНДС");
                
                Если ТаблицаТовары.Количество() = 0 Тогда
                    Если ЗначениеЗаполнено(ДанныеПечати.СтавкаНДС) Тогда
                        СуммаНДС = ДанныеПечати.СуммаНДС;
                        СоответствиеСтавокНДС.Вставить(ДанныеПечати.СтавкаНДС, СуммаНДС);
                    КонецЕсли;
                Иначе
                    Для Каждого СтрокаТовара Из ТаблицаТовары Цикл
                        Если ИспользоватьНаборы И СтрокаТовара.ЭтоНабор
                            И Не (СтрокаТовара.ВариантПредставленияНабораВПечатныхФормах =
                                Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор) Тогда
                            // Исключаем суммы НДС по набору в целом, когда комплектующие выводятся в печатных формах.
                            Продолжить;
                        КонецЕсли;
                        СуммаНДС = СоответствиеСтавокНДС[СтрокаТовара.СтавкаНДС];
                        Если СуммаНДС = Неопределено Тогда
                            СуммаНДС = СтрокаТовара.СуммаНДС;
                        Иначе
                            СуммаНДС = СуммаНДС + СтрокаТовара.СуммаНДС;
                        КонецЕсли;
                        СоответствиеСтавокНДС.Вставить(СтрокаТовара.СтавкаНДС, СуммаНДС);
                    КонецЦикла;
                КонецЕсли;
                Если СоответствиеСтавокНДС.Количество() > 0 Тогда
                    Для Каждого ТекСтавкаНДС Из СоответствиеСтавокНДС Цикл
                        СтруктураДанныхИтогоНДС = Новый Структура;
                        СтруктураДанныхИтогоНДС.Вставить("НДС", ФормированиеПечатныхФорм.ТекстНДСПоСтавке(ТекСтавкаНДС.Ключ, ДанныеПечати.ЦенаВключаетНДС));
                        Если ЗначениеЗаполнено(ТекСтавкаНДС.Значение) Тогда
                            СтруктураДанныхИтогоНДС.Вставить("ВсегоНДС", ФормированиеПечатныхФорм.ФорматСумм(ТекСтавкаНДС.Значение /100 * ДанныеПечати.ПроцентОплаты));
                        Иначе
                            СтруктураДанныхИтогоНДС.Вставить("ВсегоНДС","-");
                        КонецЕсли;
                        ОбластьИтогоНДС.Параметры.Заполнить(СтруктураДанныхИтогоНДС);
                        ТабличныйДокумент.Вывести(ОбластьИтогоНДС);
                    КонецЦикла;
                    ОбластьПодвалСНДС = Макет.ПолучитьОбласть("ПодвалТаблицыВсего");
                    СтруктураДанныхПодвалСНДС = Новый Структура("ВсегоСНДС", ФормированиеПечатныхФорм.ФорматСумм(ДанныеПечати.СуммаДокумента));
                    ОбластьПодвалСНДС.Параметры.Заполнить(СтруктураДанныхПодвалСНДС);
                    ТабличныйДокумент.Вывести(ОбластьПодвалСНДС);
                КонецЕсли;
            ИначеЕсли ИспользуетсяУчетНДС Тогда
                СтруктураДанныхПодвалНДС = Новый Структура;
                Если ДанныеПечати.ОперацияОблагаетсяНДСУПокупателя Тогда
                    СтруктураДанныхПодвалНДС.Вставить("НДС", НСтр("ru='НДС исчисляется налоговым агентом'", ОбщегоНазначения.КодОсновногоЯзыка()));
                Иначе
                    СтруктураДанныхПодвалНДС.Вставить("НДС", НСтр("ru='Без налога (НДС)'", ОбщегоНазначения.КодОсновногоЯзыка()));
                КонецЕсли;
                ОбластьПодвалНДС             = Макет.ПолучитьОбласть("ПодвалТаблицыНДС");
                СтруктураДанныхПодвалНДС.Вставить("ВсегоНДС", "-");
                ОбластьПодвалНДС.Параметры.Заполнить(СтруктураДанныхПодвалНДС);
                ТабличныйДокумент.Вывести(ОбластьПодвалНДС);
            КонецЕсли;
            
            // Вывести Сумму прописью
            ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописьюЧастичныйСчет");
            СуммаПрописью = НСтр("ru='Всего на сумму %СуммаПрописью%'", ОбщегоНазначения.КодОсновногоЯзыка());
            СуммаПрописью = СтрЗаменить(СуммаПрописью, "%СуммаПрописью%", РаботаСКурсамиВалютУТ.СформироватьСуммуПрописью(ДанныеПечати.СуммаДокумента, ДанныеПечати.Валюта));
            СтруктураДанныхСуммаПрописью = Новый Структура("СуммаПрописью", СуммаПрописью);
            ОбластьМакета.Параметры.Заполнить(СтруктураДанныхСуммаПрописью);
            ТабличныйДокумент.Вывести(ОбластьМакета);
            
        Иначе
        
            // Таблица "Товары"
            ОбластьШапкаТаблицы          = Макет.ПолучитьОбласть(НазванияОбластей.ШапкаТаблицы);
            ОбластьСтрокаТаблицыСтандарт = Макет.ПолучитьОбласть(НазванияОбластей.СтрокаТаблицы);
            ОбластьПодвалТаблицы         = Макет.ПолучитьОбласть(НазванияОбластей.ПодвалТаблицы);
            ОбластьПодвалНДС             = Макет.ПолучитьОбласть("ПодвалТаблицыНДС");
            
            Если ИспользоватьНаборы Тогда
                ОбластьСтрокаТаблицыНабор         = Макет.ПолучитьОбласть(НазванияОбластей.СтрокаТаблицыНабор);
                ОбластьСтрокаТаблицыКомплектующие = Макет.ПолучитьОбласть(НазванияОбластей.СтрокаТаблицыКомплектующие);
            КонецЕсли;
            
            ПустыеДанные = НаборыСервер.ПустыеДанные();
            ВыводШапки = 0;
            
            Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда
                Если ЕстьСкидки Тогда
                    ОбластьПодвалСНДС = Макет.ПолучитьОбласть("ПодвалТаблицыВсегоСНДССоСкидкой");
                Иначе
                    ОбластьПодвалСНДС = Макет.ПолучитьОбласть("ПодвалТаблицыВсегоСНДС");
                КонецЕсли
            КонецЕсли;
            
            Если ЕстьСкидки Тогда
                СтруктураЗаголовокСкидки = Новый Структура("Скидка, СуммаБезСкидки",
                    ЗаголовокСкидки.Скидка,
                    ЗаголовокСкидки.СуммаСкидки);
                ОбластьШапкаТаблицы.Параметры.Заполнить(СтруктураЗаголовокСкидки);
            КонецЕсли;
            ОбластьШапкаТаблицы.Параметры.Заполнить(СтруктураИмяДопКолонки);
            ОбластьСуммаПрописью = Макет.ПолучитьОбласть(?(ДанныеПечати.СчетКВозврату, "СуммаПрописьюКВозврату", "СуммаПрописью"));
            
            МассивПроверкиВывода = Новый Массив;
            
            Сумма = 0;
            СуммаНДС = 0;
            ВсегоСкидок = 0;
            ВсегоБезСкидок = 0;
            НомерСтроки = 0;
            СоответствиеСтавокНДС = Новый Соответствие;
            Для Каждого СтрокаТовары Из ТаблицаТовары Цикл
                
                Если НаборыСервер.ИспользоватьОбластьНабор(СтрокаТовары, ИспользоватьНаборы) Тогда
                    ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыНабор;
                ИначеЕсли НаборыСервер.ИспользоватьОбластьКомплектующие(СтрокаТовары, ИспользоватьНаборы) Тогда
                    ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыКомплектующие;
                Иначе
                    ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыСтандарт;
                КонецЕсли;
                
                Если НаборыСервер.ВыводитьТолькоЗаголовок(СтрокаТовары, ИспользоватьНаборы) Тогда
                    НомерСтрокиПечать = "";
                Иначе
                    НомерСтроки = НомерСтроки + 1;
                    НомерСтрокиПечать = НомерСтроки;
                КонецЕсли;
                
                Если НомерСтроки = 0 И ВыводШапки <> 2 Тогда
                    ВыводШапки = 1;
                КонецЕсли;
                
                ПрефиксИПостфикс = НаборыСервер.ПолучитьПрефиксИПостфикс(СтрокаТовары, ИспользоватьНаборы);
                
                ДополнительныеПараметрыПолученияНаименованияДляПечати = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
                ДополнительныеПараметрыПолученияНаименованияДляПечати.ВозвратнаяТара = СтрокаТовары.ЭтоВозвратнаяТара;
                ДополнительныеПараметрыПолученияНаименованияДляПечати.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
                Если ЕстьСодержание Тогда
                    ДополнительныеПараметрыПолученияНаименованияДляПечати.Содержание = СтрокаТовары.Содержание;
                КонецЕсли;
                
                Товар = ПрефиксИПостфикс.Префикс
                        + НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
                                                            СтрокаТовары.НаименованиеПолное,
                                                            СтрокаТовары.Характеристика,
                                                            ,
                                                            , // Серия
                                                            ДополнительныеПараметрыПолученияНаименованияДляПечати)
                        + ПрефиксИПостфикс.Постфикс;
                        
                СтруктураДанныхСтроки = Новый Структура;
                СтруктураДанныхСтроки.Вставить("Товар", Товар);
                СтруктураДанныхСтроки.Вставить("НомерСтроки", НомерСтрокиПечать);
                ОбластьСтрокаТаблицы.Параметры.Заполнить(СтрокаТовары);
                Если ЗаголовокСкидки.ЕстьСкидки Тогда
                    СтруктураДанныхСтроки.Вставить("СуммаСкидки",
                        ?(ЗаголовокСкидки.ТолькоНаценка,- СтрокаТовары.СуммаСкидки,СтрокаТовары.СуммаСкидки));
                КонецЕсли;
                
                Если ЗначениеЗаполнено(СтруктураИмяДопКолонки.ИмяКолонкиКодов) Тогда
                    СтруктураДанныхСтроки.Вставить("Артикул", СтрокаТовары[СтруктураИмяДопКолонки.ИмяКолонкиКодов]);
                КонецЕсли;
                
                Если ДанныеПечати.ОперацияОблагаетсяНДСУПокупателя Тогда
                    СтруктураДанныхСтроки.Вставить("СтавкаНДС", НСтр("ru='НДС исчисляется налоговым агентом'", ОбщегоНазначения.КодОсновногоЯзыка()));
                КонецЕсли;
                
                ОбластьСтрокаТаблицы.Параметры.Заполнить(СтруктураДанныхСтроки);
                
                Если НаборыСервер.ВыводитьТолькоЗаголовок(СтрокаТовары, ИспользоватьНаборы) Тогда
                    ОбластьСтрокаТаблицы.Параметры.Заполнить(ПустыеДанные);
                КонецЕсли;
                
                МассивПроверкиВывода.Очистить();
                МассивПроверкиВывода.Добавить(ОбластьСтрокаТаблицы);
                Если НомерСтроки = ТаблицаТовары.Количество() Тогда
                    МассивПроверкиВывода.Добавить(ОбластьПодвалТаблицы);
                    МассивПроверкиВывода.Добавить(ОбластьПодвалНДС);
                    МассивПроверкиВывода.Добавить(ОбластьСуммаПрописью);
                КонецЕсли;
                
                Если ТабличныйДокумент.ПроверитьВывод(МассивПроверкиВывода) Тогда
                    Если (НомерСтроки = 1 И ВыводШапки = 0) ИЛИ (НомерСтроки = 0 И ВыводШапки = 1) Тогда
                        ВыводШапки = 2;
                        ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
                    КонецЕсли;
                Иначе
                    ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                    ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
                КонецЕсли;
                
                ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
                
                Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(СтрокаТовары, ИспользоватьНаборы) Тогда
                    
                    Сумма = Сумма + СтрокаТовары.Сумма;
                    СуммаНДС = СуммаНДС + СтрокаТовары.СуммаНДС;
                    
                    Если ЕстьСкидки Тогда
                        ВсегоСкидок = ВсегоСкидок + СтрокаТовары.СуммаСкидки;
                        ВсегоБезСкидок = ВсегоБезСкидок + СтрокаТовары.СуммаБезСкидки;
                    КонецЕсли;
                
                    Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда
                        СуммаНДСПоСтавке = СоответствиеСтавокНДС[СтрокаТовары.СтавкаНДС];
                        Если СуммаНДСПоСтавке = Неопределено Тогда
                            СуммаНДСПоСтавке = 0;
                        КонецЕсли;
                        СоответствиеСтавокНДС.Вставить(СтрокаТовары.СтавкаНДС, СуммаНДСПоСтавке + СтрокаТовары.СуммаНДС);
                    КонецЕсли;
                
                КонецЕсли;
                
            КонецЦикла;  
                    
            
            /////
            Запрос = Новый Запрос;
            Запрос.Текст =
            "ВЫБРАТЬ
            |    ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
            |    ЗаказКлиентаТовары.НоменклатураПартнера КАК НоменклатураПартнера
            |ИЗ
            |    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
            |ГДЕ
            |    ЗаказКлиентаТовары.Ссылка = &Ссылка";  
            
            Запрос.УстановитьПараметр("Ссылка", ДанныеПечати.Ссылка);
            
            РезультатЗапроса = Запрос.Выполнить();
            
            ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
            
            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл    
                НоменклатураКлиента = ВыборкаДетальныеЗаписи.НоменклатураПартнера;
            КонецЦикла;
            

            ОбластьСтрокаТаблицыНК = Макет.ПолучитьОбласть("СтрокаТаблицыСНДСКомплектующие");
            ОбластьСтрокаТаблицы.Параметры.Заполнить(ДанныеПечати);
            ОбластьСтрокаТаблицыНК.Параметры.Товар = НоменклатураКлиента;    
            ОбластьСтрокаТаблицыНК.Параметры.НомерСтроки = 1;
            ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицыНК);    
            
            
            СтруктураДанныхВсегоСкидки = Новый Структура;
            
            // Подвал таблицы "Товары"
            Если ЕстьСкидки Тогда
                СтруктураДанныхВсегоСкидки.Вставить("ВсегоСкидок", ?(ЗаголовокСкидки.ТолькоНаценка,-ВсегоСкидок, ВсегоСкидок));
                СтруктураДанныхВсегоСкидки.Вставить("ВсегоБезСкидок", ВсегоБезСкидок);
                Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда
                    СтруктураДанныхВсегоСкидки.Вставить("ВсегоСуммаНДС", СуммаНДС);
                КонецЕсли;
            КонецЕсли;
            СтруктураДанныхВсегоСкидки.Вставить("Всего", ФормированиеПечатныхФорм.ФорматСумм(Сумма));
            ОбластьПодвалТаблицы.Параметры.Заполнить(СтруктураДанныхВсегоСкидки);
            ТабличныйДокумент.Вывести(ОбластьПодвалТаблицы);
            
            // Область "ПодвалТаблицыНДС"
            Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару И НЕ ДанныеПечати.ОперацияОблагаетсяНДСУПокупателя Тогда
                
                Для Каждого ТекСтавкаНДС Из СоответствиеСтавокНДС Цикл
                    
                    СтруктураДанныхПодвалНДС = Новый Структура;
                    СтруктураДанныхПодвалНДС.Вставить("НДС", ФормированиеПечатныхФорм.ТекстНДСПоСтавке(ТекСтавкаНДС.Ключ, ДанныеПечати.ЦенаВключаетНДС));
                    СтруктураДанныхПодвалНДС.Вставить("ВсегоНДС", ФормированиеПечатныхФорм.ФорматСумм(ТекСтавкаНДС.Значение, ,"-"));
                    ОбластьПодвалНДС.Параметры.Заполнить(СтруктураДанныхПодвалНДС);
                    ТабличныйДокумент.Вывести(ОбластьПодвалНДС);
                    
                КонецЦикла;
                
                СтруктураДанныхПодвалНДС = Новый Структура;
                СтруктураДанныхПодвалНДС.Вставить("ВсегоСНДС", ФормированиеПечатныхФорм.ФорматСумм(Сумма + ?(ДанныеПечати.ЦенаВключаетНДС, 0, СуммаНДС)));
                ОбластьПодвалСНДС.Параметры.Заполнить(СтруктураДанныхПодвалНДС);
                ТабличныйДокумент.Вывести(ОбластьПодвалСНДС);
                
            ИначеЕсли ИспользуетсяУчетНДС Тогда
                СтруктураДанныхПодвалНДС = Новый Структура;
                Если ДанныеПечати.ОперацияОблагаетсяНДСУПокупателя Тогда
                    СтруктураДанныхПодвалНДС.Вставить("НДС", НСтр("ru='НДС исчисляется налоговым агентом'", ОбщегоНазначения.КодОсновногоЯзыка()));
                Иначе
                    СтруктураДанныхПодвалНДС.Вставить("НДС", НСтр("ru='Без налога (НДС)'", ОбщегоНазначения.КодОсновногоЯзыка()));
                КонецЕсли;
                СтруктураДанныхПодвалНДС.Вставить("ВсегоНДС", "-");
                ОбластьПодвалНДС.Параметры.Заполнить(СтруктураДанныхПодвалНДС);
                ТабличныйДокумент.Вывести(ОбластьПодвалНДС);
            КонецЕсли;
            
            // Вывести Сумму прописью
            СуммаКПрописи = Сумма + ?(ДанныеПечати.ЦенаВключаетНДС, 0, СуммаНДС);
            ИтоговаяСтрока = НСтр("ru='Всего наименований %Количество%, на сумму %Сумма%'", ОбщегоНазначения.КодОсновногоЯзыка());
            ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, "%Количество%", НомерСтроки);
            ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, "%Сумма%",      ФормированиеПечатныхФорм.ФорматСумм(СуммаКПрописи, ДанныеПечати.Валюта));
            
            СтруктураДанныхСуммаПрописью = Новый Структура;
            Если ДанныеПечати.СчетКВозврату Тогда
                
                СуммаКВозврату = ДанныеПечати.СуммаКВозврату;
                СуммаИтого = СуммаКПрописи-СуммаКВозврату;
                Если СуммаИтого < 0 Тогда
                    СуммаИтого = 0;
                КонецЕсли;
                СтруктураДанныхСуммаПрописью.Вставить("СуммаВозврата", ФормированиеПечатныхФорм.ФорматСумм(СуммаКВозврату, ДанныеПечати.Валюта));
                СтруктураДанныхСуммаПрописью.Вставить("СуммаИтогоКОплате", ФормированиеПечатныхФорм.ФорматСумм(СуммаИтого, ДанныеПечати.Валюта, "0"));
                СтруктураДанныхСуммаПрописью.Вставить("СуммаПрописью", РаботаСКурсамиВалютУТ.СформироватьСуммуПрописью(СуммаИтого, ДанныеПечати.Валюта));
            Иначе
                
                СтруктураДанныхСуммаПрописью.Вставить("СуммаПрописью", РаботаСКурсамиВалютУТ.СформироватьСуммуПрописью(СуммаКПрописи, ДанныеПечати.Валюта));
            КонецЕсли;
            
            СтруктураДанныхСуммаПрописью.Вставить("ИтоговаяСтрока", ИтоговаяСтрока);
            ОбластьСуммаПрописью.Параметры.Заполнить(СтруктураДанныхСуммаПрописью);
            ТабличныйДокумент.Вывести(ОбластьСуммаПрописью);
        КонецЕсли;
        ЗаполнитьРеквизитыПодвалаСчетаНаОплату(ДанныеПечати, Макет, ТабличныйДокумент, ТаблицаЭтапыОплаты, СоответствиеСтавокНДС, ПараметрыПечати);
        
        УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);
        
    КонецЦикла;
    
КонецПроцедуры
2 DragfaR
 
21.05.24
14:16
Ого...
3 Rico_1C
 
21.05.24
14:18
го-го..
4 DragfaR
 
21.05.24
14:18
По идее номенклатуру клиента нужно поменять на ВыборкаДетальныеЗаписи.НомеклатураПартнера
5 DragfaR
 
21.05.24
14:20
В этой строке  ОбластьСтрокаТаблицыНК.Параметры.Товар = НоменклатураКлиента;
6 1Сnewk
 
21.05.24
14:37
(5) Исправила, нет не случилось... все тоже самое, что логично... Подтягивается одно и тоже, там просто к переменной  тоже самое было присвоено...
7 1Сnewk
 
21.05.24
14:41
(2) Очень развернутый хелп)))
8 DragfaR
 
21.05.24
14:53
Очень разумный код), попробуй заполнить обычной номекулатурой, просто не понятно что у тебя запрос выдает, мало исходников
9 Смотрящий
 
21.05.24
15:23
(1) У вас там от объема оплата ?
10 1Сnewk
 
22.05.24
06:19
(8) Там заполнено все обычной номенклатурой и так. Запрос написала, чтобы было понятно (видимо не вышло), что мне нужно заменить эту обычную номенклатуру на номенклатуру партнера. Номенклатура партнера вышла только в последней строке. Я не пойму куда в коде написать этот запрос, чтобы он не ниже выводил строкой, а заменял обычную номенклатуру... Код может не очень хороший... но код счета на оплату взят из типовой, просто добавлен запрос с обработкой результата и все...
11 DrZombi
 
гуру
22.05.24
06:20
(0) Можно это сделать сразу в запросе, программа даже не поймет, что ей подсунули не номенклатуру, а другой справочник :)
12 DrZombi
 
гуру
22.05.24
06:21
+ А так вам придется лепить левые "Если или "?" :)
13 1Сnewk
 
22.05.24
06:51
(12) Но если подсунуть другой справочник, то если для номенклатуры не будет заполненной Номенклатура Партнера, он вообще выводить ничего не будет? А нужно в случае пустого значения - выводить обычную...
14 yurikmellon2
 
22.05.24
08:24
(13) вот смотри, вот здесь
Товары = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выгрузить();
заполняется ТЗ "Товары". Надо смотреть запрос, который формирует РезультатПоТабличнойЧасти и через ВЫБОР КОГДА заменить Номенклатуру на НоменклатуруПартнера, когда она заполнена
15 Мультук
 
гуру
22.05.24
08:32
(13)

1) Что делает чудесный цикл ? Медитирует ?

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл    
     НоменклатураКлиента = ВыборкаДетальныеЗаписи.НоменклатураПартнера;
КонецЦикла;


2) Вариантов ровно два
2.1) Скопировать и курочить типовой запрос, который возвращает "ДанныеДляПечати"
2.2) Доработать вашу дописку, чтобы она работала правильно

3)
>> о если для номенклатуры не будет заполненной Номенклатура Партнера, он вообще выводить ничего не будет?


3.1)
В запросе примерно так (псведокод)

ВЫБОР КОГДА НоменклатураПартнера = Значение(Справочник.Номенклатура.ПустаяСсылка)
Тогда
    Номенклатура
ИНАЧЕ
    НоменклатураПартнера
КОНЕЦ КАК Номенклатура

3.2) В коде, который вы написали нужно например выгружать таблицу значений "Номенклатура;НоменклатураКонтрагента"
и потом в ней искать строку с "Номенклатура"  и думать выводить её или "НоменклатураКонтрагента"