Как сравнить два файла в 1С с записью разногласий?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как сравнить два файла в 1С с записью разногласий?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #33394
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        сравнение двух файлов с записью разногласий

      • #33395
        bot_avaOdin — Одинэсник
        Участник

          Для сравнения двух файлов с записью разногласий в 1С:Предприятии можно использовать встроенный механизм сравнения файлов с последующим сохранением результатов. Ниже приведён примерный алгоритм и пример кода на языке 1С, который демонстрирует, как это можно реализовать.

          ### Алгоритм сравнения двух файлов с записью разногласий

          1. Указать пути к двум сравниваемым файлам.
          2. Создать объект `СравнениеФайлов`.
          3. Задать файлы для сравнения и способ сравнения (например, `ТекстовыйДокумент` или `Двоичный`).
          4. Выполнить сравнение и получить результат.
          5. Записать разногласия в отдельный файл (например, в виде отчёта или текстового файла).

          ### Пример кода на 1С

          1C
          Функция СравнитьФайлыСЗаписьюРазногласий(ПутьКФайлу1, ПутьКФайлу2, ПутьКФайлаРазногласий) Экспорт
          
              // Создаём объект сравнения файлов
              Сравнение = Новый СравнениеФайлов;
              Сравнение.ПервыйФайл = ПутьКФайлу1;
              Сравнение.ВторойФайл = ПутьКФайлу2;
              Сравнение.СпособСравнения = СпособСравненияФайлов.ТекстовыйДокумент; // или Двоичный, если нужно
          
              // Выполняем сравнение и показываем окно с результатом
              Сравнение.ПоказатьРазличия();
          
              // Получаем результат сравнения
              Результат = Сравнение.РезультатСравнения;
          
              Если Результат = РезультатСравненияФайлов.ФайлыОтличаются Тогда
                  // Можно сохранить разногласия в файл
                  // Для текстового сравнения можно получить табличный документ с результатом
                  ТабДок = Сравнение.ПолучитьТабличныйДокументРазличий();
          
                  Если ТабДок  Неопределено Тогда
                      ТабДок.Записать(ПутьКФайлаРазногласий);
                  КонецЕсли;
              Иначе
                  Сообщить("Файлы совпадают, разногласий нет.");
              КонецЕсли;
          
          КонецФункции
          

          ### Пояснения

          — `СравнениеФайлов` — встроенный объект 1С для сравнения файлов.
          — `СпособСравненияФайлов` — перечисление, где можно выбрать способ сравнения: `ТекстовыйДокумент`, `Двоичный`, `ТабличныйДокумент` и др.
          — Метод `ПоказатьРазличия()` открывает окно с визуальным сравнением.
          — Метод `ПолучитьТабличныйДокументРазличий()` возвращает объект `ТабличныйДокумент` с результатами сравнения, который можно сохранить в файл.
          — Если нужно автоматизировать сравнение без показа окна, можно использовать методы для получения различий программно.

          ### Дополнительно

          Если требуется сравнивать табличные данные (например, таблицы значений), можно использовать подход с построителем отчёта и сравнением табличных документов, как в примере ниже:

          1C
          Функция СравнитьТаблицыЗначений(Таблица1, Таблица2) Экспорт
              Построитель = Новый ПостроительОтчета;
              Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Таблица1);
              Построитель.ЗаполнитьНастройки();
              ТабДок1 = Новый ТабличныйДокумент;
              Построитель.Вывести(ТабДок1);
              ИмяФайла1 = ПолучитьИмяВременногоФайла();
              ТабДок1.Записать(ИмяФайла1);
          
              Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Таблица2);
              Построитель.ЗаполнитьНастройки();
              ТабДок2 = Новый ТабличныйДокумент;
              Построитель.Вывести(ТабДок2);
              ИмяФайла2 = ПолучитьИмяВременногоФайла();
              ТабДок2.Записать(ИмяФайла2);
          
              СравнениеФайлов = Новый СравнениеФайлов;
              СравнениеФайлов.ПервыйФайл = ИмяФайла1;
              СравнениеФайлов.ВторойФайл = ИмяФайла2;
              СравнениеФайлов.СпособСравнения = СпособСравненияФайлов.ТабличныйДокумент;
              СравнениеФайлов.ПоказатьРазличия();
          КонецФункции
          

          Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/418002/
          Также полезна статья с описанием сравнения файлов и модулей: https://infostart.ru/1c/articles/179454/

          Если нужна помощь с конкретным сценарием или форматом записи разногласий — уточните, я помогу составить более точное решение.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С