Здравствуйте, пытаюсь скопировать реквизиты табличной части БезНДС, но постоянно выдает ошибку: Преобразование значения к типу Число не может быть выполнено
Подскажите пожалуйста, как мне получить числовое значение ставки?
&НаСервере
Функция НС_СоздатьЗаказПоставщикуПослеНаСервере()
Если Объект.Запасы.Количество() > 0 Тогда
ЗаказПоставщику = Документы.ЗаказПоставщику.СоздатьДокумент();
ЗаполнитьЗначенияСвойств(ЗаказПоставщику, Объект);
Для Каждого ТекСтрока Из Объект.Запасы Цикл
ТекСтрокаЗаказПоставщику = ЗаказПоставщику.Запасы.Добавить();
ЗаполнитьЗначенияСвойств(ТекСтрокаЗаказПоставщику,ТекСтрока);
КонецЦикла;
Для каждого Стр из Объект.Запасы Цикл
Стр.СуммаНДС = Стр.Сумма - (Стр.Сумма/(100+Стр.СтавкаНДС)*100);
Стр.СуммаБезНДС = Стр.Сумма - Стр.СуммаНДС;
КонецЦикла;
Попытка
ЗаказПоставщику.УстановитьНовыйНомер();
ЗаказПоставщику.Записать(РежимЗаписиДокумента.Запись);
Возврат ЗаказПоставщику.Ссылка;
Исключение
Возврат Документы.ЗаказПоставщику.ПустаяСсылка();
КонецПопытки;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Стр.СуммаНДС = Стр.Сумма * (?(СтавкаНДСЧислом(Стр.СтавкаНДС) = 1, 0, СтавкаНДСЧислом(Стр.СтавкаНДС) / 100));
Функция СтавкаНДСЧислом(СтавкаНДС)
Если СтавкаНДС = Перечисления.СтавкиНДС.НДС5 Тогда
Возврат 5;
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда
Возврат 10;
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС18 Тогда
Возврат 18;
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
Возврат 20;
Иначе
Возврат 1; // Без НДС
КонецЕсли;
КонецФункции
Показать
и свои значения добавить нужно, если помимо этих ставок другие есть. Учитывай, что тип значения реквизита СтавкаНДС в строке должен быть именно перечислением, а не справочником. Иначе всегда будет 1 возвращаться. Если тип значения справочник, то Стр.СтавкаНДС.Ставка.
Стр.СуммаНДС = Стр.Сумма * (?(СтавкаНДСЧислом(Стр.СтавкаНДС) = 1, 0, СтавкаНДСЧислом(Стр.СтавкаНДС) / 100));
Функция СтавкаНДСЧислом(СтавкаНДС)
Если СтавкаНДС = Перечисления.СтавкиНДС.НДС5 Тогда
Возврат 5;
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда
Возврат 10;
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС18 Тогда
Возврат 18;
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
Возврат 20;
Иначе
Возврат 1; // Без НДС
КонецЕсли;
КонецФункции
Показать
и свои значения добавить нужно, если помимо этих ставок другие есть. Учитывай, что тип значения реквизита СтавкаНДС в строке должен быть именно перечислением, а не справочником. Иначе всегда будет 1 возвращаться. Если тип значения справочник, то Стр.СтавкаНДС.Ставка.
Что, за 2 дня так и не нашел ни в одном месте - откуда же берется число для расчета НДС? Ну в той же ПриходнойНакладной посмотри, что ли.
Никто тут за руку тебя водить не собирается.
Сдается, что ты и не собираешься разбираться в сути.
(3) Джунов нормальных, перспективных, пытливых ищем... Да никак найти не можем. Только необучаемые попрошайки без намеков на рассудительность и размышления.
(2) Я наверное поэтому и новичок, и не могу иногда чего-то понять, поэтому и прошу тут помощи. Вы думаете, я не пытался разобраться?! Я просто запутался
Нет, ты не "понял". Ты просто "увидел код". Если бы хотел понять - то задумался бы, что сии буквы обозначают, что в каждой конкретной строчке происходит с данными, какие у них значения в каждой конкретной строчке.
Но - нет, тебя интересует только, как "этот код засунуть в мой код".
А надо не просто "читать", а разложить его пошагово и понять. Но ты всего лишь "пытался читать", значит либо не дошел до результата, либо даже не начинал. (Я пытался пылесосить, но было лень собрать пылесос)
Несколько вариантов использовал
Вариантов чего? Засовывания букв в свой код? А вот если бы выполнил первый пункт, то и со вторым бы не возникло вопросов. А раз пробовал несколько вариантов не понимая сути - это и есть угадайка.
Тебе к Калимуллину. Он тебя научит.
Во всех стандартных конфигурациях 1с есть готовые функции для этого. Посмотри, как называется твоя конфигурация (помощь - о программе - там написано), потом в поиск напиши это название и "ставка ндс числом" и найдешь.