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

НДС

Автор trialex3, 18 мар 2019, 14:30

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

trialex3

Здравствуйте. Понадобилось в тексте кода заменить 0.18 НДС на текущее, но не заменой текста, а путем вставки переменной. 2 вопроса.
1. Как проще всего получить число 0.2 из 1ски? в перечислении ставкиНДС значение 20%.
2. Заменить НДС надо в том числе и в запросе. Но когда я вставляю в текст запроса вместо 0,18 параметр, который ранее определил как 0.2 то выскакивает ошибка:
ЦитироватьОшибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(2, 37)}: Неверные параметры "+"
выразить(ЦенаПриводов/(ЦенаФранки/(1<<?>>+&НДС2019+0.12+0.03)) как число(10,2)) как КурсРасчета,
В чем причина?

DmitriyF

Цитата: trialex3 от 18 мар 2019, 14:30
Здравствуйте. Понадобилось в тексте кода заменить 0.18 НДС на текущее, но не заменой текста, а путем вставки переменной. 2 вопроса.
1. Как проще всего получить число 0.2 из 1ски? в перечислении ставкиНДС значение 20%.
2. Заменить НДС надо в том числе и в запросе. Но когда я вставляю в текст запроса вместо 0,18 параметр, который ранее определил как 0.2 то выскакивает ошибка:
ЦитироватьОшибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(2, 37)}: Неверные параметры "+"
выразить(ЦенаПриводов/(ЦенаФранки/(1<<?>>+&НДС2019+0.12+0.03)) как число(10,2)) как КурсРасчета,
В чем причина?
А сам запрос выложищь?

trialex3

Да, пожалуйста:
Запрос.Текст="выбрать Привод, ЦенаПриводов,сумма(КолПриводов) как КоличествоПриводов,
  |выразить(ЦенаПриводов/(ЦенаФранки/(1+&НДС2019+0.12+0.03)) как число(10,2)) как КурсРасчета,
  |НоваяЦена/(1+&НДС2019+0.12+0.03) как НоваяЦена,ДатаЦен
  |из (выбрать
|Материалы.ЦенаПривода как ЦенаПриводов,ЦП.НоваяЦена как НоваяЦена,Материалы.КолПриводов*Заказ.Количество как КолПриводов,
|ЦП.Наименование как Привод,ЦП.НоваяЦена как ЦенаФранки,Материалы.ДатаЦен
| из Документ.ЗаказПокупателя.Товары как Заказ
| левое соединение (выбрать Номенклатура,
|max(ЦенаПривода/КолПриводов) как ЦенаПривода,max(КолПриводов) как КолПриводов,ХарактеристикаНоменклатуры,Привод,
|НапряжениеПривода,max(ДатаЦен) как ДатаЦен
| из Справочник.АГ_РасчетМатериалов где КолПриводов>=1
|сгруппировать по Номенклатура,ХарактеристикаНоменклатуры,Привод,
|НапряжениеПривода
|) как Материалы по Материалы.ХарактеристикаНоменклатуры=Заказ.ХарактеристикаНоменклатуры и Материалы.Номенклатура=Заказ.Номенклатура
| левое соединение Справочник.АГ_ЦеныПриводов как ЦП по ЦП.ТипПривода.Наименование=Материалы.Привод и ЦП.НапряжениеПривода.Наименование=Материалы.НапряжениеПривода
|и Заказ.Номенклатура=Материалы.Номенклатура где Заказ.Ссылка=&Заказ
|) как рез
|Где рез.Привод is not null и рез.ЦенаФранки is not null и рез.НоваяЦена is not null и рез.КолПриводов is not null
|сгруппировать по
|рез.ЦенаПриводов,рез.ЦенаФранки,рез.Привод,рез.НоваяЦена,рез.ДатаЦен";

Запрос.УстановитьПараметр("Заказ", Заказ);
Запрос.УстановитьПараметр("НДС2019", НДС2019);

DmitriyF

[quote author=trialex3 link=topic=73181.msg207479#msg207479 date=1552909719]
Запрос.УстановитьПараметр("Заказ", Заказ);
Запрос.УстановитьПараметр("НДС2019", НДС2019);

[/quote]
Надеюсь в параметр, что то передаете?

trialex3

Да.
&НаКлиенте
Процедура ПриОткрытии(Отказ)
НДС2019 = 0.2;

DmitriyF

Цитата: trialex3 от 18 мар 2019, 15:02
Да.
&НаКлиенте
Процедура ПриОткрытии(Отказ)
НДС2019 = 0.2;

Поставь точку останова перед запросом и проверь, чему у тебя равна НДС2019. Запрос то выполняешь на сервере, а  переменную то объявил на клиенте. Ты ее на сервер то передал?

trialex3

Второй вопрос решился. проблема была в типе переменной. Спасибо. Осталось решить как определять ндс не присвоением числа 0.2 а брать из 1с.

DmitriyF

Цитата: trialex3 от 18 мар 2019, 15:26
Второй вопрос решился. проблема была в типе переменной. Спасибо. Осталось решить как определять ндс не присвоением числа 0.2 а брать из 1с.
А где у Вас ставка хранится?

trialex3

Перечисления.СтавкиНДС
там в синониме 20%

НДС2019 = "0."+Лев(Перечисления.СтавкиНДС.НДС20,2);
НДС2019 = Число(НДС2019);
Вот так придумал.

DmitriyF

Цитата: trialex3 от 18 мар 2019, 15:38
Перечисления.СтавкиНДС
Это понятно. Я имею ввиду, как Вы в базе храните эту ставку? В каком реквизите, константе.....?

Теги:  

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

Рейтинг@Mail.ru

Поиск