Как написать внешнюю обработку 1с

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

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

Создать обработку 1С

Для того, чтобы создать обработку, в конфигураторе 1С  в дереве метаданных необходимо выделить ветку  Обработки, вызвать контекстное меню и выполнить команду «Добавить».

Создать обработку 1С

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

Создать обработку 1С

Обработка создана, и вы можете с ней работать: задать имя обработки, синоним и т.д.

Создать внешнюю обработку 1С

Для того, чтобы создать внешнюю обработку, нужно или выполнить команду «Новый» по пути «Главное меню» — «Файл».

Создать внешнюю обработку 1С

Или нажать на кнопку «Новый» в меню «Стандартная».

Создать внешнюю обработку 1С

После откроется окно «Выбор вида документа», в котором необходимо выбрать «Внешняя обработка».

Создать внешнюю обработку 1С

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

Создать внешнюю обработку 1С

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

Сохранить внешнюю обработку 1С

Или выполнить команду «Сохранить» по пути: «Главное меню» — «Файл».

Сохранить внешнюю обработку 1С

Или просто нажать сочетание клавиш Ctrl + S.

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

Сохранить внешнюю обработку 1С

После сохранения, у внешней обработки сверху будет прописан путь к ней.

Сохранить внешнюю обработку 1С

Замечу, что файлы всех внешних обработок имеют расширение epf.

Добавить внешнюю обработку 1С

Иногда возникают задачи добавить внешнюю обработку в конфигурацию 1С.  Чтобы это сделать, необходимо выделить ветку «Обработки» дерева метаданных конфигурации, вызвать контекстное меню и выполнить в нем команду «Вставить внешнюю обработку, отчет…».

Добавить внешнюю обработку 1С

В открывшемся окне необходимо выбрать нужную обработку.

Добавить внешнюю обработку 1С

После, обработка появится в дереве.

Добавить внешнюю обработку 1С

Сохранить обработку 1С в файл

Может возникнуть обратная задача: сохранить обработку из какой-то конфигурации в файл, т.е. сделать внешнюю обработку из простой обработки.

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

Сохранить обработку 1С в файл

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

Сохранить обработку 1С в файл

Подсистема обработки 1С

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

Подсистема обработки 1С

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

Контекстное меню обработки

В правой части рабочего стола откроется окно «Дополнительно», в котором на закладке «Подсистемы» можно привязать эту обработку к нужной подсистеме, установив флаг рядом с подсистемой.

Окно дополнительно обработки

После того, как мы поставим флажки, то обработка включится в состав подсистемы.

Обработка в составе подсистемы

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

Командный интерфейс подсистемы

Причина этому – отсутствие основной формы обработки.

Основная форма обработки 1С

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

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

Основная форма обработки 1С

Если вы нажмете на кнопку «Далее», то можете выбрать какие реквизиты обработки будут включены на форму, а если нажать на кнопку «Готово», то форма будет создана без реквизитов.

Основная форма обработки 1С

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

Основная форма обработки 1С

Замечу, что основная форма обработки указана в свойстве обработки «Основная форма», если мы это свойство очистим.

Основная форма обработки 1С

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

Основная форма обработки 1С

Права на обработку 1С

Чтобы пользователь мог работать с обработкой, ему нужно дать права на неё. Для этого, необходимо у соответствующей роли для обработки установить права Использовать и Просмотр.

Права на обработку 1С

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

Если Вы внедряете обработку в какую-то типовую конфигурацию, то лучше для этого создать отдельную роль, а не изменять текущую. Тогда у вас будет меньше проблем с обновлением в будущем.

Открыть обработку 1с

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

Открыть обработку 1С

И при выполнении команды с именем обработки будет открыта форма обработки.

Открыть обработку 1С

Я немного изменил управляемую форму обработки, добавив надпись.

Управляемая форма открылась в независимом окне, если мы хотим, чтобы она открылась поверх окон, то нужно у основной формы обработки установить в свойство «Режим открытия окна» или значение «Блокировать весь интерфейс», или значение «Блокировать окно владельца».

Свойство формы Режим открытия окна

После таких настроек, обработка будет открываться по верх окон.

Открыть обработку 1С

Открыть внешнюю обработку 1С

Если вы хотите открыть внешнюю обработку 1С, то следует выполнить команду «Открыть», которая находится по пути «Сервис и настройки» — «Файл» (для версии платформы начиная с 8.3.15).

Открыть внешнюю обработку 1С

В окне «Открыть» необходимо найти и выбрать нужную вам обработку.

Открыть внешнюю обработку 1С

После выйдет предупреждение безопасности, если вы знаете, что это за обработка, то нажимаете кнопку  «Да».

Открыть внешнюю обработку 1С

Форма внешней обработки открылась.

Открыть внешнюю обработку 1С

Замечу, что в моем случае открылась форма обработки в отдельном окне, потому что, во-первых, я создал основную форму внешней обработки, а во-вторых, установил у основной формы в свойство «Режим открытия окна» значение блокировать окно владельца.

Открыть внешнюю обработку 1С

Чтобы пользователь мог открывать внешние обработки, ему необходимо установить право «Интерактивное открытие внешних обработок».

Интерактивное открытие внешних обработок

Другие статьи по конфигурированию в 1С:

Отчеты 1С

Константы в 1С

Справочники в 1С

Документы в 1С

Журналы документов в 1С

Перечисления в 1С

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

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

Основы разработки в 1С такси
  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Обработка 1С – это прикладной объект конфигурации, который служит для выполнения различных действий над информацией в базе 1С, таких как преобразование данных, добавление, удаление и т.д. Обработки в 1с можно разделить на два вида:

  • Внутренние обработки (встроенные в конфигурацию). Полный список таких обработок мы можем увидеть в режиме конфигуратора, открыв окно конфигурации:
  • Внешние обработки (можно хранить в виде отдельных файлов с расширением .epf). Список подключённых внешних обработок в управляемом интерфейсе мы можем найти в подсистеме «НСИ и Администрирование» — «Печатные формы, отчёты и обработки» — «Дополнительные отчёты и обработки».

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

Содержание

  • Пример создания простейшей внешней обработки в 1С 8.3
  • СведенияОВнешнейОбработке — функция для подключения внешней обработки
  • Подключение внешней обработки в режиме 1С:Предприятие

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

Постановка задачи:

На форме обработки необходимо дать возможность пользователю ввести текст, а по нажатию на кнопку вывести этот текст в окно сообщений.

В режиме конфигуратора переходим в меню «Файл» — «Новый» выбираем пункт «Внешняя обработка».

Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.

Связаться с нами можно по телефону +7 499 350 29 00.

Услуги и цены можно увидеть по ссылке.

Будем рады помочь Вам!

В открывшемся окне задаём имя для нашей обработки «МояПерваяОбработка».  Определим реквизит «ТекстДляВывода» (тип <Строка>, длина  <100>).

Далее добавляем форму обработки, не забудем включить наш реквизит «ТекстДляВвода» в состав формы.

Добавляем команду формы, назначив ей имя «Вывести текст», а так же в окне свойств по нажатию на лупу определим обработчик этой команды на «клиенте».

Код обработки в модуле формы может выглядеть так:

&НаКлиенте
Процедура ВывестиТекст(Команда)
	Сообщить(Объект.ТекстДляВывода);
КонецПроцедуры

Чтобы мы могли видеть нашу созданную кнопку на форме её необходимо добавить в раздел элементов формы. Это можно сделать простым перетаскиванием.

Наша обработка готова, её можно сохранить в виде файла на диск.

Запустив 1С в режиме предприятия и выбрав наш файл обработки через меню «Файл» — «Открыть» можем проверить её работоспособность.

Результат:

СведенияОВнешнейОбработке — функция для подключения внешней обработки

Технология подключения внешних обработок и отчётов в управляемом интерфейсе несколько отличается от подключения в обычном режиме. Попытавшись подключить нашу обработку через подсистему «НСИ и Администрирование» — «Печатные формы, отчёты и обработки» — «Дополнительные отчёты и обработки» мы неизменно получим следующую ошибку.

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

Пример такой функции для нашей обработки может выглядеть так:

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

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

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

Возврат ПарамРег;

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

Какие сведения необходимо использовать при регистрации той или иной обработки удобно подсмотреть в справочнике «ДополнительныеОтчетыИОбработки» в режиме конфигуратора.

Подключение внешней обработки в режиме 1С:Предприятие

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

Внешние обработки – очень удобный инструмент для компаний, использующих типовые конфигурации на 1С:Предприятие 8.3. Они позволяют не тратить силы и средства на обновления 1С, давая возможность обновлять базы одной кнопкой в режиме простого пользователя. Используя механизм библиотеки стандартных подсистем, можно добавить различные кнопки в документы и справочники, не изменяя типовую конфигурацию. Рассмотрим пример создания и подключения внешней обработки в одной из конфигураций 1С.

Создаем внешнюю обработку в 1С 8.3

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

