Программное управление видимостью страниц
--------------------------------------------------------------------------------
При программном управлении видимостью страниц нужно делать так, чтобы в любой момент времени хотя бы одна страница была видимой: сначала нужно включать все видимые страницы, а только затем выключать все невидимые.
Игнорирование этого правила может привести к тому, что перестанут срабатывать привязки элементов управления.
Программное управление формой
--------------------------------------------------------------------------------
Обращение к процедурам, функциям, реквизитам, свойствам и методам, доступных для формы, из модуля этой формы происходит напрямую, без использования объекта "ЭтаФорма", кроме случаев, когда такое обращение не может быть выполнено иначе.
В разделе инициализации модуля формы запрещается открывать другие формы или диалоги (например операторами Вопрос(), Предупреждение() и т. д.).
Программное управление формой из других модулей производится через присвоение её реквизитам (свойствам) значений и через вызов её методов или экспортных процедур (функций).
Не допускается делать предположений о свойствах реквизитов формы.
Не допускается обращение к элементам формы не из модуля этой формы: ни непосредственно, ни при помощи перебора коллекции "ЭлементыФормы", ни каким-либо другим способом.
Например, вполне корректно предполагать, что у формы элемента справочника есть свойство "ПараметрОснование", однако, предположение о наличии у "ПараметрОснование" свойства "Дата", уже недопустимо.
Ограничение выполнения действий, доступных только при определенных условиях
--------------------------------------------------------------------------------
Если действия, выполняемые при нажатии кнопки в форме (командной панели) доступны пользователю только при наступлении определенных условий, то нажатие на кнопку должно быть доступно в любом случае.
Проверка, может ли пользователь выполнять данное действие, производится уже непосредственно в обработчике события нажатия на кнопку. Если действие доступно пользователю, оно выполняется, если нет, то пользователю коротко и понятно объясняется причина невозможности выполнения такого действия.
Например, если нельзя записывать элемент номенклатуры без заполненной базовой единицы измерения, то кнопка "Записать" остается доступной всегда, а при нажатии на неё, если не заполнена базовая единица измерения, может быть выдано сообщение:
Перед записью в элементе справочника "Номенклатура" необходимо заполнить реквизит "базовая единица"!
Поведение специализированных форм
--------------------------------------------------------------------------------
Если правильная и стабильная работа формы подразумевает некоторые особые условия, то рекомендуется завершать ее работу с выдачей соответствующего диагностического сообщения при попытке открыть ее в условиях, отличных от тех, на работу в которых она рассчитана.
Например, работа формы сводного отчета о контрагенте рассчитана на вызов функции формы контрагента для получения исходных данных.
При попытке открыть ее не из формы контрагента, она должна выдавать сообщение, что данная форма вызывается при редактировании контрагента в форме по кнопке "Вывести сводный отчет".
Обращение к данным информационной базы в обработчиках часто вызываемых событий
--------------------------------------------------------------------------------
Следует минимизировать обращение к данным информационной базы в обработчиках событий, приведенных ниже, поскольку это может существенно замедлить интерактивную работу.
События формы:
• ОбновлениеОтображения().
События табличного поля:
• ПриВыводеСтроки(),
• ПриАктивацииСтроки().
В качестве средств минимизации в зависимости от ситуации могут быть:
• использование переменных модуля формы для кэширования данных;
• перенос обработки данных в обработчики других событий;
• для таблиц значений - получение необходимых данных на этапе заполнения;
• любые другие методы.
Обращение к свойству "ТекущаяСтрока" табличного поля
--------------------------------------------------------------------------------
Запрещается использовать свойство "ТекущаяСтрока" для получения значений полей строки табличного поля.
Обращение к данным значениям должно выполняться через "ТекущиеДанные" или "ДанныеСтроки".
Правильно:
ИнформационнаяНадписьАдрес = "Адрес: " + Элемент.ТекущиеДанные.Адрес;
ИнформационнаяНадписьАдрес = "Адрес: " + Элемент.ТекущаяСтрока.Адрес;
СправочникСписок.Колонки.Добавить("Адрес");
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua