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