Помогите с запросом ТИС .dbf
14.12.2008
15:36
#1
Здравствуйте, товарищи программисты.
1С dbf. У меня есть запрос, который собирается по заказам поставщику и поступлениям ТМЦ. У меня есть переменная Заказ, в которую должен попадать сам заказ или документ основание (тоже заказ) из поступления ТМЦ. Но если у того заказа, который является документом основания для поступления есть тоже документ основание Заказ поставщику, то в переменную должен попадать именно тот заказ. По этой переменной потом делаю группировку в запросе. Как быть в таком случае. Помогите плиз, очень надо. Заранее спасибо.
1С dbf. У меня есть запрос, который собирается по заказам поставщику и поступлениям ТМЦ. У меня есть переменная Заказ, в которую должен попадать сам заказ или документ основание (тоже заказ) из поступления ТМЦ. Но если у того заказа, который является документом основания для поступления есть тоже документ основание Заказ поставщику, то в переменную должен попадать именно тот заказ. По этой переменной потом делаю группировку в запросе. Как быть в таком случае. Помогите плиз, очень надо. Заранее спасибо.
14.12.2008
18:25
#3
"ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ДатаНачала1 по ДатаКонца;
|ОбрабатыватьДокументы Проведенные;
|Фирма = Документ.ЗаказПоставщику.Фирма,
| Документ.ПоступлениеТМЦ.Фирма,
| Документ.ПоступлениеТМЦИмпорт.Фирма;
|ЮрЛицо = Документ.ЗаказПоставщику.Фирма.ЮрЛицо,
| Документ.ПоступлениеТМЦ.Фирма.ЮрЛицо,
| Документ.ПоступлениеТМЦИмпорт.Фирма.ЮрЛицо;
|УпрАналитика = Документ.ЗаказПоставщику.Фирма.УпрАналитика,
| Документ.ПоступлениеТМЦ.Фирма.УпрАналитика,
| Документ.ПоступлениеТМЦИмпорт.Фирма.УпрАналитика;
|Номенклатура = Документ.ЗаказПоставщику.Номенклатура,
| Документ.ПоступлениеТМЦ.Номенклатура,
| Документ.ПоступлениеТМЦИмпорт.Номенклатура;
|Поставщк = Документ.ЗаказПоставщику.Контрагент,
| Документ.ПоступлениеТМЦ.Контрагент,
| Документ.ПоступлениеТМЦИмпорт.Контрагент;
|Договор = Документ.ЗаказПоставщику.Договор,
| Документ.ПоступлениеТМЦ.Договор,
| Документ.ПоступлениеТМЦИмпорт.Договор;
|Заказ = Документ.ЗаказПоставщику.ТекущийДокумент,
| Документ.ПоступлениеТМЦ.ДокОснование.ТекущийДокумент;
|ДатаЗаказа = Документ.ЗаказПоставщику.ДатаДок;
|ДатаПрихода = Документ.ПоступлениеТМЦ.ДатаДок;
|Док = Документ.ЗаказПоставщику.ТекущийДокумент,
| Документ.ПоступлениеТМЦ.ТекущийДокумент,
| Документ.ПоступлениеТМЦИмпорт.ТекущийДокумент;";
ТекстЗапроса = ТекстЗапроса +
"КоличествоП = Документ.ЗаказПоставщику.Количество;
|КоличествоР = Документ.ПоступлениеТМЦ.Количество,
| Документ.ПоступлениеТМЦИмпорт.Количество;
|Функция КоличествоРасход = Сумма(КоличествоР);
|Функция КоличествоПриход = Сумма(КоличествоП);
|СуммаП = Документ.ЗаказПоставщику.Сумма;
|СуммаР = Документ.ПоступлениеТМЦ.Сумма,
| Документ.ПоступлениеТМЦИмпорт.Сумма;
|Функция СуммаРасход = Сумма(СуммаР);
|Функция СуммаПриход = Сумма(СуммаП);
|Условие (НайтиПодчиненные(Док) = 1);";
Если ВыбСклад.Выбран() = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие (Проверка(Док,1, Номенклатура) = 1);";
КонецЕсли;
Если ЗаказПоступление = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие (Проверка(Док,2, Номенклатура) = 1);";
КонецЕсли;
Если Период = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие ( (ДатаПрихода >=ДатаНачала) и (ДатаПрихода <=ДатаКонца) или (ДатаЗаказа >= ДатаНачала) и (ДатаЗаказа <= ДатаКонца));";
КонецЕсли;
Это текст запроса. В принципе, отчет делается на основе отчета Заказы поставщикам.
"
"//{{ЗАПРОС(Сформировать)
|Период с ДатаНачала1 по ДатаКонца;
|ОбрабатыватьДокументы Проведенные;
|Фирма = Документ.ЗаказПоставщику.Фирма,
| Документ.ПоступлениеТМЦ.Фирма,
| Документ.ПоступлениеТМЦИмпорт.Фирма;
|ЮрЛицо = Документ.ЗаказПоставщику.Фирма.ЮрЛицо,
| Документ.ПоступлениеТМЦ.Фирма.ЮрЛицо,
| Документ.ПоступлениеТМЦИмпорт.Фирма.ЮрЛицо;
|УпрАналитика = Документ.ЗаказПоставщику.Фирма.УпрАналитика,
| Документ.ПоступлениеТМЦ.Фирма.УпрАналитика,
| Документ.ПоступлениеТМЦИмпорт.Фирма.УпрАналитика;
|Номенклатура = Документ.ЗаказПоставщику.Номенклатура,
| Документ.ПоступлениеТМЦ.Номенклатура,
| Документ.ПоступлениеТМЦИмпорт.Номенклатура;
|Поставщк = Документ.ЗаказПоставщику.Контрагент,
| Документ.ПоступлениеТМЦ.Контрагент,
| Документ.ПоступлениеТМЦИмпорт.Контрагент;
|Договор = Документ.ЗаказПоставщику.Договор,
| Документ.ПоступлениеТМЦ.Договор,
| Документ.ПоступлениеТМЦИмпорт.Договор;
|Заказ = Документ.ЗаказПоставщику.ТекущийДокумент,
| Документ.ПоступлениеТМЦ.ДокОснование.ТекущийДокумент;
|ДатаЗаказа = Документ.ЗаказПоставщику.ДатаДок;
|ДатаПрихода = Документ.ПоступлениеТМЦ.ДатаДок;
|Док = Документ.ЗаказПоставщику.ТекущийДокумент,
| Документ.ПоступлениеТМЦ.ТекущийДокумент,
| Документ.ПоступлениеТМЦИмпорт.ТекущийДокумент;";
ТекстЗапроса = ТекстЗапроса +
"КоличествоП = Документ.ЗаказПоставщику.Количество;
|КоличествоР = Документ.ПоступлениеТМЦ.Количество,
| Документ.ПоступлениеТМЦИмпорт.Количество;
|Функция КоличествоРасход = Сумма(КоличествоР);
|Функция КоличествоПриход = Сумма(КоличествоП);
|СуммаП = Документ.ЗаказПоставщику.Сумма;
|СуммаР = Документ.ПоступлениеТМЦ.Сумма,
| Документ.ПоступлениеТМЦИмпорт.Сумма;
|Функция СуммаРасход = Сумма(СуммаР);
|Функция СуммаПриход = Сумма(СуммаП);
|Условие (НайтиПодчиненные(Док) = 1);";
Если ВыбСклад.Выбран() = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие (Проверка(Док,1, Номенклатура) = 1);";
КонецЕсли;
Если ЗаказПоступление = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие (Проверка(Док,2, Номенклатура) = 1);";
КонецЕсли;
Если Период = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие ( (ДатаПрихода >=ДатаНачала) и (ДатаПрихода <=ДатаКонца) или (ДатаЗаказа >= ДатаНачала) и (ДатаЗаказа <= ДатаКонца));";
КонецЕсли;
Это текст запроса. В принципе, отчет делается на основе отчета Заказы поставщикам.
"
Читают тему
(гостей: 1)