Внешняя обработка для заполнения табличных частей в 1С 8.3

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

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

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

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

модуль объекта

Откройте модуль объекта и пропишите код, приведенный ниже (его также можно взять из данной выше обработки). В целом, структура не будет меняться в зависимости от ситуации. Редактируются только некоторые параметры настроек, а так же при необходимости имена переменных.

код модуля

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

Заполнение табличной части документа

Создадим новую форму обработки.

создание управляемой формы

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

В рамках нашего примера будет произведена обработка уже существующей табличной части «Товары». Для каждой строки будет установлена ручная скидка в размере 5%. Так же, мы рассчитаем саму сумму данной скидки, равную сумме товаров в строке, умноженных на 0,05.

&НаСервере
Процедура ВыполнитьКоманду(Команда, ОбъектыНазначения)
	Для каждого ЗаказКлиента из ОбъектыНазначения Цикл
		ЗаказКлиентаОбъект = ЗаказКлиента.ПолучитьОбъект();
		Для каждого СтрокаТЗ из ЗаказКлиентаОбъект.Товары Цикл
			СтрокаТЗ.ПроцентРучнойСкидки = 5;
			СтрокаТЗ.СуммаРучнойСкидки = СтрокаТЗ.Сумма * 0.05;
		КонецЦикла;
		ЗаказКлиентаОбъект.Записать();
	КонецЦикла;	
КонецПроцедуры

Далее сохраним нашу обработку и перейдем к ее регистрации в 1С.

Регистрация внешней обработки

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

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

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

загрузить из файла

Теперь в форме списка документов «Заказ клиента» появится кнопку «Заполнение…», которая позволит произвести изменить ручные скидки товаров сразу у нескольких документов.

кнопка заполнение

Так же данная кнопка будет доступна и в карточке самого документа.

установить скидки