При разработке и доработке обработок или отчетов в платформе 1С:Предприятие 7.7 разработчики иногда сталкиваются с непонятным поведением элементов формы: при открытии диалога элемент Список значений (или другой реквизит) уже содержит некоторое значение. При этом в модуле формы отсутствует код заполнения — его нет ни в предопределенной процедуре ПриОткрытии(), ни в области автовыполнения (нижняя часть модуля после всех процедур и функций).
Рассмотрим подробно, почему возникает подобная ситуация, где платформа хранит эти данные и как корректно отключить автоматическое подставление устаревших значений.
Проанализируем работу платформы 1С 7.7 при открытии формы. В конфигураторе для реквизитов диалога и формы в целом предусмотрен встроенный механизм сохранения и восстановления настроек. Если у диалога включен режим сохранения настройки, а у конкретного элемента на форме установлена свойство «Сохранять при сохранении настройки», платформа берет управление значением на себя.
Порядок загрузки данных платформой выглядит следующим образом:
ПриОткрытии() диалоговый элемент Список значений уже оказывается заполнен.ПриОткрытии() и основной код модуля.Если пользователь ранее сохранил настройку формы по умолчанию, платформа будет загружать её автоматически при каждом открытии без вызова дополнительных диалоговых окон выбора настроек.
Выясним, в каких файлах 1С 7.7 сохраняет эти данные. Все автоматически сохраненные параметры форм и отчетов записываются в каталог пользователя информационной базы:
1Cv7.CFG.*.lst, расположенных в рабочем каталоге конкретного пользователя.Важный нюанс: если у пользователей в «Конфигураторе» не задан индивидуальный каталог пользователя (или авторизация в базе вовсе не используется), платформа сохраняет все настройки в общий каталог информационной базы. В результате возникает ситуация, когда один пользователь сохранил настройку, а у всех остальных сотрудников при открытии формы начинают появляться чужие данные.
Разберем по шагам несколько вариантов устранения автоматического заполнения списка значений.
Если для данного элемента сохранение состояния между сеансами не требуется, необходимо отключить соответствующее свойство в дизайнере формы:
Список значений (двойным кликом или через контекстное меню).Если механизм автосохранения настроек необходим для других реквизитов формы, но элемент Список значений всегда должен гарантированно открываться пустым, его можно очистить программно. Для этого в самом начале процедуры ПриОткрытии() следует вызвать метод Очистить():
Процедура ПриОткрытии()
// Принудительно очищаем список от автоматически восстановленных настроек
ИмяСпискаЗначений.Очистить();
// Далее следует основной код инициализации формы
КонецПроцедуры
Также очистку можно расположить в области автовыполнения модуля (в самом низу файла вне процедур), чтобы сбросить значения еще до показа формы пользователю.
Если менять структуру формы в Конфигураторе не требуется, а нужно лишь сбросить старое некорректное значение у пользователей, выполните следующие действия:
*.lst, либо сбросьте файл 1Cv7.CFG.После повторного входа в программу платформа откроет форму с чистыми значениями по умолчанию.