Возникла необходимость сделать пользовательский тип свойства для службы доставки, как описано здесь https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=7350&LESSO... (для свойств службы доставки используются те же классы, что и для свойств заказа) Проблема возникла с попыткой сделать множественное (MULTIPLE) свойство пользовательского типа. Похоже, классы, которые готовят данные для записи значений этих свойств в БД в поле CONFIG, а потом читают их из него и готовят их для представления в виде элементов формы, не рассчитаны на множественные свойства. Ну, т.е. такой случай, вроде обрабатывается алгоритмами этих классов, но правильно прочитать и обработать конфиг с данными, который сами же записали, они не могут. Встречался ли кто-то с этим и так ли это или я что-то не так делаю и стоит разобраться глубже? Может, кто-то видел службы доставки с множественными свойствами пользовательского типа? В принципе, можно плюнуть на подготовленный на странице редактирования службы доставки конфиг и в getEditHtml класса типа свойства самому прочитать из БД сохраненные значения свойства, к чему и склоняюсь, но, может, более цивилизованное решение таки существует.
В смысле для записи в поле CONFIG в БД? Это понятно. Потом, когда надо вытащить сохраненные значения и склеить их со структурой конфига - разобрался - метод Bitrix\Sale\Delivery\Services\Base::glueValuesToConfig не может приклеить их к структуре для кастомных типов множественных. Для простых множественных типа String умеет, а для более сложных, например, встроенного кастомного Period, если сделать его множественным, уже не умеет.
Переопределил этот метод в обработчике, чтобы он умел склеивать данные со структурой посложнее, + getEditHtml +getEditHtmlSingle пришлось поправить, осталось с js разобраться, т.к. кнопочка Добавить ведет себя неадекватно.