Давайте рассмотрим пример создания расширения с заимствованными документами и чтобы один документ вводился на основании другого документа.
Возможности расширений не дают управлять вводом на основании у заимствованных документов, но из этой ситуации можно выйти.
Рассмотрим пример на базе программы 1С:Управление нашей фирмой. Есть документ Маршрутный лист нужно сделать, чтобы на его основании вводился документ Расход из кассы. В типовой программе такое не реализовано.
1. Создаем новое расширение:
2. Добавим в расширение два документа из основной конфигурации — Маршрутный лист и Расход из кассы. Видно, что в свойствах этих документов нет возможности управлять вводом на основании:
3. Теперь нам нужно в расширении создать общею команду. Группу у команды указываете — Командная панель формы. Создать на основании. Тип параметра команды — Ссылки тех документов, в которых появится новая строка в подменю ВводаНаОсновании. Режим использования параметра — одиночный.
4. В модуле команды в процедуре — ОбработкаКоманды пишем код, который будет выводить новый документ:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ЗначенияЗаполнения= Новый Структура("Основание", ПараметрКоманды); ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЗначенияЗаполнения);
ОткрытьФорму("Документ.РасходИзКассы.ФормаОбъекта", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);
КонецПроцедуры
5. Для того, что бы новая команда из расширения стала доступна пользователям, в расширении надо захватить или создать новую роль, и включить в неё созданную команду:
6. Проверяем, что что теперь на основании маршрутного листа можно ввести — Расход из кассы:
7. Для того чтобы документ, который создается на основании правильно заполнялся нужно переопределить процедуры заполнения в модуле объекта у документа Расход из кассы:
&После("ОбработкаЗаполнения")
Процедура Расш1_ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
МаршрутныйЛист = ДанныеЗаполнения.Основание;
Если ТипЗнч(МаршрутныйЛист) =
Тип("ДокументСсылка.МаршрутныйЛист") Тогда
Комментарий = "Этот документ заполнен на основании
Маршрутного листа";
КонецЕсли;
КонецПроцедуры
8. Окончательная проверка, введем на основании Маршрутного листа Расход из кассы:
#1с #унф #расширения #разработкаприложений #1спредприятие