По теме из базы знаний
- Расширение "Курсы валют в формулах расчета динамических цен" для УНФ 1.6
- Интеграция 1С с маркетплейсами Ozon и Wildberries для УТ10.3, КА 1.1, УПП 1.3
- Интеграции с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода для 1С:УНФ, УТ, КА, ERP
- Обмен 1С с Честным Знаком для УТ11, УНФ, КА2, ERP, Розница: Расширение для работы с СУЗ, ГИС МТ, ЦРПТ
- API-интеграция 1С с маркетплейсами ОЗОН, WildBerries, Я.Маркет, СберМегаМаркет, Стройландия, Леруа Мерлен, Hoff, AliExpress для УТ11, КА2, ERP2, УНФ, БП3, Розница, УТ10, УПП1.3
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) в УНФ и так только "базовая единица измерения номенклатуры" , все остальное это "миф" , так называемые "несколько единиц номенклатуры" , это только вариант выбора! В любом случае все подборы цен шагают от базовой единицы измерения.! Все остальное коэффициент пересчета!
Вариант только один - перепахивать механизм ценообразования
Вариант только один - перепахивать механизм ценообразования
Думаю, что коллеги меня поправят, если я не прав, но насколько я знаю в УНФ нет установки цен произвольным запросом, как, например, в УТ, поэтому вариантов немного.
1) Создать отдельный статический вид, установить на него каждую номенклатуру (в зависимости от базовой единицы) ту цену, которая нужна, а потом создать отдельный расчетный вид цен и с его помощью установить всей номенклатуре по нужной формуле, основываясь на том статическом виде цен.
2) Серьезно дорабатывать конфигурацию.
1) Создать отдельный статический вид, установить на него каждую номенклатуру (в зависимости от базовой единицы) ту цену, которая нужна, а потом создать отдельный расчетный вид цен и с его помощью установить всей номенклатуре по нужной формуле, основываясь на том статическом виде цен.
2) Серьезно дорабатывать конфигурацию.
(4)
Да вы попробуйте гибкий механизм.
Возьмите приходной док на строчек 25
Запишите его.потом строчку или две поменяйте местами и проведите
И дальше чудеса
На основании его *установка цен-строчки могут идти как угодно , но не как в документе основания
Вобщем с ценами и формулами в унф крупный облом от ожиданий.
Да вы попробуйте гибкий механизм.
Возьмите приходной док на строчек 25
Запишите его.потом строчку или две поменяйте местами и проведите
И дальше чудеса
На основании его *установка цен-строчки могут идти как угодно , но не как в документе основания
Вобщем с ценами и формулами в унф крупный облом от ожиданий.
Не знаю, как у вас конфигурация приобретена и где используется, но унф установка цен....даже трудно ее назвать так. Хорошо , что перешли на Розницу после месяца работы в унф. О чем нисколько не жалею.Да, по цене унф можно и ут взять, но хватает Розницы.
В вашем случае *напильник не поможет.
Доработка или ....
В вашем случае *напильник не поможет.
Доработка или ....
Типовыми средствами Вашу задачу никак не решить.
В УНФ в алгоритме работы с формулами можно использовать только те данные, которые есть в конструкторе формул, а это суть только числа.
Однако! Чтоб решить Вашу задачу не нужно сколь-нибудь серьезно дорабатывать конфигурацию.
Достаточно небольших изменений, очень скромной адаптации.
Весь расчет происходить в общем модуле ЦенообразованиеФормулыСервер.
Достаточно внести небольшие изменения в процедуру РасчетДанныхПоФормуле.
Там всё очень понятно и прозрачно написано. В параметр РасчетныеДанные этой процедуры приходит структура, одно из полей которой и есть единица измерения. Т.е. можно это использовать в условии.
УНФ имеет много недостатков, но есть у нее серьезное достоинство - простота кастомизации.
В УНФ в алгоритме работы с формулами можно использовать только те данные, которые есть в конструкторе формул, а это суть только числа.
Однако! Чтоб решить Вашу задачу не нужно сколь-нибудь серьезно дорабатывать конфигурацию.
Достаточно небольших изменений, очень скромной адаптации.
Весь расчет происходить в общем модуле ЦенообразованиеФормулыСервер.
Достаточно внести небольшие изменения в процедуру РасчетДанныхПоФормуле.
Там всё очень понятно и прозрачно написано. В параметр РасчетныеДанные этой процедуры приходит структура, одно из полей которой и есть единица измерения. Т.е. можно это использовать в условии.
УНФ имеет много недостатков, но есть у нее серьезное достоинство - простота кастомизации.
(10)
Да не вопрос.
Упражнялся на релизе УНФ 1.6.20.107.
Изменения вносятся в общий модуль ЦенообразованиеФормулыСервер.
Затрагиваем только 1 функция МассивЗарезирвированныхСлов() и только 1 процедура ПодготовитьДанныеСтрокиКоллекции(СоответствиеОперандов, СтрокаКоллекции, ТаблицаОперандов, РасчетныеДанные)
Формулу вводить по аналогии с тем, как показано на рисунке.
Работает.
В довесок здесь же лежит расширение с изменением. Можно прямо его подключить и поиграться.
так помогите человеку
Да не вопрос.
Упражнялся на релизе УНФ 1.6.20.107.
Изменения вносятся в общий модуль ЦенообразованиеФормулыСервер.
Затрагиваем только 1 функция МассивЗарезирвированныхСлов() и только 1 процедура ПодготовитьДанныеСтрокиКоллекции(СоответствиеОперандов, СтрокаКоллекции, ТаблицаОперандов, РасчетныеДанные)
Функция МассивЗарезирвированныхСлов()
МассивЗарезирвированныхОперандов = Новый Массив;
МассивЗарезирвированныхОперандов.Добавить("ТекущееЗначение");
МассивЗарезирвированныхОперандов.Добавить("ПоследняяЦенаВПриходе");
МассивЗарезирвированныхОперандов.Добавить("ПоследняяЦенаВРасходе");
МассивЗарезирвированныхОперандов.Добавить("КурсДоллара");
МассивЗарезирвированныхОперандов.Добавить("КурсЕвро");
МассивЗарезирвированныхОперандов.Добавить("Себестоимость");
МассивЗарезирвированныхОперандов.Добавить("СебестоимостьНацВалюта");
//++
МассивЗарезирвированныхОперандов.Добавить("ЕдиницаИзмерения_Базовая");
//--
Возврат МассивЗарезирвированныхОперандов;
КонецФункции
Процедура ПодготовитьДанныеСтрокиКоллекции(СоответствиеОперандов, СтрокаКоллекции, ТаблицаОперандов, РасчетныеДанные)
Для каждого СтрокаОперанда Из ТаблицаОперандов Цикл
Значение = 0;
ЗначениеКурс = 1;
ЗначениеКратность = 1;
ЗначениеНовыйКурс = 1;
ЗначениеНоваяКратность = 1;
Если СтрокаОперанда.ЭтоЦеныНоменклатуры <> Неопределено Тогда
ИдентификаторФормул = СтрокаОперанда.ВидЦен.ИдентификаторФормул;
Значение = СтрокаКоллекции["Значение_" + ИдентификаторФормул];
ЗначениеКурс = СтрокаКоллекции["Курс_" + ИдентификаторФормул];
ЗначениеКратность = СтрокаКоллекции["Кратность_" + ИдентификаторФормул];
ЗначениеНовыйКурс = РасчетныеДанные.Курс;
ЗначениеНоваяКратность = РасчетныеДанные.Кратность;
КлючЕдиницыИзмерения = "ЕдиницаИзмерения_" + СтрокаОперанда.ВидЦен.ИдентификаторФормул;
ЕдиницаИзмерения = СтрокаКоллекции[КлючЕдиницыИзмерения];
ИначеЕсли СтрокаОперанда.Операнд = "[ПоследняяЦенаВПриходе]" Тогда
Значение = СтрокаКоллекции["Значение_ПоследняяЦенаВПриходе"];
ЗначениеКурс = СтрокаКоллекции["Курс_ПоследняяЦенаВПриходе"];
ЗначениеКратность = СтрокаКоллекции["Кратность_ПоследняяЦенаВПриходе"];
ЗначениеНовыйКурс = РасчетныеДанные.Курс;
ЗначениеНоваяКратность = РасчетныеДанные.Кратность;
КлючЕдиницыИзмерения = "ЕдиницаИзмерения_ПоследняяЦенаВПриходе";
ЕдиницаИзмерения = СтрокаКоллекции["ЕдиницаИзмерения_ПоследняяЦенаВПриходе"];
ИначеЕсли СтрокаОперанда.Операнд = "[ПоследняяЦенаВРасходе]" Тогда
Значение = СтрокаКоллекции["Значение_ПоследняяЦенаВРасходе"];
ЗначениеКурс = СтрокаКоллекции["Курс_ПоследняяЦенаВРасходе"];
ЗначениеКратность = СтрокаКоллекции["Кратность_ПоследняяЦенаВРасходе"];
ЗначениеНовыйКурс = РасчетныеДанные.Курс;
ЗначениеНоваяКратность = РасчетныеДанные.Кратность;
КлючЕдиницыИзмерения = "ЕдиницаИзмерения_ПоследняяЦенаВРасходе";
ЕдиницаИзмерения = СтрокаКоллекции["ЕдиницаИзмерения_ПоследняяЦенаВРасходе"];
ИначеЕсли СтрокаОперанда.Операнд = "[Себестоимость]" Тогда
Значение = СтрокаКоллекции["Значение_Себестоимость"];
ЗначениеКурс = СтрокаКоллекции["Курс_Себестоимость"];
ЗначениеКратность = СтрокаКоллекции["Кратность_Себестоимость"];
ЗначениеНовыйКурс = РасчетныеДанные.Курс;
ЗначениеНоваяКратность = РасчетныеДанные.Кратность;
КлючЕдиницыИзмерения = "ЕдиницаИзмерения_Себестоимость";
ЕдиницаИзмерения = СтрокаКоллекции["ЕдиницаИзмерения_Себестоимость"];
ИначеЕсли СтрокаОперанда.Операнд = "[СебестоимостьНацВалюта]" Тогда
Значение = СтрокаКоллекции["Значение_СебестоимостьНацВалюта"];
КлючЕдиницыИзмерения = "ЕдиницаИзмерения_СебестоимостьНацВалюта";
ЕдиницаИзмерения = СтрокаКоллекции["ЕдиницаИзмерения_СебестоимостьНацВалюта"];
ИначеЕсли СтрокаОперанда.Операнд = "[ТекущееЗначение]" Тогда
Значение = СтрокаКоллекции["ТекущееЗначение"];
КлючЕдиницыИзмерения = "ЕдиницаИзмерения_ТекущееЗначение";
ЕдиницаИзмерения = СтрокаКоллекции.Номенклатура.ЕдиницаИзмерения;
//++
ИначеЕсли СтрокаОперанда.Операнд = "[ЕдиницаИзмерения_Базовая]" Тогда
Значение = """"+СокрЛП(СтрокаКоллекции.Номенклатура.ЕдиницаИзмерения)+"""";
КлючЕдиницыИзмерения = "ЕдиницаИзмерения_ТекущееЗначение";
ЕдиницаИзмерения = СтрокаКоллекции.Номенклатура.ЕдиницаИзмерения;
//--
Иначе
Значение = СтрокаОперанда.Значение;
КлючЕдиницыИзмерения = "ЕдиницаИзмерения_Базовая";
ЕдиницаИзмерения = СтрокаКоллекции.Номенклатура.ЕдиницаИзмерения;
КонецЕсли;
//++
//Если ЗначениеЗаполнено(Значение) Тогда
Если ТипЗнч(Значение)=Тип("Число") И Значение<>0 Тогда
//--
ФорматСтрокиЗначение= "ЧЦ=15; ЧДЦ=3; ЧРД=.; ЧГ=0";
ФорматСтрокиКурс = "ЧЦ=15; ЧДЦ=4; ЧРД=.; ЧГ=0";
Если Число(ЗначениеКурс) = Число(ЗначениеНовыйКурс)
И Число(ЗначениеКратность) = Число(ЗначениеНоваяКратность) Тогда
Значение = Формат(Число(Значение), ФорматСтрокиЗначение);
Иначе
//(Значение * ЗначениеКурса * ЗначениеНовойКратности) / (ЗначениеНовогоКурса * ЗначениеКратность)"
ШаблонРасчетаЗначения = "((%1 * %2 * %3) / (%4 * %5))";
Значение = СтрШаблон(ШаблонРасчетаЗначения,
Формат(Число(Значение), ФорматСтрокиЗначение),
Формат(Число(ЗначениеКурс), ФорматСтрокиКурс),
Формат(Число(ЗначениеНоваяКратность), ФорматСтрокиКурс),
Формат(Число(ЗначениеНовыйКурс), ФорматСтрокиКурс),
Формат(Число(ЗначениеКратность), ФорматСтрокиКурс)
);
КонецЕсли;
Иначе
//++
//Значение = 0;
//--
КонецЕсли;
Если ЗначениеЗаполнено(ЕдиницаИзмерения) Тогда
СоответствиеОперандов.Вставить(КлючЕдиницыИзмерения, ЕдиницаИзмерения);
Если НЕ ЗначениеЗаполнено(СтрокаКоллекции.ЕдиницаИзмерения) Тогда
СтрокаКоллекции.ЕдиницаИзмерения = ЕдиницаИзмерения;
КонецЕсли;
Если СтрокаКоллекции.ЕдиницаИзмерения <> ЕдиницаИзмерения Тогда
Значение = "(" + Значение + " * " + ЦенообразованиеСервер.ПересчетЕдиницИзмерения(ЕдиницаИзмерения, СтрокаКоллекции.ЕдиницаИзмерения, Истина) + ")";
КонецЕсли;
КонецЕсли;
СоответствиеОперандов.Вставить(СтрокаОперанда.Операнд, Значение);
КонецЦикла;
КонецПроцедуры
ПоказатьФормулу вводить по аналогии с тем, как показано на рисунке.
Работает.
В довесок здесь же лежит расширение с изменением. Можно прямо его подключить и поиграться.
Прикрепленные файлы:
спасибо вам.
думаю и вознаграждение вам полагается :)
но я чего-то не хочу возвращаться на унф после розницы :)
сечас вот вспоминаю , как франч мог добавить головной боли,
когда при покупке предлагали вместо УТ купить УНФ (!!!!!)
торговля наше все :)
с бух зуп и т.д. у меня не сложилось :)
думаю и вознаграждение вам полагается :)
но я чего-то не хочу возвращаться на унф после розницы :)
сечас вот вспоминаю , как франч мог добавить головной боли,
когда при покупке предлагали вместо УТ купить УНФ (!!!!!)
торговля наше все :)
с бух зуп и т.д. у меня не сложилось :)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот