Хранилище конфигурации
Все конфигурации должны быть подключены к хранилищам конфигураций
Расширения допускается не подключать к хранилищам
Разработчики
Каждый разработчик должен работать под своим именем. Для этого он должен получить у Администратора хранилища логин/пароль и право захвата объектов в конфигурации
Обновление рабочей конфигурации происходит под универсальным пользователем. Под этим пользователем не допускается внесение изменений в конфигурацию
Расширения
Расширения могут быть использованы в двух случаях:
Поставщик конфигурации реализовал исправление ошибки
Для внесения срочного изменения конфигурации
В дальнейшем функционал расширения должен пройти рефакторинг и внесение в основную конфигурацию
Базы для разработчиков
Каждому разработчику необходимо иметь собственную копию базы с конфигурацией, которую ему необходимо изменять
Для получения копии необходимо обратиться к Администратору баз данных
После получения копии ее необходимо отключить от хранилища и подключить с логином/паролем, полученным Администратором хранилища
После этого можно захватывать объекты
Захват объектов в хранилище
Разработчик должен захватывать только те объекты, которые ему необходимо изменять
Нельзя надолго захватывать корень хранилища, т.к. при захваченном корне другие разработчик не могут создавать новые объекты
Объекты конфигурации
Все новые объекты создаются с префиксом PRO_ (не важно кто является разработчиком)
Все новые объекты создаются в подсистемах PRO_… Если требуется добавить объект в штатную подсистему, то необходимо дополнительное согласование с руководителем проекта.
Комментарии должны содержать специальные символы для идентификации кода при обновлении
//++PRO, текст комментария // продолжение текста комментария ... Код программы ... //--PRO
Создание новых объектов
захватить корень хранилища и необходимые подсистемы
создать все объекты, которые ему необходимы для решения задачи (в том числе подсистемы и т.д.), включить в подсистемы
Создать роли на объекты и включить эти роли в подсистему
Если новый объект - Константа, то добавить в общую форму PRO_Настройки, расположив в группе по смыслу значения
проверить, что конфигурация собирается без ошибок (особенно при создании регистров)
вытолкнуть все новые объекты в хранилище
отпустить корень хранилища
Программирование
Тексты модулей могут содержать комментарии. Комментарии должны быть достаточно понятными, чтобы пояснять работу модуля или комментируемого оператора. Тексты комментариев должны составляться по правилам русского языка, в деловом стиле, быть эмоционально сдержанными и не содержать слов, не относящихся к функциональности программы.
Стандартные объекты не изменяем
Если необходимо изменить стандартный объект
Изменить модуль стандартного объекта
Все изменения должны находится в блоке, у которого написан комментарий
//++PRO Дата и фамилия изменившего, краткое описание что изменено и зачем //Например, добавлено автоматическое заполнение Направления деятельности из договора, //чтобы не было проблем при взаиморасчетах Код... //--PRO
Изменить форму стандартного объекта
Все изменения вносятся программно в модуле объекта, обычно в процедуре ПриСозданииНаСервере
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ... //++PRO, Необходимо вывести на форму реквизит PRO_Поклажедатель НовыйЭлемент = ЭтаФорма.Элементы.Добавить("PRO_Поклажедатель", Тип("ПолеФормы"), ЭтаФорма.Элементы.ГруппаСтраницы); НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка; НовыйЭлемент.ПутьКДанным = "Объект.PRO_Поклажедатель"; //--PRO ... КонецПроцедуры
Добавить процедуру/функцию в стандартный модуль объекта
Все процедуры/функции должны начинаться с префикса PRO_…, например PRO_РасчетЗадолженностиНаДату(ДатаЗадолженности)
НЕ писать комментарий перед процедурой/функцией, если необходимо добавить комментарий, то написать его внутри процедуры
Правильно
&НаКлиенте Процедура PRO_РасчетЦен(Команда) //Добавлена команда расчета цен, 01.01.2020 Если Объект.Проведен=Истина Тогда PRO_ОбщегоНазначенияСервер.СформироватьОсновнойЗапросЦенообразования(Объект.Ссылка); Иначе Сообщить("Необходимо провести документ"); КонецЕсли; КонецПроцедуры
Неправильно
//++PRO, добавлена команда расчета цен, 01.01.2020 &НаКлиенте Процедура PRO_РасчетЦен(Команда) Если Объект.Проведен=Истина Тогда PRO_ОбщегоНазначенияСервер.СформироватьОсновнойЗапросЦенообразования(Объект.Ссылка); Иначе Сообщить("Необходимо провести документ"); КонецЕсли; КонецПроцедуры //--PRO
Добавление нескольких процедур и функций
Если в штатный модуль добавлено более 2-х собственных процедур/функций, то их необходимо объединить в область и все новые процедуры/функции располагать в этой области
#Область PRO &НаКлиенте Процедура PRO_РасчетЦен(Команда) Если Объект.Проведен = Истина Тогда PRO_ОбщегоНазначенияСервер.СформироватьОсновнойЗапросЦенообразования(Объект.Ссылка); Иначе Сообщить("Необходимо провести документ"); КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция PRO_ДоступКРолиПолныеПрава() Возврат РольДоступна("ПолныеПрава"); КонецФункции &НаКлиенте Процедура PRO_ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) ... КонецПроцедуры &НаСервере Функция PRO_ЭтоГоспрогорамма() ... КонецФункции #КонецОбласти
Проверка свойств перед запись с последующим отказом
Нельзя делать просто Отказ = Истина, необходимо ОБЯЗАТЕЛЬНО сообщить пользователю, что не так
Правильно
&НаСервере Процедура ПередЗаписью(Отказ) Если ПорядокРасчетов <> Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда ОбщегоНазначения.СообщитьПользователю( "У договора может быть только порядок расчетов ""По договорам"", укажите это свойство на странице ""Расчеты и оформление"" в поле ""Детализация расчетов""", Ссылка,,, Отказ); КонецЕсли; КонецПроцедуры
Неправильно
&НаСервере Процедура ПередЗаписью(Отказ) Если ПорядокРасчетов <> Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда Отказ = Истина; КонецЕсли; КонецПроцедуры //--PRO