Здравствуйте, пытаюсь скопировать реквизиты табличной части БезНДС, но постоянно выдает ошибку: Преобразование значения к типу Число не может быть выполнено
Подскажите пожалуйста, как мне получить числовое значение ставки?
Подскажите пожалуйста, как мне получить числовое значение ставки?
&НаСервере
Функция НС_СоздатьЗаказПоставщикуПослеНаСервере()
Если Объект.Запасы.Количество() > 0 Тогда
ЗаказПоставщику = Документы.ЗаказПоставщику.СоздатьДокумент();
ЗаполнитьЗначенияСвойств(ЗаказПоставщику, Объект);
Для Каждого ТекСтрока Из Объект.Запасы Цикл
ТекСтрокаЗаказПоставщику = ЗаказПоставщику.Запасы.Добавить();
ЗаполнитьЗначенияСвойств(ТекСтрокаЗаказПоставщику,ТекСтрока);
КонецЦикла;
Для каждого Стр из Объект.Запасы Цикл
Стр.СуммаНДС = Стр.Сумма - (Стр.Сумма/(100+Стр.СтавкаНДС)*100);
Стр.СуммаБезНДС = Стр.Сумма - Стр.СуммаНДС;
КонецЦикла;
Попытка
ЗаказПоставщику.УстановитьНовыйНомер();
ЗаказПоставщику.Записать(РежимЗаписиДокумента.Запись);
Возврат ЗаказПоставщику.Ссылка;
Исключение
Возврат Документы.ЗаказПоставщику.ПустаяСсылка();
КонецПопытки;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции ПоказатьПо теме из базы знаний
- Атол ККТ: Онлайн 54-ФЗ (ДТО 10.4) для 1С 8.1/8.2/8.3. УТ 10.3, Розница 1, УПП 1.3, без изменения конфигурации
- Загрузка чеков из ФНС в документы 1С:БП 3.0, УНФ3.0, Розница3.0, ERP2.5, КА и УТ11.5
- Интеграция 1С и Wildberries: автоматизация заказов и остатков по API с УТ, КА, ERP, УНФ, Розница 3 - SynchroWB
- НДС с межценовой разницы в отчетах о розничных продажах для БП 3.0 КОРП
- 1С:Элемент. Доступные библиотеки, их возможности, подходы к разработке
Найденные решения
(1)
и свои значения добавить нужно, если помимо этих ставок другие есть. Учитывай, что тип значения реквизита СтавкаНДС в строке должен быть именно перечислением, а не справочником. Иначе всегда будет 1 возвращаться. Если тип значения справочник, то Стр.СтавкаНДС.Ставка.
Стр.СуммаНДС = Стр.Сумма - (Стр.Сумма/(100+Стр.СтавкаНДС)*100);
Стр.СуммаНДС = Стр.Сумма * (?(СтавкаНДСЧислом(Стр.СтавкаНДС) = 1, 0, СтавкаНДСЧислом(Стр.СтавкаНДС) / 100));
Функция СтавкаНДСЧислом(СтавкаНДС)
Если СтавкаНДС = Перечисления.СтавкиНДС.НДС5 Тогда
Возврат 5;
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда
Возврат 10;
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС18 Тогда
Возврат 18;
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
Возврат 20;
Иначе
Возврат 1; // Без НДС
КонецЕсли;
КонецФункции
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
и свои значения добавить нужно, если помимо этих ставок другие есть. Учитывай, что тип значения реквизита СтавкаНДС в строке должен быть именно перечислением, а не справочником. Иначе всегда будет 1 возвращаться. Если тип значения справочник, то Стр.СтавкаНДС.Ставка.
Стр.СуммаНДС = Стр.Сумма - (Стр.Сумма/(100+Стр.СтавкаНДС)*100);
Стр.СуммаНДС = Стр.Сумма * (?(СтавкаНДСЧислом(Стр.СтавкаНДС) = 1, 0, СтавкаНДСЧислом(Стр.СтавкаНДС) / 100));
Функция СтавкаНДСЧислом(СтавкаНДС)
Если СтавкаНДС = Перечисления.СтавкиНДС.НДС5 Тогда
Возврат 5;
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда
Возврат 10;
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС18 Тогда
Возврат 18;
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
Возврат 20;
Иначе
Возврат 1; // Без НДС
КонецЕсли;
КонецФункции
Показать
Что, за 2 дня так и не нашел ни в одном месте - откуда же берется число для расчета НДС? Ну в той же ПриходнойНакладной посмотри, что ли.
Никто тут за руку тебя водить не собирается.
Сдается, что ты и не собираешься разбираться в сути.
Никто тут за руку тебя водить не собирается.
Сдается, что ты и не собираешься разбираться в сути.
(6)
Я понял, что СтавкаНДС вот так рассчитывается, но как мне это применить в своем коде, мне постоянно выдает ошибку
&НаКлиенте
Процедура СуммаПродажиПриИзменении(Элемент)
Если СуммаПродажи > 0 Тогда
Элементы.СтавкаНДС.ТолькоПросмотр = Ложь;
Иначе
Элементы.СтавкаНДС.ТолькоПросмотр = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьЧислоСтавки()
Возврат СтавкаНДС.Ставка;
КонецФункции
&НаКлиенте
Процедура СтавкаНДСПриИзменении(Элемент)
Если ЗначениеЗаполнено(СтавкаНДС) Тогда
СуммаНДС = СуммаПродажи - (СуммаПродажи/(100+ПолучитьЧислоСтавки())*100);
СуммаБезНДС = СуммаПродажи - СуммаНДС;
Иначе
СуммаБезНДС = 0;
СуммаНДС = 0;
КонецЕсли;
КонецПроцедуры ПоказатьЯ понял, что СтавкаНДС вот так рассчитывается, но как мне это применить в своем коде, мне постоянно выдает ошибку
(7)
Но - нет, тебя интересует только, как "этот код засунуть в мой код".
Я понял, что СтавкаНДС вот так рассчитывается
Нет, ты не "понял". Ты просто "увидел код". Если бы хотел понять - то задумался бы, что сии буквы обозначают, что в каждой конкретной строчке происходит с данными, какие у них значения в каждой конкретной строчке.
Но - нет, тебя интересует только, как "этот код засунуть в мой код".
(9)
Тебе к Калимуллину. Он тебя научит.
что я пытался прочитать этот код.
А надо не просто "читать", а разложить его пошагово и понять. Но ты всего лишь "пытался читать", значит либо не дошел до результата, либо даже не начинал. (Я пытался пылесосить, но было лень собрать пылесос)
Несколько вариантов использовал
Вариантов чего? Засовывания букв в свой код? А вот если бы выполнил первый пункт, то и со вторым бы не возникло вопросов. А раз пробовал несколько вариантов не понимая сути - это и есть угадайка.
Тебе к Калимуллину. Он тебя научит.
Во всех стандартных конфигурациях 1с есть готовые функции для этого. Посмотри, как называется твоя конфигурация (помощь - о программе - там написано), потом в поиск напиши это название и "ставка ндс числом" и найдешь.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
