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

Процедура сортировки дисконтников

Автор Barok, 06 дек 2011, 16:55

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

Barok

1С: Предприятие 7.7 (7.70.025)

Необходимо реализовать процедуру отброрки дисконтных клиентов магазина и выявить, кто из дисконтников не осуществляет покупки.
Имеется Справичник.Дисконтники и Справочник.Продажи

Если продажа осуществляется дисконтником, то в справочнике "Продажи" вводится код дисконтника, % скидки, покупка и т.д.

Какой код имеется:

Процедура Карточка()
НомКарт=0;             
Если ВвестиЧисло(НомКарт,"Введите № диск (0-все диск.прод)",4,0,0)=1 Тогда
Спр=СоздатьОбъект("Справочник.Дисконтники");
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Карточка");
Таб.Опции(0,0,0);
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
Если Спр.Код=СокрЛП(НомКарт) Тогда
Если НомКарт<>0 Тогда
Таб.ВывестиСекцию("Шапка");
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если НомКарт=0 Тогда
Таб.ВывестиСекцию("Шапка3");
КонецЕсли;
//---------------------------
Таб.ВывестиСекцию("Шапка1");
СпрПрод=СоздатьОбъект("Справочник.Продажи");    //справочник всех продаж
СпрПрод.ПорядокРеквизита("ДатаЧека");  //сортировка по дате продажи
СпрПрод.ВыбратьЭлементы();
Пока СпрПрод.ПолучитьЭлемент() = 1 Цикл
Если (НомКарт=0) И (СпрПрод.КодДиск<>0) И (СпрПрод.СкидкаФакт<>0) Тогда
Таб.ВывестиСекцию("Продажи");           //вывод всех дисконтных продаж
КонецЕсли;
Если (НомКарт<>0) И (СпрПрод.КодДиск=НомКарт) Тогда
Таб.ВывестиСекцию("Продажи");            //вывод по номеру дисконтника карточки дисконтника
ИначеЕсли (НомКарт<>0) тогда
Таб.ВывестиСекцию("НеПродажи"); //вывод всех остальных дисконтников

КонецЕсли;
КонецЦикла;
//---------------------------
Таб.ТолькоПросмотр(1);
Таб.Показать("Карточка дисконтника","");
КонецЕсли;
КонецПроцедуры   


Что не работает: Дисконтники, которые осуществили покупку выводятся (Секция "Продажи"), а дисконтники, которые пока ничего не покупали не отображаются (Секция "НеПродажи").

Подскажите в чём проблема и как её можно решить?

1Cnastroika

Если условием непродажи является отсутствие клиента в файле продажи, тогда

Нужно задать флаг перед циклом

флНепродажи=Истина;

В цикле

Если (НомКарт<>0) И (СпрПрод.КодДиск=НомКарт) Тогда
   флНепродажи = Ложь;
КонецЕсли;

После цикла:

Если флНепродажи = Истина Тогда
  Таб.ВывестиСекцию("НеПродажи");
КонецЕсли;

Иначе поясните условие задачи.

Теги:

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

Рейтинг@Mail.ru

Поиск