0. Damian 894 19.09.12 15:24 Сейчас в теме

Сравнение табличных документов

- Вот можно же сравнить текстовые файлы, TotalCommander'ом, например, и все сразу видно: какие строки отличаются, какие строки уникальны... А мне такое же самое для табличного документа надо... Сделаете, а?

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. mailrum2004 19.09.12 19:31 Сейчас в теме
Спасибо. Хорошая обработка. Можно еще вывести отдельной колонкой разницу сумм.
2. Damian 894 19.09.12 19:55 Сейчас в теме
3. Bacemo 19.09.12 20:55 Сейчас в теме
да. Это лучше, чем штатная 1С Сравнение файлов. Так что + поставил
4. DrAku1a 1304 20.09.12 02:33 Сейчас в теме
Отлично! Теперь не нужно "париться" с ексель-функцией ВПР!
5. Famza 80 20.09.12 08:24 Сейчас в теме
(0) При сравнении двух файлов mxl из 7.7 выскочило
{ВнешняяОбработка.СравнениеТабличныхДокументов.МодульОбъекта(213)}: Ошибка при вызове метода контекста (Область)
Ячейка = ТабДок.Область("R"+ТекущаяСтрока+"C"+ТекущаяКолонка);
по причине:
Область не найдена: R1 000C2
Пересохранил в 8ке - результат тот же
6. Damian 894 20.09.12 09:54 Сейчас в теме
(5) совсем забыл, что числа добавляются к строкам с неразрывным пробелом между разрядами :) Сегодня поправлю.
7. Damian 894 20.09.12 13:47 Сейчас в теме
Добавлена возможность вывода разницы между сравниваемыми колонками числового типа и поправлены некоторые ошибки.
18. mailrum2004 21.09.12 14:20 Сейчас в теме
Спасибо за изменения (7). Идея (12) автоматического поиска ключевых колонок очень понравилась. Хорошо еще иметь возможность указывать тип для каждого файла в отдельности, чтобы сравнить *.xls с *.mxl
19. Damian 894 21.09.12 15:21 Сейчас в теме
(18) для того, чтобы задать параметры чтения файла, его надо открыть и посмотреть на состав колонок и количество строк. Мне кажется, при этом ничего не мешает сохранить MXL в XLS и сравнивать уже файлы одного формата.
8. fixin 3852 20.09.12 15:50 Сейчас в теме
Молодетс! Давно сам хотел написать такую обработку.
Только хотел, чтобы она сама определяла ключевые поля (нечисловые), анализируя статистику совпадаений.
И чтобы могла сравнивать многострочные отчеты, где одна строка данных занимает 2-3 строки (в 1с-стиле, те же карточки счета и т.п.)
9. Damian 894 20.09.12 16:20 Сейчас в теме
(8) была идея, чтобы сравнивала ячейки не одной строки, а нескольких (для сравнения ОСВ было бы милое дело), но обломался реализовывать.
Может добавлю, может нет, может кто-то другой добавит и выложит :) Буду только за :)
12. fixin 3852 20.09.12 17:09 Сейчас в теме
(9) ладно, оставь одну строку, но сделай автопоиск ключа хотя бы. Тогда будет мегажесть и тебе отольют памятник из золота.

Смотри, как это работает.
Есть две таблицы с, например, 5 колонками.
Ты предполагаешь, что у каждой из таблиц одинаковый уникальный ключ из нескольких колонок. Задача - его найти.

Перебираем ключи из 1, 2, 3 и 4х колонок.
Ищем такую комбинацию колонок, которая максимально встречается во второй таблице.

Ну например, есть колонки ФИО Рост Вес Дата
Я беру сначала ФИО, ФИО не годится, т.к. есть неоднозначные соответствия.
Я беру ФИО + Рост, но опять же не прокатывает, т.к. есть дубли.
А вот ФИО + Дата дублей не будет.

И еще - не мешало бы автосопоставлять колонки.
Например, по значениям - можно ведь определить, где колонка ФИО, где колонка адреса, где колонка дат и т.п.
Это еще не ИИ, но интересная тема. Тут бы пользователям помочь - подсказать какие виды таблиц бывают.

Пусть она сравнивает только плоские таблицы, в конце концов, всегда можно получить однострочные таблицы, или заюзать мою обработку по вытягиванию многоэтажных списков.
14. Damian 894 20.09.12 19:00 Сейчас в теме
(12) действительно, интересная тема, но, на мой взгляд, трудо- и ресурсоемкая. К тому же пользователи могут вконец облениться :)

(13), а зачем? для DBF придется указывать имена полей сопоставления и сравнения, следовательно файл надо открыть каким-нить просмотрщиком, тем же Excel... А раз открыли в Excel, почему бы его не сохранить как XLS? Ну и дальше по накатанной :)
15. fixin 3852 20.09.12 19:21 Сейчас в теме
(14) озолочение оно требует сил. Чтобы быть Золотым, нужно чтобы юзвери невыносимо Любили. Вот как меня, например. ;-)
16. Yashazz 2384 21.09.12 13:02 Сейчас в теме
(8), (9) Ага. Однажды я озверел и сделал такую штуку, мои юзвери все пользуются. А потом 2 года всё собирался причесать и на ИС выложить, но вот, опередили. Сравнение для нескольких строк тоже влом делать оказалось.
17. fixin 3852 21.09.12 13:25 Сейчас в теме
(16) вот видишь, как важно преУСПЕТЬ
10. VasMart 20.09.12 16:29 Сейчас в теме
11. Damian 894 20.09.12 17:04 Сейчас в теме
(10) WinMerge в своем первозданном виде не умеет сравнивать таблицы подобным образом. Возможно, есть плагины для него, которые реализовывают этот функционал, но я не задавался их поиском.
13. tazmag 20.09.12 17:37 Сейчас в теме
20. dyak84 23.09.12 09:30 Сейчас в теме
Спасибо вещь то что доктор прописал, плюс куча нужных плюшек. Сравнение с помощю екзеля уже просто достало, каждому новому человеку обясняй одно и тоже. Автору огромное спасибо, так держать. Появятся деньги обязательно скачаю.
21. Famza 80 24.09.12 08:47 Сейчас в теме
(0), еще было бы неплохо прикрутить просмотр сравниваемых файлов - удобней и номера колонок заполнять будет
22. Famza 80 24.09.12 09:18 Сейчас в теме
(0), взял две оборотки из 7.7, сохранил в *.mxl и сравнил. Результат:
1. При выборе в настройках сравнения для файла типа "Число" ячейки обнуляются. Может преобразовать в число хотя бы для файлов 1С?
2. При последовательном сравнении файлов сопоставление получается такое:
Прикрепленные файлы:
23. Damian 894 24.09.12 19:10 Сейчас в теме
(22),
1. Если не удается преобразовать значение ячейки в число (значение содержит нецифровые символы) - возвращается 0.
2. Последовательное сравнение так и будет работать. Этот режим нормально отработает только при идентичном содержимом колонок сопоставления.
24. Famza 80 25.09.12 09:02 Сейчас в теме
(23) но ведь колонки в пункте 2 одинаковы - стандартная ОСВ.
27. Damian 894 28.09.12 11:27 Сейчас в теме
(24) Famza, судя по приложенному скрину, во втором файле нет строки "08.4 Приобр. отд. объектов ОС". Последовательное сравнение так и должно отработать. Вообще этот режим сравнения изначально не планировался и в дальнейшем развиваться вряд ли будет. Используйте обычное сравнение, оно даст более качественный результат.

Обработка обновлена, см. Update 27.09.2012.
25. SvetLanaGil 26.09.12 13:54 Сейчас в теме
Спасибо за обработку! Отличное подспорье в работе.
26. Фред 27.09.12 13:15 Сейчас в теме
На досуге попробую, Кажется, может помочь иногда.))
28. gull22 87 05.10.12 13:17 Сейчас в теме
Отличная обработка. Пожелание автору. Не обязательное, и за то чтоесть низкий поклон. Желательно реализовать возможность изменения ширины колонок на закладке "Результат", а то экрана бывает не хватает
29. antares_of 12 29.10.12 11:42 Сейчас в теме
Очень полезная обработка. Встроенная в 1с обработка "сравнить файлы" тоже это делает, но не дает ни каких возможностей настройки перед выводом. А еще в стандартной я столкнулся с проблемой: когда сравниваю остатки в двух базах УТ, выгружаю в табличный документ всего две колонки с кодом (или названием) и с количеством. Так она мне некоторые позиции сопоставляет с теми у которых совершенно другой код и говорит, что код изменился. Хотя номенклатура с таким кодом (или названием) есть в обеих базах.
30. Vanchez 200 13.03.13 12:34 Сейчас в теме
Спасибо, очень пригодилась! Для себя добавил галки "Не учитывать регистр" (для колонок сопоставления), "Выводить только разные строки".
32. Famza 80 14.03.13 08:43 Сейчас в теме
(31) gurtas,
z ghjcnj cgfvk. n/r / ytn ltytu f j,hf,jnre [jxtncz

транслит "я просто спамлю т/к / нет денег а обработку хочется". Спам одноозначно
33. VallyD 14.03.13 22:49 Сейчас в теме
Обработка наверное хорошая, но если я правильно поняла, то если сформировать ОСВ по товарам с учетом партий, ничего не получится правильно сравнить. Не поможет ни последовательное, ни обычное сравнение. Так как для разных товаров может быть один партиеобразующий документ, и тогда наступит полная путаница. Пользователь fixin прав, без поиска ключа не обойтись.
34. Damian 894 14.03.13 23:38 Сейчас в теме
(33) да, не получится вообще нормально сравнить, если отчет построен иерархически, с группировками (не только ОСВ).
Для целей сравнения я обычно пишу на коленке отчет, который выведет таблицу значений, а потом в обработке указываю, совпадение каких полей можно считать ключом.
Иногда, кстати, быстрее не отчет на коленке набросать, а запрос в консоли - и вывести результат в табличный документ )
35. gull22 87 29.03.13 17:08 Сейчас в теме
Низкий поклон автору. Выручала экономя время не один раз! Скачал и другим советую.
36. logarifm 1042 10.04.13 10:36 Сейчас в теме
Идея имеется но она узкоприменима!
37. dyak84 10.04.13 10:57 Сейчас в теме
Автор такой маленький вопрос а если сортировка в первом файле от А до Ю, а в другом от Ю до А как в таком случае будет работать ваша обработка. Большие по несколько тисяч строк Ваша обработка обрабативает. Зарание спасибо за ответ
38. Damian 894 10.04.13 12:50 Сейчас в теме
(37) сортировка файлов не имеет значения, если не используется последовательное сравнение.
39. toss 31 31.05.13 10:51 Сейчас в теме
Штатное сравнение хорошо показывает конкретные ячейки с измененными данными, у Вас же цветом выделяется вся строка, и если колонок с данными несколько - непонятно в какой из них отличаются значения. Хотелось бы более наглядной заливки.
41. Damian 894 07.06.13 16:41 Сейчас в теме
(39) Первоначально задача стояла вообще, в принципе, определить строки, в которых различаются значения, чтобы сузить область поиска ошибок.
Раскрашивание и т.п. - это уже мелкие, дорогие сердцу интерфейсные плюшки :)
Может, когда-нибудь попозже и реализую более наглядную заливку.

(40) Судя по информации, почерпнутой в доверительных беседах с Google, это какой-то бок .NET Framework.
Файлы Excel читаются при помощи ADODB, и где-то передаются недопустимые, с точки зрения .NET, аргументы.
Единственное, что могу предложить:
1. Попробовать запустить на другой машине
2. Скопировать файлы в чистый табличный документ, сохранить как MXL и сравнивать уже их.
40. gull22 87 07.06.13 14:45 Сейчас в теме
Беда пришла откуда не ждали. УПП релиз 1.3.40.2 платформа 8.2.18.102. При выборе файла Excel сообщение об ошибке
{ВнешняяОбработка.СравнениеТабличныхДокументов.МодульОбъекта(1885)}: Ошибка при установке значения атрибута контекста (ActiveConnection)
axCatalog.ActiveConnection = Connection;
по причине:
Произошла исключительная ситуация (0x800a0bb9)
42. SAMIR666 22.02.14 23:46 Сейчас в теме
Отличная Оброботка
43. SlavaVNL 7 16.12.14 03:07 Сейчас в теме
Еще не проверял, но уже скачал и плюсанул. Всегда пользовался ВПР а тут такое счастие!
44. sonGodv 41 14.01.16 19:03 Сейчас в теме
Качественная обработка. Жаль нет управляемой формы. Думаю добавить, как-то уже отвык от обычного приложения
45. b-dm 169 02.03.16 15:35 Сейчас в теме
Хорошая вещица, добронто сделанная, но мне к сожалению не помогла...
46. PavelZnaikin 150 18.03.16 20:58 Сейчас в теме
47. Castlevania 39 08.04.16 11:39 Сейчас в теме
Огромное спасибо! Очень помогла
48. tricolor 19 26.08.16 17:24 Сейчас в теме
49. DomKom 13.03.19 00:48 Сейчас в теме
Гениально, работает, СПАСИБО.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Бизнес-аналитик 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Программист 1С
Москва
Полный день

Консультант-аналитик 1С
Москва
Полный день

Консультант ERP-систем
Москва
Временный (на проект)