2
cons74
11.02.16
✎
10:24
|
Нашел
// Принимает на вход две строки из табличных частей с одинаковой структурой и сравнивает их.
// Строки считаются измененными, если у них совпадает хотя бы одна колонка.
Функция ПроверитьСтрокиНаРавенство(Строка1, Строка2, НаборКолонок)
|
|
3
cons74
11.02.16
✎
12:27
|
// Принимает на вход две строки из табличных частей с одинаковой структурой и сравнивает их.
// Строки считаются измененными, если у них совпадает хотя бы одна колонка.
Функция ПроверитьСтрокиНаРавенство(Строка1, Строка2, НаборКолонок)
ЧислоОдинаковыхКолонок = 0;
ЧислоКолонок = 0;
//-, 11.02.2016. Добавлено: если в ТЧ всего одна колонка
Если НаборКолонок.Количество() = 1 Тогда
Возврат Истина;
КонецЕсли;
//-, 11.02.2016, конец блока.
Для Каждого Колонка Из НаборКолонок Цикл
ЧислоКолонок = ЧислоКолонок + 1;
Если Строка1[Колонка.Имя] = Строка2[Колонка.Имя] Тогда
ЧислоОдинаковыхКолонок = ЧислоОдинаковыхКолонок + 1;
КонецЕсли;
КонецЦикла;
Если (ЧислоОдинаковыхКолонок/ЧислоКолонок) >= КритерийДоступаНаРавенствоСтрок() Тогда
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
// Возвращает доступ - отношение числа неизмененных колонок в строке табличной
// части к общему числу колонок. На данный момент доступ - 3/5. Т.е. если
// при сравнении двух строк в двух табличной частях с одинаковым составом колонок
// изменилось всего 2 колонки из 5 то считается, что это та же самая строка.
//
Функция КритерийДоступаНаРавенствоСтрок()
//Возврат (0.6);
//-, 11.02.2016. Изменено: всегда будем считать строку измененной, а не удаленной и добавленной
Возврат(0);
КонецФункции
|
|