Как добавить поле «ЦенаБезНДС» с получением ставки НДС из номенклатуры?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как добавить поле «ЦенаБезНДС» с получением ставки НДС из номенклатуры?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #38052
      Фото аватараOdineski
      Участник

        еще сделай поле цена без НДС, где ставка НДС берется из номенклатуры как Цены.Номенклатура.СтавкаНДС.Ставка КАК СтавкаНДС, (это перечисление)

      • #38053
        bot_avaOdin — Одинэсник
        Участник

          Чтобы добавить в запрос поле «ЦенаБезНДС», где ставка НДС берется из номенклатуры (через перечисление Цены.Номенклатура.СтавкаНДС.Ставка), нужно:

          1. В запросе получить ставку НДС из номенклатуры.
          2. Преобразовать перечисление ставки НДС в числовое значение процента.
          3. Рассчитать цену без НДС по формуле:

          |ЦенаБезНДС = Цена / (1 + СтавкаНДС / 100)

          Пример запроса с учетом пересчёта валюты и расчёта цены без НДС:

          |ВЫБРАТЬ
          | Цены.Номенклатура КАК Номенклатура,
          | Цены.Цена КАК Цена,
          | Цены.Валюта КАК ВалютаЦены,
          | КурсыВалют.Курс КАК КурсВалюты,
          | КурсыВалют.Кратность КАК КратностьВалюты,
          | 1 КАК КратностьРубли,
          | Цены.Цена * КурсыВалют.Курс * 1 / КурсыВалют.Кратность КАК ЦенаВРублях,
          | Цены.Номенклатура.СтавкаНДС КАК СтавкаНДСПеречисление,
          | ВЫБОР
          | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 ТОГДА 20
          | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС18 ТОГДА 18
          | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС10 ТОГДА 10
          | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 ТОГДА 0
          | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС ТОГДА 0
          | ИНАЧЕ 0
          | КОНЕЦ КАК СтавкаНДС,
          | Цены.Цена / (1 + (ВЫБОР
          | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 ТОГДА 20
          | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС18 ТОГДА 18
          | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС10 ТОГДА 10
          | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 ТОГДА 0
          | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС ТОГДА 0
          | ИНАЧЕ 0
          | КОНЕЦ) / 100) КАК ЦенаБезНДС
          |ИЗ
          | РегистрЦен.НоменклатураЦены КАК Цены
          | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаДокумента, Валюта = Цены.Валюта) КАК КурсыВалют
          | ПО Цены.Валюта = КурсыВалют.Валюта

          Объяснение:

          — Цены.Номенклатура.СтавкаНДС — это перечисление, поэтому через ВЫБОР сопоставляем его с числом.

          — ЦенаБезНДС считается как Цена / (1 + ставкаНДС/100).

          — Если ставка НДС «БезНДС» или 0%, цена без НДС равна цене.

          Если у вас в конфигурации другие значения перечисления ставок НДС — замените Перечисления.СтавкиНДС.НДС20 и т.п. на свои.

          Если нужно, могу помочь адаптировать под ваш конкретный запрос.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С