Ошибка "Неизвестный идентификатор формы" или "Параметр сеанса отсутствует или удален"

30.08.24

Разработка - Механизмы платформы 1С

Платформенные ошибки, которые выскакивают, но не всегда. Пришлось разбираться, с чем связано и в итоге ответ был найден. Это ошибка платформы и чтобы ее не было, нужно избегать код описанный ниже или ждать исправления платформы от 1С. Описанная проблема встречается только на СУБД`шных базах, на файловых таких проблем не возникает.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Ошибка "Неизвестный идентификатор формы" или "Параметр сеанса отсутствует или удален":
.dt 1,37Mb
0
0 Скачать (1 SM) Купить за 1 850 руб.

Столкнулся с проблемой, что иногда выскакивает ошибка "Неизвестный идентификатор формы", более редко "Параметр сеанса отсутствует или удален" с последующим закрытием 1С. Эти ошибки платформенные и я долго не мог понять в чем дело, пришлось потратить не один час, чтобы понять причину. Чтобы вам не тратить время как мне, опишу итог моих исследований в данном вопросе.

Если в модуле формы справочника или документа в событие "ПриСозданииНаСервере" прописано, что идет помещение во временное хранилище, то иногда возникают ошибки описанные выше. Ниже привожу пример кода:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ПоместитьВоВременноеХранилище(ПолучитьОбщийМакет("УИ_MonacoEditorWindows"), ЭтаФорма.УникальныйИдентификатор);
КонецПроцедуры

При этом УникальныйИдентификатор может быть сгенерированным, а не самой формы. Во временное хранилище в данном случае помещается совсем небольшой бинарник, который весит 1,28 МБ. Если же помещать килобайтный бинарник, то такой проблемы не будет. Чтобы избежать ошибку можно пойти обходным путем и разместить бинарный файл сразу в Temp-папку, но если этот файл нужен на стороне клиента, то тут уже возникают сложности, т.к. файл нужно переместить с серверной части на клиентскую, а с временным хранилищем возникают проблемы.

Ошибка возникает только на СУБД-базе, на файловой же все хорошо. Ошибка присутствует на платформе 8.3.24.1548 , на более ранних тоже была замечена. Тестировалась с СУБД MSSQL 2012.

В прикрепление выкладываю мини-базу на которой была воспроизведена проблема. Скачивать смысла нет, т.к. на скринах и так все видно.

Дополнение:

На релизе платформе 8.3.25.1374 - проблема сохранилась. Самое интересное, что данное поведение наблюдается не на всех серверах, причина пока неясна.

Обход проблемы:

&НаСервере
Процедура ПриОткрытииНаСервере()
	ПоместитьВоВременноеХранилище(ПолучитьОбщийМакет("УИ_MonacoEditorWindows"), ЭтаФорма.УникальныйИдентификатор);
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ПриОткрытииНаСервере();
КонецПроцедуры

 

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

Ошибка Неизвестный идентификатор формы Параметр сеанса отсутствует или удален

См. также

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

23.06.2024    5465    bayselonarrend    18    

149

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    4994    dsdred    16    

79

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Бесплатно (free)

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

24.01.2024    12904    YA_418728146    26    

71

Перенос данных 1C Механизмы платформы 1С Системный администратор Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    9983    dsdred    44    

127

Механизмы платформы 1С Программист Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    22266    SeiOkami    46    

132

Механизмы платформы 1С Системный администратор Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    16793    human_new    27    

80

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    12965    YA_418728146    7    

165
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. KillerMann 182 30.08.24 18:10 Сейчас в теме
Проверил на последним релизе платформе 8.3.25.1374 - проблема сохранилась.
Нашел способ как обойти проблему, потом добавлю в публикацию:
&НаСервере
Процедура ПриОткрытииНаСервере()
	ПоместитьВоВременноеХранилище(ПолучитьОбщийМакет("УИ_MonacoEditorWindows"), ЭтаФорма.УникальныйИдентификатор);
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ПриОткрытииНаСервере();
КонецПроцедуры
Показать
2. user1880116 31.08.24 15:01 Сейчас в теме
фирма 1С соизволит
Ну ты же уже отправил им сообщение об ошибке платформы, правда?

В прикрепление выкладываю
Скачивать смысла нет
Отличный ход!
Всего за одну стартманю или купить за 1850 рублей.
3. KillerMann 182 31.08.24 16:09 Сейчас в теме
(2)
Отличный ход!
Всего за одну стартманю или купить за 1850 рублей.

Непонятен Ваш сарказм! При прикрепление файла можно установить от 1 до 10 стартмани. Я прикрепил выгрузку с минимальным навесом на которой отлавливается ошибка и указал минимальную стоимость, которую можно указать. При этом в публикации написал, что смысла нет скачивать, т.к. из скринов и так все понятно.
Публикация не для заработка, а для того чтобы никто не мучался с проблемой с которой столкнулся я.
И я с Вами на "ты" вроде не переходил!
4. user1880116 01.09.24 08:54 Сейчас в теме
Боженьки, еще одна снежинка...
Зачем ты вообще прикреплял файл и устанавливал его стоимость, если и без него все понятно?

И да, в фирму 1С ты, очевидно, так ничего и не написал. Не барское это дело, это они нам всем обязаны.
5. PerlAmutor 130 01.09.24 15:59 Сейчас в теме
Я на подобную ошибку часто натыкаюсь на платформе 8.3.23.1912. Воспроизводится следующим образом:
- сделать внешний отчет на СКД
- открыть в пользовательском режиме
- изменить отчет в конфигураторе
- открыть новый экземпляр отчета в пользовательском режиме
- вернутся к первому открытому отчету и просто попытаться его закрыть

После этих действий платформа вылетает с этой ошибкой. Возможно на это влияет и конфигурация (общая форма отчета), если что то ERP 2.5.12.270.
TMV; ixijixi; t278; +3 Ответить
6. KillerMann 182 02.09.24 14:56 Сейчас в теме
(5) С внешними отчетами/обработками бывает такая ошибка, но в публикации затронута другая ситуация.
С внешними проблема должна решаться такой реализацией:
Процедура ПриОткрытии(Отказ)
    
    Если КлючУникальности = Неопределено Тогда
        ИмяОбработки = СтрРазделить(ЭтотОбъект.ИмяФормы, ".")[1];
        
        КлючУникальности = ИмяОбработки + XMLСтрока(ТекущаяДата());
        
    КонецЕсли;
    
КонецПроцедуры
Показать
7. PerlAmutor 130 02.09.24 20:11 Сейчас в теме
(6) А чем просто "Новый УникальныйИдентификатор" не подходит, что пришлось городить через ТекущуюДату() ?
8. KillerMann 182 03.09.24 11:43 Сейчас в теме
(7) Должен "Новый УникальныйИдентификатор" тоже подойти, но мной лично не проверялось, поэтому описал способ проверенный другими участниками для внешних отчетов/обработок.
Если проверите у себя, то добавлю в публикацию решение для внешних обработок/отчетов.
9. PerlAmutor 130 03.09.24 18:44 Сейчас в теме
(8) Такое видимо только через расширение можно в общую форму "ФормаОтчета" добавить, т.к. у внешних отчетов в основном нет своих форм, ибо весь богатый функционал туда не привнести.
Оставьте свое сообщение