Почему ссылки 1С открываются в новых сеансах или приводят к ошибкам авторизации после обновления платформы 8.3.24?

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

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

Понимание основной причины: изменение формата навигационных ссылок и параметр ?Z

Ключевая причина возникновения этих проблем кроется в изменениях, внесенных в платформу 1С:Предприятие, начиная с версии 8.3.24. Теперь внешние навигационные ссылки формируются с учетом разделителей, установленных в текущем сеансе пользователя. Для этого в формат ссылки был добавлен новый параметр — ?Z.

Параметр ?Z используется в навигационных ссылках 1С для указания значений общих реквизитов, также известных как разделители. Эти разделители применяются в информационных базах, где настроено разделение данных (например, в модели сервиса или при работе с несколькими организациями в одной базе), и позволяют ссылке направлять пользователя в определенную область данных внутри информационной базы. Цель этого изменения — обеспечить прямой вход в необходимую область данных и открытие нужной формы, минуя промежуточные шаги.

Однако, это нововведение привело к тому, что старые ссылки, не содержащие параметра ?Z, или ссылки, сформированные с ним некорректно, перестали восприниматься платформой должным образом. Например, если раньше ссылка выглядела как e1c://server/erp/erp_copy#e1cib/data/Документ.Реализация?ref=..., то теперь платформа при копировании ссылки через Ctrl+F11 может выдавать формат типа e1c://server/erp/erp_copy?Z=%2B%2C%2B#e1cib/data/Документ.Реализация?ref=.... Если мы не учитываем этот новый параметр при программном формировании ссылок, возникают вышеописанные проблемы.

Симптомы проблемы, с которыми мы сталкиваемся

Давайте систематизируем основные проявления некорректной работы ссылок:

  1. Открытие ссылок в новых сеансах 1С: Вместо того чтобы открыть документ в уже запущенной программе 1С, система запускает новый сеанс. Это неудобно, так как пользователь вынужден работать с несколькими окнами или каждый раз закрывать лишние.
  2. Ошибки авторизации при первом запуске: Если сеанс 1С не был запущен заранее, попытка перейти по ссылке может вызвать окно авторизации, в котором, несмотря на ввод корректных учетных данных, выдается сообщение "Идентификация пользователя не выполнена". Это особенно критично, когда используется аутентификация ОС, так как пароль, по сути, не запрашивается, но вход все равно не происходит.
  3. Дублирование параметра ?Z в ссылке: При попытке открыть ссылку, в которую программно уже был добавлен параметр ?Z (например, ?Z=+,+ или ?Z=%2B%2C%2B), платформа может добавлять этот параметр повторно в конец ссылки, например, ...Документ.Реализация?ref=...р?Z=+,+. Это свидетельствует о том, что даже с присутствующим параметром ?Z ссылка воспринимается некорректно, что, в свою очередь, приводит к ошибке открытия или запуску нового сеанса.

Корпоративная поддержка 1С подтвердила, что это является "проявлением ошибки" платформы, ссылаясь на номер ошибки 70092375, хотя подробного описания данной ошибки на момент написания статьи нет. Важно отметить, что проблема сохраняется даже в более новых версиях платформы, например, 8.3.26.1498.

Комплексный подход к решению и обходные пути

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

1. Корректировка программно формируемых навигационных ссылок

Если вы формируете ссылки на документы программно (например, для вставки в письма или уведомления), необходимо скорректировать их формат, добавив параметр ?Z. Это попытка привести ссылку в соответствие с ожиданиями платформы 8.3.24+.

Шаги по корректировке:

  1. Определение базовой ссылки на информационную базу: Прежде чем формировать ссылку на конкретный документ, нам нужна корректная базовая ссылка на саму базу данных. Эта ссылка должна включать параметр ?Z.
  2. Добавление параметра ?Z=%2B%2C%2B: Рекомендуется добавить в конец базовой навигационной ссылки параметр ?Z=%2B%2C%2B. Например, если ваша базовая ссылка без разделителей была e1c://server/erp/erp_copy, то она должна стать e1c://server/erp/erp_copy?Z=%2B%2C%2B. Обратите внимание, что %2B%2C%2B — это URL-кодировка для +,+.
  3. Формирование полной ссылки: После этого мы можем собрать полную навигационную ссылку, объединив базовую ссылку с параметром ?Z и идентификатор конкретного объекта.

Пример кода для программного формирования ссылки:


// Предположим, у нас есть адрес информационной базы и идентификатор объекта
ИмяСервера = "server"; // Имя вашего сервера
ИмяБазы = "erp/erp_copy"; // Имя вашей информационной базы
// Идентификатор конкретного объекта, например, документа "Реализация товаров и услуг"
// Получить его можно, например, методом Ссылка.ПолучитьНавигационнуюСсылку() или через СтрЗаменить("e1cib/data/", Метаданные.ИмяОбъекта)
ИдентификаторОбъекта = "e1cib/data/Документ.Реализация?ref=85be2506536eb8374a2d4a7e3fb6335р"; 

// Параметр для общих реквизитов (URL-кодированный вариант "+,+")
// Этот параметр стал обязательным для платформы 8.3.24+
ПараметрZ = "?Z=%2B%2C%2B"; 

// Формируем полную навигационную ссылку
ПолнаяСсылка = "e1c://" + ИмяСервера + "/" + ИмяБазы + ПараметрZ + "#" + ИдентификаторОбъекта;

// Пример формирования ссылки из константы (если базовая ссылка хранится там)
// Предположим, в константе "БазоваяНавигационнаяСсылка" хранится "e1c://server/erp/erp_copy"
// ЗначениеКонстанты = Константы.БазоваяНавигационнаяСсылка.Получить();
// Если НЕ СтрСодержит(ЗначениеКонстанты, "?Z=") Тогда
//    ЗначениеКонстанты = ЗначениеКонстанты + ПараметрZ;
// КонецЕсли;
// ПолнаяСсылка = ЗначениеКонстанты + "#" + ИдентификаторОбъекта;

// Теперь ПолнаяСсылка содержит корректный формат, который платформа 8.3.24+ ожидает
// Пример: "e1c://server/erp/erp_copy?Z=%2B%2C%2B#e1cib/data/Документ.Реализация?ref=85be2506536eb8374a2d4a7e3fb6335р"

// Далее эту ссылку можно вставить в письмо или использовать иным образом

Важные замечания по параметру ?Z:

2. Исправление пути к 1cestart.exe в реестре Windows

Одной из частых причин некорректного поведения ссылок, в частности проблем с открытием в новом сеансе и ошибками авторизации, является неверная запись в реестре Windows, которая указывает на 32-битную версию стартера 1С вместо 64-битной (если вы используете 64-битную платформу). Мы должны убедиться, что путь указан корректно.

Почему это важно: Современные операционные системы и версии 1С все чаще работают в 64-битном режиме. Если в реестре, который отвечает за обработку ссылок типа e1c://, указан путь к 32-битному приложению (обычно C:\Program Files (x86)\...), это может вызывать конфликты, некорректную передачу параметров или ошибки совместимости, особенно при взаимодействии с 64-битной платформой и ее новыми механизмами.

Шаги по исправлению реестра:

  1. Нажмите Win + R, введите regedit и нажмите Enter, чтобы открыть Редактор реестра.
  2. Перейдите по следующему пути: HKEY_CLASSES_ROOT\e1c\shell\open\command.
  3. Найдите параметр (По умолчанию) или (Default).
  4. Дважды щелкните по нему и измените значение. Если там указан путь типа "C:\Program Files (x86)\1cv8\common\1cestart.exe" /url "%1", то измените его на "C:\Program Files\1cv8\common\1cestart.exe" /url "%1".
  5. Закройте Редактор реестра. Изменения должны вступить в силу немедленно или после перезагрузки компьютера.

Влияние этого исправления: Пользователи подтверждают, что этот шаг часто помогает решить проблему с ошибкой "Идентификация пользователя не выполнена" при открытии ссылок. Однако, стоит отметить, что даже с корректным 64-битным путем в реестре некоторые пользователи все равно сталкиваются с запросом авторизации (особенно при использовании аутентификации ОС), которая не проходит, если сеанс 1С не был запущен заранее. Это говорит о том, что проблема глубже, чем просто некорректный путь в реестре.

3. Влияние режима совместимости конфигурации

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

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

4. Временный обходной путь: Запуск 1С перед переходом по ссылке

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

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

Заключение: Комплексный подход и ожидание исправлений

Проблема с навигационными ссылками на платформе 1С:Предприятие 8.3.24 и выше является комплексной и, судя по официальным ответам поддержки, признана ошибкой платформы. Мы выяснили, что причиной является изменение формата ссылок с добавлением параметра ?Z, который необходим для работы с разделителями данных.

Для минимизации проявлений проблемы мы рекомендуем следующий комплексный подход:

  1. Программистам: При программном формировании навигационных ссылок обязательно добавляйте параметр ?Z=%2B%2C%2B к базовой части ссылки.
  2. Системным администраторам и пользователям: Проверьте и при необходимости исправьте путь к 1cestart.exe в реестре Windows, убедившись, что он указывает на 64-битную версию программы (если вы ее используете).
  3. Для диагностики: Учитывайте влияние режима совместимости конфигурации. Переход в режим "не использовать" совместимость активирует новое поведение платформы с ?Z.
  4. В качестве временной меры: Инструктируйте пользователей запускать 1С перед тем, как переходить по навигационным ссылкам.

Несмотря на предложенные обходные пути, проблема все еще может проявляться, особенно в части ошибок авторизации при "холодном старте" 1С. Поскольку проблема официально признана платформенной ошибкой (70092375), мы можем ожидать ее полноценного исправления в будущих релизах платформы. Следите за обновлениями и описаниями изменений в новых версиях 1С:Предприятия. При администрировании нескольких информационных баз для безопасного тестирования новых релизов платформы перед обновлением рабочих систем целесообразно настроить автоматическое резервное копирование и регулярное обновление баз 1С.

← На главную