Добавление внешней обработки в базу. Добавление внешней обработки в базу Внешние отчеты и обработки 1с 8.2

Рассмотрим в данной статье пошаговую инструкцию по созданию внешней обработки в 1С 8.3 в режиме управляемого приложения, соответственно, будем использовать управляемые формы. А самое главное — мы научимся подключать её к механизму «внешних обработок» конфигураций 1С, построенных на библиотеке стандартных подсистем версии 2.0 и новее.

Задача будет следующая: создать простейшую внешнюю обработку, которая будет выполнять групповое действие над справочником «Номенклатура», а именно, устанавливать выбранный процент ставки НДС для указанной группы номенклатуры.

Для этого сразу произведем необходимую настройку в программе (рассматривается конфигурация 1С 8.3: «Бухгалтерия предприятия 3.0» на управляемых формах).

Установка данного флажка дает нам возможность использовать внешние обработки.

Создание новой внешней обработки в 1С 8.3 на примере

Теперь переходим в конфигуратор. В меню «Файл» выбираем «Новый…». Откроется окно выбора вида создаваемого файла. Выбираем «Внешняя обработка»:

Откроется окно новой внешней обработки. Сразу зададим ей имя. Оно будет предложено при сохранении обработки на диск:

Добавим новую управляемую форму обработки. Указываем, что это форма обработки и она является основной:

На форме у нас будет два реквизита:

  • ГруппаНоменклатуры – ссылка на справочник «Номенклатура»;
  • ВыбСтавкаНДС – ссылка на перечисление Ставки НДС.

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

Очередность реквизитов можно менять стрелками «Вверх» – «Вниз»:

Получите 267 видеоуроков по 1С бесплатно:

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

В модуле формы будет создана одноименная процедура. В ней вызовем процедуру на сервере:

&НаКлиенте

Процедура УстановитьСтавкуНДС(Команда)

УстановитьСтавкуНДСНаСервере();

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

В процедуре на сервере напишем небольшой запрос и действия, связанные с установкой ставки НДС:

&НаСервере

Процедура УстановитьСтавкуНДСНаСервере()

Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В ИЕРАРХИИ (&ГруппаНоменклатуры)
| И НЕ Номенклатура.ПометкаУдаления
| И НЕ Номенклатура.ЭтоГруппа»;

Запрос.УстановитьПараметр(«ГруппаНоменклатуры», ГруппаНоменклатуры);
РезЗапроса = Запрос.Выполнить();
ВыбДетЗаписи = РезЗапроса.Выбрать();

Пока ВыбДетЗаписи.Следующий() Цикл

Попытка
СпрНомОбъект.Записать();
Исключение
Сообщить(«Ошибка записи объекта «»» + СпрНомОбъект + «»»!
|» + ОписаниеОшибки());
КонецПопытки;

КонецЦикла;

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

Возвращаемся на закладку «Форма», добавляем на форму кнопку и связываем ее с командой:

Как таковая наша обработка готова к использованию. Чтобы ее вызвать, в режиме «1С Предприятия» нужно зайти в меню «Файл» – «Открыть» и выбрать созданный файл.

Однако работа в таком режиме удобна для отладки обработки, а для работы пользователю не совсем подходит. Пользователи привыкли, чтобы у них все было «под рукой», то есть в самой базе данных.

Для этого и служит раздел «Дополнительные отчеты и обработки».

Но чтобы добавить туда нашу обработку, нужно сначала дать ей описание и сообщить программе ее свойства.

Описание функции «Сведения О Внешней Обработке»

Приведу пример содержимого данной функции. Она должна быть экспортной и, соответственно, располагаться в модуле обработки:

Функция СведенияОВнешнейОбработке() Экспорт

ДанныеДляРег = Новый Структура();
ДанныеДляРег.Вставить(«Наименование», «Установка ставки НДС»);
ДанныеДляРег.Вставить(«БезопасныйРежим», Истина);
ДанныеДляРег.Вставить(«Версия», «ver.: 1.001»);
ДанныеДляРег.Вставить(«Информация», «Обработка для установки ставки НДС в справочнике Номенклатура»);
ДанныеДляРег.Вставить(«Вид», «ДополнительнаяОбработка»);

ТабЗнКоманды = Новый ТаблицаЗначений;
ТабЗнКоманды.Колонки.Добавить(«Идентификатор»);
ТабЗнКоманды.Колонки.Добавить(«Использование»);
ТабЗнКоманды.Колонки.Добавить(«Представление»);

НовСтрока = ТабЗнКоманды.Добавить();
НовСтрока.Идентификатор = «ОткрытьОбработку»;
НовСтрока.Использование = «ОткрытиеФормы»;
НовСтрока.Представление = «Открыть обработку»;
ДанныеДляРег.Вставить(«Команды», ТабЗнКоманды);

