#std556

Начальные действия при работе конфигурации

1.

В конфигурации должен быть механизм, который автоматически:

  • определяет первый запуск конфигурации и выполняет первичное заполнение ИБ минимально нужными данными;
  • определяет первый запуск нового релиза и выполняет необходимые изменения данных ИБ.

Если в конфигурации используется Библиотека стандартных подсистем, применяйте подсистему Обновление версии ИБ.

Если БСП не используется, соблюдайте правила ниже.

2.

Первичное заполнение ИБ можно разделять на:

  • обязательное - без него конфигурация не работает;
  • необязательное - упрощает старт работы, но не является критичным.
3.

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

  • описание конфигурации;
  • или описание изменений текущей версии.
4.

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

5.

Если конфигурация работает с распределенной информационной базой (РИБ), обновление данных в подчиненных узлах должно:

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

Повторная обработка ИБ должна быть корректной.

Иначе:

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

Неправильно

ПрофильОбъект = Справочники.ПрофилиГруппДоступа.СоздатьЭлемент();
ПрофильОбъект.Наименование = НСтр("ru = 'Бухгалтер'");
ПрофильОбъект.Предустановленный = Истина;
ПрофильОбъект.Записать();

Правильно

НаименованиеПрофиля = НСтр("ru = 'Бухгалтер'");
Запрос = Новый Запрос(
    "ВЫБРАТЬ
    |   ИСТИНА
    |ИЗ
    |   Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа
    |ГДЕ
    |   ПрофилиГруппДоступа.Наименование = &Наименование И
    |   ПрофилиГруппДоступа.Предустановленный = ИСТИНА");
Запрос.УстановитьПараметр("Наименование", НаименованиеПрофиля);

// Если элемента нет, только тогда нужно создать новый.
Если Запрос.Выполнить().Пустой() Тогда
    ПрофильОбъект = Справочники.ПрофилиГруппДоступа.СоздатьЭлемент();
    ПрофильОбъект.Наименование = НаименованиеПрофиля;
    ПрофильОбъект.Предустановленный = Истина;
    ПрофильОбъект.Записать();
КонецЕсли;
Источник

https://its.1c.ru/db/v8std#content:556