Каталог решений - Связи параметров выбора номенклатуры и характеристики в 1С 8.3

Связи параметров выбора номенклатуры и характеристики в 1С 8.3

Связи параметров выбора номенклатуры и характеристики в 1С 8.3

В наличии

Из этой статьи вы узнаете, как, используя системы стандартов и методик разработки 1С, правильно настроить связи параметров выбора номенклатуры и характеристики в новой табличной части.

Категория:

Описание

1. Заполним свойства характеристики

Код далее тестировался и работает на последних релизах конфигураций: КА, УТ.

2. Добавим новый реквизит табличной части на форму

ХарактеристикиИспользуются тип булево.

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

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

4. В модуле формы

&НаКлиенте
Перем КэшированныеЗначения; //используется механизмом обработки изменения реквизитов ТЧ

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

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

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

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

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

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

Нюанс 1. Не забудьте выбрать событие при изменении у номенклатуры в табличной части.

Нюанс 2. Если вы скопировали процедуры и вставили в модуль формы.

Откройте меню:  Текст -> Процедуры и функции…

Проверьте наличие повторяющихся имен:

ПослеЗаписиНаСервере
<ПослеЗаписиНаСервере>

ПриСозданииНаСервере
<ПриСозданииНаСервере>

ПриЧтенииНаСервере
<ПриЧтенииНаСервере>

Дважды кликните на следующие имена в скобках:

<ПослеЗаписиНаСервере>
<ПриСозданииНаСервере>
<ПриЧтенииНаСервере>

Чтобы они пропали.

Нюанс 3. Если у вас табличная часть называется не Товары.

Нужно изменить в модуле объекта:

ПараметрыПроверки.ИмяТЧ = "Товары";

Нужно изменить в модуле формы:

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

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

ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;

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