Платформа 8.3.22.1709, ошибка Тип не определен - новая особенность работы функции встроенного языка Тип

24.11.22

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

В предыдущих версиях платформы конструкция Тип("") (где в качестве аргумента - пустая строка), возвращала пустое значение типа Тип, в новой версии платформы попытка выполнения данной конструкции приводит к ошибке.

 

Любопытно, что в версии платформы 8.3.17.1386 функция возвращала следующее:

 

 

В версии 8.3.20.1838 уже другое:

 

 

И наконец в версии 8.3.22.1709 конструкция потеряла легитимность и теперь приводит к ошибке. 

Я столкнулся с этой ошибкой случайно - при обновлении платформы перестала работать УТ 11, версия 11.4.13.227, но подобная ситуация может возникнуть и в 11.5 (смотрел в релизе 11.5.8.309). В случае, если включено ограничение доступа на уровне записей, задействуется функция ИмяТипаСсылки(...) общего модуля УправлениеДоступомСлужебный, которая может возвращать пустую строку.

 

 

Далее возвращаемое функцией значение передается в качестве аргумента в функцию Тип(..), что и приводит к ошибке.

В результате мне помогло следующее исправление:

 

 

p.s.

Как выяснилось (см. комментарии) старое поведение функции Тип было признано ошибочным, результатом явилось исправление ошибки платформы. В новых версиях БСП это должно быть учтено.

Платформа 8.3.22.1709 ошибка Тип не определен УТ 11

См. также

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

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

23.06.2024    4080    bayselonarrend    18    

142

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

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

13.03.2024    4089    dsdred    16    

77

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

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

24.01.2024    9664    YA_418728146    25    

70

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

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

11.12.2023    8889    dsdred    44    

123

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

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

06.10.2023    21105    SeiOkami    46    

129

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

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

14.09.2023    15258    human_new    27    

79

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

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

28.08.2023    11582    YA_418728146    7    

154
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. reset2 17 24.11.22 15:56 Сейчас в теме
Интересно.

П.С. В сообщении об ошибке не хватает заголовка "Вы жертва" ;).
bocharovki; +1 Ответить
5. TSSV 1148 24.11.22 17:44 Сейчас в теме
(1) С учетом того, что обновляли платформу ночью, да. Но не я один, как выясняется :)
2. tesseract 24.11.22 16:52 Сейчас в теме
>>И наконец в версии 8.3.22.1704 конструкция потеряла легитимность и теперь приводит к ошибке

В 1704 на самом деле.

Я по другому поправил - но то-же работает.
4. TSSV 1148 24.11.22 17:16 Сейчас в теме
(3) Да, любопытно. Ну вот, исправили получается.
6. tamepjlah 3 25.11.22 06:17 Сейчас в теме
(4) Исправили возврат типа "РасположениеКнопкиОстановкиЗаписиМультимедиа". Почему не сделали, что тип пустой строки = Строка - непонятно... И как в своих доработках отследить код вида
Процедура РандомнаяПроцедура()
	
	ЗначениеТипа = Тип(РандомнаяФункция());
	
КонецПроцедуры

Функция РандомнаяФункция()
	
	Возврат "";
	
КонецФункции
Показать

Хоть в запросах пустую строку нормально отрабатывает
Devi; hairman; +2 Ответить
7. TMV 14 25.11.22 08:30 Сейчас в теме
(6) Тип пустой строки не может и не должен быть строка. ТипЗнч пустой строки - строка.
9. tamepjlah 3 25.11.22 09:36 Сейчас в теме
(7) Хорошо, соглашусь. Но ведь можно было бы возвращать Неопределено (аналогично методу ТЧ.Найти)?
10. TSSV 1148 25.11.22 10:15 Сейчас в теме
(9) Возможно. Еще один вариант - не исправлять это вообще, просто зарегистрировать ошибку для особо одаренных и все. Конструкции языка - это фундамент, ремонтировать который чревато обрушением конструкции.
8. TSSV 1148 25.11.22 09:20 Сейчас в теме
(6) Все-таки исправление выглядит логичным. Думаю нет никаких оснований в случае пустой строки в аргументе возвращать нечто иное, чем при любой другой строке, тип по которой нельзя определить. Например Тип("ааа") выдаст (и раньше выдавал) аналогичную ошибку. То есть в данном случае поведение привели к однообразию. Возможно ошибочным было использовать эту особенность в БСП, хотя формально и здесь ошибки не было - есть инструмент и он тогда так отрабатывал.
11. Brawler 457 26.11.22 08:23 Сейчас в теме
(8) это называется эксплуатация ошибки, вот они ее и эксплуатировали
Сталкивался с похожими реализациями в программе, не типовыми, а когда 1С чинила платформу то потом было больно переписывать чужой код, когда у тебя за спиной орущие юзеры, склад в цехе забит товарами, а передать на основной склад готовой продукции не могут. ТСД 1с запущенной в них сломались так к сведению.
По другому стали отрабатывать элементы управления на форме куда вводились штрихкоды и нажимался Enter.
А посему, если видите нелогичность в коде, то сразу задумайтесь, что вероятно это косяк и лучше лишний раз проверку добавить
14. Devi 33 30.11.22 05:04 Сейчас в теме
(6) Хоть в запросах пустую строку нормально отрабатывает

Просто запросы их кривые ручки поломать не могут там стандарты SQL и в большинстве случаев отрабатывается на стороне SQL сервера
12. alexis_g 28.11.22 14:55 Сейчас в теме
Ещё ТипЗнч(Неопределено) приводит к ошибке
Devi; TSSV; +2 Ответить
13. Devi 33 30.11.22 05:00 Сейчас в теме
Ничего умнее не придумали как вываливаться с ошибкой??? Это называется привели к "логичному поведению"??? То есть вываливаться с ошибкой - это логичное поведение??? Разве пустая строка имеет какой то иной тип, а не строка??? Вот очередной костыль обрастёт гуно-кодом Попытка Исключение КонецПопытки; с очередным непредсказуемым результатом…
15. NiNAH 18 30.11.22 07:17 Сейчас в теме
(13) а вы не путаете функции ТипЗнч() и Тип()?
Думаю ТипЗнч() продолжает правильно отрабатывать при передаче пустой строки.
А то что пофиксили ошибочное поведение при передаче пустой строки в функцию Тип() наоборот логично...
16. Devi 33 02.12.22 05:13 Сейчас в теме
(15)
Ну да попутал… За функцией Тип() и ей подобными - вообще нужно на уровне компиляции кода следить, тогда ошибки с вылетом платформы будут сводится к нулю, но конфигуратор у нас вообще не развивается – к примеру расширения до сих пор не видят объекты основной конфигурации – хотя это с самого начала можно было реализовать.
17. user1885989 18.12.22 10:37 Сейчас в теме
Платформа 8.3.22.1709 после обновления в Банковских выписках и Платежных документах выходит сообщение; К сожалению возникла непредвиденная ошибка.
18. orfos 216 11.01.23 15:05 Сейчас в теме
Платформа 8.3.23.1437. БГУ. при начальном заполнении аналогичная ошибка
19. ILNIK 33 20.01.23 16:03 Сейчас в теме
платформа 8.3.22.1750 и бухгалтерия 3.0.129.13 такая же ошибка.
причем только если подключаться через v83.application , а через обычный вход нет ошибки
21. GorI 07.02.23 11:38 Сейчас в теме
(19) Подтверждаю, только на платформе 8.3.22.1709. Только проблема не в функции Тип(), а в конструкторе Новый ОписаниеКомандыСистемыВзаимодействия(ОбработчикКоманды, ПредставлениеКоманды);

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

Написал на партнерском форуме - ответов пока нет.
https://partners.v8.1c.ru/forum/t/2108820/m/2108820
20. zels 171 03.02.23 19:46 Сейчас в теме
У меня обработка загрузки данных а УТ11 из УТ10 по COM-соединению перестала работать.
Пишет что тип не предопределен и указывает строку Док.Записать(). В отладчике по шагам документ записывается.
Возможно, потом в каких-то подписках ошибка. Но почему платформа 8.3.22.1750 не говорит в каком месте?
22. GorI 07.02.23 11:40 Сейчас в теме
(20)
Пишет что тип не предопределен и указывает строку Док.Записать(). В отладчике по шагам документ записывается.

Возможно ошибка "Тип не определен" возникает не при записи документа, а в подписках на событие "ПриЗаписи" или "ПередЗаписью" с источником - этим документом.

Возможно это такая же проблема как описано тут: https://partners.v8.1c.ru/forum/t/2108820/m/2108820
23. tigcorp 3 11.07.23 13:46 Сейчас в теме
Спасибо большое автору. Очень помогло оперативно решить проблему после обновления платформы.
plevakin; TSSV; +2 Ответить
Оставьте свое сообщение