ИнструкцияО порядке внесения изменений и обновления конфигурации баз данных (БД) |
|
| г. Москва | «07» октября 2019 г. |
Ответственный за обновление: Румянцев Даниил Романович
Версии
| Версия документа | Дата | Автор | Описание основных изменений |
| 1.0 | 21.07.2017 | Румянцев Д.Р. | Документ разработан |
| 2.0 | 10.10.2019 | Румянцев Д.Р. | Документ изменен |
Аннотация
Настоящий документ составлен с целью определения порядка выполнения доработок конфигурации по задачам, выполняемым в рамках проекта.
В документе приведен порядок выполнения работ по задачам, которые касаются внесения изменений в конфигурацию БД (база данных), а также порядок обновления конфигурации.
Документ является обязательным к соблюдению изложенных в нем правил для всех участников проектной команды.
Общие требования к выполнению доработок конфигурации
- При внесении изменений в конфигурацию БД в коде, в обязательном порядке, должны указываться комментарии.
Формат комментариев приведен в Приложении 1;
- Конфигурация БД, разрабатывается через расширение конфигурации.
- Новые объекты, такие как справочники, документы, регистры, а также новые реквизиты существующих объектов, добавляются в основную конфигурацию.
- В расширения добавляются — модули, формы, отчеты, обработки и т.д. По умолчанию в системе должно содержаться одно расширение. При добавлении других расширений необходимо согласовывать с Руководителем разработки 1С и на общем Stand Up.
- Использование скриптов допускается только с уведомления всей команды разработки и пониманием данных скриптов всех программистов.
- Для отчетов и обработок наименование и синоним должны совпадать.
ПРИЛОЖЕНИЕ 1
Оформление внесения изменений в конфигурацию
При внесении изменений в конфигурацию, в общем случае, все разработчики должны руководствоваться системой стандартов и методик разработки конфигураций для платформы 1С: Предприятие 8 установленной фирмой 1С
Обязательным является соблюдение следующих правил.
Оформление модулей
- Длина строки в общем случае не должна превышать 120 символов.
- Для отступов необходимо использовать символы табуляции.
- Одна строка кода — одна управляющая конструкция.
// Плохо:
Если ЭтоБрак Тогда Продолжить; КонецЕсли;
// Хорошо:
Если ЭтоБрак Тогда
Продолжить;
КонецЕсли;
- Следует отделять друг от друга пробелами ключевые слова, вызовы процедур и функций, параметры процедур и функций внутри скобок, операторы.
// Плохо:
Сообщить(“Сумма: “+Сумма);
// Хорошо:
Сообщить(“Сумма: “ + Сумма);
- Для разделения на логические части внутри модуля следует использовать пустые строки
- При вызове функции с несколькими параметрами при переносе строк необходимо выравнивать параметры по первому
// Начальное состояние (строка слишком длинная):
НалоговыйУчет.ОстаткиВременныхРазниц(СтрокаВидАктиваОбязательства, СписокОрганизаций, Реквизиты.НачалоГода, Реквизиты.КонДата);
// Плохо:
НалоговыйУчет.ОстаткиВременныхРазниц(
СтрокаВидАктиваОбязательства, СписокОрганизаций, Реквизиты.НачалоГода, Реквизиты.КонДата);
// Лучше:
НалоговыйУчет.ОстаткиВременныхРазниц(СтрокаВидАктиваОбязательства,
СписокОрганизаций,
Реквизиты.НачалоГода,
Реквизиты.КонДата);
// Хорошо:
НалоговыйУчет.ОстаткиВременныхРазниц(
СтрокаВидАктиваОбязательства,
СписокОрганизаций,
Реквизиты.НачалоГода,
Реквизиты.КонДата);
- Выравнивание однотипных операторов. При следовании друг за другом нескольких однотипных операторов допускается их выравнивание. Выравнивание следует выполнять с помощью пробелов
// Хорошо:
НоваяСтрока = ВидыОпераций.Добавить();
НоваяСтрока.ВидОперации = ВидОперации;
НоваяСтрока.НомерГруппы = ГруппаПоВидуОперации(ВидОперации);
НоваяСтрока.ПоОрганизацииВЦелом = ГруппаПоОрганизации(НоваяСтрок);
Изменение (добавление) кода
Все изменения в коде обязательно должны сопровождаться комментариями следующего вида:
//<—PR93 : [Автор] [ДатаВремя]
// СсылкаНаЗадачуВЯндексТрекер
// СсылкаНаЗадачуВАтлассиан
// КомментарийИзменений
… программный код …
//—>PR93:
Где:
- Автор — Фамилия и инициалы лица, совершившего изменения, например Иванов А.А.;
- ДатаВремя — дата внесения изменений в формате «дата-время», например 27.08.2015 14:00;
- КомментарийИзменений – описание реализованных изменений (что сделано и для чего)
- СсылкаНаЗадачуВЯндексТрекер – ссылка на задачу в яндекс трекер
- СсылкаНаЗадачуВАтлассиан – ссылка на задачу а атлассиан
Пример комментария:
//<—PR93: [Автор] [ДатаВремя]
// https://tracker.yandex.ru/ODINSDEV-504
// https://1c.programs93.ru/wiki/spaces/TECHSUPPORT/pages/2916356/1×26
// Исправление ошибки конфигуратора
// СтрокаНовая = 35 + «тест»;
СтрокаНовая = Строка(35) + «тест»;
//—>PR93:
Методы
Параметр функции не должен возвращать значение. Иными словами не используйте входные параметры функций как дополнительный вывод. Весь вывод должен быть в возвращаемом значении. Если нужно возвращать несколько значений следует использовать такие типы как Структура, Массив и т.д.
// Плохо:
URLСервиса = «»;
ИмяПользователя = «»;
ПарольПользователя = «»;
ЗаполнитьПараметрыПодключения(URLСервиса, ИмяПользователя, Пароль);
// Хорошо:
ПараметрыПодключения = ПолучитьПараметрыПодключения();
// Возвращаемое значение — структура:
// URLСервиса — Строка
// ИмяПользователя — Строка
// ПарольПользователя — Строка
Условия
Предпочтительней использовать тернарный оператор для простых конструкций.
// Плохо:Если НДС0 Тогда Возврат 0;Иначе Возврат 18;КонецЕсли; // Хорошо:Возврат ?(НДС0, 0, 18);
Не допускайте использования вложенных тернарных операторов.
Ключевое слово Тогда пишется на той же строке, что и последнее условие.
Сложные условия (содержащие 3 конструкции и более) необходимо выносить в отдельные методы в случае их использования в коде не менее.
// Плохо:
Если НДС0 Тогда
Возврат 0;
Иначе
Возврат 18;
КонецЕсли;
// Хорошо:
Возврат ?(НДС0, 0, 18);
Не допускайте использования вложенных тернарных операторов.
Ключевое слово Тогда пишется на той же строке, что и последнее условие.
Сложные условия (содержащие 3 конструкции и более) необходимо выносить в отдельные методы в случае их использования в коде не менее.
// Плохо:
Если ИдентификаторОбъекта = «АнализСубконто»
ИЛИ ИдентификаторОбъекта = «АнализСчета»
ИЛИ ИдентификаторОбъекта = «ОборотноСальдоваяВедомость»
ИЛИ ИдентификаторОбъекта = «ОборотноСальдоваяВедомостьПоСчету»
ИЛИ ИдентификаторОбъекта = «ОборотыМеждуСубконто»
ИЛИ ИдентификаторОбъекта = «ОборотыСчета»
ИЛИ ИдентификаторОбъекта = «СводныеПроводки»
ИЛИ ИдентификаторОбъекта = «ГлавнаяКнига»
ИЛИ ИдентификаторОбъекта = «ШахматнаяВедомость» Тогда
ПараметрыРасшифровки.Вставить(«ОткрытьОбъект», Ложь);
ЕстьПоказатель = Ложь;
ЕстьКорЗначение = Ложь;
ЕстьСчет = Истина;
Счет = Неопределено;
ПервыйЭлемент = Неопределено;
КонецЕсли;
// Хорошо:
Если ОткрыватьОбъектПриИдентификаторе(ИдентификаторОбъекта) Тогда
ПараметрыРасшифровки.Вставить(«ОткрытьОбъект», Ложь);
ЕстьПоказатель = Ложь;
ЕстьКорЗначение = Ложь;
ЕстьСчет = Истина;
Счет = Неопределено;
ПервыйЭлемент = Неопределено;
КонецЕсли;
Функция ОткрыватьОбъектПриИдентификаторе(ИдентификаторОбъекта)
Возврат ИдентификаторОбъекта = «АнализСубконто»
ИЛИ ИдентификаторОбъекта = «АнализСчета»
ИЛИ ИдентификаторОбъекта = «ОборотноСальдоваяВедомость»
ИЛИ ИдентификаторОбъекта = «ОборотноСальдоваяВедомостьПоСчету»
ИЛИ ИдентификаторОбъекта = «ОборотыМеждуСубконто»
ИЛИ ИдентификаторОбъекта = «ОборотыСчета»
ИЛИ ИдентификаторОбъекта = «СводныеПроводки»
ИЛИ ИдентификаторОбъекта = «ГлавнаяКнига»
ИЛИ ИдентификаторОбъекта = «ШахматнаяВедомость»;
КонецФункции
Избегайте использование Йода-синтаксиса.
// Плохо:Если 0 = Сумма Тогда // Хорошо:Если Сумма = 0 Тогда
Имена процедур, функций, переменных
Следуйте общему подходу именования
// Плохо:этобрак, ЭТОБРАК, этоБрак // Хорошо:ЭтоБрак
Не используйте отрицание в именах переменных и методов, не используйте слова со скрытыми значениями, отличными от предполагаемого.
// Плохо:Функция ПроверкаНеПройдена()… Если Не (Условие И Не ПроверкаНеПройдена()) Тогда // Хорошо:Функция ПроверкаПройдена()… Если Не Условие И Не ПроверкаПройдена() Тогда
Имя переменной, функции или класса должно отвечать на все главные вопросы. Оно должно сообщить, почему эта переменная (и т. д.) существует, что она делает и как используется. Если имя требует дополнительных комментариев, значит, оно не передает намерений программиста.
Имена методов должны представлять собой глаголы или глагольные сочетания.
В идеальном случае количество аргументов функции равно нулю (нульарная функция). Далее следуют функции с одним аргументом (унарные) и с двумя аргументами (бинарные). Функций с тремя аргументами (тернарных) следует по возможности избегать. Необходимость функций с большим количеством аргументов (полиарных) должна быть подкреплена очень вескими доводами — и все равно такие функции лучше не использовать.
Комментарии
Если код требует комментария для пояснения работы — в первую очередь необходимо рассмотреть варианты рефакторинга, чтобы код не требовал комментария.
К комментариям также относятся ограничения на длину строки в 120 символов.
Обрамление областей функция и процедур
Все добавленные функции и процедуры должны быть включены в область
#Область Доработки_PR93
… добавленные процедуры и функции …
#КонецОбласти
Добавление\изменение объектов конфигурации
Имена новых объектов конфигурации (документы, справочники, отчеты, реквизиты, измерения регистров и т.д.) должны начинаться с префикса, состоящего из идентификатора и нижнего подчеркивания. Если реквизиты входят в состав нового объекта, то префикс ставится для объекта, для реквизитов не ставится. Например если в документ добавлена новая табличная часть, то префикс ставится у табличной части, реквизиты именуются без префикса. Аналогично с реквизитами добавленных объектов, например “документ, справочник” и т.д.
Описание добавленных объектов помещать в общий модуль “Описание добавленных объектов”.
В рамках текущего проекта устанавливается идентификатор
PR93
Если производится добавление нового объекта с подчиненными (справочник и реквизиты с табличными частями), то нет необходимости ставить префикс в именах подчиненных объектов.
Пример:
Документ: PR93_ЗаявкаНаОборудование
Измерение регистра накопления: PR93_ИзмерениеНовое
В комментариях к новому или изменяемому объекту конфигурации необходимо добавить изменения вида:
//PR93:[ИдентификаторИзменения][ИмяОбъекта][Автор][ДатаВремя]
// СсылкаНаЗадачуВЯндексТрекер
// СсылкаНаЗадачуВАтлассиан
, где:
- ИдентификаторИзменения – признак вида изменения объекта. Возможны два варианта:
+ — Добавление объекта
* — Изменение типового объекта
- ИмяОбъекта – имя добавленного/измененного объекта;
- Автор – Фамилия и инициалы лица, совершившего изменения;
- ДатаВремя — дата внесения изменений в формате «дата-время»;
- СсылкаНаЗадачуВЯндексТрекер – ссылка на задачу в яндекс трекер;
- СсылкаНаЗадачуВАтлассиан – ссылка на задачу а атлассиан.
Этот комментарий должен располагаться в самом начале модуля объекта.
Пример:
Добавление объекта
// PR93:[+] [ИмяОбъекта] [Автор] [ДатаВремя]
// СсылкаНаЗадачуВЯндексТрекер
// СсылкаНаЗадачуВАтлассиан
Изменения объекта
// PR93:[*] [ИмяОбъекта] [Автор] [ДатаВремя]
// СсылкаНаЗадачуВЯндексТрекер
// СсылкаНаЗадачуВАтлассиан
В конфигурации должна быть в обязательном порядке добавлена подсистема
PR93_
В данной подсистеме помимо функциональных систем, должны в обязательном порядке присутствовать две подчиненные подсистемы
PR93_ДобавленныеОбъекты
PR93_ИзмененныеОбъекты
Все добавленные объекты конфигурации, помимо принадлежности к функциональным подсистемам должны принадлежать подсистеме
PR93_ДобавленныеОбъекты
Все изменённые типовые объекты конфигурации, помимо принадлежности к функциональным подсистемам должны принадлежать подсистеме
PR93_ИзмененныеОбъекты
Для добавления константы, используемой в отчетах, используем справочник «PR93 Константы». В этом справочнике в конфигураторе добавляем предопределенный элемент, название устанавливаем в соответствии с названием константы. В режиме предприятия ответственный пользователь задает значение данной константы, в отчетах и запросах обращаемся к предопределенному элементу конфигурации.
При добавлении нового объекта добавляем новую роль, одноименную с названием объекта. Если требуется отдельная роль только на чтение нового объекта, то к наименованию в конце добавляем “_чтение”.
Изменение элементов формы.
Внесение изменений в элементы формы описывается в модуле формы, в конце формы:
//<— PR93: [Автор] [ДатаВремя]
// СсылкаНаЗадачуВЯндексТрекер
// СсылкаНаЗадачуВАтлассиан
// <Элемент формы> — <Описание изменений>
//—>PR93:
, где:
- Элемент формы – Имя изменяемого (добавляемого, удаляемого, элемента формы);
- Описание изменений – расшифровка изменений, произведенных с элементом формы.
Пример:
<— PR93: [Автор] [ДатаВремя]
// СсылкаНаЗадачуВЯндексТрекер
// СсылкаНаЗадачуВАтлассиан
// Добавление на форму новых реквизитов справочника
// НомерЗаказчика – Добавлен новый элемент на форму;
// Комментарий – поле ввода комментария перенесено на закладку «Характеристики»
//—>PR93:
Описание процедур и функций
Все процедуры и функции, добавляемые в модули объектов конфигурации, должны быть описаны.
Описание процедур и функций различаются только в том, что для функции необходимо указать возвращаемое значение.
Нумерация
Во всех используемых конфигурациях добавлять отдельную роль «PR93 Редактирование нумерации». В модуле нумерации прописать доступ к редактированию нумерации только для данной роли.
Использование COM-объектов
В связи с переходом на систему Linux, использование com-объектов в конфигурации запрещено.

