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

#std784

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

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

Например, при начальном заполнении информационной базы данными из макета, автогенерации комментария к проводке или определении значения параметра ИмяСобытия метода ЗаписьЖурналаРегистрации.

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

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

Неправильно:

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

Правильно:

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

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

При использовании в конфигурации Библиотеки стандартных подсистем для получения кода языка для хранения данных следует использовать функцию КодОсновногоЯзыка общего модуля ОбщегоНазначения.

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

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

Правильно:

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

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

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

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

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