Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 15:00

Как добить модуль, чтобы в макете внешней печатной форме печатался вес и объем товара УТ11

Автор VID1234, 12 дек 2019, 12:07

0 Пользователей и 1 гость просматривают эту тему.

VID1234

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

Перем КомплектПечатиПоСсылке;

ШаблоныОшибок = Новый Структура;
ШаблоныОшибок.Вставить("Товары", НСтр("ru = 'В документе %1 отсутствуют товары. Печать счета на оплату не требуется'"));
ШаблоныОшибок.Вставить("ЗаменяющиеТовары", НСтр("ru = 'В документе %1 отсутствуют заменяющие товары. Печать счета на оплату не требуется'"));
ШаблоныОшибок.Вставить("Этапы", НСтр("ru = 'В документе %1 отсутствуют этапы оплаты. Печать счета на оплату не требуется'"));

ИспользоватьРучныеСкидки         = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВПродажах");
ИспользоватьАвтоматическиеСкидки = ПолучитьФункциональнуюОпцию("ИспользоватьАвтоматическиеСкидкиВПродажах");
СтруктураИмяДопКолонки = Новый Структура("ИмяКолонкиКодов", ФормированиеПечатныхФорм.ИмяДополнительнойКолонки());

ДанныеПечати = ДанныеДляПечати.РезультатПоШапке.Выбрать();
ЭтапыОплаты = ДанныеДляПечати.РезультатПоЭтапамОплаты.Выгрузить();
Товары = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выгрузить();

ЭтапыЗалоговойТары = ЭтапыОплаты.НайтиСтроки(Новый Структура("ЭтоЗалогЗаТару", Истина));
ТолькоЗалогЗаТару = ЭтапыЗалоговойТары.Количество() = ЭтапыОплаты.Количество() И ЭтапыЗалоговойТары.Количество() > 0;

Если Товары.Колонки.Найти("Содержание")=Неопределено Тогда
ЕстьСодержание = Ложь;
Иначе
ЕстьСодержание = Истина;
КонецЕсли;

ПоказыватьНДС = Константы.ВыводитьДопКолонкиНДС.Получить();
ПервыйДокумент = Истина;

Пока ДанныеПечати.Следующий() Цикл

Отказ = Ложь;

СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);

ТаблицаТовары = Товары.НайтиСтроки(СтруктураПоиска);
ТаблицаЭтапыОплаты = ЭтапыОплаты.НайтиСтроки(СтруктураПоиска);

ПроверкаЗаполненияДокумента(ДанныеПечати, ТаблицаТовары, ТаблицаЭтапыОплаты, ШаблоныОшибок, Отказ);
Если Отказ Тогда
Продолжить;
КонецЕсли;

Если ПервыйДокумент Тогда
ПервыйДокумент = Ложь;
Иначе
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;

ЗаголовокСкидки = ФормированиеПечатныхФорм.НужноВыводитьСкидки(ТаблицаТовары, ИспользоватьРучныеСкидки Или ИспользоватьАвтоматическиеСкидки);
ЕстьСкидки = ЗаголовокСкидки.ЕстьСкидки;

СуффиксОбласти = ?(ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару И ПоказыватьНДС, "СНДС", "") + ?(ЕстьСкидки, "СоСкидкой", "");

Макет = Новый ТабличныйДокумент;
ЗаполнитьРеквизитыШапкиСчетаНаОплату(ДанныеПечати, Макет, ТабличныйДокумент, ТаблицаЭтапыОплаты, ТаблицаТовары);

Если ДанныеПечати.ЧастичнаяОплата ИЛИ ТипЗнч(ДанныеПечати.ДокументОснование) = Тип("ДокументСсылка.ОтчетКомитенту") Тогда

ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицыЧастичнаяОплата");
ОбластьШапкаТаблицы.Параметры.Заполнить(СтруктураИмяДопКолонки);
ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);

ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицыЧастичнаяОплата");
ОбластьСтрокаТаблицы.Параметры.Заполнить(ДанныеПечати);
ОбластьСтрокаТаблицы.Параметры.НомерСтроки = 1;
ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);

ОбластьИтого = Макет.ПолучитьОбласть("ПодвалТаблицыЧастичнаяОплата");
СтруктураДанныхИтого = Новый Структура;
СтруктураДанныхИтого.Вставить("Всего", ДанныеПечати.СуммаДокумента);
ОбластьИтого.Параметры.Заполнить(СтруктураДанныхИтого);
ОбластьИтого.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Присоединить(ОбластьИтого);

// Вывести ИтогоНДС
СоответствиеСтавокНДС = Новый Соответствие;
Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда
ОбластьИтогоНДС = Макет.ПолучитьОбласть("ПодвалТаблицыНДС");
Для Каждого СтрокаТовара Из ТаблицаТовары Цикл
СуммаНДС = СоответствиеСтавокНДС[СтрокаТовара.СтавкаНДС];
Если СуммаНДС = Неопределено Тогда
СуммаНДС = СтрокаТовара.СуммаНДС;
Иначе
СуммаНДС = СуммаНДС + СтрокаТовара.СуммаНДС;
КонецЕсли;
СоответствиеСтавокНДС.Вставить(СтрокаТовара.СтавкаНДС, СуммаНДС);
КонецЦикла;
Для Каждого ТекСтавкаНДС Из СоответствиеСтавокНДС Цикл
СтруктураДанныхИтогоНДС = Новый Структура;
СтруктураДанныхИтогоНДС.Вставить("НДС", ФормированиеПечатныхФорм.ТекстНДСПоСтавке(ТекСтавкаНДС.Ключ, ДанныеПечати.ЦенаВключаетНДС));
Если ЗначениеЗаполнено(ТекСтавкаНДС.Значение) Тогда
СтруктураДанныхИтогоНДС.Вставить("ВсегоНДС", ФормированиеПечатныхФорм.ФорматСумм(ТекСтавкаНДС.Значение /100 * ДанныеПечати.ПроцентОплаты));
Иначе
СтруктураДанныхИтогоНДС.Вставить("ВсегоНДС","-");
КонецЕсли;
ОбластьИтогоНДС.Параметры.Заполнить(СтруктураДанныхИтогоНДС);
ТабличныйДокумент.Вывести(ОбластьИтогоНДС);
КонецЦикла;
ОбластьПодвалСНДС = Макет.ПолучитьОбласть("ПодвалТаблицыВсего");
СтруктураДанныхПодвалСНДС = Новый Структура("ВсегоСНДС", ФормированиеПечатныхФорм.ФорматСумм(ДанныеПечати.СуммаДокумента));
ОбластьПодвалСНДС.Параметры.Заполнить(СтруктураДанныхПодвалСНДС);
ТабличныйДокумент.Вывести(ОбластьПодвалСНДС);
КонецЕсли;

// Вывести Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописьюЧастичныйСчет");
СуммаПрописью = НСтр("ru='Всего на сумму %СуммаПрописью%'");
СуммаПрописью = СтрЗаменить(СуммаПрописью, "%СуммаПрописью%", РаботаСКурсамиВалют.СформироватьСуммуПрописью(ДанныеПечати.СуммаДокумента, ДанныеПечати.Валюта));
СтруктураДанныхСуммаПрописью = Новый Структура("СуммаПрописью", СуммаПрописью);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхСуммаПрописью);
ТабличныйДокумент.Вывести(ОбластьМакета);

Иначе

// Таблица "Товары"
ОбластьШапкаТаблицы          = Макет.ПолучитьОбласть("ШапкаТаблицы" + СуффиксОбласти);
ОбластьСтрокаТаблицыСтандарт = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбласти);
ОбластьПодвалТаблицы         = Макет.ПолучитьОбласть("ПодвалТаблицы" + СуффиксОбласти);
ОбластьПодвалНДС             = Макет.ПолучитьОбласть("ПодвалТаблицыНДС");

ИспользоватьНаборы = Ложь;
Если Товары.Колонки.Найти("ЭтоНабор") <> Неопределено Тогда
ИспользоватьНаборы = Истина;

ОбластьСтрокаТаблицыНабор         = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбласти + "Набор");
ОбластьСтрокаТаблицыКомплектующие = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбласти + "Комплектующие");
КонецЕсли;

ПустыеДанные = НаборыСервер.ПустыеДанные();
ВыводШапки = 0;

Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда
СуффиксОбластиПодвал = "СНДС" + ?(ЕстьСкидки, "СоСкидкой", "");
ОбластьПодвалСНДС = Макет.ПолучитьОбласть("ПодвалТаблицыВсего" + СуффиксОбластиПодвал);
КонецЕсли;

Если ЕстьСкидки Тогда
СтруктураЗаголовокСкидки = Новый Структура("Скидка, СуммаБезСкидки",
ЗаголовокСкидки.Скидка,
ЗаголовокСкидки.СуммаСкидки);
ОбластьШапкаТаблицы.Параметры.Заполнить(СтруктураЗаголовокСкидки);
КонецЕсли;
ОбластьШапкаТаблицы.Параметры.Заполнить(СтруктураИмяДопКолонки);
ОбластьСуммаПрописью = Макет.ПолучитьОбласть(?(ДанныеПечати.СчетКВозврату, "СуммаПрописьюКВозврату", "СуммаПрописью"));

МассивПроверкиВывода = Новый Массив;

Сумма = 0;
СуммаНДС = 0;
ВсегоСкидок = 0;
ВсегоБезСкидок = 0;
НомерСтроки = 0;
СоответствиеСтавокНДС = Новый Соответствие;
Для Каждого СтрокаТовары Из ТаблицаТовары Цикл

Если НаборыСервер.ИспользоватьОбластьНабор(СтрокаТовары, ИспользоватьНаборы) Тогда
ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыНабор;
ИначеЕсли НаборыСервер.ИспользоватьОбластьКомплектующие(СтрокаТовары, ИспользоватьНаборы) Тогда
ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыКомплектующие;
Иначе
ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыСтандарт;
КонецЕсли;

Если НаборыСервер.ВыводитьТолькоЗаголовок(СтрокаТовары, ИспользоватьНаборы) Тогда
НомерСтрокиПечать = "";
Иначе
НомерСтроки = НомерСтроки + 1;
НомерСтрокиПечать = НомерСтроки;
КонецЕсли;

Если НомерСтроки = 0 И ВыводШапки <> 2 Тогда
ВыводШапки = 1;
КонецЕсли;

