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

Поиск значения в табличной части документа

Автор Амал, 12 июл 2017, 06:35

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

Амал

Хорошего всем дня.

Необходимо в ВПФ документа "РеализацияТоваровИУслуг" выполнить условие, чтобы при выборе в поле "%НДС": 18% (и др. %) отражалось одно, при выборе 0% - другое, а при выборе БезНДС - отражалось третье. Подскажите пожалуйста, как это реализовать? Перепробовал разные варианты, но код не работает.



Вот изначальное условие в коде:

Если СуммаНДС <> 0 Тогда

ДанныеПечатиИтогоНДС.ВсегоНДС = ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаНДС);
ДанныеПечатиИтогоНДС.НДС      = ?(СведенияОДокументе.СуммаВключаетНДС, НСтр("ru='В том числе НДС'"), НСтр("ru='Сумма НДС'"));


Иначе

ДанныеПечатиИтогоНДС.ВсегоНДС = НСтр("ru='0%'");
ДанныеПечатиИтогоНДС.НДС      = НСтр("ru='(НДС)'");


КонецЕсли;


Это условие срабатывает, если выбираешь "0" или выбираешь "БезНДС", то всё равно отражается условие "иначе". Я попробовал через функцию "Найти" посмотреть находит ли вообще значение "БезНДС", но в итоге - не находит. Вот условие, которое я написал:

Строки = СсылкаНаДокумент.Услуги.Найти("Без НДС", "СтавкаНДС");

Если Строки <> Неопределено Тогда

ОбластьИтогоНДС = Макет.ПолучитьОбласть("ИтогоНДС");
ОбластьИтогоНДС.Параметры.СуммаНДС = 1;
ТабличныйДокумент.Вывести(ОбластьИтогоНДС);

Иначе

ОбластьИтогоНДС = Макет.ПолучитьОбласть("ИтогоНДС");
ОбластьИтогоНДС.Параметры.СуммаНДС = ТекущаяДата();
ТабличныйДокумент.Вывести(ОбластьИтогоНДС);

КонецЕсли;


При этом условии срабатывает "иначе". Что не так?


Golickoff

Если СуммаНДС <> 0 Тогда

ДанныеПечатиИтогоНДС.ВсегоНДС = ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаНДС);
ДанныеПечатиИтогоНДС.НДС      = ?(СведенияОДокументе.СуммаВключаетНДС, НСтр("ru='В том числе НДС'"), НСтр("ru='Сумма НДС'"));


Иначе

ДанныеПечатиИтогоНДС.ВсегоНДС = НСтр("ru='0%'");
ДанныеПечатиИтогоНДС.НДС      = НСтр("ru='(НДС)'");


КонецЕсли;


Меняем на
Если ИмяКолонкиССинонимом"%НДС" = Перечисления.СтавкиНДС.БезНДС Тогда
    ДанныеПечатиИтогоНДС.ВсегоНДС = "Без НДС";
    ДанныеПечатиИтогоНДС.НДС      = "Без НДС";
ИначеЕсли ИмяКолонкиССинонимом"%НДС" = Перечисления.СтавкиНДС.НДС0 Тогда
    ДанныеПечатиИтогоНДС.ВсегоНДС = НСтр("ru='0%'");
    ДанныеПечатиИтогоНДС.НДС      = НСтр("ru='(НДС)'");
Иначе
    ДанныеПечатиИтогоНДС.ВсегоНДС = ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаНДС);
    ДанныеПечатиИтогоНДС.НДС      = ?(СведенияОДокументе.СуммаВключаетНДС, НСтр("ru='В том числе НДС'"), НСтр("ru='Сумма НДС'"));
КонецЕсли;


Что касается
Строки = СсылкаНаДокумент.Услуги.Найти("Без НДС", "СтавкаНДС");
вы вставили значение поиска не того типа. Должно быть
Строки = СсылкаНаДокумент.Услуги.Найти(Перечисления.СтавкиНДС.БезНДС, "СтавкаНДС");
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Амал

