Как исправить ошибку «Не установлено значение одного из следующих свойств: НомерКассовойСмены» при обмене данными?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

При настройке синхронизации данных между конфигурациями 1С (например, между «Розницей» и «Бухгалтерией предприятия» или «Управлением торговлей») пользователи часто сталкиваются с критической ошибкой при выгрузке документов ВыемкаДенежныхСредствИзКассыККМ или ВнесениеДенежныхСредствВКассуККМ. Ошибка фиксируется в журнале регистрации и прерывает процесс обмена. Система сообщает о нарушении структуры XDTO-пакета: «Не установлено значение одного из следующих свойств: НомерКассовойСмены».

Рассмотрим природу этой проблемы, проанализируем причины ее возникновения и разберем пошаговые алгоритмы решения, основываясь на практическом опыте специалистов и особенностях формата EnterpriseData.

Суть технического конфликта в формате EnterpriseData

Для начала выясним причину возникновения сообщения. Ошибка Ошибка проверки данных XDTO: Структура объекта '/КлючевыеСвойства' не соответствует типу возникает на этапе валидации данных перед их отправкой или при приеме. В современных версиях формата EnterpriseData (1.5 и выше) поле НомерКассовойСмены в блоке ключевых свойств объекта КассаККМ является обязательным для идентификации.

Проблема заключается в том, что в самих документах выемки или внесения в конфигурации-источнике (например, в «Рознице 2.3») реквизит НомерКассовойСмены может отсутствовать как физическое поле в табличной части или шапке. Алгоритм выгрузки (менеджер обмена) пытается вычислить этот номер программно, обращаясь к связанному документу КассоваяСмена. Если связь разорвана или данные в сменах некорректны, формируется пустой узел XDTO, что и вызывает ошибку проверки.

Решение 1: Корректировка временных интервалов кассовых смен

Проанализируем ситуацию, когда документы «Выемка» или «Внесение» создаются в моменты, которые программа не может однозначно сопоставить с открытой сменой. Часто это происходит из-за того, что пользователи не закрывают смены вовремя или время начала смены в системе установлено позже, чем время проведения первого финансового документа.

Рассмотрим алгоритм исправления данных:

  1. Откроем список документов КассовыеСмены и найдем те, которые соответствуют дате проблемного обмена.
  2. Проверим время в реквизитах Дата и НачалоКассовойСмены. Если документ выемки был создан в 20:00, а смена формально открыта в 21:00, менеджер обмена не сможет найти номер смены для этого документа.
  3. Воспользуемся стандартной обработкой «Групповое изменение реквизитов».
  4. Для выбранных документов КассоваяСмена установим время начала смены на более раннее (например, на 00:00:01 нужного дня).
  5. После изменения времени перепроведем документы выемки и внесения, чтобы обновить их связи в регистрах.

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

Решение 2: Проблема с драйверами ККТ (Атол и др.)

Выясним причину, связанную с обновлением торгового оборудования. Часто ошибка проявляется после перехода с одной версии драйвера на другую (например, с 8-й версии драйвера Атол на 10-ю). В этот переходный период настройки РМК (рабочего места кассира) могут измениться, и старые документы, созданные под старым драйвером, начинают конфликтовать с новыми правилами выгрузки.

Если ошибка возникла именно после манипуляций с оборудованием, попробуем следующий метод:

  1. В настройках подключаемого оборудования временно верните настройки драйвера, которые использовались до возникновения проблемы.
  2. Выполните синхронизацию данных. В большинстве случаев документы «проскочат» в базу-приемник, так как инициализация объектов пройдет по старой логике.
  3. После успешного обмена верните актуальные настройки драйвера.

Решение 3: Доработка правил обмена (для программистов)

Если административные меры не помогают, необходимо вмешаться в логику формирования XML-пакета. В менеджере обмена (или в расширении для него) нужно найти ПКО (правила конвертации объектов) для документа выемки или внесения. Наша задача — принудительно заполнить свойство НомерКассовойСмены, если оно оказалось пустым.

Посмотрим на пример кода, который можно внедрить в обработчик ПриОтправкеДанных или непосредственно в алгоритм формирования ключевых свойств в менеджере обмена:


// Пример логики заполнения номера смены, если он не определен
Если Не ЗначениеЗаполнено(СтруктураОбъектаXDTO.КлючевыеСвойства.КассаККМ.НомерКассовойСмены) Тогда
    // Если номер не найден, подставляем "0" или "1" для прохождения валидации
    СтруктураОбъектаXDTO.КлючевыеСвойства.КассаККМ.НомерКассовойСмены = "0";
КонецЕсли;

Важно помнить, что НомерКассовойСмены — это реквизит именно формата обмена, а не метаданных документа. Если принимающая сторона (например, «Бухгалтерия предприятия») не использует этот номер для жесткой привязки к учетным данным, подстановка «0» является безопасным и быстрым решением.

Решение 4: Администрирование регистрации изменений

Иногда ошибка вызвана одним конкретным «битым» документом, который зацикливает обмен. Проанализируем ситуацию через монитор синхронизации данных:

  1. Перейдем в раздел Администрирование — Синхронизация данных.
  2. Откроем Состав отправляемых данных для нужного узла.
  3. Найдем в дереве объектов Выемка денежных средств из кассы ККМ.
  4. С помощью поиска найдем документ от даты, указанной в тексте ошибки (в нашем случае это 02.10.2018).
  5. Нажмем правую кнопку мыши и выберем пункт «Снять с регистрации».

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

Дополнительные рекомендации

Разберем еще несколько нюансов, которые могут помочь:

Подводя итог, можно сказать, что ошибка «Не установлено значение одного из следующих свойств: НомерКассовойСмены» — это типичный конфликт между жесткими требованиями XDTO-схемы и неполнотой данных в информационной базе. Использование вышеописанных методов позволяет устранить проблему без радикального изменения типовой конфигурации.

← На главную