Рис.1 Создаем внешнюю обработку
Рис.1 Создаем внешнюю обработку

 

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

  • Реквизит – поле для установки номенклатуры;
  • Кнопку, которая выполнит вызов кода.

Добавляем реквизит «Номенклатура» с типом данных «СправочникСсылка.Номенклатура» в соответствующем разделе и кнопку «Показать» в меню «Команды» -> «Команды формы».

Чтобы на форме отразились добавленные данные, их необходимо перетащить в элементы формы, расположенные в левой верхней части. Есть возможность поменять местами элементы с помощью синих стрелок. Чтобы созданная нами кнопка выполняла задуманное, ей нужно назначить процедуру. Через контекстное меню выберем «Действие команды», и на вопрос, где нужен обработчик, ответим: «Создать на клиенте и процедуру на сервере».

Рис.2 Создать на клиенте и процедуру на сервере
Рис.2 Создать на клиенте и процедуру на сервере

 

Фрагмент 1


&НаКлиенте
Процедура Показать(Команда)
       ПоказатьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПоказатьНаСервере()
       //Вставить содержимое обработчика.
КонецПроцедуры

Мы выбрали создание процедуры на сервере, так как хотим в качестве результата получить выборку из базы данных. На клиенте у нас нет такой возможности, поэтому потребуется подключение к серверу, который и обменивается с БД данными. Теперь нам необходимо написать код, который реализует задуманное нами. Будет использоваться запрос и вывод всех документов через функцию «Сообщить()».

Рис.3 Прописываем код
Рис.3 Прописываем код

 

Фрагмент 2


&НаСервере
Процедура ПоказатьНаСервере()
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ЗаказКлиентаТовары.Ссылка КАК Ссылка,
	|	ЗаказКлиентаТовары.Ссылка.Представление КАК Представление
	|ИЗ
	|	Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
	|ГДЕ
	|	ЗаказКлиентаТовары.Номенклатура = &Номенклатура";
	
	Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаЗаказКлиента = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаЗаказКлиента.Следующий() Цикл

		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = ВыборкаЗаказКлиента.Представление;
		Сообщение.Сообщить(); 	
		
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура Показать(Команда)
	ПоказатьНаСервере();
КонецПроцедуры

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

Чтобы разместить внешнюю обработку в разделе 1С, необходимо ей в модуле объекта прописать процедуру «СведенияОВнешнейОбработке». В основном меню обработки нажмите «Действия» и выберите «Модуль объекта». Здесь необходимо прописать все нужные для 1С настройки, чтобы система поняла, что от нее требуется и что за файл перед ней. На скриншоте изображен код функции «СведенияОВнешнейОбработке».

Фрагмент 3


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

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

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

Рис.4 Подключение внешней обработки
Рис.4 Подключение внешней обработки

 

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

  • Указать размещение объекта. Нажатием на «Не определено» мы открываем окно разделов и укажем, в каких разделах будет доступна операция;
  • Выбрать пользователей, у которых данная команда появится в меню «Дополнительные обработки» выбранных разделов без лишних настроек. Для этого в табличной части нужно выбрать пункт «Быстрый доступ» и добавить в правую половину ответственных пользователей;
  • На вкладке «Дополнительная информация» вы можете указать папку, в которой будет находиться загруженная обработка;
  • После нажатия клавиши «Записать» в выбранном разделе в меню «Дополнительные обработки» пользователи обнаружат нашу команду и смогут ею воспользоваться.
Рис.5 Создание команды вызова
Рис.5 Создание команды вызова

 

Если мы хотим внести изменения в нашу обработку, необходимо сначала выгрузить ее из базы. Для этого в справочнике «Дополнительные обработки и отчеты» найдите нужную строчку и воспользуйтесь командой «Выгрузить в файл…». Внесите изменения, сохраните обработку и через клавишу «Загрузить из файла…» найдите измененный файл epf, не меняя параметры. После записи все пользователи увидят внесенные изменения.

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

Рис.6 Загрузка обработки через конфигуратор
Рис.6 Загрузка обработки через конфигуратор

 

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

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

Обработку будем создавать для обычного приложения на примере конфигурации 1С. Управление производственным предприятием. После создания поместим обработку в справочник «Внешние обработки».

Создание обработки

Для создания новой обработки в 1С необходимо запустить 1С. в режиме «Конфигуратор».

внешние обработки в 1С

В Конфигураторе в меню «Файл» необходимо выбрать пункт «Новый», так же можно воспользоваться комбинацией клавиш Ctrl+N или кнопкой на панели быстрого доступа.

внешние обработки в 1С

В появившемся окне выбираем вариант «Внешняя обработка» и нажимаем «ОК».

внешние обработки в 1С

В открывшемся окне новой обработки необходимо задать ей имя. Назовём нашу обработку «ИнформацияОТекущемДне», автоматически формируется синоним, который будет виден пользователям.

внешние обработки в 1С

У внешней обработки могут быть реквизиты и табличные части. Так же можно добавить макеты и формы.

Теперь необходимо создать форму для нашей обработки. Выбираем в списке «Формы» и нажимаем «Добавить».

внешние обработки в 1С

В появившемся окне формы выбираем параметры для формы нашей обработки. Тип формы установим «Форма обработки», проконтролируем флаг «Назначить форму основной». Можно задать форме имя, но мы оставим стандартное. В данном примере оно не играет никакой роли. Нажимаем «Готово».

внешние обработки в 1С

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

внешние обработки в 1С

Напишем код для вывода информационного сообщения о текущей дате.

внешние обработки в 1С

Теперь сохраним нашу обработку в файл. Для этого в меню «Файл» выберем пункт «Сохранить»

внешние обработки в 1С

Указываем каталог для сохранения файла. По умолчанию имя файла заполняется именем, которое мы указали при создании обработки.

внешние обработки в 1С

Запуск обработки

Для запуска обработки запустим 1С в режиме «Предприятие».

внешние обработки в 1С

Чтобы запустить обработку в меню «Файл» выберем пункт «Открыть».

внешние обработки в 1С

Выбираем файл нашей обработки. Открывается окно обработки, нажимаем кнопку «Выполнить» и видим, что обработка выводит информационное сообщение о текущей дате. Всё работает корректно.

внешние обработки в 1С

Добавление обработки в систему

Пользователям будет неудобно каждый раз для запуска обработки указывать путь к файлу. Так же файл может затеряться или удалиться. Чтобы у наших пользователей всегда был доступ к только что созданной обработке поместим её в справочник «Внешние обработки».

В меню «Операции» выберем пункт «Справочник».

внешние обработки в 1С

В открывшемся окне выберем справочник «Внешние обработки».

внешние обработки в 1С

В данном справочнике хранятся все внешние обработки, внешние отчеты и внешние печатные формы добавленные в систему. Нажмём кнопку добавить на панели справочника.

внешние обработки в 1С

В появившемся окне нового элемента справочника необходимо указать вид элемента. Выбираем значение «Обработка».

внешние обработки в 1С

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

внешние обработки в 1С

Выбираем файл нашей обработки.  Имя элемента справочника подтянулось автоматически из поля «Синоним» указанного в обработке. Нажимаем «ОК»

внешние обработки в 1С

Наша обработка появилась в списке. Теперь пользователя достаточно дважды щёлкнуть на неё для запуска.

Сделать это можно двумя основными способами:

  • Иметь в штате квалифицированных специалистов, которые имеют достаточную компетенцию для решения основных вопросов.

  • Обратиться за сопровождением 1С к сторонним специалистам.

Почему клиенты обращаются именно к нам?

  • Мы предлагаем не только внедрение, настройку и сопровождение, но и разработку под 1С, которая позволит оптимизировать ваши бизнес-процессы.

  • На вас работает не один человек, а целая команда. Вы не зависите от того, захочет ли специалист пойти в отпуск или взять больничный.

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

  • Среди наших сотрудников не только специалисты 1С, но и опытные бухгалтера и юристы, поэтому мы подходим всесторонне к вопросу документооборота и отчетности.

  • Мы выстраиваем взаимодействие с клиентами так, чтобы вам удобно было оперативно обратиться по любому вопросу.

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

Табличные части в документах и справочниках часто бывают достаточно большими — сотни и тысячи строк. Почти также часто требуется выполнять какую-либо обработку этих самых строк и разумеется очень желательно автоматизировать эту обработку. Изменять конфигурацию в каждом подобном случае было бы очень непрактично, поэтому компания «1С» создала механизм внешних обработок табличных частей.

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

Кроме этого, нужно отметить, что создание внешних обработок табличных частей различается для обычного приложения (Бухгалтерия 2.0.*, ЗиУП 2.5.*, УТ 10.3.*) и управляемого приложения (Бухгалтерия 3.0.*, ЗиУП 3.*, УТ 11.*). В статье будут рассмотрены оба варианта.

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

Содержание

  1. Внешняя обработка табличных частей в управляемом приложении
  2. Создание
  3. Подключение
  4. Внешняя обработка табличных частей в обычном приложении
  5. Создание
  6. Подключение

