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

Как создать внешнюю обработку в 1С 8.3 (управляемые формы)

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

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

Включение механизма внешних обработок в программе

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

Заходим в меню «Администрирование» и по ссылке «Печатные формы, отчеты и обработки» переходим в настройки. Здесь нужно установить флажок «Дополнительные отчеты и обработки»:

включение в конфигурации 1С дополнительных отчетов и обработок

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

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

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

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

выбор вида документа

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

указание наименования новой обработки 1С

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

создание формы обработки

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

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

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

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

Расположение элементов на форме

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

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

&НаКлиенте

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

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

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

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

&НаСервере

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

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

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

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

СпрНомОбъект = ВыбДетЗаписи.Ссылка.ПолучитьОбъект();
СпрНомОбъект.СтавкаНДС = ВыбСтавкаНДС;

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

КонецЦикла;

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

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

добавление команды на форму

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вариант загрузки внешней обработки

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

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

Перейдем теперь в режим «1С Предприятия» и добавим внешнюю обработку:

регистрация обработки в системе

дополнительная информация

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

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

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

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

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

Комментариев: 13 на “Как создать внешнюю обработку в 1С 8.3 (управляемые формы)
  1. Спасибо все понятно

    Ответить

  2. а как ее программно получить в управляемых формах?

    Ответить

  3. Вы забыли упомянуть о «Размещении» — без этого обработка не появится в интерфейсе…

    Ответить

  4. Здравствуйте! Я — новичок в 1С 8.3 УТ.10.3. Скажите, пожалуйста, а где можно посмот

    Здравствуйте! Я — новичок в 1С 8.3. Скажите, пожалуйста, а есть ли у Вас статья «Загрузка инвентаризации из Excel». Спасибо за ответ. Лидия

    Ответить

  5. да, что-то непонятно где эта кнопка «выполнить» на ваших скриншотах ее нет

    Ответить

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

    Ответить

    • в модуль обработки добавь функцию СведенияОВнешнейОбработке()

      Ответить

      • Точнее сказать, в модуле объекта обработки добавить функцию СведенияОВнешнейОбработке()

        Ответить

    • Когда открываете обработку, сразу появляется окошко с реквизитами, формой ТЧ.., там снизу есть кнопка «Действия», жмякнуть её, и выбрать «Открыть модуль объекта», вот сюда надо вставить функцию СведенияОВнешнейОбработке() и тогда при открытии всё пойдёт нормальнно

      Ответить

  7. Поменяйте в листинге кавычки-елочки на нормальные, плз

    Ответить

  8. 1) Ошибка «Выберите элемент, а не группу!» — чтобы иметь возможность выбрать группу, в свойствах элемента формы обработки изменил свойство «ВыборГруппИЭлементов» в значение «Групп».

    2) Реквизита СтавкаНДС больше нет в справочнике Номенклатура, поэтому строку в коде
    СпрНомОбъект.СтавкаНДС = ВыбСтавкаНДС;
    заменил на
    СпрНомОбъект.ВидСтавкиНДС = ВыбСтавкаНДС;
    И тип реквизита формы ВыбСтавкаНДС поменял на ПеречислениеСсылка.ВидыСтавокНДС

    После этого обработка стала работать

    Ответить

  9. «» — такие кавычки не работают в 1С. Ребята, ваш код копируют — будьте повнимательней…

    Ответить

  10. Автор молодец. Без воды, одно мясо

    Ответить

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

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