Перейти к основному содержимому

Не записывается документ 1С в онлайн-режиме

Описание проблемы

В процессе работы в режиме онлайн может возникнуть ситуация, при которой документ Mobile SMARTS не удаётся сохранить и/или провести в информационной базе 1С.

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

Существует два возможных сценария возникновения данной ситуации:

  1. Документ сохраняется, но не проводится в ручном режиме (причина — логика конфигурации).
  2. Документ сохраняется и проводится вручную без ошибок (причина — технологическая особенность).

Далее рассмотрим второй случай, поскольку в первом 1С, как правило, сообщает о причине невозможности проведения, и её можно определить на основании текущих настроек учёта.

Общие сведения

Mobile SMARTS взаимодействует с 1С через механизм внешнего соединения с использованием COM-коннектора (V8.COMConnector).

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

Все обращения к базе 1С происходят посредством вызовов методов и свойств объектов метаданных, без прямого доступа к СУБД.

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

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

Результат — непредвиденное поведение: документ не записывается или не проводится.

В большинстве поддерживаемых типовых конфигураций бизнес-процессы Mobile SMARTS заранее адаптированы под работу через внешнее соединение. Исключения возможны, но обычно оперативно исправляются в новых версиях.

Если же в 1С используются доработки или подключены расширения, возможно, что часть объектов становится недоступной извне, что и вызывает ошибку при записи документа в онлайн-режиме. При этом сам документ сохраняется на сервере Mobile SMARTS.

Поскольку ошибка сопровождается цепочкой исключений, на ТСД отображается лишь общее сообщение о неудаче, без конкретных подробностей.

Некоторые рекомендации по устранению проблемы

Как видно из описания, единое решение проблемы на стороне Mobile SMARTS отсутствует: причина кроется в логике конкретной конфигурации 1С. Система просто вызывает метод «Записать» у документа, а в ответ получает исключение.

Иногда ситуацию можно исправить, отключив автоматическое проведение документа в настройках бизнес-процесса. При простой записи нагрузка на конфигурацию ниже, и, возможно, ошибка не произойдёт.

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

Чаще всего проблему можно решить только внесением изменений в конфигурацию 1С — как в основную, так и в расширения.

Важно! Внесение изменений в объекты основной конфигурации требует минимальных навыков разработки.

Общий порядок устранения ошибки

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

После внесения изменений необходимо перезапустить службу сервера Mobile SMARTS с помощью панели управления — COM-коннектор применяется именно там.

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

Если модуль относится к основной конфигурации, следует включить возможность редактирования и выбрать режим «Редактируется с сохранением поддержки». Иногда потребуется снять конфигурацию с поддержки — это действие должно быть обдуманным.

онлайн-обмен

На изображении показаны примеры модулей, их доступность менять не обязательно — они даны для наглядности.

Поиск причин сбоя

Начать следует с анализа журнала регистрации по событиям, связанным с «КлеверенсТСД». В стандартных конфигурациях нужный пункт можно найти через меню «Сервис» или «Все функции».

Обычно сообщение об ошибке содержит имя модуля или процедуры, вызвавших исключение. Например, сообщение «Попытка передачи с клиента на сервер мутабельного значения» указывает на недоступность объекта во внешнем соединении.

Если конфигурация модифицирована или содержит расширения, проверьте новые модули: наличие флага «Сервер» при отсутствии «Внешнего соединения» часто свидетельствует о потенциальной причине сбоя.

В случае доступа к режиму отладки — можно точно локализовать место ошибки.

Откройте в конфигураторе обработку, указанную в настройках соединения в панели управления Mobile SMARTS:

онлайн-обмен

Подключитесь к COM-процессу Mobile SMARTS:

онлайн-обмен

При завершении документа на ТСД вызывается функция модуля объекта обработки:

	 ДокументЗавершен(…)

Непосредственно запись готового документа в базу 1С происходит в функции

	 ГлЯдро_ЗаписатьИПровестиДокумент1С().

Завершенный на ТСД документ в случае невозможности записи в 1С остается на сервере Mobile SMARTS, поэтому для повторной записи не нужно заново заполнять данные на ТСД, достаточно открыть и снова завершить документ Mobile SMARTS.

Завершенный документ по умолчанию не виден на ТСД, но его видимость можно включить через панель конфигурации MS, либо в разделе «Документы» снять флаг «Завершен» для нужного документа.

Методика отладки стандартная.

Если нужно, поставьте точку останова в начало функции

	 ДокументЗавершен(..,)

Но можно сразу в функции

	 ГлЯдро_ЗаписатьИПровестиДокумент1С()

, на строках вида:

	 ДокументДляЗаписи.Записать(РежимЗаписиДокумента.Проведение

и на строках в блоках исключение, после строки

	 ОписаниеОшибки = ОписаниеОшибки();

Это позволит отследить ошибку до её возникновения.

Выполните строку записи с помощью F10, при исключении отладчик перейдёт в блок «Исключение».

Изучите переменную ОписаниеОшибки.

Если этого недостаточно, шаг за шагом (F11) проходите по всем вызовам до выявления источника проблемы.

Важно не просто изменить один модуль, а оценить все взаимосвязи и адаптировать все связанные объекты.

Частные случаи

«Управление торговлей 11.4», «ERP», «Комплексная автоматизация»

Доработка конфигурации не требуется, но возможны сторонние расширения, вызывающие ошибки.

В версии 13.51 в модуле «РазборКодаМаркировкиИССлужебныйВызовСервера» необходимо вручную установить флаг «внешнее соединение».

Синхронизация с Битрикс24

В конфигурации появляются объекты с префиксами «СинхронизацияСБитрикс24_», «Б24_», у которых обычно не установлен флаг внешнего соединения. Добавьте его ко всем объектам с флагом «Сервер».

CRM-модули

Аналогично — модули с префиксом «CRM_» часто вызывают ошибки, если флаг «внешнее соединение» отсутствует.

Иногда корректный на вид код не работает, если сбрасывается ПривилегированныйРежим.

Пример из «Комплексной автоматизации»: модуль регистра сведений «РеестрДокументов»:

Процедура ПередЗаписью(Отказ, Замещение)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Если Не ПривилегированныйРежим() Тогда
Отказ = Истина;
КонецЕсли;

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

УНФ 1.6

В типовой конфигурации 1С:УНФ версии 1.6 установите флаг «внешнее соединение», если он не установлен, для следующих модулей:

  • УправлениеНебольшойФирмойСобытия
  • УправлениеНебольшойФирмойСобытияПереопределяемый
  • РаботаСНоменклатуройКлиентСервер
  • РаботаСФормойДокумента
  • ОбменМобильноеПриложениеОбщее
онлайн-обмен