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

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

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

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

Выясняем техническую причину сбоя

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

В рамках этой модернизации в табличные части контактной информации справочников Контрагенты и Партнеры был добавлен служебный реквизит ДействуетС, а также изменилась логика работы с предопределенным справочником ВидыКонтактнойИнформации.

Проанализируем по шагам, что происходит в коде системы в момент работы мастера создания нового партнера:

  1. Пользователь запускает интерактивный «Помощник регистрации нового партнера/контрагента».
  2. В процессе заполнения шагов помощник выполняет инициализацию контактных данных и обращается к справочнику ВидыКонтактнойИнформации.
  3. Программа пытается программно актуализировать настройки некоторых видов адресов прямо из кода мастера (например, принудительно установить признак Хранить историю изменений).
  4. Программа выполняет попытку записи изменений в элемент справочника ВидыКонтактнойИнформации.
  5. В этот момент платформа инициирует транзакцию записи. Но у обычного пользователя (например, с профилем «Менеджер по продажам») в типовых ролях настроены права только на Чтение и Просмотр справочника видов КИ, но отсутствуют права на его Изменение и Запись.
  6. Платформа генерирует внутреннее исключение «Нарушение прав доступа» и аварийно откатывает всю транзакцию создания контрагента назад.
  7. Поскольку внутри программного кода помощника обработка исключений реализована не до конца корректно, возникшая ошибка прав доступа перехватывается «тихо» — транзакция прерывается, но пользователю на форму не выводится никакого предупреждающего сообщения. Визуально кнопка нажимается, но результат работы равен нулю.

Шаг 1. Диагностика проблемы через Журнал регистрации

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

  1. Запустим информационную базу в режиме «1С:Предприятие» под учетной записью с административными правами.
  2. Перейдем в раздел НСИ и администрирование, далее выберем пункт Обслуживание и откроем Журнал регистрации.
  3. Настроим фильтр (кнопка «Установить отбор»): выберем пользователя, у которого воспроизводится проблема, и зададим интервал времени, в течение которого выполнялась попытка записи контрагента.
  4. Проанализируем записи событий. Мы должны увидеть строку со следующими параметрами:
    • Событие: Данные. Ошибка доступа.
    • Имя метаданных: Справочник.ВидыКонтактнойИнформации.
    • Описание: Нарушение прав доступа при попытке записи или изменения элемента (например, «Юридический адрес контрагента»).

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

Решение 1. Обновление конфигурации (Рекомендуемый способ)

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

Решение 2. Расширение прав доступа без изменения типовой конфигурации

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

Рассмотрим алгоритм создания расширения для исправления прав доступа:

  1. Откроем базу данных в режиме Конфигуратор.
  2. В главном меню выберем пункт Конфигурация -> Расширения конфигурации.
  3. В открывшемся окне нажмем кнопку Добавить. Зададим имя расширения (например, ИсправлениеПравКонтрагентов), назначение оставим по умолчанию — Адаптация. Нажмем ОК.
  4. В дереве основной конфигурации найдем объект Справочники -> ВидыКонтактнойИнформации. Нажмем на него правой кнопкой мыши и выберем пункт Добавить в расширение.
  5. Также добавим в наше расширение ту роль (или роли), под которой работают проблемные пользователи (например, роль ДобавлениеИзменениеПартнеровИКонтрагентов или аналогичную ей).
  6. Перейдем в дерево объектов созданного расширения, найдем нашу добавленную роль, откроем ее права и для справочника ВидыКонтактнойИнформации установим флаги напротив пунктов Изменение и Редактирование.
  7. Сохраним расширение и обновим конфигурацию базы данных (клавиша F7).

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

Решение 3. Обходной путь через отключение «Помощника ввода»

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

Выполним следующие действия в режиме «1С:Предприятие» под учетной записью администратора:

  1. Перейдем в меню НСИ и администрирование -> Настройка пользователей и прав.
  2. Откроем справочник Пользователи и выберем из списка того сотрудника, у которого не создаются контрагенты.
  3. В карточке выбранного пользователя нажмем кнопку Настройки на панели навигации формы.
  4. Перейдем на вкладку Другие настройки.
  5. Найдем в списке опцию «Использовать помощник ввода контрагентов» и снимем с нее флаг.
  6. Нажмем кнопку Записать и закрыть.

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

Смежные проблемы ведения контактной информации в УТ 11.4

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

← На главную