ПрефиксИПостфикс = НаборыСервер.ПолучитьПрефиксИПостфикс(СтрокаТовары, ИспользоватьНаборы);

ДополнительныеПараметрыПолученияНаименованияДляПечати = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДополнительныеПараметрыПолученияНаименованияДляПечати.ВозвратнаяТара = СтрокаТовары.ЭтоВозвратнаяТара;
Если ЕстьСодержание Тогда
ДополнительныеПараметрыПолученияНаименованияДляПечати.Содержание = СтрокаТовары.Содержание;
КонецЕсли;

Товар = ПрефиксИПостфикс.Префикс
+ НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
СтрокаТовары.НаименованиеПолное,
СтрокаТовары.Характеристика,
,
, // Серия
ДополнительныеПараметрыПолученияНаименованияДляПечати)
+ ПрефиксИПостфикс.Постфикс;

СтруктураДанныхСтроки = Новый Структура;
СтруктураДанныхСтроки.Вставить("Товар", Товар);
СтруктураДанныхСтроки.Вставить("НомерСтроки", НомерСтрокиПечать);
ОбластьСтрокаТаблицы.Параметры.Заполнить(СтрокаТовары);
Если ЗаголовокСкидки.ЕстьСкидки Тогда
СтруктураДанныхСтроки.Вставить("СуммаСкидки",
?(ЗаголовокСкидки.ТолькоНаценка,- СтрокаТовары.СуммаСкидки,СтрокаТовары.СуммаСкидки));
КонецЕсли;

Если ЗначениеЗаполнено(СтруктураИмяДопКолонки.ИмяКолонкиКодов) Тогда
СтруктураДанныхСтроки.Вставить("Артикул", СтрокаТовары[СтруктураИмяДопКолонки.ИмяКолонкиКодов]);
КонецЕсли;

ОбластьСтрокаТаблицы.Параметры.Заполнить(СтруктураДанныхСтроки);

Если НаборыСервер.ВыводитьТолькоЗаголовок(СтрокаТовары, ИспользоватьНаборы) Тогда
ОбластьСтрокаТаблицы.Параметры.Заполнить(ПустыеДанные);
КонецЕсли;

МассивПроверкиВывода.Очистить();
МассивПроверкиВывода.Добавить(ОбластьСтрокаТаблицы);
Если НомерСтроки = ТаблицаТовары.Количество() Тогда
МассивПроверкиВывода.Добавить(ОбластьПодвалТаблицы);
МассивПроверкиВывода.Добавить(ОбластьПодвалНДС);
МассивПроверкиВывода.Добавить(ОбластьСуммаПрописью);
КонецЕсли;

Если ТабличныйДокумент.ПроверитьВывод(МассивПроверкиВывода) Тогда
Если (НомерСтроки = 1 И ВыводШапки = 0) ИЛИ (НомерСтроки = 0 И ВыводШапки = 1) Тогда
ВыводШапки = 2;
ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
КонецЕсли;
Иначе
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
КонецЕсли;

ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);

Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(СтрокаТовары, ИспользоватьНаборы) Тогда

Сумма = Сумма + СтрокаТовары.Сумма;
СуммаНДС = СуммаНДС + СтрокаТовары.СуммаНДС;

Если ЕстьСкидки Тогда
ВсегоСкидок = ВсегоСкидок + СтрокаТовары.СуммаСкидки;
ВсегоБезСкидок = ВсегоБезСкидок + СтрокаТовары.СуммаБезСкидки;
КонецЕсли;

Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда
СуммаНДСПоСтавке = СоответствиеСтавокНДС[СтрокаТовары.СтавкаНДС];
Если СуммаНДСПоСтавке = Неопределено Тогда
СуммаНДСПоСтавке = 0;
КонецЕсли;
СоответствиеСтавокНДС.Вставить(СтрокаТовары.СтавкаНДС, СуммаНДСПоСтавке + СтрокаТовары.СуммаНДС);
КонецЕсли;

КонецЕсли;

КонецЦикла;

СтруктураДанныхВсегоСкидки = Новый Структура;

// Подвал таблицы "Товары"
Если ЕстьСкидки Тогда
СтруктураДанныхВсегоСкидки.Вставить("ВсегоСкидок", ?(ЗаголовокСкидки.ТолькоНаценка,-ВсегоСкидок, ВсегоСкидок));
СтруктураДанныхВсегоСкидки.Вставить("ВсегоБезСкидок", ВсегоБезСкидок);
Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда
СтруктураДанныхВсегоСкидки.Вставить("ВсегоСуммаНДС", СуммаНДС);
КонецЕсли;
КонецЕсли;
СтруктураДанныхВсегоСкидки.Вставить("Всего", ФормированиеПечатныхФорм.ФорматСумм(Сумма));
ОбластьПодвалТаблицы.Параметры.Заполнить(СтруктураДанныхВсегоСкидки);
ТабличныйДокумент.Вывести(ОбластьПодвалТаблицы);

// Область "ПодвалТаблицыНДС"
Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда

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

КонецЦикла;
СтруктураДанныхПодвалВсегоСНДС = Новый Структура;
СтруктураДанныхПодвалНДС.Вставить("ВсегоСНДС", ФормированиеПечатныхФорм.ФорматСумм(Сумма + ?(ДанныеПечати.ЦенаВключаетНДС, 0, СуммаНДС)));
ОбластьПодвалСНДС.Параметры.Заполнить(СтруктураДанныхПодвалНДС);
ТабличныйДокумент.Вывести(ОбластьПодвалСНДС);

Иначе
СтруктураДанныхПодвалНДС = Новый Структура;
СтруктураДанныхПодвалНДС.Вставить("НДС", НСтр("ru='Без налога (НДС)'"));
СтруктураДанныхПодвалНДС.Вставить("ВсегоНДС", "-");
ОбластьПодвалНДС.Параметры.Заполнить(СтруктураДанныхПодвалНДС);
ТабличныйДокумент.Вывести(ОбластьПодвалНДС);
КонецЕсли;

// Вывести Сумму прописью
СуммаКПрописи = Сумма + ?(ДанныеПечати.ЦенаВключаетНДС, 0, СуммаНДС);
ИтоговаяСтрока = НСтр("ru='Всего наименований %Количество%, на сумму %Сумма%'");
ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, "%Количество%", НомерСтроки);
ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, "%Сумма%",      ФормированиеПечатныхФорм.ФорматСумм(СуммаКПрописи, ДанныеПечати.Валюта));
  //VID++++++++++++++++++
             //Вес_  = 0;
                 //Объем_    = 0;
         //++++++++++++++++++++

//   //VID(
// ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописьют");
//ОбластьМакета.Параметры.ВесТовара = ВыборкаСтрокаТаблицыСтандарт.Количество*ЕдиницаИзмерения.Вес;
//ТабличныйДокумент.Вывести(ОбластьМакета);
//VID)



// VID Вывести Вес Объем++++++++++++++++++
//ОбластьМакета.Параметры.ВесОбъем = "Объем = " + Объем_ + " куб. м.;   Вес = " + Вес_ + " кг.";
// VID++++++++++++

СтруктураДанныхСуммаПрописью = Новый Структура;
Если ДанныеПечати.СчетКВозврату Тогда

СуммаКВозврату = ДанныеПечати.СуммаКВозврату;
СуммаИтого = СуммаКПрописи-СуммаКВозврату;
Если СуммаИтого < 0 Тогда
СуммаИтого = 0;
КонецЕсли;
СтруктураДанныхСуммаПрописью.Вставить("СуммаВозврата", ФормированиеПечатныхФорм.ФорматСумм(СуммаКВозврату, ДанныеПечати.Валюта));
СтруктураДанныхСуммаПрописью.Вставить("СуммаИтогоКОплате", ФормированиеПечатныхФорм.ФорматСумм(СуммаИтого, ДанныеПечати.Валюта, "0"));
СтруктураДанныхСуммаПрописью.Вставить("СуммаПрописью", РаботаСКурсамиВалют.СформироватьСуммуПрописью(СуммаИтого, ДанныеПечати.Валюта));
Иначе

СтруктураДанныхСуммаПрописью.Вставить("СуммаПрописью", РаботаСКурсамиВалют.СформироватьСуммуПрописью(СуммаКПрописи, ДанныеПечати.Валюта));
КонецЕсли;

СтруктураДанныхСуммаПрописью.Вставить("ИтоговаяСтрока", ИтоговаяСтрока);
ОбластьСуммаПрописью.Параметры.Заполнить(СтруктураДанныхСуммаПрописью);


ТабличныйДокумент.Вывести(ОбластьСуммаПрописью);
КонецЕсли;
ЗаполнитьРеквизитыПодвалаСчетаНаОплату(ДанныеПечати, Макет, ТабличныйДокумент, ТаблицаЭтапыОплаты, СоответствиеСтавокНДС, ПараметрыПечати);

УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);

КонецЦикла;

КонецПроцедуры

depb

ОбластьСуммаПрописью.Параметры.ВесТовара = ТвойВес;
ОбластьСуммаПрописью.Параметры.ОбъемТовара     = ТвойОбъем;


VID1234

Цитата: depb от 12 дек 2019, 12:16
ОбластьСуммаПрописью.Параметры.ВесТовара = ТвойВес;
ОбластьСуммаПрописью.Параметры.ОбъемТовара     = ТвойОбъем;

Здраствуйте. Спасибо за отклик, а вместо ТвойВес, Твой Объем, что прописать?

nvj84

Цитата: VID1234 от 12 дек 2019, 12:23Здраствуйте. Спасибо за отклик, а вместо ТвойВес, Твой Объем, что прописать?
Изначально как полагаю в отчете не было этих полей и вы решили их добавить самостоятельно. Макет вы поправили, а запрос меняли чтобы данные получать. Из той информации что вы предоставили вам дали полный ответ, а именно что в области есть параметры с такими то именами и их нужно заполнить теми данными которые вы получаете где то выше по алгоритму и название этих полей известны только вам.
В вашем коде есть ВыборкаСтрокаТаблицыСтандарт.Количество и ЕдиницаИзмерения.Вес что это мне не понятно.
Для начала просто попробуйте вывести нулевые данные.

