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