Не записывается документ 1С в онлайн-режиме
Описание проблемы
При работе в онлайн-режиме иногда возникает ситуация, что документ Mobile SMARTS невозможно сохранить и (или) провести в информационной базе 1C.
При этом на ТСД выводится сообщение с предложением загрузить документ в интерактивном режиме (через обработку обмена).
Возможны два варианта данной проблемы:
- Документ записывается, но не проводится в интерактивном режиме (логические ошибки).
- Документ записывается и проводится в интерактивном режиме (технологические причины).
Подробнее рассмотрим решение проблемы для второго случая, т.к. для первого при попытке проведения документа в ручном режиме 1С обычно явно указывает причину невозможности действия (это определяется настройками учета в конкретной информационной базе 1С).
Общие сведения
Для взаимодействия с базой 1С Mobile SMARTS использует технологию внешнего соединения через COM-коннектор (V8.COMConnector).
Из-за ограничений внешнего соединения могут возникать ситуации, когда какие-либо действия, возможные в интерактивном режиме, становятся невозможны при работе через внешнее соединение.
Все взаимодействие с базой 1С происходит через обращение к свойствам, методам объектов информационной базы, без какого-либо прямого доступа к базе данных.
Для некоторых дейст вий используется вызов функций общих модулей конкретной конфигурации 1С, но все такие объекты доступны во внешнем соединении.
Однако, возможны непрямые вызовы. Например, в 1С используется технология «подписки на события» — выполнение связанных процедур и функций 1С при наступлении некоторого события (например, записи документа). При этом возможно использование процедур и функций из общих модулей, которые недоступны во внешнем соединении, либо некоторые функции ведут себя по-разному при работе в режиме приложения и режиме внешнего соединения.
Таким образом, возникает исключительная ситуация: нормальный алгоритм работы нарушается, и документ не записывается/ не проводится.
В поддерживаемых типовых и прочих конфигурациях 1С бизнес-процессы Mobile SMARTS проверяются на такие ситуации, и, как правило, все действия, производимые при записи/ проведении документа, доступны во внешнем соединении. Бывают исключения, но обычно они устраняются в следующих релизах.
Однако, если в ИБ 1С имеются изменения, используются расширения, т о измененные или добавленные объекты могут быть недоступны во внешнем соединении. И это приводит к ситуации, когда документ в интерактивном режиме (через обработку обмена) успешно записывается и (или) проводится, а при работе в онлайн-режиме происходит ошибка, и документ в базу 1С не попадает (при этом он остается на сервере Mobile SMARTS).
При этом, так как возникает цепочка исключений, к пользователю на ТСД поступает только информация о том, что документ не записан/не проведен в базу 1С, без уточнения подробностей.
Некоторые рекомендации по поиску и устранению проблемы
Из описания видно, что универсального решения проблемы со стороны Mobile SMARTS быть не может, т.к. она вызвана особенностями конфигурации 1С: Mobile SMARTS вызывает метод документа «Записать», а в ответ получает исключительную ситуацию.
Иногда проблему можно решить, отказавшись (в настройках бизнес-процесса) от автоматического проведения документа. При простой записи объекта происходит меньше изменений в базе 1С, и, возможно, не будет обращения к проблемным модулям.
При этом нужно будет дополнительно проводить созданные или измененные документы (вручную, либо регламентным заданием и т. д.).
Но, как правило, для нормальной работы необходимо вносить изменения в конфигурацию 1С (основную, либо расширение).
Внимание! Изменение объектов основной конфигурации требует некоторых минимальных знаний и навыков!
Общая схема решения проблемы
- найти объекты конфигурации 1С, которые недоступны во внешнем соединении, и сделать их доступными.
- найти процедуры/ функции конфигурации 1С, которые по-разному работают в режиме приложения и внешнего соединения, и изменить их — напрямую, либо через расширение.
После применения изменений в базе 1C необходимо перезапустить службу сервера Mobile SMARTS (COM-коннектор через панель управления Mobile SMARTS)
Для общих модулей достаточно поставить флаг «внешнее соединение», при этом нужно следить, чтобы не изменились состояния других флагов, иначе можно нарушить логику работы всей конфигурации
Если общий модуль находится в основной конфигурации, для него необходимо включить возможность изменения и установить режим «Редактируется с сохранением поддержки». В некоторых случаях требуется снять конфигурацию с поддержки (при этом нужно учитывать последствия).
Общие модули показаны для примера, для них изменять режим доступа не обязательно.