Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут! (в рабочие часы)

Дополнительные отчеты и обработки в 1С 8.3

Дополнительные отчеты и обработки — подсистема, предназначена для расширения функционала решения без изменения конфигурации. Этот модуль позволяет разработать новые возможности в программе и встроить их. Ниже речь пойдет о подсистеме из последней Библиотеки стандартных подсистем (версии 2) на платформе 1С 8.3. Она уже встроена в такие конфигурации, как 1С: Управление торговлей 11, Бухгалтерия предприятия 3, 1С Управление предприятием 2.0, 1С: Зарплата и управление персоналом 3.

Библиотека стандартных подсистем 1С

Но теперь работать с внешними компонентами не так просто, как раньше, в 1С БСП 1.0. Теперь необходимо поддерживаться некоторых стандартов, которые заложила фирма «1С». Рассмотрим, как произвести разработку, настройку и как пользоваться таким функционалом.

Создание и настройка

После того как разработка отчета или обработки окончена, необходимо произвести подключение её. Для этого необходимо задать параметры в специальной функции модуля объекта «СведенияОВнешнейОбработке».

Функция должна возвращать структуру со следующими ключами:

  • Вид — назначения объекта. Возможные значения: «ДополнительныйОтчет», «ЗаполнениеОбъекта», «ДополнительнаяОбработка», «Отчет», «ПечатнаяФорма» или «СозданиеСвязанныхОбъектов».
  • Назначение — массив названий объектов, для которого предназначается данных отчет или обработка. Например — «Документ.РеализацияТоваровУслуг».
  • Наименование — строка, пользовательское имя обработки.
  • Команды — таблица значений, в которой содержатся команды, которые будут использоваться для добавления обработки или отчета в интерфейс программы (колонки таблицы: «Представление», «Идентификатор», «Использование», «ПоказыватьОповещение»,»Модификатор»).
  • ВерсияБСП — строка, версия встроенной в конфигурации библиотеки стандартных подсистем. Необходимы для поддержки совместимости.
  • БезопасныйРежим — булево, отображает режим запуска обработка — безопасный или нет. В безопасном режиме недоступен привилегированный режим, COM-соединение, загрузка dll, доступ к файловой системе и интернету.
  • Информация — строка, комментарий, который характеризует обработку.
  • Версия — строка, версия обработки.

Пример создания внешней печатной формы

Рассмотрим небольшой пошаговый пример создания внешней печатной формы ТОРГ-12 для новой системы.

  1. Создайте обработку, прикрепите к ней макет будущей печатной формы.
  2. Создайте глобальную переменную модуля объекта СсылкаНаОбъект, куда будет передаваться ссылка на документ.
  3. В модуле объекта необходимо создать экспортную функцию СведенияОВнешнейОбработке
Функция СведенияОВнешнейОбработке() Экспорт

ОбъектыНазначенияФормы = Новый Массив;
ОбъектыНазначенияФормы.Добавить("Документ.РеализацияТоваровУслуг");

ПараметрыРегистрации = ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы, "ТОРГ - 12 (альтернативная)");

ПараметрыРегистрации.Версия = "2017.03.07";
ПараметрыРегистрации.Информация = "Внешняя печатная форма документа реализации товаров и услуг ТОРГ - 12 (альтернативная)";

ТаблицаКоманд = ПолучитьТаблицуКоманд();

ДобавитьКоманду(ТаблицаКоманд,
"ТОРГ - 12 (альтернативная)", // Представление команды в пользовательском интерфейсе
"ТОРГ_12_альтернативная", // Уникальный идентификатор команды
"ВызовСерверногоМетода", // Использование команды //ОткрытиеФормы
Истина, // Показывать оповещение.
"ПечатьMXL" // Дополнительный модификатор команды.
);

ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

Возврат ПараметрыРегистрации;

КонецФункции

Где функция ПолучитьПараметрыРегистрации:

Функция ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы = Неопределено, НаименованиеОбработки = "", Информация = "", Версия = "1.0.0")

Если ТипЗнч(ОбъектыНазначенияФормы) = Тип("Строка") Тогда
ОбъектНазначенияФормы = ОбъектыНазначенияФормы;
ОбъектыНазначенияФормы = Новый Массив;
ОбъектыНазначенияФормы.Добавить(ОбъектНазначенияФормы);
КонецЕсли;

ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Назначение", ОбъектыНазначенияФормы);

Если Не ЗначениеЗаполнено(НаименованиеОбработки) Тогда
НаименованиеОбработки = ЭтотОбъект.Метаданные().Представление();
КонецЕсли;
ПараметрыРегистрации.Вставить("Наименование", НаименованиеОбработки);

Если Не ЗначениеЗаполнено(Информация) Тогда
Информация = ЭтотОбъект.Метаданные().Комментарий;
КонецЕсли;
ПараметрыРегистрации.Вставить("Информация", Информация);

ПараметрыРегистрации.Вставить("Версия", Версия);

Возврат ПараметрыРегистрации;

КонецФункции

Фукнция ПолучитьТаблицуКоманд:

Функция ПолучитьТаблицуКоманд()

Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;

КонецФункции

Процедура добавления команд ДобавитьКоманду:

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
// Добавляем команду в таблицу команд по переданному описанию.
// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

