#std784

Автогенерированные данные в информационной базе: требования по локализации

1.

Автогенерируемые строки, которые программно записываются в информационную базу и выводятся пользователям, формируйте не на языке текущего пользователя, а на языке информационной базы.

Это относится, например, к:

  • начальному заполнению базы из макета;
  • автогенерации комментария к проводке;
  • определению значения параметра ИмяСобытия метода #std498: ЗаписьЖурналаРегистрации.

Иначе один и тот же объект может получить разные строковые данные при работе пользователей с разными языками интерфейса.

Такие места в коде рекомендуется сопровождать комментарием, что строка является данными, а не интерфейсным текстом.

Неправильно

Комментарий = НСтр("ru = 'Комментарий к проводке'");

Правильно

Комментарий = НСтр("ru = 'Комментарий к проводке'", КодОсновногоЯзыка); // строка записывается в ИБ

КодОсновногоЯзыка это код языка хранения данных в ИБ. Он выбирается при первом запуске из языков интерфейса конфигурации и сохраняется в константе ОсновнойЯзык.

При использовании БСП код языка хранения данных получайте через ОбщегоНазначения.КодОсновногоЯзыка().

Комментарий = НСтр("ru = 'Комментарий к проводке'", ОбщегоНазначения.КодОсновногоЯзыка()); // строка записывается в ИБ
2.

Это же требование действует для обработчиков начального заполнения, которые заполняют строковые реквизиты предопределенных элементов справочников, ПВХ и т.п.

Правильно

Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
    Обработчик = Обработчики.Добавить();
    Обработчик.НачальноеЗаполнение = Истина;
    Обработчик.Процедура = "ПользователиСлужебный.ЗаполнитьНаименованиеПредопределенныхГруппПользователей";
КонецПроцедуры

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

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

Если используется БСП, не создавайте собственные обработчики начального заполнения. Первоначальные данные размещайте в процедуре ПриНачальномЗаполненииЭлементов модуля менеджера объекта. Для объектов, зарегистрированных в ОбновлениеИнформационнойБазыПереопределяемый.ПриОпределенииНастроек, эти процедуры вызываются автоматически.

При добавлении нового или изменении существующего элемента создавайте обработчик обновления перехода на версию и дублируйте изменения в ПриНачальномЗаполненииЭлементов модуля менеджера. Подробнее: документация к БСП.

Проверки

#acc:152 #acc:153 #acc:154 #acc:156 #acc:157 #acc:161 #acc:370 #acc:371 #acc:1385

Источник

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