1. Создаем новую внешнюю обработку и указываем сведения в модуле объекта:
Функция СведенияОВнешнейОбработке() Экспорт
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг");
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "печать Расходная накладная по цене Розничная");
ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
ПараметрыРегистрации.Вставить("Версия", "1.1");
ПараметрыРегистрации.Вставить("Информация", "Печатная Форма Расходная накладная по цене Розничная v1.1");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, "Расходная накладная по цене <Розничная>",
"ПФ_MXL_Накладная", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
//
2. Создаём процедуру Печать
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"ПФ_MXL_Накладная",
"Накладная (внешняя) по Розничная",
СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати));
КонецПроцедуры // Печать()
3. Копируем макет "ПФ_MXL_Накладная" из РТУ
4. Создаём функцию "СформироватьПечатнуюФорму", туда из Модуля менеджера РТУ вставляем тело функции ПечатьДокумента, модифицируем запрос (подставляем цену "Розничная", в пропорции считаем НДС)
Функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати) Экспорт
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Накладная";
ДополнительнаяКолонкаПечатныхФормДокументов = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если НЕ ЗначениеЗаполнено(ДополнительнаяКолонкаПечатныхФормДокументов) Тогда
ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить;
КонецЕсли;
ВыводитьКоды = ДополнительнаяКолонкаПечатныхФормДокументов <> Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить;
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("ДополнительнаяКолонкаПечатныхФормДокументов", ДополнительнаяКолонкаПечатныхФормДокументов);
Запрос.Текст =
"ВЫБРАТЬ
| ДокументРеализацияТоваровУслуг.Ссылка КАК Ссылка,
| ДокументРеализацияТоваровУслуг.Номер КАК Номер,
| ДокументРеализацияТоваровУслуг.Дата КАК Дата,
| ДокументРеализацияТоваровУслуг.ДоговорКонтрагента КАК ДоговорКонтрагента,
| ДокументРеализацияТоваровУслуг.ДоговорКонтрагента.ГосударственныйКонтракт.Код КАК ГосударственныйКонтракт,
| ДокументРеализацияТоваровУслуг.Контрагент КАК Получатель,
| ДокументРеализацияТоваровУслуг.Организация КАК Организация,
| ДокументРеализацияТоваровУслуг.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
| ДокументРеализацияТоваровУслуг.Организация КАК Поставщик,
| ДокументРеализацияТоваровУслуг.Ссылка.Склад КАК Склад,
| ДокументРеализацияТоваровУслуг.СуммаДокумента КАК СуммаДокумента,
| ДокументРеализацияТоваровУслуг.ВалютаДокумента КАК ВалютаДокумента,
| ДокументРеализацияТоваровУслуг.СуммаВключаетНДС КАК СуммаВключаетНДС,
| ДокументРеализацияТоваровУслуг.ОтпускПроизвел КАК ОтпускПроизвел,
| РеализацияТоваровУслуг.Номенклатура КАК Номенклатура,
| РеализацияТоваровУслуг.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| РеализацияТоваровУслуг.Цена КАК Цена,
| РеализацияТоваровУслуг.СтавкаНДС КАК СтавкаНДС,
| РеализацияТоваровУслуг.СтранаПроисхождения КАК СтранаПроисхождения,
| РеализацияТоваровУслуг.НомерГТД КАК НомерГТД,
| СУММА(РеализацияТоваровУслуг.Количество) КАК Количество,
| СУММА(РеализацияТоваровУслуг.КоличествоМест) КАК КоличествоМест,
| СУММА(РеализацияТоваровУслуг.Сумма) КАК Сумма,
| СУММА(РеализацияТоваровУслуг.СуммаНДС) КАК СуммаНДС,
| МИНИМУМ(РеализацияТоваровУслуг.НомерСтроки) КАК НомерСтроки
|ПОМЕСТИТЬ ВТ_ВложенныйЗапросПоТоварам
|ИЗ
| Документ.РеализацияТоваровУслуг КАК ДокументРеализацияТоваровУслуг
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
| ПО (РеализацияТоваровУслуг.Ссылка = ДокументРеализацияТоваровУслуг.Ссылка)
|ГДЕ
| ДокументРеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
|
|СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслуг.Номенклатура,
| РеализацияТоваровУслуг.ЕдиницаИзмерения,
| РеализацияТоваровУслуг.Цена,
| РеализацияТоваровУслуг.СтавкаНДС,
| РеализацияТоваровУслуг.СтранаПроисхождения,
| РеализацияТоваровУслуг.НомерГТД,
| ДокументРеализацияТоваровУслуг.Ссылка,
| ДокументРеализацияТоваровУслуг.Номер,
| ДокументРеализацияТоваровУслуг.Дата,
| ДокументРеализацияТоваровУслуг.ДоговорКонтрагента,
| ДокументРеализацияТоваровУслуг.Контрагент,
| ДокументРеализацияТоваровУслуг.Организация,
| ДокументРеализацияТоваровУслуг.ПодразделениеОрганизации,
| ДокументРеализацияТоваровУслуг.СуммаДокумента,
| ДокументРеализацияТоваровУслуг.ВалютаДокумента,
| ДокументРеализацияТоваровУслуг.СуммаВключаетНДС,
| ДокументРеализацияТоваровУслуг.Ссылка.Склад,
| ДокументРеализацияТоваровУслуг.ОтпускПроизвел,
| ДокументРеализацияТоваровУслуг.ДоговорКонтрагента.ГосударственныйКонтракт.Код,
| ДокументРеализацияТоваровУслуг.Организация
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВложенныйЗапросПоТоварам.Ссылка КАК Ссылка,
| ВложенныйЗапросПоТоварам.Номер КАК Номер,
| ВложенныйЗапросПоТоварам.Дата КАК Дата,
| ВложенныйЗапросПоТоварам.ДоговорКонтрагента КАК ДоговорКонтрагента,
| ВложенныйЗапросПоТоварам.Получатель КАК Получатель,
| ВложенныйЗапросПоТоварам.Организация КАК Организация,
| ВложенныйЗапросПоТоварам.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
| ВложенныйЗапросПоТоварам.Организация КАК Поставщик,
| ВложенныйЗапросПоТоварам.Ссылка.Склад КАК Склад,
| ВложенныйЗапросПоТоварам.Ссылка.ОтпускПроизвел КАК ОтпускПроизвел,
| ВложенныйЗапросПоТоварам.СуммаДокумента КАК СуммаДокумента,
| ВложенныйЗапросПоТоварам.ВалютаДокумента КАК ВалютаДокумента,
| ВложенныйЗапросПоТоварам.СуммаВключаетНДС КАК СуммаВключаетНДС,
| ВложенныйЗапросПоТоварам.Номенклатура КАК Номенклатура,
| ВложенныйЗапросПоТоварам.Номенклатура.НаименованиеПолное КАК Товар,
| ВЫБОР
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
| ТОГДА ВложенныйЗапросПоТоварам.Номенклатура.Артикул
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
| ТОГДА ВложенныйЗапросПоТоварам.Номенклатура.Код
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить)
| ТОГДА """"
| КОНЕЦ КАК Артикул,
| ВложенныйЗапросПоТоварам.Количество КАК Количество,
| ВложенныйЗапросПоТоварам.КоличествоМест КАК КоличествоМест,
| ВложенныйЗапросПоТоварам.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ВложенныйЗапросПоТоварам.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаХранения,
| ВложенныйЗапросПоТоварам.Цена КАК Цена,
| ВложенныйЗапросПоТоварам.Сумма КАК Сумма,
| ВложенныйЗапросПоТоварам.СуммаНДС КАК СуммаНДС,
| ВложенныйЗапросПоТоварам.СтранаПроисхождения КАК СтранаПроисхождения,
| ВложенныйЗапросПоТоварам.НомерГТД КАК НомерГТД,
| ВложенныйЗапросПоТоварам.НомерСтроки КАК НомерСтроки,
| 1 КАК ID,
| NULL КАК Номенклатура1,
| NULL КАК Номенклатура2
|ПОМЕСТИТЬ ВТ_ОригинальныйЗапрос
|ИЗ
| ВТ_ВложенныйЗапросПоТоварам КАК ВложенныйЗапросПоТоварам
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка,
| РеализацияТоваровУслуг.Ссылка.Номер,
| РеализацияТоваровУслуг.Ссылка.Дата,
| РеализацияТоваровУслуг.Ссылка.ДоговорКонтрагента,
| РеализацияТоваровУслуг.Ссылка.Контрагент,
| РеализацияТоваровУслуг.Ссылка.Организация,
| РеализацияТоваровУслуг.Ссылка.ПодразделениеОрганизации,
| РеализацияТоваровУслуг.Ссылка.Организация,
| РеализацияТоваровУслуг.Ссылка.Склад,
| РеализацияТоваровУслуг.Ссылка.ОтпускПроизвел,
| РеализацияТоваровУслуг.Ссылка.СуммаДокумента,
| РеализацияТоваровУслуг.Ссылка.ВалютаДокумента,
| РеализацияТоваровУслуг.Ссылка.СуммаВключаетНДС,
| РеализацияТоваровУслуг.Номенклатура,
| РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное,
| ВЫБОР
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
| ТОГДА РеализацияТоваровУслуг.Номенклатура.Артикул
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
| ТОГДА РеализацияТоваровУслуг.Номенклатура.Код
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить)
| ТОГДА """"
| КОНЕЦ,
| РеализацияТоваровУслуг.Количество,
| NULL,
| NULL,
| РеализацияТоваровУслуг.Номенклатура.ЕдиницаИзмерения,
| РеализацияТоваровУслуг.Цена,
| РеализацияТоваровУслуг.Сумма,
| 0,
| NULL,
| NULL,
| РеализацияТоваровУслуг.НомерСтроки,
| 2,
| NULL,
| NULL
|ИЗ
| Документ.РеализацияТоваровУслуг.ВозвратнаяТара КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка,
| РеализацияТоваровУслуг.Ссылка.Номер,
| РеализацияТоваровУслуг.Ссылка.Дата,
| РеализацияТоваровУслуг.Ссылка.ДоговорКонтрагента,
| РеализацияТоваровУслуг.Ссылка.Контрагент,
| РеализацияТоваровУслуг.Ссылка.Организация,
| РеализацияТоваровУслуг.Ссылка.ПодразделениеОрганизации,
| РеализацияТоваровУслуг.Ссылка.Организация,
| РеализацияТоваровУслуг.Ссылка.Склад,
| РеализацияТоваровУслуг.Ссылка.ОтпускПроизвел,
| РеализацияТоваровУслуг.Ссылка.СуммаДокумента,
| РеализацияТоваровУслуг.Ссылка.ВалютаДокумента,
| РеализацияТоваровУслуг.Ссылка.СуммаВключаетНДС,
| РеализацияТоваровУслуг.Номенклатура,
| ВЫБОР
| КОГДА НЕ РеализацияТоваровУслуг.Содержание ПОДОБНО """"
| ТОГДА РеализацияТоваровУслуг.Содержание
| КОГДА НЕ РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное ПОДОБНО """"
| ТОГДА РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное
| ИНАЧЕ РеализацияТоваровУслуг.Номенклатура.Наименование
| КОНЕЦ,
| ВЫБОР
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
| ТОГДА РеализацияТоваровУслуг.Номенклатура.Артикул
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
| ТОГДА РеализацияТоваровУслуг.Номенклатура.Код
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить)
| ТОГДА """"
| КОНЕЦ,
| РеализацияТоваровУслуг.Количество,
| NULL,
| NULL,
| РеализацияТоваровУслуг.Номенклатура.ЕдиницаИзмерения,
| РеализацияТоваровУслуг.Цена,
| РеализацияТоваровУслуг.Сумма,
| РеализацияТоваровУслуг.СуммаНДС,
| NULL,
| NULL,
| РеализацияТоваровУслуг.НомерСтроки,
| 3,
| ВЫБОР
| КОГДА НЕ РеализацияТоваровУслуг.Содержание ПОДОБНО """"
| ТОГДА РеализацияТоваровУслуг.Содержание
| КОГДА НЕ РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное ПОДОБНО """"
| ТОГДА РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное
| ИНАЧЕ РеализацияТоваровУслуг.Номенклатура.Наименование
| КОНЕЦ,
| NULL
|ИЗ
| Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка,
| РеализацияТоваровУслуг.Ссылка.Номер,
| РеализацияТоваровУслуг.Ссылка.Дата,
| РеализацияТоваровУслуг.Ссылка.ДоговорКонтрагента,
| РеализацияТоваровУслуг.Ссылка.Контрагент,
| РеализацияТоваровУслуг.Ссылка.Организация,
| РеализацияТоваровУслуг.Ссылка.ПодразделениеОрганизации,
| РеализацияТоваровУслуг.Ссылка.Организация,
| РеализацияТоваровУслуг.Ссылка.Склад,
| РеализацияТоваровУслуг.Ссылка.ОтпускПроизвел,
| РеализацияТоваровУслуг.Ссылка.СуммаДокумента,
| РеализацияТоваровУслуг.Ссылка.ВалютаДокумента,
| РеализацияТоваровУслуг.Ссылка.СуммаВключаетНДС,
| РеализацияТоваровУслуг.Номенклатура,
| ВЫБОР
| КОГДА НЕ РеализацияТоваровУслуг.Содержание ПОДОБНО """"
| ТОГДА РеализацияТоваровУслуг.Содержание
| КОГДА НЕ РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное ПОДОБНО """"
| ТОГДА РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное
| ИНАЧЕ РеализацияТоваровУслуг.Номенклатура.Наименование
| КОНЕЦ,
| ВЫБОР
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
| ТОГДА РеализацияТоваровУслуг.Номенклатура.Артикул
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
| ТОГДА РеализацияТоваровУслуг.Номенклатура.Код
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить)
| ТОГДА """"
| КОНЕЦ,
| РеализацияТоваровУслуг.Количество,
| NULL,
| NULL,
| РеализацияТоваровУслуг.Номенклатура.ЕдиницаИзмерения,
| РеализацияТоваровУслуг.Цена,
| РеализацияТоваровУслуг.Сумма,
| РеализацияТоваровУслуг.СуммаНДС,
| NULL,
| NULL,
| РеализацияТоваровУслуг.НомерСтроки,
| 4,
| NULL,
| ВЫБОР
| КОГДА НЕ РеализацияТоваровУслуг.Содержание ПОДОБНО """"
| ТОГДА РеализацияТоваровУслуг.Содержание
| КОГДА НЕ РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное ПОДОБНО """"
| ТОГДА РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное
| ИНАЧЕ РеализацияТоваровУслуг.Номенклатура.Наименование
| КОНЕЦ
|ИЗ
| Документ.РеализацияТоваровУслуг.АгентскиеУслуги КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ_ОригинальныйЗапрос.Ссылка КАК Ссылка,
| ВТ_ОригинальныйЗапрос.Номер КАК Номер,
| ВТ_ОригинальныйЗапрос.Дата КАК Дата,
| ВТ_ОригинальныйЗапрос.ДоговорКонтрагента КАК ДоговорКонтрагента,
| ВТ_ОригинальныйЗапрос.Получатель КАК Получатель,
| ВТ_ОригинальныйЗапрос.Организация КАК Организация,
| ВТ_ОригинальныйЗапрос.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
| ВТ_ОригинальныйЗапрос.Поставщик КАК Поставщик,
| ВТ_ОригинальныйЗапрос.Склад КАК Склад,
| ВТ_ОригинальныйЗапрос.ОтпускПроизвел КАК ОтпускПроизвел,
| ВТ_ОригинальныйЗапрос.СуммаДокумента КАК СуммаДокумента,
| ВТ_ОригинальныйЗапрос.ВалютаДокумента КАК ВалютаДокумента,
| ВТ_ОригинальныйЗапрос.СуммаВключаетНДС КАК СуммаВключаетНДС,
| ВТ_ОригинальныйЗапрос.Товар КАК Товар,
| ВТ_ОригинальныйЗапрос.Артикул КАК Артикул,
| ВТ_ОригинальныйЗапрос.Количество КАК Количество,
| ВТ_ОригинальныйЗапрос.КоличествоМест КАК КоличествоМест,
| ВТ_ОригинальныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ВТ_ОригинальныйЗапрос.ЕдиницаХранения КАК ЕдиницаХранения,
| ВТ_ОригинальныйЗапрос.Номенклатура КАК Номенклатура,
| ВТ_ОригинальныйЗапрос.Цена КАК ЦенаСтарая,
| ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
| ВТ_ОригинальныйЗапрос.Сумма КАК СуммаСтарая,
| ВТ_ОригинальныйЗапрос.СуммаНДС КАК СуммаНДССтарая,
| ВТ_ОригинальныйЗапрос.СтранаПроисхождения КАК СтранаПроисхождения,
| ВТ_ОригинальныйЗапрос.НомерГТД КАК НомерГТД,
| ВТ_ОригинальныйЗапрос.НомерСтроки КАК НомерСтроки,
| ВТ_ОригинальныйЗапрос.ID КАК ID,
| ВТ_ОригинальныйЗапрос.Количество * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Сумма,
| ВТ_ОригинальныйЗапрос.СуммаНДС * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ВТ_ОригинальныйЗапрос.Цена КАК СуммаНДС
|ИЗ
| ВТ_ОригинальныйЗапрос КАК ВТ_ОригинальныйЗапрос
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| ,
| ТипЦен = &ТипыЦенНоменклатуры
| И Номенклатура В
| (ВЫБРАТЬ
| ВТ_ОригинальныйЗапрос.Номенклатура КАК Номенклатура
| ИЗ
| ВТ_ОригинальныйЗапрос КАК ВТ_ОригинальныйЗапрос)) КАК ЦеныНоменклатурыСрезПоследних
| ПО ВТ_ОригинальныйЗапрос.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура";
Запрос.УстановитьПараметр("ТипыЦенНоменклатуры", Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная"));
Шапка = Запрос.Выполнить().Выбрать();
ПервыйДокумент = Истина;
Пока Шапка.СледующийПоЗначениюПоля("Ссылка") Цикл
// Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.РеализацияТоваровУслуг.ПФ_MXL_Накладная");
Макет = ЭтотОбъект.ПолучитьМакет("ПФ_MXL_Накладная"); // поменяли макет
Если НЕ ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
// Запомним номер строки, с которой начали выводить текущий документ.
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
// Выводим шапку накладной
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначенияБПВызовСервера.СформироватьЗаголовокДокумента(Шапка, "Расходная накладная");
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
СведенияОбОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата);
ПредставлениеПоставщика = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,");
ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщика;
ОбластьМакета.Параметры.Поставщик = Шапка.Поставщик;
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
СведенияОКонтрагенте = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);
ПредставлениеПолучателя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,");
ОбластьМакета.Параметры.ПредставлениеПолучателя = ПредставлениеПолучателя;
ОбластьМакета.Параметры.Получатель = Шапка.Получатель;
ТабличныйДокумент.Вывести(ОбластьМакета);
ЕстьСкидки = Ложь;
ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
Если ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ОбластьКодов.Параметры.ИмяКолонкиКодов = "Артикул";
ИначеЕсли ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ОбластьКодов.Параметры.ИмяКолонкиКодов = "Код";
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанных);
ТабличныйДокумент.Присоединить(ОбластьСуммы);
ОбластьКолонкаТовар = Макет.Область("Товар");
Если НЕ ВыводитьКоды Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
Макет.Область("КолонкаКодов").ШиринаКолонки;
КонецЕсли;
Если НЕ ЕстьСкидки Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
Макет.Область("СуммаБезСкидки").ШиринаКолонки +
Макет.Область("СуммаСкидки").ШиринаКолонки;
КонецЕсли;
ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("Строка|Сумма");
Сумма = 0;
СуммаНДС = 0;
ВсегоСкидок = 0;
ВсегоБезСкидок = 0;
КоличествоСтрок = 0;
НомерСтроки = 0;
Пока Шапка.Следующий() Цикл
Если Шапка.Номенклатура = Null Тогда
Продолжить;
КонецЕсли;
НомерСтроки = НомерСтроки + 1;
ОбластьНомера.Параметры.НомерСтроки = НомерСтроки;
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ОбластьКодов.Параметры.Заполнить(Шапка);
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ОбластьДанных.Параметры.Заполнить(Шапка);
ОбластьДанных.Параметры.Товар = СокрЛП(Шапка.Товар);
ТабличныйДокумент.Присоединить(ОбластьДанных);
Скидка = 0;
ОбластьСуммы.Параметры.Заполнить(Шапка);
ТабличныйДокумент.Присоединить(ОбластьСуммы);
Сумма = Сумма + ?(ЗначениеЗаполнено(Шапка.Сумма), Шапка.Сумма, 0);
СуммаНДС = СуммаНДС + ?(ЗначениеЗаполнено(Шапка.СуммаНДС), Шапка.СуммаНДС, 0);
ВсегоСкидок = ВсегоСкидок + Скидка;
ВсегоБезСкидок = Сумма + ВсегоСкидок;
КоличествоСтрок = КоличествоСтрок + 1;
КонецЦикла;
// Вывести Итого
ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("Итого|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("Итого|Сумма");
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанных);
ОбластьСуммы.Параметры.Всего = ОбщегоНазначенияБПВызовСервера.ФорматСумм(Сумма);
ТабличныйДокумент.Присоединить(ОбластьСуммы);
// Вывести ИтогоНДС
ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ИтогоНДС|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
Если СуммаНДС <> 0 Тогда
ОбластьСуммы.Параметры.ВсегоНДС = ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаНДС);
ОбластьДанных.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС", " Сумма НДС");
Иначе
ОбластьСуммы.Параметры.ВсегоНДС = "-";
ОбластьДанных.Параметры.НДС = "Без налога (НДС)";
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанных);
ТабличныйДокумент.Присоединить(ОбластьСуммы);
// Вывести Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего наименований " + КоличествоСтрок
+ ", на сумму " + ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
ТабличныйДокумент.Вывести(ОбластьМакета);
// Вывести подписи
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
ОбластьМакета.Параметры.Заполнить(Шапка);
Если ЗначениеЗаполнено(Шапка.ОтпускПроизвел) Тогда
ДанныеФизЛица = ОбщегоНазначенияБПВызовСервера.ДанныеФизЛица(Шапка.Организация, Шапка.ОтпускПроизвел, Шапка.Дата);
Представление = ?(ЗначениеЗаполнено(ДанныеФизЛица.Должность), Строка(ДанныеФизЛица.Должность) + " ", "");
Представление = Представление + ?(ЗначениеЗаполнено(ДанныеФизЛица.Представление), Строка(ДанныеФизЛица.Представление), "");
ОбластьМакета.Параметры.ОтветственныйПредставление = Представление;
ИначеЕсли Шапка.Склад <> Справочники.Склады.ПустаяСсылка() Тогда
МОЛ = ОтветственныеЛицаБП.ОтветственноеЛицоНаСкладе(Шапка.Склад, Шапка.Дата);
ДанныеФизЛица = ОбщегоНазначенияБПВызовСервера.ДанныеФизЛица(Шапка.Организация, МОЛ, Шапка.Дата);
Представление = ?(ЗначениеЗаполнено(ДанныеФизЛица.Должность), Строка(ДанныеФизЛица.Должность) + " ", "");
Представление = Представление + ?(ЗначениеЗаполнено(ДанныеФизЛица.Представление), Строка(ДанныеФизЛица.Представление), "");
ОбластьМакета.Параметры.ОтветственныйПредставление = Представление;
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьМакета);
// В табличном документе зададим имя области, в которую был
// выведен объект. Нужно для возможности печати покомплектно.
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент,
НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);
УправлениеПечатьюБП.ДополнитьДокументПодписьюИПечатью(ОбластьМакета,ТабличныйДокумент, Шапка, ОбъектыПечати);
КонецЦикла;
Возврат ТабличныйДокумент;
КонецФункции
5. Загружаем и подключаем.
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.111.25, 3.0.67.54
Вступайте в нашу телеграмм-группу Инфостарт