Найти в Дзене

## Цель

## Цель Добавить новое пользовательское поле «ТехническиеХарактеристики» в обмен между 1С и БУС (Bitrix) через расширение конфигурации: * поле должно появиться в списке стандартных полей в настройке обмена; * поле должно присутствовать в XDTO-описании товара (XSD-схеме); * значение поля будет задаваться через «Свой алгоритм» в профиле обмена. --- ## Предварительные условия * У тебя уже есть расширение для конфигурации (не работаем в основной конфе, только через расширение). * Модуль обмена с БУС уже настроен и рабочий. * Ты умеешь: * открывать конфигуратор; * открывать объекты расширения (справочники, формы, общие модули); * выгружать / редактировать XSD-схему XDTO. --- ## Шаг 1. Открыть расширение и найти нужную форму 1. Открываем Конфигуратор. 2. Открываем расширение, в котором дорабатываем обмен. 3. В дереве объектов расширения находим справочник: `Справочник.БУС_НастройкиОбмена` 4. В справочнике находим форму: `Форма "НастройкаВыгрузкиИнформацииОНоменклатуре"` 5. Открываем

## Цель

Добавить новое пользовательское поле «ТехническиеХарактеристики» в обмен между 1С и БУС (Bitrix) через расширение конфигурации:

* поле должно появиться в списке стандартных полей в настройке обмена;

* поле должно присутствовать в XDTO-описании товара (XSD-схеме);

* значение поля будет задаваться через «Свой алгоритм» в профиле обмена.

---

## Предварительные условия

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

* Модуль обмена с БУС уже настроен и рабочий.

* Ты умеешь:

* открывать конфигуратор;

* открывать объекты расширения (справочники, формы, общие модули);

* выгружать / редактировать XSD-схему XDTO.

---

## Шаг 1. Открыть расширение и найти нужную форму

1. Открываем Конфигуратор.

2. Открываем расширение, в котором дорабатываем обмен.

3. В дереве объектов расширения находим справочник:

`Справочник.БУС_НастройкиОбмена`

4. В справочнике находим форму:

`Форма "НастройкаВыгрузкиИнформацииОНоменклатуре"`

5. Открываем модуль формы.

---

## Шаг 2. Добавить новое поле в список стандартных полей

В модуле формы ищем функцию:

Функция ПолучитьТаблицуПолейОсновныхСоответствийНоменклатурыПоУмолчанию(ЗаполнитьСразу = Ложь)

Внутри неё есть блок, где формируется массив стандартных полей:

спкПолей = Новый Массив;

спкПолей.Добавить("Артикул");

спкПолей.Добавить("Наименование");

спкПолей.Добавить("Описание");

спкПолей.Добавить("Страна");

спкПолей.Добавить("Вес");

спкПолей.Добавить("Штрихкод");

спкПолей.Добавить("Высота");

спкПолей.Добавить("Ширина");

спкПолей.Добавить("Длина");

Добавляем своё поле в этот массив:

// Добавляем свое поле

спкПолей.Добавить("ТехническиеХарактеристики");

> После этого наше поле появляется в общем списке доступных стандартных полей в настройке соответствий.

---

## Шаг 3. Описать поведение поля («Свой алгоритм») в функции

Чуть ниже в этой же функции есть цикл по спкПолей, где для каждого поля заполняются свойства строки (например, как заполняется НаименованиеПоля1С, тип поля и т.п.).

В этот блок добавляем обработку нашего нового поля. Пример:

// -------------------------------------------------------

// --------------- Новые поля в обмен 1С -----------------

// -------------------------------------------------------

ИначеЕсли ТекЭлемент = "ТехническиеХарактеристики" Тогда

НоваяСтрока.НаименованиеПоля1С = "<Свой алгоритм>";

КонецЕсли;

Смысл:

* ТекЭлемент — это имя поля из массива спкПолей.

* Для "ТехническиеХарактеристики" мы специально ставим

НоваяСтрока.НаименованиеПоля1С = "<Свой алгоритм>";

* Это значит, что значение будет задаваться в профиле обмена вручную через конструктор алгоритма, без жёсткой привязки к одному конкретному реквизиту.

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

---

## Шаг 4. Инициализация поля в XDTO-структуре товара на сервере

Теперь нужно, чтобы в XDTO-представлении товара тоже появилось поле ТехническиеХарактеристики.

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

`ОбщийМодуль.БУС_ВыгрузкаСервер`.

2. Открываем модуль и ищем место, где создаётся XDTO-объект товара.

Пример фрагмента:

ТоварXDTO = СтруктураНастроек.МояФабрикаXDTO.Создать(ТипТовар);

ТоварXDTO.Ид = XMLСтрока(ВыборкаТовара.Идентификатор);

ТоварXDTO.НомерВерсии = XMLСтрока(ВыборкаТовара.ВерсияДанных);

ТоварXDTO.ПометкаУдаления = XMLСтрока(ВыборкаТовара.ПометкаУдаления);

Добавляем инициализацию нашего свойства:

ТоварXDTO.ТехническиеХарактеристики = XMLСтрока("");

Почему пустая строка?

* Потому что в настройке поля мы используем «Свой алгоритм».

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

* Если логика обмена уже умеет подставлять значения для полей со «Своим алгоритмом», поле будет корректно заполняться при формировании XML.

---