Instruction file imported from mmmmmm786mngb-jpg/WIM_DEV (
.cursor/rules/1c-form-reserved-names.mdc). Copyright stays with the author.
Зарезервированные имена в модулях форм 1С
Запрет на использование имен стандартных свойств элементов формы как имен локальных переменных.
Применяется: при написании/редактировании кода модулей форм 1С (*.bsl в контексте формы).
Правило
В модулях форм 1С запрещено использовать как имена локальных переменных имена, совпадающие со стандартными свойствами элементов формы:
Параметры(Parameters, параметры самой формы)ПараметрыВыбора(ChoiceParameters)СвязиПараметровВыбора(ChoiceParameterLinks)СписокВыбора(ChoiceList)ПараметрыОтбора(Filter)ОтборСтрок(RowFilter)
Список основан на практическом опыте и может быть неполным. При подозрении на конфликт имен - проверить в конфигураторе.
Причина
Платформа 1С в контексте &НаСервере модуля формы может интерпретировать присвоение ПараметрыВыбора = ... как попытку установить свойство элемента формы, а не локальную переменную. Если тип значения не совпадает с ожидаемым (ФиксированныйМассив(ПараметрВыбора)) - ошибка "Несоответствие типов".
Как именовать
Использовать конкретные имена с контекстом:
// Плохо:
ПараметрыВыбора = Новый Массив;
// Хорошо:
ПараметрыВыбораСтатьи = Новый Массив;
ПараметрыВыбораНоменклатуры = Новый Массив;
Реквизиты формы тоже зарезервированы (не только свойства элементов)
Имя локальной переменной не должно совпадать и с именем реквизита формы. В &НаСервере методе формы присвоение ИмяРеквизита = ... перезаписывает реквизит формы, а не создает локальную переменную. Изменение "утекает" обратно на клиент и ломает форму.
Форма элемента справочника Контрагенты (УНФ)
В типовой форме элемента справочника Контрагенты УНФ есть реквизит формы Вид типа Строка (это поле "Вид:" в шапке карточки контрагента, рядом с "Покупатель/Поставщик/Прочие"). Локальная переменная Вид в &НаСервере процедуре формы - типичная ошибка при программном добавлении полей через обертку (Вид = ?(Флажок, ВидПоляФормы.ПолеФлажка, ВидПоляФормы.ПолеВвода)). Она перезаписывает реквизит формы значением Перечисления вместо Строки, и форма роняется на "Несоответствие типов" при следующем обращении к Вид. Использовать имя ВидПоля или Расш_Вид.
Аналогично проверять прикладные конфигурации УНФ - в Номенклатуре, Договорах и т.п. реквизит Вид тоже может быть.
Форма отчета БСП (ОтчетыКлиент.ФормаОтчета / ВариантыОтчетов)
Особо опасны на форме отчета:
НастройкиОтчета(реквизит типаНастройкиФормыОтчета, хранит ключСвойстваРезультата)Результат(реквизитТабличныйДокументс результатом)
// ПЛОХО (в &НаСервере методе формы отчета):
// затирает реквизит формы НастройкиОтчета значением НастройкиКомпоновкиДанных
НастройкиОтчета = ОбъектОтчет.КомпоновщикНастроек.ПолучитьНастройки();
// ХОРОШО: имя с контекстом
НастройкиОтчетаДетализация = ОбъектОтчет.КомпоновщикНастроек.ПолучитьНастройки();
Симптом: "просто открыть отчет - клик по табличному документу работает; после кастомной серверной операции формы - клик падает с Поле объекта не обнаружено (СвойстваРезультата)" в ВариантыОтчетовСлужебныйКлиент.ПриАктивизацииРезультатаОтчета. Это значит реквизит НастройкиОтчета был перезаписан и потерял ключ СвойстваРезультата.
Диагностика любых "поле объекта не обнаружено" после кастомной операции формы: проверить, нет ли локальной переменной с именем реквизита формы.