fixin (fixin) wrote,
fixin
fixin

Красивый запрос по срокам годности.

Просто красивый код по выводу просроченных товаров на остатке магазина, если срок годности хранится в характеристике номенклатуры.



Р = Новый Структура("Есть, ТабДок", ложь, Неопределено);

 СписокТоваров = Справочники._СпискиТоваров.НайтиПоКоду("ПЭ-СРОКИГ");
 ТЗТовары = Мотивация.ПолучитьТаблицуТоваровПоСпискуТоваров(ТекущаяДата(), СписокТоваров,, САП.МассивИзЗначения("Ставка"));


З = Новый Запрос(
 "ВЫБРАТЬ
 | Т.Номенклатура,
 | Т.Ставка
 |ПОМЕСТИТЬ ТТовары
 |ИЗ
 | &Т КАК Т
 |;
 |
 |////////////////////////////////////////////////////////////////////////////////
 |ВЫБРАТЬ
 | ТТовары.Номенклатура,
 | ТТовары.Ставка,
 | ТоварыНаСкладахОстатки.Склад,
 | ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры,
 | ТоварыНаСкладахОстатки.КоличествоОстаток,
 | ТСвойства.Значение КАК СрокГодности,
 | РАЗНОСТЬДАТ(&Сегодня, ВЫРАЗИТЬ(ТСвойства.Значение КАК ДАТА), ДЕНЬ) КАК ОсталосьДней
 |ИЗ
 | РегистрНакопления.ТоварыНаСкладах.Остатки(, &УсловиеСклада) КАК ТоварыНаСкладахОстатки
 |  ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТТовары КАК ТТовары
 |  ПО ТоварыНаСкладахОстатки.Номенклатура = ТТовары.Номенклатура
 |  ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ТСвойства
 |  ПО ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = ТСвойства.Объект
 |   И (ТСвойства.Свойство = &СвойствоСрокГодности)
 |ГДЕ
 | ТоварыНаСкладахОстатки.КоличествоОстаток > 0
 | И РАЗНОСТЬДАТ(&Сегодня, ВЫРАЗИТЬ(ТСвойства.Значение КАК ДАТА), ДЕНЬ) < ТТовары.Ставка");

 З.УстановитьПараметр("Т", ТЗТовары);
 З.УстановитьПараметр("Сегодня", ТекущаяДата());

 З.УстановитьПараметр("СвойствоСрокГодности", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Срок годности", истина));
 Если ЗначениеЗаполнено(ВыбМагазин) Тогда
  З.Текст = СтрЗАменить(З.Текст, "&УсловиеСклада", "Склад.Магазин = &Магазин");
  З.УстановитьПараметр("Магазин", ВыбМагазин);
 Иначе
  З.Текст = СтрЗАменить(З.Текст, "&УсловиеСклада", "ИСТИНА");
 КонецЕсли;


 ТЗ = З.Выполнить().Выгрузить();
 //САП.ПечатьТЗ(ТЗ);


 ТабДок = Новый ТабличныйДокумент();
 СКД = ПолучитьМакет("СКД");
 Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных;
 Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));
 Компоновщик.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
 СкомпоноватьВТабличныйДокумент(ТабДок, СКД, Компоновщик, Новый Структура("ТЗ", ТЗ));

 Р.Есть = ТЗ.Количество() > 0;
 Р.ТабДок = ТабДок;

 ///ТабДок.Показать();

 Возврат Р;

Tags:
Subscribe
promo fixin december 31, 2037 16:57 1415
Buy for 30 tokens
UPD: Друзья, в августе 2019 года блог переехал на http://fixinchik.ru. Welcome! Добро пожаловать в журнал Осипова Сергея Александровича, известного также как Fixin и Гений 1С. Рекомендую ознакомиться с Часто Задаваемыми Вопросами обо мне. Что я хочу в подарок - список. Мой проект "…
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 132 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →