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

Рассчёт скидки покупателю, прошу помощи.

Автор SoulPower, 04 июн 2011, 10:49

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

SoulPower

Спасибо ещё раз.
Ваш вариант действительно короче и изящней.

Поясните пожалуйста ещё коечто.
ОборотКлиента, это таблица. Как мне проверить, что там есть значения?
Ведь если клиент ничего не покупал, то РегистрыНакопления.Продажи.Обороты() ничего не вернёт и будет пустая таблица, тогда надо вернуть значение скидки 0.
И ещё.
Как мне прочитать значение ПроцентаСкидки?
Запрос.УстановитьПараметр("ОЗ",ОборотКлиента[0].Выручка);
Результат = Запрос.Выполнить();
СкидкаТаб = Результат.Выбрать();

СкидкаТаб имеет тип ВыборкаИзРезультатаЗапроса, Но значения там не определены. Как мне правильно обратиться к этой выборке, прочитать и вернуть ПроцентСкидки?

И ещё.
В форме документа я делаю следующее:
&НаКлиенте
Процедура КлиентПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные;
Скидка = РаботаСоСправочниками.ВычислениеСкидки(Объект.Клиент);
Если Скидка <> 0 тогда
Сообщить("Клиент обладает скидкой " + Строка(Скидка) + "%");
//Если НЕ СтрокаТабличнойЧасти.Номенклатура.Пустая() тогда
СтрокаТабличнойЧасти.Цена =
РаботаСоСправочниками.РозничнаяЦенаСоСкидкой(Объект.Дата,СтрокаТабличнойЧасти.Номенклатура, Скидка)
//КонецЕсли;
КонецЕсли;
КонецПроцедуры


Вот эта строчка - СтрокаТабличнойЧасти.Номенклатура.Пустая()
Неправильная.
А как мне проверить заполнена ли номенклатура табличной части в форме?
Чтоб если заполнени вычислить цену со скидкой, а если нет, то просто сказать что скидка есть.



SoulPower

да чтож такое, глючит форум.

Спасибо ещё раз.
Ваш вариант действительно короче и изящней.

Поясните пожалуйста ещё коечто.
ОборотКлиента, это таблица. Как мне проверить, что там есть значения?
Ведь если клиент ничего не покупал, то РегистрыНакопления.Продажи.Обороты() ничего не вернёт и будет пустая таблица, тогда надо вернуть значение скидки 0.
И ещё.
Как мне прочитать значение ПроцентаСкидки?
Запрос.УстановитьПараметр("ОЗ",ОборотКлиента.Выручка);
   Результат = Запрос.Выполнить();
   СкидкаТаб = Результат.Выбрать();
СкидкаТаб имеет тип ВыборкаИзРезультатаЗапроса, Но значения там не определены. Как мне правильно обратиться к этой выборке, прочитать и вернуть ПроцентСкидки?

И ещё.
В форме документа я делаю следующее:
&НаКлиенте
Процедура КлиентПриИзменении(Элемент)
   СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные;
   Скидка = РаботаСоСправочниками.ВычислениеСкидки(Объект.Клиент);
   Если Скидка <> 0 тогда
      Сообщить("Клиент обладает скидкой " + Строка(Скидка) + "%");
      //Если НЕ СтрокаТабличнойЧасти.Номенклатура.Пустая() тогда
         СтрокаТабличнойЧасти.Цена =
РаботаСоСправочниками.РозничнаяЦенаСоСкидкой(Объект.Дата,СтрокаТабличнойЧасти.Номенклатура, Скидка)
      //КонецЕсли;   
   КонецЕсли;
КонецПроцедуры

Вот эта строчка - СтрокаТабличнойЧасти.Номенклатура.Пустая()
Неправильная.
А как мне проверить заполнена ли номенклатура табличной части в форме?
Чтоб если заполнени вычислить цену со скидкой, а если нет, то просто сказать что скидка есть.

cska-fanat-kz

1. Ответ, касающийся отсутствия оборотов и отсутствия строк в ТЧ документа - один и тот же.
Заполненность таблиц проверяем с помощью метода Количество() - он возвращает количество строк в таблице.
Например,
ОборотКлиента = РегистрыНакопления.Продажи.Обороты(ДатаНачала, ДатаОкончания, Новый Структура("Клиент", Клиент),"Клиент","Выручка");
Если ОборотКлиента.Количество() <> 0 Тогда
    ЗначениеОборота = ОборотКлиента[0].Выручка;
Иначе
    ЗначениеОборота = 0;
КонецЕсли;


2. Результат запроса получаем так:
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ЗначениеПроцентаСкидки = Выборка.ПроцентСкидки;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

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

Рейтинг@Mail.ru

Поиск