воскресенье, 1 мая 2022 г.

Добавление команд печати в конфигурациях на БСП 2.4.3 (в частности, в самописных документах в Бухгалтерии 3.0 после релиза 3.0.52.35)

 https://infostart.ru/1c/articles/674880/

 

 

В статье https://infostart.ru/public/237013/ пользователя nick max рассматривался список действий для подключения команд печати в Бухгалтерии 3.0, работающей на БСП 2.3.6. В новом релизе Бухгалтерии 3.0.52.35 от 15.09.2017г. стала использоваться БСП 2.4.3, из-за чего произошли изменения в процедурах общих модулей, связанных с механизмом печати, и в процедурах их вызова в формах документов и в формах списков. Рассмотрим их.

В статье //infostart.ru/public/237013/ пользователя nick max  рассматривался список действий для подключения команд печати в Бухгалтерии 3.0, работающей на БСП 2.3.6.
В новом релизе Бухгалтерии 3.0.52.35 от 15.09.2017г. стала использоваться БСП 2.4.3, из-за чего произошли изменения в процедурах общих модулей, связанных с механизмом печати, и в процедурах их вызова в формах документов и в формах списков.
Рассмотрим их.

1. В процедуре ПриСозданииНаСервере изменился код с:

&НаСервере 
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) 
         УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма, Элементы.ГруппаПечать)
КонецПроцедуры 

на:

&НаСервере 
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
           // СтандартныеПодсистемы.ПодключаемыеКоманды
           ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
           // Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры

Замечание: Подменю ГруппаПечать на форме теперь не нужно создавать и передавать в параметр.

2. В Форме Документа вместо процедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)
          УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Объект)
КонецПроцедуры  

теперь целых три:

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте 
Процедура Подключаемый_ВыполнитьКоманду(Команда)
          ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры 

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
          ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры 

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
          ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры 
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

 

а в Формы Списка вместо:

(помним, что Объект заменяется на Элементы.Список)

&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)
         УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Элементы.Список)
КонецПроцедуры

будет четыре:

&НаСервере
Процедура НастройкиДинамическогоСписка()
         Отчеты.РеестрДокументов.НастройкиДинамическогоСписка(ЭтотОбъект);
КонецПроцедуры

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте 
Процедура Подключаемый_ВыполнитьКоманду(Команда)
         Если Команда.Имя = "ПодменюПечатьОбычное_Реестр" Тогда 
             НастройкиДинамическогоСписка();
         КонецЕсли;
         ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
          ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.Список, Результат);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
          ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

 

3. И то, чего нет в указанной статье:

В общем модуле УправлениеПечатьюПереопределяемый, в процедуре ПриОпределенииОбъектовСКомандамиПечати  нужно добавить свои созданные документы, для которых нужна печать:

Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт
               ....
               СписокОбъектов.Добавить(Документы.ФормированиеЗаписейРаздела7ДекларацииНДС);
               ////////////////////Свои документы
               СписокОбъектов.Добавить(Документы.МойДокумент1);
               СписокОбъектов.Добавить(Документы.МойДокумент2);
               ....
КонецПроцедуры 

 

В Модуле Менеджера всё остается без изменений.

(для полноты приведен урезанный код примера Модуля Менеджера из указанной статьи //infostart.ru/public/237013/ )

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт 
                  КомандаПечати = КомандыПечати.Добавить();
                  КомандаПечати.Идентификатор = "Акт";
                  КомандаПечати.Представление = "Дополнительный акт";
                  КомандаПечати.Обработчик    = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
                  КомандаПечати.СписокФорм    = "ФормаСписка,ФормаДокумента";
КонецПроцедуры 

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт 
                ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
                Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Акт") Тогда  УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Акт", "Акт",
                               СформироватьНесколькоАктов(МассивОбъектов),"Документ.Приказ.Акт");
                КонецЕсли;
КонецПроцедуры 

Функция   СформироватьНесколькоАктов(МассивОбъектов)
            ТабДокумент = Новый ТабличныйДокумент;
            Для каждого Ссылка из МассивОбъектов Цикл
                       ТабДокументОбъекта = СформироватьАкт(Ссылка);
                       Если ТабДокумент.ВысотаТаблицы > 0 И ТабДокументОбъекта.ВысотаТаблицы > 0 Тогда 
                                   ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц()
                       КонецЕсли;
                       ТабДокумент.Вывести(ТабДокументОбъекта)
           КонецЦикла;
           Возврат ТабДокумент
КонецФункции 

Функция  СформироватьАкт(Ссылка)
             ТабДокумент = Новый ТабличныйДокумент;
             // подготовка ТабДокумента
             Возврат ТабДокумент
КонецФункции 

 

1С УПП , списание административных расходов на финансовый результат

 При проведение месяца, при определение финансовых результатов не формируются проводки: D 801.1  K 721.1 D 801.1  K 721.3