Пошук дублів в таблиці значень або табличному полі

Перевірка будь-якої таблиці на повторювані рядки, з висновком повідомлення які рядки задублірованни, і режимом "Відмова" для проведення документів.

У даній процедурі пошук дублів відбувається по всіх колонках рядків. Тобто дублем вважається повтор значень в двох рядках по всіх колонках.

Якщо повторюють рядків більше однієї, то вони всі будуть показані в повідомленні, з порядковим номером вихідної рядки і повторюваної рядки.

Дану процедуру краще використовувати в загальному модулі і викликати її з процедур "ПріЗапісі" або "ОбработкаПроведенія", і т.п. Тобто в тих, де можна зробити відмову від виконання подальших дествий
Як Таблиці - можна вказати "ТабліцуЗначеній", або "ТаблічнуюЧасть" документа, Довідника і т.д.

Якщо Тип (ТЧ) = Тип ( "ТабліцаЗначеній") Тоді
ТаблЗнач = ТЧ;
інакше
ТаблЗнач = ТЧ. Вивантажити ();
КонецЕсли;

Відбір = Новий Структура ();

Для кожного Стор З ТаблЗнач Цикл
Відбір. Очистити ();
Для кожного Колонки З ТаблЗнач. колонки Цикл
Якщо Колонки. ім'я <> "НомерСтрокі" Тоді
Відбір. Вставити (Колонки. Ім'я. Стор [Колонки. Ім'я]);
КонецЕсли;
КонецЦікла;

Рядки = ТаблЗнач. НайтіСтрокі (Відбір);
Якщо Рядки. Кількість ()> 1 Тоді
Для кожного НайденниеСтрокі З Рядки Цикл
Якщо Рядки. Знайти (НайденниеСтрокі)> 0 Тоді
СтрокаСообщенія = "Рядок №" + Рядки [0]. НомерСтрокі + "збігається з рядком №" + НайденниеСтрокі. Номер рядка ;
СообщітьОбОшібке (СтрокаСообщенія. Відмова. "Приберіть задвоєння рядків!");
КонецЕсли;
КонецЦікла;
КонецЕсли;
КонецЦікла;
КонецПроцедури

Схожі статті