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

Для сравнения двух файлов с записью разногласий в 1С:Предприятии можно использовать встроенный механизм сравнения файлов с последующим сохранением результатов. Ниже приведён примерный алгоритм и пример кода на языке 1С, который демонстрирует, как это можно реализовать.
—
### Алгоритм сравнения двух файлов с записью разногласий
1. Указать пути к двум сравниваемым файлам.
2. Создать объект СравнениеФайлов
.
3. Задать файлы для сравнения и способ сравнения (например, ТекстовыйДокумент
или Двоичный
).
4. Выполнить сравнение и получить результат.
5. Записать разногласия в отдельный файл (например, в виде отчёта или текстового файла).
—
### Пример кода на 1С
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
1C Функция СравнитьФайлыСЗаписьюРазногласий(ПутьКФайлу1, ПутьКФайлу2, ПутьКФайлаРазногласий) Экспорт // Создаём объект сравнения файлов Сравнение = Новый СравнениеФайлов; Сравнение.ПервыйФайл = ПутьКФайлу1; Сравнение.ВторойФайл = ПутьКФайлу2; Сравнение.СпособСравнения = СпособСравненияФайлов.ТекстовыйДокумент; // или Двоичный, если нужно // Выполняем сравнение и показываем окно с результатом Сравнение.ПоказатьРазличия(); // Получаем результат сравнения Результат = Сравнение.РезультатСравнения; Если Результат = РезультатСравненияФайлов.ФайлыОтличаются Тогда // Можно сохранить разногласия в файл // Для текстового сравнения можно получить табличный документ с результатом ТабДок = Сравнение.ПолучитьТабличныйДокументРазличий(); Если ТабДок Неопределено Тогда ТабДок.Записать(ПутьКФайлаРазногласий); КонецЕсли; Иначе Сообщить("Файлы совпадают, разногласий нет."); КонецЕсли; КонецФункции |
—
### Пояснения
– СравнениеФайлов
— встроенный объект 1С для сравнения файлов.
– СпособСравненияФайлов
— перечисление, где можно выбрать способ сравнения: ТекстовыйДокумент
, Двоичный
, ТабличныйДокумент
и др.
– Метод ПоказатьРазличия()
открывает окно с визуальным сравнением.
– Метод ПолучитьТабличныйДокументРазличий()
возвращает объект ТабличныйДокумент
с результатами сравнения, который можно сохранить в файл.
– Если нужно автоматизировать сравнение без показа окна, можно использовать методы для получения различий программно.
—
### Дополнительно
Если требуется сравнивать табличные данные (например, таблицы значений), можно использовать подход с построителем отчёта и сравнением табличных документов, как в примере ниже:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
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/
—
Если нужна помощь с конкретным сценарием или форматом записи разногласий — уточните, я помогу составить более точное решение.