Проблема: Есть люди, которые хотят печатать не проведённые документы, но типовой механизм не дает им этого делать. Рассмотрим на примере документа Заказ Клиента. Выполнил проверку на ERP 2.4.3.145, но в других типовых так же, 1С:Предприятие 8.3 (8.3.10.2650).
Варианты решения:
Заходим в менеджер объекта, ищем область печати и процедуру ДобавитьКомандыПечати.
Над процедурой видим комментарий
// Заполняет список команд печати.
//
// Параметры:
// КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
В процедуре видим параметр команды КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
Заходим в указанный над процедурой комментарии модуль УправлениеПечатью и делаем поиск по «ПроверкаПроведенияПередПечатью»
Читаем:
// * ПроверкаПроведенияПередПечатью - Булево - (необязательный) Признак необходимости проверки проведенности
// документов перед печатью. Если выбран хотя бы один непроведенный документ, то
// перед выполнением команды печати возникает диалог проведения.
// Для непроведенных документов команда печати не выполняется.
// Если параметр не указан, то проверка проведенности не выполняется.
Делаем выводы. Добавляем расширение и помещаем документ ЗаказКлиент в расширение. Надеюсь, все читали данную статью http://v8.1c.ru/o7/201603module/index.htm.
Воспользуемся Аннотацией &После
Нам нужно после формирования команд, найти нужную и отключить проверку.
Добавляем в расширение модуль менеджера код:
&После ("ДобавитьКомандыПечати")
Процедура Расш1_ДобавитьКомандыПечати(КомандыПечати) Экспорт
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Идентификатор", "ЗаказКлиента");
НайденныеСтроки = КомандыПечати.НайтиСтроки(ПараметрыОтбора);
Для каждого строкаНС из НайденныеСтроки Цикл
строкаНС.ПроверкаПроведенияПередПечатью = Ложь;
КонецЦикла;
КонецПроцедуры
Проверяем и радуемся.
А) Решение не совсем правильное
Ищем где и почему работает проверка. В модуле ОбщегоНазначения. ПроверитьПроведенностьДокументов
Эта функция возвращает массив непроведенных документов, следовательно если массив пустой то все проверки пройдены. Очень просто обманываем систему.
Добавляем этот модуль в расширение и пишем код:
&Вместо("ПроверитьПроведенностьДокументов")
Функция Расш1_ПроверитьПроведенностьДокументов(Знач Документы) Экспорт
Результат = Новый Массив;
Возврат Результат;
КонецФункции
Б) Более правильное решение.
Нужно в модуле УправлениеПечатью в процедуре ЗаполнитьКомандыПечатиДляСпискаОбъектов в цикле где обходятся команды параметр ПроверкаПроведенияПередПечатью = Истина поменять значение на Ложь
&Вместо("ЗаполнитьКомандыПечатиДляСпискаОбъектов")
Процедура Расш1_ЗаполнитьКомандыПечатиДляСпискаОбъектов(СписокОбъектов, КомандыПечати)
Для Каждого ОбъектМетаданных Из СписокОбъектов Цикл
ИсточникиКомандПечати = ИсточникиКомандПечати();
Если ИсточникиКомандПечати.Найти(ОбъектМетаданных) = Неопределено Тогда
Продолжить;
КонецЕсли;
КомандыПечатиФормы = КомандыПечатиОбъекта(ОбъектМетаданных);
//Небольшая Доработка++
ПроверкаПроведенияПередПечатьюВИстину = Ложь;
Если ТипЗнч(КомандыПечатиФормы) = Тип("ТаблицаЗначений") Тогда
Если КомандыПечатиФормы.Колонки.Найти("ПроверкаПроведенияПередПечатью") <> Неопределено Тогда
ПроверкаПроведенияПередПечатьюВИстину = Истина;
КонецЕсли;
КонецЕсли;
//Небольшая Доработка--
Для Каждого ДобавляемаяКомандаПечати Из КомандыПечатиФормы Цикл
//Небольшая Доработка++
Если ПроверкаПроведенияПередПечатьюВИстину Тогда
Если ДобавляемаяКомандаПечати.ПроверкаПроведенияПередПечатью Тогда
ДобавляемаяКомандаПечати.ПроверкаПроведенияПередПечатью = Ложь;
КонецЕсли;
КонецЕсли;
//Небольшая Доработка--
// Поиск аналогичной ранее добавленной команды печати.
НайденныеКоманды = Новый Массив;
Для Каждого ИмеющаясяКомандаПечати Из КомандыПечати Цикл
Если УникальныйИдентификаторКомандыПечати(ИмеющаясяКомандаПечати) = ДобавляемаяКомандаПечати.УникальныйИдентификатор Тогда
НайденныеКоманды.Добавить(ИмеющаясяКомандаПечати);
КонецЕсли;
КонецЦикла;
Если НайденныеКоманды.Количество() > 0 Тогда
Для Каждого ИмеющаясяКомандаПечати Из НайденныеКоманды Цикл
// Если уже есть такая команда, дополняем список типов объектов, для которых она предназначена.
ТипОбъекта = Тип(СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), ".", "Ссылка."));
Если ИмеющаясяКомандаПечати.ТипыОбъектовПечати.Найти(ТипОбъекта) = Неопределено Тогда
ИмеющаясяКомандаПечати.ТипыОбъектовПечати.Добавить(ТипОбъекта);
КонецЕсли;
// Очистим МенеджерПечати в случае, если у имеющейся команды он отличается.
Если ИмеющаясяКомандаПечати.МенеджерПечати <> ДобавляемаяКомандаПечати.МенеджерПечати Тогда
ИмеющаясяКомандаПечати.МенеджерПечати = "";
КонецЕсли;
КонецЦикла;
Продолжить;
КонецЕсли;
Если ДобавляемаяКомандаПечати.ТипыОбъектовПечати.Количество() = 0 Тогда
ДобавляемаяКомандаПечати.ТипыОбъектовПечати.Добавить(Тип(СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), ".", "Ссылка.")));
КонецЕсли;
ЗаполнитьЗначенияСвойств(КомандыПечати.Добавить(), ДобавляемаяКомандаПечати);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Проверяем и радуемся.
Расширение прикладываю с примерами.
Обновлено 05.06.2024
Добавлено новое расширение с примером для Заказов покупателей, для свежей Розницы.
Проверено в Рознице 2.3.19.24 на документе ЗаказПокупателя
1 Изменяем процедуру ЗаполнитьКомандыПечатиДляСпискаОбъектов в Модуле УправлениеПечатью.
Код:
&ИзменениеИКонтроль("ЗаполнитьКомандыПечатиДляСпискаОбъектов")
// Собирает список команд печати из нескольких объектов.
Процедура Расш1_ЗаполнитьКомандыПечатиДляСпискаОбъектов(СписокОбъектов, КомандыПечати)
ИсточникиКомандПечати = Новый Соответствие;
Для Каждого ИсточникКомандПечати Из ИсточникиКомандПечати() Цикл
ИсточникиКомандПечати.Вставить(ИсточникКомандПечати, Истина);
КонецЦикла;
Для Каждого ОбъектМетаданных Из СписокОбъектов Цикл
Если ИсточникиКомандПечати[ОбъектМетаданных] = Неопределено Тогда
Продолжить;
КонецЕсли;
КомандыПечатиФормы = КомандыПечатиОбъекта(ОбъектМетаданных); // @skip-check query-in-loop - Малый цикл
#Вставка
//Небольшая Доработка++
ПроверкаПроведенияПередПечатьюВИстину = Ложь;
Если ТипЗнч(КомандыПечатиФормы) = Тип("ТаблицаЗначений") Тогда
Если КомандыПечатиФормы.Колонки.Найти("ПроверкаПроведенияПередПечатью") <> Неопределено Тогда
ПроверкаПроведенияПередПечатьюВИстину = Истина;
КонецЕсли;
КонецЕсли;
//Небольшая Доработка--
#КонецВставки
Для Каждого ДобавляемаяКомандаПечати Из КомандыПечатиФормы Цикл
#Вставка
//Небольшая Доработка++
Если ПроверкаПроведенияПередПечатьюВИстину Тогда
Если ДобавляемаяКомандаПечати.ПроверкаПроведенияПередПечатью Тогда
ДобавляемаяКомандаПечати.ПроверкаПроведенияПередПечатью = Ложь;
КонецЕсли;
КонецЕсли;
//Небольшая Доработка--
#КонецВставки
Если ДобавляемаяКомандаПечати.Отключена Тогда
Продолжить;
КонецЕсли;
// Поиск аналогичной ранее добавленной команды печати.
НайденныеКоманды = КомандыПечати.НайтиСтроки(Новый Структура("УникальныйИдентификатор", ДобавляемаяКомандаПечати.УникальныйИдентификатор));
Для Каждого ИмеющаясяКомандаПечати Из НайденныеКоманды Цикл
// Если уже есть такая команда, дополняем список типов объектов, для которых она предназначена.
ТипОбъекта = Тип(СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), ".", "Ссылка."));
Если ИмеющаясяКомандаПечати.ТипыОбъектовПечати.Найти(ТипОбъекта) = Неопределено Тогда
ИмеющаясяКомандаПечати.ТипыОбъектовПечати.Добавить(ТипОбъекта);
КонецЕсли;
Если ЗначениеЗаполнено(ДобавляемаяКомандаПечати.УсловияВидимости) Тогда
ИмеющаясяКомандаПечати.УсловияВидимостиПоТипамОбъектов.Вставить(ТипОбъекта, ДобавляемаяКомандаПечати.УсловияВидимости);
КонецЕсли;
// Очистим МенеджерПечати в случае, если у имеющейся команды он отличается.
Если ИмеющаясяКомандаПечати.МенеджерПечати <> ДобавляемаяКомандаПечати.МенеджерПечати Тогда
ИмеющаясяКомандаПечати.МенеджерПечати = "";
КонецЕсли;
КонецЦикла;
Если НайденныеКоманды.Количество() > 0 Тогда
Продолжить;
КонецЕсли;
Если ДобавляемаяКомандаПечати.ТипыОбъектовПечати.Количество() = 0 Тогда
ДобавляемаяКомандаПечати.ТипыОбъектовПечати.Добавить(Тип(СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), ".", "Ссылка.")));
КонецЕсли;
ЗаполнитьЗначенияСвойств(КомандыПечати.Добавить(), ДобавляемаяКомандаПечати);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
2 Добавляем документ в расширение:
В менеджер документа добавляем код:
&После ("ДобавитьКомандыПечати")
Процедура Расш1_ДобавитьКомандыПечати(КомандыПечати) Экспорт
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Идентификатор", "ЗаказПокупателя");
НайденныеСтроки = КомандыПечати.НайтиСтроки(ПараметрыОтбора);
Для каждого строкаНС из НайденныеСтроки Цикл
строкаНС.ПроверкаПроведенияПередПечатью = Ложь;
КонецЦикла;
КонецПроцедуры
&ИзменениеИКонтроль("ПечатьЗаказаПокупателя")
// Функция формирует табличный документ с печатной формой.
//
// Возвращаемое значение:
// ТабличныйДокумент - печатная форма.
//
Функция Расш1_ПечатьЗаказаПокупателя(МассивОбъектов, ОбъектыПечати)
КолонкаКодов = ФормированиеПечатныхФормСервер.ИмяДополнительнойКолонки();
ВыводитьКоды = ЗначениеЗаполнено(КолонкаКодов);
ВыводитьУпаковки = ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры");
ТабличныйДокумент = Новый ТабличныйДокумент;
РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс");
СинонимДокумента = НСтр("ru='Заказ покупателя'");
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_Накладная";
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Документ.Ссылка КАК Ссылка,
| Документ.Номер КАК Номер,
| Документ.Дата КАК Дата,
| Документ.Магазин КАК Магазин,
| ВЫБОР
| КОГДА Документ.Организация.ЮрФизЛицо = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ЮрЛицо)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрганизацияЮридическоеЛицо,
| Документ.Организация КАК Поставщик,
| Документ.Контрагент КАК Получатель,
| Документ.СуммаДокумента КАК СуммаДокумента,
| ПРЕДСТАВЛЕНИЕ(Документ.Магазин) КАК МагазинПредставление,
| ПРЕДСТАВЛЕНИЕ(Документ.Организация) КАК ПредставлениеПоставщика,
| Документ.Ответственный.ФизическоеЛицо КАК Ответственный,
| Документ.УчитыватьНДС,
| Документ.ЦенаВключаетНДС
|ИЗ
| Документ.ЗаказПокупателя КАК Документ
|ГДЕ
| Документ.Ссылка В(&МассивОбъектов)
#Удаление
| И Документ.Проведен
#КонецУдаления
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| Дата
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| " + ?(ВыводитьКоды, "ТаблицаТовары.Номенклатура." + КолонкаКодов +" КАК КолонкаКодов,", "") + "
| ТаблицаТовары.Номенклатура.Представление КАК Товар,
| ТаблицаТовары.Номенклатура.НаименованиеПолное КАК НоменклатураПредставление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаТовары.Характеристика) КАК ХарактеристикаПредставление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
| ВЫБОР
| КОГДА ТаблицаТовары.Упаковка <> ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕ(ТаблицаТовары.Упаковка.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения)
| КОНЕЦ КАК ЕдиницаИзмерения,
| ТаблицаТовары.Количество КАК КоличествоВБазовыхЕдиницах,
| ТаблицаТовары.КоличествоУпаковок КАК Количество,
| ВЫБОР КОГДА ТаблицаТовары.КоличествоУпаковок = 0 ТОГДА ТаблицаТовары.КоличествоУпаковок
| ИНАЧЕ ТаблицаТовары.Сумма / ТаблицаТовары.КоличествоУпаковок
| КОНЕЦ КАК Цена,
| ТаблицаТовары.Сумма КАК Сумма,
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.Сумма +
| ТаблицаТовары.СуммаРучнойСкидки +
| ТаблицаТовары.СуммаАвтоматическойСкидки КАК СуммаБезСкидки,
| ТаблицаТовары.СуммаРучнойСкидки +
| ТаблицаТовары.СуммаАвтоматическойСкидки КАК Скидка,
| ТаблицаТовары.СуммаНДС,
| ТаблицаТовары.СтавкаНДС
|ИЗ
| Документ.ЗаказПокупателя.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В(&МассивОбъектов)
#Удаление
| И ТаблицаТовары.Ссылка.Проведен
#КонецУдаления
| И НЕ ТаблицаТовары.Отменено
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки
|ИТОГИ ПО
| Ссылка");
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Результаты = Запрос.ВыполнитьПакет();
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ЗаказПокупателя.ПФ_MXL_ЗаказПокупателя");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьШапкаНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
ОбластьШапкаКодов = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
ОбластьШапкаДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
ОбластьШапкаСкидок = Макет.ПолучитьОбласть("ШапкаТаблицы|Скидка");
ОбластьШапкаСуммы = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");
ОбластьКолонкаТовар = Макет.Область("Товар");
Если Не ВыводитьКоды Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
+ Макет.Область("КолонкаКодов").ШиринаКолонки;
КонецЕсли;
ОбластьСтрокаНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
ОбластьСтрокаКодов = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
ОбластьСтрокаДанных = Макет.ПолучитьОбласть("Строка|Данные");
ОбластьСтрокаСкидок = Макет.ПолучитьОбласть("Строка|Скидка");
ОбластьСтрокаСуммы = Макет.ПолучитьОбласть("Строка|Сумма");
ОбластьИтогоНДСНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
ОбластьИтогоНДСКодов = Макет.ПолучитьОбласть("ИтогоНДС|КолонкаКодов");
ОбластьИтогоНДСДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
ОбластьИтогоНДССкидок = Макет.ПолучитьОбласть("ИтогоНДС|Скидка");
ОбластьИтогоНДССуммы = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");
// Вывести Итого.
ОбластьИтогоНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
ОбластьИтогоКодов = Макет.ПолучитьОбласть("Итого|КолонкаКодов");
ОбластьИтогоДанных = Макет.ПолучитьОбласть("Итого|Данные");
ОбластьИтогоСкидок = Макет.ПолучитьОбласть("Итого|Скидка");
ОбластьИтогоСуммы = Макет.ПолучитьОбласть("Итого|Сумма");
ОбластьСуммаПрописью = Макет.ПолучитьОбласть("СуммаПрописью");
ОбластьПодписей = Макет.ПолучитьОбласть("Подписи");
ВыборкаПоДокументам = Результаты[0].Выбрать();
ВыборкаПоТабличнымЧастям = Результаты[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ПервыйДокумент = Истина;
Пока ВыборкаПоДокументам.Следующий() Цикл
Если НЕ ВыборкаПоТабличнымЧастям.НайтиСледующий(Новый Структура("Ссылка",ВыборкаПоДокументам.Ссылка)) Тогда
Продолжить;
КонецЕсли;
ВыборкаПоСтрокамТЧ = ВыборкаПоТабличнымЧастям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если НЕ ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ВыборкаПоДокументам);
ОбластьЗаголовок.Параметры.Заполнить(ВыборкаПоДокументам);
ОбластьЗаголовок.Параметры.ТекстЗаголовка = ФормированиеПечатныхФормСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента, СинонимДокумента);
ПредставлениеПоставщика = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(ФормированиеПечатныхФормСервер.СведенияОЮрФизЛице(ВыборкаПоДокументам.Поставщик, ВыборкаПоДокументам.Дата), "ПолноеНаименование,");
ПредставлениеПолучателя = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(ФормированиеПечатныхФормСервер.СведенияОЮрФизЛице(ВыборкаПоДокументам.Получатель, ВыборкаПоДокументам.Дата), "ПолноеНаименование, ФактическийАдрес, Телефоны");
СтруктураПредставлений = Новый Структура("ПредставлениеПоставщика, ПредставлениеПолучателя", ПредставлениеПоставщика, ПредставлениеПолучателя);
ЗаполнитьЗначенияСвойств(ОбластьЗаголовок.Параметры, СтруктураПредставлений);
ТабличныйДокумент.Вывести(ОбластьЗаголовок);
// Шапка
ТабличныйДокумент.Вывести(ОбластьШапкаНомера);
Если ВыводитьКоды Тогда
ОбластьШапкаКодов.Параметры.ИмяКолонкиКодов = КолонкаКодов;
ТабличныйДокумент.Присоединить(ОбластьШапкаКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьШапкаДанных);
ТабличныйДокумент.Присоединить(ОбластьШапкаСкидок);
ТабличныйДокумент.Присоединить(ОбластьШапкаСуммы);
ВсегоНаименований = 0;
Сумма = 0;
ВсегоСкидок = 0;
ВсегоБезСкидок = 0;
СуммаНДС = 0;
// СТРОКИ ТЧ
Пока ВыборкаПоСтрокамТЧ.Следующий() Цикл
Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамТЧ.Номенклатура) Тогда
Продолжить;
КонецЕсли;
ОбластьСтрокаНомера.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Вывести(ОбластьСтрокаНомера);
Если ВыводитьКоды Тогда
ОбластьСтрокаКодов.Параметры.Артикул = ВыборкаПоСтрокамТЧ["КолонкаКодов"];
ТабличныйДокумент.Присоединить(ОбластьСтрокаКодов);
КонецЕсли;
ОбластьСтрокаДанных.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ОбластьСтрокаДанных.Параметры.Товар = ФормированиеПечатныхФормСервер.ПолучитьПредставлениеНоменклатурыДляПечати(ВыборкаПоСтрокамТЧ.НоменклатураПредставление,ВыборкаПоСтрокамТЧ.ХарактеристикаПредставление);
ТабличныйДокумент.Присоединить(ОбластьСтрокаДанных);
ОбластьСтрокаСкидок.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Присоединить(ОбластьСтрокаСкидок);
ОбластьСтрокаСуммы.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Присоединить(ОбластьСтрокаСуммы);
ВсегоНаименований = ВсегоНаименований + 1;
Сумма = Сумма + ВыборкаПоСтрокамТЧ.Сумма;
ВсегоСкидок = ВсегоСкидок + ВыборкаПоСтрокамТЧ.Скидка;
ВсегоБезСкидок = Сумма + ВсегоСкидок;
СуммаНДС = СуммаНДС + Окр(ВыборкаПоСтрокамТЧ.СуммаНДС, 2, 1);
КонецЦикла;
ТабличныйДокумент.Вывести(ОбластьИтогоНомера);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьИтогоКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьИтогоДанных);
ОбластьИтогоСкидок.Параметры.ВсегоСкидок = ВсегоСкидок;
ОбластьИтогоСкидок.Параметры.ВсегоБезСкидок = ВсегоБезСкидок;
ТабличныйДокумент.Присоединить(ОбластьИтогоСкидок);
ОбластьИтогоСуммы.Параметры.Всего = Сумма;
ТабличныйДокумент.Присоединить(ОбластьИтогоСуммы);
// Вывести ИтогоНДС
ТабличныйДокумент.Вывести(ОбластьИтогоНДСНомера);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьИтогоНДСКодов);
КонецЕсли;
ОбластьИтогоНДСДанных.Параметры.НДС = ?(ВыборкаПоДокументам.ЦенаВключаетНДС, НСтр("ru = 'В том числе НДС:'"), НСтр("ru = 'Сумма НДС:'"));
ТабличныйДокумент.Присоединить(ОбластьИтогоНДСДанных);
ТабличныйДокумент.Присоединить(ОбластьИтогоНДССкидок);
Если НЕ ВыборкаПоДокументам.УчитыватьНДС Тогда
СуммаНДССтрока = НСтр("ru = 'Без НДС'");
Иначе
СуммаНДССтрока = Строка(СуммаНДС);
КонецЕсли;
ОбластьИтогоНДССуммы.Параметры.ВсегоНДС = СуммаНДССтрока;
ТабличныйДокумент.Присоединить(ОбластьИтогоНДССуммы);
// Вывести Сумму прописью.
ТекстИтоговойСтроки = НСтр("ru = 'Всего наименований %ВсегоНаименований%, на сумму %Итого%'");
ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%ВсегоНаименований%", ВсегоНаименований);
ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%Итого%", ФормированиеПечатныхФормСервер.ФорматСумм(Сумма));
ОбластьСуммаПрописью.Параметры.ИтоговаяСтрока = ТекстИтоговойСтроки;
ОбластьСуммаПрописью.Параметры.СуммаПрописью = ФормированиеПечатныхФормСервер.СформироватьСуммуПрописью(Сумма);
ТабличныйДокумент.Вывести(ОбластьСуммаПрописью);
// ПОДПИСИ
ОбластьПодписей.Параметры.Заполнить(ВыборкаПоДокументам);
ОбластьПодписей.Параметры.ОтветственныйПредставление = ФормированиеПечатныхФормСервер.ФамилияИнициалыФизЛица(ВыборкаПоДокументам.Ответственный);
ТабличныйДокумент.Вывести(ОбластьПодписей);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаПоДокументам.Ссылка);
КонецЦикла;
ТабличныйДокумент.АвтоМасштаб = Истина;
Возврат ТабличныйДокумент;
КонецФункции
Обратите внимание на то, что в функции ПечатьЗаказаПокупателя были проверки на «Проведен».
Документ.Проведен и ТаблицаТовары.Ссылка.Проведен
Соответственно эти проверки тоже пришлось убрать. Весь код выполнен с аннотацией &ИзменениеИКонтроль
Проверено на следующих конфигурациях и релизах:
- Розница, редакция 2.3, релизы 2.3.19.24