Общие правила построения метаданных и создания объектов
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Общие требования

1. Конфигурация не должна иметь неиспользуемых объектов.

2. Для реквизитов объектов, хранящихся в информационной базе, настоятельно не рекомендуется использовать тип ЛюбаяСсылка, так как при исполнении запросов с использованием получения представления значений этих реквизитов требуются значительные ресурсы системы. Например, для реквизитов, хранящих значения субконто, вместо типа ЛюбаяСсылка лучше использовать тип Характеристика.<имя ПВХ>.

3. Общие требования к типам (реквизитов и пр.)


Числовой тип: ограничения могут быть следующие:
• Реквизиты типа флаг (0/1): применяем булево тип данных.
• Реквизиты типа сумма: длина 15, точность 2.
• Реквизиты типа количество: длина 15, точность 3.
• Реквизиты типа коэффициент: длина 10, точность 3.
• Реквизиты типа курс: длина 10, точность 4.
• Реквизиты типа процент: длина 5, точность 2.

Строковый тип:
• Допустимая длина должна быть в большинстве случаев переменной – это означает, что при получении значения реквизита из него автоматически будут удаляться пробелы справа.
• Неограниченная длина должна назначаться, если:
• Не требуется поиск, отбор и т. д. по реквизиту (т. к. поиск работать не будет ни в каком виде)
• Реквизит часто может быть не заполнен, или количество символов больше 100 (т. к. строки неограниченной длины хранятся порциями, а пустые места не занимают совсем).
• Фиксированная длина по умолчанию не устанавливается. В тех случаях, когда необходимо контролировать длину вводимого значения, это следует делать программно, выдавая соответствующие предупреждения.
Свойство «Фиксированная длина» может устанавливаться в тех случаях, когда это действительно необходимо.


4. Общие требования к ведущим объектам

Сортировка:
ведущие объекты в дереве метаданных сортируются по имени по возрастанию.
Принадлежность к подсистемам:
обязательно должна быть указана принадлежность объекта к конкретным подсистемам. Не следует задавать принадлежность всей конфигурации.
Включение справочной информации в содержание помощи:
для ведущих объектов метаданных справочная информация включается в содержание помощи.


5. Общие требования к реквизитам и табличным частям объектов

Сортировка: реквизиты и табличные части объектов в дереве метаданных располагаются в соответствии с проектной логикой..
Индексирование: индексировать реквизиты следует в тех случаях, если по ним предполагается выполнять сортировку, или если по реквизиту часто выполняется отбор, поиск и т. д.
Отбор и поиск будут работать и без индексирования, но медленнее. Следует помнить, что индексирование снижает скорость записи и увеличивает объем базы.

 























Оформление модулей

 


Создание общих модулей

Общие модули создаются для консолидации процедур и функций вместе по ряду однородных признаков. Как правило, в один общий модуль помещаются процедуры и функции одной подсистемы конфигурации (продажи, закупки) или сходного функционального назначения (работа с диалогами, общего назначения).

 

 

Правила образования имен переменных модуля приложения и внешнего соединения

В модуле приложения и в модуле внешнего соединения все переменные модуля должны быть полностью и единообразно закомментированы, таким образом, чтобы совместно с комментарием составлять достаточное и легко читаемое описание. Комментарий следует в той же строке, что и объявление переменной, через некоторое количество пробелов. Табуляции внутри строк не используются.

Перем глДа Экспорт; // Перечисление.Булево.Да Перем глНет Экспорт; // Перечисление.Булево.Нет Перем глРубли Экспорт; // Справочник.Валюты.Рубли Перем глДоллары Экспорт; // Справочник.Валюты.Доллары Перем глРазделительДроби Экспорт; // Строка[1] (например ".") Перем глРазделительТриад Экспорт; // Строка[1] (например "'")

 

Количество пробелов подбирается "по месту".

 


Структура модулей

1. Модуль разделяется на условные секции:
- секция описания переменных (кроме общих модулей);
- секция «служебных» функций и процедур (не вошедших в другие секции);
- секция обработчиков событий, вызываемых из элементов форм (для модулей форм);
- секция обработчиков системных событий;
- секция тела модуля.

