Детальный Diff-анализатор табличных документов для 1С:Предприятие 8.3 (Управляемые формы)
🎯 Инструмент предназначен для поточечного сравнения табличных документов в экосистеме 1С:Предприятие 8.3. Решает ключевую проблему ложных срабатываний при сдвигах строк и объединенных ячейках с помощью интеллектуального маппинга по ключевым колонкам и UUID-трекингу.
Главные фишки:
- Интеллектуальный Diff по ключу: сравнение идет по значению ключевой колонки, а не по номеру строки. Добавление/удаление строк не ломает результат.
- Визуальная подсветка областей: автоматическая цветовая маркировка ячеек (Розовый — удалено, Зеленый — добавлено, Желтый — изменено) прямо в
ТабличныйДокумент. - UUID-трекинг для 100% точности: использование скрытых технических колонок с уникальными идентификаторами гарантирует подсветку именно той строки, где найдена дельта, без риска смещения.
- Безопасная работа со сложными таблицами: парсинг через
ПостроительЗапросапозволяет корректно обходить объединенные ячейки, ломающие стандартный поэлементный обход.

Решаемые проблемы и сценарии
- Как сравнить два отчета в 1С, если добавились новые строки и съехала нумерация? Стандартное построчное сравнение (строка 1 = строка 1) выдает «кашу». Этот инструмент ищет строки по ключевому значению (например, номенклатура или контрагент), поэтому сдвиги не влияют на результат.
- Как найти конкретную ячейку с расхождением в огромной оборотке? Инструмент проводит Diff по ячейкам. Если строка найдена по ключу, но данные расходятся, выдается точный лог:
Колонка 'Сумма': в 1-м [1000], во 2-м [1200]с визуальной подсветкой этой ячейки. - Как сравнить таблицы с объединенными ячейками без ошибок? Обычный обход
ТабличныйДокумент.Область()падает на объединенных ячейках. Здесь выгрузка в Таблицу Значений происходит черезПостроительЗапроса, который корректно разрешает объединения. - Как избежать ложных срабатываний при дубликатах ключей? Алгоритм использует индексацию через
Соответствиеи проверку полного совпадения строк. Если в документе есть дубликаты, они будут сопоставлены корректно, а не свалены в одну кучу.
Архитектура UUID-трекинга (BSL / 1С):
ТекстРезультат = Новый ТекстовыйДокумент;
ТекстРезультат.ДобавитьСтроку("=== ДЕТАЛЬНОЕ СРАВНЕНИЕ ТАБЛИЧНЫХ ДОКУМЕНТОВ ===");
ТекстРезультат.ДобавитьСтроку("");
КоличествоКолонок1 = ТЗ1.Колонки.Количество() - 1; // -1 так как последняя RowID
КоличествоКолонок2 = ТЗ2.Колонки.Количество() - 1;
Если КоличествоКолонок1 = 0 И КоличествоКолонок2 = 0 Тогда
ТекстРезультат.ДобавитьСтроку("ОШИБКА: Оба документа пусты.");
Возврат ТекстРезультат;
КонецЕсли;
ТекстРезультат.ДобавитьСтроку("(Сравнение по порядку колонок: 1-я с 1-й, 2-я со 2-й и т.д.)");
ТекстРезультат.ДобавитьСтроку("");
СчетчикОтличий = 0;
МассивСовпадений = Новый Массив;
ИндексКолонкиКлюча = 0; // Сравниваем по первой колонке
// Индексация второго документа
ИндексТЗ2 = Новый Соответствие;
Для Каждого СтрТЗ2 Из ТЗ2 Цикл
КлючПоиска = ?(КоличествоКолонок2 > 0, Строка(СтрТЗ2[ИндексКолонкиКлюча]), "");
МассивСтрок = ИндексТЗ2.Получить(КлючПоиска);
Если МассивСтрок = Неопределено Тогда
МассивСтрок = Новый Массив;
ИндексТЗ2.Вставить(КлючПоиска, МассивСтрок);
КонецЕсли;
МассивСтрок.Добавить(СтрТЗ2);
КонецЦикла;
Для Каждого СтрТЗ1 Из ТЗ1 Цикл
КлючПоиска = ?(КоличествоКолонок1 > 0, Строка(СтрТЗ1[ИндексКолонкиКлюча]), "");
МассивСтрок2 = ИндексТЗ2.Получить(КлючПоиска);
Если МассивСтрок2 = Неопределено ИЛИ МассивСтрок2.Количество() = 0 Тогда
СчетчикОтличий = СчетчикОтличий + 1;
ТекстРезультат.ДобавитьСтроку("[-] Строка есть в 1-м, но отсутствует во 2-м документе | Ключ: " + КлючПоиска);
МассивУИДУдалено.Добавить(СтрТЗ1.RowID);
Продолжить;
КонецЕсли;
НайденныйИндекс = Неопределено;
Для Инд = 0 По МассивСтрок2.ВГраница() Цикл
СтрТЗ2 = МассивСтрок2[Инд];
Если СтрокиРавныПолностью(СтрТЗ1, СтрТЗ2) Тогда
НайденныйИндекс = Инд;
Прервать;
КонецЕсли;
КонецЦикла;
Ключевые сущности в коде: ПостроительЗапроса, UUID, Соответствие, Область(), ТабличныйДокумент, Diff, Маппинг.
Пошаговый сценарий использования (Use Case)
Задача: Сверить два варианта печатной формы (до и после доработки), вставив данные из Excel.
- Шаг 1. Запуск: Откройте внешнюю обработку (
.epf) в режиме 1С:Предприятие (управляемые формы). - Шаг 2. Загрузка первого документа: В поле "ТабДок1" вставьте данные, скопированные из Excel, табличного документа или таблицы значений.
- Шаг 3. Загрузка второго документа: В поле "ТабДок2" аналогично вставьте вторую версию данных.
- Шаг 4. Настройка ключа: Укажите ключевую колонку (по умолчанию — первая), по которой будут искаться строки.
- Шаг 5. Сравнение: Нажмите кнопку «Сравнить документы».
- Шаг 6. Анализ: Изучите визуальный результат на экране (цветовая подсветка строк) и читаемый текстовый лог в поле «Результат» с детализацией до ячейки.
Частые ошибки и их решения
|
Ошибка / Проблема |
Причина в стандартных алгоритмах |
Решение в инструменте |
|---|---|---|
| Сотни ложных отличий | Добавилась 1 строка, съехала нумерация, построчное сравнение сломалось | Diff по ключевой колонке: строки ищутся по значению, а не по номеру. |
| Подсветка не тех строк | Память по номерам строк дает сбой при модификациях | UUID-трекинг: скрытая колонка с уникальным идентификатором жестко привязывает подсветку к нужной области. |
| Ошибка обхода таблицы | В таблице есть объединенные ячейки, ломающие перебор | ПостроительЗапроса: выгрузка в ТЗ минуя визуальные объединения. |
| Ложные срабатывания на дублях | Две одинаковые номенклатуры свернулись в одну | Индексация через Соответствие: проверка полного совпадения строк исключает конфликты дублей. |
Сравнительный анализ
Сравнение: Детальный Diff-анализатор vs Стандартное сравнение (Построчное / Внешние утилиты)
|
Критерий / Возможность |
Стандартное построчное сравнение |
Детальный Diff-анализатор (UUID-трекинг) |
|---|---|---|
| Устойчивость к сдвигам строк | Низкая (1 лишняя строка ломает весь отчет) | Высокая (маппинг по ключевой колонке) |
| Детализация отличий | Только на уровне строк | Diff по ячейкам с текстовым логом |
| Объединенные ячейки | Вызывают ошибки обхода или смещение | Корректно через ПостроительЗапроса |
| Визуальный результат | Нет (или непонятные текстовые файлы) | Цветовая подсветка прямо в ТабДоке |
| Работа с дублями ключей | Сводит строки в одну или путает | Индексация и проверка полных совпадений |
| Чистота данных на выходе | Мусорные служебные символы/колонки | Гарантированное удаление технической УИД-колонки |
Технические характеристики и Граф Сущностей
- Платформа: 1С:Предприятие 8.3 (Управляемые формы).
- Совместимость: Любые конфигурации (ERP, КА, ЗУП, УТ, БП и др.), работа с внешними .epf.
- Формат входящих данных: Табличный документ 1С, Таблица значений, Буфер обмена (Excel / CSV).
- Вариант поставки: Внешняя обработка, не требует изменения типовой конфигурации.
- Стек / Технологии:
ПостроительЗапроса,UUID,Соответствие,Область(), Diff-алгоритмы.
🔗 Ключевые семантические связи
- Выгрузка: ТабличныйДокумент → ПостроительЗапроса → ТаблицаЗначений
- Маппинг: КлючеваяКолонка → Соответствие → ПоискДублей
- Трекинг: УникальныйИдентификатор (UUID) → ДобавитьКолонкуУИД → Область() → ЦветФона
- Безопасность данных: УдалениеКолонкиУИД → ЧистыйТабДок
Экосистема инструментов
- Канбан-менеджер– визуализируйте задачи, выявленные при сравнении таблиц.
- Менеджер цветовых схем – настройте подсветку расхождений под свои задачи.
- Менеджер редактирования данных PRO– исправьте найденные расхождения на месте.
- Meta1C AI Bridge – выгрузите результаты сравнения в ИИ для анализа.
- Менеджер создания на основании – создайте корректирующие документы по итогам сравнения.
- Убийца зависимостей – замените ошибочные ссылки, обнаруженные при сравнении.
- Менеджер очистки битых ссылок – убедитесь, что таблицы не содержат битых ссылок.
- Центр администрирования 1С – сделайте бэкап перед массовыми правками по результатам сравнения.
- Чат-бот для 1С – получайте уведомления о найденных расхождениях.
- Граф зависимостей – посмотрите, как связаны объекты, попавшие в сравнение.
- Менеджер переноса данных XML&JSON – перенесите выверенные данные между конфигурациями.
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.26.110
- 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.11.466
Вступайте в нашу телеграмм-группу Инфостарт