СравнениеФайлов

Типы · FileCompare

Предназначен для сравнения и определения различий между двумя файлами с учетом их структуры.

Полное описание, параметры и ограничения

СравнениеФайлов (FileCompare)

СравнениеФайлов (FileCompare)

Доступен, начиная с версии 8.0.

Свойства:
ВторойФайл (SecondFile)
ИгнорироватьПустоеПространство (IgnoreWhiteSpace)
ПервыйФайл (FirstFile)
СпособСравнения (CompareMethod)
УчитыватьРазделителиСтрок (EOLSensitive)
УчитыватьРегистр (CaseSensitive)

Методы:
ПоказатьРазличия (ShowDifferences)
ПоказатьРазличияМодально (ShowDifferencesModally)
Сравнить (Compare)

Конструкторы:
По умолчанию

Описание:

Предназначен для сравнения и определения различий между двумя файлами с учетом их структуры.

Доступность:

Толстый клиент.

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Отличить регистр букв от изменения учебных данных

Книга и книга сравниваются сначала с учётом регистра, затем без него. Тексты и файлы между двумя проверками не переписываются.

Где и как запускать

Полный модуль своей ОБЫЧНОЙ формы внешней обработки. Только настольный толстый клиент Windows.

Подготовка

  1. В своей отдельной конфигурации УчебнаяКонфигурацияСинтаксиса создайте новую внешнюю обработку с ОБЫЧНОЙ формой. Эти уроки предназначены толстому клиенту Windows, не тонкому, веб-клиенту или серверу.

  2. Добавьте кнопку ПроверитьСравнение, её событию Нажатие назначьте одноимённую процедуру. Весь приведённый код — полный модуль обычной формы, без директив управляемого клиент-серверного модуля.

  3. Каждый запуск создаёт два новых собственных временных txt-файла на компьютере толстого клиента. Их точные пути выводятся до записи. В коде нет выбора, перезаписи или сравнения рабочих файлов.

  4. Учебные данные — вымышленная Книга и суммы. Не вставляйте секреты, пароли, коммерческие данные или пути рабочих конфигураций.

  5. Файлы намеренно остаются после опыта, чтобы окно различий могло их читать. После закрытия окна вручную удалите только два точных пути своего запуска. При ошибке также проверьте только уже напечатанные пути.

  6. Модальный опыт при запрете модальности отказывает до создания файлов. Для нового кода предпочтителен первый немодальный урок.

Процедура ПроверитьСравнение(Кнопка)
    ПервыйТекст = "Книга";
    ВторойТекст = "книга";
    ПервыйРазделитель = Символы.ВК + Символы.ПС;
    ВторойРазделитель = Символы.ВК + Символы.ПС;
    ПервыйПуть = ПолучитьИмяВременногоФайла("txt");
    ВторойПуть = ПолучитьИмяВременногоФайла("txt");
    ПервыйФайл = Новый Файл(ПервыйПуть);
    ВторойФайл = Новый Файл(ВторойПуть);
    Если ПервыйФайл.Существует() ИЛИ ВторойФайл.Существует() ИЛИ ПервыйПуть = ВторойПуть Тогда
        ВызватьИсключение "Нужны два разных новых собственных временных пути";
    КонецЕсли;
    Сообщить("Свой первый файл: " + ПервыйПуть);
    Сообщить("Свой второй файл: " + ВторойПуть);
    ПервыйДокумент = Новый ТекстовыйДокумент;
    ПервыйДокумент.УстановитьТекст(ПервыйТекст);
    ВторойДокумент = Новый ТекстовыйДокумент;
    ВторойДокумент.УстановитьТекст(ВторойТекст);
    ПервыйДокумент.Записать(ПервыйПуть, КодировкаТекста.UTF8, ПервыйРазделитель);
    ВторойДокумент.Записать(ВторойПуть, КодировкаТекста.UTF8, ВторойРазделитель);
    Сравнение = Новый СравнениеФайлов;
    Сравнение.ПервыйФайл = ПервыйПуть;
    Сравнение.ВторойФайл = ВторойПуть;
    Сравнение.СпособСравнения = СпособСравненияФайлов.ТекстовыйДокумент;
    Сравнение.ИгнорироватьПустоеПространство = Ложь;
    Сравнение.УчитыватьРегистр = Истина;
    Сравнение.УчитыватьРазделителиСтрок = Ложь;
    Строго = Сравнение.Сравнить();
    Сообщить(Строго = Ложь);
    Сравнение.УчитыватьРегистр = Ложь;
    БезРегистра = Сравнение.Сравнить();
    Сообщить(БезРегистра = Истина);
    Сообщить(Не Сравнение.ИгнорироватьПустоеПространство);
    Сообщить(Сравнение.СпособСравнения = СпособСравненияФайлов.ТекстовыйДокумент);
КонецПроцедуры

Разбор по шагам

  1. Записать собственные слова Книга и книга одинаковой кодировкой и разделителем.

  2. При УчитыватьРегистр=Истина результат Ложь: первая буква отличается регистром.

  3. Изменить только правило сравнения на Ложь и сравнить те же файлы повторно: результат Истина.

  4. ИгнорироватьПустоеПространство остаётся Ложь. Это отдельное правило, его не следует путать с регистром.

  5. Ни один текст не заменяется нижним регистром и не перезаписывается после создания.

Как проверить результат

  1. Четыре сообщения Истина: строгое сравнение Ложь, без учёта регистра Истина, правило пробелов не менялось, способ текстовый.

  2. Файлы остаются с исходными Книга и книга, не превращаются в одинаковые байты.

Ожидаемый результат

Демонстрация изменения правил сравнения без изменения самих текстов.

На что обратить внимание

  1. Текстовое равенство по выбранным правилам не означает байтового равенства.

  2. УчитыватьРегистр и ИгнорироватьПустоеПространство игнорируются в нетекстовых режимах.

  3. Не используйте такое сравнение для криптографического подтверждения целостности.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Найти изменение количества и суммы в своих файлах и показать различия

Сравнить возвращает Истина, если файлы равны, и Ложь при различиях. Немодальное окно открывается только для действительно различных учебных данных.

Где и как запускать

Полный модуль своей ОБЫЧНОЙ формы внешней обработки. Только настольный толстый клиент Windows.

Подготовка

  1. В своей отдельной конфигурации УчебнаяКонфигурацияСинтаксиса создайте новую внешнюю обработку с ОБЫЧНОЙ формой. Эти уроки предназначены толстому клиенту Windows, не тонкому, веб-клиенту или серверу.

  2. Добавьте кнопку ПроверитьСравнение, её событию Нажатие назначьте одноимённую процедуру. Весь приведённый код — полный модуль обычной формы, без директив управляемого клиент-серверного модуля.

  3. Каждый запуск создаёт два новых собственных временных txt-файла на компьютере толстого клиента. Их точные пути выводятся до записи. В коде нет выбора, перезаписи или сравнения рабочих файлов.

  4. Учебные данные — вымышленная Книга и суммы. Не вставляйте секреты, пароли, коммерческие данные или пути рабочих конфигураций.

  5. Файлы намеренно остаются после опыта, чтобы окно различий могло их читать. После закрытия окна вручную удалите только два точных пути своего запуска. При ошибке также проверьте только уже напечатанные пути.

  6. Модальный опыт при запрете модальности отказывает до создания файлов. Для нового кода предпочтителен первый немодальный урок.

Процедура ПроверитьСравнение(Кнопка)
    ПервыйТекст = "Книга;3;250;750";
    ВторойТекст = "Книга;4;250;1000";
    ПервыйРазделитель = Символы.ВК + Символы.ПС;
    ВторойРазделитель = Символы.ВК + Символы.ПС;
    ПервыйПуть = ПолучитьИмяВременногоФайла("txt");
    ВторойПуть = ПолучитьИмяВременногоФайла("txt");
    ПервыйФайл = Новый Файл(ПервыйПуть);
    ВторойФайл = Новый Файл(ВторойПуть);
    Если ПервыйФайл.Существует() ИЛИ ВторойФайл.Существует() ИЛИ ПервыйПуть = ВторойПуть Тогда
        ВызватьИсключение "Нужны два разных новых собственных временных пути";
    КонецЕсли;
    Сообщить("Свой первый файл: " + ПервыйПуть);
    Сообщить("Свой второй файл: " + ВторойПуть);
    ПервыйДокумент = Новый ТекстовыйДокумент;
    ПервыйДокумент.УстановитьТекст(ПервыйТекст);
    ВторойДокумент = Новый ТекстовыйДокумент;
    ВторойДокумент.УстановитьТекст(ВторойТекст);
    ПервыйДокумент.Записать(ПервыйПуть, КодировкаТекста.UTF8, ПервыйРазделитель);
    ВторойДокумент.Записать(ВторойПуть, КодировкаТекста.UTF8, ВторойРазделитель);
    Сравнение = Новый СравнениеФайлов;
    Сравнение.ПервыйФайл = ПервыйПуть;
    Сравнение.ВторойФайл = ВторойПуть;
    Сравнение.СпособСравнения = СпособСравненияФайлов.ТекстовыйДокумент;
    Сравнение.ИгнорироватьПустоеПространство = Ложь;
    Сравнение.УчитыватьРегистр = Истина;
    Сравнение.УчитыватьРазделителиСтрок = Ложь;
    Равны = Сравнение.Сравнить();
    Сообщить(Равны = Ложь);
    Сообщить(Сравнение.ПервыйФайл = ПервыйПуть И Сравнение.ВторойФайл = ВторойПуть);
    Если НЕ Равны Тогда
        Сравнение.ПоказатьРазличия();
    КонецЕсли;
КонецПроцедуры

Разбор по шагам

  1. Получить два собственных временных имени, проверить отсутствие обоих файлов до первой записи, вывести пути.

  2. Записать UTF8 с одинаковыми разделителями строк: 3/750 в первом и 4/1000 во втором.

  3. Установить текстовый способ, явные правила пробелов, регистра и разделителей.

  4. Сравнить даёт Ложь, потому что данные действительно различаются. Ветка НЕ Равны открывает немодальное окно различий.

  5. После просмотра закрыть только своё окно и вручную убрать два напечатанных файла.

Как проверить результат

  1. Две булевы проверки Истина: результат сравнения Ложь, пути принадлежат созданным файлам.

  2. В окне видна разница Книга;3;250;750 и Книга;4;250;1000. Код ничего не исправляет и не объединяет автоматически.

Ожидаемый результат

Полный реальный опыт создания и сравнения учебных файлов с правильно трактуемым булевым результатом.

На что обратить внимание

  1. Истина из Сравнить означает равенство, не наличие отличий.

  2. ПоказатьРазличия открывает окно, не возвращает изменённый документ.

  3. Не удаляйте файлы немедленно после открытия немодального окна: они оставлены на время просмотра.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.