Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
15 Дек 2017, 15:08
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Процедура сортировки дисконтников  (Прочитано 1732 раз)

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

Оффлайн Barok

  • *
  • Сообщений: 1
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-12-06
  • Сайт: 
  • Профессия: Программист 7.7
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) И (СпрПрод.КодДиск=НомКарт) Тогда
   флНепродажи = Ложь;
КонецЕсли;

После цикла:

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

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


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
177 Сообщений
ilyay ilyay
69 Сообщений
alex0402
52 Сообщений
oleg-x
48 Сообщений
AIFrame
46 Сообщений
andron81_81
43 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
31 Сообщений
BuhRust
30 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal