Универсальная процедура проверки на дубли строк в табличной части документа

buketoff 184 3 5 7
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
		
	Если Запасы.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	ПроверитьДублиСтрок(Ссылка, "Запасы", "Номенклатура, АлгоритмФормированияШК,Регион", Отказ);

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

//Процедура проверяет наличие в ТЧ дублей строк по указанным реквизитам
//ДокументСсылка       - ссылка на проверяемый документ
//ИмяТабЧасти          - имя проверяемой табличной части (строка)
//ПроверяемыеРеквизиты - перечень проверяемых реквизитов (строка, реквизиты разделяются запятой) 
 Процедура ПроверитьДублиСтрок(ДокументСсылка,ИмяТабЧасти,ПроверяемыеРеквизиты,Отказ)
 
	ТаблицаДокумента = ДокументСсылка[ИмяТабЧасти].Выгрузить();
	ТаблицаДокумента.Колонки.Добавить("КвоПроверкаДублей"); 
	ТаблицаДокумента.ЗаполнитьЗначения(1, "КвоПроверкаДублей");
	
	ТаблицаДокумента.Свернуть(ПроверяемыеРеквизиты,"КвоПроверкаДублей");
	
	Для Каждого ТекущаяСтрока Из ТаблицаДокумента Цикл 
		Если ТекущаяСтрока.КвоПроверкаДублей > 1 Тогда
			РеквизитыДляСообщения = "";
			Стр = СокрЛП(ПроверяемыеРеквизиты);
			Пока Найти(Стр,",") > 0 Цикл
				НаимРеквизита = СокрЛП(Лев(Стр,Найти(Стр,",") - 1));
				Стр = Прав(Стр,СтрДлина(Стр) - Найти(Стр,","));
				РеквизитыДляСообщения = РеквизитыДляСообщения+ТекущаяСтрока[НаимРеквизита]+", ";
			КонецЦикла; 
			РеквизитыДляСообщения = РеквизитыДляСообщения+ТекущаяСтрока[СокрЛП(Стр)];
			
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = "В разделе " + ТекущаяСтрока.Раздел + " встречается одинаковый номер строки " + ТекущаяСтрока.НомерСтрокиВОтчете + ", сохранение невозможно";
			Сообщение.Сообщить();
			
			Отказ = Истина;
		КонецЕсли; 
	КонецЦикла;
 
 КонецПроцедуры

Источник

0

См. также

Раскраска строки табличной части документа (обычные формы) по условию

Как загрузить в табличную часть одного документа табличную часть другого документа?

Расчет суммы в строке табличной части

Пересчет сумм в табличной части документа

ДозаполнитьПоляКонтактов (БСП)

Является ли значение табличной частью

ПолучитьУчастниковПоТаблице (БСП)

Заполнить реквизит "СуммаДокумента "на форме документа

ЗаполнитьТабличнуюЧастьОбъектаНачальнымиДанными (БСП)

Модератору