В данных функциях описываются сведения о внешней печатной форме.

4. В модуле объекта необходимо добавить функцию «Печать», которая будет запускаться при печати.

Функция Печать(СсылкаНаОбъект, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

КоллекцияПечатныхФорм = Новый ТаблицаЗначений;
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяМакета");
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяВРЕГ");
КоллекцияПечатныхФорм.Колонки.Добавить("СинонимМакета");
КоллекцияПечатныхФорм.Колонки.Добавить("ТабличныйДокумент");
КоллекцияПечатныхФорм.Колонки.Добавить("Экземпляров");
КоллекцияПечатныхФорм.Колонки.Добавить("Картинка");
КоллекцияПечатныхФорм.Колонки.Добавить("ПолныйПутьКМакету");

Настройка=КоллекцияПечатныхФорм.Добавить();
Настройка.ИмяВРЕГ= "ТОРГ_12_АЛЬТЕРНАТИВНАЯ";
Настройка.Экземпляров = 1;

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"ТОРГ_12_Альтернативная", "ТОРГ 12 (Альтернативная)",
ПолучитьТабличныйДокументТорг12(СсылкаНаОбъект, ОбъектыПечати));

КонецФункции

Где функция ПолучитьТабличныйДокументТорг12(…) — функция, которая вернет уже подготовленный табличный документ для печати (подробности, как это делается — создание и настройка печатных форм в 1С на примере).

5. Для размещения обработки необходимо посетить справочник внешних отчетов и обработок. Чаще всего они располагаются на вкладке «Администрирование».

Перед использованием этого механизма его необходимо включить специальной функциональной опцией. Форма её располагается обычно на той же вкладке «Администрирование»:

Настройка включения внешних печатных форм

В справочнике необходимо нажать кнопку «Добавить», после чего система предложит прикрепить внешнюю обработку 1С.

Добавление в 1С новой печатной формы

 Если всё указано верно, то система найдет, для какого документа предназначена обработка, и установит все настройки верно:

Новая печатная форма в списке

Вот и всё.

Подробное описание данного механизма можно найти к документации конфигурации БСП.

Скачать пример-шаблон внешней обработки можно по  ссылке.

Видеоурок по созданию внешних печатных форм в управляемых формах 1С 8.3:

Читайте и другие наши материалы по программированию 1С!

Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 16 на “Дополнительные отчеты и обработки в 1С 8.3
  1. Спасибо за полезный, грамотно составленный урок!

    Ответить

    • Спасибо за хорошие слова!
      Заглядывайте к нам:)

      Ответить

    • Здравствуйте! А у вас есть внешняя обработка по расчету процентов по выданным займам контрагентам, сотрудникам? Буду очень признателен если предоставите возможность воспользоваться вашей обработкой

      Ответить

  2. Урок создан содержательный,доступно изложенный,спасибо за талантливую и полезную общественную работу

    Ответить

    • Спасибо!!!!! Очень приятно! 🙂

      Ответить

  3. Спасибо за урок! Все изложено грамотно и доступно!!!

    Ответить

  4. Толково и полезно.

    Ответить

  5. Ваш сайт содержит наиболее полную и достоверную информацию по формам. Очень помогла статья нашему бухгалтеру.

    Ответить

    • Спасибо большое! Очень приятно слышать хорошие отзывы — значит не зря стараемся 🙂

      Ответить

  6. Было бы здорово, если бы еще комментарии к коду были. Это раскроет непонятные участки.

    Ответить

  7. Спасибо за видео и ссылки по созданию Внешней печатной формы
    Но у меня вопрос , а если нужно на основании например СчетаФактуры создать печатную форму с изменениями, что бы пользователь мог выбирать отчет, как на основании такого создать свою измененную форму для Счета Фактуры1137

    Ответить

    • Алексей, тут универсально объяснить не получится. Пришлось бы писать инструкцию для каждой печатной формы и для каждой версии конфигурации.

      Но в общем случае это выглядит обычно так:

      1) Заходите в модуль менеджера нужного объекта.
      2) Обычно в нем есть функция печати что то типа «ПечатьФормыМ656»
      3) Копируем эту функцию к себе во внешнюю обработку, проверяем как ведет себя код, при необходимости корректируем ошибки
      4) Делаем вызов этой функции из процедуры внешней обработки
      5) Копируем макет во внешнюю обработку
      6) Проверяем работу

      Но в случае с счетами-фактурами, сейчас эта функция расположена в общем модуле «УчетНДС» и называется «ПечатьСчетовФактур1137». А вашем релизе может быть уже и как-то по-другому… 🙂

      Ответить

  8. Спасибо буду разбираться

    Ответить

  9. Здравствуйте, все вроде очень понятно, но у меня не передает ссылку на объект.. в начале статьи написано «Создайте глобальную переменную модуля объекта».. как это сделать?

    Ответить

    • В самом верху модуля объекта напишите

      Перем мМояГлобальнаяПеременная Экспорт;

      Ключевое слово Экспорт можно не добавлять, но при его наличии можно будет читать и устанавливать значение этой переменной как атрибута объекта внешней обработки.

      Ответить

  10. Наверное самая толковая статья по этому вопросу в инете)

    Ответить

Добавить комментарий:

Ваш адрес email не будет опубликован.