Добавление команд печати в конфигурациях на БСП 2.4.3 (в частности, в самописных документах в Бухгалтерии 3.0 после релиза 3.0.52.35)
Разработка - БСП (Библиотека стандартных подсистем)
В статье //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 Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц()
КонецЕсли;
ТабДокумент.Вывести(ТабДокументОбъекта)
КонецЦикла;
Возврат ТабДокумент
КонецФункции
Функция СформироватьАкт(Ссылка)
ТабДокумент = Новый ТабличныйДокумент;
// подготовка ТабДокумента
Возврат ТабДокумент
КонецФункции
INFOSTART PrintWizard: Конструктор печатных форм в 1С 8.3
INFOSTART PrintWizard помогает быстро создавать и унифицировать печатные формы в 1С. Снижает трудозатраты разработчиков, повышает качество и прозрачность отчётов, наводит порядок в корпоративных шаблонах документов.
Вступайте в нашу телеграмм-группу Инфостарт
БСП 2.4.3 БСП 2.3.6 релиз Бухгалтерии 3.0.52.35 команды печати механизм печати печатные формы Бухгалтерия 3.0 БП 3.0 самописный документ свой документ новый документ нетиповой документ.
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
БСП (Библиотека стандартных подсистем) Разработчик Платные (руб)
Синтакс-помощник БСП - cправочник по библиотекам стандартных подсистем и электронных документов. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП и БЭД.
3254 руб.
21.11.2024 14642 51 30
Файловый обмен (TXT, XML, DBF), FTP БСП (Библиотека стандартных подсистем) Разработчик 1С:Предприятие 8 1С:Библиотека стандартных подсистем Россия Бесплатно (free)
Продолжение истории о своём движке, который превращает CF в XML без базы и без платформы. Теперь БСП 3.1 выгружается полностью: 9 174 из 9 174 файлов совпадают со штатной выгрузкой байт в байт, ошибок ноль. Для разработчиков, которым интересен внутренний формат 1С и выгрузка конфигураций в файлы.
29.10.2026 2125 vanya_gonchar 21
БСП (Библиотека стандартных подсистем) Разработчик 1С:Предприятие 8 1С:Библиотека стандартных подсистем Бесплатно (free)
Наиболее часто используемые методы БСП 3.1.12. На момент публикации БСП 3.1.12 - является последней версией, и на ней построены все новые типовые конфигурации.
28.09.2026 4971 SergMuravev 2
БСП (Библиотека стандартных подсистем) Разработчик 1С 8.3 1С:Библиотека стандартных подсистем Россия Абонемент ($m)
Все мы когда-то писали свои функции для получения реквизита через точку или парсинга строк. В этой статье собрана выжимка самых полезных и ежедневно необходимых процедур и функций БСП. Никакой сухой документации ИТС — только жизненные кейсы, чистый код и разбор ситуаций, когда стандартные подсистемы делают работу за нас.
1 стартмани
30.07.2026 10360 Elya_Elya 14
БСП (Библиотека стандартных подсистем) Разработчик Стажер 1С:Предприятие 8 1С:Библиотека стандартных подсистем Бесплатно (free)
Часто требуется вывести понятное пользователю сообщение, ткнув его в конкретный проблемный реквизит, что называется, "носом"... И вот тут довольно часто приходится перечитывать параметры функции ОбщегоНазначения[Клиент].СообщениеПользователю. Решила написать для себя шпаргалку и поделиться с сообществом.
24.07.2026 3155 check2 2
БСП (Библиотека стандартных подсистем) Разработчик 1С 8.3 1С:Библиотека стандартных подсистем Бесплатно (free)
Каждый раз, когда разработчик 1С пишет очередной цикл для свертки массива или использует конструкцию Попытка / Исключение для проверки наличия реквизита, где-то грустит один архитектор фирмы «1С». Мы привыкли изобретать велосипеды там, где в Библиотеке стандартных подсистем (БСП) уже давно лежат готовые, оптимизированные и протестированные на тысячах баз решения. Ниже — практическая подборка из 8 методов актуальных релизов БСП (3.X), которые сделают ваш код чище, быстрее и профессиональнее. Разберем на примерах «Было / Стало».
04.06.2026 14045 Kaliostr0 21
Адаптация типовых решений БСП (Библиотека стандартных подсистем) Кадровый учет ЭДО и ОФД 1C:Бухгалтерия 1С:Зарплата и кадры 7.7 1C:ERP 1С:ЗУП 1С:УТ 1С:ДО Платные (руб)
Наше расширение 1С Госключ обеспечивает интеграцию любой конфигурации 1С на базе БСП с мобильным приложением «Госключ», позволяя сотрудникам подписывать кадровые документы (КЭДО) и документы материальной ответственности (МОЛ, ПБ) усиленной электронной подписью прямо со смартфона. Решение автоматизирует формирование и отправку документов на подпись, отслеживает статусы подписания и хранит подписанные файлы непосредственно в базе 1С
25000 руб.
06.03.2026 2791 4 0
БСП (Библиотека стандартных подсистем) Универсальные функции Разработчик 1С 8.3 1С:Библиотека стандартных подсистем Бесплатно (free)
Когда появляется необходимость сделать подключаемую внешнюю обработку, будь это печатная форма или отчет - нам всегда приходится прописывать сведения о внешней обработке для подключения их в соответствующий справочник. И это занимает некоторое время, что не очень удобно. Как для себя, так и для вас - я подготовил ряд примеров использования этой функции, можете выбрать один из них, чтобы в дальнейшем использовать их в шаблонах текста. Комментарии по дополнению и исправлению статьи - приветствуются.
06.02.2026 25618 manul1c 7
Было бы хорошо изменить заголовок публикации. Тема касается большего количества пользователей, чем может заинтересовать заголовок.
Было бы хорошо изменить заголовок публикации. Тема касается большего количества пользователей, чем может заинтересовать заголовок.
2. Порядок внедрения БСП изложен в документации в картинках и кусках кода для вставки, если делать по шагам, то проблем не возникает.
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
Если Команда.Имя = "ПодменюПечатьОбычное_Реестр" Тогда
НастройкиДинамическогоСписка();
КонецЕсли;
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедурыУ меня ругалось на ВыполнитьКоманду пока не глянул в параметры этой процедуры. Элементы.Список должен содержать поле - Ссылка. Версия БСП - 2.4.2.25
Для подключенных "Дополнительных отчетов и обработок" в "ФормеСписка" для документов пропала кнопка - "Отчеты...".
Причем в БСП все нормально работает.
Глубоко не копал. Тестовую конфигурацию вылечил:
...."Включить возможность изменения"
Документы.ПлатежныеПоручения.ФормаСписка
ГруппаКоманднаяПанель добавил ПодменюПечать.
Сейчас пытаюсь написать дополнительную обработку которая по кнопке "Печать " восстановит кнопку "Отчеты...". (Опять зубы через задницу лечить...)
Общий модуль - Подключаемые команды
&После("ВывестиКоманды")
Процедура рПП_ВывестиКоманды(Форма, Команды, ПараметрыРазмещения)
Если Форма.Имяформы = "Документ.ПлатежноеПоручение.Форма.ФормаСписка" Тогда
// Сменим родителя ПодменюОтчеты
ЭлементПодменюОтчеты = Форма.Элементы.Найти("ПодменюОтчеты");
ЭлементГруппаКоманднаяПанель = Форма.Элементы.Найти("ГруппаКоманднаяПанель");
Форма.Элементы.Переместить(ЭлементПодменюОтчеты,ЭлементГруппаКоманднаяПанель);
КонецЕсли;
КонецПроцедуры
ПоказатьКогда добавляете (переписываете) под БСП 2.4 свои объекты, по мимо действий указанных в статье, по крайней мере для ERP 2.4, необходимо проделать еще несколько манипуляций, что бы вся эта магия от 1С версии 2.4 заработала.
А конкретно надо сделать следующее:
Для Добавления команд Отчеты, ввод на основании надо указать БСП, что для этого объекта надо использовать механизм "стандартных подсистем". Делаем следующее:
- для отчетов: Общий модуль "ВариантыОтчетовПереопределяемый" процедура "ОпределитьОбъектыСКомандамиОтчетов" добавляем свой объект в массив.
- для Ввода на основании: Общий модуль "СозданиеНаОснованииПереопределяемый" процедура "ПриОпределенииОбъектовСКомандамиСозданияНаОсновании" добавляем свой объект в массив.
для печати, заполнения и проч. видимо тоже есть процедуры, но я их не искал и не использовал из-за ненадобности (пока еще) =).
надеюсь сэкономил полчаса работы.
правда я так понял команда печати для формы регистра сведений это не прокатит, там идет сравнение типов, на этом все и рушится, по старой схеме раньше работало все...
Как будто нельзя через Метаданные это сделать!
Супер универсальность.
т.е. если завтра у разработчиков будет новый объект, и если они забыли про этот модуль то печати не будет в этом объекте. КЛАСС.
Функция УниверсальнаяСтруктураОписанияОбъектовПодключаемыхКоманд() Экспорт
//:::Справочники
ИменаСправочников = Новый Массив;
ИменаСправочников.Добавить("Банки");
ИменаСправочников.Добавить("БанковскиеСчета");
ИменаСправочников.Добавить("ВидыНалогов");
ИменаСправочников.Добавить("ВидыСкидокНаценок");
ИменаСправочников.Добавить("ВидыЦен");
ИменаСправочников.Добавить("ВидыЦенКонтрагентов");
ИменаСправочников.Добавить("ВнеоборотныеАктивы");
ИменаСправочников.Добавить("ДоговорыКонтрагентов");
ИменаСправочников.Добавить("Кассы");
ИменаСправочников.Добавить("КассыККМ");
ИменаСправочников.Добавить("Комиссии");
ИменаСправочников.Добавить("КлючевыеРесурсы");
ИменаСправочников.Добавить("КонтактныеЛица");
ИменаСправочников.Добавить("Контрагенты");
ИменаСправочников.Добавить("НаправленияДеятельности");
ИменаСправочников.Добавить("Номенклатура");
ИменаСправочников.Добавить("КатегорииНоменклатуры");
ИменаСправочников.Добавить("НомераГТД");
ИменаСправочников.Добавить("Организации");
ИменаСправочников.Добавить("ПартииНоменклатуры");
ИменаСправочников.Добавить("СценарииПланирования");
ИменаСправочников.Добавить("ПравилаОбменаСПодключаемымОборудованиемOffline");
ИменаСправочников.Добавить("Проекты");
ИменаСправочников.Добавить("Сотрудники");
ИменаСправочников.Добавить("Спецификации");
ИменаСправочников.Добавить("СтатьиДвиженияДенежныхСредств");
ИменаСправочников.Добавить("СтруктурныеЕдиницы");
ИменаСправочников.Добавить("ФизическиеЛица");
ИменаСправочников.Добавить("ХарактеристикиНоменклатуры");
ИменаСправочников.Добавить("Ячейки");
//:::Документы
ИменаДокументов = Новый Массив;
ИменаДокументов.Добавить("АвансовыйОтчет");
ИменаДокументов.Добавить("АктВыполненныхРабот");
ИменаДокументов.Добавить("АмортизацияВА");
ИменаДокументов.Добавить("Бюджет");
ИменаДокументов.Добавить("ВводНачальныхОстатков");
ИменаДокументов.Добавить("Взаимозачет");
ИменаДокументов.Добавить("ВыработкаВА");
ИменаДокументов.Добавить("Доверенность");
ИменаДокументов.Добавить("ДополнительныеРасходы");
ИменаДокументов.Добавить("ЗаданиеНаРаботу");
ИменаДокументов.Добавить("ЗаказНаПроизводство");
ИменаДокументов.Добавить("ЗаказПокупателя");
ИменаДокументов.Добавить("ЗаказПоставщику");
ИменаДокументов.Добавить("ЗакрытиеМесяца");
ИменаДокументов.Добавить("ИзменениеПараметровВА");
ИменаДокументов.Добавить("ИнвентаризацияЗапасов");
ИменаДокументов.Добавить("КадровоеПеремещение");
ИменаДокументов.Добавить("КорректировкаРеализации");
ИменаДокументов.Добавить("КорректировкаРегистров");
ИменаДокументов.Добавить("МаршрутныйЛист");
ИменаДокументов.Добавить("НачислениеЗарплаты");
ИменаДокументов.Добавить("НачислениеНалогов");
ИменаДокументов.Добавить("НачисленияПоКредитамИЗаймам");
ИменаДокументов.Добавить("Операция");
ИменаДокументов.Добавить("ОперацияПоПлатежнымКартам");
ИменаДокументов.Добавить("ОприходованиеЗапасов");
ИменаДокументов.Добавить("ОтчетКомиссионера");
ИменаДокументов.Добавить("ОтчетКомитенту");
ИменаДокументов.Добавить("ОтчетОПереработке");
ИменаДокументов.Добавить("ОтчетОРозничныхПродажах");
ИменаДокументов.Добавить("ОтчетПереработчика");
ИменаДокументов.Добавить("ПередачаВА");
ИменаДокументов.Добавить("ПеремещениеДС");
ИменаДокументов.Добавить("ПеремещениеДСПлан");
ИменаДокументов.Добавить("ПеремещениеЗапасов");
ИменаДокументов.Добавить("ПеремещениеПоЯчейкам");
ИменаДокументов.Добавить("ПереоценкаВРозницеСуммовойУчет");
ИменаДокументов.Добавить("ПересортицаЗапасов");
ИменаДокументов.Добавить("ПланПродаж");
ИменаДокументов.Добавить("ПлатежнаяВедомость");
ИменаДокументов.Добавить("ПлатежноеПоручение");
ИменаДокументов.Добавить("ПоступлениеВКассу");
ИменаДокументов.Добавить("ПоступлениеДСПлан");
ИменаДокументов.Добавить("ПоступлениеНаСчет");
ИменаДокументов.Добавить("ПриемИПередачаВРемонт");
ИменаДокументов.Добавить("ПриемНаРаботу");
ИменаДокументов.Добавить("ПринятиеКУчетуВА");
ИменаДокументов.Добавить("ПриходнаяНакладная");
ИменаДокументов.Добавить("ПриходныйОрдер");
ИменаДокументов.Добавить("ПрочиеРасходы");
ИменаДокументов.Добавить("РаспределениеЗатрат");
ИменаДокументов.Добавить("РасходДСПлан");
ИменаДокументов.Добавить("РасходИзКассы");
ИменаДокументов.Добавить("РасходнаяНакладная");
ИменаДокументов.Добавить("РасходныйОрдер");
ИменаДокументов.Добавить("РасходСоСчета");
ИменаДокументов.Добавить("РезервированиеЗапасов");
ИменаДокументов.Добавить("СборкаЗапасов");
ИменаДокументов.Добавить("СведенияОЗастрахованныхЛицахСЗВ_М");
ИменаДокументов.Добавить("СверкаВзаиморасчетов");
ИменаДокументов.Добавить("СдельныйНаряд");
ИменаДокументов.Добавить("Событие");
ИменаДокументов.Добавить("СписаниеВА");
ИменаДокументов.Добавить("СписаниеЗапасов");
ИменаДокументов.Добавить("СправкаНДФЛ");
ИменаДокументов.Добавить("СчетНаОплату");
ИменаДокументов.Добавить("СчетНаОплатуПоставщика");
ИменаДокументов.Добавить("СчетФактура");
ИменаДокументов.Добавить("СчетФактураПолученный");
ИменаДокументов.Добавить("Табель");
ИменаДокументов.Добавить("Увольнение");
ИменаДокументов.Добавить("УчетВремени");
ИменаДокументов.Добавить("ЧекККМ");
ИменаДокументов.Добавить("ЧекККМВозврат");
СтруктураОписания = Новый Структура;
СтруктураОписания.Вставить("Справочники", ИменаСправочников);
СтруктураОписания.Вставить("Документы", ИменаДокументов);
Возврат СтруктураОписания;
КонецФункции Показатьв форме списка в динамическом списке ОБЯЗАТЕЛЬНО должна быть Ссылка (писали выше). Но если ее видимость отключить в пользовательском режиме (или в конфигураторе - не важно), то печать перестает работать.
Выход: в настройках поля включить флаг "Использовать всегда".
Вот цитата с итс:
Внимание. Поле Ссылка динамического списка формы должно быть доступно в обработчике команды. Для этого необходимо в свойствах поля Ссылка, вложенного в реквизит формы типа ДинамическийСписок, включить флажок Использовать всегда.
В итоге от добавления команд печати средствами БСП решила отказаться - перспектива при каждом обновлении восстанавливать затертый код не радует(((
Скрытый текст |
|---|
&Перед("ПриОпределенииОбъектовСКомандамиПечати")
Процедура Aкк_ком_ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов)
СписокОбъектов.Добавить(Документы.Aкк_АктК);
КонецПроцедуры
|
КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";Не будет работать! Более того, в УправлениеПечатьюУТКлиент нет ничего похожего на ВыполнитьКомандуПечати! Т. е. как быть в случае с УТ вообще непонятно! Не работает эта херня в УТ!
А если пользоваться "УправлениеПечатьюКлиент.ВыполнитьКомандуПечати", то выдает уже другую ошибку:
Обращение к процедуре объекта как к функции (ВыполнитьКомандуПечати)
Вообщем, как адаптировать для УТ пока не разобрался. У вас нашлось решение?
Как сделать добавление под кнопку "Печать" внешних печатных форм добавленных в базу?
В УНФ 1.6.5. БСП 2.3.1.53
в модуле УправлениеПечатьюСлужебныйКлиент
в процедуре ВыполнитьПодключаемуюКомандуПечатиПодготовкаОбъектовПечати
вываливается:
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(125)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода Результат = Вычислить(Обработчик);
по причине:
{(1,1)}: Переменная не определена (УправлениеПечатьюБПКлиент)
<<?>>УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати(ОписаниеКоманды)
Менял в Модуле Менеджера Документа
УправлениеПечатьюБПКлиент на УправлениеПечатьюКлиент и также на
Подключаемый_ВыполнитьКомандуПечати
всёравно ошибки, куда же копать?
БПКлиент только в Бух и работает, кто-нибудь нашел решение для других конфигураций?
Кнопка печати в форме документа была и работала.
В форме списка была, но не активна.
Решилось так:
Кнопка стала активна после добавления:
в модуле менеджера:
Процедура ДобавитьКомандыПечати(КомандыПечати)
строчки:
КомандаПечати.СписокФорм = "ФормаСписка,ФормаДокумента"; (не было этой строчки вообще)
Но все же при нажатии не работала, Вылезала ошибка:
"Команда не может быть выполнена для указанного объекта".
Решение следующее:
В форме списка документа добавила еще одно поле - поле Ссылка. После этого печать заработала (вдруг кому еще пригодится)!
Прочитала об этом выше в комментариях:
Спасибо всем за помощь!)
Создал расширение:Расш_1 добавил 2 общих модуля в расширение и добавил в общие модули старые процедуры ПриСозданииНаСервере(.......
ОбщиеМодули.УправлениеПечатью
// Устарела. Следует использовать ПодключаемыеКоманды.ПриСозданииНаСервере.
// Размещает команды печати на форме.
//
// Параметры:
// Форма - УправляемаяФорма - форма, в которой необходимо разместить подменю Печать.
// МестоРазмещенияКомандПоУмолчанию - ЭлементФормы - группа, в которую необходимо разместить подменю Печать,
// по умолчанию размещается в командную панель формы.
// ОбъектыПечати - Массив - список объектов метаданных, для которых необходимо сформировать
// объединенное подменю Печать.
Процедура ПриСозданииНаСервере(Форма, МестоРазмещенияКомандПоУмолчанию = Неопределено, ОбъектыПечати = Неопределено) Экспорт
ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения();
Если ТипЗнч(МестоРазмещенияКомандПоУмолчанию) = Тип("ГруппаФормы") Тогда
Если МестоРазмещенияКомандПоУмолчанию.Вид = ВидГруппыФормы.Подменю
Или МестоРазмещенияКомандПоУмолчанию.Заголовок = НСтр("ru = 'Печать'")
Или МестоРазмещенияКомандПоУмолчанию.Имя = "ПодменюПечать" Тогда
Родитель = МестоРазмещенияКомандПоУмолчанию.Родитель;
Если ТипЗнч(Родитель) = Тип("ГруппаФормы") Тогда
ПараметрыРазмещения.КоманднаяПанель = Родитель;
КонецЕсли;
Иначе
ПараметрыРазмещения.КоманднаяПанель = МестоРазмещенияКомандПоУмолчанию;
КонецЕсли;
КонецЕсли;
Если ТипЗнч(ОбъектыПечати) = Тип("Массив") Тогда
ПараметрыРазмещения.Источники = ОбъектыПечати;
КонецЕсли;
ПодключаемыеКоманды.ПриСозданииНаСервере(Форма, ПараметрыРазмещения);
КонецПроцедуры
ОбщиеМодули.ДополнительныеОтчетыИОбработки
// Устарела. Следует использовать ПодключаемыеКоманды.ПриСозданииНаСервере.
//
// Параметры:
// Форма - УправляемаяФорма - Форма.
// ТипФормы - Строка - Тип формы.
//
Процедура ПриСозданииНаСервере(Форма, ТипФормы = Неопределено) Экспорт
Возврат;
КонецПроцедуры
ПоказатьТоже заработало
Форма обработки с ДС нужного документа
В при создании теперь так:
// СтандартныеПодсистемы.ПодключаемыеКоманды
Массив = Новый Массив;
Массив.Добавить(Тип("ДокументСсылка.СверкаВзаиморасчетов"));
ПараметрыРазмещения = Новый Структура("Источники, КоманднаяПанель, ПрефиксГрупп", Новый ОписаниеТипов(Массив), Элементы.СписокДокументов.КоманднаяПанель, "");
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
Нужный документ - СверкаВзаиморасчетов, ДС - СписокДокументов.
Расширение в ЗУП 3.1.17.171
В менеджере объекта следующий код
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "Акт";
КомандаПечати.Представление = "Дополнительный акт";
КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
КомандаПечати.СписокФорм = "ФормаСписка,ФормаДокумента";
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Акт") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Акт", "Акт",
СформироватьНесколькоАктов(МассивОбъектов),"Документ.СПР_СправкаПособиеРР.Акт");
КонецЕсли;
КонецПроцедуры
Функция СформироватьНесколькоАктов(МассивОбъектов)
ТабДокумент = Новый ТабличныйДокумент;
Для каждого Ссылка из МассивОбъектов Цикл
ТабДокументОбъекта = СформироватьАкт(Ссылка);
Если ТабДокумент.ВысотаТаблицы > 0 И ТабДокументОбъекта.ВысотаТаблицы > 0 Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц()
КонецЕсли;
ТабДокумент.Вывести(ТабДокументОбъекта)
КонецЦикла;
Возврат ТабДокумент
КонецФункции
Функция СформироватьАкт(Ссылка)
ТабДокумент = Новый ТабличныйДокумент;
// подготовка ТабДокумента
Возврат ТабДокумент
КонецФункции ПоказатьВ форме документа
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры
#Область ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
#КонецОбласти ПоказатьВ форме списка
&НаСервере
Процедура НастройкиДинамическогоСписка()
Отчеты.РеестрДокументов.НастройкиДинамическогоСписка(ЭтотОбъект);
КонецПроцедуры
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
Если Команда.Имя = "ПодменюПечатьОбычное_Реестр" Тогда
НастройкиДинамическогоСписка();
КонецЕсли;
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.Список, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры ПоказатьВ общий модуль добавил
&Перед("ПриОпределенииОбъектовСКомандамиПечати")
Процедура СПР_ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов)
СписокОбъектов.Добавить(Документы.СПР_СправкаПособиеРР);
КонецПроцедурыКнопки выходят на формы но при нажатии выходит ошибка
Так у вас же ЗУП, используйте:
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "Акт";
КомандаПечати.Представление = "Дополнительный акт";
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.СписокФорм = "ФормаСписка,ФормаДокумента";
КонецПроцедуры&Вместо("ПриОпределенииОбъектовСКомандамиПечати")
Процедура ПриОпределенииОбъектовСКомандамиПечати_tmc(СписокОбъектов) Экспорт
ПродолжитьВызов(СписокОбъектов);
СписокОбъектов.Добавить(Документы.ЗаявкаНаВыдачуТМЦ);
КонецПроцедурыМожно и наверное лучше после ...
&После("ПриОпределенииОбъектовСКомандамиПечати")
Процедура Расшвв_ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов)
СписокОбъектов.Добавить(Документы.Расшвв_ЗаявкаСклада); //2026-01-27 ------- Шестаков --------
КонецПроцедурыСледует использовать УправлениеПечатьюПереопределяемый.ПриОпределенииНастроекПечати().
но я попробовал добавить в эту -
УправлениеПечатьюЛокализация.ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт сработало
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 674880
Создание 18.09.17 11:49
Обновление 18.09.17 11:49
Просмотры 145809
Загрузки 0
Рейтинг
255
Комментарии 59
Код открыт Да
Рубрики БСП (Библиотека стандартных подсистем)
Кому Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация 1С:Бухгалтерия 3.0
Операционная система Не имеет значения
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)