Каталог решений - Добавление характеристик в свои объекты в УТ 11

Добавление характеристик в свои объекты в УТ 11

Добавление характеристик в свои объекты в УТ 11

В наличии

Добавление своего реквизита характеристика номенклатуры в не типовые объекты

Категория:

Описание

Просидев почти целый день и протупив, решил написать небольшую инструкцию для таких же как и я. Ибо в инете ничего не было найдено. 

Задача: создать свой справочник с табличной частью "СопутствующиеТовары". В котором есть номенклатура и характеристика. (не буду вдаваться в подробности для чего конкретно нужен этот справочник). Выбор, заполнение и отображение характеристик сделать по аналогии с типовым. За пример можно взять любой типовой документ с табличной часть с использованием номенклатур.

Решение:

Создать свой объект. Нужную табличную часть и добавить реквизиты табличной части Номенклатура и Характеристика. В Характеристики указать связи параметров выбора по номенклатуре и проверку заполнения в "выдавать ошибку".

1) Создать форму элемента и отобразить на ней необходимую нам табличную часть.

2) В форме добавить реквизит этой табличной части "ХарактеристикиИспользуются" с типом булево.

Далее код и не забыть привязать процедуры. Думаю. они понятны из названий.

#Область ОбработчиковСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
		
	УстановитьУсловноеОформление();
	
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
	
	ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
	
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
	
	ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
	
КонецПроцедуры

#Область ОбработчиковСобытийЭлементовФормы

&НаКлиенте
Процедура СопутствующиеТоварыНоменклатураПриИзменении(Элемент)
	
	ТекущаяСтрока = Элементы.СопутствующиеТовары.ТекущиеДанные;
	
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
	
	ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, Неопределено);
	
КонецПроцедуры

#КонецОбласти

#Область ПрочихОбработчиков

&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре()
	
	ПараметрыЗаполненияРеквизитов = Новый Структура;
	ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
											Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
	
	НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.СопутствующиеТовары, ПараметрыЗаполненияРеквизитов);
	
КонецПроцедуры

&НаСервере
Процедура УстановитьУсловноеОформление()

	УсловноеОформление.Элементы.Очистить();
	
	НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма, 
																			 "СопутствующиеТоварыХарактеристика",
																		     "Объект.СопутствующиеТовары.ХарактеристикиИспользуются");
	
КонецПроцедуры

#КонецОбласти

В модуле объекта

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ОбработчикиСобытий

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

#КонецОбласти

#КонецЕсли

 

 

has been added to your cart:
Оформление заказа