Реализация механизма «Ввод на основании» в 1С при помощи расширения конфигурации.
- Работа с расширением
В списке расширений двойным кликом или с помощью контекстного меню откроем конфигурацию нашего расширения

Мы будем работать с двумя документами «Счет на оплату клиенту» и «Реализация товаров и услуг», поэтому добавим эти два объекта в наше расширение

На момент написания статьи, расширения конфигурации 1С не поддерживают стандартный механизм ввода на основании, поэтому нам придется описать его вручную, приступим.
- Создание механизма «Ввод на основании«
Добавим общую команду «PROSTO_СоздатьРеализациюНаОснованииСчета«, заполним ее свойства и опишем обработчик команды.
В ветке конфигурации, в разделе «Общие», находим раздел «Общие команды» и добавляем свою команду.

Переходим с свойства общей нашей общей команды. В свойствах нам необходимо указать группу, в которую входит команда по умолчанию и тип параметра команды.
Для группы указываем «Командная панель формы. Создать на основании»

Для типа параметра команды указываем «СчетНаОплатуКлиенту«, который мы ранее добавили в наше расширение

Переходим в модуль команды и описываем обработку нашей глобальной команды:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
СтруктураДанных = Новый Структура("Основание" , ПараметрКоманды);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения" , СтруктураДанных);
ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);
КонецПроцедуры
На этом работа с глобальной командой завершена.
В основной ветке конфигурации находим документ «РеализацияТоваровУслуг«, открываем модуль объекта, находим процедуру «ОбработкаЗаполнения» и добавляем ее к нам в расширение с типом вызова «ВызватьПосле»

В добавленной процедуре напишем простой код для заполнения нашего документа по основанию
&После("ОбработкаЗаполнения")
Процедура PROSTO_ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
Если ДанныеЗаполнения.Свойство("Основание") Тогда
ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения.Основание);
Если ТипДанныхЗаполнения = Тип("ДокументСсылка.СчетНаОплатуКлиенту") Тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения.Основание);
Для Каждого СтрокаОснование Из ДанныеЗаполнения.Основание.Товары Цикл
НовСтр = Товары.Добавить();
ЗаполнитьЗначенияСвойств(НовСтр, СтрокаОснование);
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Так же необходимо дать права обычным пользователям на работу с нашей общей командой. Для этого возьмем роль, которая есть у каждого пользователя, добавим ее в наше расширение и разрешим просмотр нашей команды.


На этом разработка реализации ввода на основании в 1С при помощи расширения конфигурации завершено, можем запустить конфигурацию и проверить, что проделали данную работу не зря.

