Программирование насколько творческая, настолько же монотонная профессия. Из проекта в проект, вам порой приходится клепать похожий код. Держать все полезности в уме, когда ты параллельно и программист и бизнесмен и логист, очень сложно.
Потому я решил сделать небольшой пост шпаргалку в который буду добавлять небольшие лайфхаки которые упрощают написание кода 1с.
- Получение свойства дополнительного реквизита
Получение свойства дополнительного реквизита.
Часто при разработке различного функционала я прибегаю, к дополнительным реквизитам, которые имеются в практически любой типовой конфигурации. В таком случае отпадает надобность снятие конфигурации с поддержки. Раз реквизи добавили, значит мы должны иметь возможность получать его свойство. Раньше я это делал запросом к Плану Виду Характеристик ДополнительныеРеквизиты, пока не узнал, что в БСП есть прекрасная функция, которая в разы облегчает получение свойства. Находится она в общем модуле УправлениеСвойствами. И имеет следуюший код
<code>
// Возвращает значение дополнительного свойства объекта.
//
// Параметры:
// Объект - ЛюбаяСсылка - ссылка на объект, например, СправочникСсылка.Номенклатура,
// ДокументСсылка.ЗаказПокупателя, ...
// Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - ссылка на
// дополнительный реквизит, значение которого нужно получить.
// - Строка - Имя дополнительного свойства.
//
// Возвращаемое значение:
// Произвольный - любое значение, допустимое для свойства.
//
Функция ЗначениеСвойства(Объект, Свойство) Экспорт
ПолучатьРеквизиты = УправлениеСвойствамиСлужебный.ЭтоОбъектМетаданныхСДополнительнымиРеквизитами(Объект.Метаданные());
Результат = ЗначенияСвойств(Объект, ПолучатьРеквизиты, Истина, Свойство);
Если Результат.Количество() = 1 Тогда
Возврат Результат[0].Значение;
КонецЕсли;
КонецФункции</code>
Что примечательно, вместо второго параметра Свойство, можно использовать автоматически генерируемое имя дополнительных реквизитов для разработчиков.
Выглядит это примерно так
<code> УправлениеСвойствами.ЗначениеСвойства(Контрагент, "ЭлектронныйКлиент_223dae2ed1d5417984af802e539403e9")</code>