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

Учебные задачи

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

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

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

Подготовка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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