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

Как выполнить условие

Автор samayut, 14 дек 2015, 12:32

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

samayut

Доброго дня!
На форме элемента справочника нужно разместить реквизит перечисление со значениями разовый и постоянный, по умолчанию выставлять разовый, а при сумме всех оплат более 100000 значение менять на постоянный.
Такой вопрос, решил реализовать это таким образом
Если НЕ ЗначениеЗаполнено(СтатусКонтрагента) Тогда

Запрос = Новый запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Продажи.Стоимость КАК Стоимость
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|ГДЕ
| Продажи.Контрагент = &Контрагент";
Запрос.УстановитьПараметр("Контрагент", Наименование);
Результат = Запрос.Выполнить().Выгрузить();

Если Результат > 100000 Тогда
СтатусКонтрагента  = Перечисления.СтатусКонтрагента.Постоянный;
Иначе
СтатусКонтрагента  = Перечисления.СтатусКонтрагента.Разовый;
КонецЕсли;
КонецЕсли;

В результате запрос пустой:(
Я так понимаю, параметр передается не верный, как передать правильный параметр (контрагент) и вообще правильный ли подход к решению этой задачи?

cska-fanat-kz

1) "сумма всех оплат" или "сумма продаж"? в общем и целом это разные вещи...
2) у регистра производительней использовать не основную таблицу, а виртуальную таблицу Обороты
3) соответственно отбор делать с помощью виртуальных параметров
4) хранить такую переменчивую информацию в условно-постоянном элементе справочника ИМХО нецелесообразно
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

samayut

Это учебная задача.
Верно, регистр надо другой, его то я найду, а вот как передать параметр контрагента, в форме нет контрагента, а наименование это строковое значение

Решаю на Управление торговлей 10.3

cska-fanat-kz

контрагент и не нужен.
1) получаем временную таблицу всех оплат больше 100000 в разрезе контрагентов
2) связываем с таблицей справочника
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

pavl_vs

Цитата: samayut от 14 дек 2015, 12:32
В результате запрос пустой:(
Я так понимаю, параметр передается не верный, как передать правильный параметр (контрагент) и вообще правильный ли подход к решению этой задачи?
1. Почему запрос пустой? Либо через отладчик, либо через сообщение выведите Результат.Количество().
2. Что же касается правильности подхода, то нужно организовать обход строк Таблицы значений "Результат", чего у Вас нет (конструкция "Если Иначе КонецЕсли" работать не будет).

samayut

С таблицей справочника?
Что это за таблица и как связать?
Добавлено: 14 дек 2015, 14:29


Цитата: pavl_vs от 14 дек 2015, 14:111. Почему запрос пустой? Либо через отладчик, либо через сообщение выведите Результат.Количество().

Значение 0, тип число.
Передаю параметр "Наименование" у него ТипЗначения строка

cska-fanat-kz

книжки почитать не предлагать?
вы же абсолютно не понимаете, что делаете.
а разжевывать каждый шаг решения УЧЕБНОЙ задачи - медвежья услуга.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

передаете строку Наименование а сравниваете с ссылкой на Контрагента.
в результате на выходе пусто, ибо условие никогда не выполнится.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

Результату присваиваете таблицу значений, а потом сравниваете с числом.
в итоге всегда будет уходить в ветку "Иначе".
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

samayut

Цитата: cska-fanat-kz от 14 дек 2015, 14:55книжки почитать не предлагать?

Я б с удовольствием почитал на эту тему, комплексный курс прослушал год назад, недавно прочитал Радченко и Хрусталеву Практическое пособие разработчика, хочу работать в этой сфере, но практики не было, где и как получить знания, "набить руку" к сожалению не знаю
Добавлено: 14 дек 2015, 15:40


Цитата: cska-fanat-kz от 14 дек 2015, 14:56передаете строку Наименование а сравниваете с ссылкой на Контрагента

Я об этом и написал, что это не верно, а как сделать верно не знаю

Цитата: cska-fanat-kz от 14 дек 2015, 14:57Результату присваиваете таблицу значений, а потом сравниваете с числом.
в итоге всегда будет уходить в ветку "Иначе".

Это я тоже понимаю, надо число сравнивать, не знаю только можно ли достать число из таблицы и его сравнить

Цитата: cska-fanat-kz от 14 дек 2015, 14:55вы же абсолютно не понимаете, что делаете.

Не понимаю, но хочу понять и разобраться!

Теги:

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

Рейтинг@Mail.ru

Поиск