Сравнить 2 таблицы значений #776444


#0 by diabolo
Добрый день. Подскажите как можно сравнить 2 таблицы значений чтобы выдавалось в итоге: строка1 пункт 1 1 таблицы не равен пункту 1 второй таблицы и т.д. Количество пунктов будет ограничено, аблица значений получается из ексель файла не отсортированого. Пробовал запихнуть в запрос 2 таблицы и там сравнивать, но что то я не понял по чем и как связать между собой 2 таблицы. Чтобы потом просто проверять выбором если пункт 1_1 = пункту 1_2 тогда все ок, иначе несоответсвие. и выводить после всего только поля у которых несоотвествие, может есть проще варианты подскажите?
#1 by Зая Бусечка
Запрос, полное объединение по пункт_1
#2 by diabolo
Что в итоге получим? на пункт 1 например 10 строк в первой таблице и на пункт 1 20 строк второй таблицы, плюс 6 строк второй таблицы совпадают польностью по всем другим полям с первой таблицей.
#3 by Зая Бусечка
где не есть NULL
#4 by diabolo
Что то в итоге получается? Какое поле не есть нут Пункт_1? Слабовато я что то представляю :(
#5 by Serginio1
#6 by diabolo
Там что то не понятное со знаками. Нужно пройти все записи 2-х таблиц и сравнить их построчно. причем 1 строка 1-й таблицы может совпадать с 99 строкой 2-й таблицы полностью, или отличатся одним или несколькими другими полями.
#7 by diabolo
вот как именно понять что для 1 строки 1 таблицы соответствует 99 строка 2-й таблицы, причем значения первого пункта первой таблицы может совпадать с другими строками этой же таблицы.
#8 by diabolo
Привожу пример: Таблица1 НомерИзделия НомерДокумента Сумма 00001        1              500 00002        2              500 Так как в процессе эти файлы могли измениться то мог поменятся и номер документа и сумма. Таблица2 НомерИзделия2 НомерДокумента2 Сумма2 00001         5              501 00002         2              505 В итоге должно быть найдено что 1 строка 1-й таблицы соответсвует 1-й строке 2-й таблицы (но это может быть и 99 строка), чтобы потом в итоге написать что по 1 строке был изменен номер документа и сумма, по 2-й строке сумма, по 3 ничего не изменилось
#9 by Ildarovich
вам дали правильную ссылку. В терминологии той статьи "измерения" - это будет НомерИзделия. Таблицы будут стыковаться по значению в этой колонки. То есть вызов должен быть таким: а сама функция может иметь вид: Она вернет список строк. Измененная строка будет записана под исходной.
#10 by diabolo
Сделал по этому примеру. Для примера взял 3 строки в первой таблице и 2 строки в другой таблице, поменял во второй таблице в первой строке номер, во второй строке сумму. В итоге получил 5 строк 2 строки 1-й таблице со знаком один, 2 строки второй таблицы со знаком 0 и 5 строка 1 таблицы со знаком 0. Что поменялось неизвестно.
#11 by Ildarovich
Что же, оказалось, что форма представления результата вас не устраивает, можете переделать, информация о результатах сравнения вся в ответе есть: Номер изделия    Номер документа    Сумма    Знак     0001    000х    1    1    Это означает, что теперь строка для изделия "0001" такая 0001    0001    1        А была такая. Изменения видны друг под другом: старое значение снизу, новое сверху 0002    0002    х    1     0002    0002    2         0003    0003    3        Строка без пары означает, что этой строки в новой таблице нет. Она удалена.
#12 by Garykom
Это случаем не какая то система мониторинга файликами екселя рассылаемыми?
#13 by Garykom
+ Файликов то скоко всего 2 или их многа-многа? :)
#14 by ovrfox
Вообще то сравнить две таблицы (значений) не тривиальная операция. Когда -то делал для журналирования документа. Общий алгоритм такой : выбираются ключевые поля сравнения (можно все), назначается вес сравнения для каждого поля (можно 1). Сравниваются ключевые поля каждой строки с каждой и подсчитывается число похожести. Естественно, после выбора первой пары, она удаляется из сравнения. В конце получаем пары с некоим коэффициентом похожести. Пары с 0-вым или даже некоим положительным, но малым  коэффициентом считаются различными. В моем случае все коэфициенты по 11 полям были 1, а по номенклатуре был 6. Если коэффициент был меньше 6 - то пара считалась различной. Таким алгоритмом достаточно точно определялись пары, сбоев не было замечено.
#15 by ovrfox
забыл сказать, что после вычисления числа похожести для каждой пары строк, список сравнения упорядочивался по убыванию числа похожести и для пары, которая бралась первой, потом вычеркивались остальные строки сравнения, содержащие одну из строк.
#16 by diabolo
спс что расписали, но порядок вывода строк был немного другой, о том что я писал в, ну даже с этим все равно, просто результат который предоставился, не зная что было изменео, приходится пересматривать все поля, чтобы найти что же все таки разошлось. спс за информацию.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С