После обновления платформы 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=.... Если мы не учитываем этот новый параметр при программном формировании ссылок, возникают вышеописанные проблемы.
Давайте систематизируем основные проявления некорректной работы ссылок:
?Z в ссылке: При попытке открыть ссылку, в которую программно уже был добавлен параметр ?Z (например, ?Z=+,+ или ?Z=%2B%2C%2B), платформа может добавлять этот параметр повторно в конец ссылки, например, ...Документ.Реализация?ref=...р?Z=+,+. Это свидетельствует о том, что даже с присутствующим параметром ?Z ссылка воспринимается некорректно, что, в свою очередь, приводит к ошибке открытия или запуску нового сеанса.Корпоративная поддержка 1С подтвердила, что это является "проявлением ошибки" платформы, ссылаясь на номер ошибки 70092375, хотя подробного описания данной ошибки на момент написания статьи нет. Важно отметить, что проблема сохраняется даже в более новых версиях платформы, например, 8.3.26.1498.
Для устранения или минимизации проблем с навигационными ссылками мы можем рассмотреть несколько подходов. Некоторые из них являются временными обходными путями, другие — попытками привести ссылки в соответствие с новыми требованиями платформы.
Если вы формируете ссылки на документы программно (например, для вставки в письма или уведомления), необходимо скорректировать их формат, добавив параметр ?Z. Это попытка привести ссылку в соответствие с ожиданиями платформы 8.3.24+.
Шаги по корректировке:
?Z.?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-кодировка для +,+.?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:
?Z, такими как ?Z=+,+, ?Z=-,+, ?Z=-,-, ?Z=+,-. Поведение действительно меняется, но все эти варианты могут быть "кривыми" и не давать стабильно ожидаемого результата. Значение ?Z=%2B%2C%2B (т.е. +,+) является наиболее часто упоминаемым и используемым в контексте решения данной проблемы.?Z, если 1С не запущена, иногда все равно могут возникать проблемы с авторизацией, как будто система игнорирует переданные данные или некорректно обрабатывает их при холодном старте.1cestart.exe в реестре WindowsОдной из частых причин некорректного поведения ссылок, в частности проблем с открытием в новом сеансе и ошибками авторизации, является неверная запись в реестре Windows, которая указывает на 32-битную версию стартера 1С вместо 64-битной (если вы используете 64-битную платформу). Мы должны убедиться, что путь указан корректно.
Почему это важно: Современные операционные системы и версии 1С все чаще работают в 64-битном режиме. Если в реестре, который отвечает за обработку ссылок типа e1c://, указан путь к 32-битному приложению (обычно C:\Program Files (x86)\...), это может вызывать конфликты, некорректную передачу параметров или ошибки совместимости, особенно при взаимодействии с 64-битной платформой и ее новыми механизмами.
Шаги по исправлению реестра:
Win + R, введите regedit и нажмите Enter, чтобы открыть Редактор реестра.HKEY_CLASSES_ROOT\e1c\shell\open\command.(Default)."C:\Program Files (x86)\1cv8\common\1cestart.exe" /url "%1", то измените его на "C:\Program Files\1cv8\common\1cestart.exe" /url "%1".Влияние этого исправления: Пользователи подтверждают, что этот шаг часто помогает решить проблему с ошибкой "Идентификация пользователя не выполнена" при открытии ссылок. Однако, стоит отметить, что даже с корректным 64-битным путем в реестре некоторые пользователи все равно сталкиваются с запросом авторизации (особенно при использовании аутентификации ОС), которая не проходит, если сеанс 1С не был запущен заранее. Это говорит о том, что проблема глубже, чем просто некорректный путь в реестре.
Настройки режима совместимости вашей конфигурации также играют важную роль в проявлении данной проблемы. Мы заметили, что поведение навигационных ссылок напрямую зависит от того, какой режим совместимости установлен:
?Z в ссылках, и проявляются описанные проблемы, если ссылки не соответствуют новому формату.?Z в версиях до 8.3.24 отсутствовала.Это наблюдение крайне важно для диагностики. Если у вас есть возможность временно установить режим совместимости на более раннюю версию, это может служить подтверждением того, что проблема связана именно с изменениями в платформе 8.3.24+.
В качестве простого, но не всегда удобного временного решения, мы можем рекомендовать пользователям сначала запустить сеанс 1С, а уже затем переходить по навигационным ссылкам. Если 1С уже работает, система чаще всего способна открыть ссылку в существующем сеансе без проблем с авторизацией, даже если формат ссылки не идеален.
Конечно, это не решает корневую проблему и не является системным подходом, но может помочь пользователям временно обойти сложности, пока мы ищем более стабильное и универсальное решение.
Проблема с навигационными ссылками на платформе 1С:Предприятие 8.3.24 и выше является комплексной и, судя по официальным ответам поддержки, признана ошибкой платформы. Мы выяснили, что причиной является изменение формата ссылок с добавлением параметра ?Z, который необходим для работы с разделителями данных.
Для минимизации проявлений проблемы мы рекомендуем следующий комплексный подход:
?Z=%2B%2C%2B к базовой части ссылки.1cestart.exe в реестре Windows, убедившись, что он указывает на 64-битную версию программы (если вы ее используете).?Z.Несмотря на предложенные обходные пути, проблема все еще может проявляться, особенно в части ошибок авторизации при "холодном старте" 1С. Поскольку проблема официально признана платформенной ошибкой (70092375), мы можем ожидать ее полноценного исправления в будущих релизах платформы. Следите за обновлениями и описаниями изменений в новых версиях 1С:Предприятия. При администрировании нескольких информационных баз для безопасного тестирования новых релизов платформы перед обновлением рабочих систем целесообразно настроить автоматическое резервное копирование и регулярное обновление баз 1С.