СтруктураДанныхСуммаПрописьюВесОбъем.Вставить("ВесТовара", 0);
СтруктураДанныхСуммаПрописьюВесОбъем.Вставить("ОбъемТовара", 0);
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхСуммаПрописьюВесОбъем);
ТабличныйДокумент.Вывести(ОбластьМакета);

Ну а далее нужно уже разбираться как получить их(думаю товаров может быть более одного и нужно где накапливать информацию по весу и объему и вывести уже одно значение).

VID1234

Цитата: nvj84 от 13 дек 2019, 08:12
Цитата: VID1234 от 12 дек 2019, 12:23Здраствуйте. Спасибо за отклик, а вместо ТвойВес, Твой Объем, что прописать?
Изначально как полагаю в отчете не было этих полей и вы решили их добавить самостоятельно. Макет вы поправили, а запрос меняли чтобы данные получать. Из той информации что вы предоставили вам дали полный ответ, а именно что в области есть параметры с такими то именами и их нужно заполнить теми данными которые вы получаете где то выше по алгоритму и название этих полей известны только вам.
В вашем коде есть ВыборкаСтрокаТаблицыСтандарт.Количество и ЕдиницаИзмерения.Вес что это мне не понятно.
Для начала просто попробуйте вывести нулевые данные.

СтруктураДанныхСуммаПрописьюВесОбъем.Вставить("ВесТовара", 0);
СтруктураДанныхСуммаПрописьюВесОбъем.Вставить("ОбъемТовара", 0);
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхСуммаПрописьюВесОбъем);
ТабличныйДокумент.Вывести(ОбластьМакета);

Ну а далее нужно уже разбираться как получить их(думаю товаров может быть более одного и нужно где накапливать информацию по весу и объему и вывести уже одно значение).
Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = Новый Структура;

МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.СчетНаОплатуПокупателю");

ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //возможны варианты - ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов,
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "Счет на оплату ВНЕШНИЙ"); //имя под kt обработка зарегистрирована будет в справочнике внешних обработок
ПараметрыРегистрации.Вставить("Версия", "1.1");
ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма к документу СчетНаОплатуПокупателю");

//команды
ТаблицаКоманд = Новый ТаблицаЗначений;
ТаблицаКоманд.Колонки.Добавить("Представление"); //как будет выглядеть описание печ.формы для пользователя
ТаблицаКоманд.Колонки.Добавить("Идентификатор"); //имя нашего макета
ТаблицаКоманд.Колонки.Добавить("Использование"); //ВызовСерверногоМетода
ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение"); //Истина
ТаблицаКоманд.Колонки.Добавить("Модификатор"); //ПечатьМХL

НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = "СчетНаОплатуПокупателю";
НоваяКоманда.Идентификатор = "СчетНаОплатуВнешний"; //Внешняя печатная форма
НоваяКоманда.Использование = "ВызовСерверногоМетода"; //здесь можно прописать использование как серверного так и клиентского, отличие в том, что серверный метод будет обращаться к экспортной процедуре из модуля объекта, клиентский - к экспортной процедуре из модуля формы объекта
НоваяКоманда.ПоказыватьОповещение = Истина;
НоваяКоманда.Модификатор = "ПечатьMXL";

ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

Возврат ПараметрыРегистрации;

КонецФункции

//Функция ПолучитьНазначениеОбработки()
// Массив = Новый Массив;
// Массив.Добавить("Документ.СчетНаОплатуПокупателю");
//
// Возврат Массив;
//
//КонецФункции

//Функция ПолучитьТаблицуКоманд ()

//Команды = Новый ТаблицаЗначений;
//Команды.Колонки.Добавить("Представление",Новый ОписаниеТипов ("Строка"));
//Команды.Колонки.Добавить("Идентификатор",Новый ОписаниеТипов ("Строка"));
//Команды.Колонки.Добавить("Использование",Новый ОписаниеТипов ("Строка"));
//Команды.Колонки.Добавить("ПоказыватьОповещение",Новый ОписаниеТипов("Булево"));
//Команды.Колонки.Добавить("Модификатор",Новый ОписаниеТипов("ПечатьMXL"));

//Возврат Команды;

//КонецФункции

//Процедура ДобавитьКоманду(ТаблицаКоманд,Представление,Идентификатор,Использование,ПоказыватьОповещение = ложь,Модификатор = "");
//
// НоваяКоманда = ТаблицаКоманд.Добавить();
// НоваяКоманда.Представление = Представление;
// НоваяКоманда.Идентификатор = Идентификатор;
// НоваяКоманда.Использование = Использование;
// НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
//    НоваяКоманда.Модификатор = Модификатор;
//
//КонецПроцедуры
//
//Функция СведенияОВнешнейОбработке () Экспорт
// ПараметрыРегистрации = новый Структура;
// ПараметрыРегистрации.Вставить("Вид","ПечатнаяФорма");
// ПараметрыРегистрации.Вставить("Назначение",ПолучитьНазначениеОбработки ());
// ПараметрыРегистрации.Вставить("Наименование","Счет на оплату ВНЕШНИЙ");
// ПараметрыРегистрации.Вставить("Версия","1.0");
// ПараметрыРегистрации.Вставить("Информация","Счет на оплату (внешняя печатная форма)");
// ПараметрыРегистрации.Вставить("БезопасныйРежим",Ложь);
//
// Команды = ПолучитьТаблицуКоманд ();
//
// ДобавитьКоманду (Команды,"Счет на оплату (внешняя печатная форма)",
// "СчетНаОплатуВнешний",
// "ВызовСерверногоМетода",
// Ложь,
// "ПечатьMXL");
//
// ПараметрыРегистрации.Вставить("Команды",Команды);
//
// Возврат ПараметрыРегистрации;
//                                                  
//КонецФункции

Процедура Печать(МассивОбъектов,КоллекцияПечатныхФорм,ОбъектыПечати, ПараметрыВывода) Экспорт
ПараметрыПечати = Новый Структура;
ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
  Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетНаОплатуВнешний") Тогда
СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОбъектов);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СчетНаОплатуВнешний",
НСтр("ru='Счет на оплату'"),
СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЕсли;
//VID++++++++++++++++++
//Попытка
// Вес_  = Вес_ + ВыборкаСтрокТовары.Количество*ВыборкаСтрокТовары.Номенклатура.ЕдиницаХраненияОстатков.Вес;
// Объем_    = Объем_  + ВыборкаСтрокТовары.Количество*ВыборкаСтрокТовары.Номенклатура.ЕдиницаХраненияОстатков.Объем;
//Исключение
// Сообщить(Строка(ВыборкаСтрокТовары.Номенклатура));
//КонецПопытки;
//++++++++++++++++++++

ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);

КонецПроцедуры

Функция СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати) Экспорт

ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СЧЕТНАОПЛАТУ";

НомерТипаДокумента = 0;

УстановитьПривилегированныйРежим(Истина);

Для Каждого СтруктураОбъектов Из СтруктураТипов Цикл

НомерТипаДокумента = НомерТипаДокумента + 1;
Если НомерТипаДокумента > 1 Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(СтруктураОбъектов.Ключ);
ДанныеДляПечати = МенеджерОбъекта.ПолучитьДанныеДляПечатнойФормыСчетаНаОплату(ПараметрыПечати, СтруктураОбъектов.Значение);

ЗаполнитьТабличныйДокументСчетаНаОплату(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, ПараметрыПечати);

КонецЦикла;

УстановитьПривилегированныйРежим(Ложь);

Возврат ТабличныйДокумент;

КонецФункции

Процедура ЗаполнитьТабличныйДокументСчетаНаОплату(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, ПараметрыПечати)

Перем КомплектПечатиПоСсылке;

ШаблоныОшибок = Новый Структура;
ШаблоныОшибок.Вставить("Товары", НСтр("ru = 'В документе %1 отсутствуют товары. Печать счета на оплату не требуется'"));
ШаблоныОшибок.Вставить("ЗаменяющиеТовары", НСтр("ru = 'В документе %1 отсутствуют заменяющие товары. Печать счета на оплату не требуется'"));
ШаблоныОшибок.Вставить("Этапы", НСтр("ru = 'В документе %1 отсутствуют этапы оплаты. Печать счета на оплату не требуется'"));

ИспользоватьРучныеСкидки         = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВПродажах");
ИспользоватьАвтоматическиеСкидки = ПолучитьФункциональнуюОпцию("ИспользоватьАвтоматическиеСкидкиВПродажах");
СтруктураИмяДопКолонки = Новый Структура("ИмяКолонкиКодов", ФормированиеПечатныхФорм.ИмяДополнительнойКолонки());

ДанныеПечати = ДанныеДляПечати.РезультатПоШапке.Выбрать();
ЭтапыОплаты = ДанныеДляПечати.РезультатПоЭтапамОплаты.Выгрузить();
Товары = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выгрузить();

ЭтапыЗалоговойТары = ЭтапыОплаты.НайтиСтроки(Новый Структура("ЭтоЗалогЗаТару", Истина));
ТолькоЗалогЗаТару = ЭтапыЗалоговойТары.Количество() = ЭтапыОплаты.Количество() И ЭтапыЗалоговойТары.Количество() > 0;

Если Товары.Колонки.Найти("Содержание")=Неопределено Тогда
ЕстьСодержание = Ложь;
Иначе
ЕстьСодержание = Истина;
КонецЕсли;

ПоказыватьНДС = Константы.ВыводитьДопКолонкиНДС.Получить();
ПервыйДокумент = Истина;

Пока ДанныеПечати.Следующий() Цикл

Отказ = Ложь;

СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);

ТаблицаТовары = Товары.НайтиСтроки(СтруктураПоиска);
ТаблицаЭтапыОплаты = ЭтапыОплаты.НайтиСтроки(СтруктураПоиска);

ПроверкаЗаполненияДокумента(ДанныеПечати, ТаблицаТовары, ТаблицаЭтапыОплаты, ШаблоныОшибок, Отказ);
Если Отказ Тогда
Продолжить;
КонецЕсли;

Если ПервыйДокумент Тогда
ПервыйДокумент = Ложь;
Иначе
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;

ЗаголовокСкидки = ФормированиеПечатныхФорм.НужноВыводитьСкидки(ТаблицаТовары, ИспользоватьРучныеСкидки Или ИспользоватьАвтоматическиеСкидки);
ЕстьСкидки = ЗаголовокСкидки.ЕстьСкидки;

СуффиксОбласти = ?(ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару И ПоказыватьНДС, "СНДС", "") + ?(ЕстьСкидки, "СоСкидкой", "");

Макет = Новый ТабличныйДокумент;
ЗаполнитьРеквизитыШапкиСчетаНаОплату(ДанныеПечати, Макет, ТабличныйДокумент, ТаблицаЭтапыОплаты, ТаблицаТовары);

Если ДанныеПечати.ЧастичнаяОплата ИЛИ ТипЗнч(ДанныеПечати.ДокументОснование) = Тип("ДокументСсылка.ОтчетКомитенту") Тогда

ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицыЧастичнаяОплата");
ОбластьШапкаТаблицы.Параметры.Заполнить(СтруктураИмяДопКолонки);
ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);

ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицыЧастичнаяОплата");
ОбластьСтрокаТаблицы.Параметры.Заполнить(ДанныеПечати);
ОбластьСтрокаТаблицы.Параметры.НомерСтроки = 1;
ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);

ОбластьИтого = Макет.ПолучитьОбласть("ПодвалТаблицыЧастичнаяОплата");
СтруктураДанныхИтого = Новый Структура;
СтруктураДанныхИтого.Вставить("Всего", ДанныеПечати.СуммаДокумента);
ОбластьИтого.Параметры.Заполнить(СтруктураДанныхИтого);
ОбластьИтого.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Присоединить(ОбластьИтого);

// Вывести ИтогоНДС
СоответствиеСтавокНДС = Новый Соответствие;
Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда
ОбластьИтогоНДС = Макет.ПолучитьОбласть("ПодвалТаблицыНДС");
Для Каждого СтрокаТовара Из ТаблицаТовары Цикл
СуммаНДС = СоответствиеСтавокНДС[СтрокаТовара.СтавкаНДС];
Если СуммаНДС = Неопределено Тогда
СуммаНДС = СтрокаТовара.СуммаНДС;
Иначе
СуммаНДС = СуммаНДС + СтрокаТовара.СуммаНДС;
КонецЕсли;
СоответствиеСтавокНДС.Вставить(СтрокаТовара.СтавкаНДС, СуммаНДС);
КонецЦикла;
Для Каждого ТекСтавкаНДС Из СоответствиеСтавокНДС Цикл
СтруктураДанныхИтогоНДС = Новый Структура;
СтруктураДанныхИтогоНДС.Вставить("НДС", ФормированиеПечатныхФорм.ТекстНДСПоСтавке(ТекСтавкаНДС.Ключ, ДанныеПечати.ЦенаВключаетНДС));
Если ЗначениеЗаполнено(ТекСтавкаНДС.Значение) Тогда
СтруктураДанныхИтогоНДС.Вставить("ВсегоНДС", ФормированиеПечатныхФорм.ФорматСумм(ТекСтавкаНДС.Значение /100 * ДанныеПечати.ПроцентОплаты));
Иначе
СтруктураДанныхИтогоНДС.Вставить("ВсегоНДС","-");
КонецЕсли;
ОбластьИтогоНДС.Параметры.Заполнить(СтруктураДанныхИтогоНДС);
ТабличныйДокумент.Вывести(ОбластьИтогоНДС);
КонецЦикла;
ОбластьПодвалСНДС = Макет.ПолучитьОбласть("ПодвалТаблицыВсего");
СтруктураДанныхПодвалСНДС = Новый Структура("ВсегоСНДС", ФормированиеПечатныхФорм.ФорматСумм(ДанныеПечати.СуммаДокумента));
ОбластьПодвалСНДС.Параметры.Заполнить(СтруктураДанныхПодвалСНДС);
ТабличныйДокумент.Вывести(ОбластьПодвалСНДС);
КонецЕсли;

// Вывести Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописьюЧастичныйСчет");
СуммаПрописью = НСтр("ru='Всего на сумму %СуммаПрописью%'");
СуммаПрописью = СтрЗаменить(СуммаПрописью, "%СуммаПрописью%", РаботаСКурсамиВалют.СформироватьСуммуПрописью(ДанныеПечати.СуммаДокумента, ДанныеПечати.Валюта));
СтруктураДанныхСуммаПрописью = Новый Структура("СуммаПрописью", СуммаПрописью);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхСуммаПрописью);
ТабличныйДокумент.Вывести(ОбластьМакета);

Иначе

// Таблица "Товары"
ОбластьШапкаТаблицы          = Макет.ПолучитьОбласть("ШапкаТаблицы" + СуффиксОбласти);
ОбластьСтрокаТаблицыСтандарт = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбласти);
ОбластьПодвалТаблицы         = Макет.ПолучитьОбласть("ПодвалТаблицы" + СуффиксОбласти);
ОбластьПодвалНДС             = Макет.ПолучитьОбласть("ПодвалТаблицыНДС");

ИспользоватьНаборы = Ложь;
Если Товары.Колонки.Найти("ЭтоНабор") <> Неопределено Тогда
ИспользоватьНаборы = Истина;

ОбластьСтрокаТаблицыНабор         = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбласти + "Набор");
ОбластьСтрокаТаблицыКомплектующие = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбласти + "Комплектующие");
КонецЕсли;

ПустыеДанные = НаборыСервер.ПустыеДанные();
ВыводШапки = 0;

Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда
СуффиксОбластиПодвал = "СНДС" + ?(ЕстьСкидки, "СоСкидкой", "");
ОбластьПодвалСНДС = Макет.ПолучитьОбласть("ПодвалТаблицыВсего" + СуффиксОбластиПодвал);
КонецЕсли;

Если ЕстьСкидки Тогда
СтруктураЗаголовокСкидки = Новый Структура("Скидка, СуммаБезСкидки",
ЗаголовокСкидки.Скидка,
ЗаголовокСкидки.СуммаСкидки);
ОбластьШапкаТаблицы.Параметры.Заполнить(СтруктураЗаголовокСкидки);
КонецЕсли;
ОбластьШапкаТаблицы.Параметры.Заполнить(СтруктураИмяДопКолонки);
ОбластьСуммаПрописью = Макет.ПолучитьОбласть(?(ДанныеПечати.СчетКВозврату, "СуммаПрописьюКВозврату", "СуммаПрописью"));

МассивПроверкиВывода = Новый Массив;

Сумма = 0;
СуммаНДС = 0;
ВсегоСкидок = 0;
ВсегоБезСкидок = 0;
НомерСтроки = 0;
СоответствиеСтавокНДС = Новый Соответствие;
Для Каждого СтрокаТовары Из ТаблицаТовары Цикл

Если НаборыСервер.ИспользоватьОбластьНабор(СтрокаТовары, ИспользоватьНаборы) Тогда
ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыНабор;
ИначеЕсли НаборыСервер.ИспользоватьОбластьКомплектующие(СтрокаТовары, ИспользоватьНаборы) Тогда
ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыКомплектующие;
Иначе
ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыСтандарт;
КонецЕсли;

Если НаборыСервер.ВыводитьТолькоЗаголовок(СтрокаТовары, ИспользоватьНаборы) Тогда
НомерСтрокиПечать = "";
Иначе
НомерСтроки = НомерСтроки + 1;
НомерСтрокиПечать = НомерСтроки;
КонецЕсли;

Если НомерСтроки = 0 И ВыводШапки <> 2 Тогда
ВыводШапки = 1;
КонецЕсли;

ПрефиксИПостфикс = НаборыСервер.ПолучитьПрефиксИПостфикс(СтрокаТовары, ИспользоватьНаборы);

ДополнительныеПараметрыПолученияНаименованияДляПечати = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДополнительныеПараметрыПолученияНаименованияДляПечати.ВозвратнаяТара = СтрокаТовары.ЭтоВозвратнаяТара;
Если ЕстьСодержание Тогда
ДополнительныеПараметрыПолученияНаименованияДляПечати.Содержание = СтрокаТовары.Содержание;
КонецЕсли;

Товар = ПрефиксИПостфикс.Префикс
+ НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
СтрокаТовары.НаименованиеПолное,
СтрокаТовары.Характеристика,
,
, // Серия
ДополнительныеПараметрыПолученияНаименованияДляПечати)
+ ПрефиксИПостфикс.Постфикс;

СтруктураДанныхСтроки = Новый Структура;
СтруктураДанныхСтроки.Вставить("Товар", Товар);
СтруктураДанныхСтроки.Вставить("НомерСтроки", НомерСтрокиПечать);
ОбластьСтрокаТаблицы.Параметры.Заполнить(СтрокаТовары);
Если ЗаголовокСкидки.ЕстьСкидки Тогда
СтруктураДанныхСтроки.Вставить("СуммаСкидки",
?(ЗаголовокСкидки.ТолькоНаценка,- СтрокаТовары.СуммаСкидки,СтрокаТовары.СуммаСкидки));
КонецЕсли;

Если ЗначениеЗаполнено(СтруктураИмяДопКолонки.ИмяКолонкиКодов) Тогда
СтруктураДанныхСтроки.Вставить("Артикул", СтрокаТовары[СтруктураИмяДопКолонки.ИмяКолонкиКодов]);
КонецЕсли;

ОбластьСтрокаТаблицы.Параметры.Заполнить(СтруктураДанныхСтроки);

Если НаборыСервер.ВыводитьТолькоЗаголовок(СтрокаТовары, ИспользоватьНаборы) Тогда
ОбластьСтрокаТаблицы.Параметры.Заполнить(ПустыеДанные);
КонецЕсли;

МассивПроверкиВывода.Очистить();
МассивПроверкиВывода.Добавить(ОбластьСтрокаТаблицы);
Если НомерСтроки = ТаблицаТовары.Количество() Тогда
МассивПроверкиВывода.Добавить(ОбластьПодвалТаблицы);
МассивПроверкиВывода.Добавить(ОбластьПодвалНДС);
МассивПроверкиВывода.Добавить(ОбластьСуммаПрописью);
КонецЕсли;

Если ТабличныйДокумент.ПроверитьВывод(МассивПроверкиВывода) Тогда
Если (НомерСтроки = 1 И ВыводШапки = 0) ИЛИ (НомерСтроки = 0 И ВыводШапки = 1) Тогда
ВыводШапки = 2;
ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
КонецЕсли;
Иначе
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
КонецЕсли;

ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);

Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(СтрокаТовары, ИспользоватьНаборы) Тогда

Сумма = Сумма + СтрокаТовары.Сумма;
СуммаНДС = СуммаНДС + СтрокаТовары.СуммаНДС;

Если ЕстьСкидки Тогда
ВсегоСкидок = ВсегоСкидок + СтрокаТовары.СуммаСкидки;
ВсегоБезСкидок = ВсегоБезСкидок + СтрокаТовары.СуммаБезСкидки;
КонецЕсли;

Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда
СуммаНДСПоСтавке = СоответствиеСтавокНДС[СтрокаТовары.СтавкаНДС];
Если СуммаНДСПоСтавке = Неопределено Тогда
СуммаНДСПоСтавке = 0;
КонецЕсли;
СоответствиеСтавокНДС.Вставить(СтрокаТовары.СтавкаНДС, СуммаНДСПоСтавке + СтрокаТовары.СуммаНДС);
КонецЕсли;

КонецЕсли;

КонецЦикла;

СтруктураДанныхВсегоСкидки = Новый Структура;

// Подвал таблицы "Товары"
Если ЕстьСкидки Тогда
СтруктураДанныхВсегоСкидки.Вставить("ВсегоСкидок", ?(ЗаголовокСкидки.ТолькоНаценка,-ВсегоСкидок, ВсегоСкидок));
СтруктураДанныхВсегоСкидки.Вставить("ВсегоБезСкидок", ВсегоБезСкидок);
Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда
СтруктураДанныхВсегоСкидки.Вставить("ВсегоСуммаНДС", СуммаНДС);
КонецЕсли;
КонецЕсли;
СтруктураДанныхВсегоСкидки.Вставить("Всего", ФормированиеПечатныхФорм.ФорматСумм(Сумма));
ОбластьПодвалТаблицы.Параметры.Заполнить(СтруктураДанныхВсегоСкидки);
ТабличныйДокумент.Вывести(ОбластьПодвалТаблицы);

// Область "ПодвалТаблицыНДС"
Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда

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

КонецЦикла;
СтруктураДанныхПодвалВсегоСНДС = Новый Структура;
СтруктураДанныхПодвалНДС.Вставить("ВсегоСНДС", ФормированиеПечатныхФорм.ФорматСумм(Сумма + ?(ДанныеПечати.ЦенаВключаетНДС, 0, СуммаНДС)));
ОбластьПодвалСНДС.Параметры.Заполнить(СтруктураДанныхПодвалНДС);
ТабличныйДокумент.Вывести(ОбластьПодвалСНДС);

Иначе
СтруктураДанныхПодвалНДС = Новый Структура;
СтруктураДанныхПодвалНДС.Вставить("НДС", НСтр("ru='Без налога (НДС)'"));
СтруктураДанныхПодвалНДС.Вставить("ВсегоНДС", "-");
ОбластьПодвалНДС.Параметры.Заполнить(СтруктураДанныхПодвалНДС);
ТабличныйДокумент.Вывести(ОбластьПодвалНДС);
КонецЕсли;

// Вывести Сумму прописью
СуммаКПрописи = Сумма + ?(ДанныеПечати.ЦенаВключаетНДС, 0, СуммаНДС);
ИтоговаяСтрока = НСтр("ru='Всего наименований %Количество%, на сумму %Сумма%'");
ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, "%Количество%", НомерСтроки);
ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, "%Сумма%",      ФормированиеПечатныхФорм.ФорматСумм(СуммаКПрописи, ДанныеПечати.Валюта));
  //VID++++++++++++++++++
             //Вес_  = 0;
                 //Объем_    = 0;
         //++++++++++++++++++++

//   //VID(
Запрос = Новый Запрос("ВЫБРАТЬ
                              | ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
                              | СУММА(ЗаказКлиентаТовары.Количество) КАК Количество
                              |ИЗ
                              | Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
                              |ГДЕ
                              | ЗаказКлиентаТовары.Ссылка = &Ссылка
                              |
                              |СГРУППИРОВАТЬ ПО
                              | ЗаказКлиентаТовары.Номенклатура");
//Запрос.УстановитьПараметр("Ссылка", дсДокумент);
        тзТовары = Запрос.Выполнить().Выгрузить();

//ОбластьМакета = Макет.ПолучитьОбласть("ВесОбъем");
//ОбластьМакета.Параметры.ВесТовара = ВыборкатзТовары.Количество*ЕдиницаИзмерения.Вес;
//ТабличныйДокумент.Вывести(ОбластьМакета);
//ОбластьСуммаПрописью.Параметры.ВесТовара = ВыборкатзТовары.Количество*ЕдиницаИзмерения.Вес;
//ОбластьСуммаПрописью.Параметры.ОбъемТовара = ТвойОбъем;

// ПФ_MXL_СчетНаОплату = ПолучитьМакет("ПФ_MXL_СчетНаОплату");
//ОбластьВесОбъем = ПФ_MXL_СчетНаОплату.ПолучитьОбласть("ВесОбъем");
//ОбластьВесОбъем.Параметры.ВесТовара = ВыборкаСтрокаТаблицыСтандарт.Количество*ЕдиницаИзмерения.Вес;
//ОбластьВесОбъем.Параметры.ОбъемТовара = ТвойОбъем;
//ТабличныйДокумент.Вывести(ОбластьВесОбъем);

       
     
//VID)



// VID Вывести Вес Объем++++++++++++++++++
//ОбластьМакета.Параметры.ВесОбъем = "Объем = " + Объем_ + " куб. м.;   Вес = " + Вес_ + " кг.";
// VID++++++++++++

СтруктураДанныхСуммаПрописью = Новый Структура;
Если ДанныеПечати.СчетКВозврату Тогда

СуммаКВозврату = ДанныеПечати.СуммаКВозврату;
СуммаИтого = СуммаКПрописи-СуммаКВозврату;
Если СуммаИтого < 0 Тогда
СуммаИтого = 0;
КонецЕсли;
СтруктураДанныхСуммаПрописью.Вставить("СуммаВозврата", ФормированиеПечатныхФорм.ФорматСумм(СуммаКВозврату, ДанныеПечати.Валюта));
СтруктураДанныхСуммаПрописью.Вставить("СуммаИтогоКОплате", ФормированиеПечатныхФорм.ФорматСумм(СуммаИтого, ДанныеПечати.Валюта, "0"));
СтруктураДанныхСуммаПрописью.Вставить("СуммаПрописью", РаботаСКурсамиВалют.СформироватьСуммуПрописью(СуммаИтого, ДанныеПечати.Валюта));
Иначе

СтруктураДанныхСуммаПрописью.Вставить("СуммаПрописью", РаботаСКурсамиВалют.СформироватьСуммуПрописью(СуммаКПрописи, ДанныеПечати.Валюта));
КонецЕсли;

СтруктураДанныхСуммаПрописью.Вставить("ИтоговаяСтрока", ИтоговаяСтрока);
ОбластьСуммаПрописью.Параметры.Заполнить(СтруктураДанныхСуммаПрописью);


ТабличныйДокумент.Вывести(ОбластьСуммаПрописью);
КонецЕсли;
ЗаполнитьРеквизитыПодвалаСчетаНаОплату(ДанныеПечати, Макет, ТабличныйДокумент, ТаблицаЭтапыОплаты, СоответствиеСтавокНДС, ПараметрыПечати);

УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);

КонецЦикла;

КонецПроцедуры

Процедура ЗаполнитьРеквизитыШапкиСчетаНаОплату(ДанныеПечати, Макет, ТабличныйДокумент, ТаблицаЭтапыОплаты, ТаблицаТовары)

Макет = ПолучитьМакет("ПФ_MXL_СчетНаОплату");

СведенияОПоставщике = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДанныеПечати.Дата);

ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокСчета");
//ФормированиеПечатныхФорм.ВывестиЛоготипВТабличныйДокумент(Макет, ОбластьМакета, "ЗаголовокСчета", ДанныеПечати.Организация);
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета, ДанныеПечати.Ссылка);

//Если ТаблицаЭтапыОплаты.Количество() = 0 Тогда
// ДатаПлатежа = '00010101';
//ИначеЕсли ТаблицаЭтапыОплаты.Количество() = 1 Тогда
// ДатаПлатежа = ТаблицаЭтапыОплаты[0].ДатаПлатежа;
//Иначе
// ДатаПлатежа = ТаблицаЭтапыОплаты[ТаблицаЭтапыОплаты.Количество()-1].ДатаПлатежа;
//КонецЕсли;
//
//Если ЗначениеЗаполнено(ДатаПлатежа) Тогда
// СтруктураДанныхЗаголовок = Новый Структура;
// НадписьСрокДействия = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
// НСтр("ru='Счет действителен до %1.'"), Формат(ДатаПлатежа, "ДЛФ=D")) + " ";
// СтруктураДанныхЗаголовок.Вставить("СрокДействия", НадписьСрокДействия);
// ОбластьМакета.Параметры.Заполнить(СтруктураДанныхЗаголовок);
//КонецЕсли;

ТабличныйДокумент.Вывести(ОбластьМакета);

Если ДанныеПечати.ПлатежЗаРубеж Тогда

ОбластьМакета = Макет.ПолучитьОбласть("ОбразецЗаполненияРеквизитыБанка");
СтруктураДанныхШапки = Новый Структура;
ПредставлениеПоставщикаДляПлатПоручения = "";

Если ЗначениеЗаполнено(ДанныеПечати.БанковскийСчет) Тогда
СтруктураДанныхШапки.Вставить("СчетБанкаПолучателяПредставление", ДанныеПечати.НомерБанковскогоСчета);
СтруктураДанныхШапки.Вставить("БанкПолучателяПредставление", ДанныеПечати.НаименованиеБанка);
СтруктураДанныхШапки.Вставить("АдресБанкаПолучателяПредставление", ДанныеПечати.АдресБанка);
СтруктураДанныхШапки.Вставить("СВИФТБанка", ДанныеПечати.СВИФТБанка);
ПредставлениеПоставщикаДляПлатПоручения = ДанныеПечати.БанковскийСчетТекстКорреспондента;
КонецЕсли;

Если ПустаяСтрока(ПредставлениеПоставщикаДляПлатПоручения) Тогда
ПредставлениеПоставщикаДляПлатПоручения = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,");
КонецЕсли;
СтруктураДанныхШапки.Вставить("ПредставлениеПоставщикаДляПлатПоручения", ПредставлениеПоставщикаДляПлатПоручения);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхШапки);
ТабличныйДокумент.Вывести(ОбластьМакета);

Если Не ПустаяСтрока(ДанныеПечати.НаименованиеБанкаДляРасчетов) Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ОбразецЗаполненияРеквизитыБанкаКорреспондента");

СтруктураДанныхШапки.Очистить();
СтруктураДанныхШапки.Вставить("БанкКорреспондентПолучателяПредставление",
ДанныеПечати.НаименованиеБанкаДляРасчетов + " " + ДанныеПечати.АдресБанкаДляРасчетов);
СтруктураДанныхШапки.Вставить("СВИФТБанкаДляРасчетов", ДанныеПечати.СВИФТБанкаДляРасчетов);
СтруктураДанныхШапки.Вставить("СчетБанкаДляРасчетовПредставление", ДанныеПечати.СчетВБанкеДляРасчетов);

ОбластьМакета.Параметры.Заполнить(СтруктураДанныхШапки);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;

ОбластьМакета = Макет.ПолучитьОбласть("ОбразецЗаполненияНазначениеПлатежа");
СтруктураДанныхШапки.Очистить();
Если Не ЗначениеЗаполнено(ДанныеПечати.НазначениеПлатежа)
И ТипЗнч(ДанныеПечати.Ссылка) <> Тип("ДокументСсылка.СчетНаОплатуКлиенту") Тогда
СтруктураДанныхШапки.Вставить("НазначениеПлатежа", Документы.СчетНаОплатуКлиенту.СформироватьНазначениеПлатежа(
ДанныеПечати.Номер, ДанныеПечати.Ссылка));
Иначе
СтруктураДанныхШапки.Вставить("НазначениеПлатежа", ДанныеПечати.НазначениеПлатежа);
КонецЕсли;
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхШапки);
ТабличныйДокумент.Вывести(ОбластьМакета);

Иначе

Если ДанныеПечати.КонтрагентЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо
И ЗначениеЗаполнено(ДанныеПечати.БанковскийСчет) Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ОбразецЗаполненияППСКодом");
Иначе
ОбластьМакета = Макет.ПолучитьОбласть("ОбразецЗаполненияПП");
КонецЕсли;

СтруктураДанныхШапки = Новый Структура;
СтруктураДанныхШапки.Вставить("ИНН", СведенияОПоставщике.ИНН);
СтруктураДанныхШапки.Вставить("КПП",СведенияОПоставщике.КПП);
ПредставлениеПоставщикаДляПлатПоручения = "";

СтруктураДанныхШапки.Вставить("ИдентификаторПлатежа", ДанныеПечати.ИдентификаторПлатежа);

Если ЗначениеЗаполнено(ДанныеПечати.БанковскийСчет) Тогда

Если ЗначениеЗаполнено(ДанныеПечати.БИКБанкаДляРасчетов) Тогда
Банк = ДанныеПечати.НаименованиеБанкаДляРасчетов;
БИК         = ДанныеПечати.БИКБанкаДляРасчетов;
КоррСчет    = ДанныеПечати.КоррСчетБанкаДляРасчетов;
ГородБанка  = ДанныеПечати.ГородБанкаДляРасчетов;
НомерСчета  = ДанныеПечати.КоррСчетБанка;
Иначе
Банк = ДанныеПечати.НаименованиеБанка;
БИК         = ДанныеПечати.БИКБанк;
КоррСчет    = ДанныеПечати.КоррСчетБанка;
ГородБанка  = ДанныеПечати.ГородБанка;
НомерСчета  = ДанныеПечати.НомерБанковскогоСчета;
КонецЕсли;

СтруктураДанныхШапки.Вставить("БИКБанкаПолучателя", БИК);
СтруктураДанныхШапки.Вставить("БанкПолучателя", Банк);
СтруктураДанныхШапки.Вставить("БанкПолучателяПредставление", СокрЛП(Банк) + " " + ГородБанка);
СтруктураДанныхШапки.Вставить("СчетБанкаПолучателя", КоррСчет);
СтруктураДанныхШапки.Вставить("СчетБанкаПолучателяПредставление", КоррСчет);
СтруктураДанныхШапки.Вставить("СчетПолучателяПредставление", НомерСчета);
СтруктураДанныхШапки.Вставить("СчетПолучателя", НомерСчета);
ПредставлениеПоставщикаДляПлатПоручения = ДанныеПечати.БанковскийСчетТекстКорреспондента;

КонецЕсли;

Если ПустаяСтрока(ПредставлениеПоставщикаДляПлатПоручения) Тогда
ПредставлениеПоставщикаДляПлатПоручения = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,");
КонецЕсли;

Если Не ЗначениеЗаполнено(ДанныеПечати.НазначениеПлатежа)
И ТипЗнч(ДанныеПечати.Ссылка) <> Тип("ДокументСсылка.СчетНаОплатуКлиенту") Тогда

СтруктураДанныхШапки.Вставить("НазначениеПлатежа", Документы.СчетНаОплатуКлиенту.СформироватьНазначениеПлатежа(
ДанныеПечати.Номер, ДанныеПечати.Ссылка));

Иначе

СтруктураДанныхШапки.Вставить("НазначениеПлатежа", ДанныеПечати.НазначениеПлатежа);

КонецЕсли;

СтруктураДанныхШапки.Вставить("ПредставлениеПоставщикаДляПлатПоручения", ПредставлениеПоставщикаДляПлатПоручения);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхШапки);

Если ДанныеПечати.КонтрагентЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо
И ЗначениеЗаполнено(ДанныеПечати.БанковскийСчет) Тогда

РеквизитыПлатежа = РеквизитыПлатежаQRКод(СтруктураДанныхШапки);
РеквизитыПлатежа.СуммаЧислом = СуммаКОплатеПоСчету(ДанныеПечати, ТаблицаТовары);

ВывестиQRКод(РеквизитыПлатежа, ДанныеПечати, ОбластьМакета);

КонецЕсли;

ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;

КолонкаКодов = ФормированиеПечатныхФорм.ИмяДополнительнойКолонки();
ВыводитьКоды = ЗначениеЗаполнено(КолонкаКодов);

Смещать = ТипСмещенияТабличногоДокумента.ПоВертикали;
ОбластьПервойКолонкиТоваров = Макет.Область("ПерваяКолонкаТовара");
Если НЕ ВыводитьКоды Тогда
ОбластьПервойКолонкиТоваров.ШиринаКолонки = ОбластьПервойКолонкиТоваров.ШиринаКолонки + Макет.Область("КолонкаКодов").ШиринаКолонки;
Макет.УдалитьОбласть(Макет.Область("КолонкаКодов"), Смещать);
КонецЕсли;

ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");

ТекстЗаголовка = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(ДанныеПечати, НСтр("ru='Счет на оплату'"));
СтруктураДанныхШапки = Новый Структура;
СтруктураДанныхШапки.Вставить("ТекстЗаголовка", ТекстЗаголовка);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхШапки);
ТабличныйДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");

СтруктураДанныхПоставщик = Новый Структура;
СтруктураДанныхПоставщик.Вставить("ПредставлениеПоставщика",
ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.ОрганизацияПоставщик, ДанныеПечати.Дата),
"ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,"));
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхПоставщик);
ТабличныйДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
СтруктураДанныхПокупатель = Новый Структура;
СтруктураДанныхПокупатель.Вставить("ПредставлениеПолучателя",
ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Контрагент, ДанныеПечати.Дата),
"ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,"));
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхПокупатель);
ТабличныйДокумент.Вывести(ОбластьМакета);

Если ЗначениеЗаполнено(ДанныеПечати.Грузоотправитель) Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Грузоотправитель");
СтруктураДанныхГрузоотправитель = Новый Структура;
СтруктураДанныхГрузоотправитель.Вставить("ПредставлениеГрузоотправителя", ОписаниеОрганизации(ДанныеПечати, "Грузоотправитель"));
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхГрузоотправитель);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;

Если ЗначениеЗаполнено(ДанныеПечати.Грузополучатель) Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Грузополучатель");
СтруктураДанныхГрузополучатель = Новый Структура;
СтруктураДанныхГрузополучатель.Вставить("ПредставлениеГрузополучателя", ОписаниеОрганизации(ДанныеПечати, "Грузополучатель"));
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхГрузополучатель);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;

КонецПроцедуры

Функция ОписаниеОрганизации(ДанныеПечати, ИмяОрганизации)

Сведения = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати[ИмяОрганизации], ДанныеПечати.Дата);
РеквизитыОрганизации = "ПолноеНаименование,ИНН,КПП,ФактическийАдрес,Телефоны,";

Возврат ФормированиеПечатныхФорм.ОписаниеОрганизации(Сведения, РеквизитыОрганизации);

КонецФункции

Процедура ВывестиQRКод(РеквизитыПлатежа, ДанныеПечати, ОбластьМакета)

QRСтрока = УправлениеПечатью.ФорматнаяСтрокаУФЭБС(РеквизитыПлатежа);

Если Не ПустаяСтрока(QRСтрока) Тогда

ДанныеQRКода = УправлениеПечатью.ДанныеQRКода(QRСтрока, 0, 190);

Если ТипЗнч(ДанныеQRКода) = Тип("ДвоичныеДанные") Тогда
КартинкаQRКода = Новый Картинка(ДанныеQRКода);
ОбластьМакета.Рисунки.QRКод.Картинка = КартинкаQRКода;
Иначе
Шаблон = Нстр("ru = 'Не удалось сформировать QR-код для документа %1.
|Технические подробности см. в журнале регистрации.'");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, ДанныеПечати.Ссылка);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
КонецЕсли;

КонецЕсли;

КонецПроцедуры

Функция СуммаКОплатеПоСчету(ДанныеПечати, ТаблицаТовары)

Если ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.АвансовыйОтчет")
ИЛИ ТипЗнч(ДанныеПечати.ДокументОснование) = Тип("ДокументСсылка.ОтчетКомитенту")
ИЛИ ДанныеПечати.ЧастичнаяОплата Тогда

СуммаКОплатеПоСчету = ДанныеПечати.СуммаДокумента;

Иначе

СуммаКОплатеПоСчету = 0;
Для Каждого СтрокаТовары Из ТаблицаТовары Цикл
СуммаКОплатеПоСчету = СуммаКОплатеПоСчету
+ СтрокаТовары.Сумма + ?(ДанныеПечати.ЦенаВключаетНДС, 0, СтрокаТовары.СуммаНДС);
КонецЦикла;

Если ДанныеПечати.СчетКВозврату Тогда
СуммаКОплатеПоСчету = СуммаКОплатеПоСчету - ДанныеПечати.СуммаКВозврату;
Если СуммаКОплатеПоСчету < 0 Тогда
СуммаКОплатеПоСчету = 0;
КонецЕсли;
КонецЕсли;

КонецЕсли;

Возврат СуммаКОплатеПоСчету;

КонецФункции

Функция РеквизитыПлатежаQRКод(СтруктураДанныхШапки)

РеквизитыПлатежа = Новый Структура;
РеквизитыПлатежа.Вставить("ТекстПолучателя", СтруктураДанныхШапки.ПредставлениеПоставщикаДляПлатПоручения);
РеквизитыПлатежа.Вставить("НомерСчетаПолучателя", СтруктураДанныхШапки.СчетПолучателяПредставление);
РеквизитыПлатежа.Вставить("НаименованиеБанкаПолучателя", СтруктураДанныхШапки.БанкПолучателяПредставление);
РеквизитыПлатежа.Вставить("БИКБанкаПолучателя", СтруктураДанныхШапки.БИКБанкаПолучателя);
РеквизитыПлатежа.Вставить("СчетБанкаПолучателя", СтруктураДанныхШапки.СчетБанкаПолучателяПредставление);
РеквизитыПлатежа.Вставить("СуммаЧислом");
РеквизитыПлатежа.Вставить("НазначениеПлатежа", СтруктураДанныхШапки.НазначениеПлатежа);
РеквизитыПлатежа.Вставить("ИННПолучателя", СтруктураДанныхШапки.ИНН);
РеквизитыПлатежа.Вставить("КПППолучателя", СтруктураДанныхШапки.КПП);

Возврат РеквизитыПлатежа

КонецФункции

Процедура ЗаполнитьРеквизитыПодвалаСчетаНаОплату(ДанныеПечати, Макет, ТабличныйДокумент, ТаблицаЭтапыОплаты, СоответствиеСтавокНДС, ПараметрыПечати)

МассивПроверкиВывода = Новый Массив;

// Вывести этапы графика оплаты
Если ТаблицаЭтапыОплаты.Количество() > 1 Тогда

ИмяКолонкиДатыОплаты = ?(ДанныеПечати.СчетКВозврату, НСтр("ru='Дата оплаты или возврата'"), НСтр("ru='Дата оплаты'"));

ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицыЭтапыОплаты");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ИтогоЭтапыОплаты");
СтруктураДанныхШапки = Новый Структура("ИмяКолонкиДатыОплаты",ИмяКолонкиДатыОплаты);
ОбластьШапкаТаблицы.Параметры.Заполнить(СтруктураДанныхШапки);
МассивПроверкиВывода.Добавить(ОбластьШапкаТаблицы);
МассивПроверкиВывода.Добавить(ОбластьПодвалТаблицы);

ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицыЭтапыОплаты");

НомерЭтапа = 1;
Для Каждого ТекЭтап Из ТаблицаЭтапыОплаты Цикл

ПараметрыСтроки = НовыеПараметрыСтрокиЭтапа();
ЗаполнитьЗначенияСвойств(ПараметрыСтроки, ТекЭтап);
ПараметрыСтроки.НомерСтроки = НомерЭтапа;
Если Не ПараметрыСтроки.ЭтоЗалогЗаТару Тогда
ПараметрыСтроки.ТекстНДС = ФормированиеПечатныхФорм.СформироватьТекстНДСЭтапаОплаты(
СоответствиеСтавокНДС,
ТекЭтап.ПроцентПлатежа);
Иначе
ПараметрыСтроки.ПроцентПлатежа = "-";
ПараметрыСтроки.ТекстНДС = НСтр("ru='Залог за тару. Без налога (НДС).'");
КонецЕсли;

ОбластьСтрокаТаблицы.Параметры.Заполнить(ПараметрыСтроки);

МассивПроверкиВывода.Добавить(ОбластьСтрокаТаблицы);

Если ТабличныйДокумент.ПроверитьВывод(МассивПроверкиВывода) Тогда
Если НомерЭтапа = 1 Тогда
ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
МассивПроверкиВывода.Удалить(0);
КонецЕсли;
Иначе
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
КонецЕсли;

ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
МассивПроверкиВывода.Удалить(МассивПроверкиВывода.ВГраница());

НомерЭтапа = НомерЭтапа + 1;

КонецЦикла;
ТабличныйДокумент.Вывести(ОбластьПодвалТаблицы);

КонецЕсли;

// Вывести дополнительную информацию
//Если ЗначениеЗаполнено(ДанныеПечати.ДополнительнаяИнформация) Тогда

ОбластьМакета = Макет.ПолучитьОбласть("ДополнительнаяИнформация");
//Область.Параметры.Заполнить(ДанныеПечати);

//Дима
Если ТаблицаЭтапыОплаты.Количество() = 0 Тогда
ДатаПлатежа = '00010101';
ИначеЕсли ТаблицаЭтапыОплаты.Количество() = 1 Тогда
ДатаПлатежа = ТаблицаЭтапыОплаты[0].ДатаПлатежа;
Иначе
ДатаПлатежа = ТаблицаЭтапыОплаты[ТаблицаЭтапыОплаты.Количество()-1].ДатаПлатежа;
КонецЕсли;
Если ЗначениеЗаполнено(ДатаПлатежа) Тогда
СтруктураДанныхЗаголовок = Новый Структура;
НадписьСрокДействия = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Счет действителен до %1.'"), Формат(ДатаПлатежа, "ДЛФ=D")) + " ";
СтруктураДанныхЗаголовок.Вставить("СрокДействия", НадписьСрокДействия);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхЗаголовок);

КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьМакета);

//Дима//

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

ФормированиеПечатныхФорм.ВывестиФаксимилеВТабличныйДокумент(Макет, Область, ДанныеПечати.Организация, ПараметрыПечати);
МассивПроверкиВывода.Очистить();
МассивПроверкиВывода.Добавить(Область);
Если НЕ ТабличныйДокумент.ПроверитьВывод(МассивПроверкиВывода) Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабличныйДокумент.Вывести(Область);
           
КонецПроцедуры

Функция НовыеПараметрыСтрокиЭтапа()

СтруктураСтрокиЭтапа = Новый Структура;
СтруктураСтрокиЭтапа.Вставить("НомерСтроки", 0);
СтруктураСтрокиЭтапа.Вставить("ДатаПлатежа", '00010101');
СтруктураСтрокиЭтапа.Вставить("ПроцентПлатежа", 0);
СтруктураСтрокиЭтапа.Вставить("СуммаПлатежа", 0);
СтруктураСтрокиЭтапа.Вставить("ТекстНДС", "");
СтруктураСтрокиЭтапа.Вставить("ЭтоЗалогЗаТару", Ложь);

Возврат СтруктураСтрокиЭтапа;

КонецФункции

Процедура ПроверкаЗаполненияДокумента(ДанныеПечати, ТаблицаТовары, ТаблицаЭтапыОплаты, ШаблоныОшибок, Отказ);

Если НЕ (ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.СчетНаОплатуКлиенту")
И ТипЗнч(ДанныеПечати.ДокументОснование) = Тип("СправочникСсылка.ДоговорыКонтрагентов"))
И ТаблицаТовары <> Неопределено И ТаблицаТовары.Количество() = 0 Тогда
Если ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента") Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблоныОшибок.ЗаменяющиеТовары, ДанныеПечати.Ссылка), ДанныеПечати.Ссылка);
Иначе
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблоныОшибок.Товары, ДанныеПечати.Ссылка), ДанныеПечати.Ссылка);
КонецЕсли;
Отказ = Истина;
Возврат;
КонецЕсли;
Если ТаблицаЭтапыОплаты <> Неопределено И ТаблицаЭтапыОплаты.Количество() = 0 Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблоныОшибок.Этапы, ДанныеПечати.Ссылка), ДанныеПечати.Ссылка);
Отказ = Истина;
КонецЕсли;

КонецПроцедуры

Функция НужноПечататьМакет(КоллекцияПечатныхФорм, ИмяМакета) Экспорт

Возврат КоллекцияПечатныхФорм.Найти(ВРег(ИмяМакета), "ИмяВРЕГ") <> Неопределено;

КонецФункции

//Функция ВесДокументаВТоннах(дсДокумент, дсСчетНаОплатуВнешний = Неопределено) Экспорт
//Если ТипЗнч(дсДокумент) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
//        Запрос = Новый Запрос("ВЫБРАТЬ
//                              | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
//                              | РеализацияТоваровУслугТовары.Характеристика КАК Характеристика,
//                              | СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество
//                              |ИЗ
//                              | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
//                              |ГДЕ
//                              | РеализацияТоваровУслугТовары.Ссылка = &Ссылка
//                              | И РеализацияТоваровУслугТовары.СчетНаОплатуВнешний = &СчетНаОплатуВнешний
//                              |
//                              |СГРУППИРОВАТЬ ПО
//                              | РеализацияТоваровУслугТовары.Номенклатура,
//                              | РеализацияТоваровУслугТовары.Характеристика");
//        Запрос.УстановитьПараметр("Ссылка", дсДокумент);
//        Если ЗначениеЗаполнено(дсСчетНаОплатуВнешний) Тогда
//            Запрос.УстановитьПараметр("СчетНаОплатуВнешний", дсСчетНаОплатуВнешний);
//        Иначе
//            Запрос.Текст = СтрЗаменить(Запрос.Текст, "РеализацияТоваровУслугТовары.СчетНаОплатуВнешний = &СчетНаОплатуВнешний", "ИСТИНА");
//        КонецЕсли;
//        тзТовары = Запрос.Выполнить().Выгрузить();
//       
//    Иначе
//        тзТовары = дсДокумент.Товары.Выгрузить(, "Номенклатура, Характеристика, Количество");
//        тзТовары.Свернуть("Номенклатура, Характеристика", "Количество");
//    КонецЕсли;
//   
//    тзТовары.Колонки.Добавить("НомерСтроки",  ОбщегоНазначения.ОписаниеТипаЧисло(10, 0));
//    тзТовары.Колонки.Добавить("Вес",          ОбщегоНазначения.ОписаниеТипаЧисло(15, 3));
//    тзТовары.Колонки.Добавить("Объем",          ОбщегоНазначения.ОписаниеТипаЧисло(15, 3));
//    тзТовары.Колонки.Добавить("ЕдиницаИзмеренияВеса",    Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
//    тзТовары.Колонки.Добавить("ЕдиницаИзмеренияОбъема",    Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
//   
//    ПараметрыЗаполненияРеквизитов = Новый Структура;
//    ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьВес",Новый Структура("Номенклатура", "Вес"));
//    ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьОбъем",Новый Структура("Номенклатура", "Объем"));
//    ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура", "ЕдиницаИзмеренияВеса"));
//    ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура", "ЕдиницаИзмеренияОбъема"));
//    ПараметрыЗаполненияРеквизитов.Вставить("ПересчитатьВесОбъем");
//    НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(тзТовары, ПараметрыЗаполненияРеквизитов);
//   
//    ИтогоВес = 0;
//    Для Каждого стТовары из тзТовары Цикл
//        ИтогоВес = ИтогоВес + стТовары.КоличествоУпаковок * стТовары.ВесУпаковки;
//    КонецЦикла;
//   
//    ИтогоВес = ИтогоВес / 1000; // кг в тонны
//
//
// Возврат ИтогоВес;
//   
//КонецФункции
Это полный код

nvj84


МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(СтруктураОбъектов.Ключ);
ДанныеДляПечати = МенеджерОбъекта.ПолучитьДанныеДляПечатнойФормыСчетаНаОплату(ПараметрыПечати, СтруктураОбъектов.Значение);

Ставьте точку останова ниже и смотрите на что ссылается МенеджерОбъекта и там ищите ПолучитьДанныеДляПечатнойФормыСчетаНаОплату(для проверки можете и в найденных процедурах ставить точки чтобы убедиться что алгоритм идет именно этим путем). Там будет получение данных запросом. Не знаю можно ли малой кровью отделаться или можно как то получить данные для веса и объема в существующем запросе(с типовыми имел дел очень мало и там могут быть как какие то нюансы, так и обходные пути решения которые помогут решить эту задачу в 2 клика). В крайнем случае придется править запрос.
Опишите словами что хотите(есть такой то отчет, хочу добавить такие то поля там то и там то и они должны формироваться вот по таким правилам) и ждите ответов от знающих типовые. И далее оценивайте силы сможете сами сделать или проще найти исполнителя.

VID1234

Цитата: nvj84 от 13 дек 2019, 09:41

МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(СтруктураОбъектов.Ключ);
ДанныеДляПечати = МенеджерОбъекта.ПолучитьДанныеДляПечатнойФормыСчетаНаОплату(ПараметрыПечати, СтруктураОбъектов.Значение);

Ставьте точку останова ниже и смотрите на что ссылается МенеджерОбъекта и там ищите ПолучитьДанныеДляПечатнойФормыСчетаНаОплату(для проверки можете и в найденных процедурах ставить точки чтобы убедиться что алгоритм идет именно этим путем). Там будет получение данных запросом. Не знаю можно ли малой кровью отделаться или можно как то получить данные для веса и объема в существующем запросе(с типовыми имел дел очень мало и там могут быть как какие то нюансы, так и обходные пути решения которые помогут решить эту задачу в 2 клика). В крайнем случае придется править запрос.
Опишите словами что хотите(есть такой то отчет, хочу добавить такие то поля там то и там то и они должны формироваться вот по таким правилам) и ждите ответов от знающих типовые. И далее оценивайте силы сможете сами сделать или проще найти исполнителя.
Здравствуйте. Внешняя печатная форма счета на оплату, хочу добавить итоговый вес и объем товара который указан в этом счете, чтобы данные массы и объема брались из справочника где указывается вес товара, умножался на количество соответствующего товара в списке счета и выводился итог в любом месте - это не критично.

nvj84

В процедуре ДанныеДляПечатныхФормСчетаНаОплатуИзвещения в которой содержится запрос(вызывается из ПолучитьДанныеДляПечатнойФормыСчетаНаОплату). Расположенные в модуль менеджере документа СчетНаОплатуКлиенту. В последнем запросе добавил:

| ВЫБОР
| КОГДА Товары.Номенклатура.ВесЗнаменатель > 0
| ТОГДА Товары.КоличествоУпаковок * (Товары.Номенклатура.ВесЧислитель / Товары.Номенклатура.ВесЗнаменатель)
| ИНАЧЕ Товары.КоличествоУпаковок * Товары.Номенклатура.ВесЧислитель
| КОНЕЦ КАК Вес,
| ВЫБОР
| КОГДА Товары.Номенклатура.ОбъемЗнаменатель > 0
| ТОГДА Товары.КоличествоУпаковок * (Товары.Номенклатура.ОбъемЧислитель / Товары.Номенклатура.ОбъемЗнаменатель)
| ИНАЧЕ Товары.КоличествоУпаковок * Товары.Номенклатура.ОбъемЧислитель
| КОНЕЦ КАК Объем

В обработке в модуль менеджера в ЗаполнитьТабличныйДокументСчетаНаОплату:

ВыборкаТоварыВесОбъем = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать();
ОбщийВес = 0;
ОбщийОбъем = 0;
Пока ВыборкаТоварыВесОбъем.Следующий() Цикл
ОбщийВес = ОбщийВес + ВыборкаТоварыВесОбъем.Вес;
ОбщийОбъем = ОбщийОбъем + ВыборкаТоварыВесОбъем.Объем;
КонецЦикла;

И далее вывести где нужно ОбщийВес и ОбщийОбъем. При чем более чем уверен что на самом деле и вес и объем может правильно рассчитываться по более сложной схеме. Так же как мне кажется более правильно отдельным запросом сразу все рассчитать и к данным по шапке присоединить, а не в модуле потом до вычислять.

VID1234

Цитата: nvj84 от 16 дек 2019, 07:51
В процедуре ДанныеДляПечатныхФормСчетаНаОплатуИзвещения в которой содержится запрос(вызывается из ПолучитьДанныеДляПечатнойФормыСчетаНаОплату). Расположенные в модуль менеджере документа СчетНаОплатуКлиенту. В последнем запросе добавил:

| ВЫБОР
| КОГДА Товары.Номенклатура.ВесЗнаменатель > 0
| ТОГДА Товары.КоличествоУпаковок * (Товары.Номенклатура.ВесЧислитель / Товары.Номенклатура.ВесЗнаменатель)
| ИНАЧЕ Товары.КоличествоУпаковок * Товары.Номенклатура.ВесЧислитель
| КОНЕЦ КАК Вес,
| ВЫБОР
| КОГДА Товары.Номенклатура.ОбъемЗнаменатель > 0
| ТОГДА Товары.КоличествоУпаковок * (Товары.Номенклатура.ОбъемЧислитель / Товары.Номенклатура.ОбъемЗнаменатель)
| ИНАЧЕ Товары.КоличествоУпаковок * Товары.Номенклатура.ОбъемЧислитель
| КОНЕЦ КАК Объем

В обработке в модуль менеджера в ЗаполнитьТабличныйДокументСчетаНаОплату:

ВыборкаТоварыВесОбъем = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать();
ОбщийВес = 0;
ОбщийОбъем = 0;
Пока ВыборкаТоварыВесОбъем.Следующий() Цикл
ОбщийВес = ОбщийВес + ВыборкаТоварыВесОбъем.Вес;
ОбщийОбъем = ОбщийОбъем + ВыборкаТоварыВесОбъем.Объем;
КонецЦикла;

И далее вывести где нужно ОбщийВес и ОбщийОбъем. При чем более чем уверен что на самом деле и вес и объем может правильно рассчитываться по более сложной схеме. Так же как мне кажется более правильно отдельным запросом сразу все рассчитать и к данным по шапке присоединить, а не в модуле потом до вычислять.
Здравствуйте вставляю в ММ выходит это {Документ.СчетНаОплатуКлиенту.МодульМенеджера(1723,2)}: Ожидается ключевое слово 'КонецФункции' ('EndFunction')
   <<?>>|           ВЫБОР (Проверка: Сервер)
{Документ.СчетНаОплатуКлиенту.МодульМенеджера(1738,132)}: Обнаружено логическое завершение исходного текста модуля
   СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти", ПакетРезультатовЗапроса[ПакетРезультатовЗапроса.Количество() - 1]);<<?>> (Проверка: Сервер)
может не туда вставляю или еще что-то нужно поменять

nvj84

Делал в УТ 11.4.2.132. Вся функция:

Функция ДанныеДляПечатныхФормСчетаНаОплатуИзвещения(ПараметрыПечати, МассивОбъектов)

Если ПараметрыПечати <> Неопределено И ПараметрыПечати.Свойство("ОтображатьСкидки") Тогда
ОтображатьСкидки = ПараметрыПечати.ОтображатьСкидки;
Иначе
ОтображатьСкидки = (Константы.ОтображениеСкидокВПечатныхФормахДокументовПродажи.Получить()
<> Перечисления.ВариантыВыводаСкидокВПечатныхФормах.НеВыводитьСкидки);
КонецЕсли;

МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ОтветственныеЛицаСервер.СформироватьВременнуюТаблицуОтветственныхЛицДокументов(МассивОбъектов, МенеджерВременныхТаблиц);

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

Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Товары.Упаковка",
"Товары.Номенклатура"));

Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаНаименованиеЕдиницыИзмерения",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
"Наименование",
"Товары.Упаковка",
"Товары.Номенклатура"));

Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("ОтображатьСкидки", ОтображатьСкидки);

ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();

СтруктураДанныхДляПечати = Новый Структура;
СтруктураДанныхДляПечати.Вставить("РезультатПоШапке", ПакетРезультатовЗапроса[1]);
СтруктураДанныхДляПечати.Вставить("РезультатПоЭтапамОплаты", ПакетРезультатовЗапроса[2]);
СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти", ПакетРезультатовЗапроса[ПакетРезультатовЗапроса.Количество() - 1]);

Возврат СтруктураДанныхДляПечати;

КонецФункции


Похожие темы (5)

Рейтинг@Mail.ru

Поиск