Найти в Дзене
Будни одинэсника | 1С

Как добавить в расширение 1С ввод на основании?

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

Возможности расширений не дают управлять вводом на основании у заимствованных документов, но из этой ситуации можно выйти.

Рассмотрим пример на базе программы 1С:Управление нашей фирмой. Есть документ Маршрутный лист нужно сделать, чтобы на его основании вводился документ Расход из кассы. В типовой программе такое не реализовано.

1. Создаем новое расширение:

Создание расширения
Создание расширения

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

Заимствование документов из основной конфигурации
Заимствование документов из основной конфигурации

3. Теперь нам нужно в расширении создать общею команду. Группу у команды указываете — Командная панель формы. Создать на основании. Тип параметра команды — Ссылки тех документов, в которых появится новая строка в подменю ВводаНаОсновании. Режим использования параметра — одиночный.

Добавление команды
Добавление команды

4. В модуле команды в процедуре — ОбработкаКоманды пишем код, который будет выводить новый документ:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ЗначенияЗаполнения= Новый Структура("Основание", ПараметрКоманды); ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЗначенияЗаполнения);

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

КонецПроцедуры
Программный код команды
Программный код команды

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

Настройка роли для команды
Настройка роли для команды

6. Проверяем, что что теперь на основании маршрутного листа можно ввести — Расход из кассы:

Ввод расхода из кассы на основании маршрутного листа
Ввод расхода из кассы на основании маршрутного листа

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

&После("ОбработкаЗаполнения")
Процедура Расш1_ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
МаршрутныйЛист = ДанныеЗаполнения.Основание;
Если ТипЗнч(МаршрутныйЛист) =
Тип("ДокументСсылка.МаршрутныйЛист") Тогда
Комментарий = "Этот документ заполнен на основании
Маршрутного листа";
КонецЕсли;
КонецПроцедуры
Программный код ввода на основании
Программный код ввода на основании

8. Окончательная проверка, введем на основании Маршрутного листа Расход из кассы:

Документ — Расход из кассы
Документ — Расход из кассы

#1с #унф #расширения #разработкаприложений #1спредприятие