Как исправить ошибки синхронизации между 1С:Управление торговлей 11.5 и 1С:Розница 2.3?

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

При синхронизации данных между конфигурациями 1С:Управление торговлей (УТ) 11.5 и 1С:Розница 2.3 пользователи часто сталкиваются с различными ошибками, которые препятствуют нормальному обмену информацией. Рассмотрим подробнее основные проблемы, возникающие при синхронизации, и предложим пути их решения, основываясь на опыте сообщества 1С.

Первоначальная проблема, с которой мы столкнулись, выражалась в двух типах ошибок: "Тип не определен" и "Поле объекта не обнаружено". Эти ошибки возникали при попытке обмена между УТ 11.5.11.79 и Розницей 2.3.14.26.

1. Ошибка "Тип не определен (ДокументСсылка.ВнутреннееПотреблениеТоваров)"

Эта ошибка указывает на то, что система не может найти описание указанного типа данных. В нашем случае, это тип ДокументСсылка.ВнутреннееПотреблениеТоваров. Трассировка стека указывает на модуль Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта, где происходит загрузка соответствия типов.

Пример ошибки:


Тип не определен Скрытый текст(ДокументСсылка.ВнутреннееПотреблениеТоваров)
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(15591)}:СоответствиеТипа.Вставить(ИмяУзла, Тип(ПравилаОбмена.Значение));
...

Мы выясним, что проблема может быть связана с тем, что в более новых версиях УТ документ ВнутреннееПотреблениеТоваров был переименован или заменен на ВнутреннееПотребление. Старые правила обмена могут ссылаться на устаревшее наименование, которого нет в конфигурации-источнике или конфигурации-приемнике. Для диагностики структуры правил можно использовать портативный обозреватель правил конвертации свойств, чтобы найти проблемное соответствие.

2. Ошибка "Поле объекта не обнаружено (ОтменаРегистрацииЗемельныхУчастков)"

Эта ошибка возникает, когда программа пытается обратиться к реквизиту или свойству объекта, которого не существует. В данном случае, это поле ОтменаРегистрацииЗемельныхУчастков. Трассировка также указывает на модуль Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта, в процессах загрузки предопределенных данных.

Пример ошибки:


и Поле объекта не обнаружено (ОтменаРегистрацииЗемельныхУчастков)
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(3795)}:Возврат Менеджер[Значение];
...

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

Основное решение: Актуальные правила обмена

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

  1. Обращение в поддержку 1С: Многие пользователи успешно решали проблему, обращаясь напрямую к разработчикам 1С. Поддержка 1С может предоставить актуальные правила обмена, учитывающие все изменения в метаданных между конкретными релизами УТ и Розницы. Мы видим, что в одном из случаев, после обращения в поддержку, были предоставлены новые правила, которые решили проблему.

    Важно: При обращении в поддержку 1С, обязательно укажите полные номера релизов обеих конфигураций (например, УТ 11.5.ХХ.ХХ и Розница 2.3.ХХ.ХХ) и используемую версию платформы 1С.

  2. Загрузка правил: После получения новых правил (обычно это XML-файл), их необходимо загрузить в информационные базы.

    1. В 1С:УТ и 1С:Рознице перейдите в раздел Администрирование -> Настройки синхронизации данных -> Настройка синхронизации данных.
    2. Выберите существующую настройку обмена или создайте новую.
    3. На шаге настройки правил обмена выберите опцию "Загрузить правила конвертации данных" или "Загрузить правила регистрации объектов" из файла и укажите путь к полученному XML-файлу.
    4. Повторите операцию в обеих базах, если правила обмена двухсторонние.
  3. Проверка обмена: После загрузки новых правил запустите обмен данными и проверьте результат. Многие пользователи подтверждали, что после применения таких правил ошибки типа "Тип не определен" и "Поле объекта не обнаружено" исчезали, и синхронизация проходила успешно. Если требуется точечная переотправка документов, поможет регистрация или удаление объектов из плана обмена с формы — для этого есть инструмент массовой регистрации объектов в планах обмена.

    Например, мы отметили, что новые правила исправили ситуацию, когда в направлении Розница 2.3 -> УТ 11.5 при наличии возвратов в документе Отчет о розничных продажах в УТ грузился только документ Отчет о розничных возвратах, а Отчет о розничных продажах не загружался.

Дополнительное решение: Патч кода для БСП

В некоторых случаях, особенно при работе с более новыми версиями конфигураций и БСП (Библиотеки стандартных подсистем), может возникнуть "косяк в коде" самой обработки конвертации. Мы видим пример такого исправления, предложенный сообществом:

  1. Откройте конфигуратор вашей базы.

  2. Найдите обработку КонвертацияОбъектовИнформационныхБаз.

  3. Найдите модуль объекта этой обработки.

  4. Найдите следующий фрагмент кода:

    
    Правила = КоллекцияПравилаКонвертации.Скопировать(Отбор, "ТипПриемника,ТипИсточника");
    Правила.Свернуть("ТипПриемника, ТипИсточника");
    Если Правила.Количество = 0 Тогда
        ЗП = ЗаписьПротоколаОбмена(45);
        ЗП.Объект = Ссылка;
        ЗП.ТипОбъекта = ТипЗнч(Ссылка);
        ЗаписатьВПротоколВыполнения(45, ЗП, Истина);
        Возврат;
    КонецЕсли;
    Для Каждого ПКО Из Правила Цикл
        ЗаписатьВФайлУдалениеОбъекта(Ссылка, ПКО.ТипПриемника, ПКО.ТипИсточника);
    КонецЦикла;
    
  5. Замените его на следующий:

    
    ПравилаДляУдаления = КоллекцияПравилаКонвертации.Скопировать(Отбор, "ТипПриемника,ТипИсточника");
    ПравилаДляУдаления.Свернуть("ТипПриемника, ТипИсточника");
    Если ПравилаДляУдаления.Количество = 0 Тогда
        ЗП = ЗаписьПротоколаОбмена(45);
        ЗП.Объект = Ссылка;
        ЗП.ТипОбъекта = ТипЗнч(Ссылка);
        ЗаписатьВПротоколВыполнения(45, ЗП, Истина);
        Возврат;
    КонецЕсли;
    Для Каждого ПКО Из ПравилаДляУдаления Цикл
        ЗаписатьВФайлУдалениеОбъекта(Ссылка, ПКО.ТипПриемника, ПКО.ТипИсточника);
    КонецЦикла;
    

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

  6. Сохраните изменения в конфигурации и обновите базу данных.

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

Диагностика и устранение других распространенных ошибок синхронизации

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

1. Ошибка "Не найдено соответствие для значения Источника ИмяПКО = СтавкиНДС Значение = 22%"

Эта ошибка указывает на то, что в базе-приемнике (например, в Рознице) отсутствует значение ставки НДС "22%", которое присутствует в базе-источнике (например, в УТ), или правило конвертации значений (ПКЗ) для СтавкиНДС не настроено для обработки такого значения.

Пример ошибки:


Не найдено соответствие для значения Источника
ИмяПКО = СтавкиНДС
Значение = 22%
ТипЗначения = ПеречислениеСсылка.СтавкиНДС
Текст = В правиле конвертации значений (ПКЗ) сопоставьте значение Источника значению Приемника.
Если подходящего значения приемника нет, то укажите пустое значение.
  1. Проверка ставок НДС: Мы рекомендуем проверить, существуют ли ставки НДС со значением "22%" в обеих конфигурациях. Если в одной из баз такой ставки нет, но она используется в документах, это вызовет ошибку.

  2. Корректировка правил обмена: Откройте правила обмена в конвертации данных (КД) и найдите правило для объекта СтавкиНДС. Убедитесь, что для значения "22%" из источника указано соответствующее значение в приемнике. Если в приемнике нет такой ставки, возможно, ее следует создать или настроить конвертацию на другую, существующую ставку, если это приемлемо с точки зрения учета.

  3. Обновление УТ: Как было отмечено в обсуждении, возможно, ваша УТ не поддерживает 22% НДС. Если нет возможности обновить УТ, то можно поправить правило конвертации, либо выполнить групповую замену ставок НДС с 20% на 22%, чтобы данные в источнике соответствовали текущим требованиям.

2. Ошибка "Метод объекта не обнаружен (УникальныйИдентификатор)" при выгрузке Вида номенклатуры

Эта ошибка, которая может возникнуть при выгрузке данных, например, Вида номенклатуры, указывает на то, что программа пытается вызвать метод УникальныйИдентификатор у объекта, который не определен или является пустой ссылкой.

Пример ошибки:


Ошибка при отправке данных: Метод объекта не обнаружен (УникальныйИдентификатор)
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(12507)}:УникальныйИдентификатор = СсылкаНаИсточник.УникальныйИдентификатор;
...

Мы проанализировали, что проблема часто кроется в том, что переменная СсылкаНаИсточник на строке 12507 (или аналогичной) не содержит действительной ссылки на объект, а является либо Неопределено, либо пустой ссылкой.

  1. Диагностика: Мы рекомендуем выполнить отладку в конфигураторе. Установите точку останова на строке УникальныйИдентификатор = СсылкаНаИсточник.УникальныйИдентификатор; и проверьте значение переменной СсылкаНаИсточник. Возможно, функция определитьссылкупообъектуилиссылке(источник,выгружаетсяобъект) (строкой выше) возвращает некорректное значение.

  2. Проверка данных: Убедитесь, что все ссылки на Виды номенклатуры в выгружаемых документах или справочниках являются корректными и не содержат "битых" ссылок (поможет обработка поиска и удаления битых ссылок в 1С) или Объект не найден. Если часть номенклатуры в документах становится Объект не найден, это прямой признак проблемы с целостностью данных. В таких ситуациях может помочь исправление правил обмена EnterpriseData для справочников, решающее проблему "битых ссылок".

  3. Актуальные правила обмена: И вновь, одним из путей решения может быть использование наиболее свежих правил обмена, так как они могут содержать исправления для корректной обработки ссылок и объектов.

3. Ошибка "Предопределенный элемент не существует" для "Набор дополнительных реквизитов и сведений"

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

Пример ошибки:


Ошибка в обработчике события ПоследовательностьПолейПоиска
ИмяПКО = ТипОбъекта = Набор дополнительных реквизитов и сведений
Обработчик = Последовательность полей поиска
ОписаниеОшибки = Ошибка при вызове метода контекста (Выполнить)
...
по причине: Ошибка выполнения запроса
по причине: Ошибка при выполнении операции над данными:
по причине: Предопределенный элемент не существует
  1. Очистка кэша 1С: Мы настоятельно рекомендуем начать с очистки кэша на всех клиентских машинах, участвующих в обмене, а также на сервере 1С (если используется клиент-серверный вариант).

  2. Тестирование и исправление информационной базы: Запустите конфигуратор, выберите Администрирование -> Тестирование и исправление. Включите все флажки, особенно "Реструктуризация таблиц информационной базы", "Проверка логической целостности", "Пересчет итогов" и "Поиск и установка ссылок". Это поможет выявить и, возможно, исправить поврежденные или отсутствующие предопределенные элементы.

  3. Программное восстановление предопределенных данных: В некоторых случаях может потребоваться программное восстановление предопределенных данных, если стандартные средства не помогают. Это более сложная задача, требующая знаний платформы 1С.

  4. Актуальные релизы и правила: Убедитесь, что вы используете самые последние релизы конфигураций и соответствующие им правила обмена. Иногда такие ошибки исправляются в новых версиях конфигураций или правил.

Общие рекомендации для стабильной синхронизации

Мы предлагаем несколько общих рекомендаций, которые помогут минимизировать проблемы при синхронизации УТ 11.5 и Розницы 2.3:

  1. Резервное копирование: Всегда делайте полные резервные копии обеих информационных баз перед любыми операциями по настройке или обновлению синхронизации.

  2. Актуальность версий: Мы настаиваем на том, чтобы обе конфигурации (УТ и Розница) работали на максимально актуальных и совместимых релизах, а также на поддерживаемой версии платформы 1С.

  3. Консистентность данных: Убедитесь, что основные справочники (номенклатура, контрагенты, склады) и их важные реквизиты настроены идентично в обеих базах. Для этого удобно использовать сравнение значений констант, чтобы найти расхождения в настройках двух баз. Особое внимание уделите настройкам Характеристик номенклатуры, Управления ассортиментом и Заявок на расходование денежных средств.

  4. Режим обмена: Экспериментируйте с режимами обмена. Если прямой обмен вызывает проблемы, попробуйте использовать файловый обмен (через локальный каталог, сетевой ресурс или FTP).

  5. Позиция 1С: Мы должны учитывать, что фирма "1С" активно развивает Розницу 3.0, и поддержка Розницы 2.3 постепенно сворачивается. Это может означать, что новые функциональные возможности или исправления для специфических реквизитов (например, "Признак рецептурный препарат (продажа по разрешению)") могут появляться в Рознице 2.3 с задержкой или не быть реализованы вовсе. В таких случаях, возможно, потребуется доработка правил обмена собственными силами.

Синхронизация данных между УТ 11.5 и Розницей 2.3 — это сложный процесс, требующий внимательного подхода и своевременного обновления правил обмена. Мы надеемся, что представленные решения и рекомендации помогут вам наладить стабильный и безошибочный обмен данными.

← На главную