Результатом сравнения двух строк является массив, который показывает, что от "От" до "До" позиции строки совпадают (ОК = Истина) или нет.
Автор: ildarovich
Функция ТаблицаСравненияСтрок_(С1, С2) Экспорт
Ответ = Новый ТаблицаЗначений; //Ответ = НоваяТаблицаЗначений("От, До, ОК");
Ответ.Колонки.Добавить("От");
Ответ.Колонки.Добавить("До");
Ответ.Колонки.Добавить("ОК");
ЗаполнитьЗначенияСвойств(Ответ.Добавить(), Новый Структура("От, ОК", 1, Сред(С1, 1, 1) = Сред(С2, 1, 1)));
Для ё = 2 По Макс(СтрДлина(С1), СтрДлина(С2)) Цикл
Если Ответ[0].ОК <> (Сред(С1, ё, 1) = Сред(С2, ё, 1)) Тогда
ЗаполнитьЗначенияСвойств(Ответ.Вставить(0), Новый Структура("От, ОК", ё, НЕ Ответ[1].ОК));
Ответ[1].До = ё - 1
КонецЕсли
КонецЦикла;
Ответ[0].До = Макс(СтрДлина(С1), СтрДлина(С2));
Возврат Ответ
КонецФункции
//С дихотомией
Процедура РазДва(Ответ, С1, С2, От, До)
Если От + 2 > До И (Сред(С1, От, 1) = Сред(С2, От, 1)) <> (Сред(С1, До, 1) = Сред(С2, До, 1)) Тогда
ЗаполнитьЗначенияСвойств(Ответ.Вставить(0), Новый Структура("От, ОК", До, НЕ Ответ[1].ОК));
Ответ[1].До = От
ИначеЕсли От + 1 < До И Сред(С1, От, До - От + 1) <> Сред(С2, От, До - От + 1) Тогда
РазДва(Ответ, С1, С2, От, Цел((От + До) / 2));
РазДва(Ответ, С1, С2, Цел((От + До) / 2), До)
КонецЕсли
КонецПроцедуры
Функция ТаблицаСравненияСтрок(С1, С2) Экспорт
Ответ = Новый ТаблицаЗначений;
Ответ.Колонки.Добавить("От");
Ответ.Колонки.Добавить("До");
Ответ.Колонки.Добавить("ОК");
ЗаполнитьЗначенияСвойств(Ответ.Добавить(), Новый Структура("От, ОК", 1, Сред(С1, 1, 1) = Сред(С2, 1, 1)));
РазДва(Ответ, С1, С2, 1, Макс(СтрДлина(С1), СтрДлина(С2)));
Ответ[0].До = Макс(СтрДлина(С1), СтрДлина(С2));
Возврат Ответ
КонецФункции
ВставитьПараметрыВСтроку (БСП)
Кеширование текущей строки для сравнения при окончании редактирования
ВыполнитьДействиеСценарияОбменаДаннымиВПервойИнформационнойБазе (БСП)
ВыполнитьДействиеСценарияОбменаДаннымиВоВторойИнформационнойБазе (БСП)
ВыполнитьДействиеСценарияОбменаДаннымиВПервойИнформационнойБазеИзНеразделенногоСеанса (БСП)
ВыполнитьДействиеСценарияОбменаДаннымиВоВторойИнформационнойБазеИзНеразделенногоСеанса (БСП)
Проверка совпадения таблиц путем сравнения полного и внутреннего соединения