|
Внешняя обработка печатной формы 🠗 (Serg_1960 25.05.2021 08:52) | ☑ | ||
---|---|---|---|---|
0
woody310798
25.05.21
✎
08:46
|
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1"); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма(); ПараметрыРегистрации.Версия = "1.0"; ПараметрыРегистрации.Назначение.Добавить("Документ.РеализацияТоваровУслуг"); ПараметрыРегистрации.Наименование = СинонимПечатнойФормы(); ПараметрыРегистрации.БезопасныйРежим = Истина; ПараметрыРегистрации.Информация = НСтр("ru = 'Печатная форма ""Печать32"" (""Печать32"" на русском языке).'"); НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = СинонимПечатнойФормы(); НоваяКоманда.Идентификатор = ИмяПечатнойФормы(); НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); НоваяКоманда.ПоказыватьОповещение = Истина; НоваяКоманда.Модификатор = "ПечатьMXL"; Возврат ПараметрыРегистрации; КонецФункции Процедура ПечатьЗ2(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, ИмяПечатнойФормы()) Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, ИмяПечатнойФормы(), СинонимПечатнойФормы(), ПечатьЗ2(МассивОбъектов, ОбъектыПечати) ); КонецЕсли; КонецПроцедуры Функция СинонимПечатнойФормы() Возврат НСтр("ru = 'З-2 (накладная на отпуск запасов)'"); КонецФункции Функция ИмяПечатнойФормы() Возврат "ПечатьЗ2"; КонецФункции Функция ПечатьЗ2(МассивОбъектов, ОбъектыПечати) Экспорт УстановитьПривилегированныйРежим(Истина); Запрос = Новый Запрос; Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов); Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | РеализацияТоваровУслуг.Номер, | РеализацияТоваровУслуг.Дата, | РеализацияТоваровУслуг.ДоговорКонтрагента КАК ДоговорКонтрагента, | РеализацияТоваровУслуг.Контрагент КАК Контрагент, | РеализацияТоваровУслуг.Организация, | РеализацияТоваровУслуг.СтруктурноеПодразделение, | РеализацияТоваровУслуг.Склад КАК Склад, | РеализацияТоваровУслуг.СуммаДокумента, | РеализацияТоваровУслуг.ВалютаДокумента, | РеализацияТоваровУслуг.УчитыватьНДС, | РеализацияТоваровУслуг.СуммаВключаетНДС, | РеализацияТоваровУслуг.УчитыватьАкциз, | РеализацияТоваровУслуг.СуммаВключаетАкциз, | РеализацияТоваровУслуг.Грузополучатель, | РеализацияТоваровУслуг.УдалитьДоверенность, | РеализацияТоваровУслуг.ДоверенностьЛицо, | РеализацияТоваровУслуг.Ссылка, | РеализацияТоваровУслуг.МоментВремени, | ВЫБОР | КОГДА РеализацияТоваровУслуг.Ответственный.ФизЛицо <> ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка) | ТОГДА РеализацияТоваровУслуг.Ответственный.ФизЛицо | ИНАЧЕ РеализацияТоваровУслуг.Ответственный | КОНЕЦ КАК Ответственный, | РеализацияТоваровУслуг.ДоверенностьВыдана, | РеализацияТоваровУслуг.ДоверенностьДата, | РеализацияТоваровУслуг.ДоверенностьНомер |ПОМЕСТИТЬ ВТ_ДанныеДокумента |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Ссылка В(&МассивОбъектов) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | МАКСИМУМ(ОтветственныеЛица.Период) КАК Период, | ОтветственныеЛица.СтруктурнаяЕдиница КАК Склад, | ВТ_ДанныеДокумента.Ссылка |ПОМЕСТИТЬ ВТ_ПериодыОтвЛиц |ИЗ | РегистрСведений.ОтветственныеЛица КАК ОтветственныеЛица | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ДанныеДокумента КАК ВТ_ДанныеДокумента | ПО ОтветственныеЛица.СтруктурнаяЕдиница = ВТ_ДанныеДокумента.Склад | И ОтветственныеЛица.Период <= ВТ_ДанныеДокумента.Дата | |СГРУППИРОВАТЬ ПО | ОтветственныеЛица.СтруктурнаяЕдиница, | ВТ_ДанныеДокумента.Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ПериодыОтвЛиц.Ссылка, | ВТ_ПериодыОтвЛиц.Склад, | ОтветственныеЛица.ФизическоеЛицо |ПОМЕСТИТЬ ВТ_МОЛ |ИЗ | ВТ_ПериодыОтвЛиц КАК ВТ_ПериодыОтвЛиц | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОтветственныеЛица КАК ОтветственныеЛица | ПО ВТ_ПериодыОтвЛиц.Период = ОтветственныеЛица.Период | И ВТ_ПериодыОтвЛиц.Склад = ОтветственныеЛица.СтруктурнаяЕдиница |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ДанныеДокумента.Номер, | ВТ_ДанныеДокумента.Дата, | ВТ_ДанныеДокумента.Дата КАК ДатаДокумента, | ВТ_ДанныеДокумента.ДоговорКонтрагента КАК Основание, | ВТ_ДанныеДокумента.Контрагент, | ВТ_ДанныеДокумента.Организация, | ВТ_ДанныеДокумента.СтруктурноеПодразделение, | ВТ_ДанныеДокумента.Склад, | ВТ_ДанныеДокумента.СуммаДокумента, | ВТ_ДанныеДокумента.ВалютаДокумента, | ВТ_ДанныеДокумента.УчитыватьНДС, | ВТ_ДанныеДокумента.СуммаВключаетНДС, | ВТ_ДанныеДокумента.УчитыватьАкциз, | ВТ_ДанныеДокумента.СуммаВключаетАкциз, | ВТ_ДанныеДокумента.Грузополучатель, | ВТ_ДанныеДокумента.УдалитьДоверенность, | ВТ_ДанныеДокумента.ДоверенностьЛицо КАК ДоверенностьЛицо, | ВТ_ДанныеДокумента.Ссылка, | ВТ_МОЛ.ФизическоеЛицо КАК ОтпустилМОЛ, | ВТ_ДанныеДокумента.Ответственный, | ВТ_ДанныеДокумента.ДоверенностьВыдана, | ВТ_ДанныеДокумента.ДоверенностьДата, | ВТ_ДанныеДокумента.ДоверенностьНомер |ИЗ | ВТ_ДанныеДокумента КАК ВТ_ДанныеДокумента | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_МОЛ КАК ВТ_МОЛ | ПО ВТ_ДанныеДокумента.Ссылка = ВТ_МОЛ.Ссылка | |УПОРЯДОЧИТЬ ПО | ВТ_ДанныеДокумента.МоментВремени"; ДанныеДокументов = Запрос.Выполнить().Выбрать(); Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Ссылка КАК Ссылка, | МИНИМУМ(РеализацияТоваровУслугТовары.НомерСтроки) КАК НомерСтроки, | РеализацияТоваровУслугТовары.Номенклатура, | ВЫБОР | КОГДА НЕ РеализацияТоваровУслугТовары.Номенклатура.НаименованиеПолное ПОДОБНО """" | ТОГДА ВЫРАЗИТЬ(РеализацияТоваровУслугТовары.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) | ИНАЧЕ РеализацияТоваровУслугТовары.Номенклатура.Наименование | КОНЕЦ КАК ТоварПредставление, | РеализацияТоваровУслугТовары.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияНаименование, | РеализацияТоваровУслугТовары.Номенклатура.Код КАК ТоварКод, | СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество, | РеализацияТоваровУслугТовары.Цена, | СУММА(РеализацияТоваровУслугТовары.Сумма) КАК Сумма, | СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК СуммаНДС, | СУММА(РеализацияТоваровУслугТовары.СуммаАкциза) КАК СуммаАкциза |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов) | |СГРУППИРОВАТЬ ПО | РеализацияТоваровУслугТовары.Номенклатура, | РеализацияТоваровУслугТовары.ЕдиницаИзмерения.Наименование, | РеализацияТоваровУслугТовары.Номенклатура.Код, | РеализацияТоваровУслугТовары.Цена, | РеализацияТоваровУслугТовары.Ссылка, | ВЫБОР | КОГДА НЕ РеализацияТоваровУслугТовары.Номенклатура.НаименованиеПолное ПОДОБНО """" | ТОГДА ВЫРАЗИТЬ(РеализацияТоваровУслугТовары.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) | ИНАЧЕ РеализацияТоваровУслугТовары.Номенклатура.Наименование | КОНЕЦ | |УПОРЯДОЧИТЬ ПО | НомерСтроки |ИТОГИ | СУММА(Сумма), | СУММА(СуммаНДС), | СУММА(СуммаАкциза) |ПО | Ссылка"; ВыборкаСтрокТоварыИтоги = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.КлючПараметровПечати = "РеализацияТоваровУслуг_З2"; Пока ДанныеДокументов.Следующий() Цикл Макет = ЭтотОбъект.ПолучитьМакет("Накладная"); Если ТабДокумент.ВысотаТаблицы > 0 Тогда ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1; ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьМакетаИтогоПрописью = Макет.ПолучитьОбласть("ИтогоПрописью"); ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал"); СтруктурнаяЕдиницаОрганизация = ОбщегоНазначенияБК.ПолучитьСтруктурнуюЕдиницу(ДанныеДокументов.Организация, ДанныеДокументов.СтруктурноеПодразделение); СведенияОбОрганизации = ОбщегоНазначенияБКВызовСервера.СведенияОЮрФизЛице(СтруктурнаяЕдиницаОрганизация, ДанныеДокументов.Дата); ОбластьМакетаШапка.Параметры.Заполнить(ДанныеДокументов); ОбластьМакетаШапка.Параметры.ПредставлениеОрганизации = ОбщегоНазначенияБКВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,"); ОбластьМакетаШапка.Параметры.ПредставлениеОтправителя = ОбщегоНазначенияБКВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,"); ОбластьМакетаШапка.Параметры.ОрганизацияРНН_БИН = ОбщегоНазначенияБКВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "БИН_ИИН,", Ложь, ДанныеДокументов.Дата, "ru"); ОбластьМакетаШапка.Параметры.НомерДокумента = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ДанныеДокументов.Номер, ДанныеДокументов.Ссылка); ОтветственныйДляПечати = ""; ДолжностьОтветственного = ""; Если ТипЗнч(ДанныеДокументов.Ответственный) = Тип("СправочникСсылка.ФизическиеЛица") Тогда ДанныеОтветственного = ПроцедурыУправленияПерсоналомВызовСервера.ДанныеФизЛица(ДанныеДокументов.Организация, ДанныеДокументов.Ответственный, ДанныеДокументов.Дата); ОтветственныйДляПечати = ДанныеОтветственного.Представление; ДолжностьОтветственного = ДанныеОтветственного.Должность; Иначе ОтветственныйДляПечати = ДанныеДокументов.Ответственный; КонецЕсли; ОбластьМакетаШапка.Параметры.ОтветственныйЗаПоставку = ОтветственныйДляПечати; ПредставлениеПолучателя = ОбщегоНазначенияБКВызовСервера.ОписаниеОрганизации(ОбщегоНазначенияБКВызовСервера.СведенияОЮрФизЛице(ДанныеДокументов.Контрагент, ДанныеДокументов.Дата), "ПолноеНаименование,"); ОбластьМакетаШапка.Параметры.ПредставлениеПолучателя = ПредставлениеПолучателя; ТабДокумент.Вывести(ОбластьМакетаШапка); УчитыватьНДС_ = ДанныеДокументов.УчитыватьНДС; УчитыватьАкциз_ = ДанныеДокументов.УчитыватьАкциз; СуммаВключаетНДС_ = ДанныеДокументов.СуммаВключаетНДС; СуммаВключаетАкциз_ = ДанныеДокументов.СуммаВключаетАкциз; ПрибавлятьНДС = УчитыватьНДС_ И (НЕ СуммаВключаетНДС_); ПрибавлятьАкциз = УчитыватьАкциз_ И (НЕ СуммаВключаетАкциз_); // Выводим заголовок таблицы Если УчитыватьАкциз_ Тогда ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицыАкциз"); Иначе ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы"); КонецЕсли; ЗаголовокТаблицы.Параметры.Валюта = ДанныеДокументов.ВалютаДокумента; ТабДокумент.Вывести(ЗаголовокТаблицы); ИтогоКоличество = 0; // Выводим многострочную часть документа Если УчитыватьАкциз_ Тогда ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицыАкциз"); Иначе ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы"); КонецЕсли; НомерСтроки = 1; ВыборкаСтрокТоварыИтоги.Сбросить(); Если ВыборкаСтрокТоварыИтоги.НайтиСледующий(ДанныеДокументов.Ссылка) Тогда ВыборкаСтрокТовары = ВыборкаСтрокТоварыИтоги.Выбрать(); Иначе ВыборкаСтрокТовары = Неопределено; КонецЕсли; Если ВыборкаСтрокТовары <> Неопределено Тогда Пока ВыборкаСтрокТовары.Следующий() Цикл Количество = ВыборкаСтрокТовары.Количество; Если Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабДокумент, ОбластьСтрокаТаблицы) Тогда ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); ТабДокумент.Вывести(ЗаголовокТаблицы); КонецЕсли; ОбластьСтрокаТаблицы.Параметры.Заполнить(ВыборкаСтрокТовары); ОбластьСтрокаТаблицы.Параметры.НомерПП = НомерСтроки; ОбластьСтрокаТаблицы.Параметры.ТоварНаименование = СокрЛП(ВыборкаСтрокТовары.ТоварПредставление); СуммаСНДС = ?(ПрибавлятьНДС, ВыборкаСтрокТовары.Сумма + ВыборкаСтрокТовары.СуммаНДС, ВыборкаСтрокТовары.Сумма); Если УчитыватьАкциз_ И ПрибавлятьАкциз Тогда СуммаСНДС = СуммаСНДС + ВыборкаСтрокТовары.СуммаАкциза; КонецЕсли; ОбластьСтрокаТаблицы.Параметры.СуммаСНДС = СуммаСНДС; ИтогоКоличество = ИтогоКоличество + Количество; ТабДокумент.Вывести(ОбластьСтрокаТаблицы); НомерСтроки = НомерСтроки + 1; КонецЦикла; КонецЕсли; // Выводим итоги по документу Если УчитыватьАкциз_ Тогда ОбластьМакета = Макет.ПолучитьОбласть("ИтогоАкциз"); Иначе ОбластьМакета = Макет.ПолучитьОбласть("Итого"); КонецЕсли; ИтогоСумма = ВыборкаСтрокТоварыИтоги.Сумма; Если ИтогоСумма <> Неопределено Тогда ИтогоСумма = ?(ПрибавлятьНДС, ИтогоСумма + ВыборкаСтрокТоварыИтоги.СуммаНДС, ИтогоСумма); ИтогоСумма = ?(ПрибавлятьАкциз, ИтогоСумма + ВыборкаСтрокТоварыИтоги.СуммаАкциза, ИтогоСумма); КонецЕсли; ОбластьМакета.Параметры.ИтогоСуммаСНДС = ИтогоСумма; ОбластьМакета.Параметры.ИтогоСуммаНДС = ВыборкаСтрокТоварыИтоги.СуммаНДС; ОбластьМакета.Параметры.ИтогоКоличество = ИтогоКоличество; Если УчитыватьАкциз_ Тогда ОбластьМакета.Параметры.ИтогоСуммаАкциза = ВыборкаСтрокТоварыИтоги.СуммаАкциза; КонецЕсли; ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("ИтогоПрописью"); ОбластьМакета.Параметры.Валюта = ДанныеДокументов.ВалютаДокумента; ОбластьМакета.Параметры.КоличествоОтпущенныхЗапасовПрописью = ОбщегоНазначенияБКВызовСервера.КоличествоПрописью(ИтогоКоличество); ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначенияБКВызовСервера.СформироватьСуммуПрописью(?(ЗначениеЗаполнено(ИтогоСумма),ИтогоСумма,0), ДанныеДокументов.ВалютаДокумента); ТабДокумент.Вывести(ОбластьМакета); // вывод подписей ОбластьМакета = Макет.ПолучитьОбласть("Подвал"); ОбластьМакета.Параметры.Заполнить(ДанныеДокументов); Руководители = ОбщегоНазначенияБКВызовСервера.ОтветственныеЛицаОрганизаций(СтруктурнаяЕдиницаОрганизация, ДанныеДокументов.Дата,); Бухгалтер = ?(НЕ ЗначениеЗаполнено(Руководители.ГлавныйБухгалтер), "Не предусмотрен", Руководители.ГлавныйБухгалтер); ОбластьМакета.Параметры.ГлБухгалтер = Бухгалтер; ОбластьМакета.Параметры.ОтпускРазрешил = ОтветственныйДляПечати; ОбластьМакета.Параметры.ОтпускРазрешилДолжность = ДолжностьОтветственного; //данные по доверенности ДанныеДоверенности = Новый Структура("ДоверенностьНомер,ДоверенностьДата,УдалитьДоверенность,ДоверенностьЛицо,ДоверенностьВыдана"); ЗаполнитьЗначенияСвойств(ДанныеДоверенности,ДанныеДокументов); ОбщегоНазначенияБК.ЗаполнитьДанныеДоверенностиВПечатнойФорме(ДанныеДоверенности, ОбластьМакета); // заполняем МОЛ Если ЗначениеЗаполнено(ДанныеДокументов.Склад) Тогда ДанныеМОЛ = ПроцедурыУправленияПерсоналомВызовСервера.ДанныеФизЛица(ДанныеДокументов.Организация, ДанныеДокументов.ОтпустилМОЛ, ДанныеДокументов.Дата); ОбластьМакета.Параметры.МОЛОтпустил = ДанныеМОЛ.Представление; КонецЕсли; ТабДокумент.Вывести(ОбластьМакета); УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеДокументов.Ссылка); КонецЦикла; Возврат ТабДокумент; КонецФункции Почему не работает ? |
|||
1
Mankubus
25.05.21
✎
08:47
|
переформулируйте вопрос.
что именно не работает? |
|||
2
ДенисЧ
25.05.21
✎
08:49
|
Многабуков, ниасилил всио прачетать...
|
|||
3
END
25.05.21
✎
08:49
|
(0) это, похоже, отсюда Ищем программистов 1С любого уровня (г. Ярославль и/или удаленка), для очень опытных от 90 тыс. тестовое задание выполняет :)
|
|||
4
Serg_1960
модератор
25.05.21
✎
09:00
|
(0) Более чётко сформулируйте возникшую проблему.
|
|||
5
savaB
25.05.21
✎
09:06
|
Процедура ПечатьЗ2(МассивОбъектов, -->> Процедура Печать(МассивОбъектов,
|
|||
6
mikecool
25.05.21
✎
09:44
|
не работает потому, что не совпадает идентификатор в описании ПФ и ИД, который используется в коде
|
|||
7
mikecool
25.05.21
✎
09:44
|
+6 в результате - пусто
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |