///
1С:ИТС
Сайт ИТС дает обширные рекомендации о том, как следует образовывать и использовать имена переменных, функций, реквизитов, модулей и прочих объектов конфигурации.
Имена метаданных
Каждый объект метаданных использует семейство представлений, используемых в различных ситуациях и контекстах.
Этот раздел снабжен иллюстрациями представлений подчиненного справочника, в котором для наглядности все представления полностью совпадают со своим названием: Имя "Имя", Синоним "Синоним", Пояснение "Пояснение" и т.д.
Имя
Идентифицирующее Имя метаданных определяет семейство имен типов объектов, которые (имена) используются только в конфигураторе. В обычном случае в интерфейсе приложения Имя нигде и никогда не проявляется, если только это не было специально предусмотрено разработчиком.
Синоним
Поскольку Имя объекта метаданных может быть странным и непонятным, вместо него приложение стремится использовать в интерфейсе другие более понятные представления, наилучшим образом соответствующие контексту, но только в том случае, если эти представления были назначены. Синоним назначает объекту служебное представление, поэтому он должен осмысленно и лаконично описывать объект, кратко и понятно выражая суть и назначение объекта. Синоним используется в интерфейсе, только если объекту не назначены другие представления. Объект всегда можно найти по Синониму в строке поиска, даже если назначены другие представления:
Комментарий, Пояснение
Если Синоним не дает достаточного объяснения назначению объекта метаданных, оно может быть дано в Комментарии, который будет доступен разработчику в Конфигураторе, и нигде больше. Если объяснение назначению должно быть доступным в интерфейсе приложения, то для этого следует использовать Пояснение.
Представление объекта, Представление списка
Эти представления являются основными для интерфейса, поэтому они должны быть четкими, ясными и при этом компактными. По представлению объект можно найти в поиске:
Представление списка подчиненного объекта используется в панели формы владельца:
Поиск в навигационной панели следует выполнять по Представлению списка или объекта:
Расширенное представление объекта, Расширенное представление списка
Эти представления используются заголовках соответствующих форм объекта и могут быть максимально содержательными:
Следует помнить, что поиск по расширенному представлению не выполняется:
Разделы модуля
Рекомендации ИТС //its.1c.ru
Программный модуль (общие модули, модули объектов, модули менеджеров объектов, модули форм, команд и т.п.)
- Раздел «Программный интерфейс» содержит экспортные процедуры и функции, предназначенные для использования другими объектами конфигурации или другими программами (например, через внешнее соединение).
- Раздел «Служебный программный интерфейс» предназначен для модулей, которые являются частью некоторой функциональной подсистемы. В нем должны быть размещены экспортные процедуры и функции, которые допустимо вызывать только из других функциональных подсистем этой же библиотеки.
- Раздел «Служебные процедуры и функции» содержит процедуры и функции, составляющие внутреннюю реализацию общего модуля. В тех случаях, когда общий модуль является частью некоторой функциональной подсистемы, включающей в себя несколько объектов метаданных, в этом разделе также могут быть размещены служебные экспортные процедуры и функции, предназначенные только для вызова из других объектов данной подсистемы.
Модули объектов, менеджеров, наборов записей, обработок, отчетов
- Раздел «Программный интерфейс» содержит экспортные процедуры и функции, предназначенные для использования в других модулях конфигурации или другими программами (например, через внешнее соединение). Не следует в этот раздел помещать экспортные функции и процедуры, которые предназначены для вызова исключительно из модулей самого объекта, его форм и команд. Например, процедуры заполнения табличной части документа, которые вызываются из обработки заполнения в модуле объекта и из формы документа в обработчике команды формы не являются программным интерфейсом модуля объекта, т.к. вызываются только в самом модуле и из форм этого же объекта. Их следует размещать в разделе «Служебные процедуры и функции».
- Раздел «Обработчики событий» содержит обработчики событий модуля объекта (ПриЗаписи, ПриПроведении и др.)
- Раздел «Служебный программный интерфейс» имеет такое же предназначение, как и в общих модулях.
- Раздел «Служебные процедуры и функции» имеет такое же предназначение, как и в общих модулях.
Модули форм
- Раздел «Обработчики событий формы» содержит процедуры-обработчики событий формы: ПриСозданииНаСервере, ПриОткрытии и т.п.
- Раздел «Обработчики событий элементов шапки формы» содержит процедуры-обработчики элементов, расположенных в основной части формы (все, что не связано с таблицами на форме).
- В разделах «Обработчики событий элементов таблицы формы <имя таблицы формы>» размещаются процедуры-обработчики таблиц формы и элементов таблиц. Для процедур-обработчиков каждой таблицы должен быть создан свой раздел.
- Раздел «Обработчики команд формы» содержит процедуры-обработчики команд формы (имена которых задаются в свойстве Действие команд формы).
- Раздел «Служебные процедуры и функции» имеет такое же предназначение, что и в общих модулях.
Модули команд
- Раздел «Обработчики событий» содержит процедуру-обработчик команды ОбработкаКоманды.
- Раздел «Служебные процедуры и функции» имеет такое же предназначение, что и в общих модулях.
РеКС
По некоторым вопросам образования имен у РеКС имеется свой обоснованный взгляд, который может противоречить рекомендациям ИТС или носить субъективный и дискуссионный характер
Переменные модулей
Вопреки рекомендации ИТС "Не рекомендуется в названиях процедур и функций описывать типы принимаемых параметров и (или) возвращаемых значений", тип возвращаемого значения может завершать имя функции в семействе функций схожего назначения, например:
- ...ПредметыЗапрос
- ...ПредметыВыборка
- ...ПредметыМассив
- ...ПредметыКоллекция
Аналогично для реквизита формы и элемента формы:
- ПредметыДерево,
- ПредметыТаблица,
- ПредметыСписок
Процедура объекта данных, которую следовал бы сделать методом, если бы язык это позволял, начинается с имени реквизита имитируя вызов метода:
- ПредметыДеревоДобавитьПредмет()
- ПредметыДеревоУдалитьСвойство()
Коллекции элементов - ПредметыКоллекция = Контейнер.ПолучитьЭлементы(); - во избежание путаницы со свойством управляемой формы Элементы типа ВсеЭлементыФормы
Оптимизация
РеКС ведет исследование производительности 1С, материалы которого частично опубликованы в ... /// На основании исследования РеКС рекомендует: ?
ЭлементыПредметыДерево = Элементы.ПредметыДерево;
ЭлементыПредметыДеревоТекущиеДанные = ЭлементыПредметыДерево.ТекущиеДанные;
ВерсияДанныеИдентификатор = ВерсияДанные.ПолучитьИдентификатор();
Источники
- ИТС
- Тексты модулей //its.1c.ru
- Правила образования имен переменных //its.1c.ru
- Имена процедур и функций //its.1c.ru
- Параметры процедур и функций //its.1c.ru
- Перенос выражений //its.1c.ru
- Описание процедур и функций //its.1c.ru
- Правила создания модулей форм //its.1c.ru
- Правила создания общих модулей //its.1c.ru
- Структура модуля (управляемого, мобильного, обычного приложения) //its.1c.ru
- Имя, синоним, комментарий //its.1c.ru
- Пользовательские представления объектов (Синоним, Представление, Расширенное представление, Пояснение) //its.1c.ru
- Использование объектов типа Структура //its.1c.ru
- Перехват исключений в коде //its.1c.ru