вторник, 17 января 2017 г.

Изменения внутри запроса

Внутрь запроса есть возможность внести изменения в определенных местах кода по определенному условию


Пример:
...
 ТекстЗапроса =
 "ВЫБРАТЬ
...
  | РегистрНакопления.ТоварыКОтгрузке.Остатки(
  |   &ДатаОтгрузки,
  |   Склад = &Склад
  |%ОтборОстатков%
  | ) КАК РаспоряженияКОтгрузке
  |
  |ИНДЕКСИРОВАТЬ ПО
  | ДокументОтгрузки
  |;
...
 |ПО
 | Помещение";

 Запрос = Новый Запрос;
 Запрос.Текст = ТекстЗапроса;



  // Заполним шаблоны в тексте запроса
  Если СкладыСервер.НачинатьОтгрузкуПослеФормированияЗаданияНаПеревозку(Склад) Тогда
  
   Запрос.Текст = СтрЗаменить(Запрос.Текст,
    "%ОтборОстатков%",
    "     И ((НЕ ДокументОтгрузки ССЫЛКА Документ.РеализацияТоваровУслуг
    |      И НЕ ДокументОтгрузки ССЫЛКА Документ.ПеремещениеТоваров
    |      )
    |      ИЛИ
...
    |       ГДЕ
    |        ЗаданияНаПеревозку.СкладСовпадает))");
  
  Иначе
  
   Запрос.Текст = СтрЗаменить(Запрос.Текст,
    "%ОтборОстатков%",
    "");
   
  КонецЕсли;