ООО "Рассвет". Преимущество первых

Перейти к концу метаданных
Переход к началу метаданных

Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 16 Текущий »

Хранилище конфигурации

  • Все конфигурации должны быть подключены к хранилищам конфигураций

  • Расширения допускается не подключать к хранилищам

Разработчики

  • Каждый разработчик должен работать под своим именем. Для этого он должен получить у Администратора хранилища логин/пароль и право захвата объектов в конфигурации

  • Обновление рабочей конфигурации происходит под универсальным пользователем. Под этим пользователем не допускается внесение изменений в конфигурацию

Базы для разработчиков

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

  • Для получения копии необходимо обратиться к Администратору баз данных

  • После получения копии ее необходимо отключить от хранилища и подключить с логином/паролем, полученным Администратором хранилища

После этого можно захватывать объекты

Захват объектов в хранилище

  • Разработчик должен захватывать только те объекты, которые ему необходимо изменять

Нельзя надолго захватывать корень хранилища, т.к. другие разработчики не смогут в это время добавлять новые объекты

Создание новых объектов конфигурации

Новый объект конфигурации должен иметь префикс PRO_ (независимо от разработчика, подрядчика)

Подсистема

Новый объект конфигурации должен быть размещен в подсистеме PRO_…

Если требуется добавить объект в штатную подсистему, то необходимо сначала создать в этой подсистеме подсистему PRO_…

Исключения

Исключениями являются объекты, входящие в обновляемые подсистемы сторонних разработчиков, таких как: Diadoc. PAPI, ПИТ и т.п.

Если объекты таких подсистем не находятся на поддержке и не планируется их обновление, префикс должен быть PRO_

Добавление собственных реквизитов и табличных частей в стандартные объекты

Если реквизит или табличная часть добавляется в стандартный объект конфигурации, то он должен иметь префикс 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

Связанные статьи

  • Нет меток