Процедура ПолучитьДокументыПоСтд()
СрокОплатыСравнение = 2;// 1 - Неважно 2 - Просрочен (более чем на)
СрокОтгрузкиСравнение = 1;// 1 - Неважно
НаличиеРезервов = 3;// 1 - Неважно 3 - С резервами
РазмещениеРезервов = 1; // 1 - На складах и в заказах
СостояниеОплаты = 2;// 1 - Неважно 2 - Не оплачен полностью (неоплачен либо оплачен частично)
СостояниеОтгрузки = 1; // 1 - Неважно
ДатаНач = НачалоДня(ЭтотОбъект.РекДатаНач);//начало периода отбора месяцназад
ДатаКон = КонецДня(ЭтотОбъект.РекДатаКон);//конец периода отбора месяцвперед
ПустаяДата=Дата('00010101');
ДатаОплаты=НачалоДня(ТекущаяДата());
ДатаОтгрузки=НачалоДня(ТекущаяДата());
ПричинаЗакрытияЗаказа = Справочники.ПричиныЗакрытияЗаказов.ПустаяСсылка();
//сообщить(""+ДатаНач+" "+ДатаКон+"");
//Пытаемся учитывать только рабочие дни по календарю
ПолучитьДаты = Новый Запрос;
ПолучитьДаты.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| РегламентированныйПроизводственныйКалендарь.Год
|ИЗ
| РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
|ГДЕ
| РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачГода И &КонГода";
ПолучитьДаты.УстановитьПараметр("НачГода",НачалоГода(ТекущаяДата()));
ПолучитьДаты.УстановитьПараметр("КонГода",КонецГода(ТекущаяДата()));
ПолучилиДаты = ПолучитьДаты.Выполнить();
//РекДнейВПлюч - реквизит формы, число
Если ПолучилиДаты.Пустой() Тогда
ТребуемаяДатаОплаты=НачалоДня(ТекущаяДата()-24*60*60*ЭтотОбъект.РекДнейВПлюс);
ТребуемаяДатаОтгрузки=НачалоДня(ТекущаяДата()-24*60*60*ЭтотОбъект.РекДнейВПлюс);
Иначе
ТребуемаяДатаОплаты=ЗаполнениеДокументов.ОпределитьДату(НачалоДня(ТекущаяДата()),-ЭтотОбъект.РекДнейВПлюс);
ТребуемаяДатаОтгрузки=ЗаполнениеДокументов.ОпределитьДату(НачалоДня(ТекущаяДата()),-ЭтотОбъект.РекДнейВПлюс);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ //РАЗЛИЧНЫЕ
| истина КАК Переносить,
| &ПричинаЗакрытияЗаказа КАК ПричинаЗакрытияЗаказа,
| ВЫБОР КОГДА ЕстьNULL(ЗаказыПокупателейОстатки.КоличествоОстаток,0)>0 ТОГДА
| истина ИНАЧЕ ложь КОНЕЦ КАК ЗаказыКоличество,
| ВЫБОР КОГДА ЕстьNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,0)>0 ТОГДА
| истина ИНАЧЕ ложь КОНЕЦ КАК РезервыКоличество,
| ВЫБОР КОГДА ЕстьNULL(РазмещениеЗаказовПокупателейОстатки.КоличествоОстаток,0)>0 ТОГДА
| истина ИНАЧЕ ложь КОНЕЦ КАК РазмещенияКоличество,
| ЕстьNULL(ЗаказыПокупателейОстатки.СуммаВзаиморасчетовОстаток,0) КАК ЗаказыОстаток,
| ЕстьNULL(РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток,0) КАК РасчетыОстаток,
|
| ДокументыЗаказПокупателя.Ссылка,
| ДокументыЗаказПокупателя.Дата,
| ДокументыЗаказПокупателя.Номер,
| ДокументыЗаказПокупателя.Контрагент,
| ДокументыЗаказПокупателя.ДоговорКонтрагента,
| ДокументыЗаказПокупателя.КонтактноеЛицоКонтрагента,
| ДокументыЗаказПокупателя.Организация,
| ДокументыЗаказПокупателя.Подразделение,
| ДокументыЗаказПокупателя.СкладГруппа,
| ДокументыЗаказПокупателя.Ответственный,
| ДокументыЗаказПокупателя.СуммаДокумента,
| ДокументыЗаказПокупателя.ВалютаДокумента,
| ДокументыЗаказПокупателя.ТипЦен,
| ДокументыЗаказПокупателя.ДатаОплаты,
| ДокументыЗаказПокупателя.ДатаОтгрузки,
| ДокументыЗаказПокупателя.УсловиеПродаж,
| ДокументыЗаказПокупателя.Грузополучатель,
| ДокументыЗаказПокупателя.ДисконтнаяКарта,
| ДокументыЗаказПокупателя.Проведен
|
|{ВЫБРАТЬ
| ДокументыЗаказПокупателя.Контрагент.* КАК Контрагент,
| ДокументыЗаказПокупателя.ДоговорКонтрагента.* КАК ДоговорКонтрагента,
| ДокументыЗаказПокупателя.Организация.* КАК Организация,
| ДокументыЗаказПокупателя.КонтактноеЛицоКонтрагента.* КАК КонтактноеЛицоКонтрагента,
| ДокументыЗаказПокупателя.Подразделение.* КАК Подразделение,
| ДокументыЗаказПокупателя.СкладГруппа.* КАК СкладГруппа,
| ДокументыЗаказПокупателя.Ответственный.* КАК Ответственный,
| ДокументыЗаказПокупателя.СуммаДокумента КАК СуммаДокумента,
| ДокументыЗаказПокупателя.ТипЦен.* КАК ТипЦен,
| ДокументыЗаказПокупателя.ВалютаДокумента КАК ВалютаДокумента,
| ДокументыЗаказПокупателя.УсловиеПродаж.* КАК УсловиеПродаж,
| ДокументыЗаказПокупателя.Грузополучатель.* КАК Грузополучатель,
| ДокументыЗаказПокупателя.ДисконтнаяКарта.* КАК ДисконтнаяКарта
|//СВОЙСТВА
|}
|
|ИЗ
| Документ.ЗаказПокупателя КАК ДокументыЗаказПокупателя
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки
| ПО ДокументыЗаказПокупателя.Ссылка = ЗаказыПокупателейОстатки.ЗаказПокупателя
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.РасчетыСКонтрагентами.Остатки КАК РасчетыСКонтрагентамиОстатки
| ПО ДокументыЗаказПокупателя.Ссылка = РасчетыСКонтрагентамиОстатки.Сделка
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки КАК ТоварыВРезервеНаСкладахОстатки
| ПО ДокументыЗаказПокупателя.Ссылка = ТоварыВРезервеНаСкладахОстатки.ДокументРезерва
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки КАК РазмещениеЗаказовПокупателейОстатки
| ПО ДокументыЗаказПокупателя.Ссылка = РазмещениеЗаказовПокупателейОстатки.ЗаказПокупателя
|
|//СОЕДИНЕНИЯ
|
| { ГДЕ
| ДокументыЗаказПокупателя.Контрагент.* КАК Контрагент,
| ДокументыЗаказПокупателя.ДоговорКонтрагента.* КАК ДоговорКонтрагента,
| ДокументыЗаказПокупателя.Организация.* КАК Организация,
| ДокументыЗаказПокупателя.КонтактноеЛицоКонтрагента.* КАК КонтактноеЛицоКонтрагента,
| ДокументыЗаказПокупателя.СкладГруппа.* КАК СкладГруппа,
| ДокументыЗаказПокупателя.Подразделение.* КАК Подразделение,
| ДокументыЗаказПокупателя.Ответственный.* КАК Ответственный,
| ДокументыЗаказПокупателя.СуммаДокумента КАК СуммаДокумента,
| ДокументыЗаказПокупателя.ТипЦен.* КАК ТипЦен,
| ДокументыЗаказПокупателя.ВалютаДокумента КАК ВалютаДокумента,
| ДокументыЗаказПокупателя.УсловиеПродаж.* КАК УсловиеПродаж,
| ДокументыЗаказПокупателя.Грузополучатель.* КАК Грузополучатель,
| ДокументыЗаказПокупателя.ДисконтнаяКарта.* КАК ДисконтнаяКарта
|//СВОЙСТВА
|//КАТЕГОРИИ
| }
|
|ГДЕ
| (ДокументыЗаказПокупателя.Проведен) И
|
| ((ДокументыЗаказПокупателя.Дата >= &ДатаНач) ИЛИ (&ДатаНач = &ПустаяДата)) И
| ((ДокументыЗаказПокупателя.Дата <= &ДатаКон) ИЛИ (&ДатаКон = &ПустаяДата)) И
|
| ( ((&СрокОплатыСравнение = 6) И (ДокументыЗаказПокупателя.ДатаОплаты = &ПустаяДата)) ИЛИ
| ((&СрокОплатыСравнение = 5) И (ДокументыЗаказПокупателя.ДатаОплаты > &ДатаОплаты)) ИЛИ
| ((&СрокОплатыСравнение = 4) И (ДокументыЗаказПокупателя.ДатаОплаты = &ДатаОплаты)) ИЛИ
| ((&СрокОплатыСравнение = 3) И (ДокументыЗаказПокупателя.ДатаОплаты < &ДатаОплаты)) ИЛИ
| ((&СрокОплатыСравнение = 2) И (ДокументыЗаказПокупателя.ДатаОплаты <= &ТребуемаяДатаОплаты)) ИЛИ
| (&СрокОплатыСравнение = 1)
| ) И
|
| ( ((&СрокОтгрузкиСравнение = 6) И (ДокументыЗаказПокупателя.ДатаОтгрузки = &ПустаяДата)) ИЛИ
| ((&СрокОтгрузкиСравнение = 5) И (ДокументыЗаказПокупателя.ДатаОтгрузки > &ДатаОтгрузки)) ИЛИ
| ((&СрокОтгрузкиСравнение = 4) И (ДокументыЗаказПокупателя.ДатаОтгрузки = &ДатаОтгрузки)) ИЛИ
| ((&СрокОтгрузкиСравнение = 3) И (ДокументыЗаказПокупателя.ДатаОтгрузки < &ДатаОтгрузки)) ИЛИ
| ((&СрокОтгрузкиСравнение = 2) И (ДокументыЗаказПокупателя.ДатаОтгрузки <= &ТребуемаяДатаОтгрузки)) ИЛИ
| (&СрокОтгрузкиСравнение = 1)
| ) И
|
| ( ((&СостояниеОплаты = 3) И (ДокументыЗаказПокупателя.СуммаДокумента > 0) И ((РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток IS NULL) ИЛИ (РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток < 0))) ИЛИ
| ((&СостояниеОплаты = 2) И (ДокументыЗаказПокупателя.СуммаДокумента > 0) И (РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток > 0)) ИЛИ
| (&СостояниеОплаты = 1)
| ) И
|
| ( ((&СостояниеОтгрузки = 3) И (ДокументыЗаказПокупателя.СуммаДокумента > 0) И ((ЗаказыПокупателейОстатки.СуммаВзаиморасчетовОстаток IS NULL) ИЛИ (ЗаказыПокупателейОстатки.СуммаВзаиморасчетовОстаток < 0)) И ((ЗаказыПокупателейОстатки.КоличествоОстаток IS NULL) ИЛИ (ЗаказыПокупателейОстатки.КоличествоОстаток < 0))) ИЛИ
| ((&СостояниеОтгрузки = 2) И (ДокументыЗаказПокупателя.СуммаДокумента > 0) И ((ЗаказыПокупателейОстатки.СуммаВзаиморасчетовОстаток > 0) ИЛИ (ЗаказыПокупателейОстатки.КоличествоОстаток > 0))) ИЛИ
| (&СостояниеОтгрузки = 1)
| ) И
|
| ( ((&НаличиеРезервов = 3) И (&РазмещениеРезервов = 3) И ((ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток IS NULL) ИЛИ (ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток < 0)) И (РазмещениеЗаказовПокупателейОстатки.КоличествоОстаток > 0)) ИЛИ
| ((&НаличиеРезервов = 3) И (&РазмещениеРезервов = 2) И (ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0) И ((РазмещениеЗаказовПокупателейОстатки.КоличествоОстаток IS NULL) ИЛИ (РазмещениеЗаказовПокупателейОстатки.КоличествоОстаток < 0))) ИЛИ
| ((&НаличиеРезервов = 3) И (&РазмещениеРезервов = 1) И ((ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0) ИЛИ (РазмещениеЗаказовПокупателейОстатки.КоличествоОстаток > 0))) ИЛИ
| ((&НаличиеРезервов = 2) И ((ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток IS NULL) ИЛИ (ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток < 0)) И ((РазмещениеЗаказовПокупателейОстатки.КоличествоОстаток IS NULL) ИЛИ (РазмещениеЗаказовПокупателейОстатки.КоличествоОстаток < 0))) ИЛИ
| (&НаличиеРезервов = 1)
| )
|
|УПОРЯДОЧИТЬ ПО
| ДокументыЗаказПокупателя.Дата, ДокументыЗаказПокупателя.Номер
|";
Запрос=Новый Запрос;
Запрос.Текст=ТекстЗапроса;
Запрос.УстановитьПараметр("СрокОплатыСравнение",СрокОплатыСравнение);
Запрос.УстановитьПараметр("СрокОтгрузкиСравнение",СрокОтгрузкиСравнение);
Запрос.УстановитьПараметр("НаличиеРезервов",НаличиеРезервов);
Запрос.УстановитьПараметр("СостояниеОплаты",СостояниеОплаты);
Запрос.УстановитьПараметр("СостояниеОтгрузки",СостояниеОтгрузки);
Запрос.УстановитьПараметр("ДатаНач",ДатаНач);
Запрос.УстановитьПараметр("ДатаКон",ДатаКон);
Запрос.УстановитьПараметр("ПустаяДата",ПустаяДата);
Запрос.УстановитьПараметр("ДатаОплаты",ДатаОплаты);
Запрос.УстановитьПараметр("ДатаОтгрузки",ДатаОтгрузки);
Запрос.УстановитьПараметр("ТребуемаяДатаОплаты",ТребуемаяДатаОплаты);
Запрос.УстановитьПараметр("ТребуемаяДатаОтгрузки",ТребуемаяДатаОтгрузки);
Запрос.УстановитьПараметр("РазмещениеРезервов",РазмещениеРезервов);
Запрос.УстановитьПараметр("ПричинаЗакрытияЗаказа",ПричинаЗакрытияЗаказа);
Результат=Запрос.Выполнить();
//Сообщить(Результат.Выбрать().Количество());
Если НЕ Результат.Пустой() Тогда
СписокЗаказов=Новый ТаблицаЗначений;
СписокЗаказов=Результат.Выгрузить();
ЭлементыФормы.СписокЗаказов.СоздатьКолонки();//Поле ввода, ТаблицаЗначений
СоздатьДокументЗЗП(); //переход к процедуре подготовки документа ЗакрытиеЗаказовПокупателей
Иначе
Предупреждение("Просроченные заказы не найдены!");
Возврат;
КонецЕсли;
КонецПроцедуры
вторник, 30 июня 2015 г.
1С получить список просроченных заказов
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий