Реализация ввода на основании при помощи расширения конфигурации

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

Для примера разработки возьмем типовую конфигурацию «Управление торговлей 11.4».

Задача: Реализовать возможность ввода документа «Реализация товаров и услуг» на основании документа «Счет на оплату клиенту«.

В конфигураторе, в главном меню переходим в раздел «Конфигурация» — «Расширения конфигурации».

Откроется список всех расширений данной системы. Выбираем необходимое расширение или создаем новое. Для примера создадим новое расширение «Пример ввода на основании в расширении» в назначении расширения укажем «Дополнение».

  • Работа с расширением

Мы добавили новое расширение и теперь можно приступать к работе с ним.

Для этого в списке расширение двойным кликом или с помощью контекстного меню откроем конфигурацию нашего расширения

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

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

  • Создание механизма «Ввод на основании«

Добавим общую команду «PROSTO_СоздатьРеализациюНаОснованииСчета«, заполним ее свойства и опишем обработчик команды.

В ветке конфигурации, в разделе «Обище», находим раздел «Общие команды» и добавляем свою команду.

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

Для группы указываем «Командная панель формы. Создать на основании»

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

Переходим в модуль команды и описываем обработку нашей глобальной команды:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

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

На этом работа с глобальной командой завершена.

В основной ветке конфигурации находим документ «РеализацияТоваровУслуг«, открываем модуль объекта, находим процедуру «ОбработкаЗаполнения» и добавляем ее к нам в расширение с типом вызова «ВызватьПосле»

В добавленной процедуре напишем простой код для заполнения нашего документа по основанию

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

Так же необходимо дать права обычным пользователям на работу с нашей общей командой. Для этого возьмем роль, которая есть у каждого пользователя, добавим ее в наше расширение и разрешим просмотр нашей команды.

 

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

 

Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar