Заказать звонок

ERP 2.0 Работа с характеристиками номенклатуры в табличных частях

15.09.2016

Предположим, что нам надо в разработанном нами документе сделать чтобы в табличной части документа колонки Номенклатура и Характеристика должны соответствовать следующим условиям:

1.       При выборе Характеристики должны отображаться значения, соответствующие значению поля Номенклатура.

2.       Если характеристики не используются (значение Номенклатура.ИспользованиеХарактеристик = НеИспользовать), то выбор Характеристики должен быть недоступен.

3.       Если характеристики используются (Номенклатура.ИспользованиеХарактеристик <> НеИспользовать), поле Характеристика должно быть заполнено.

 

Рассмотрим это на примере типовых процедур управления характеристиками номенклатуры конфигурации ERP 2.0.

 

Потребуются изменения в следующих объектах:

1.       Документ

1.1.  Реквизит Характеристика. Задать свойства Проверка заполненияВыдавать ошибку (для выполнения условия 3), Связи параметров выбораНоменклатура…Не изменять (для выполнения условия 1).

2.       Форма документа (для типовых процедур управления характеристиками номенклатуры)

2.1.  Добавить колонку реквизита ХарактеристикиИспользуются с типом Булево в реквизит-табличную часть документа

3.       Модуль формы документа (для выполнения условий 1, 2)

3.1.  Процедура ПриСозданииНаСервере()

3.2.  Процедура ПриЧтенииНаСервере()

3.3.  Процедура ПослеЗаписиНаСервере()

3.4.  Процедура …НоменклатураПриИзменении()

3.5.  Процедуры заполнения табличной части

4.       Модуль объекта документа (для выполнения условия 3)

4.1. Процедура ОбработкаПроверкиЗаполнения()

 

Подробнее на примере:

Часть 1. Доработка реквизитов документа.

В конфигурацию ERP 2.0 добавляем документ Новый_НоменклатураПартнераКПолучению с табличной частью ТоварыКПолучению, колонками Номенклатура и Характеристика (рис. 1).

 

Рис. 1. Добавление документа

Открываем свойства поля Характеристика. В поле Проверка заполнения выбираем Выдавать ошибку (рис. 2).

Рис. 2. Свойства поля Характеристика

 

Связи параметров выбора заполняем как на рис. 3.

Рис. 3. Связи параметров выбора у поля Характеристика

 

Часть 2. Доработка формы документа.

Открываем форму документа. В реквизит табличной части ТоварыКПолучению добавляем колонку реквизита ХарактеристикиИспользуются с типом Булево (рис. 4).

Рис. 4. Форма документа

 

Часть 3. Доработка модуля формы документа.

Открываем модуль формы документа. Определяем следующие процедуры:

1.       ПриСозданииНаСервере()

У ФормыДокумента определяем событие ПриСозданииНаСервере:

 

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

               УстановитьУсловноеОформление();

              

               Если Параметры.Свойство("АвтоТест") Тогда

// Возврат при получении формы для анализа.

                               Возврат;

               КонецЕсли;

              

               Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда

                               ПриЧтенииСозданииНаСервере();

               КонецЕсли;

КонецПроцедуры

 

2.       ПриЧтенииНаСервере()

У ФормыДокумента определяем событие ПриЧтенииНаСервере:

 

&НаСервере

Процедура ПриЧтенииНаСервере(ТекущийОбъект)

               ПриЧтенииСозданииНаСервере();

КонецПроцедуры

 

3.       ПослеЗаписиНаСервере()

У ФормыДокумента определяем событие ПослеЗаписиНаСервере:

 

&НаСервере

Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

               ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();

КонецПроцедуры

 

4.       Определяем процедуры, использующиеся в процедурах п. 1-3:

 

&НаСервере

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

               УсловноеОформление.Элементы.Очистить();

              

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

КонецПроцедуры

 

 

&НаСервере

Процедура ПриЧтенииСозданииНаСервере()

               ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();

КонецПроцедуры

 

 

&НаСервере

Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре()         

               ПараметрыЗаполненияРеквизитов = Новый Структура;

               ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));

                                                                                                                                                                            

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

КонецПроцедуры

 

5.       …НоменклатураПриИзменении()

У поля Номенклатура определяем событие ПриИзменении:

 

&НаКлиенте

Процедура ТоварыКПолучениюНоменклатураПриИзменении(Элемент)

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

              

               СтруктураДействий = Новый Структура;

               СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекСтрока.Характеристика);  

              

               ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекСтрока, СтруктураДействий, Неопределено);

КонецПроцедуры

 

6.       Добавляем процедуру заполнения табличной части ЗаполнитьТоварыКПолучению():

 

&НаСервере

Процедура ЗаполнитьТоварыКПолучению()

               Запрос = Новый Запрос;

               .............

               .............

               .............

                              

               Объект. ТоварыКПолучению.Загрузить(Запрос.Выполнить().Выгрузить());

              

               ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();

КонецПроцедуры

 

Часть 4. Доработка модуля объекта документа.

Открываем модуль объекта. Определяем процедуру модуля ОбработкаПроверкиЗаполнения():

 

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

                МассивНепроверяемыхРеквизитов = Новый Массив;

 

                ПараметрыПроверки = Новый Структура;

                ПараметрыПроверки.Вставить("ИмяТЧ", "ТоварыКПолучению");     

                ПараметрыПроверки.Вставить("СуффиксДопРеквизита", "");

                ПараметрыПроверки.Вставить("СписокСтрок", Неопределено);

                ПараметрыПроверки.Вставить("ВыводитьНомераСтрок", Истина);

                ПараметрыПроверки.Вставить("ОтборПроверяемыхСтрок", Новый Структура);

НоменклатураСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект,МассивНепроверяемыхРеквизитов,Отказ, ПараметрыПроверки);

               

ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты,МассивНепроверяемыхРеквизитов);

КонецПроцедуры

 

Теперь можно открыть конфигурацию в режиме Предприятие и проверить внесенные изменения.

 

Автор: 

Королева Дина


Возврат к списку

Наши услуги и вакансии

Разработчики
на full-time
Программист 1С на 8 часов в день
от 1 600 руб/час
Позадачная
разработка 1С
Доработки и развитие любых решений на платформе 1С
Стоимость по оценке
Карьера в Neti

Вакансии разработчиков и консультантов 1С
З.П. от 100 000 рублей