Рекомендуется придерживаться указанного принципа «разнесения» процедур и функций по секциям. Тем не менее, допускается иное расположение процедур и функций, если такое расположение лучше иллюстрирует логику работы модуля.
Например, если некоторая процедура вызывается из другой процедуры, которая, в свою очередь, вызывается из формулы элемента диалога, правильным будет расположить их одну за другой, а не «разносить» в разные секции.

Разделение модуля на секции не обозначается комментариями.

2. В секции обработчиков событий, вызываемых элементами формы, обработчики располагаются в порядке:
- обработчики событий формы в целом;
- обработчики событий панелей формы (включая командные панели);
- обработчики событий элементов управления панелей;
- обработчики событий элементов формы;
- обработчики событий табличного поля, поля списка, поля табличного документа;
- обработчики событий элементов табличного поля, поля списка, поля табличного документа.

3. Используемые обработчики событий описываются в порядке их описания в окне свойств формы, ЭУ и т.д.

По глобальному контексту и объектам обработчики описываются в порядке их вызовов.

Глобальный контекст
ПередНачаломРаботыСистемы()
ПриНачалеРаботыСистемы()
ПередЗавершениемРаботыСистемы()
ПриЗавершенииРаботыСистемы()
ОбработкаВнешнегоСобытия()

Справочники
ПриУстановкеНовогоКода()
ПриКопировании()
ОбработкаЗаполнения()
ПередЗаписью()
ПриЗаписи()
ПередУдалением()

Документы
ПриУстановкеНовогоНомера()
ПриКопировании()
ОбработкаЗаполнения()
ПередЗаписью()
ПриЗаписи()
ПередУдалением()
ОбработкаПроведения()
ОбработкаУдаленияПроведения()

 
































Блоки модуля

При значительном количестве строк модуля и для удобства просмотра модуль может быть разбит на блоки.
Блок - более "мелкая единица" модуля, чем секция. Например, в секции обработчиков событий, вызываемых из элементов форм, могут быть выделены блоки: "Обработчики событий командной панели", "Обработчики событий элементов управления", "Обработчики событий формы".

В случае необходимости обозначить блок модуля, это следует делать таким образом:
Пример обозначения блока модуля

//////////////////////////////////////////////////////////////////////////////// // ЗАГОЛОВОК БЛОКА // // Первый абзац описания блока модуля // продолжение первого абзаца описания блока модуля // продолжение первого абзаца описания блока модуля. // // Второй и последующие абзацы описания блока модуля // продолжение второго и последующих абзацев описания блока модуля // продолжение второго и последующих абзацев описания блока модуля. <пустая строка> Разбор примера //////////////////////////////////////////////////////////////////////////////// Обязательная строка. Разделитель блоков модуля. Всего 80 символов. // ЗАГОЛОВОК БЛОКА Название блока большими буквами. Впереди 1 пробел. // Если есть описание блока, добавляется обязательная закомментированная пустая строка. // Первый абзац описания блока модуля // продолжение первого абзаца описания блока модуля // продолжение первого абзаца описания блока модуля. Первый абзац описания блока модуля. Между символами «//» и началом строки описания вставляется 1 пробел. В конце абзаца всегда ставиться точка, даже если это один абзац и занимает одну строку. // Необязательный элемент - пустая закомментированная строка. При необходимости выделить крупные логические куски в описании, их следует разделять пустыми закомментированными строками. // Второй и последующие абзацы описания блока модуля Первая строка второго и последующих абзацев описания блока модуля. Между «//» и началом строки описания вставляются 2 пробела. В конце абзаца всегда ставиться точка, даже если это один абзац и занимает одну строку. // продолжение второго и последующих абзацев описания блока модуля // продолжение второго и последующих абзацев описания блока модуля. НЕ первая строка второго и последующих абзацев описания блока модуля. Между символами «//» и началом строки описания вставляется 1 пробел. В конце абзаца всегда ставиться точка, даже если это один абзац и занимает одну строку. <пустая строка> Обязательная пустая строка. В модулях могут быть назначены блоки с такими названиями: //////////////////////////////////////////////////////////////////////////////// // ЭКСПОРТНЫЕ ПРОЦЕДУРЫ // //////////////////////////////////////////////////////////////////////////////// // ПЕРЕМЕННЫЕ МОДУЛЯ // //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ И ФУНКЦИИ // //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ // //////////////////////////////////////////////////////////////////////////////// // ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ //


Могут быть добавлены и другие блоки.

 




Заголовок модуля

Модуль может иметь заголовок - описание модуля, которое располагается до секции объявления переменных модуля.
Для общих модулей заголовок является обязательным.

В общем случае, заголовок модуля может включать следующие разделы:
- обзор - объяснение, зачем этот модуль был написан и общие принципы его работы;
- особые условия работы модуля.

Предложения в описании модуля записываются по правилам русского языка, то есть начинаются с большой буквы и заканчиваются точкой. Следует проверять текст на отсутствие синтаксических и грамматических ошибок.

При использовании заголовка модуля он должен быть оформлен следующим образом:

// Первый абзац описания модуля // продолжение первого абзаца описания модуля // продолжение первого абзаца описания модуля. // // Второй и последующие абзацы описания модуля // продолжение второго и последующих абзацев описания модуля // продолжение второго и последующих абзацев описания модуля. <пустая строка> Разбор примера // Первый абзац описания модуля // продолжение первого абзаца описания модуля // продолжение первого абзаца описания модуля. Первый абзац описания модуля. Между символами «//» и началом строки описания вставляется 1 пробел. В конце абзаца всегда ставиться точка, даже если это один абзац и занимает одну строку. // Необязательный элемент - пустая закомментированная строка. При необходимости выделить крупные логические куски в описании, их следует разделять пустыми закомментированными строками. // Второй и последующие абзацы описания модуля Первая строка второго и последующих абзацев описания модуля. Между «//» и началом строки описания вставляются 2 пробела. В конце абзаца всегда ставиться точка, даже если это один абзац и занимает одну строку. // продолжение второго и последующих абзацев описания модуля // продолжение второго и последующих абзацев описания модуля. НЕ первая строка второго и последующих абзацев описания модуля. Между символами «//» и началом строки описания вставляется 1 пробел. В конце абзаца всегда ставиться точка, даже если это один абзац и занимает одну строку. <пустая строка> Обязательная пустая строка.

 

 


Тексты модулей

Тексты модулей оформляются по принципу "один оператор в одной строке". Наличие нескольких операторов допускается только для "однотипных" операторов присваивания, например:

А = 0; Б = 0; С = 0;


Текст модуля должен быть оформлен синтаксическим отступом. Для синтаксического отступа следует использовать табуляцию, а не пробелы, чтобы при смене числа знаков в табуляции выравнивание текста сохранялось.

С крайней левой позиции должны начинаться только:
- операторы Процедура, КонецПроцедуры, Функция, КонецФункции;
- операторы предварительного объявления процедур и функций;
- заголовки процедур и функций;
- операторы объявления глобальных переменных модуля;
- операторы "раздела основной программы" (с учетом синтаксического отступа).

Внимание!
Функции НачатьТранзакцию() и ЗафиксироватьТранзакцию() не являются операторными скобками, поэтому текст «внутри» этих функций не сдвигается.

Ключевые слова пишутся канонически (как в документации или Синтакс Помощнике), например:
правильно:

КонецЕсли

неправильно:

конецЕсли, КОНЕЦЕСЛИ, конецесли, Конецесли.


При длине строки более 80 символов следует использовать переносы. Не следует делать строки длиннее 120 символов, за исключением тех случаев, когда перенос невозможен по каким-либо веским соображениям.
При переносах отступ от начала строки делается следующим образом:
- сначала ставится такое же количество табуляций, какое было использовано в первой строке для соблюдения синтаксического отступа;
- затем строка «отгоняется» на нужную позицию пробелами.

 

















Дата: 2018-11-18, просмотров: 296.