Внешняя печатная форма выводит пустой макет
Сделал внешнюю печатную форму для документа Заказ поставщику, но при выводе на печать она остается пустой. т.е даже нету макета который я скопировал из документа, просто чистый лист показывает.
Перем мВалютаРегламентированногоУчета Экспорт;
Функция Печать () Экспорт
ТабДокумент = Новый ТабличныйДокумент();
Возврат ТабДокумент;
КонецФункции
// Функция формирует табличный документ с печатной формой заказа или счета,
// разработанного методистами
//
// Возвращаемое значение:
// Табличный документ - сформированная печатная форма
//
Функция ПечатьСчетаЗаказа(Тип)Экспорт
ВидОперации = СсылкаНаОбъект.ВидОперации;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст =
"ВЫБРАТЬ
| Номер,
| Дата,
| ДатаПоступления,
| ДоговорКонтрагента,
| Контрагент КАК Поставщик,
| Организация,
| СуммаДокумента,
| ВалютаДокумента,
| УчитыватьНДС,
| СуммаВключаетНДС
|ИЗ
| Документ.ЗаказПоставщику КАК ЗаказПоставщику
|
|ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент";
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
Запрос = Новый Запрос;
Макет = ПолучитьМакет("СчетЗаказ");
// Определим параметры запроса и табличного документа
// в зависимости от необходимости отображения артикула поставщика
Если Тип = "ЗаказПоДаннымПоставщика" Тогда
ВыводитьКоды = Истина;
ТекстКодАртикул = "Код";
Колонка = "Артикул" + Символы.ПС + "поставщика";
ОбластьШапки = Макет.ПолучитьОбласть("ШапкаСКодом");
ОбластьСтроки = Макет.ПолучитьОбласть("СтрокаСКодом");
Запрос.УстановитьПараметр("Контрагент", СсылкаНаОбъект.Контрагент);
ТекстПоляТовараДляТоваров = "
| ВЫБОР КОГДА (ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) ЕСТЬ NULL ИЛИ ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) = """") ТОГДА ВЫРАЗИТЬ (ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) ИНАЧЕ ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) КОНЕЦ КАК Товар,";
ТекстПоляТовараДляУслуг = "
| ВЫБОР КОГДА (ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) ЕСТЬ NULL ИЛИ ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) = """") ТОГДА ВЫРАЗИТЬ (ЗаказПоставщику.Номенклатура.НаименованиеПолное КАК Строка(1000)) ИНАЧЕ ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) КОНЕЦ КАК Товар,";
ТекстПоляАртикула = ",
| АртикулКонтрагента";
ТекстВыборкиАртикула = ",
| АртикулНоменклатурыКонтрагента КАК АртикулКонтрагента";
ТекстВыборкиНоменклатуры = ",
| ВЫРАЗИТЬ(НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) КАК НаименованиеКонтрагента";
ТекстИсточникАртикула = "
| ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
| ПО НоменклатураКонтрагентов.Номенклатура = ЗаказПоставщику.Номенклатура
| И НоменклатураКонтрагентов.ХарактеристикаНоменклатуры = ЗаказПоставщику.ХарактеристикаНоменклатуры
| И НоменклатураКонтрагентов.Контрагент = &Контрагент";
ТекстИсточникАртикулаБезХарактеристики = "
| ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
| ПО НоменклатураКонтрагентов.Номенклатура = ЗаказПоставщику.Номенклатура
| И НоменклатураКонтрагентов.Контрагент = &Контрагент";
ТекстГруппировкиАртикулаИНоменклатуры = ",
| АртикулНоменклатурыКонтрагента,
| ВЫРАЗИТЬ(НаименованиеНоменклатурыКонтрагента КАК Строка(1000))";
Иначе
ТекстПоляТовараДляТоваров = "
| ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар,";
СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("ЗаказПоставщику");
ТекстПоляТовараДляУслуг = "
| " + СтрокаВыборкиПоляСодержания + " КАК Товар,";
ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ВыводитьКоды = Истина;
Колонка = "Артикул";
ТекстКодАртикул = "Артикул";
ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ВыводитьКоды = Истина;
Колонка = "Код";
ТекстКодАртикул = "Код";
Иначе
ВыводитьКоды = Ложь;
Колонка = "";
ТекстКодАртикул = "Код";
КонецЕсли;
Если ВыводитьКоды Тогда
ОбластьШапки = Макет.ПолучитьОбласть("ШапкаСКодом");
ОбластьСтроки = Макет.ПолучитьОбласть("СтрокаСКодом");
Иначе
ОбластьШапки = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьСтроки = Макет.ПолучитьОбласть("Строка");
Конецесли;
ТекстПоляАртикула = "";
ТекстВыборкиАртикула = "";
ТекстИсточникАртикула = "";
ТекстГруппировкиАртикулаИНоменклатуры = "";
КонецЕсли;
Если ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Оборудование Тогда
ОбластьШапки.Параметры.Товар = "Товар / Оборудование";
ИначеЕсли ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Переработка Тогда
ОбластьШапки.Параметры.Товар = "Продукция";
Иначе
ОбластьШапки.Параметры.Товар = "Товары (работы, услуги)";
КонецЕсли;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст ="
|ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура," + ТекстПоляТовараДляТоваров + "
| ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.Цена,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.СуммаНДС,
| ВложенныйЗапрос.Характеристика,
| 1 КАК НомерТЧ,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| NULL КАК Серия" + ТекстПоляАртикула + "
|ИЗ
| (
| ВЫБРАТЬ
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.ЕдиницаИзмерения,
| ЗаказПоставщику.Цена КАК Цена,
| МИНИМУМ(ЗаказПоставщику.НомерСтроки) КАК НомерСтроки,
| СУММА(ЗаказПоставщику.Количество) КАК Количество,
| СУММА(ЗаказПоставщику.Сумма ) КАК Сумма,
| СУММА(ЗаказПоставщику.СуммаНДС ) КАК СуммаНДС,
| ЗаказПоставщику.ХарактеристикаНоменклатуры КАК Характеристика" + ТекстВыборкиАртикула + ТекстВыборкиНоменклатуры + "
| ИЗ
| Документ.ЗаказПоставщику.Оборудование КАК ЗаказПоставщику" + ТекстИсточникАртикула + "
|
| ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.ЕдиницаИзмерения,
| ЗаказПоставщику.Цена,
| ЗаказПоставщику.ХарактеристикаНоменклатуры" + ТекстГруппировкиАртикулаИНоменклатуры + "
| ) КАК ВложенныйЗапрос
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура," + ТекстПоляТовараДляТоваров + "
| ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.Цена,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.СуммаНДС,
| ВложенныйЗапрос.Характеристика,
| 2 КАК НомерТЧ,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| NULL КАК Серия" + ТекстПоляАртикула + "
|ИЗ
| (
| ВЫБРАТЬ
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.ЕдиницаИзмерения,
| ЗаказПоставщику.Цена КАК Цена,
| МИНИМУМ(ЗаказПоставщику.НомерСтроки) КАК НомерСтроки,
| СУММА(ЗаказПоставщику.Количество) КАК Количество,
| СУММА(ЗаказПоставщику.Сумма ) КАК Сумма,
| СУММА(ЗаказПоставщику.СуммаНДС ) КАК СуммаНДС,
| ЗаказПоставщику.ХарактеристикаНоменклатуры КАК Характеристика" + ТекстВыборкиАртикула + ТекстВыборкиНоменклатуры + "
| ИЗ
| Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщику" + ТекстИсточникАртикула + "
|
| ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.ЕдиницаИзмерения,
| ЗаказПоставщику.Цена,
| ЗаказПоставщику.ХарактеристикаНоменклатуры" + ТекстГруппировкиАртикулаИНоменклатуры + "
| ) КАК ВложенныйЗапрос
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗаказПоставщику.Номенклатура," + ТекстПоляТовараДляУслуг + "
| ЗаказПоставщику.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| ЗаказПоставщику.Количество,
| ЗаказПоставщику.Номенклатура.ЕдиницаХраненияОстатков,
| ЗаказПоставщику.Цена,
| ЗаказПоставщику.Сумма,
| ЗаказПоставщику.СуммаНДС,
| NULL,
| 3 КАК НомерТЧ,
| ЗаказПоставщику.НомерСтроки КАК НомерСтроки,
| NULL КАК Серия" + ТекстВыборкиАртикула + "
|
|ИЗ
| Документ.ЗаказПоставщику.Услуги КАК ЗаказПоставщику" + ТекстИсточникАртикулаБезХарактеристики + "
|
|ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура," + ТекстПоляТовараДляТоваров + "
| ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.Номенклатура.ЕдиницаХраненияОстатков.Представление КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.Цена,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.СуммаНДС,
| NULL,
| 4 КАК НомерТЧ,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| NULL КАК Серия" + ТекстПоляАртикула + "
|ИЗ
| (
| ВЫБРАТЬ
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.Цена КАК Цена,
| МИНИМУМ(ЗаказПоставщику.НомерСтроки) КАК НомерСтроки,
| СУММА(ЗаказПоставщику.Количество) КАК Количество,
| СУММА(ЗаказПоставщику.Сумма ) КАК Сумма,
| 0 КАК СуммаНДС" + ТекстВыборкиАртикула + ТекстВыборкиНоменклатуры + "
| ИЗ
| Документ.ЗаказПоставщику.ВозвратнаяТара КАК ЗаказПоставщику" + ТекстИсточникАртикулаБезХарактеристики + "
|
| ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.Цена" + ТекстГруппировкиАртикулаИНоменклатуры + "
| ) КАК ВложенныйЗапрос
|
|УПОРЯДОЧИТЬ ПО НомерТЧ ВОЗР, НомерСтроки ВОЗР
|";
ЗапросТовары = Запрос.Выполнить().Выгрузить();
ТабДокумент = Новый ТабличныйДокумент;
Если Тип = "ЗаказПоДаннымПоставщика" Тогда
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПоставщику_СчетЗаказПоДаннымПоставщик а";
Иначе
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПоставщику_СчетЗаказ";
КонецЕсли;
Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизаций(Шапка.Организация, Шапка.Дата,);
Руководитель = Руководители.Руководитель;
Бухгалтер = Руководители.ГлавныйБухгалтер;
// Выводим шапку накладной
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
Если ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Переработка Тогда
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Заказ поставщику (на переработку)");
Иначе
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Заказ поставщику");
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
ОбластьМакета.Параметры.Заполнить(Шапка);
Если ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Переработка Тогда
ОбластьМакета.Параметры.ТекстПоставщик = "Исполнитель:";
Иначе
ОбластьМакета.Параметры.ТекстПоставщик = "Поставщик:";
КонецЕсли;
ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.Дата), "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
Если ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Переработка Тогда
ОбластьМакета.Параметры.ТекстПокупатель = "Заказчик:";
Иначе
ОбластьМакета.Параметры.ТекстПокупатель = "Покупатель:";
КонецЕсли;
ОбластьМакета.Параметры.ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");;
ОбластьМакета.Параметры.Получатель = Шапка.Организация;
ТабДокумент.Вывести(ОбластьМакета);
// Вывести табличную часть
Если ВыводитьКоды Тогда
ОбластьШапки.Параметры.Колонка = Колонка;
КонецЕсли;
ТабДокумент.Вывести(ОбластьШапки);
Сумма = 0;
СуммаНДС = 0;
Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
Продолжить;
КонецЕсли;
ОбластьСтроки.Параметры.Заполнить(ВыборкаСтрокТовары);
ОбластьСтроки.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
ОбластьСтроки.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар) + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары)
+ ?(ВыборкаСтрокТовары.НомерТЧ = 4, " (возвратная тара)", "");
Если ВыводитьКоды Тогда
Если Тип = "ЗаказПоДаннымПоставщика" Тогда
ОбластьСтроки.Параметры.КодАртикул = ВыборкаСтрокТовары.АртикулКонтрагента;
Иначе
ОбластьСтроки.Параметры.КодАртикул = ВыборкаСтрокТовары.КодАртикул;
КонецЕсли;
КонецЕсли;
ТабДокумент.Вывести(ОбластьСтроки);
Сумма = Сумма + ВыборкаСтрокТовары.Сумма;
СуммаНДС = СуммаНДС + ВыборкаСтрокТовары.СуммаНДС;
КонецЦикла;
// Вывести Итого
ОбластьМакета = Макет.ПолучитьОбласть("Итого");
ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
ТабДокумент.Вывести(ОбластьМакета);
// Вывести ИтогоНДС
Если Шапка.УчитыватьНДС Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");
ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(ЗапросТовары.Итог("СуммаНДС"));
ОбластьМакета.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
// Вывести Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего наименований " + ЗапросТовары.Количество()
+ ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
ТабДокумент.Вывести(ОбластьМакета);
// Вывести подписи
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
ОбластьМакета.Параметры.Отпустил = "/"+ Руководитель + "/";
ОбластьМакета.Параметры.Получил = "/"+ Бухгалтер + "/";
ТабДокумент.Вывести(ОбластьМакета);
Возврат ТабДокумент;
КонецФункции // ПечатьСчетаЗаказа()
мВалютаРегламентированногоУчета = глЗначениеПеременной("ВалютаРегламентированногоУчета");
ПоказатьПрикрепленные файлы:
ВБ_ЗаказПоставщику.epf
По теме из базы знаний
- Продвинутая технология внешних печатных форм
- Создание внешних печатных форм под управляемым приложением с нуля
- Создание внешней печатной формы под УП с возможностью передачи параметров (для конфигураций на БСП)
- Конструктор внешних печатных форм NEW beta (обычные и управляемые приложения!)
- Внешние печатные формы. Розница 2, Розница 3
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4)Функция Печать () Экспорт
ТабДокумент = ПечатьСчетаЗаказа(Тип);
Возврат ТабДокумент;
КонецФункции
{ВнешняяОбработка.ВБ_ЗаказПоставщику.МодульОбъекта(9,34)}: Переменная не определена (Тип)
ТабДокумент = ПечатьСчетаЗаказа(<<?>>Тип); (Проверка: Толстый клиент (обычное приложение))
ТабДокумент = ПечатьСчетаЗаказа(Тип);
Возврат ТабДокумент;
КонецФункции
{ВнешняяОбработка.ВБ_ЗаказПоставщику.МодульОбъекта(9,34)}: Переменная не определена (Тип)
ТабДокумент = ПечатьСчетаЗаказа(<<?>>Тип); (Проверка: Толстый клиент (обычное приложение))
(8) Перем мВалютаРегламентированногоУчета Экспорт;
Функция Печать () Экспорт
Тип = "ЗаказПоставщику";
ТабДокумент = ПечатьСчетаЗаказа(Тип);
Возврат ТабДокумент;
КонецФункции
// Функция формирует табличный документ с печатной формой заказа или счета,
// разработанного методистами
//
// Возвращаемое значение:
// Табличный документ - сформированная печатная форма
//
Функция ПечатьСчетаЗаказа(Тип)Экспорт
ВидОперации = СсылкаНаОбъект.ВидОперации;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст =
"ВЫБРАТЬ
| Номер,
| Дата,
| ДатаПоступления,
| ДоговорКонтрагента,
| Контрагент КАК Поставщик,
| Организация,
| СуммаДокумента,
| ВалютаДокумента,
| УчитыватьНДС,
| СуммаВключаетНДС
|ИЗ
| Документ.ЗаказПоставщику КАК ЗаказПоставщику
|
|ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент";
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
Запрос = Новый Запрос;
Макет = ПолучитьМакет("СчетЗаказ");
// Определим параметры запроса и табличного документа
// в зависимости от необходимости отображения артикула поставщика
Если Тип = "ЗаказПоДаннымПоставщика" Тогда
ВыводитьКоды = Ложь;
ТекстКодАртикул = "Код";
Колонка = "Артикул" + Символы.ПС + "поставщика";
ОбластьШапки = Макет.ПолучитьОбласть("ШапкаСКодом");
ОбластьСтроки = Макет.ПолучитьОбласть("СтрокаСКодом");
Запрос.УстановитьПараметр("Контрагент", СсылкаНаОбъект.Контрагент);
ТекстПоляТовараДляТоваров = "
| ВЫБОР КОГДА (ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) ЕСТЬ NULL ИЛИ ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) = """") ТОГДА ВЫРАЗИТЬ (ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) ИНАЧЕ ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) КОНЕЦ КАК Товар,";
ТекстПоляТовараДляУслуг = "
| ВЫБОР КОГДА (ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) ЕСТЬ NULL ИЛИ ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) = """") ТОГДА ВЫРАЗИТЬ (ЗаказПоставщику.Номенклатура.НаименованиеПолное КАК Строка(1000)) ИНАЧЕ ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) КОНЕЦ КАК Товар,";
ТекстПоляАртикула = ",
| АртикулКонтрагента";
ТекстВыборкиАртикула = ",
| АртикулНоменклатурыКонтрагента КАК АртикулКонтрагента";
ТекстВыборкиНоменклатуры = ",
| ВЫРАЗИТЬ(НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) КАК НаименованиеКонтрагента";
ТекстИсточникАртикула = "
| ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
| ПО НоменклатураКонтрагентов.Номенклатура = ЗаказПоставщику.Номенклатура
| И НоменклатураКонтрагентов.ХарактеристикаНоменклатуры = ЗаказПоставщику.ХарактеристикаНоменклатуры
| И НоменклатураКонтрагентов.Контрагент = &Контрагент";
ТекстИсточникАртикулаБезХарактеристики = "
| ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
| ПО НоменклатураКонтрагентов.Номенклатура = ЗаказПоставщику.Номенклатура
| И НоменклатураКонтрагентов.Контрагент = &Контрагент";
ТекстГруппировкиАртикулаИНоменклатуры = ",
| АртикулНоменклатурыКонтрагента,
| ВЫРАЗИТЬ(НаименованиеНоменклатурыКонтрагента КАК Строка(1000))";
Иначе
ТекстПоляТовараДляТоваров = "
| ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар,";
СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("ЗаказПоставщику");
ТекстПоляТовараДляУслуг = "
| " + СтрокаВыборкиПоляСодержания + " КАК Товар,";
ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ВыводитьКоды = Истина;
Колонка = "Артикул";
ТекстКодАртикул = "Артикул";
ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ВыводитьКоды = Истина;
Колонка = "Код";
ТекстКодАртикул = "Код";
Иначе
ВыводитьКоды = Ложь;
Колонка = "";
ТекстКодАртикул = "Код";
КонецЕсли;
Если ВыводитьКоды Тогда
ОбластьШапки = Макет.ПолучитьОбласть("ШапкаСКодом");
ОбластьСтроки = Макет.ПолучитьОбласть("СтрокаСКодом");
Иначе
ОбластьШапки = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьСтроки = Макет.ПолучитьОбласть("Строка");
Конецесли;
ТекстПоляАртикула = "";
ТекстВыборкиАртикула = "";
ТекстИсточникАртикула = "";
ТекстГруппировкиАртикулаИНоменклатуры = "";
КонецЕсли;
Если ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Оборудование Тогда
ОбластьШапки.Параметры.Товар = "Товар / Оборудование";
ИначеЕсли ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Переработка Тогда
ОбластьШапки.Параметры.Товар = "Продукция";
Иначе
ОбластьШапки.Параметры.Товар = "Товары (работы, услуги)";
КонецЕсли;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст ="
|ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура," + ТекстПоляТовараДляТоваров + "
| ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.Цена,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.СуммаНДС,
| ВложенныйЗапрос.Характеристика,
| 1 КАК НомерТЧ,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| NULL КАК Серия" + ТекстПоляАртикула + "
|ИЗ
| (
| ВЫБРАТЬ
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.ЕдиницаИзмерения,
| ЗаказПоставщику.Цена КАК Цена,
| МИНИМУМ(ЗаказПоставщику.НомерСтроки) КАК НомерСтроки,
| СУММА(ЗаказПоставщику.Количество) КАК Количество,
| СУММА(ЗаказПоставщику.Сумма ) КАК Сумма,
| СУММА(ЗаказПоставщику.СуммаНДС ) КАК СуммаНДС,
| ЗаказПоставщику.ХарактеристикаНоменклатуры КАК Характеристика" + ТекстВыборкиАртикула + ТекстВыборкиНоменклатуры + "
| ИЗ
| Документ.ЗаказПоставщику.Оборудование КАК ЗаказПоставщику" + ТекстИсточникАртикула + "
|
| ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.ЕдиницаИзмерения,
| ЗаказПоставщику.Цена,
| ЗаказПоставщику.ХарактеристикаНоменклатуры" + ТекстГруппировкиАртикулаИНоменклатуры + "
| ) КАК ВложенныйЗапрос
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура," + ТекстПоляТовараДляТоваров + "
| ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.Цена,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.СуммаНДС,
| ВложенныйЗапрос.Характеристика,
| 2 КАК НомерТЧ,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| NULL КАК Серия" + ТекстПоляАртикула + "
|ИЗ
| (
| ВЫБРАТЬ
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.ЕдиницаИзмерения,
| ЗаказПоставщику.Цена КАК Цена,
| МИНИМУМ(ЗаказПоставщику.НомерСтроки) КАК НомерСтроки,
| СУММА(ЗаказПоставщику.Количество) КАК Количество,
| СУММА(ЗаказПоставщику.Сумма ) КАК Сумма,
| СУММА(ЗаказПоставщику.СуммаНДС ) КАК СуммаНДС,
| ЗаказПоставщику.ХарактеристикаНоменклатуры КАК Характеристика" + ТекстВыборкиАртикула + ТекстВыборкиНоменклатуры + "
| ИЗ
| Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщику" + ТекстИсточникАртикула + "
|
| ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.ЕдиницаИзмерения,
| ЗаказПоставщику.Цена,
| ЗаказПоставщику.ХарактеристикаНоменклатуры" + ТекстГруппировкиАртикулаИНоменклатуры + "
| ) КАК ВложенныйЗапрос
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗаказПоставщику.Номенклатура," + ТекстПоляТовараДляУслуг + "
| ЗаказПоставщику.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| ЗаказПоставщику.Количество,
| ЗаказПоставщику.Номенклатура.ЕдиницаХраненияОстатков,
| ЗаказПоставщику.Цена,
| ЗаказПоставщику.Сумма,
| ЗаказПоставщику.СуммаНДС,
| NULL,
| 3 КАК НомерТЧ,
| ЗаказПоставщику.НомерСтроки КАК НомерСтроки,
| NULL КАК Серия" + ТекстВыборкиАртикула + "
|
|ИЗ
| Документ.ЗаказПоставщику.Услуги КАК ЗаказПоставщику" + ТекстИсточникАртикулаБезХарактеристики + "
|
|ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура," + ТекстПоляТовараДляТоваров + "
| ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.Номенклатура.ЕдиницаХраненияОстатков.Представление КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.Цена,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.СуммаНДС,
| NULL,
| 4 КАК НомерТЧ,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| NULL КАК Серия" + ТекстПоляАртикула + "
|ИЗ
| (
| ВЫБРАТЬ
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.Цена КАК Цена,
| МИНИМУМ(ЗаказПоставщику.НомерСтроки) КАК НомерСтроки,
| СУММА(ЗаказПоставщику.Количество) КАК Количество,
| СУММА(ЗаказПоставщику.Сумма ) КАК Сумма,
| 0 КАК СуммаНДС" + ТекстВыборкиАртикула + ТекстВыборкиНоменклатуры + "
| ИЗ
| Документ.ЗаказПоставщику.ВозвратнаяТара КАК ЗаказПоставщику" + ТекстИсточникАртикулаБезХарактеристики + "
|
| ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.Цена" + ТекстГруппировкиАртикулаИНоменклатуры + "
| ) КАК ВложенныйЗапрос
|
|УПОРЯДОЧИТЬ ПО НомерТЧ ВОЗР, НомерСтроки ВОЗР
|";
ЗапросТовары = Запрос.Выполнить().Выгрузить();
ТабДокумент = Новый ТабличныйДокумент;
Если Тип = "ЗаказПоДаннымПоставщика" Тогда
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПоставщику_СчетЗаказПоДаннымПоставщик а";
Иначе
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПоставщику_СчетЗаказ";
КонецЕсли;
Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизаций(Шапка.Организация, Шапка.Дата,);
Руководитель = Руководители.Руководитель;
Бухгалтер = Руководители.ГлавныйБухгалтер;
// Выводим шапку накладной
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
Если ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Переработка Тогда
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Заказ поставщику (на переработку)");
Иначе
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Заказ поставщику");
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
ОбластьМакета.Параметры.Заполнить(Шапка);
Если ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Переработка Тогда
ОбластьМакета.Параметры.ТекстПоставщик = "Исполнитель:";
Иначе
ОбластьМакета.Параметры.ТекстПоставщик = "Поставщик:";
КонецЕсли;
ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.Дата), "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
Если ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Переработка Тогда
ОбластьМакета.Параметры.ТекстПокупатель = "Заказчик:";
Иначе
ОбластьМакета.Параметры.ТекстПокупатель = "Покупатель:";
КонецЕсли;
ОбластьМакета.Параметры.ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");;
ОбластьМакета.Параметры.Получатель = Шапка.Организация;
ТабДокумент.Вывести(ОбластьМакета);
// Вывести табличную часть
Если ВыводитьКоды Тогда
ОбластьШапки.Параметры.Колонка = Колонка;
КонецЕсли;
ТабДокумент.Вывести(ОбластьШапки);
Сумма = 0;
СуммаНДС = 0;
Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
Продолжить;
КонецЕсли;
ОбластьСтроки.Параметры.Заполнить(ВыборкаСтрокТовары);
ОбластьСтроки.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
ОбластьСтроки.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар) + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары)
+ ?(ВыборкаСтрокТовары.НомерТЧ = 4, " (возвратная тара)", "");
Если ВыводитьКоды Тогда
Если Тип = "ЗаказПоДаннымПоставщика" Тогда
ОбластьСтроки.Параметры.КодАртикул = ВыборкаСтрокТовары.АртикулКонтрагента;
Иначе
ОбластьСтроки.Параметры.КодАртикул = ВыборкаСтрокТовары.КодАртикул;
КонецЕсли;
КонецЕсли;
ТабДокумент.Вывести(ОбластьСтроки);
Сумма = Сумма + ВыборкаСтрокТовары.Сумма;
СуммаНДС = СуммаНДС + ВыборкаСтрокТовары.СуммаНДС;
КонецЦикла;
// Вывести Итого
ОбластьМакета = Макет.ПолучитьОбласть("Итого");
ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
ТабДокумент.Вывести(ОбластьМакета);
// Вывести ИтогоНДС
Если Шапка.УчитыватьНДС Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");
ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(ЗапросТовары.Итог("СуммаНДС"));
ОбластьМакета.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
// Вывести Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего наименований " + ЗапросТовары.Количество()
+ ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
ТабДокумент.Вывести(ОбластьМакета);
// Вывести подписи
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
//ОбластьМакета.Параметры.Отпустил = "/"+ Руководитель + "/";
//ОбластьМакета.Параметры.Получил = "/"+ Бухгалтер + "/";
ТабДокумент.Вывести(ОбластьМакета);
Возврат ТабДокумент;
КонецФункции // ПечатьСчетаЗаказа()
мВалютаРегламентированногоУчета = глЗначениеПеременной("ВалютаРегламентированногоУчета");
Функция Печать () Экспорт
Тип = "ЗаказПоставщику";
ТабДокумент = ПечатьСчетаЗаказа(Тип);
Возврат ТабДокумент;
КонецФункции
// Функция формирует табличный документ с печатной формой заказа или счета,
// разработанного методистами
//
// Возвращаемое значение:
// Табличный документ - сформированная печатная форма
//
Функция ПечатьСчетаЗаказа(Тип)Экспорт
ВидОперации = СсылкаНаОбъект.ВидОперации;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст =
"ВЫБРАТЬ
| Номер,
| Дата,
| ДатаПоступления,
| ДоговорКонтрагента,
| Контрагент КАК Поставщик,
| Организация,
| СуммаДокумента,
| ВалютаДокумента,
| УчитыватьНДС,
| СуммаВключаетНДС
|ИЗ
| Документ.ЗаказПоставщику КАК ЗаказПоставщику
|
|ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент";
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
Запрос = Новый Запрос;
Макет = ПолучитьМакет("СчетЗаказ");
// Определим параметры запроса и табличного документа
// в зависимости от необходимости отображения артикула поставщика
Если Тип = "ЗаказПоДаннымПоставщика" Тогда
ВыводитьКоды = Ложь;
ТекстКодАртикул = "Код";
Колонка = "Артикул" + Символы.ПС + "поставщика";
ОбластьШапки = Макет.ПолучитьОбласть("ШапкаСКодом");
ОбластьСтроки = Макет.ПолучитьОбласть("СтрокаСКодом");
Запрос.УстановитьПараметр("Контрагент", СсылкаНаОбъект.Контрагент);
ТекстПоляТовараДляТоваров = "
| ВЫБОР КОГДА (ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) ЕСТЬ NULL ИЛИ ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) = """") ТОГДА ВЫРАЗИТЬ (ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) ИНАЧЕ ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) КОНЕЦ КАК Товар,";
ТекстПоляТовараДляУслуг = "
| ВЫБОР КОГДА (ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) ЕСТЬ NULL ИЛИ ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) = """") ТОГДА ВЫРАЗИТЬ (ЗаказПоставщику.Номенклатура.НаименованиеПолное КАК Строка(1000)) ИНАЧЕ ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) КОНЕЦ КАК Товар,";
ТекстПоляАртикула = ",
| АртикулКонтрагента";
ТекстВыборкиАртикула = ",
| АртикулНоменклатурыКонтрагента КАК АртикулКонтрагента";
ТекстВыборкиНоменклатуры = ",
| ВЫРАЗИТЬ(НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) КАК НаименованиеКонтрагента";
ТекстИсточникАртикула = "
| ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
| ПО НоменклатураКонтрагентов.Номенклатура = ЗаказПоставщику.Номенклатура
| И НоменклатураКонтрагентов.ХарактеристикаНоменклатуры = ЗаказПоставщику.ХарактеристикаНоменклатуры
| И НоменклатураКонтрагентов.Контрагент = &Контрагент";
ТекстИсточникАртикулаБезХарактеристики = "
| ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
| ПО НоменклатураКонтрагентов.Номенклатура = ЗаказПоставщику.Номенклатура
| И НоменклатураКонтрагентов.Контрагент = &Контрагент";
ТекстГруппировкиАртикулаИНоменклатуры = ",
| АртикулНоменклатурыКонтрагента,
| ВЫРАЗИТЬ(НаименованиеНоменклатурыКонтрагента КАК Строка(1000))";
Иначе
ТекстПоляТовараДляТоваров = "
| ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар,";
СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("ЗаказПоставщику");
ТекстПоляТовараДляУслуг = "
| " + СтрокаВыборкиПоляСодержания + " КАК Товар,";
ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ВыводитьКоды = Истина;
Колонка = "Артикул";
ТекстКодАртикул = "Артикул";
ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ВыводитьКоды = Истина;
Колонка = "Код";
ТекстКодАртикул = "Код";
Иначе
ВыводитьКоды = Ложь;
Колонка = "";
ТекстКодАртикул = "Код";
КонецЕсли;
Если ВыводитьКоды Тогда
ОбластьШапки = Макет.ПолучитьОбласть("ШапкаСКодом");
ОбластьСтроки = Макет.ПолучитьОбласть("СтрокаСКодом");
Иначе
ОбластьШапки = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьСтроки = Макет.ПолучитьОбласть("Строка");
Конецесли;
ТекстПоляАртикула = "";
ТекстВыборкиАртикула = "";
ТекстИсточникАртикула = "";
ТекстГруппировкиАртикулаИНоменклатуры = "";
КонецЕсли;
Если ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Оборудование Тогда
ОбластьШапки.Параметры.Товар = "Товар / Оборудование";
ИначеЕсли ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Переработка Тогда
ОбластьШапки.Параметры.Товар = "Продукция";
Иначе
ОбластьШапки.Параметры.Товар = "Товары (работы, услуги)";
КонецЕсли;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст ="
|ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура," + ТекстПоляТовараДляТоваров + "
| ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.Цена,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.СуммаНДС,
| ВложенныйЗапрос.Характеристика,
| 1 КАК НомерТЧ,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| NULL КАК Серия" + ТекстПоляАртикула + "
|ИЗ
| (
| ВЫБРАТЬ
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.ЕдиницаИзмерения,
| ЗаказПоставщику.Цена КАК Цена,
| МИНИМУМ(ЗаказПоставщику.НомерСтроки) КАК НомерСтроки,
| СУММА(ЗаказПоставщику.Количество) КАК Количество,
| СУММА(ЗаказПоставщику.Сумма ) КАК Сумма,
| СУММА(ЗаказПоставщику.СуммаНДС ) КАК СуммаНДС,
| ЗаказПоставщику.ХарактеристикаНоменклатуры КАК Характеристика" + ТекстВыборкиАртикула + ТекстВыборкиНоменклатуры + "
| ИЗ
| Документ.ЗаказПоставщику.Оборудование КАК ЗаказПоставщику" + ТекстИсточникАртикула + "
|
| ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.ЕдиницаИзмерения,
| ЗаказПоставщику.Цена,
| ЗаказПоставщику.ХарактеристикаНоменклатуры" + ТекстГруппировкиАртикулаИНоменклатуры + "
| ) КАК ВложенныйЗапрос
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура," + ТекстПоляТовараДляТоваров + "
| ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.Цена,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.СуммаНДС,
| ВложенныйЗапрос.Характеристика,
| 2 КАК НомерТЧ,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| NULL КАК Серия" + ТекстПоляАртикула + "
|ИЗ
| (
| ВЫБРАТЬ
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.ЕдиницаИзмерения,
| ЗаказПоставщику.Цена КАК Цена,
| МИНИМУМ(ЗаказПоставщику.НомерСтроки) КАК НомерСтроки,
| СУММА(ЗаказПоставщику.Количество) КАК Количество,
| СУММА(ЗаказПоставщику.Сумма ) КАК Сумма,
| СУММА(ЗаказПоставщику.СуммаНДС ) КАК СуммаНДС,
| ЗаказПоставщику.ХарактеристикаНоменклатуры КАК Характеристика" + ТекстВыборкиАртикула + ТекстВыборкиНоменклатуры + "
| ИЗ
| Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщику" + ТекстИсточникАртикула + "
|
| ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.ЕдиницаИзмерения,
| ЗаказПоставщику.Цена,
| ЗаказПоставщику.ХарактеристикаНоменклатуры" + ТекстГруппировкиАртикулаИНоменклатуры + "
| ) КАК ВложенныйЗапрос
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗаказПоставщику.Номенклатура," + ТекстПоляТовараДляУслуг + "
| ЗаказПоставщику.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| ЗаказПоставщику.Количество,
| ЗаказПоставщику.Номенклатура.ЕдиницаХраненияОстатков,
| ЗаказПоставщику.Цена,
| ЗаказПоставщику.Сумма,
| ЗаказПоставщику.СуммаНДС,
| NULL,
| 3 КАК НомерТЧ,
| ЗаказПоставщику.НомерСтроки КАК НомерСтроки,
| NULL КАК Серия" + ТекстВыборкиАртикула + "
|
|ИЗ
| Документ.ЗаказПоставщику.Услуги КАК ЗаказПоставщику" + ТекстИсточникАртикулаБезХарактеристики + "
|
|ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура," + ТекстПоляТовараДляТоваров + "
| ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.Номенклатура.ЕдиницаХраненияОстатков.Представление КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.Цена,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.СуммаНДС,
| NULL,
| 4 КАК НомерТЧ,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| NULL КАК Серия" + ТекстПоляАртикула + "
|ИЗ
| (
| ВЫБРАТЬ
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.Цена КАК Цена,
| МИНИМУМ(ЗаказПоставщику.НомерСтроки) КАК НомерСтроки,
| СУММА(ЗаказПоставщику.Количество) КАК Количество,
| СУММА(ЗаказПоставщику.Сумма ) КАК Сумма,
| 0 КАК СуммаНДС" + ТекстВыборкиАртикула + ТекстВыборкиНоменклатуры + "
| ИЗ
| Документ.ЗаказПоставщику.ВозвратнаяТара КАК ЗаказПоставщику" + ТекстИсточникАртикулаБезХарактеристики + "
|
| ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.Цена" + ТекстГруппировкиАртикулаИНоменклатуры + "
| ) КАК ВложенныйЗапрос
|
|УПОРЯДОЧИТЬ ПО НомерТЧ ВОЗР, НомерСтроки ВОЗР
|";
ЗапросТовары = Запрос.Выполнить().Выгрузить();
ТабДокумент = Новый ТабличныйДокумент;
Если Тип = "ЗаказПоДаннымПоставщика" Тогда
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПоставщику_СчетЗаказПоДаннымПоставщик
Иначе
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПоставщику_СчетЗаказ";
КонецЕсли;
Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизаций(Шапка.Организация, Шапка.Дата,);
Руководитель = Руководители.Руководитель;
Бухгалтер = Руководители.ГлавныйБухгалтер;
// Выводим шапку накладной
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
Если ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Переработка Тогда
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Заказ поставщику (на переработку)");
Иначе
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Заказ поставщику");
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
ОбластьМакета.Параметры.Заполнить(Шапка);
Если ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Переработка Тогда
ОбластьМакета.Параметры.ТекстПоставщик = "Исполнитель:";
Иначе
ОбластьМакета.Параметры.ТекстПоставщик = "Поставщик:";
КонецЕсли;
ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.Дата), "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
Если ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Переработка Тогда
ОбластьМакета.Параметры.ТекстПокупатель = "Заказчик:";
Иначе
ОбластьМакета.Параметры.ТекстПокупатель = "Покупатель:";
КонецЕсли;
ОбластьМакета.Параметры.ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");;
ОбластьМакета.Параметры.Получатель = Шапка.Организация;
ТабДокумент.Вывести(ОбластьМакета);
// Вывести табличную часть
Если ВыводитьКоды Тогда
ОбластьШапки.Параметры.Колонка = Колонка;
КонецЕсли;
ТабДокумент.Вывести(ОбластьШапки);
Сумма = 0;
СуммаНДС = 0;
Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
Продолжить;
КонецЕсли;
ОбластьСтроки.Параметры.Заполнить(ВыборкаСтрокТовары);
ОбластьСтроки.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
ОбластьСтроки.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар) + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары)
+ ?(ВыборкаСтрокТовары.НомерТЧ = 4, " (возвратная тара)", "");
Если ВыводитьКоды Тогда
Если Тип = "ЗаказПоДаннымПоставщика" Тогда
ОбластьСтроки.Параметры.КодАртикул = ВыборкаСтрокТовары.АртикулКонтрагента;
Иначе
ОбластьСтроки.Параметры.КодАртикул = ВыборкаСтрокТовары.КодАртикул;
КонецЕсли;
КонецЕсли;
ТабДокумент.Вывести(ОбластьСтроки);
Сумма = Сумма + ВыборкаСтрокТовары.Сумма;
СуммаНДС = СуммаНДС + ВыборкаСтрокТовары.СуммаНДС;
КонецЦикла;
// Вывести Итого
ОбластьМакета = Макет.ПолучитьОбласть("Итого");
ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
ТабДокумент.Вывести(ОбластьМакета);
// Вывести ИтогоНДС
Если Шапка.УчитыватьНДС Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");
ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(ЗапросТовары.Итог("СуммаНДС"));
ОбластьМакета.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
// Вывести Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего наименований " + ЗапросТовары.Количество()
+ ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
ТабДокумент.Вывести(ОбластьМакета);
// Вывести подписи
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
//ОбластьМакета.Параметры.Отпустил = "/"+ Руководитель + "/";
//ОбластьМакета.Параметры.Получил = "/"+ Бухгалтер + "/";
ТабДокумент.Вывести(ОбластьМакета);
Возврат ТабДокумент;
КонецФункции // ПечатьСчетаЗаказа()
мВалютаРегламентированногоУчета = глЗначениеПеременной("ВалютаРегламентированногоУчета");
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот