При синхронизации данных между конфигурациями 1С:Управление торговлей (УТ) 11.5 и 1С:Розница 2.3 пользователи часто сталкиваются с различными ошибками, которые препятствуют нормальному обмену информацией. Рассмотрим подробнее основные проблемы, возникающие при синхронизации, и предложим пути их решения, основываясь на опыте сообщества 1С.
Первоначальная проблема, с которой мы столкнулись, выражалась в двух типах ошибок: "Тип не определен" и "Поле объекта не обнаружено". Эти ошибки возникали при попытке обмена между УТ 11.5.11.79 и Розницей 2.3.14.26.
Эта ошибка указывает на то, что система не может найти описание указанного типа данных. В нашем случае, это тип ДокументСсылка.ВнутреннееПотреблениеТоваров. Трассировка стека указывает на модуль Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта, где происходит загрузка соответствия типов.
Пример ошибки:
Тип не определен Скрытый текст(ДокументСсылка.ВнутреннееПотреблениеТоваров)
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(15591)}:СоответствиеТипа.Вставить(ИмяУзла, Тип(ПравилаОбмена.Значение));
...
Мы выясним, что проблема может быть связана с тем, что в более новых версиях УТ документ ВнутреннееПотреблениеТоваров был переименован или заменен на ВнутреннееПотребление. Старые правила обмена могут ссылаться на устаревшее наименование, которого нет в конфигурации-источнике или конфигурации-приемнике. Для диагностики структуры правил можно использовать портативный обозреватель правил конвертации свойств, чтобы найти проблемное соответствие.
Эта ошибка возникает, когда программа пытается обратиться к реквизиту или свойству объекта, которого не существует. В данном случае, это поле ОтменаРегистрацииЗемельныхУчастков. Трассировка также указывает на модуль Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта, в процессах загрузки предопределенных данных.
Пример ошибки:
и Поле объекта не обнаружено (ОтменаРегистрацииЗемельныхУчастков)
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(3795)}:Возврат Менеджер[Значение];
...
Мы видим, что эта ошибка, подобно первой, часто связана с несоответствием структуры метаданных между базами, вызванным устаревшими правилами обмена или изменениями в конфигурациях.
Наиболее эффективным и часто единственным решением этих и многих других проблем синхронизации является использование актуальных правил обмена, специально разработанных для ваших версий конфигураций УТ и Розница — для этого подойдут исправленные правила обмена EnterpriseData для УТ 11.5 и Розницы 2.3.
Обращение в поддержку 1С: Многие пользователи успешно решали проблему, обращаясь напрямую к разработчикам 1С. Поддержка 1С может предоставить актуальные правила обмена, учитывающие все изменения в метаданных между конкретными релизами УТ и Розницы. Мы видим, что в одном из случаев, после обращения в поддержку, были предоставлены новые правила, которые решили проблему.
Важно: При обращении в поддержку 1С, обязательно укажите полные номера релизов обеих конфигураций (например, УТ 11.5.ХХ.ХХ и Розница 2.3.ХХ.ХХ) и используемую версию платформы 1С.
Загрузка правил: После получения новых правил (обычно это XML-файл), их необходимо загрузить в информационные базы.
Проверка обмена: После загрузки новых правил запустите обмен данными и проверьте результат. Многие пользователи подтверждали, что после применения таких правил ошибки типа "Тип не определен" и "Поле объекта не обнаружено" исчезали, и синхронизация проходила успешно. Если требуется точечная переотправка документов, поможет регистрация или удаление объектов из плана обмена с формы — для этого есть инструмент массовой регистрации объектов в планах обмена.
Например, мы отметили, что новые правила исправили ситуацию, когда в направлении Розница 2.3 -> УТ 11.5 при наличии возвратов в документе Отчет о розничных продажах в УТ грузился только документ Отчет о розничных возвратах, а Отчет о розничных продажах не загружался.
В некоторых случаях, особенно при работе с более новыми версиями конфигураций и БСП (Библиотеки стандартных подсистем), может возникнуть "косяк в коде" самой обработки конвертации. Мы видим пример такого исправления, предложенный сообществом:
Откройте конфигуратор вашей базы.
Найдите обработку КонвертацияОбъектовИнформационныхБаз.
Найдите модуль объекта этой обработки.
Найдите следующий фрагмент кода:
Правила = КоллекцияПравилаКонвертации.Скопировать(Отбор, "ТипПриемника,ТипИсточника");
Правила.Свернуть("ТипПриемника, ТипИсточника");
Если Правила.Количество = 0 Тогда
ЗП = ЗаписьПротоколаОбмена(45);
ЗП.Объект = Ссылка;
ЗП.ТипОбъекта = ТипЗнч(Ссылка);
ЗаписатьВПротоколВыполнения(45, ЗП, Истина);
Возврат;
КонецЕсли;
Для Каждого ПКО Из Правила Цикл
ЗаписатьВФайлУдалениеОбъекта(Ссылка, ПКО.ТипПриемника, ПКО.ТипИсточника);
КонецЦикла;
Замените его на следующий:
ПравилаДляУдаления = КоллекцияПравилаКонвертации.Скопировать(Отбор, "ТипПриемника,ТипИсточника");
ПравилаДляУдаления.Свернуть("ТипПриемника, ТипИсточника");
Если ПравилаДляУдаления.Количество = 0 Тогда
ЗП = ЗаписьПротоколаОбмена(45);
ЗП.Объект = Ссылка;
ЗП.ТипОбъекта = ТипЗнч(Ссылка);
ЗаписатьВПротоколВыполнения(45, ЗП, Истина);
Возврат;
КонецЕсли;
Для Каждого ПКО Из ПравилаДляУдаления Цикл
ЗаписатьВФайлУдалениеОбъекта(Ссылка, ПКО.ТипПриемника, ПКО.ТипИсточника);
КонецЦикла;
Примечание: Суть изменения заключается в переименовании переменной Правила в ПравилаДляУдаления, чтобы избежать конфликтов имен или неправильного использования в контексте модуля.
Сохраните изменения в конфигурации и обновите базу данных.
Мы подчеркиваем, что это изменение является низкоуровневым и должно применяться с осторожностью, после обязательного создания резервной копии базы данных.
Помимо первоначальных ошибок, в процессе эксплуатации могут возникать и другие специфические проблемы.
Эта ошибка указывает на то, что в базе-приемнике (например, в Рознице) отсутствует значение ставки НДС "22%", которое присутствует в базе-источнике (например, в УТ), или правило конвертации значений (ПКЗ) для СтавкиНДС не настроено для обработки такого значения.
Пример ошибки:
Не найдено соответствие для значения Источника
ИмяПКО = СтавкиНДС
Значение = 22%
ТипЗначения = ПеречислениеСсылка.СтавкиНДС
Текст = В правиле конвертации значений (ПКЗ) сопоставьте значение Источника значению Приемника.
Если подходящего значения приемника нет, то укажите пустое значение.
Проверка ставок НДС: Мы рекомендуем проверить, существуют ли ставки НДС со значением "22%" в обеих конфигурациях. Если в одной из баз такой ставки нет, но она используется в документах, это вызовет ошибку.
Корректировка правил обмена: Откройте правила обмена в конвертации данных (КД) и найдите правило для объекта СтавкиНДС. Убедитесь, что для значения "22%" из источника указано соответствующее значение в приемнике. Если в приемнике нет такой ставки, возможно, ее следует создать или настроить конвертацию на другую, существующую ставку, если это приемлемо с точки зрения учета.
Обновление УТ: Как было отмечено в обсуждении, возможно, ваша УТ не поддерживает 22% НДС. Если нет возможности обновить УТ, то можно поправить правило конвертации, либо выполнить групповую замену ставок НДС с 20% на 22%, чтобы данные в источнике соответствовали текущим требованиям.
Эта ошибка, которая может возникнуть при выгрузке данных, например, Вида номенклатуры, указывает на то, что программа пытается вызвать метод УникальныйИдентификатор у объекта, который не определен или является пустой ссылкой.
Пример ошибки:
Ошибка при отправке данных: Метод объекта не обнаружен (УникальныйИдентификатор)
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(12507)}:УникальныйИдентификатор = СсылкаНаИсточник.УникальныйИдентификатор;
...
Мы проанализировали, что проблема часто кроется в том, что переменная СсылкаНаИсточник на строке 12507 (или аналогичной) не содержит действительной ссылки на объект, а является либо Неопределено, либо пустой ссылкой.
Диагностика: Мы рекомендуем выполнить отладку в конфигураторе. Установите точку останова на строке УникальныйИдентификатор = СсылкаНаИсточник.УникальныйИдентификатор; и проверьте значение переменной СсылкаНаИсточник. Возможно, функция определитьссылкупообъектуилиссылке(источник,выгружаетсяобъект) (строкой выше) возвращает некорректное значение.
Проверка данных: Убедитесь, что все ссылки на Виды номенклатуры в выгружаемых документах или справочниках являются корректными и не содержат "битых" ссылок (поможет обработка поиска и удаления битых ссылок в 1С) или Объект не найден. Если часть номенклатуры в документах становится Объект не найден, это прямой признак проблемы с целостностью данных. В таких ситуациях может помочь исправление правил обмена EnterpriseData для справочников, решающее проблему "битых ссылок".
Актуальные правила обмена: И вновь, одним из путей решения может быть использование наиболее свежих правил обмена, так как они могут содержать исправления для корректной обработки ссылок и объектов.
Эта ошибка, возникающая при приемке данных в Рознице, указывает на отсутствие критически важного предопределенного элемента, необходимого для работы конфигурации.
Пример ошибки:
Ошибка в обработчике события ПоследовательностьПолейПоиска
ИмяПКО = ТипОбъекта = Набор дополнительных реквизитов и сведений
Обработчик = Последовательность полей поиска
ОписаниеОшибки = Ошибка при вызове метода контекста (Выполнить)
...
по причине: Ошибка выполнения запроса
по причине: Ошибка при выполнении операции над данными:
по причине: Предопределенный элемент не существует
Очистка кэша 1С: Мы настоятельно рекомендуем начать с очистки кэша на всех клиентских машинах, участвующих в обмене, а также на сервере 1С (если используется клиент-серверный вариант).
Тестирование и исправление информационной базы: Запустите конфигуратор, выберите Администрирование -> Тестирование и исправление. Включите все флажки, особенно "Реструктуризация таблиц информационной базы", "Проверка логической целостности", "Пересчет итогов" и "Поиск и установка ссылок". Это поможет выявить и, возможно, исправить поврежденные или отсутствующие предопределенные элементы.
Программное восстановление предопределенных данных: В некоторых случаях может потребоваться программное восстановление предопределенных данных, если стандартные средства не помогают. Это более сложная задача, требующая знаний платформы 1С.
Актуальные релизы и правила: Убедитесь, что вы используете самые последние релизы конфигураций и соответствующие им правила обмена. Иногда такие ошибки исправляются в новых версиях конфигураций или правил.
Мы предлагаем несколько общих рекомендаций, которые помогут минимизировать проблемы при синхронизации УТ 11.5 и Розницы 2.3:
Резервное копирование: Всегда делайте полные резервные копии обеих информационных баз перед любыми операциями по настройке или обновлению синхронизации.
Актуальность версий: Мы настаиваем на том, чтобы обе конфигурации (УТ и Розница) работали на максимально актуальных и совместимых релизах, а также на поддерживаемой версии платформы 1С.
Консистентность данных: Убедитесь, что основные справочники (номенклатура, контрагенты, склады) и их важные реквизиты настроены идентично в обеих базах. Для этого удобно использовать сравнение значений констант, чтобы найти расхождения в настройках двух баз. Особое внимание уделите настройкам Характеристик номенклатуры, Управления ассортиментом и Заявок на расходование денежных средств.
Режим обмена: Экспериментируйте с режимами обмена. Если прямой обмен вызывает проблемы, попробуйте использовать файловый обмен (через локальный каталог, сетевой ресурс или FTP).
Позиция 1С: Мы должны учитывать, что фирма "1С" активно развивает Розницу 3.0, и поддержка Розницы 2.3 постепенно сворачивается. Это может означать, что новые функциональные возможности или исправления для специфических реквизитов (например, "Признак рецептурный препарат (продажа по разрешению)") могут появляться в Рознице 2.3 с задержкой или не быть реализованы вовсе. В таких случаях, возможно, потребуется доработка правил обмена собственными силами.
Синхронизация данных между УТ 11.5 и Розницей 2.3 — это сложный процесс, требующий внимательного подхода и своевременного обновления правил обмена. Мы надеемся, что представленные решения и рекомендации помогут вам наладить стабильный и безошибочный обмен данными.