Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1. Автогенерируемые строки, которые программно записываются в информационную базу и выводятся пользователям, необходимо формировать не на языке текущего пользователя, а на языке информационной базы.
Например, при начальном заполнении информационной базы данными из макета, автогенерации комментария к проводке или определении значения параметра ИмяСобытия метода ЗаписьЖурналаРегистрации.
В противном случае, если документ провел пользователь с русскоязычным интерфейсом, а затем тот же документ перепровел пользователь с англоязычным интерфейсом, то содержание записей регистра бухгалтерии станет другим (что ошибочно).
Такие места в коде рекомендуется сопровождать комментарием, поясняющим, что строка является данными, а не интерфейсным текстом:
Неправильно:
Комментарий = НСтр("ru = 'Комментарий к проводке'");
Правильно:
Комментарий = НСтр("ru = 'Комментарий к проводке'", КодОсновногоЯзыка); // строка записывается в ИБ
Где КодОсновногоЯзыка – код языка хранения данных в информационной базе, выбранный в момент первого запуска программы из языков интерфейса конфигурации и сохраненный в константе ОсновнойЯзык.
При использовании в конфигурации Библиотеки стандартных подсистем для получения кода языка для хранения данных следует использовать функцию КодОсновногоЯзыка общего модуля ОбщегоНазначения.
Комментарий = НСтр("ru = 'Комментарий к проводке'", ОбщегоНазначения.КодОсновногоЯзыка()); // строка записывается в ИБ
2. Аналогичные требования распространяются и на обработчики начального заполнения заполняющих строковые реквизиты предопределенных элементов справочников, ПВХ и т.п.
Правильно:
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт Обработчик = Обработчики.Добавить(); Обработчик.НачальноеЗаполнение = Истина; Обработчик.Процедура = "ПользователиСлужебный.ЗаполнитьНаименованиеПредопределенныхГруппПользователей"; КонецПроцедуры Процедура ЗаполнитьНаименованиеПредопределенныхГруппПользователей() Экспорт ГруппаПользователей = Справочники.ГруппыПользователей.ВсеПользователи.ПолучитьОбъект(); ГруппаПользователей.Наименование = НСтр("ru='Все пользователи'", КодОсновногоЯзыка); ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ГруппаПользователей); КонецПроцедуры
При добавлении новых предопределенных элементов, необходимо создать новый обработчик начального заполнения с указанием версии или дополнить существующий. См. также стандарт Обработчики обновления информационной базы.
При использовании в конфигурации Библиотеки стандартных подсистем не следует создавать собственные обработчики начального заполнения. Первоначальные данные заполнения нужно размещать в модуле менеджера объекта в процедуре ПриНачальномЗаполненииЭлементов. Тогда для объектов, зарегистрированных в процедуре ПриОпределенииНастроек общего модуля ОбновлениеИнформационнойБазыПереопределяемый, эти процедуры будут вызваны автоматически.
При добавлении нового или изменении существующего элемента следует создать собственный обработчик обновления перехода на версию и продублировать изменения в процедуре ПриНачальномЗаполненииЭлементов модуля менеджера объекта. Подробнее см. документацию к БСП.