Внешняя обработка табличных частей в управляемом приложении

Начнем с управляемого приложения. Тут нужно сказать, что в управляемом приложении обработки табличных частей заменены на более общие обработки заполнение объекта. В тексте ниже будет приведен пример создания и подключения обработки заполнения объекта на примере документа «Реализация товаров и услуг» (Бухгалтерия предприятия, редакция 3.0).

Создание

Итак, для начала нам нужно создать новую внешнюю обработку и в модуле объекта этой обработки размещаем такой код:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

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

ПараметрыРегистрации = Новый Структура;

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

ПараметрыРегистрации.Вставить(«Вид», «ЗаполнениеОбъекта»);

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

ПараметрыРегистрации.Вставить(«ВерсияБСП», «3.0.1.287»);

ПараметрыРегистрации.Вставить(«Наименование», «Установка скидок в реализации»);

ПараметрыРегистрации.Вставить(«Информация», «Внешняя обработка заполнения табличной части»);

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

ПараметрыРегистрации.Вставить(«БезопасныйРежим», Истина);

//определим документы и/или справочники

//в которых будет использоваться эта печатная форма

ПараметрыРегистрации.Вставить(«Назначение», Новый Массив);

ПараметрыРегистрации.Назначение.Добавить(«Документ.РеализацияТоваровУслуг»);

//используется для дополнительных отчетов

//подключенных к подсисстеме «Варианты отчетов»

ПараметрыРегистрации.Вставить(«ОпределитьНастройкиФормы», Ложь);

//если требуются исключения из безопасного режима их можно запросить

ПараметрыРегистрации.Вставить(«Разрешения», Новый Массив);

ПараметрыРегистрации.Разрешения.Добавить(РаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса(«https»,»yandex.ru»,80,»очень надо»));

//определяем таблицу команд

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

//добавляем команду

//вызов клиентского метода

Команда = ПараметрыРегистрации.Команды.Добавить();

Команда.Представление = «Установить скидку на клиенте»;

Команда.Идентификатор = «УстановитьСкидкуНаКлиенте»;

Команда.Использование = «ВызовКлиентскогоМетода»;

Команда.ПоказыватьОповещение = Истина;

//добавляем команду

//вызов серверного метода

Команда = ПараметрыРегистрации.Команды.Добавить();

Команда.Представление = «Установить скидку на сервере»;

Команда.Идентификатор = «УстановитьСкидкуНаСервере»;

Команда.Использование = «ВызовСерверногоМетода»;

Команда.ПоказыватьОповещение = Истина;

//добавляем команду

//заполнение формы без записи

Команда = ПараметрыРегистрации.Команды.Добавить();

Команда.Представление = «Установить скидку без записи»;

Команда.Идентификатор = «УстановитьСкидкуБезЗаписи»;

Команда.Использование = «ЗаполнениеФормы»;

Команда.ПоказыватьОповещение = Истина;

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

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

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

Команды = Новый ТаблицаЗначений;

Команды.Колонки.Добавить(«Представление», Новый ОписаниеТипов(«Строка»));

Команды.Колонки.Добавить(«Идентификатор», Новый ОписаниеТипов(«Строка»));

Команды.Колонки.Добавить(«Использование», Новый ОписаниеТипов(«Строка»));

Команды.Колонки.Добавить(«ПоказыватьОповещение», Новый ОписаниеТипов(«Булево»));

Команды.Колонки.Добавить(«Модификатор», Новый ОписаниеТипов(«Строка»));

Команды.Колонки.Добавить(«ЗаменяемыеКоманды», Новый ОписаниеТипов(«Строка»));

Возврат Команды;

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

В коде реализована экспортная функция СведенияОВнешнейОбработке(), она является обязательной и служит для описания внешнего обработки. Обязательными для заполнения являются параметры «Вид» (в нашем случае — «ЗаполнениеОбъекта»), «Версия» и «Команды». Необязательные параметры также очень желательно заполнять — это облегчает подключение и помогает избежать путаницы в дальнейшем.

Параметр «БезопасныйРежим» в значении «Истина» накладывает некоторые ограничения:

  • игнорируется привилегированный режим;
  • запрещена работа с COM;
  • запрещена загрузка внешних компонент;
  • запрещен запуск внешних приложений и команд ОС;
  • запрещен доступ к файловой системе (кроме временных файлов);
  • запрещен доступ к интернету.

При этом имеется возможность запросить исключения из безопасного режима (приме в коже выше).

