При обновлении конфигурации «1С:Управление торговлей» (в частности, при переходе между редакциями, например с 11.1 на 11.2) разработчики и администраторы нередко сталкиваются с ситуацией: обновление метаданных и обработка обновления данных завершились успешно, однако при попытке провести документы (чаще всего СчетФактураВыданный или СчетФактураПолученный) система выдает ошибку «Не удалось провести документ» без детальной расшифровки в пользовательском интерфейсе.
В этой статье мы подробно проанализируем причины такого поведения, разберем механизм локализации проблемы с помощью отладчика и рассмотрим практические шаги по ее устранению.
Разберем ситуацию по шагам. Когда документ типовой конфигурации отказывается проводиться без явного сообщения об ошибке, стандартная проверка обработчиков ПередЗаписью и ОбработкаПроведения в модуле объекта часто не дает ответа — код внутри них может отрабатывать штатно до определенного момента либо исключение перехватывается общим обработчиком.
Для обнаружения точного места сбоя воспользуемся встроенными средствами отладки платформы «1С:Предприятие»:
-debug).Попытка ... Исключение.При такой отладке выполнение прерывается в общем модуле ОбменДаннымиСобытия. Текст ошибки указывает на неудачное выполнение запроса, в котором фигурирует поле ДатаИсходногоДокумента (или НомерИсходногоДокумента). При проверке структуры метаданных документа СчетФактураВыданный оказывается, что такого реквизита в шапке больше нет.
Выясним причину несоответствия: почему типовой код подсистемы БСП обращается к несуществующему реквизиту?
ОбменДаннымиСобытия.ДатаИсходногоДокумента находился в реквизитах шапки счета-фактуры. В редакции 11.2 структура хранения этих сведений была переработана разработчиками.ДатаИсходногоДокумента, находится не в коде конфигурации, а в скомпилированном теле Правил регистрации объектов (ПРО). Эти правила хранятся непосредственно в базе данных — в регистре сведений ПравилаДляОбменаДанными.Рассмотрим основной способ решения, если используется типовой обмен с базой «1С:Бухгалтерия предприятия».
Если для интеграции используются доработанные нетиповые правила, перезапись из типового макета сотрет внесенные алгоритмы. В таком случае выполним ручную корректировку правил регистрации:
MD83Exp.epf выгрузим актуальную структуру метаданных обновленной конфигурации «1С:Управление торговлей 11.2».СчетФактураВыданный найдем запрос, в котором выбирается поле Ссылка.ДатаИсходногоДокумента.Если интерфейс синхронизации не открывается из-за внутренних ошибок, разберем способ прямой очистки правил регистрации через служебные структуры данных:
ПравилаДляОбменаДанными.ВидПравил имеет значение Правила регистрации.Важно помнить, что очистка локального кэша пользователя (удаление каталогов в AppData или запуск 1С с ключом /ClearCache) в данном случае не помогает, так как правила хранятся в таблицах базы данных.
Однако модули БСП активно кэшируют правила регистрации на стороне сервера в модулях с повторным использованием значений. Поэтому после перезаписи регистра ПравилаДляОбменаДанными рекомендуется перезапустить рабочий процесс кластера серверов «1С:Предприятия» либо полностью перезапустить службу сервера 1С. После этого откроем проблемный документ и убедимся, что он проводится штатно без системных ошибок.