Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 19:37

Проблема с отчетом

Автор sashadeo, 29 дек 2010, 12:48

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

sashadeo

Процедура Выборка(датан,датак,Тзшка)
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с датан по датаК;
   |Обрабатывать НеПомеченныеНаУдаление;
   |ОбрабатыватьДокументы Все;
   |РеализацияПродукции = Документ.РеализацияПродукции.ТекущийДокумент, Документ.ВозвратПродукции.ТекущийДокумент ;
   |Датадок = Документ.РеализацияПродукции.ТекущийДокумент.Датадок, Документ.ВозвратПродукции.ТекущийДокумент.Датадок;
   |ТорговаяТочка = Документ.РеализацияПродукции.ТекущийДокумент.ТорговаяТочка, Документ.ВозвратПродукции.ТекущийДокумент.ТорговаяТочка;
   |Контрагент = Документ.РеализацияПродукции.ТекущийДокумент.Контрагент, Документ.ВозвратПродукции.ТекущийДокумент.Контрагент;
   |агент = Документ.РеализацияПродукции.Контрагент, Документ.ВозвратПродукции.Контрагент;
   |Водитель = Документ.РеализацияПродукции.Маршрут.Водитель, Документ.ВозвратПродукции.Маршрут.Водитель;
   |Количество = Документ.РеализацияПродукции.Количество;
   |Сумма = Документ.РеализацияПродукции.Сумма;
   |ТМЦ = Документ.РеализацияПродукции.ТМЦ, Документ.ВозвратПродукции.ТМЦ;
   //|МаршрутДоставки = Документ.РеализацияПродукции.Маршрут;     
   |Маршрут = Документ.РеализацияПродукции.Маршрут;     
   |Функция КоличествоСумма = Сумма(Количество);
   |Функция СуммаСумма = Сумма(Сумма);
   |Группировка ТМЦ ;
   //без групп;
   |"//}}ЗАПРОС
   ; 
   Если ВАгент.Выбран()=1 Тогда
      ТекстЗапроса = ТекстЗапроса + "Условие (Агент=ВАгент);"   ;
      Выбор=ВАгент;
   ИначеЕсли Бмаршрут.Выбран()=1 Тогда
      ТекстЗапроса = ТекстЗапроса + "Условие (Маршрут=БМаршрут);"   ;
      Выбор=БМаршрут;
   ИначеЕсли Вводитель.Выбран()=1 Тогда
      ТекстЗапроса = ТекстЗапроса + "Условие (Водитель=ВВодитель);"   ;
      Выбор=ВВодитель;
   КонецЕсли;
   Если ВКонтрагент.Выбран()=1 Тогда
      ТекстЗапроса = ТекстЗапроса + "Условие (Контрагент=ВКонтрагент);"   ;
      Выбор=Выбор+" "+ВКонтрагент;
   ИначеЕсли ВТоргТочка.Выбран()=1 Тогда
      ТекстЗапроса = ТекстЗапроса + "Условие (ТорговаяТочка=ВТоргТочка);"   ;
      Выбор=Выбор+" "+ВТоргТочка;
   ИначеЕсли ВПрод.Выбран()=1 Тогда
      ТекстЗапроса = ТекстЗапроса + "Условие (ТМЦ=ВПрод);"   ;
      Выбор=Выбор+" "+ВПрод;    
      
      
   Конецесли;
   

   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
      Возврат;
   КонецЕсли;       

Пока Запрос.Группировка(1) = 1 Цикл
      Тзшка.НоваяСтрока();
      Тзшка.Продукт=Запрос.ТМЦ;
      Тзшка.Колво=Запрос.КоличествоСумма;
      Тзшка.Сумма=Запрос.СуммаСумма;

Конеццикла;   
КонецПроцедуры


Выполняется запрос, по условию, условие выбирается через поле ввода(например В поле ВПрод выбирается Хлеб400гр(это элемент, выбирается из справочника), затем записывается в тзшку ) с этим все нормально все работает
(Есть иерархический спраочник Номенклатура))
Готоваяпродукция:
                          -хлебная продукция
                                                       -хлеб400гр
                                                       -хлеб3оогр
                                                       -батон
                          -булочная продукция

                          -пряничная
Хотелось бы что бы когда выбирал группу то в Тзшку записывал не хлебная продукция а все элементы группы хлебная продукция...
Кто подскажет как можно реализовать...??? помогите новичку!!!))


prog1c7.7

//например после:
|Контрагент = Документ.РеализацияПродукции.ТекущийДокумент.Контрагент, Документ.ВозвратПродукции.ТекущийДокумент.Контрагент;
//сделай
|КонтрГруп =  Документ.РеализацияПродукции.ТекущийДокумент.Контрагент.Родитель, Документ.ВозвратПродукции.ТекущийДокумент.Контрагент.Родитель;
// потом в условиях добавь
ИначеЕсли ВГруп.Выбран()=1 Тогда
      ТекстЗапроса = ТекстЗапроса + "Условие (КонтрГруп=ВГруп);"   ;
      Выбор=Выбор+" "+ВГруп;
// вообщето запрос написан через ленинград, и можно все укоротить
// но так тоже работать будет
// Вопрос: а почему "ИначеЕсли"? - исключаешь условия получается?

sashadeo

Отчет работает так выберается 6 периодов затем в поле ввода я выбираю Агента(Поле ввода где выбираю Агента называется ВАгент) либо Маршрут(Поле ввода где выбираю Маршрут называется ВМаршрут) Либо водителя(также)
Поле того как я например выбрал Маршрут(маршрут доставки) Ниже в поле выбираю продукцию Поле называется (ВПрод) Так вот если я в поле продукция выберу не еэлемент(Например хлеб 500гр) а группу(например Хлебные изделия) Он мне в итоге выведит только название группы Т.к в Тзшку записывается только название группы а мне надо что бы при выборе группы происходил перебор элементов этой группы и все эти элементы записались в Тзшку а оттуда они уже попадут на печать

DenPlus

Если на форме выбрана группа, то условие в запросе должно выглядеть таким образом:

ТекстЗапроса = ТекстЗапроса + "Условие (Агент В ВАгент)";

где Агент это имя переменной запроса, ВАгент это имя реквизита на форме.

В результат запроса попадут данные по элементам справочника находящихся в группе выбранной на форме.

Конструкция Группировка Агент Без Групп позволяет включить в запрос данные без групп (только элементы).

sashadeo

А как эти данные записать в Тзшку потому что они от туда будут браться...

sashadeo

Пока Запрос.Группировка(1) = 1 Цикл
      Тзшка.НоваяСтрока();
      Тзшка.Продукт=Запрос.ТМЦ;
      Тзшка.Колво=Запрос.КоличествоСумма;
      Тзшка.Сумма=Запрос.СуммаСумма

Что мне надо выбрать вместо Пока Запрос.Группировка(1) = 1 Цикл что бы записались все элементы

prog1c7.7

извиняюсь, у тебя не контрагент.родитель нужен а ТМЦ, ну там
так же но сдругими реквизитами накидай.

prog1c7.7

надо сделать либо как в (2, только с .тмц и .тмцгр) либо как в (4).
для выгрузки в  ТЗ легче использовать Запрос.Выгрузить

sashadeo

Можете прописать как это выглядит буду очень благодарен!!!(выгрузка запроса в Тзшку)

prog1c7.7


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск