Хитрый вопрос по КД 2.1 - конвертировать справочник в число

1. herfis 499 08.06.17 11:47 Сейчас в теме
Как можно сделать правило по конвертации из справочника в число? Наоборот делал, а вот так - не соображу как.
Суть - хочу конвертировать единицу измерения в ее коэффициент (в источнике часто в доках нет явно коэффициента, а в приемнике - есть). Отдельным правилом - потому что можно было бы в нем реализовать кэширование и везде использовать не заморачиваясь на копипаст.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Dream_kz 129 08.06.17 11:56 Сейчас в теме
(1) Ну сами то единицы конвертируются? Сделать в приемнике дозаполнение этих коэффициентов из единиц?
19. kasper076 105 09.06.17 08:37 Сейчас в теме
(1) Раз
(в источнике часто в доках нет явно коэффициента, а в приемнике - есть)
, значит коэффициент можно определить только в приемнике. Стало быть достаточно выгрузить ссылку на единицу измерения, в приемнике если единица найдена, то брать коэффициент из нее, а если нет, то подставлять значение по умолчанию.
Ссылка будет кэшироваться самим механизмом КД. Обращение к базе будет выполняться только в случае когда выгружаемая ед. изм. не найдена в кэше.
3. herfis 499 08.06.17 11:58 Сейчас в теме
У меня нет проблемы, которую надо хоть как-то решить. Меня интересует ответ на очень конкретный вопрос.
4. herfis 499 08.06.17 12:00 Сейчас в теме
Можно ли сделать ПКО "Справочник" - "Число". И если да, то как.
5. herfis 499 08.06.17 12:03 Сейчас в теме
Т.е. само ПКО с такой сигнатурой создать не проблема. Но как его заставить число выдавать? ПКС у него ессно нет, а в доступных параметрах обработчиков ничего подходящего не нахожу...
6. pm74 199 08.06.17 12:04 Сейчас в теме
Значение= ОбъектКоллекции.Еденица.Коэффициент ?
kasper076; fst; +2 Ответить
9. herfis 499 08.06.17 12:08 Сейчас в теме
(6) Как еще объяснить? Я знаю как решить проблему кучей способов. В том числе и этим. Но вот смотри - обращение через точку это запрос к СУБД. Запрос в цикле. Куча запросов.
А в ПКО я мог бы кэшировать уже полученные коэффициенты через параметры конвертации. И хотя бы по тем же самым единицам СУБД не дергалось бы.
Я могу конечно нужный код скопипастить в каждое ПКС, но это же не комильфо, верно? Ну, можно через алгоритмы решить, конечно. Но через ПКО было бы красивше.
10. pm74 199 08.06.17 12:10 Сейчас в теме
7. spe1c 5 08.06.17 12:08 Сейчас в теме
В ПередВыгрузкой параметр Приемник не подойдет?
8. Dream_kz 129 08.06.17 12:08 Сейчас в теме
В событии Перед выгрузкой в ПКО определять Приемник
11. herfis 499 08.06.17 12:14 Сейчас в теме
(8) Блин, точно! Не до конца справку дочитал. Сейчас попробую, но должно проканать:
Приемник - Строка. Строковое представление объекта приемника. Может использоваться для тех правил, у ктоторых приемник является значением примитивного типа (Строка, Число, Булево, Дата) или если при помощи правила предполагается идентифицировать по имени предопреденные значения какого-либо ссылочного типа.
12. herfis 499 08.06.17 12:24 Сейчас в теме
Не фурычит почему-то... Небось, какой-то хитрой галки не хватает..
13. herfis 499 08.06.17 12:36 Сейчас в теме
Что-то не выходит каменный цветок. Фиг с ним, сделаю через алгоритмы...
14. KapasMordorov 428 08.06.17 13:41 Сейчас в теме
Создан ПКО КлассификаторЕдиницИзмеренияЧисло
Источник: СправочникСсылка.КлассификаторЕдиницИзмерения
Приемник: Число

Одно ПКС.источник: Код. В свойстве ПриВыгрузке написан код: Значение = Число(Источник.Код);

Для теста в ПКО Поступление товаров услуг сделан ПКС
источник ЕдиницаИзмерения
приемник Сумма
ПКО указан КлассификаторЕдиницИзмеренияЧисло

Всё работает.
16. herfis 499 08.06.17 14:13 Сейчас в теме
(14) Хм... До такого я бы не догадался. Какая-то неочевидная логика. ПКС без приемника конвертится в сам объект? А если несколько таких ПКС будет? Одни вопросы. Не люблю магию. Ну, попробую при случае. Переделывать уже не буду - и так хорошо получилось. В плане оптимизации - даже лучше.
18. KapasMordorov 428 08.06.17 14:30 Сейчас в теме
(16)
Оно еще и кэшируется, вместо значения выгружается "Нпп".
20. herfis 499 12.06.17 16:31 Сейчас в теме
(18) Попробовал для другой задачи сделать как ты описал - не получилось.
15. spe1c 5 08.06.17 14:09 Сейчас в теме
Я одно не понял, а почему вот это из поста №6:
Значение= ОбъектКоллекции.Еденица.Коэффициент ?


нельзя закешировать? Создать кеш в глобальных параметрах и кидать/брать туда/оттуда данные в этом обработчике...
17. herfis 499 08.06.17 14:14 Сейчас в теме
(15) Я так и сделал в итоге. Просто чтобы не копипастить код обработчика (их же много в разных документах) сделал через алгоритмы. Но академический интерес с сабжу остался.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот