При работе с десятками тысяч договоров в системе 1С возникает критически важная задача: как убедиться, что контрагент, получив наш шаблон договора в формате DOCX или на бумаге, заполнил только свои реквизиты и не изменил при этом ни единой запятой в юридических условиях? Ручная проверка юристом («глазами») при таких объемах невозможна, а стандартная электронная подпись гарантирует лишь неизменность файла с момента его подписания контрагентом, но не говорит о том, что файл соответствует нашему исходному шаблону до внесения правок.
В этой статье мы разберем программные и организационные методы, которые позволяют автоматизировать проверку документов на предмет несанкционированных изменений.
Проанализируем формат .docx. Как известно, современные документы Microsoft Word представляют собой ZIP-архив, внутри которого находятся XML-файлы. Основной текст договора хранится в файле word/document.xml. Рассмотрим алгоритм программного сравнения:
<w:t>, которые содержат текст.Разберем пример логики на языке 1С (псевдокод), использующей объект ЧтениеXML:
// Пример упрощенного обхода структуры документа
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(ПутьКРаспакованномуDocumentXML);
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента И Чтение.Имя = "w:t" Тогда
ТекстУзла = Чтение.ПрочитатьСодержимое();
// Сравниваем ТекстУзла с эталонным массивом текстов из нашего шаблона
ПроверитьСоответствиеЭталону(ТекстУзла);
КонецЕсли;
КонецЦикла;
Этот метод позволяет отсечь «шум» в виде метаданных и проверять только значимый текст. Если контрагент изменил хотя бы одну букву в статичном блоке, порядок или содержимое узлов w:t не совпадет с эталоном.
Выясним причину, почему прямое сравнение файлов часто дает ложноположительные результаты. Это связано с избыточной информацией формата. Рассмотрим более простой, но надежный способ — извлечение «голого» текста.
Мы можем программно сохранить документ в формате .txt или использовать метод Generic / Text Only принтера. В 1С это реализуется через COM-объект Word:
MSWord.Application.Важный нюанс: при сравнении текстов следует использовать алгоритмы поиска различий (diff), чтобы система могла точно указать юристу: «В пункте 4.2 изменено слово 'дней' на 'месяцев'».
Рассмотрим «умный» подход, предложенный участниками обсуждения. Если мы заранее знаем, какие поля контрагент должен был заполнить (например, через механизмы Content Controls или просто именованные закладки), мы можем поступить от противного:
Если контрагент не трогал структуру и стили, файлы (после очистки от метаданных) должны быть идентичны. Любое вмешательство в «закрытые» области приведет к расхождению структур.
Для минимизации рисков на этапе подготовки шаблона в MS Word рекомендуется использовать вкладку «Разработчик» и механизм Content Controls. Мы можем выделить зоны для ввода текста (реквизиты) и установить защиту на весь остальной документ, кроме этих форм.
Хотя технически подкованный пользователь может обойти защиту, в сочетании с XML-валидацией (проверкой Custom XML Parts внутри документа) это дает мощный инструмент автоматизации. В 1С мы можем проверять атрибут lock у конкретных узлов XML-схемы документа.
Ситуация с бумажными документами сложнее, так как возникает риск подмены отдельных листов. Проанализируем решение задачи для физических копий:
Важно: Для реализации этого метода в 1С потребуется использование внешних компонент для работы с изображениями и текстом, так как встроенные средства платформы не предназначены для глубокого OCR-анализа.
Если техническая реализация кажется слишком дорогой, разберем процессуальный метод. В финальные положения договора (которые печатаются на последнем листе рядом с подписями) добавляется пункт:
«Настоящий договор заключен на основании типовой формы №123-А. Стороны подтверждают, что текст договора полностью соответствует эталону, размещенному на сайте компании. В случае выявления расхождений приоритет имеет текст эталонного шаблона».
Это делает любые скрытые правки контрагента юридически ничтожными, так как он сам подписался под тем, что текст не менялся.
Для автоматизации проверки в 1С при больших объемах наиболее эффективным будет сочетание Метода 1 (XML-анализ) для электронных документов и Метода 5 (QR-коды) для бумажных. Это позволит системе автоматически помечать «зеленым» документы, прошедшие проверку, и выводить на экран юриста только те файлы, где обнаружены расхождения в структуре или тексте.