В примере выше добавляются три команды разного типа. Команды типов «ВызовСерверногоМетода» и «ЗаполнениеФормы» должны быть реализованы в том же самом модуле объекта обработки — экспортная процедура ВыполнитьКоманду(). При этом команды типа «ЗаполнениеФормы» могут выполняться для новых (не записанных) объектов. Пример реализации:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

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

Если ИдентификаторКоманды = «УстановитьСкидкуБезЗаписи» Тогда

//для команд типа «ЗаполнениеФормы»

//параметр ОбъектыНазначения не передается

Для Каждого СтрТовары Из ПараметрыВыполнения.ЭтаФорма.Объект.Товары Цикл

СтрТовары.Цена = СтрТовары.Цена*0.9;

СтрТовары.Сумма = СтрТовары.Цена*СтрТовары.Количество;

КонецЦикла;

ИначеЕсли ИдентификаторКоманды = «УстановитьСкидкуНаСервере» Тогда

//для команд типа «ВызовСерверногоМетода»

//параметр ОбъектыНазначения содержит массив объектов

//для которых вызвана команда

Для Каждого ЭлементОбъектНазначения Из ОбъектыНазначения Цикл

ОбъектНазначения = ЭлементОбъектНазначения.ПолучитьОбъект();

Для Каждого СтрТовары Из ОбъектНазначения.Товары Цикл

СтрТовары.Цена = СтрТовары.Цена*0.9;

СтрТовары.Сумма = СтрТовары.Цена*СтрТовары.Количество;

КонецЦикла;

ОбъектНазначения.Записать(РежимЗаписиДокумента.Проведение);

КонецЦикла;

КонецЕсли;

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

Команды типа «ВызовКлиентскогоМетода» должны быть реализованы в модуле основной формы обработки — экспортная процедура ВыполнитьКоманду(). То есть требуется создать форму (можно абсолютно пустую), выбрать эту форму в качестве основной для обработки и уже в модуле этой формы реализовать требуемую процедуру. Пример реализации:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

&НаКлиенте

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

Если ИдентификаторКоманды = «УстановитьСкидкуНаКлиенте» Тогда

Если ВладелецФормы.ИмяФормы

= «Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаТовары» Тогда

ОбъектФормы = ВладелецФормы.Объект;

УстановитьСкидкуНаСервере(ОбъектФормы);

КопироватьДанныеФормы(ОбъектФормы, ВладелецФормы.Объект);

КонецЕсли;

КонецЕсли;

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

&НаСервере

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

Для Каждого СтрТовары Из Объект.Товары Цикл

СтрТовары.Цена = СтрТовары.Цена*0.9;

СтрТовары.Сумма = СтрТовары.Цена*СтрТовары.Количество;

КонецЦикла;

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

Выбор типа команды в первую очередь зависит от конкретной задачи.

Подключение

Подключение внешней обработки покажем на примере «Бухгалтерии предприятия, редакция 3.0».

Вкратце повторю основные этапы:

  1. Открываем вкладку «Администрирование» и переходим в раздел «Печатные формы, отчеты и обработки»;
  2. Устанавливаем галку «Дополнительные отчеты и обработки» и переходим в раздел «Дополнительные отчеты и обработки»;
  3. Жмем кнопку «Добавить из файла» и выбираем файл обработки;
  4. (Необязательно) Меняем наименование, комментарии, настраиваем видимость, изменяем размещение;
  5. Жмем кнопку «Записать и закрыть».

Внешняя обработка табличных частей в обычном приложении

Теперь создадим обработку табличных частей для обычного приложения — на примере документа «Реализация товаров и услуг» (Бухгалтерия предприятия, редакция 2.0).

Создание

В обычном приложении все гораздо проще — нам просто нужно создать обработку и в модуле объекта этой обработки реализовать экспортную процедуру Инициализировать(), которая имеет следующие параметры:

  • Объект — объект (документ или справочник) для которого произошел  вызов внешней обработки;
  • ИмяТабличнойЧасти — имя табличной части, для которой вызвана обработка;
  • ТабличноеПоле — табличное поле формы (элемент формы), для которого вызвана обработка.

Пример реализации:

Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПоле) Экспорт

Если ИмяТабличнойЧасти = «Товары» Тогда

Для Каждого СтрТовары Из Объект.Товары Цикл

СтрТовары.Цена = СтрТовары.Цена*0.9;

СтрТовары.Сумма = СтрТовары.Цена*СтрТовары.Количество;

КонецЦикла;

КонецЕсли;

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

Кроме этого внешняя обработка табличных частей может содержать макет с названием «Параметры_Авторегистрации». Как следует из названия в этом макете можно указать параметры для автоматической регистрации внешней обработки ТЧ. Для этого в первой колонке нужно перечислить объекты метаданных, а во второй соответствующие названия табличных частей, например так:

Параметры_Авторегистрации

Параметры_Авторегистрации

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

Подключение

Подключим нашу внешнюю обработку табличных частей на примере «Бухгалтерии предприятия, редакция 2.0».

Основные этапы:

  1. Открываем справочник внешних обработок ТЧ (Сервис->Дополнительные отчеты и обработки->Дополнительные внешние обработки табличных частей);
  2. Добавляем новый элемент справочника и указываем файл обработки;
  3. Записываем элемент.
  4. (Необязательно) Меняем имеющиеся настройки — представления, отборы, дополнительные параметры и прочее.

На этом все, надеюсь, что эта статья была Вам полезна.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Загрузка…

WorkingtoolНаряду с обычным режимом работы, в 1С:Предприятие версии 8.2 и 8.3 существует режим управляемого приложения, где используется механизм управляемых форм.

Чтобы создать обработку в управляемом приложении 1С, нужно вместо обычной формы создать управляемую. Покажем этапы создания обработки на примере простой задачи. Предположим, есть строка текста (поле «Текст»). По кнопке «Выполнить» нужно рассчитать её длину.

Первые 4 шага будут такими же, как при создании обычной обработки: https://life1c.ru/post/1687.

1. Выбираем информационную базу из списка, заходим в режим конфигуратора 1С. В качестве базы будет выбрана демо база 1С:Бухгалтерия 3.0.


2. В конфигураторе выбираем пункт меню Файл – Новый…


3. Выбираем из списка вид объекта – Внешняя обработка.


4. Задаём имя обработки. В данном случае имя нашей обработки будет «РассчитатьДлинуСтроки».


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




6. Создаём пользовательскую форму обработки. Тип формы: Управляемая.



7. Определяем обработчик нажатия на кнопку «Выполнить» с помощью команд формы. Для этого добавляем новую команду и называем её «ДействиеВыполнить».


8. В модуле формы определяем соответствующую процедуру для исполнения. Для создания обработчика в сплывающем окне выбираем пункт «Создать на клиенте».



9. Прописываем соответствующий код для управляемого приложения.


10. На форме создаём кнопку «Выполнить» для команды формы «ДействиеВыполнить».




11. Сохраняем файл обработки на диске.


12. Заходим в режим управляемого приложения 1С:Предприятие. Для примера работоспособности внешней обработки будем использовать демо базу 1С:Бухгалтерия 3.0 с интерфейсом «Такси».


13. Открываем обработку созданную нами обработку. Выбираем пункт меню Файл – Открыть…


14. В управляемой форме обработки набираем произвольное сообщение в поле «Текст» и нажимаем кнопку «Выполнить». Внизу окна появится результат выполнения обработки – количество символов написанного сообщения.


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

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

P.S.: Остались вопросы? Спрашивайте в комментариях!

Скачать

Contents

  • 1 Дополнительные отчеты и обработки — подсистема 1С БСП, предназначена для расширения функционала без изменения конфигурации.
    • 1.1 Что можно подключить
    • 1.2 Виды разработок
    • 1.3 Возможности БСП:
  • 2 Сведения о внешней обработке
  • 3 Подготовка разработки к подключению.
    • 3.1 Пример
    • 3.2 Подключение к базе.
  • 4 Отладка
    • 4.1 Способы отладки

Дополнительные отчеты и обработки — подсистема 1С БСП, предназначена для расширения функционала без изменения конфигурации.

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

Что можно подключить

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

Виды разработок

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

Возможности БСП:

  • В документах можно добавлять кнопки по заполнению всего документа, кнопки по вводу на основании.
  • Обработка может содержать несколько команд меню.
  • Вводить на основании и заполнять объекты сразу на основании нескольких объектов.
  • Задавать расписание выполнение серверных команд (на сервере).
  • Задавать режим «Безопасный» или «Небезопасный», т.е. запускать обработку с учетом ограничением прав или полные права
  • Задать режим использования: «Не использовать», «Отладка», «Использовать».
  • Включить использование в формах объекта и в форма списков
  • Привязать ко всем указанным объектам обработку или отчет.
  • Настроить быстрый доступ к определенным командам внешних обработок.
  • Возможность указать в каких разделах интерфейса должны появляться дополнительные обработки и отчеты.

Сведения о внешней обработке

«Вид»

Минимальным условием для регистрации разработки является заполнение поля «Вид».

Значение поле может принимать одно из значений, возвращаемых функциями: ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработки<Вид>().

Таблица. Поле «ВИД».

 Значение поля «Вид»  Расположение команды  Расширение

 файла

 ПечатнаяФорма  В меню «Печать» на форме объекта или списка  epf
 ЗаполнениеОбъекта  В меню «Заполнить» на форме объекта или списка  epf
 СозданиеСвязанныхОбъектов  В меню «Создать на основании» — «Создание связанных объектов..» на форме объекта или списка  epf
 Отчет  В меню «Отчеты» на форме объекта или списка  erf
 ДополнительнаяОбработка  В списке соответствующих подсистем в меню «Сервис» — «Дополнительные обработки»  epf
 ДополнительныйОтчет  В списке соответствующих подсистем в меню «Сервис» — «Дополнительные отчеты»  erf

«Назначение»

Содержит массив объектов конфигурации в формате «<Тип>.<Вид>», для которых будет назначен внешний отчет/обработка.

«Наименование»

Строка. Подставляется в наименование при создании элемента справочника «Дополнительные отчеты и обработки». Если не заполнено, то используется синоним внешней обработки/отчета.

 «Команды»

Таблица значений. Загружается в одноименную табличную часть элемента справочника «Дополнительные отчеты и обработки» при регистрации внешней обработки.

Эту табличную часть можно заполнить и вручную.

Колонки таблицы:

Идентификатор – строка (идентификатор команды).

Представление – описание команды.

Модификатор — строка (используется для дополнительных печатных форм).

ПоказыватьОповещение – окно оповещение будет появляться перед началом и после окончания выполнения (для команд клиентских и серверных без формы).

Использование – режим запуска обработки.

В колонке «Использование» указывается тип вызываемой команды. По сочетанию Вид-Тип команды система определяет какая предопределенная процедура будет вызвана из внешней обработки/отчета, и где она будет объявлена — на клиенте или на сервере.

Наиболее часто используются процедуры Печать() и ВыполнитьКоманду(), а также открытие формы без обращения к методу.

Это поле может принимать одно из значений, возвращаемых функциями ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКоманды<Тип>(), например, ТипКомандыВызовСерверногоМетода().

Таблица. Возможные варианты использования в таблице.

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

Для типа команды ВызовКлиентскогоМетода необходимо создать форму в обработке, назначить ее основной и объявить экспортную процедуру.

«Версия БСП»

Строка, версия встроенной в конфигурации БСП. Необходима для поддержки совместимости. Можно не заполнять.

«Безопасный Режим»

Булево, отображает режим запуска обработка. В безопасном режиме недоступен привилегированный режим, COM-соединение, загрузка dll, доступ к файловой системе и интернету.

«Информация»

Строка, комментарий, который характеризует обработку.

«Версия»

Строка, версия обработки.

Подготовка разработки к подключению.

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

Пример

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

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

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

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

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

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

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

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

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

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

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

         ПараметрыРегистрации.Вставить("Наименование", НаименованиеОбработки);

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

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

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

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

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

         Возврат Команды;

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

// Добавляем команду в таблицу команд по переданному описанию.
// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд

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

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

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

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

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

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

Подключение к базе.

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

Отладка

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

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

Способы отладки

  1. Создать форму. Реквизит ссылочного типа на объект. Вызвать экспортную функцию модуля объекта и необходимыми параметрами.
  2. Внести изменения в общий модуль «ДополнительныеОтчетыИОбработки». По владельцу формы организовать выбор действия.
  3. В разработку добавить код с ошибкой внутри «Попытка Исключения КонецПопытки». Для режима отладки устанавливаем флаг «Останавливаться по ошибке»
  4. В СведенияОВнешнейОбработке устанавливаете БезопасныйРежим = Ложь. Загружаете в справочник ДополнительныеОтчетыИОбработки. Запускаете эту обработку через Файл-Открыть. Закрываете обработку. Запускаете подключенную команду. Точки останова сработают в файле.
  5. Открывать разработку через обработку в которой вызывается разработка из справочника «Дополнительный отчеты и обработки». То же самое что п. 2 только в обработке.
  6. Тот же пункт 5 только в расширение конфигурауции.

Не забывайте обновить обработку в базе.

Понравилась статья? Поделить с друзьями:
  • Как написать вместо спасибо
  • Как написать вместо добрый вечер
  • Как написать владу чижову на мессенджер
  • Как написать владу череватому
  • Как написать владу а 4 смску