Не получилось решить задачу. "ИмяКолонкиССинонимом"%НДС"" - СтавкиНДС. Когда её заносишь в условие "Если", то программа не видит это значение. Поэтому написал: СтавкаНДС = Перечисления.СтавкиНДС, при этом результат не поменялся - программа также вывела результат "иначе" (при чём теперь он срабатывает всегда, независимо от того выбираю я в поле "%НДС" 0% или БезНДС):

Иначе           
    ДанныеПечатиИтогоНДС.ВсегоНДС = ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаНДС);
    ДанныеПечатиИтогоНДС.НДС      = ?(СведенияОДокументе.СуммаВключаетНДС, НСтр("ru='В том числе НДС'"), НСтр("ru='Сумма НДС'"));       
КонецЕсли;


Также заменил, то что вы посоветовали в определении переменной "Строки", но и это не изменило результат - сработало "иначе"(текущая дата) см. рис. что значит "Строки" = Неопределено (не видит значение "БезНДС" в колонке "%НДС").


Golickoff

Какой тип значения у колонки СтавкаНДС?
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Амал

Цитата: Golickoff от 12 июл 2017, 08:35
Какой тип значения у колонки СтавкаНДС?

ПеречислениеСсылка.СтавкиНДС

Golickoff

Покажите как выглядит текущий код.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Амал

Цитата: Golickoff от 12 июл 2017, 08:48
Покажите как выглядит текущий код.

Строки = СсылкаНаДокумент.Услуги.Найти(Перечисления.СтавкиНДС.БезНДС, "СтавкаНДС");

Если Строки <> Неопределено Тогда

ОбластьИтогоНДС = Макет.ПолучитьОбласть("ИтогоНДС");
ОбластьИтогоНДС.Параметры.СуммаНДС = 1;
ТабличныйДокумент.Вывести(ОбластьИтогоНДС);

Иначе

ОбластьИтогоНДС = Макет.ПолучитьОбласть("ИтогоНДС");
ОбластьИтогоНДС.Параметры.СуммаНДС = ТекущаяДата();
ТабличныйДокумент.Вывести(ОбластьИтогоНДС);

КонецЕсли;

СтавкаНДС = Перечисления.СтавкиНДС;

Если СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
ДанныеПечатиИтогоНДС.ВсегоНДС = "Без НДС";
ДанныеПечатиИтогоНДС.НДС      = "Без НДС";
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС0 Тогда
ДанныеПечатиИтогоНДС.ВсегоНДС = НСтр("ru='0%'");
ДанныеПечатиИтогоНДС.НДС      = НСтр("ru='(НДС)'");
Иначе           
ДанныеПечатиИтогоНДС.ВсегоНДС = ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаНДС);
ДанныеПечатиИтогоНДС.НДС      = ?(СведенияОДокументе.СуммаВключаетНДС, НСтр("ru='В том числе НДС'"), НСтр("ru='Сумма НДС'"));       
КонецЕсли;

Golickoff

ЦитироватьСтавкаНДС = Перечисления.СтавкиНДС;
       
        Если СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
            ДанныеПечатиИтогоНДС.ВсегоНДС = "Без НДС";
            ДанныеПечатиИтогоНДС.НДС      = "Без НДС";
        ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС0 Тогда
            ДанныеПечатиИтогоНДС.ВсегоНДС = НСтр("ru='0%'");
            ДанныеПечатиИтогоНДС.НДС      = НСтр("ru='(НДС)'");
        Иначе           
            ДанныеПечатиИтогоНДС.ВсегоНДС = ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаНДС);
            ДанныеПечатиИтогоНДС.НДС      = ?(СведенияОДокументе.СуммаВключаетНДС, НСтр("ru='В том числе НДС'"), НСтр("ru='Сумма НДС'"));       
        КонецЕсли;
Мда... Первой строки вообще не должно быть. Далее везде вместо "СтавкаНДС" должно быть имя колонки. То что я там писал в примере выше, это было образно, просто потому что я не знаю как колонка называется у вас.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Амал

Колонка так и называется "СтавкаНДС". "%НДС" - это синоним

Golickoff

Покажите код заполнения печатной формы целиком.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Теги:

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

Рейтинг@Mail.ru

Поиск