1C-Company / 1c-edt-issues

Пространство для пожеланий и обсуждения ошибок 1C:Enterprise Development Tools
https://edt.1c.ru/
138 stars 9 forks source link

В строгих типах проверять модуль для каждого простого типа, входящего в состав составного и выдавать ошибку, если хотя бы для одного из них она будет. #1390

Open DmitryShvaika opened 5 months ago

DmitryShvaika commented 5 months ago

Описание проблемы

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

Пример: image

В первом случае, когда ПолучитьЧисло(Истина), - ошибки не будет А во втором, когда ПолучитьЧисло(Ложь) возникнет RunTime ошибка, т.к. сложить Неопределено и число у платформы не получится. Однако, edt не видит в этом проблемы....

Описание решения проблемы

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

Результат функций типа ПолучитьЧисло из примера предполагается проверять на тип, например так:

Результат1 = 0;
Значение1 = ПолучитьЧисло(Истина);
Если ТипЗнч(Значение1) = Тип("Число") Тогда
      Результат1 = Значение1 + 3;
КонецЕсли;

Дополнительная информация

No response