Хитрый вопрос по КД 2.1 - конвертировать справочник в число
Как можно сделать правило по конвертации из справочника в число? Наоборот делал, а вот так - не соображу как.
Суть - хочу конвертировать единицу измерения в ее коэффициент (в источнике часто в доках нет явно коэффициента, а в приемнике - есть). Отдельным правилом - потому что можно было бы в нем реализовать кэширование и везде использовать не заморачиваясь на копипаст.
Суть - хочу конвертировать единицу измерения в ее коэффициент (в источнике часто в доках нет явно коэффициента, а в приемнике - есть). Отдельным правилом - потому что можно было бы в нем реализовать кэширование и везде использовать не заморачиваясь на копипаст.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Раз
Ссылка будет кэшироваться самим механизмом КД. Обращение к базе будет выполняться только в случае когда выгружаемая ед. изм. не найдена в кэше.
(в источнике часто в доках нет явно коэффициента, а в приемнике - есть)
, значит коэффициент можно определить только в приемнике. Стало быть достаточно выгрузить ссылку на единицу измерения, в приемнике если единица найдена, то брать коэффициент из нее, а если нет, то подставлять значение по умолчанию.
Ссылка будет кэшироваться самим механизмом КД. Обращение к базе будет выполняться только в случае когда выгружаемая ед. изм. не найдена в кэше.
(6) Как еще объяснить? Я знаю как решить проблему кучей способов. В том числе и этим. Но вот смотри - обращение через точку это запрос к СУБД. Запрос в цикле. Куча запросов.
А в ПКО я мог бы кэшировать уже полученные коэффициенты через параметры конвертации. И хотя бы по тем же самым единицам СУБД не дергалось бы.
Я могу конечно нужный код скопипастить в каждое ПКС, но это же не комильфо, верно? Ну, можно через алгоритмы решить, конечно. Но через ПКО было бы красивше.
А в ПКО я мог бы кэшировать уже полученные коэффициенты через параметры конвертации. И хотя бы по тем же самым единицам СУБД не дергалось бы.
Я могу конечно нужный код скопипастить в каждое ПКС, но это же не комильфо, верно? Ну, можно через алгоритмы решить, конечно. Но через ПКО было бы красивше.
(8) Блин, точно! Не до конца справку дочитал. Сейчас попробую, но должно проканать:
Приемник - Строка. Строковое представление объекта приемника. Может использоваться для тех правил, у ктоторых приемник является значением примитивного типа (Строка, Число, Булево, Дата) или если при помощи правила предполагается идентифицировать по имени предопреденные значения какого-либо ссылочного типа.
Приемник - Строка. Строковое представление объекта приемника. Может использоваться для тех правил, у ктоторых приемник является значением примитивного типа (Строка, Число, Булево, Дата) или если при помощи правила предполагается идентифицировать по имени предопреденные значения какого-либо ссылочного типа.
Создан ПКО КлассификаторЕдиницИзмеренияЧисло
Источник: СправочникСсылка.КлассификаторЕдиницИзмерения
Приемник: Число
Одно ПКС.источник: Код. В свойстве ПриВыгрузке написан код: Значение = Число(Источник.Код);
Для теста в ПКО Поступление товаров услуг сделан ПКС
источник ЕдиницаИзмерения
приемник Сумма
ПКО указан КлассификаторЕдиницИзмеренияЧисло
Всё работает.
Источник: СправочникСсылка.КлассификаторЕдиницИзмерения
Приемник: Число
Одно ПКС.источник: Код. В свойстве ПриВыгрузке написан код: Значение = Число(Источник.Код);
Для теста в ПКО Поступление товаров услуг сделан ПКС
источник ЕдиницаИзмерения
приемник Сумма
ПКО указан КлассификаторЕдиницИзмеренияЧисло
Всё работает.
(14) Хм... До такого я бы не догадался. Какая-то неочевидная логика. ПКС без приемника конвертится в сам объект? А если несколько таких ПКС будет? Одни вопросы. Не люблю магию. Ну, попробую при случае. Переделывать уже не буду - и так хорошо получилось. В плане оптимизации - даже лучше.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот