Какое условие мне нужно поставить что бы формировалась нужная форма
Добавляю на форму РМК в 1с УНФ свою кнопку которая должная печатать свой макет. За основу взял печать товарного чека. Сам вопрос: Какое условие можно поставить в , что бы в соотвестии у условием формировался тот или иной табличный документ.
Сама функция с условием которое не работает.
прошу без троллинга, ибо только начинаю во все это вникать.
Функция ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, ИмяМакета)
Сама функция с условием которое не работает.
Функция ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, ИмяМакета)
Перем ПервыйДокумент, НомерСтрокиНачало, Ошибки;
Если ОбъектыПечати = "КартаЗаказа" Тогда
ПараметрыНоменклатуры = Новый Структура;
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ТоварныйЧек";
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ЧекККМ.ПФ_MXL_ТоварныйЧек");
ДанныеПечати = Новый Структура;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ
| ДокументЧекККМ.Ссылка КАК Ссылка,
| ДокументЧекККМ.Номер КАК Номер,
| ДокументЧекККМ.Дата КАК Дата,
| ДокументЧекККМ.КассаККМ КАК КассаККМ,
| ДокументЧекККМ.ВалютаДокумента КАК Валюта,
| ДокументЧекККМ.Контрагент.Представление КАК ПредставлениеПолучателя,
| ДокументЧекККМ.Организация КАК Организация,
| ДокументЧекККМ.Организация.Префикс КАК Префикс,
| ДокументЧекККМ.Организация.Представление КАК Поставщик,
| ДокументЧекККМ.СтруктурнаяЕдиница КАК РозничнаяТочкаСсылка,
| ДокументЧекККМ.СтруктурнаяЕдиница.Наименование КАК РозничнаяТочкаНаименование,
| ДокументЧекККМ.СуммаДокумента КАК СуммаДокумента,
| ДокументЧекККМ.СуммаВключаетНДС КАК СуммаВключаетНДС,
| ДокументЧекККМ.ПодписьКассира.Должность КАК ДолжностьКассира,
| ДокументЧекККМ.ПодписьКассира.РасшифровкаПодписи КАК РасшифровкаПодписиКассира,
| ДокументЧекККМ.КонтактноеЛицоПодписант.Наименование КАК РасшифровкаПодписиКонтрагента,
| ДокументЧекККМ.Заказ КАК Заказ,
| ДокументЧекККМ.ПоложениеЗаказаПокупателя КАК ПоложениеЗаказаПокупателя,
| ДокументЧекККМ.ЕстьЗаказы КАК ЕстьЗаказы,
| ДокументЧекККМ.Контрагент КАК Контрагент,
| ДокументЧекККМ.Заказ.Номер КАК ЗаказНомер,
| ДокументЧекККМ.Заказ.Дата КАК ЗаказДата,
| ДокументЧекККМ.Запасы.(
| НомерСтроки КАК НомерСтроки,
| Номенклатура КАК Номенклатура,
| ВЫБОР
| КОГДА (ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК СТРОКА(100))) = """"
| ТОГДА Номенклатура.Наименование
| ИНАЧЕ Номенклатура.НаименованиеПолное
| КОНЕЦ КАК Запас,
| Номенклатура.НаименованиеПолное КАК ЗапасПолноеНаименование,
| Номенклатура.Код КАК Код,
| Номенклатура.Артикул КАК Артикул,
| Характеристика КАК Характеристика,
| Количество КАК Количество,
| ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Цена КАК Цена,
| Сумма КАК Сумма,
| СуммаНДС КАК СуммаНДС,
| Всего КАК Всего,
| ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
| ВЫБОР
| КОГДА ПроцентСкидкиНаценки <> 0
| ИЛИ СуммаАвтоматическойСкидки <> 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК ЕстьСкидка,
| СуммаАвтоматическойСкидки КАК СуммаАвтоматическойСкидки,
| Партия КАК Партия,
| ПроцентАвтоматическойСкидки КАК ПроцентАвтоматическойСкидки,
| Заказ КАК Заказ,
| Заказ.Номер КАК ЗаказНомер,
| Заказ.Дата КАК ЗаказДата,
| КлючСвязи КАК КлючСвязи,
| ЛОЖЬ КАК ЭтоНабор,
| ВЫБОР
| КОГДА НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| И НоменклатураНабора.ВариантПечатиНабора = ЗНАЧЕНИЕ(Перечисление.ВариантыПечатиНаборов.НаборИКомплектующие)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК НеобходимоВыделитьКакСоставНабора,
| НоменклатураНабора КАК НоменклатураНабора,
| ХарактеристикаНабора КАК ХарактеристикаНабора
| ) КАК ТаблицаЗапасы,
| ДокументЧекККМ.ДобавленныеНаборы.(
| НоменклатураНабора КАК НоменклатураНабора,
| ХарактеристикаНабора КАК ХарактеристикаНабора,
| Количество КАК Количество,
| ВЫБОР
| КОГДА (ВЫРАЗИТЬ(НоменклатураНабора.НаименованиеПолное КАК СТРОКА(1000))) = """"
| ТОГДА НоменклатураНабора.Наименование
| ИНАЧЕ ВЫРАЗИТЬ(НоменклатураНабора.НаименованиеПолное КАК СТРОКА(1000))
| КОНЕЦ КАК ЗапасНабора,
| НоменклатураНабора.ВариантПечатиНабора КАК ВариантПечатиНабора,
| НоменклатураНабора.ТипНоменклатуры КАК ТипНоменклатурыНабора,
| НоменклатураНабора.Артикул КАК АртикулНабора,
| НоменклатураНабора.Код КАК КодНабора,
| НоменклатураНабора.ЕдиницаИзмерения КАК ЕдиницаИзмеренияНабора,
| НоменклатураНабора.ЕдиницаИзмерения.Код КАК КодЕдиницыИзмеренияНабора,
| ИСТИНА КАК ВыводитьИтоги
| ) КАК ТаблицаДобавленныеНаборы,
| ДокументЧекККМ.СерийныеНомера.(
| СерийныйНомер КАК СерийныйНомер,
| КлючСвязи КАК КлючСвязи
| ) КАК ТаблицаСерийныеНомера
|ИЗ
| Документ.ЧекККМ КАК ДокументЧекККМ
|ГДЕ
| ДокументЧекККМ.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки";
ДанныеДокументов = Запрос.Выполнить().Выгрузить();
// Наборы
НаборыСервер.КомпоноватьТабличнуюЧастьПоНаборам(ДанныеДокументов, "ТаблицаЗапасы");
Для Каждого Шапка Из ДанныеДокументов Цикл
ПечатьДокументовУНФ.ПередНачаломФормированияДокумента(ТабличныйДокумент, ПервыйДокумент, НомерСтрокиНачало, ДанныеПечати);
ИспользоватьЗаказыВРозничнойТорговле = ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыВРозничнойТорговле");
Если ИспользоватьЗаказыВРозничнойТорговле И Шапка.ПоложениеЗаказаПокупателя = ПредопределенноеЗначение("Перечисление.ПоложениеРеквизитаНаФорме.ВШапке") Тогда
ЗаказВШапке = Истина;
ЗаказВТЧ = Ложь;
Иначе
ЗаказВШапке = Ложь;
ЗаказВТЧ = ИспользоватьЗаказыВРозничнойТорговле И Шапка.ЕстьЗаказы;
КонецЕсли;
СведенияОбОрганизации = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата, ,);
НомерДокумента = ПечатьДокументовУНФ.ПолучитьНомерНаПечатьСУчетомДатыДокумента(Шапка.Дата, Шапка.Номер, Шапка.Префикс);
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок|ОсновныеДанные");
ДанныеПечати.Очистить();
ДанныеПечати.Вставить("ТекстЗаголовка", НСтр("ru ='Товарный чек № '") + НомерДокумента + НСтр("ru =' от '") + Формат(Шапка.Дата, "ДЛФ=DD"));
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);
Если ЗаказВТЧ Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок|Заказ");
ТабличныйДокумент.Присоединить(ОбластьМакета);
КонецЕсли;
ДанныеПечати.Очистить();
КонтактнаяИнформацияТоварногоЧека = Константы.КонтактнаяИнформацияТоварногоЧека.Получить();
Если КонтактнаяИнформацияТоварногоЧека <> Перечисления.КонтактнаяИнформацияТоварногоЧека.СтруктурнаяЕдиница Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
ПредставлениеПоставщика = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");
ДанныеПечати.Вставить("ПредставлениеПоставщика", ПредставлениеПоставщика);
ДанныеПечати.Вставить("Поставщик", Шапка.Организация);
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
Если КонтактнаяИнформацияТоварногоЧека <> Перечисления.КонтактнаяИнформацияТоварногоЧека.Организация Тогда
ОбластьМакета = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, "СтруктурнаяЕдиница", , Ошибки);
Если ОбластьМакета <> Неопределено Тогда
ПредставлениеСтруктурнойЕдиницы = Шапка.РозничнаяТочкаНаименование;
ФактАдресСтруктурнойЕдиницы = УправлениеНебольшойФирмойСервер.ПолучитьКонтактнуюИнформацию(Шапка.РозничнаяТочкаСсылка, Справочники.ВидыКонтактнойИнформации.ФактАдресСтруктурнойЕдиницы);
Если НЕ ПустаяСтрока(ФактАдресСтруктурнойЕдиницы) Тогда
ПредставлениеСтруктурнойЕдиницы = ПредставлениеСтруктурнойЕдиницы + ", " + ФактАдресСтруктурнойЕдиницы;
КонецЕсли;
ТелефонСтруктурнойЕдиницы = УправлениеНебольшойФирмойСервер.ПолучитьКонтактнуюИнформацию(Шапка.РозничнаяТочкаСсылка, Справочники.ВидыКонтактнойИнформации.ТелефонСтруктурнойЕдиницы);
Если НЕ ПустаяСтрока(ТелефонСтруктурнойЕдиницы) Тогда
ПредставлениеСтруктурнойЕдиницы = ПредставлениеСтруктурнойЕдиницы + ", " + ТелефонСтруктурнойЕдиницы;
КонецЕсли;
ДанныеПечати.Вставить("ПредставлениеСтруктурнойЕдиницы", ПредставлениеСтруктурнойЕдиницы);
Если КонтактнаяИнформацияТоварногоЧека = Перечисления.КонтактнаяИнформацияТоварногоЧека.СтруктурнаяЕдиница Тогда
ДанныеПечати.Вставить("ЗаголовокСтруктурнойЕдиницы", НСтр("ru ='Поставщик:'"));
КонецЕсли;
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
КонецЕсли;
Если ИспользоватьЗаказыВРозничнойТорговле И ЗначениеЗаполнено(Шапка.Контрагент) Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
СведенияОПокупателе = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Контрагент, Шапка.Дата, ,);
ДанныеПечати.Очистить();
ПредставлениеПолучателя = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");
ДанныеПечати.Вставить("ПредставлениеПолучателя", ПредставлениеПолучателя);
ДанныеПечати.Вставить("Получатель", Шапка.Контрагент);
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
Если ЗаказВШапке Тогда
Если ЗначениеЗаполнено(Шапка.Контрагент) ИЛИ ЗначениеЗаполнено(Шапка.Заказ) Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ЗаказШапка");
ОбластьМакета.Параметры.ПредставлениеЗаказа = ?(ЗначениеЗаполнено(Шапка.Заказ),
"№ "+ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Шапка.ЗаказНомер, Истина, Истина)+" от "+Формат(Шапка.ЗаказДата, "ДЛФ=D"),
"");
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
КонецЕсли;
ЕстьСкидки = Шапка.ТаблицаЗапасы.Итог("ЕстьСкидка") <> 0;
ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");
ТабличныйДокумент.Вывести(ОбластьНомера);
ТабличныйДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидки Тогда
ОбластьСкидок = Макет.ПолучитьОбласть("ШапкаТаблицы|Скидка");
ТабличныйДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьСуммы);
Если ЗаказВТЧ Тогда
ОбластьЗаказа = Макет.ПолучитьОбласть("ШапкаТаблицы|ЗаказТЧ");
ТабличныйДокумент.Присоединить(ОбластьЗаказа);
КонецЕсли;
ОбластьКолонкаЗапас = Макет.Область("Запас");
Если Не ЕстьСкидки Тогда
ОбластьКолонкаЗапас.ШиринаКолонки =
ОбластьКолонкаЗапас.ШиринаКолонки
+ Макет.Область("СуммаБезСкидки").ШиринаКолонки
+ Макет.Область("СуммаСкидки").ШиринаКолонки;
КонецЕсли;
ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
Если ЕстьСкидки Тогда
ОбластьСкидок = Макет.ПолучитьОбласть("Строка|Скидка");
КонецЕсли;
ОбластьСуммы = Макет.ПолучитьОбласть("Строка|Сумма");
Если ЗаказВТЧ Тогда
ОбластьЗаказВТЧ = Макет.ПолучитьОбласть("Строка|ЗаказТЧ");
КонецЕсли;
СтруктураИтогов = Новый Структура("Сумма, СуммаНДС, Всего, Количество, НомерСтроки, ВсегоСкидок, ВсегоБезСкидок, ЕстьСкидки, ЗаказВТЧ", 0, 0, 0, 0, 0, 0, 0, ЕстьСкидки, ЗаказВТЧ);
ПараметрыНоменклатуры = Новый Структура;
СтруктураЗаполненияСекции = Новый Структура;
Для каждого СтрокаЗапасы Из Шапка.ТаблицаЗапасы Цикл
Если НЕ ЗначениеЗаполнено(СтрокаЗапасы.Номенклатура) Тогда
ТекстОшибки = НСтр("ru ='В одной из строк не заполнено значение номенклатуры - строка при печати пропущена!'");
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, СтруктураЗаполненияСекции, ТекстОшибки, "");
Продолжить;
КонецЕсли;
ЗаполнитьДанныеПечатиПоСтрокеТабличнойЧастиТоварныйЧек(СтрокаЗапасы, СтруктураЗаполненияСекции, ПараметрыНоменклатуры, СтруктураИтогов, Шапка);
ОбластьНомера.Параметры.Заполнить(СтрокаЗапасы);
ОбластьНомера.Параметры.Заполнить(СтруктураЗаполненияСекции);
ОбластьДанных.Параметры.Заполнить(СтрокаЗапасы);
ОбластьДанных.Параметры.Заполнить(СтруктураЗаполненияСекции);
Если ЕстьСкидки Тогда
ОбластьСкидок.Параметры.Заполнить(СтрокаЗапасы);
ОбластьСкидок.Параметры.Заполнить(СтруктураЗаполненияСекции);
КонецЕсли;
ОбластьСуммы.Параметры.Заполнить(СтрокаЗапасы);
ОбластьСуммы.Параметры.Заполнить(СтруктураЗаполненияСекции);
Если ЗаказВТЧ Тогда
ОбластьЗаказВТЧ.Параметры.Заполнить(СтрокаЗапасы);
ОбластьЗаказВТЧ.Параметры.Заполнить(СтруктураЗаполненияСекции);
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьНомера);
ТабличныйДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидки Тогда
ТабличныйДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьСуммы);
Если ЗаказВТЧ Тогда
ТабличныйДокумент.Присоединить(ОбластьЗаказВТЧ);
КонецЕсли;
// Наборы
НаборыСервер.УчестьОформлениеСтрокиНабора(ТабличныйДокумент, ОбластьДанных, СтрокаЗапасы);
КонецЦикла;
// Вывести Итого.
СтруктураЗаполненияСекции.Вставить("ЗаголовокНДС", ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:"));
ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
ОбластьСкидок = Макет.ПолучитьОбласть("Итого|Скидка");
ОбластьСуммы = Макет.ПолучитьОбласть("Итого|Сумма");
ТабличныйДокумент.Вывести(ОбластьНомера);
ОбластьДанных.Параметры.Заполнить(СтруктураЗаполненияСекции);
ТабличныйДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидки Тогда
СтруктураЗаполненияСекции.Вставить("ВсегоСкидок", СтруктураИтогов.ВсегоСкидок);
СтруктураЗаполненияСекции.Вставить("ВсегоБезСкидок", СтруктураИтогов.ВсегоБезСкидок);
ОбластьСкидок.Параметры.Заполнить(СтруктураЗаполненияСекции);
ТабличныйДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
СтруктураЗаполненияСекции.Вставить("Сумма", СтруктураИтогов.Сумма);
СтруктураЗаполненияСекции.Вставить("СуммаНДС", СтруктураИтогов.СуммаНДС);
СтруктураЗаполненияСекции.Вставить("Всего", СтруктураИтогов.Всего);
ОбластьСуммы.Параметры.Заполнить(СтруктураЗаполненияСекции);
ТабличныйДокумент.Присоединить(ОбластьСуммы);
Если ЗаказВТЧ Тогда
ОбластьЗаказВТЧ = Макет.ПолучитьОбласть("Итого|ЗаказТЧ");
ТабличныйДокумент.Присоединить(ОбластьЗаказВТЧ);
КонецЕсли;
// Вывести Сумму прописью.
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
СуммаКПрописи = СтруктураИтогов.Всего;
ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего наименований "
+ Строка(СтруктураИтогов.Количество)
+ ", на сумму "
+ УправлениеНебольшойФирмойСервер.ФорматСумм(СуммаКПрописи, Шапка.Валюта);
ОбластьМакета.Параметры.СуммаПрописью = РаботаСКурсамиВалют.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.Валюта);
ТабличныйДокумент.Вывести(ОбластьМакета);
// Вывести подписи.
ОбластьМакета = Макет.ПолучитьОбласть("Подписи|ОсновныеДанные");
ОбластьМакета.Параметры.Заполнить(Шапка);
ТабличныйДокумент.Вывести(ОбластьМакета);
Если ЗаказВТЧ Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Подписи|Заказ");
ТабличныйДокумент.Присоединить(ОбластьМакета);
КонецЕсли;
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);
КонецЦикла;
Если Ошибки <> Неопределено Тогда
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки);
КонецЕсли;
Возврат ТабличныйДокумент;
Иначе
ПараметрыНоменклатуры = Новый Структура;
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЧекККМ_КартаЗаказа";
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ЧекККМ.ПФ_MXL_КартаЗаказа");
ДанныеПечати = Новый Структура;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ
| ДокументЧекККМ.Ссылка КАК Ссылка,
| ДокументЧекККМ.Номер КАК Номер,
| ДокументЧекККМ.Дата КАК Дата,
| ДокументЧекККМ.КассаККМ КАК КассаККМ,
| ДокументЧекККМ.ВалютаДокумента КАК Валюта,
| ДокументЧекККМ.Контрагент.Представление КАК ПредставлениеПолучателя,
| ДокументЧекККМ.Организация КАК Организация,
| ДокументЧекККМ.Организация.Префикс КАК Префикс,
| ДокументЧекККМ.Организация.Представление КАК Поставщик,
| ДокументЧекККМ.СтруктурнаяЕдиница КАК РозничнаяТочкаСсылка,
| ДокументЧекККМ.СтруктурнаяЕдиница.Наименование КАК РозничнаяТочкаНаименование,
| ДокументЧекККМ.СуммаДокумента КАК СуммаДокумента,
| ДокументЧекККМ.СуммаВключаетНДС КАК СуммаВключаетНДС,
| ДокументЧекККМ.ПодписьКассира.Должность КАК ДолжностьКассира,
| ДокументЧекККМ.ПодписьКассира.РасшифровкаПодписи КАК РасшифровкаПодписиКассира,
| ДокументЧекККМ.КонтактноеЛицоПодписант.Наименование КАК РасшифровкаПодписиКонтрагента,
| ДокументЧекККМ.Заказ КАК Заказ,
| ДокументЧекККМ.ПоложениеЗаказаПокупателя КАК ПоложениеЗаказаПокупателя,
| ДокументЧекККМ.ЕстьЗаказы КАК ЕстьЗаказы,
| ДокументЧекККМ.Контрагент КАК Контрагент,
| ДокументЧекККМ.Заказ.Номер КАК ЗаказНомер,
| ДокументЧекККМ.Заказ.Дата КАК ЗаказДата,
| ДокументЧекККМ.Запасы.(
| НомерСтроки КАК НомерСтроки,
| Номенклатура КАК Номенклатура,
| ВЫБОР
| КОГДА (ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК СТРОКА(100))) = """"
| ТОГДА Номенклатура.Наименование
| ИНАЧЕ Номенклатура.НаименованиеПолное
| КОНЕЦ КАК Запас,
| Номенклатура.НаименованиеПолное КАК ЗапасПолноеНаименование,
| Номенклатура.Код КАК Код,
| Номенклатура.Артикул КАК Артикул,
| Характеристика КАК Характеристика,
| Количество КАК Количество,
| ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Цена КАК Цена,
| Сумма КАК Сумма,
| СуммаНДС КАК СуммаНДС,
| Всего КАК Всего,
| ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
| ВЫБОР
| КОГДА ПроцентСкидкиНаценки <> 0
| ИЛИ СуммаАвтоматическойСкидки <> 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК ЕстьСкидка,
| СуммаАвтоматическойСкидки КАК СуммаАвтоматическойСкидки,
| Партия КАК Партия,
| ПроцентАвтоматическойСкидки КАК ПроцентАвтоматическойСкидки,
| Заказ КАК Заказ,
| Заказ.Номер КАК ЗаказНомер,
| Заказ.Дата КАК ЗаказДата,
| КлючСвязи КАК КлючСвязи,
| ЛОЖЬ КАК ЭтоНабор,
| ВЫБОР
| КОГДА НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| И НоменклатураНабора.ВариантПечатиНабора = ЗНАЧЕНИЕ(Перечисление.ВариантыПечатиНаборов.НаборИКомплектующие)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК НеобходимоВыделитьКакСоставНабора,
| НоменклатураНабора КАК НоменклатураНабора,
| ХарактеристикаНабора КАК ХарактеристикаНабора
| ) КАК ТаблицаЗапасы,
| ДокументЧекККМ.ДобавленныеНаборы.(
| НоменклатураНабора КАК НоменклатураНабора,
| ХарактеристикаНабора КАК ХарактеристикаНабора,
| Количество КАК Количество,
| ВЫБОР
| КОГДА (ВЫРАЗИТЬ(НоменклатураНабора.НаименованиеПолное КАК СТРОКА(1000))) = """"
| ТОГДА НоменклатураНабора.Наименование
| ИНАЧЕ ВЫРАЗИТЬ(НоменклатураНабора.НаименованиеПолное КАК СТРОКА(1000))
| КОНЕЦ КАК ЗапасНабора,
| НоменклатураНабора.ВариантПечатиНабора КАК ВариантПечатиНабора,
| НоменклатураНабора.ТипНоменклатуры КАК ТипНоменклатурыНабора,
| НоменклатураНабора.Артикул КАК АртикулНабора,
| НоменклатураНабора.Код КАК КодНабора,
| НоменклатураНабора.ЕдиницаИзмерения КАК ЕдиницаИзмеренияНабора,
| НоменклатураНабора.ЕдиницаИзмерения.Код КАК КодЕдиницыИзмеренияНабора,
| ИСТИНА КАК ВыводитьИтоги
| ) КАК ТаблицаДобавленныеНаборы,
| ДокументЧекККМ.СерийныеНомера.(
| СерийныйНомер КАК СерийныйНомер,
| КлючСвязи КАК КлючСвязи
| ) КАК ТаблицаСерийныеНомера
|ИЗ
| Документ.ЧекККМ КАК ДокументЧекККМ
|ГДЕ
| ДокументЧекККМ.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки";
ДанныеДокументов = Запрос.Выполнить().Выгрузить();
// Наборы
НаборыСервер.КомпоноватьТабличнуюЧастьПоНаборам(ДанныеДокументов, "ТаблицаЗапасы");
Для Каждого Шапка Из ДанныеДокументов Цикл
ПечатьДокументовУНФ.ПередНачаломФормированияДокумента(ТабличныйДокумент, ПервыйДокумент, НомерСтрокиНачало, ДанныеПечати);
ИспользоватьЗаказыВРозничнойТорговле = ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыВРозничнойТорговле");
Если ИспользоватьЗаказыВРозничнойТорговле И Шапка.ПоложениеЗаказаПокупателя = ПредопределенноеЗначение("Перечисление.ПоложениеРеквизитаНаФорме.ВШапке") Тогда
ЗаказВШапке = Истина;
ЗаказВТЧ = Ложь;
Иначе
ЗаказВШапке = Ложь;
ЗаказВТЧ = ИспользоватьЗаказыВРозничнойТорговле И Шапка.ЕстьЗаказы;
КонецЕсли;
СведенияОбОрганизации = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата, ,);
НомерДокумента = ПечатьДокументовУНФ.ПолучитьНомерНаПечатьСУчетомДатыДокумента(Шапка.Дата, Шапка.Номер, Шапка.Префикс);
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок|ОсновныеДанные");
ДанныеПечати.Очистить();
ДанныеПечати.Вставить("ТекстЗаголовка", НСтр("ru ='Товарный чек № '") + НомерДокумента + НСтр("ru =' от '") + Формат(Шапка.Дата, "ДЛФ=DD"));
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);
Если ЗаказВТЧ Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок|Заказ");
ТабличныйДокумент.Присоединить(ОбластьМакета);
КонецЕсли;
ДанныеПечати.Очистить();
КонтактнаяИнформацияТоварногоЧека = Константы.КонтактнаяИнформацияТоварногоЧека.Получить();
Если КонтактнаяИнформацияТоварногоЧека <> Перечисления.КонтактнаяИнформацияТоварногоЧека.СтруктурнаяЕдиница Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
ПредставлениеПоставщика = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");
ДанныеПечати.Вставить("ПредставлениеПоставщика", ПредставлениеПоставщика);
ДанныеПечати.Вставить("Поставщик", Шапка.Организация);
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
Если КонтактнаяИнформацияТоварногоЧека <> Перечисления.КонтактнаяИнформацияТоварногоЧека.Организация Тогда
ОбластьМакета = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, "СтруктурнаяЕдиница", , Ошибки);
Если ОбластьМакета <> Неопределено Тогда
ПредставлениеСтруктурнойЕдиницы = Шапка.РозничнаяТочкаНаименование;
ФактАдресСтруктурнойЕдиницы = УправлениеНебольшойФирмойСервер.ПолучитьКонтактнуюИнформацию(Шапка.РозничнаяТочкаСсылка, Справочники.ВидыКонтактнойИнформации.ФактАдресСтруктурнойЕдиницы);
Если НЕ ПустаяСтрока(ФактАдресСтруктурнойЕдиницы) Тогда
ПредставлениеСтруктурнойЕдиницы = ПредставлениеСтруктурнойЕдиницы + ", " + ФактАдресСтруктурнойЕдиницы;
КонецЕсли;
ТелефонСтруктурнойЕдиницы = УправлениеНебольшойФирмойСервер.ПолучитьКонтактнуюИнформацию(Шапка.РозничнаяТочкаСсылка, Справочники.ВидыКонтактнойИнформации.ТелефонСтруктурнойЕдиницы);
Если НЕ ПустаяСтрока(ТелефонСтруктурнойЕдиницы) Тогда
ПредставлениеСтруктурнойЕдиницы = ПредставлениеСтруктурнойЕдиницы + ", " + ТелефонСтруктурнойЕдиницы;
КонецЕсли;
ДанныеПечати.Вставить("ПредставлениеСтруктурнойЕдиницы", ПредставлениеСтруктурнойЕдиницы);
Если КонтактнаяИнформацияТоварногоЧека = Перечисления.КонтактнаяИнформацияТоварногоЧека.СтруктурнаяЕдиница Тогда
ДанныеПечати.Вставить("ЗаголовокСтруктурнойЕдиницы", НСтр("ru ='Поставщик:'"));
КонецЕсли;
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
КонецЕсли;
Если ИспользоватьЗаказыВРозничнойТорговле И ЗначениеЗаполнено(Шапка.Контрагент) Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
СведенияОПокупателе = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Контрагент, Шапка.Дата, ,);
ДанныеПечати.Очистить();
ПредставлениеПолучателя = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");
ДанныеПечати.Вставить("ПредставлениеПолучателя", ПредставлениеПолучателя);
ДанныеПечати.Вставить("Получатель", Шапка.Контрагент);
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
Если ЗаказВШапке Тогда
Если ЗначениеЗаполнено(Шапка.Контрагент) ИЛИ ЗначениеЗаполнено(Шапка.Заказ) Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ЗаказШапка");
ОбластьМакета.Параметры.ПредставлениеЗаказа = ?(ЗначениеЗаполнено(Шапка.Заказ),
"№ "+ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Шапка.ЗаказНомер, Истина, Истина)+" от "+Формат(Шапка.ЗаказДата, "ДЛФ=D"),
"");
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
КонецЕсли;
ЕстьСкидки = Шапка.ТаблицаЗапасы.Итог("ЕстьСкидка") <> 0;
ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");
ТабличныйДокумент.Вывести(ОбластьНомера);
ТабличныйДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидки Тогда
ОбластьСкидок = Макет.ПолучитьОбласть("ШапкаТаблицы|Скидка");
ТабличныйДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьСуммы);
Если ЗаказВТЧ Тогда
ОбластьЗаказа = Макет.ПолучитьОбласть("ШапкаТаблицы|ЗаказТЧ");
ТабличныйДокумент.Присоединить(ОбластьЗаказа);
КонецЕсли;
ОбластьКолонкаЗапас = Макет.Область("Запас");
Если Не ЕстьСкидки Тогда
ОбластьКолонкаЗапас.ШиринаКолонки =
ОбластьКолонкаЗапас.ШиринаКолонки
+ Макет.Область("СуммаБезСкидки").ШиринаКолонки
+ Макет.Область("СуммаСкидки").ШиринаКолонки;
КонецЕсли;
ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
Если ЕстьСкидки Тогда
ОбластьСкидок = Макет.ПолучитьОбласть("Строка|Скидка");
КонецЕсли;
ОбластьСуммы = Макет.ПолучитьОбласть("Строка|Сумма");
Если ЗаказВТЧ Тогда
ОбластьЗаказВТЧ = Макет.ПолучитьОбласть("Строка|ЗаказТЧ");
КонецЕсли;
СтруктураИтогов = Новый Структура("Сумма, СуммаНДС, Всего, Количество, НомерСтроки, ВсегоСкидок, ВсегоБезСкидок, ЕстьСкидки, ЗаказВТЧ", 0, 0, 0, 0, 0, 0, 0, ЕстьСкидки, ЗаказВТЧ);
ПараметрыНоменклатуры = Новый Структура;
СтруктураЗаполненияСекции = Новый Структура;
Для каждого СтрокаЗапасы Из Шапка.ТаблицаЗапасы Цикл
Если НЕ ЗначениеЗаполнено(СтрокаЗапасы.Номенклатура) Тогда
ТекстОшибки = НСтр("ru ='В одной из строк не заполнено значение номенклатуры - строка при печати пропущена!'");
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, СтруктураЗаполненияСекции, ТекстОшибки, "");
Продолжить;
КонецЕсли;
ЗаполнитьДанныеПечатиПоСтрокеТабличнойЧастиТоварныйЧек(СтрокаЗапасы, СтруктураЗаполненияСекции, ПараметрыНоменклатуры, СтруктураИтогов, Шапка);
ОбластьНомера.Параметры.Заполнить(СтрокаЗапасы);
ОбластьНомера.Параметры.Заполнить(СтруктураЗаполненияСекции);
ОбластьДанных.Параметры.Заполнить(СтрокаЗапасы);
ОбластьДанных.Параметры.Заполнить(СтруктураЗаполненияСекции);
Если ЕстьСкидки Тогда
ОбластьСкидок.Параметры.Заполнить(СтрокаЗапасы);
ОбластьСкидок.Параметры.Заполнить(СтруктураЗаполненияСекции);
КонецЕсли;
ОбластьСуммы.Параметры.Заполнить(СтрокаЗапасы);
ОбластьСуммы.Параметры.Заполнить(СтруктураЗаполненияСекции);
Если ЗаказВТЧ Тогда
ОбластьЗаказВТЧ.Параметры.Заполнить(СтрокаЗапасы);
ОбластьЗаказВТЧ.Параметры.Заполнить(СтруктураЗаполненияСекции);
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьНомера);
ТабличныйДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидки Тогда
ТабличныйДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьСуммы);
Если ЗаказВТЧ Тогда
ТабличныйДокумент.Присоединить(ОбластьЗаказВТЧ);
КонецЕсли;
// Наборы
НаборыСервер.УчестьОформлениеСтрокиНабора(ТабличныйДокумент, ОбластьДанных, СтрокаЗапасы);
КонецЦикла;
// Вывести Итого.
СтруктураЗаполненияСекции.Вставить("ЗаголовокНДС", ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:"));
ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
ОбластьСкидок = Макет.ПолучитьОбласть("Итого|Скидка");
ОбластьСуммы = Макет.ПолучитьОбласть("Итого|Сумма");
ТабличныйДокумент.Вывести(ОбластьНомера);
ОбластьДанных.Параметры.Заполнить(СтруктураЗаполненияСекции);
ТабличныйДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидки Тогда
СтруктураЗаполненияСекции.Вставить("ВсегоСкидок", СтруктураИтогов.ВсегоСкидок);
СтруктураЗаполненияСекции.Вставить("ВсегоБезСкидок", СтруктураИтогов.ВсегоБезСкидок);
ОбластьСкидок.Параметры.Заполнить(СтруктураЗаполненияСекции);
ТабличныйДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
СтруктураЗаполненияСекции.Вставить("Сумма", СтруктураИтогов.Сумма);
СтруктураЗаполненияСекции.Вставить("СуммаНДС", СтруктураИтогов.СуммаНДС);
СтруктураЗаполненияСекции.Вставить("Всего", СтруктураИтогов.Всего);
ОбластьСуммы.Параметры.Заполнить(СтруктураЗаполненияСекции);
ТабличныйДокумент.Присоединить(ОбластьСуммы);
Если ЗаказВТЧ Тогда
ОбластьЗаказВТЧ = Макет.ПолучитьОбласть("Итого|ЗаказТЧ");
ТабличныйДокумент.Присоединить(ОбластьЗаказВТЧ);
КонецЕсли;
// Вывести Сумму прописью.
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
//СуммаКПрописи = СтруктураИтогов.Всего;
////ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего наименований "
//+ Строка(СтруктураИтогов.Количество)
//+ ", на сумму "
//+ УправлениеНебольшойФирмойСервер.ФорматСумм(СуммаКПрописи, Шапка.Валюта);
//ОбластьМакета.Параметры.СуммаПрописью = РаботаСКурсамиВалют.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.Валюта);
ТабличныйДокумент.Вывести(ОбластьМакета);
// Вывести подписи.
ОбластьМакета = Макет.ПолучитьОбласть("Подписи|ОсновныеДанные");
ОбластьМакета.Параметры.Заполнить(Шапка);
ТабличныйДокумент.Вывести(ОбластьМакета);
Если ЗаказВТЧ Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Подписи|Заказ");
ТабличныйДокумент.Присоединить(ОбластьМакета);
КонецЕсли;
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);
КонецЦикла;
Если Ошибки <> Неопределено Тогда
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки);
КонецЕсли;
Возврат ТабличныйДокумент;
КонецЕсли
//-----------------------------------------------------------------------------------------------------------------------
КонецФункции
Показатьпрошу без троллинга, ибо только начинаю во все это вникать.
По теме из базы знаний
- Подбор оборудования для информационных систем на платформе 1С
- Как сдать экзамен 1С:Специалист по платформе?
- Подсистема прав доступа (анализ ролей, отладка RLS, английский код, обычные и управляемые формы)
- CRM-система в 1С для автоматизации отдела продаж. Почему 1С – это лучшая платформа для CRM-системы?
- Как из 1С отдать миллионы строк в BI и успеть это сделать быстро
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот