Имя: Пароль:
1C
1C 7.7
v7: Отчет по документу с группами
0 oleg056
 
27.10.12
16:22
Добрый день делаю запрос к документу ПН
ТекстЗапроса = "
|ПриходнаяНакладная = Документ.ПриходнаяНакладная.ТекущийДокумент;
|ТМЦ = Документ.ПриходнаяНакладная.ТМЦ;
|Кво = Документ.ПриходнаяНакладная.Кво;
|ЦенаЕд = Документ.ПриходнаяНакладная.ЦенаБезНДС;
|Сумма = Документ.ПриходнаяНакладная.СуммаБезНДС;
|Условие (ПриходнаяНакладная = ВыбПриходнаяНакладная);
|Группировка ТМЦ;
|";
Отчет получается без групп по товарам (я понимаю почему)
Возможно ли сделать запрос что были и группы без временной таблицы?
1 Wobland
 
27.10.12
16:27
а что такое группы по товарам? иерархия номенклатуры по родителю? я только на toysql'е такое могу
2 oleg056
 
27.10.12
16:33
(1) Да это иерархия номенклатуры по родителю. т.е в ПН приходит какое то количество товара, а отчет нужен с разбивкой по группам. Неужели нельзя как то выбрать с Справочника.ТМЦ все товары которые есть в Документе ПН?
3 Преднаименование
 
27.10.12
16:36
(2)
Во-первых где у тебя товары
Во-вторых надо наоборот отключат группы для группировки указывая: Без групп.
4 Преднаименование
 
27.10.12
16:39
ТекстЗапроса = "
|ПриходнаяНакладная = Документ.ПриходнаяНакладная.ТекущийДокумент;
|ТМЦ = Документ.ПриходнаяНакладная.ТМЦ;
|Кво = Документ.ПриходнаяНакладная.Кво;
|Сумма = Документ.ПриходнаяНакладная.СуммаБезНДС;
|Условие (ПриходнаяНакладная = ВыбПриходнаяНакладная);
|Группировка ТМЦ;
|Функция СуммаКво =Сумма(Кво);
|Функция СуммаСумма  =Сумма(Сумма);
";
5 Преднаименование
 
27.10.12
16:39
ТМЦ будет выводится с иерархий по умолчанию.
6 oleg056
 
27.10.12
16:41
(3)Не понял. Сейчас отчет выводит то что в Приходной накладной без наименования групп. Если б это был запрос типа SQL то я сдел бы выборку. Все элементы с справочник ТМЦ которые есть в документе
7 Преднаименование
 
27.10.12
16:44
(6) По умолчанию должно выводится с иерархией. Поищи в справке "Без групп".
8 oleg056
 
27.10.12
16:46
(7)Поищи в справке "Без групп". Мне наоборот нужны группы
9 oleg056
 
27.10.12
17:10
up
ТекстЗапроса = "
|ПриходнаяНакладная = Документ.ПриходнаяНакладная.ТекущийДокумент;
|ТМЦ = Документ.ПриходнаяНакладная.ТМЦ;
|Кво = Документ.ПриходнаяНакладная.Кво;
|ЦенаЕд = Документ.ПриходнаяНакладная.ЦенаБезНДС;
|Сумма = Документ.ПриходнаяНакладная.СуммаБезНДС;
|Условие (ПриходнаяНакладная = ВыбПриходнаяНакладная);
|Функция ВКво = Сумма(Кво);
|Функция ВСумма = Сумма(Сумма);
|Группировка ТМЦ;
|";
Этот запрос выводит список товаров без групп. Как можно сделать чтоб тут были группы товаров (Родители товара)
10 Wobland
 
27.10.12
17:12
(9) Родитель = Документ.ПриходнаяНакладная.ТМЦ.Родитель;
Группировка Родитель?

но на меня с этим нечеловеческим языком даже не надейтесь
11 monsterZE
 
27.10.12
17:14
(0) а смысл сего действа какой?
почему не найти документ, выгрузить ТЧ
новая колонка ПолныйКод
Сортировать по ПолныйКод
не?
12 oleg056
 
27.10.12
17:17
(10) Побывал :) Будет ошибка - "Группировка Родитель <<?>> ;"
13 oleg056
 
27.10.12
17:18
(11)Пришло 100 товаров. Нужно распечатать приход с разбивкой по группам
14 oleg056
 
27.10.12
17:19
Вижу только решение только вручную сортировать с помощью циклов и массивов (
15 monsterZE
 
27.10.12
17:27
(13) =) и чего?..
надо распечата один приходник с сортировкой по группам?
я так расходники на склад печатаю, бо товар раскладывается по производителям.. оно?
//-----------------------------------------------
Процедура СортироватьТоварПоПроизводителю()
   ТабДляСортировки = СоздатьОбъект("ТаблицаЗначений");
   ВыгрузитьТабличнуюЧасть(ТабДляСортировки,);
   ТабДляСортировки.НоваяКолонка("Производитель");
   
   ВсегоСтрокДляСортировки = ТабДляСортировки.КоличествоСтрок();
   Для ъ=1 По ВсегоСтрокДляСортировки Цикл                    
       ТабДляСортировки.УстановитьЗначение(ъ,"Производитель",ТабДляСортировки.ПолучитьЗначение(ъ,"Товар").Родитель.ПолныйКод());
   КонецЦикла;                    
   
   ТабДляСортировки.Сортировать("Производитель,Товар");
   ТабДляСортировки.УдалитьКолонку("Производитель");
   ЗагрузитьТабличнуюЧасть(ТабДляСортировки);
   ТабДляСортировки.Очистить();
КонецПроцедуры
//-----------------------------------------------
16 Wobland
 
27.10.12
17:32
ТабДляСортировки.УстановитьЗначение(...ТабДляСортировки.ПолучитьЗначение(...

вот какой извращенец такое придумал?
//это вопль в сторону языка
17 monsterZE
 
27.10.12
17:33
(16) =) зато в одну строку 8-Р
18 Преднаименование
 
27.10.12
17:47
(12) Еше раз: должно выводится с иерархией.

Убери реквизит цены. Сумму и Количество загони в функции

Для проверки попробуй запрос
ТекстЗапроса = "
|ПриходнаяНакладная = Документ.ПриходнаяНакладная.ТекущийДокумент;
|ТМЦ = Документ.ПриходнаяНакладная.ТМЦ;
|Условие (ПриходнаяНакладная = ВыбПриходнаяНакладная);
|Группировка ПриходнаяНакладная;
|Группировка ТМЦ;
|";
19 Преднаименование
 
27.10.12
17:59
Попробовал все работает:

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

   // Подготовка к заполнению выходных форм данными запроса
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   // Заполнение полей "Заголовок"
   Таб.ВывестиСекцию("Заголовок");
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   Пока Запрос.Группировка(1) = 1 Цикл
       // Заполнение полей ТекущийДокумент
       Таб.ВывестиСекцию("ТекущийДокумент");
       Пока Запрос.Группировка(2) = 1 Цикл
           // Заполнение полей Номенклатура
           Таб.ВывестиСекцию("Номенклатура");
       КонецЦикла;
   КонецЦикла;
   // Заполнение полей "Итого"
   Таб.ВывестиСекцию("Итого");
   // Вывод заполненной формы
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать", "");
КонецПроцедуры
20 oleg056
 
29.10.12
21:23
(19) Попробовал - не вышло. Сделал через регистры