Возврат ДанныеДляРег;

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

Чтобы лучше понять, какие поля структуры регистрационных данных нужно использовать, посмотрим реквизиты справочника «Дополнительные отчеты и обработки»:

Как видим, все довольно просто. Не совпадает лишь один реквизит: «ВариантЗапуска» – «Использование». Если посмотреть код одного из общих модулей, то мы увидим, как возникает связка этих полей:

Чтобы определить, какие поля структуры обязательны, можно сначала не описывать ее, просто создать пустую, а далее воспользоваться отладчиком. Если трассировать модули при регистрации обработки, сразу становится ясно, какие поля требуются, а какие нет.

Подключение внешней обработки в 1С 8.3

Внимание!
Все обработки с дисков ИТС, предназначены для ознакомительных целей и исключительно для зарегистрированных пользователей ИТС.

Подбор и обработка объектов. (Универсальная)

Осуществляет поиск объектов в документах и справочниках, соответствующих определённым условиям. Обрабатывает итоги поиска.

Свёртка информационной базы. (Универсальная)

Производит свёртку ИБ типовых конфигураций:

  • УПП 3.1.
  • БП 1.6.
  • УТ 10.3.

Регистрация изменений для обмена. (Универсальная)

Редактирует, в режиме управляемого приложения, регистрацию изменений объектов обмена. Позволяет изменить текущую регистрацию на различных узлах. Изменяет номера принятых и отправленных сообщений.

Преобразование журнала действий пользователя. (Универсальная)

Преобразует в программу, на встроенном языке, журнал действий пользователя.

Полнотекстовый поиск в данных. (Универсальная)

Индексирование и поиск в данных.

Поиск и замена значений. (Универсальная)

Ищет и производит замену ссылочных значений в объектах ИБ.

Настройка технологического журнала. (Универсальная)

Создаёт или редактирует файл технологического журнала. Имеет возможность настройки создания дампа аварийного завершения, настройки условий и событий, при наступлении которых, в этот журнал будет записываться информация.

Консоль заданий. (Универсальная)

Мониторит фоновые и регламентные задания. Удаляет, создаёт новые.

Конвертация внешних обработок. (Универсальная)

Изменение конфиденциальной информации. (Универсальная)

Выборочное изменение или очистка ИБ от определённой информации.

Групповое изменение реквизитов. (Универсальная)

Изменяет реквизиты и табличные части в документах и справочниках.

Выгрузка и загрузка пользователей. (Универсальная)

Выгружает и загружает пользователей ИБ в файл XML.

Выгрузка данных во внешние базы данных. (Универсальная)

Выгружает структуры данных во внешние СУБД, посредством ADO в двух режимах:

  • Выгрузить всё
  • Выгрузить изменения (используется для синхронизации изменений рабочей ИБ, с ИБ – приемником). Этот режим использует механизмы плана обмена.

Поддерживает следующие СУБД:

  • Microsoft SQL
  • IBM DB2
  • Oracle
  • PostgreSQL
  • MySQL

Выгрузка и загрузка данных XML. (Универсальная)

Выгружает и загружает данные в ИБ, как полностью, так и частично. Применяется для переноса данных между, похожими по объектному составу, конфигурациями.

Загрузка данных из табличного документа. (Универсальная)

Производит загрузку данных в справочники и табличные части из табличных документов.

Работает в толстом клиенте в режиме обычного приложения.

Консоль запросов. (Универсальная)

Оказывает огромную помощь при составлении отчётов и создании запросов.

Для подключения внешних обработок, отчетов, печатных форм для платформы 1С:Предприятие 8.2 разработан новый стандарт для работы в управляемом приложении (стандарт из подсистемы стандартных библиотек 8.2). Появились «фишки», которых не было до этого, а именно:

    Расширен вид обработок: заполнение объекта, создание связанных объектов. Теперь в документах можно добавлять свои кнопки по заполнению всего документа, а также свои кнопки по вводу на основании.

    Одна обработка может содержать сразу список несколько операций (команд), т.е. можно сделать одну обработку, где будет сразу несколько пунктов меню: печать и товарную накладной, печать товарного чека, печать гарантийного талона. (Примечание автора: раньше в старом стандарте, чтобы сделать такие вещи нужно было делать всё сразу (даже если не надо) и закрывать не нужно, либо рисовать свою форму, на который были необходимые кнопки для выбора необходимой операции)

    Можно вводить на основании и заполнять объекты сразу на основании нескольких объектов, а не одного

    Можно задавать расписание выполнение серверных команд (на сервере).

    Можно задавать режим «Безопасный» или «Небезопасный», т.е. запускать обработку с учетом ограничением прав или игнорировать их (как под полными правами)

    Можно задать режим использования: Не использовать, отладка, использовать. «Не использовать» - не в работе, «Отладка» - видно только администраторам, «Использовать в работе».

    Можно включить использование в формах объекта и в форма списков

    Можно привязать сразу ко всем объектам обработку или отчет.

    Можно настроить быстрый доступ к определенным командам внешних обработок.

    Есть возможность указать в каких разделах интерфейса должны появляться дополнительные обработки и отчеты.

