Почему после обновления 1С:Управление торговлей не проводятся счета-фактуры и как это исправить?

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

При обновлении конфигурации «1С:Управление торговлей» (в частности, при переходе между редакциями, например с 11.1 на 11.2) разработчики и администраторы нередко сталкиваются с ситуацией: обновление метаданных и обработка обновления данных завершились успешно, однако при попытке провести документы (чаще всего СчетФактураВыданный или СчетФактураПолученный) система выдает ошибку «Не удалось провести документ» без детальной расшифровки в пользовательском интерфейсе.

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

Диагностика и выяснение причины сбоя

Разберем ситуацию по шагам. Когда документ типовой конфигурации отказывается проводиться без явного сообщения об ошибке, стандартная проверка обработчиков ПередЗаписью и ОбработкаПроведения в модуле объекта часто не дает ответа — код внутри них может отрабатывать штатно до определенного момента либо исключение перехватывается общим обработчиком.

Для обнаружения точного места сбоя воспользуемся встроенными средствами отладки платформы «1С:Предприятие»:

  1. Убедимся, что на сервере «1С:Предприятия» включен режим отладки (параметр -debug).
  2. В конфигураторе перейдем в меню Отладка → Остановка по ошибке.
  3. Активируем флажок Останавливаться по ошибке и снимем признак Краткое описание ошибки, чтобы платформа перехватывала даже те исключения, которые обрабатываются конструкциями Попытка ... Исключение.
  4. Повторим проведение проблемного счета-фактуры в режиме предприятия.

При такой отладке выполнение прерывается в общем модуле ОбменДаннымиСобытия. Текст ошибки указывает на неудачное выполнение запроса, в котором фигурирует поле ДатаИсходногоДокумента (или НомерИсходногоДокумента). При проверке структуры метаданных документа СчетФактураВыданный оказывается, что такого реквизита в шапке больше нет.

Выясним причину несоответствия: почему типовой код подсистемы БСП обращается к несуществующему реквизиту?

  1. Архитектура подсистемы обмена данными: В конфигурациях на базе БСП («Управление торговлей», КА, ERP) типовая авторегистрация изменений на планах обмена отключена на уровне метаданных. Вместо нее работают подписки на события (например, при записи документов), которые вызывают методы общего модуля ОбменДаннымиСобытия.
  2. Изменение структуры метаданных: В редакции УТ 11.1 реквизит ДатаИсходногоДокумента находился в реквизитах шапки счета-фактуры. В редакции 11.2 структура хранения этих сведений была переработана разработчиками.
  3. Хранение правил регистрации: Запрос, обращающийся к реквизиту ДатаИсходногоДокумента, находится не в коде конфигурации, а в скомпилированном теле Правил регистрации объектов (ПРО). Эти правила хранятся непосредственно в базе данных — в регистре сведений ПравилаДляОбменаДанными.
  4. Почему правила не обновились автоматически: Если в настройках синхронизации (например, при обмене с «1С:Бухгалтерией предприятия» 2.0 или 3.0) ранее были загружены правила из внешнего файла, регламентные процедуры обновления конфигурации намеренно не перезаписывают их типовым макетом, чтобы не стереть пользовательские доработки. В результате обновленная конфигурация пытается зарегистрировать изменения по старым правилам, выполняя неактуальный запрос к таблице документов.

Способ 1. Обновление правил регистрации через интерфейс синхронизации данных

Рассмотрим основной способ решения, если используется типовой обмен с базой «1С:Бухгалтерия предприятия».

  1. Откроем информационную базу в режиме «1С:Предприятие» под учетной записью с правами администратора.
  2. Перейдем в раздел НСИ и администрирование → Синхронизация данных → Настройки синхронизации данных.
  3. Выберем проблемный узел обмена (например, обмен с БП 2.0 или БП 3.0).
  4. Нажмем кнопку настройки правил (или перейдем в меню параметров синхронизации данных для выбранного узла).
  5. В разделе правил регистрации объектов выберем вариант использования типовых правил из конфигурации и нажмем Загрузить типовые правила.
  6. Дождемся завершения перезаписи правил в регистре и перезапустим сеанс пользователя.

Способ 2. Корректировка правил в «1С:Конвертация данных» (для нетиповых обменов)

Если для интеграции используются доработанные нетиповые правила, перезапись из типового макета сотрет внесенные алгоритмы. В таком случае выполним ручную корректировку правил регистрации:

  1. С помощью внешней обработки MD83Exp.epf выгрузим актуальную структуру метаданных обновленной конфигурации «1С:Управление торговлей 11.2».
  2. Откроем конфигурацию «1С:Конвертация данных» (редакции 2.1) и загрузим полученное описание структуры метаданных.
  3. В правилах регистрации объектов (ПРО) для документа СчетФактураВыданный найдем запрос, в котором выбирается поле Ссылка.ДатаИсходногоДокумента.
  4. Скорректируем текст запроса и алгоритмы выборки в соответствии с новой структурой метаданных УТ 11.2 либо удалим обращение к устаревшему реквизиту.
  5. Выгрузим обновленный файл правил регистрации в формате XML.
  6. В режиме «1С:Предприятие» в настройках синхронизации загрузим обновленный файл правил регистрации для нужного узла.

Способ 3. Очистка правил через регистр сведений «ПравилаДляОбменаДанными»

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

  1. Откроем Функции для технического специалиста (или Все функции).
  2. Найдем регистр сведений ПравилаДляОбменаДанными.
  3. В списке записей регистра найдем строки, относящиеся к проблемному плану обмена, где поле ВидПравил имеет значение Правила регистрации.
  4. Удалим некорректную запись с устаревшими правилами.
  5. Запустим обработку обновления служебных данных подсистем (или выполним инициализацию обмена заново), чтобы БСП заполнила регистр актуальными данными из макетов конфигурации.

Особенности серверного кэширования и проверка результата

Важно помнить, что очистка локального кэша пользователя (удаление каталогов в AppData или запуск 1С с ключом /ClearCache) в данном случае не помогает, так как правила хранятся в таблицах базы данных.

Однако модули БСП активно кэшируют правила регистрации на стороне сервера в модулях с повторным использованием значений. Поэтому после перезаписи регистра ПравилаДляОбменаДанными рекомендуется перезапустить рабочий процесс кластера серверов «1С:Предприятия» либо полностью перезапустить службу сервера 1С. После этого откроем проблемный документ и убедимся, что он проводится штатно без системных ошибок.

← На главную