|
Получение скидки в УТ 11.2 | ☑ | ||
---|---|---|---|---|
0
Sam1C
13.06.18
✎
13:05
|
Чтобы не изобретать велосипед в УТ 11.2 есть какая типовая функция получения Скидки имея параметры Номенклатура и Соглашение ?
Есть Соглашение по нему два вида скидки: 1) 3% - Номенклатура по отбору1 2) 5% -Номенклатура по отбору2 Нужно узнать "Товар А" в какой из этих 2-х отборов попадает и определить скидку (3,5 или нет вообще) Может есть какая функция в общем модуле (желательно с флагом Внешнее соединение) ? |
|||
1
Cyberhawk
13.06.18
✎
13:06
|
Вестимо
|
|||
2
Sam1C
13.06.18
✎
13:11
|
(1) А имя функции?
|
|||
3
Cyberhawk
13.06.18
✎
13:23
|
Так ты когда подбор в таблицу формы документа делаешь, у тебя оно как себя ведет?
|
|||
4
Sam1C
13.06.18
✎
14:46
|
(3) я не делаю (слабоват в УТ 11), я с внешней базы к УТ подключаюсь, чтобы не анализировать тонны кода спрашиваю у спецов тут, но походу придется анализировать...
|
|||
5
Cyberhawk
13.06.18
✎
14:49
|
Если цель - получить такое же значение скидки, которое подставляется при интерактивном создании документа, то без анализа никак нельзя
|
|||
6
ildary
13.06.18
✎
14:52
|
(4) вы хотите, чтобы мы проанализировали тонны кода за вас?
|
|||
7
Sam1C
13.06.18
✎
14:56
|
(6) Нет, может кто-то уже знает
|
|||
8
novichok79
13.06.18
✎
15:16
|
СтруктураПараметры = Новый Структура;
СтруктураПараметры.Вставить("ПрименятьКОбъекту", Истина); СтруктураПараметры.Вставить("ТолькоПредварительныйРасчет", Ложь); СтруктураПараметры.Вставить("ВосстанавливатьУправляемыеСкидки", Истина); СтруктураПараметры.Вставить("УправляемыеСкидки", УправляемыеСкидки); ПримененныеСкидки = СкидкиНаценкиСервер.Рассчитать(Объект, СтруктураПараметры); типа так? |
|||
9
Sam1C
13.06.18
✎
15:26
|
(8) да, но тут нету параметра соглашение, сам смотрю эту функцию сейчас, пока еще не разобрался подходит она мне или нет
|
|||
10
novichok79
13.06.18
✎
15:29
|
(9) см при изменении соглашения() тогда
|
|||
11
Sam1C
13.06.18
✎
16:45
|
Ничего подходящего не нашел, в примере (8) расчет идет по видам документов т.е. в Объект нужно передавать документ, а от его вида вызываются различные расчеты по виду.
Мне из внешней базы придется либо делать свой запрос, либо попробовать подставить в параметр Объект не ссылка на документ, свою структуру с полями которые используется в типовых алгоритмах(в функцию РассчитатьПоЗаказуКлиента). |
|||
12
Sam1C
13.06.18
✎
16:45
|
(1) так что "Не Вестимо"
|
|||
13
Cyberhawk
13.06.18
✎
16:51
|
(12) Как же по-твоему происходит (3)? Отбрасыватель из тебя не вышел
|
|||
14
novichok79
13.06.18
✎
16:52
|
(11) а если структуру передать в качестве объекта с необходимыми полями?
|
|||
15
novichok79
13.06.18
✎
16:53
|
(11) свои запросы писать чревато в новых типовых, структура метаданных частенько меняется.
|
|||
16
Sam1C
13.06.18
✎
18:25
|
(14) ну я в (11) и писал как 2-ой способ
...либо попробовать подставить в параметр Объект не ссылка на документ, свою структуру с полями которые используется в типовых.. буду пробовать через структуру |
|||
17
Sam1C
13.06.18
✎
18:51
|
(13) Для решения (0) типового функционала не обнаружено, поэтому (12).
Происходит расчет по всему документу РассчитатьПоЗаказуКлиента(Объект,...) и так далее функции по другим видам документа, где Объект – ссылка на документ. Мне надо отдельно по конкретной Номенклатуре получить из другой базы. По типовому вариант только в параметр Объект подставить Структуру с полями которые использует функция. Но опять-таки надо штудировать код и смотреть какие поля используются создавать в полях имитации ТЧ документа и т. п. В эту функцию пихать много не нужного, что скажется и на производительности |
|||
18
Cyberhawk
13.06.18
✎
19:19
|
(17) "Происходит расчет по всему документу РассчитатьПоЗаказуКлиента" // Ну, молодец, Я в (3) об этом как бы и намекал. Догадываешься, что твоя задача в текущей постановке не имеет однозначного решения?
|
|||
19
Sam1C
14.06.18
✎
16:05
|
Решение сделал следующие по пути наименьшего сопротивление, может кому пригодится. Так как в функцию РассчитатьПоЗаказуКлиента(Объект,...) в параметр Объект нужно передавать не Ссылку, а объект документа, передаю новый временный документ:
Процедура РассчитатьСУчетомСкидок(пПериод,пДоговор,птзТовары) Если мСоответствиеСоглашений[пДоговор] = Неопределено Тогда Возврат; КонецЕсли; ВременныйДокумент = мВнешниеСоеденение.Документы.ЗаказКлиента.СоздатьДокумент(); ВременныйДокумент.Дата = пПериод; ВременныйДокумент.Соглашение = мСоответствиеСоглашений[пДоговор]; ВременныйДокумент.Валюта = мВнешниеСоеденение.Константы.ВалютаРегламентированногоУчета.Получить(); ВременныйДокумент.Товары.Загрузить(птзТовары); ПримененныеСкидки = мВнешниеСоеденение.СкидкиНаценкиСервер.Рассчитать(ВременныйДокумент, мСтруктураПараметры); ТаблицаСкидок = ПримененныеСкидки.ТаблицаСкидкиНаценки; Для Каждого СтрокаСкидок ИЗ ТаблицаСкидок Цикл КлючСвязи = СтрокаСкидок.КлючСвязи; Если СтрокаСкидок.Сумма = 0 Тогда Продолжить; КонецЕсли; СтрокаВТоварах = птзТовары.Get(КлючСвязи - 1); Если СтрокаВТоварах.Цена = NULL Тогда СтрокаВТоварах.Цена = 0; Иначе СтрокаВТоварах.Цена = СтрокаВТоварах.Цена - СтрокаСкидок.Сумма; КонецЕсли; КонецЦикла; КонецПроцедуры В параметр "птзТовары" передаю COM ТаблицуЗначений с нужной мне Номенклатурой, Видом цен и ценой без скидки |
|||
20
Sam1C
14.06.18
✎
16:10
|
(19) Еще есть вариант более сложный, но наверно производительней, получить текст запроса с параметры отбора по номенклатуре по соответствующему элементу справочника СкидкиНаценки. И динамически создать свой запрос:
СтруктураЗапроса = мВнешниеСоеденение.СкидкиНаценкиСервер.ДанныеФильтраПоНоменклатуре(СкидкаСсылка,"ВременТаблицаТоваров"); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |