|
Сравнение двух ТаблицЗначений типа ДанныеФормаКолекция |
☑ |
0
alekosansey
19.05.16
✎
08:42
|
Добрый день. Подскажите пожалуйста как сравнить две ТаблицыЗначений (тип ДанныеФормаКолекция) не бегая на сервер, а все делая на клиенте.
|
|
1
zak555
19.05.16
✎
08:44
|
Атгоритм сравнения тз видел?
|
|
2
alekosansey
19.05.16
✎
08:48
|
Если ТипЗнч(ТаблицаЗначений1) <> Тип("Таблицазначений") ИЛИ ТипЗнч(ТаблицаЗначений2) <> Тип("ТаблицаЗначений") Тогда
Возврат Ложь;
КонецЕсли;
Если ТаблицаЗначений1.Количество() <> ТаблицаЗначений2.Количество() Тогда
Возврат Ложь;
КонецЕсли;
Если ТаблицаЗначений1.Колонки.Количество() <> ТаблицаЗначений2.Колонки.Количество() Тогда
Возврат Ложь;
КонецЕсли;
// Проверим поля
Для каждого Колонка Из ТаблицаЗначений1.Колонки Цикл
Если ТаблицаЗначений2.Колонки.Найти(Колонка.Имя) = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
КонецЦикла;
Для каждого Колонка Из ТаблицаЗначений2.Колонки Цикл
Если ТаблицаЗначений1.Колонки.Найти(Колонка.Имя) = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
КонецЦикла;
// сформируем строку индекса для оптимизации поиска по таблице значений
СтрокаИндекса = "";
Для каждого Колонка Из ТаблицаЗначений1.Колонки Цикл
Если СтрокаИндекса = "" Тогда
СтрокаИндекса = Колонка.Имя;
Иначе
СтрокаИндекса = СтрокаИндекса+","+Колонка.Имя;
КонецЕсли;
КонецЦикла;
// добавим индекс
ТаблицаЗначений2.Индексы.Добавить(СтрокаИндекса);
// Проверим записи
Для каждого СтрокаТаблицы Из ТаблицаЗначений1 Цикл
СтруктураПоиска = Новый Структура;
Для каждого Колонка Из ТаблицаЗначений1.Колонки Цикл
СтруктураПоиска.Вставить(Колонка.Имя, СтрокаТаблицы[Колонка.Имя]);
КонецЦикла;
СтрокиТаблицы2 = ТаблицаЗначений2.НайтиСтроки(СтруктураПоиска);
Если СтрокиТаблицы2.Количество() <> 1 Тогда
Возврат Ложь;
КонецЕсли;
|
|
3
alekosansey
19.05.16
✎
08:49
|
Но так как у ДанныеФормыКолекции нету Колонок. Я не знаю как к ним оброщаться
|
|
4
los_hooliganos
19.05.16
✎
08:51
|
Проще всего обе ТЗ отправить на сериализацию и сравнить побитно 2 сериализованных объекта.
|
|
5
alekosansey
19.05.16
✎
09:17
|
Хорошо попробую. Спасибо
|
|