Классификатор ТН ВЭД / Модуль объекта

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

#Область ПрограммныйИнтерфейс

// Выполняет проверку уникальности элемента справочника по сочетанию полей 'Код' и 'ПрослеживаемыйТовар', если ведется
// учет прослеживаемых импортных товаров.
//
// Параметры:
//	Отказ - Булево - признак отказа элемента справочника в информационной базе.
//
Процедура ПроверитьУникальность(Отказ) Экспорт
	
	Если Отказ
		Или ПометкаУдаления Тогда
		
		Возврат;
		
	КонецЕсли;
	
	ИспользоватьУчетПрослеживаемыхИмпортныхТоваров = УчетПрослеживаемыхТоваровЛокализация.ИспользоватьУчетПрослеживаемыхИмпортныхТоваров(
														Дата(1, 1, 1));
	
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ ПЕРВЫЕ 1
	|	КлассификаторТНВЭД.Ссылка КАК Ссылка
	|ИЗ
	|	Справочник.КлассификаторТНВЭД КАК КлассификаторТНВЭД
	|ГДЕ
	|	КлассификаторТНВЭД.Код = &Код
	|	И КлассификаторТНВЭД.Ссылка <> &Ссылка
	|	И НЕ КлассификаторТНВЭД.ПометкаУдаления
	|	И (НЕ &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
	|		ИЛИ КлассификаторТНВЭД.ПрослеживаемыйТовар = &ПрослеживаемыйТовар)";
	
	Запрос.УстановитьПараметр("Код", Код);
	Запрос.УстановитьПараметр("Ссылка", Ссылка);
	Запрос.УстановитьПараметр("ПрослеживаемыйТовар", ПрослеживаемыйТовар);
	Запрос.УстановитьПараметр("ИспользоватьУчетПрослеживаемыхИмпортныхТоваров",
								ИспользоватьУчетПрослеживаемыхИмпортныхТоваров);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Если РезультатЗапроса.Пустой() Тогда
		Возврат;
	КонецЕсли;
	
	Отказ = Истина;
	
	Если ИспользоватьУчетПрослеживаемыхИмпортныхТоваров Тогда
		ТекстИсключения = НСтр("ru='Значения полей ""Код"" и ""Прослеживаемый товар"" не уникальны'");
	Иначе
		ТекстИсключения = НСтр("ru='Значение ""%1"" поля ""Код"" не уникально'");
		ТекстИсключения = СтрШаблон(ТекстИсключения, Код);
	КонецЕсли;
	
	ВызватьИсключение ТекстИсключения;
	
КонецПроцедуры

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

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

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

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

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

#КонецЕсли

Связанные материалы