07.07.2019»»воскресенье

Внешняя Обработка Табличной Части 8.2

07.07.2019
    7 - Comments
Внешняя Обработка Табличной Части 8.2 9,4/10 949 reviews

Смастерил внешнюю обработку ддля заполнения табличной части документа 'Реализация товаров и услуг' для БП 3.0. Кнопка появилась сверху документа. А надо чтоб она была только на закладке 'Товары'. Как это сделать?

Блог компании 1С goodwill Здесь мы научимся создавать внешнюю обработку заполнения табличной. Создание обработки по заполнению табличной части документа в 1. С Предприятии 8.

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

Постановка задачи В этой статье рассмотрим процесс написания простейшей внешней обработки заполнения табличной части в 1С 8 для конфигураций, использующих обычное приложение. Для примера возьмем такую задачу: “В конфигурации 1С:Бухгалтерия 2.0 создать внешнюю обработку заполнения табличной части Товары документа Реализация товаров и услуг, данные для заполнения взять из табличной части Товары документа Поступление товаров и услуг”.

Внешняя обработка табличной части документа 1с 8.2

Таким образом нам необходимо заполнить товары реализации на основании товаров поступления, такая задача довольно часто встречается в реальной практике программиста 1С. Создание внешней обработки Зайдем в 1С 8 в режиме Конфигуратор. При помощи меню Файл - Новый или пиктограммы Новый документ создадим новую внешнюю обработку. В поле Имя укажем: “ПростейшееЗаполнениеТабличнойЧасти” и сохраним внешнюю обработку на жесткий диск используя меню Файл - Сохранить или пиктограмму Сохранить или сочетание клавиш Ctrl + S. Выделив ветку Реквизиты в дереве метаданных обработки и нажав кнопку Добавить(кнопка с зеленым плюсом) создадим новый реквизит внешней обработки — ДокументПоступления, выберем для него тип ДокументСсылка.ПоступлениеТоваровУслуг, этот реквизит нужен нам для выбора документа Поступление товаров и услуг, на основании которого будет заполняться реализация. Для выбора документа поступления нам понадобится отдельная форма. Выделив ветку Формы и используя ту же кнопку — Добавить создадим форму внешней обработки.

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

Внешняя Обработка Заполнения Табличной Части Документа 1с 8.2

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

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

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

Нам достаточно заполнить только первый параметр этого метода, передав туда строку с именем нашей формы. ФормаВыбораПоступления = ПолучитьФорму( 'Форма'); Теперь откроем полученную форму, используя модальное открытие(пока форма открыта все остальные окна 1С недоступны), потому что при таком способе открытия дальнейший наш код в процедуре Инициализировать выполняться не будет, пока пользователь не закроет форму. После того, как пользователь закроет форму нам необходимо проверить, заполнен ли реквизит ДокументПоступления(на случай если документ поступления не был выбран). Если после проверки ДокументПоступления окажется пустым, то дальнейшее выполнение обработки не имеет смысла, и его следует прервать. Если НЕ ЗначениеЗаполнено(ДокументПоступления) Тогда Сообщить( 'Не выбран документ поступления'); Возврат; КонецЕсли; Для проверки заполненности реквизита здесь используется функция глобального контекста ЗначениеЗаполнено, она проверяет отличатся ли значение переданное в параметре от значения по умолчанию того же типа. Процедура Сообщить выводит указанный текст в окно сообщений 1С 8. Ключевое слово Возврат прерывает выполнение процедуры.

Приступим к написанию запроса, который будет выбирать данные табличной части Товары документа Поступление товаров и услуг. Создадим новый запрос: Запрос = Новый Запрос; В параметр запроса передадим ссылку на выбранный нами документ поступления, этот параметр понадобится нам для того что бы наложить условие на документ в запросе. Запрос.УстановитьПараметр( 'ДокументПоступления',ДокументПоступления); Напишем текст запроса, будем делать это при помощи Конструктора запроса.

Внешняя обработка табличной части документа 1с 8.2

Внешняя Обработка Заполнения Табличной Части 8.2

Писать текст запроса вручную не рекомендуется, это не эффективно и отнимает кучу времени. Для начала напишем строку: Запрос.Текст = '. Поставим курсор между символами кавычек, нажмем правую кнопку мыши и выберем пунк Конструктор запроса. После этого появится предложение создать новый запрос, нажмем кнопку “ОК”. Откроется окно конструктора, в левой его части расположены все доступные таблицы базы данных, нам необходим документ ПоступлениеТоваровУслуг. Найдем его и раскроем при помощи символа “+”, выберем табличную часть Товары и перетащим ее во вторую часть экрана конструктора, которая называется Таблицы(Также переместить нужную таблицу можно при помощи кнопки “”). Теперь раскроем по “+” выбранную нами таблицу( ПоступлениеТоваровУслугТовары) и перетащим необходимые для нашего заполнения табчасти поля в третью часть экрана конструктора, которая так и называется — Поля.

Внешняя Обработка Табличной Части Документа 1с 8.2

Все доступные поля выбирать не будем, ограничимся таким набором: Номенклатура, Количество, Цена, Сумма, СтавкаНДС, СуммаНДС. Так как нам нужны данные только одного документа поступления(который мы выбрали перед началом заполнения), то в на закладке “Условия” наложим условие на ссылку документа при помощи переданного нами параметра. Создание текста запроса в конструкторе на этом завершено, нажмем кнопку “ОК”.