Итак, что можно подключить к стандартным конфигурациям?

С точки зрения платформы можно подключать:

  • внешние обработки (файлы с расширением “epf”) ;
  • внешние отчеты (файлы с раширением «erf»).

С точки зрения прикладной области (конфигурации) можно подключать внешние обработки и отчеты с видом*:

  • Дополнительная обработка
    • Просто дополнительная обработка. Есть возможность настроить
  • Дополнительный отчет
    • Просто дополнительный отчет
  • Заполнение объекта
    • Свои кнопки по заполнению объектов (документа), ранее были только кнопки по заполнению табличной части.
  • Печатная форма
    • Дополнительная печатная форма (добаляется кнопка «Дополнительные печатные формы»)
  • Отчет
    • Отчет, прикрепляемый к объектам (к справочникам и документам).
  • Создание связанных объектов
    • Свой ввод на основании (в пункт меню «Ввод на основании» добавляется кнопка «Создание связанных объектов…»)

*на примере редакции «Управление небольшой фирмой ред. 1.2»

Разберем по порядку, как всё это работает. Для подключения внешних обработок и отчетов имеется стандарт, который описывает интерфейс взаимодействия со внешней обработкой и отчетом, причем есть общие требования для всех видов, а есть специфичные для каждого вида обработки или отчета.

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

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

//ДополнительнаяОбработка
//ДополнительныйОтчет
//ЗаполнениеОбъекта
//Отчет
//ПечатнаяФорма
//СозданиеСвязанныхОбъектов
РегистрационныеДанные.Вставить("Вид", "ДополнительнаяОбработка");

РегистрационныеДанные.Вставить("Информация", "Обработка сделано по новому стандарту подключения внешних обработок 8.2. Пример обработки ""Hello Word"" ");

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


строкаКоманды.Идентификатор = "1";
строкаКоманды.Представление = "команда ""Hello Word"" (ОткрытиеФормы)";

строкаКоманды.Использование = "ОткрытиеФормы";

СтрокаКоманды = тзКоманд.Добавить();
строкаКоманды.Идентификатор = "2";
строкаКоманды.Представление = "команда ""Hello Word"" (ВызовКлиентскогоМетода)";
строкаКоманды.ПоказыватьОповещение = Истина;
строкаКоманды.Использование = "ВызовКлиентскогоМетода";

СтрокаКоманды = тзКоманд.Добавить();
строкаКоманды.Идентификатор = "3";
строкаКоманды.Представление = "команда ""Hello Word"" (ВызовСерверногоМетода)";
строкаКоманды.ПоказыватьОповещение = Истина;
строкаКоманды.Использование = "ВызовСерверногоМетода";

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

////////////// назначение (в каких объектах используется) /////////////////////////
//для печ.форм, заполнения, ввода свазанных объектов
//МассивНазначений = Новый Массив;
//МассивНазначений.Добавить("Документ.*"); // все документы назначаются
//МассивНазначений.Добавить("Документ.АвансовыйОтчет");
//МассивНазначений.Добавить("Документ.ЗаказПокупателя");
//РегистрационныеДанные.Вставить("Назначение", МассивНазначений);

Возврат РегистрационныеДанные;

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

Итак как видно функция заполняет структуру РегистрационныеДанные, которая имеет следующие элементы (параметры):

    Наименование – краткое наименование обработки

    Версия - информация о версии обработки

    Безопасный режим – отвечает за то, должна ли обработка выполняться учитывая права пользователя. Если поставить значение «Ложь», то обработка или отчет будут выполняться без учета ограничений прав (как под полными правами). Это возможность появилась именно в 8.2, где при создании внешних обработок и отчетов вторым параметром указывается режим.

    Вид – вид обработки или отчета. Возможные значения я перечислял вначале статьи, а возможные значения для установки в коде обозначены в комментарии

  • Команды – таблица значений, в которой перечисляются используемые команды. Колонки таблицы значений:
    • Идентификатор – любая строка (идентификатор команды)
    • Представление – описание команды
    • Модификатор - строка (используется для дополнительных печатных форм)
    • ПоказыватьОповещение – окно оповещение будет появляться перед началом и после окончание выполнения (для команд клиентских и серверных без формы)
    • Использование – режим запуска обработки:
      • ОткрытиеФормы – откроется форма обработки
      • ВызовКлиентскогоМетода – вызов клиентского экспортного метода форма
      • ВызовСерверногоМетода – вызов экспортной метода из модуля обработки

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