Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 14:25

Вычисляемое поле в СКД

Автор Ирина1109, 09 ноя 2015, 23:19

0 Пользователей и 1 гость просматривают эту тему.

Ирина1109

Мне надо сделать поле, которое рассчитывает ндс от суммы продажи.. вот запрос написала (в вычисляемом поле)

ВЫБОР КОГДА СуммаПродажи = 0 ТОГДА 0
ИНАЧЕ СуммаПродажи*(ВЫБОР КОГДА СтавкаНДСЗаказчик =   ЗНАЧЕНИЕ(Перечисление.новаСтавкиНДС.НДС18)             ТОГДА 0.18
ИНАЧЕ 0.1 КОНЕЦ )   КОНЕЦ


В данном запросе прописано только для двух значений НДС, а мне надо прописать для всех (18/118, 10.110, 0, БезНДС)..не получается, помогите пожалуйста...пробую вот так, но не работает


[ВЫБОР КОГДА СуммаПродажи = 0 ТОГДА 0
ИНАЧЕ СуммаПродажи*(
ВЫБОР КОГДА СтавкаНДСЗаказчик =   ЗНАЧЕНИЕ(Перечисление.новаСтавкиНДС.НДС18)             ТОГДА 0.18   
КОГДА СтавкаНДСЗаказчик =   ЗНАЧЕНИЕ(Перечисление.новаСтавкиНДС.НДС10)           
ТОГДА 0.1                                                                         
ИНАЧЕ 0 КОНЕЦ )   
КОНЕЦ
/code]

pavl_vs

Ирина1109, представленные коды смысла не имеют, или я чего-то не понимаю.
Вы рассчитываете НДС от СуммаПродажи и я это понимаю как СуммаНДС = СуммаПродажи*СтавкаНДС, а у Вас результат равен ставке!?

Т.о. есть некий отчет, в котором Вы видите Суммы продажи, в доступных полях имеете Ставки НДС (СтавкаНДСЗаказчик) и возможно признак НДС включено в Сумму или нет; имея СуммуПродажи и вытащив СтавкуНДС нужно получить СуммуНДС.
Только "в таком разе" будет понятно использование параметров.

Каким-то таким способом опишите задачу.
Или хотя бы скажите я правильно понимаю с каким отчетом Вы имеете дело.

Кстати о параметрах в выражении - они должны иметь нормальное наименование, например, "Сумма продажи" или "Ставка НДС";
и если это так, то заменив их на СуммаПродажи и СтавкаНДС ничего хорошего не получите.

Ирина1109

Цитата: pavl_vs от 10 ноя 2015, 00:40
Ирина1109, представленные коды смысла не имеют, или я чего-то не понимаю.
Вы рассчитываете НДС от СуммаПродажи и я это понимаю как СуммаНДС = СуммаПродажи*СтавкаНДС, а у Вас результат равен ставке!?

Т.о. есть некий отчет, в котором Вы видите Суммы продажи, в доступных полях имеете Ставки НДС (СтавкаНДСЗаказчик) и возможно признак НДС включено в Сумму или нет; имея СуммуПродажи и вытащив СтавкуНДС нужно получить СуммуНДС.
Только "в таком разе" будет понятно использование параметров.

Каким-то таким способом опишите задачу.
Или хотя бы скажите я правильно понимаю с каким отчетом Вы имеете дело.

Кстати о параметрах в выражении - они должны иметь нормальное наименование, например, "Сумма продажи" или "Ставка НДС";
и если это так, то заменив их на СуммаПродажи и СтавкаНДС ничего хорошего не получите.

В отчете я опираюсь на документ, который содержит СуммаЗаказчика  (число), которая в запросе была переименована, как СуммаПродажи и СтавкаНДСЗаказчика, но она не число (на скрине показано). Поэтому я таким образом преобразовываю ее в число.

Проблема непосредственно возникает в том, что я не знаю, как синтаксически правильно будет записать несколько условий в таком выражении. На данный момент это поле работает только, когда ставка выбрана 18%, в противном случае всегда ее делает = 0,1.

Постаралась пояснить

vitasw

Цитата: Ирина1109 от 09 ноя 2015, 23:19В данном запросе прописано только для двух значений НДС, а мне надо прописать для всех (18/118, 10.110, 0, БезНДС)..не получается, помогите пожалуйста...пробую вот так, но не работает

Выбор
    Когда <условие1> Тогда <Выражение1>
    Когда <условие2> Тогда <Выражение2>
    Когда <условие3> Тогда <Выражение3>
...
Иначе <ВыражениеN> Конец

Ирина1109

Цитата: vitasw от 10 ноя 2015, 10:25
Цитата: Ирина1109 от 09 ноя 2015, 23:19В данном запросе прописано только для двух значений НДС, а мне надо прописать для всех (18/118, 10.110, 0, БезНДС)..не получается, помогите пожалуйста...пробую вот так, но не работает

Выбор
    Когда <условие1> Тогда <Выражение1>
    Когда <условие2> Тогда <Выражение2>
    Когда <условие3> Тогда <Выражение3>
...
Иначе <ВыражениеN> Конец


Спасибо! Все получилось)

У меня еще одна проблема: Надо пересчитать маржу в документе, она должна рассчитываться за вычетом НДС перевозчика(слайд). Нашла функцию в модуле формы, выглядит так:

Процедура ОбновитьПрофит()
Элементы.Профит.Заголовок = "Прибыль с заявки (маржа): "+Строка(Объект.СуммаЗаказчика Объект.СуммаПеревозчика);
КонецПроцедуры


Если пишу подобным образом
Процедура ОбновитьПрофит()

Если Объект.СтавкаНДСЗаказчик = Перечисления.СтавкиНДС.НДС18 Тогда
Объект.СтавкаНДСЗаказчик = 0.18
ИначеЕсли Объект.СтавкаНДСЗаказчик = Перечисления.СтавкиНДС.НДС10 Тогда
Объект.СтавкаНДСЗаказчик = 0.1
КонецЕсли;
Элементы.Профит.Заголовок = "Прибыль с заявки (маржа): "+Строка(Объект.СуммаЗаказчика - Объект.СуммаПеревозчика - Объект.СтавкаНДСПеревозчик*Объект.СуммаПеревозчика);
КонецПроцедуры



То выдает ошибку: "Преобразование значения к типу Число не может быть выполнено"

pavl_vs

Ирина1109, как минимум одна из переменных выражения в скобках не является Числом; скорее всего это Объект.СтавкаНДСПеревозчик.
Вы просто в коде похоже вместо Объект.СтавкаНДСПеревозчик написали Объект.СтавкаНДСЗаказчик.

Ирина1109

Цитата: pavl_vs от 10 ноя 2015, 23:57
Ирина1109, как минимум одна из переменных выражения в скобках не является Числом; скорее всего это Объект.СтавкаНДСПеревозчик.
Вы просто в коде похоже вместо Объект.СтавкаНДСПеревозчик написали Объект.СтавкаНДСЗаказчик.


Да,перепутала случайно. Исправила, но ошибка та же самая..значит условие не работает

pavl_vs

Цитата: Ирина1109 от 11 ноя 2015, 06:43
Исправила, но ошибка та же самая..значит условие не работает

Я бы не торопился с этим выводом, а протестировал всё это в отладчике на тип переменных;
не нравится в отладчике - сделайте следующее:
- закомментарьте строку расчета профита (ошибка должна исчезнуть, хотя и результата никакого);
- далее вместо нее последовательно в теле процедуры
-- Сообщить(Объект.СтавкаНДСПеревозчик * Объект.СтавкаНДСПеревозчик); // это проверка на выполнение условия и формирование чисел
-- Сообщить(Объект.СуммаЗаказчика * 0.18); // проверка на тип Число суммы заказчика
-- Сообщить(Объект.СуммаПеревозчика * 0.18); // проверка на тип Число суммы перевозчика
-- Сообщить(Объект.СуммаЗаказчика - Объект.СуммаПеревозчика - Объект.СтавкаНДСПеревозчик * Объект.СтавкаНДСПеревозчик).

Если ошибка в "не работает условие", то не будет даже первого сообщения.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск