#0
by vladimir80
Всем привет! В УНФ есть механизм динамического формирования цен в зависимости от статического, опорного типа цен. Весь механизм по сути - замена строки идентификатора типа цен на значение цены и вычисление методом Вычислить.... К сожалению, в нашем случае это не сильно удобно, т.к. существуют несколько статических типов цен (пример - Закупочная и РекомендованнаяЗаводом), и в зависимости от этих цен нужно формировать ту или иную цену по типу Собственно вопрос - можно ли как-то оформить обработку такого кода, если да, то с помощью каких методов встроенного языка...
#1
by AlvlSpb
Поясните задачу. Вам нужно формирование прайс листа или установка цен в документах? Т.е. оформляем приходную и в нее подтягиваются либо Рекомендованное заводом (при наличии) либо Закупочная (нет рекомендованных)
#2
by vladimir80
Формирование прайс-листа. Если быть совсем точным, то изменение процедуры ЦенообразованиеФормулыСервер.РасчетДанныхПоФормуле
#3
by AlvlSpb
Еще одно уточнение. Вы хотите, чтобы в прайс выводились разные цены? Т.е. при наличии рекомендованных заводом - они, если таковых нет - закупочная*1,35. Правильно понял?
#5
by vladimir80
Возможно Вы незнакомы с механизмом ценообразования в УНФ. Там не вывод в прайс, а именно формирование цен для динамического типа цены по формуле от опорного статического. Версия последняя, 1.6.9.36 (!), 10 еще нет...
#7
by AlvlSpb
))) есть есть, тестовая. Но это другой вопрос. Вы не ответили. Вернее ответили, что опять непонятно. С УНФ работаю с 2012-го, поэтому уточняю: Динамическая цена вам нужна для предоставления прайс-листа покупателям или для подстановки в документы продажи?
#8
by vladimir80
По сути вопроса - да, =0, больше, меньше и т.п. Условия чисто математические. Наверное можно распарсить конструкцию, или заключить условную конструкцию в спецсимволы и проверять истинность, а значения после Тогда и Иначе обрабатывать через Вычислить... Динамическая цена нужна для подставновки в документы, выгрузки на сайт, и еще много где. Наверное я просто не понимаю цели вопроса. По сути хочу получить тип цен "Розничная".
#9
by AlvlSpb
Не поймите неправильно, это не занудство. Разные подходы возможны. Для формирования прайса, наверное, придется вносить изменения в общий модуль (то что вы написали), а если для документа, то проще расширением не формировать, а выбирать цену из регистра сведений
#11
by vladimir80
Работаю через расширения, поэтому изменения меня не беспокоят. Я понял что есть смысл в вопросе. Но мне нужно получать цены в РС ЦеныНоменклатуры. Сразу нет, мне придется открыть тогда и язык 1с для людей, которые в экселе неспособны формулу написать, да и конструкции с иначеесли превратят ? в такую кашу, что разобрать ее визуально будет практически невозможно
#14
by vladimir80
Это понятно, что за неимением служанки сойдет и дворецкий. Если обработать "Если" из 1с нельзя, напишу парсер выражения и сделаю красиво. Вопрос в том, что возможно кто-то решал уже подобную задачу, или имеет взгляд на решение, отличный от моего, в общем то поэтому и вопрос. В итоге хочется получить решение, доступное пользователю, а не костыль. На сложных условиях, как по мне, будет некрасиво.
#15
by AlvlSpb
В документ вставить несложно. В ПриСозданииНаСервере делаете Запрос к РС ЦеныНоменклатурыСрезПоследних Выбираете актуальные цены РекомендованныеЗаводом и Закупочные, а в выборке условие Если ЗначениеЗаполнено(Рекомендованные) Тогда Выборка.Рекомендованные Иначе Выборка.Закупочные*1,35 А вот с прайсом, что-то первоначальная моя мысль не сработает. Там расчет по всем введенным товарам. Надо подумать
#17
by vladimir80
написать в коде процедуры несложно... Сложно задать кучу разносторонних условий, вводимых пользователем, и обрабатывать это... По склоняюсь к мысли парсить все в некий массив структур с ключами условие и формула. Если условие дает истину, то отдавать формулу, если нет переходить к следующему условию, если условие пустое (после Иначе), то отдавать последнее условие. По сути все реализуемо, главное правильно распарсить текст условия и добавить проверку на корректность введенных данных...
#18
by vladimir80
Написал, сам не понял... Массив значение элемента массива - структура Ключи структуры - "Условие" (формула строкой, берется между если и тогда) - "Значение" (Формула строкой, берется между тогда и Иначе) Если это последний сегмент, между иначе и конец если, то ключ условия пустой или заведомо истина, значение - формула В цикле массив прогоняем через вычислить условие и если истина - отдаем вычислить значение с прерыванием цикла. Как то так. Если есть мысли как сделать красивее - буду рад выслушать.
#19
by AlvlSpb
Т.е. у вас регулярно меняются цены. Не проще тогда просто использовать минусовые процентные скидки от какой-то базовой цены (та же формула, установленная вручную), а чтобы не нервировать клиента просто переделать печатную форму, чтобы выводилась только цена уже со скидкой
#20
by vladimir80
Ну и цены регулярно меняются, и цены поставщиков могут отличаться, и еще есть условие на ~15% ассортимента в виде РекЦены, ниже которой показывать нельзя. Печатные формы меня сильно не интересуют, основной упор на интернет-магазины. РекЦены могут формироваться ооочень своеобразно, т.е. % скидки/наценки от дилерской цены это реализовать невозможно. Поэтому и пришла мысль сделать более вариативным ценообразование. На самом деле механизм интересный, но кастрированный, уже допилил ТЧ в вид цены, для установки фиксированных цен, отдельных формул скидок по ценовым группам и т.п.
#21
by AlvlSpb
Тогда опять как вариант. В расширении в форму ввести поле куда менеджер вводит формулу, а уже в документе во всех или только выделенных строках установленная рекомендованная цена пересчитывается по этой формуле
#22
by vladimir80
Как вариант, да. Но на практике - костыль. 1 - неизвестно, в скольких местах придется внести эту формулу 2 - При изменении формулы будет невозможно отследить историю цен В любом случае спасибо за варианты, интересно обдумать со всех сторон.
#23
by vladimir80
Вот что придумалось, криво конечно, буду рад советам по улучшению и упрощению... Получив массив делаем цикл по нему, и если условие верно то передаем формулу. Последнее условие всегда верное. Код должен быть в формате, указанном в
#24
by МимохожийОднако
Может быть, посмотреть в сторону видов расчета в ЗУП и регистров расчета? Смешно, конечно. Но там есть формулы
#26
by vladimir80
&НаСервере &Вместо("РасчетДанныхПоФормуле") Процедура Расш1_РасчетДанныхПоФормуле(Знач ФормулаСтрокой, СтруктураОперандов, РасчетныеДанные = Неопределено, ОкруглятьВБольшуюСторону = Неопределено, ПравилоОкругления = Неопределено) Экспорт ....... Для каждого Операнд Из СтруктураОперандов Цикл
#27
by vladimir80
Работает. Если кто-нибудь захочет упростить, добавить проверку синтаксиса или сделает красиво обход различного регистра идентификатора формул и слов конструкций - пишите!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Формула контроля цены в накладных на отгрузку (1С Предприятие 7.7; ТиС релиз 7.7
- ЗУП 2.5 Произвольная формула в начислениях
- Ограничения прав доступа на уровне записей для УНФ нет? Кто с УНФ дело имел?
- 2 Конвертация УНФ - УНФ Не перегружаются связи "На основании"
- УПП(произвольная формула расчета)
- Переход с обмена УНФ 1.4 -> БП 2.0 на УНФ 1.5 -> БП 3.0
В этой группе 1С
- БП 2.0 Автоматическое заполнение статьи ДДС в Поступлении на расчетный счет
- БП счет-фактура на аванс, если 1 поступление на р/с с несколькими договорами
- Не отправляется почта через сервер. CDO.Message
- v7: ЗиК не рассчитывает страховые взносы на компенсацию при увольнении
- УФ. Дерево. ЗначениеВРеквизитФормы.
- ЗУП 2.5 Расчеты по страховым взносам
- Расчет суммы экологического сбора
- Почему неправильно считается конечный остаток
- ОКВЭ в ЗУП? Как загрузить?
- Конвертация данных: перенос документа в почти идентичную конфигурацию
- УФ. Как сбросить программно поиск, установленный по CTRL+F (или ALT+F) ?
- УТ обновление до 11.2.2.116 с 11.1.199 результат обновления [демоны самоликвидировались]
- 1С Розница 2.2.5. Как сделать вскрытие тары бутылки водки и продать её в разлив?
- v7: Выгрузка СЗВ М
- подарочные сертификаты в УТ 11.3
- как программно выбрать несколько элементов справочника
- v7: Проблема с Formex и ВыполнитьПроцедуру()
- ИТС проверка
- PCI-E видеокарта с LVDS выходом?
- Перенос остатков по складам из БП 3.0 в УТ 11.3