Печать документа в 1С Предприятии с выводом в СКД
Пример конфигурации 1С на управляемых формах с демонстрацией вывода формы печати созданной в СКД (Схема компоновки данных):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
&НаКлиенте Процедура Печать(Команда) перем ТабДок; ПечатьДокумента(ТабДок); ТабДок.Показать(); ТабДок.ОтображатьЗаголовки = ЛОЖЬ; ТабДок.ОтображатьСетку = ЛОЖЬ; ТабДок.ТолькоПросмотр = ИСТИНА; КонецПроцедуры &НаСервере Процедура ПечатьДокумента(ТабДок) НашЗапрос = Новый Запрос; НашЗапрос.Текст = "ВЫБРАТЬ | ПоступлениеТоваровУслуг.ссылка.Дата КАК Дата, | ПоступлениеТоваровУслуг.ссылка.Контрагент КАК Контрагент, | ПоступлениеТоваровУслуг.ссылка.Организация КАК Организация, | ПоступлениеТоваровУслуг.ссылка.Ссылка КАК Ссылка, | ПоступлениеТоваровУслуг.Номенклатура КАК Номенклатура, | ПоступлениеТоваровУслуг.Количество КАК Количество, | ПоступлениеТоваровУслуг.Цена КАК Цена, | ПоступлениеТоваровУслуг.Сумма КАК Сумма |ИЗ | Документ.ПоступлениеТоваровУслуг.ТЧ КАК ПоступлениеТоваровУслуг |ГДЕ | ПоступлениеТоваровУслуг.Ссылка = &ТекущийДокумент"; НашЗапрос.УстановитьПараметр("ТекущийДокумент", Объект.Ссылка); РезультатЗапроса = НашЗапрос.Выполнить().Выбрать(); ТабДок = Новый ТабличныйДокумент; //Шапка НашМакет = РеквизитФормыВЗначение("Объект"); Макет = НашМакет.ПолучитьМакет("Макет"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьШапка.параметры.ДатаДок = Формат(Объект.Дата,"ДФ=dd.MM.yyyy"); ТабДок.Вывести(ОбластьШапка); //Шапка таблицы ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ТабДок.Вывести(ОбластьШапкаТаблицы); //Строки таблицы ОбластьСтроки = Макет.ПолучитьОбласть("Строка"); пп = 1; Ит = 0; Пока РезультатЗапроса.Следующий() Цикл ОбластьСтроки.параметры.заполнить(РезультатЗапроса); //ОбластьСтроки.параметры.Номенклатура = РезультатЗапроса.Номенклатура; //ОбластьСтроки.параметры.Количество = РезультатЗапроса.Количество; //ОбластьСтроки.параметры.Цена = РезультатЗапроса.Цена; //ОбластьСтроки.параметры.Сумма = РезультатЗапроса.Сумма; ОбластьСтроки.параметры.пп = пп; пп = пп + 1; Ит = Ит + РезультатЗапроса.сумма; ТабДок.Вывести(ОбластьСтроки); КонецЦикла; //Для каждого стр из Объект.ТЧ Цикл // ОбластьСтроки.параметры.заполнить(стр); // ОбластьСтроки.параметры.пп = пп; // пп = пп + 1; // Ит = Ит + стр.сумма; // ТабДок.Вывести(ОбластьСтроки); //КонецЦикла; //Итог таблицы ОбластьИтог = Макет.ПолучитьОбласть("Итог"); ОбластьИтог.параметры.ИтогСумма = Ит; ТабДок.Вывести(ОбластьИтог); //Итог подвал ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьПодвал.Параметры.Организация = Объект.Организация; ОбластьПодвал.Параметры.Контрагент = Объект.Контрагент; ОбластьПодвал.Параметры.Склад = Объект.Склад; ТабДок.Вывести(ОбластьПодвал); КонецПроцедуры &НаКлиенте Процедура ТЧКоличествоПриИзменении(Элемент) ТекСтр = Элементы.ТЧ.ТекущиеДанные; ТекСтр.Сумма = ТекСтр.Количество * ТекСтр.Цена; КонецПроцедуры &НаКлиенте Процедура ТЧЦенаПриИзменении(Элемент) ТекСтр = Элементы.ТЧ.ТекущиеДанные; ТекСтр.Сумма = ТекСтр.Количество * ТекСтр.Цена; КонецПроцедуры &НаКлиенте Процедура ПечатьЧерезСКД(Команда, ТабДок) ПечатьЧерезСКДНаСервере(ТабДок); ТабДок.Показать(); КонецПроцедуры &НаСервере Процедура ПечатьЧерезСКДНаСервере(ТабДок) ТекОбъект = РеквизитФормыВЗначение("Объект"); СхемаСКД = ТекОбъект.ПолучитьМакет("МакетСКД"); НастройкиСКД = СхемаСКД.НастройкиПоУмолчанию; ПараметрыДанныхСКД = НастройкиСКД.ПараметрыДанных.Элементы; ЭлементДокумент = ПараметрыДанныхСКД.Найти("Документ"); ЭлементДокумент.Использование = ИСТИНА; ЭлементДокумент.Значение = Объект.Ссылка; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакета.Выполнить(СхемаСКД, НастройкиСКД); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет); ТабДок = Новый ТабличныйДокумент; ТабДок.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабДок); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры |