Цитата(volodya1122 @ 10.06.20, 14:20)
проверяю в табличной части документа на дубли контрагентов
А мені не подобається Ваш код...
Я б реалізував би так:
лпПустоеЗначение = ПолучитьПустоеЗначение("Справочник.Контрагенты");
лпТаблЧасть = СоздатьОбъект("ТаблицаЗначений");//Копія табличної частини для отримання номерів строк
лпТаблЗнач = СоздатьОбъект("ТаблицаЗначений");//Місце пошуку дублів
ВыгрузитьТабличнуюЧасть(лпТаблЧасть,"Контрагент");
лпТаблЗнач.Загрузить(лпТаблЧасть);
лпТаблЗнач.НоваяКолонка("Количество");//Для підрахунку кількості дублів
лпТаблЗнач.Заполнить(1,,,"Количество");
лпТаблЗнач.Свернуть("Контрагент","Количество");
лпТаблЗнач.Сортировать("Количество");//Сортуємо
лпКвоСтрок = лпТаблЗнач.КоличествоСтрок();
Для лпСчетчик = 1 По лпКвоСтрок Цикл
лпНомСтроки = (лпКвоСтрок+1)-лпСчетчик;//Йдемо знизу вверх
лпКвоПовтор = лпТаблЗнач.ПолучитьЗначение(лпНомСтроки,"Количество");
Если лпКвоПовтор = 1 Тогда// Продовжувати пошук не потрібно, вище дублів немає
Прервать;
КонецЕсли;
лпКонтрагент = лпТаблЗнач.ПолучитьЗначение(лпНомСтроки,"Контрагент");
Если ПустоеЗначение(лпКонтрагент) = 1 Тогда//Може бути і таке, це не основне завдання.
Продолжить;
КонецЕсли;
лпИскомаяСтрока = "";
лпТекст = "";
Пока лпТаблЧасть.НайтиЗначение(лпКонтрагент,лпИскомаяСтрока,"Контрагент") = 1 Цикл
Если ПустаяСтрока(лпТекст) = 1 Тогда
лпТекст = " разів в стрічках № "+лпИскомаяСтрока;
Иначе
лпТекст = лпТекст+", "+лпИскомаяСтрока;
КонецЕсли;
лпТаблЧасть.УстановитьЗначение(лпИскомаяСтрока,"Контрагент",лпПустоеЗначение);//Затираємо знайденого
лпИскомаяСтрока = "";
КонецЦикла;
Сообщить("Дублюється контрагент "+СокрЛП(Строка(лпКонтрагент))+" "+лпКвоПовтор+лпТекст,"!");
КонецЦикла;
Сообщение отредактировал Sharzem - 11.06.20, 9:18
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)