При обновлении нетиповых конфигураций на платформе «1С:Предприятие» в режиме обычного приложения (толстый клиент) разработчики часто сталкиваются с ошибками синтаксического контроля. Типичный пример такой ситуации в конфигурациях «Зарплата и кадры бюджетного учреждения 1.0» (ЗКБУ) или «Зарплата и управление персоналом 2.5» (ЗУП) — сообщение проверки модулей:
ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Форма.ФормаВидаРасчета.Форма(247,8)}: Переменная не определена (ЭтоПособиеЗаСчетФСС)
При этом в коде модуля формы присутствует условие:
Если ЭтоПособиеЗаСчетФСС Тогда
// Действия при расчете пособия
КонецЕсли;
Разберем, почему возникает данная коллизия и как по шагам восстановить работоспособность формы вида расчета.
Проанализируем архитектуру обычных форм толстого клиента 1С. В отличие от управляемых форм, обычная форма состоит из визуального диалога, локальных реквизитов формы и модуля. Когда в модуле формы происходит обращение к переменной без явного указания контекста (например, без директив или обращения через объект), платформа ищет ее в следующем порядке:
Перем.В типовых решениях идентификатор ЭтоПособиеЗаСчетФСС обычно является реквизитом самой формы с типом Булево либо реквизитом объекта. Если конфигурация снята с поддержки или частично изменена, при автоматическом объединении с новым релизом конфигуратор обновляет текст модуля формы, но оставляет структуру реквизитов из старой рабочей базы. В результате код нового релиза обращается к реквизиту формы, который просто не был добавлен в структуру метаданных формы при слиянии.
Разберем по шагам, как исправить форму, если в нее ранее вносились доработки, которые необходимо сохранить:
.cf) через меню «Конфигурация» — «Открыть конфигурацию из файла».Планы видов расчета — ОсновныеНачисленияОрганизаций — Формы — ФормаВидаРасчета.ЭтоПособиеЗаСчетФСС и проверим ее тип (как правило, это Булево).ПланВидовРасчетаОбъект...) и убедимся, что для него активен признак Основной реквизит. Если этот флаг сброшен, форма теряет прямой доступ к полям самого объекта начисления.Если в ФормаВидаРасчета не вносилось критических пользовательских изменений и доработок, самым надежным способом будет полное обновление формы из файла поставщика:
.cf нового релиза.ПланВидовРасчета.ОсновныеНачисленияОрганизаций и раскроем его ветку до формы ФормаВидаРасчета.Иногда после объединения метаданных платформа продолжает сообщать о неопределенной переменной из-за повреждения локального кэша структуры конфигурации. Если реквизит на форме присутствует, а синтаксический контроль все равно выдает ошибку, выполним очистку кэша:
%LOCALAPPDATA%\1C\1Cv8\
%APPDATA%\1C\1Cv8\
В подавляющем большинстве случаев ошибка вызвана именно отсутствием реквизита на соответствующей вкладке формы после обновления. Добавление реквизита ЭтоПособиеЗаСчетФСС или полная замена формы на типовую решает проблему и позволяет успешно обновить информационную базу.