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

Печать - Печатные формы документов

В статье 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 Тогда 
                                   ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц()
                       КонецЕсли;
                       ТабДокумент.Вывести(ТабДокументОбъекта)
           КонецЦикла;
           Возврат ТабДокумент
КонецФункции 

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

 

 

См. также

Лучшие комментарии
2. Владимир Литвиненко (VladimirL) 584 18.09.17 13:42 Сейчас в теме
Насколько понимаю эта информация относится в целом к БСП 2.4.3 https://its.1c.ru/db/bsp243doc#content:9323:hdoc , не только к Бухгалтерии 3.0.52.35. А значит справедлива для предстоящих обновлений всех типовых конфигураций. Сравните с документацией по БСП 2.3.6 https://its.1c.ru/db/bsp23doc#content:1728:hdoc.

Было бы хорошо изменить заголовок публикации. Тема касается большего количества пользователей, чем может заинтересовать заголовок.
Остальные комментарии
1. Дмитрий Конаков (dkonakov) 5 18.09.17 13:07 Сейчас в теме
Спасибо, очень вовремя написанная статья!
2. Владимир Литвиненко (VladimirL) 584 18.09.17 13:42 Сейчас в теме
Насколько понимаю эта информация относится в целом к БСП 2.4.3 https://its.1c.ru/db/bsp243doc#content:9323:hdoc , не только к Бухгалтерии 3.0.52.35. А значит справедлива для предстоящих обновлений всех типовых конфигураций. Сравните с документацией по БСП 2.3.6 https://its.1c.ru/db/bsp23doc#content:1728:hdoc.

Было бы хорошо изменить заголовок публикации. Тема касается большего количества пользователей, чем может заинтересовать заголовок.
3. Дмитрий Конаков (dkonakov) 5 18.09.17 13:47 Сейчас в теме
(2) Первыми столкнулись именно пользователи БП 3.0.
4. Андрей Романовский (and_r) 18.09.17 20:13 Сейчас в теме
Большое спасибо за статью! Уже голову сломал как вернуть печать, все сделал кроме общего модуля
5. Бубузяка (Бубузяка) 62 20.09.17 09:14 Сейчас в теме
1. Что касается БП 3.0, то эта статья для тех кто не знает, что это можно прочитать в файле "UpdateSSLhtm" в каталоге, куда устанавливается БСП 2.4. Скачайте БСП 2.4 и получите порядок обновления этой подсистемы и прочих, которые поменялись в 2.4. К тому же 1С поставляет обработку, которая модифицирует код старой версии БСП в объектах, подключенных к БСП при внедрении.

2. Порядок внедрения БСП изложен в документации https://its.1c.ru/db/bsp244doc/ в картинках и кусках кода для вставки, если делать по шагам, то проблем не возникает.
berezdetsky; h00k; the1; +3 Ответить
6. vicmos victor (vicmos) 40 25.09.17 23:16 Сейчас в теме
Большое спасибо за помощь!!!!!!!!
7. shumvlesu 26.09.17 17:34 Сейчас в теме
&НаКлиенте 
Процедура Подключаемый_ВыполнитьКоманду(Команда)
         Если Команда.Имя = "ПодменюПечатьОбычное_Реестр" Тогда 
             НастройкиДинамическогоСписка();
         КонецЕсли;
         ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры


У меня ругалось на ВыполнитьКоманду пока не глянул в параметры этой процедуры. Элементы.Список должен содержать поле - Ссылка. Версия БСП - 2.4.2.25
8. Павел Королев (Korolev) 50 28.09.17 10:17 Сейчас в теме
Благодарю за публикацию. Пригодилась! :)
9. Бойков Илья (l2qweit) 28.09.17 15:09 Сейчас в теме
Огромное человеческое спасибо !!! особенно за.

В общем модуле УправлениеПечатьюПереопределяемый, в процедуре ПриОпределенииОбъектовСКомандамиПечати нужно добавить свои созданные документы, для которых нужна печать:
10. Николай (nipil) 03.10.17 18:32 Сейчас в теме
Есть косяк именно в бухгалтерии 3.0.52.*.
Для подключенных "Дополнительных отчетов и обработок" в "ФормеСписка" для документов пропала кнопка - "Отчеты...".
Причем в БСП все нормально работает.
Глубоко не копал. Тестовую конфигурацию вылечил:

...."Включить возможность изменения"
Документы.ПлатежныеПоручения.ФормаСписка
ГруппаКоманднаяПанель добавил ПодменюПечать.

Сейчас пытаюсь написать дополнительную обработку которая по кнопке "Печать " восстановит кнопку "Отчеты...". (Опять зубы через задницу лечить...)
11. Николай (nipil) 04.10.17 19:22 Сейчас в теме
Решил расширением конфигурации.
Общий модуль - Подключаемые команды
&После("ВывестиКоманды")
Процедура рПП_ВывестиКоманды(Форма, Команды, ПараметрыРазмещения)
	Если Форма.Имяформы = "Документ.ПлатежноеПоручение.Форма.ФормаСписка" Тогда
		// Сменим родителя ПодменюОтчеты
			ЭлементПодменюОтчеты = Форма.Элементы.Найти("ПодменюОтчеты");
			ЭлементГруппаКоманднаяПанель = Форма.Элементы.Найти("ГруппаКоманднаяПанель");
			Форма.Элементы.Переместить(ЭлементПодменюОтчеты,ЭлементГруппаКоманднаяПанель);
	КонецЕсли;
КонецПроцедуры
Показать
12. Катя Котова (Dunda) 46 06.10.17 15:16 Сейчас в теме
ОООООООО спасибо огромное! Методом тыка нашла лишние процедуры, теперь по вашей статье попробую до конца доделать
13. Алексей Марков (Alex_1974) 24 09.10.17 13:28 Сейчас в теме
Присоединяюсь к благодарившим, очень вовремя, просто спасли!!!
14. Peter Metelkin (iiceberg) 78 18.10.17 10:18 Сейчас в теме
Добавлю свои 5 копеек.
Когда добавляете (переписываете) под БСП 2.4 свои объекты, по мимо действий указанных в статье, по крайней мере для ERP 2.4, необходимо проделать еще несколько манипуляций, что бы вся эта магия от 1С версии 2.4 заработала.
А конкретно надо сделать следующее:
Для Добавления команд Отчеты, ввод на основании надо указать БСП, что для этого объекта надо использовать механизм "стандартных подсистем". Делаем следующее:
- для отчетов: Общий модуль "ВариантыОтчетовПереопределяемый" процедура "ОпределитьОбъектыСКомандамиОтчетов" добавляем свой объект в массив.

- для Ввода на основании: Общий модуль "СозданиеНаОснованииПереопределяемый" процедура "ПриОпределенииОбъектовСКомандамиСозданияНаОсновании" добавляем свой объект в массив.

для печати, заполнения и проч. видимо тоже есть процедуры, но я их не искал и не использовал из-за ненадобности (пока еще) =).

надеюсь сэкономил полчаса работы.
bugtester; +1 Ответить
Оставьте свое сообщение