|   |   | 
| 
 | Проверить что 2 таблицы различны | ☑ | ||
|---|---|---|---|---|
| 0
    
        Гёдза 15.10.15✎ 15:57 | 
        Есть две таблицы Т1 и Т2 с одной колонкой "Значение".
 Какой самый хороший способ проверить что они различны? те хоть в одной есть отличное значение | |||
| 1
    
        ДенисЧ 15.10.15✎ 15:58 | 
        запросом     | |||
| 2
    
        Гёдза 15.10.15✎ 15:59 | 
        ну это понятно, вопрос каким?     | |||
| 3
    
        Timon1405 15.10.15✎ 15:59 | 
        (0) БСП power))
 // Сравнивает данные сложной структуры с учетом вложенности. // // Параметры: // Данные1 - Структура, ФиксированнаяСтруктура - // - Соответствие, ФиксированноеСоответствие - // - Массив, ФиксированныйМассив - // - ХранилищеЗначения, ТаблицаЗначений - сложные типы для сравнения. // - Строка, Число, Булево - простые типы, которые можно сравнивать на равно. // // Данные2 - Произвольный - те же типы, что и для параметра Данные1. // // Возвращаемое значение: // Булево. // Функция ДанныеСовпадают(Данные1, Данные2) Экспорт Если ТипЗнч(Данные1) <> ТипЗнч(Данные2) Тогда Возврат Ложь; КонецЕсли; Если ТипЗнч(Данные1) = Тип("Структура") ИЛИ ТипЗнч(Данные1) = Тип("ФиксированнаяСтруктура") Тогда Если Данные1.Количество() <> Данные2.Количество() Тогда Возврат Ложь; КонецЕсли; Для каждого КлючИЗначение Из Данные1 Цикл СтароеЗначение = Неопределено; Если НЕ Данные2.Свойство(КлючИЗначение.Ключ, СтароеЗначение) ИЛИ НЕ ДанныеСовпадают(КлючИЗначение.Значение, СтароеЗначение) Тогда Возврат Ложь; КонецЕсли; КонецЦикла; Возврат Истина; ИначеЕсли ТипЗнч(Данные1) = Тип("Соответствие") ИЛИ ТипЗнч(Данные1) = Тип("ФиксированноеСоответствие") Тогда Если Данные1.Количество() <> Данные2.Количество() Тогда Возврат Ложь; КонецЕсли; КлючиНовогоСоответствия = Новый Соответствие; Для каждого КлючИЗначение Из Данные1 Цикл КлючиНовогоСоответствия.Вставить(КлючИЗначение.Ключ, Истина); СтароеЗначение = Данные2.Получить(КлючИЗначение.Ключ); Если НЕ ДанныеСовпадают(КлючИЗначение.Значение, СтароеЗначение) Тогда Возврат Ложь; КонецЕсли; КонецЦикла; Для каждого КлючИЗначение Из Данные2 Цикл Если КлючиНовогоСоответствия[КлючИЗначение.Ключ] = Неопределено Тогда Возврат Ложь; КонецЕсли; КонецЦикла; Возврат Истина; ИначеЕсли ТипЗнч(Данные1) = Тип("Массив") ИЛИ ТипЗнч(Данные1) = Тип("ФиксированныйМассив") Тогда Если Данные1.Количество() <> Данные2.Количество() Тогда Возврат Ложь; КонецЕсли; Индекс = Данные1.Количество()-1; Пока Индекс >= 0 Цикл Если НЕ ДанныеСовпадают(Данные1.Получить(Индекс), Данные2.Получить(Индекс)) Тогда Возврат Ложь; КонецЕсли; Индекс = Индекс - 1; КонецЦикла; Возврат Истина; ИначеЕсли ТипЗнч(Данные1) = Тип("ТаблицаЗначений") Тогда Если Данные1.Количество() <> Данные2.Количество() Тогда Возврат Ложь; КонецЕсли; Если Данные1.Колонки.Количество() <> Данные2.Колонки.Количество() Тогда Возврат Ложь; КонецЕсли; Для каждого Колонка Из Данные1.Колонки Цикл Если Данные2.Колонки.Найти(Колонка.Имя) = Неопределено Тогда Возврат Ложь; КонецЕсли; Индекс = Данные1.Количество()-1; Пока Индекс >= 0 Цикл Если НЕ ДанныеСовпадают(Данные1[Индекс][Колонка.Имя], Данные2[Индекс][Колонка.Имя]) Тогда Возврат Ложь; КонецЕсли; Индекс = Индекс - 1; КонецЦикла; КонецЦикла; Возврат Истина; ИначеЕсли ТипЗнч(Данные1) = Тип("ХранилищеЗначения") Тогда Если НЕ ДанныеСовпадают(Данные1.Получить(), Данные2.Получить()) Тогда Возврат Ложь; КонецЕсли; Возврат Истина; КонецЕсли; Возврат Данные1 = Данные2; КонецФункции | |||
| 4
    
        Живой Ископаемый 15.10.15✎ 15:59 | 
        то есть само значение не важно? Тогда сортирвкой, получением хэша и сравнением его     | |||
| 5
    
        18_plus 15.10.15✎ 15:59 | ||||
| 6
    
        Гёдза 15.10.15✎ 16:01 | 
        (4) нет не важно
 Не таблицы значений, а таблицы в бд. Вернее даже одна тз, а другая в бд | |||
| 7
    
        Сторно абсурда 15.10.15✎ 16:04 | 
        (2) например, вложенный запрос - объединение , доп поле число 1 для одной таб, - 1 для другой и во внешнем группировка по значению и имеющие Сумма (доп поле)<> 0     | |||
| 8
    
        Лефмихалыч 15.10.15✎ 16:42 | 
        полное соединение по
 где А.поле есть Null или Б.поле есть null | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |