Имя: Пароль:
1C
1С v8
СКД
0 DeMi4
 
30.11.11
11:24
Можно ли данный запрос реализовать в СКД

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

   Таб=Создатьобъект("Таблица");
   Таб.ИсходнаяТаблица("Таблица");
   Если СРазбивкой=0 Тогда
       заголовок="сводный по узлу с "+ДатаНачала+" по "+ДатаКонец;
   Иначе    
       заголовок="с разбивкой по ОС с "+ДатаНачала+" по "+ДатаКонец;
   КонецЕсли;
   Таб.ВывестиСекцию("Шапка");
   // для итогов по типам движений
   спИтого=СоздатьОбъект("СписокЗначений");
   Для Инд=1 По 6 Цикл
       спИтого.ДобавитьЗначение(0);
   КонецЦикла;
   // основная часть
   Пока Запрос.Группировка("ОС")=1 Цикл // цикл по ОС
       ос_наим=Запрос.ОС.Наименование;
       н_ост=Запрос.Нач;
       спИтого.УстановитьЗначение(1,спИтого.ПолучитьЗначение(1)+н_ост);
       к_ост=Запрос.Кон;
       спИтого.УстановитьЗначение(6,спИтого.ПолучитьЗначение(6)+к_ост);  
       пост=0;
       прод=0;
       возв=0;
       спис=0;
       // типы движения  
       Пока Запрос.Группировка("ТипДвижения")<>0 Цикл
           Если Запрос.ТипДвижения=Перечисление.ТипДвиженияТовара.Поступило Тогда
               пост=Запрос.ПриходСум;
               спИтого.УстановитьЗначение(2,спИтого.ПолучитьЗначение(2)+пост);
           КонецЕсли;
           Если Запрос.ТипДвижения=Перечисление.ТипДвиженияТовара.Продано Тогда
               прод=Запрос.РасходСум;
               спИтого.УстановитьЗначение(3,спИтого.ПолучитьЗначение(3)+прод);
           КонецЕсли;
           Если Запрос.ТипДвижения=Перечисление.ТипДвиженияТовара.Возвращено Тогда
               возв=Запрос.РасходСум;
               спИтого.УстановитьЗначение(4,спИтого.ПолучитьЗначение(4)+возв);
           КонецЕсли;
           Если Запрос.ТипДвижения=Перечисление.ТипДвиженияТовара.Списано Тогда
               спис=Запрос.РасходСум;
               спИтого.УстановитьЗначение(5,спИтого.ПолучитьЗначение(5)+спис);
           КонецЕсли;
       КонецЦикла;

       // выводим секцию ОС
       Если СРазбивкой=1 Тогда
           Таб.ВывестиСекцию("Строка");
       КонецЕсли;
   КонецЦикла;        
   // итог по узлу
   ос_наим="ПО УЗЛУ В ЦЕЛОМ";
   н_ост=спИтого.ПолучитьЗначение(1);
   пост =спИтого.ПолучитьЗначение(2);
   прод =спИтого.ПолучитьЗначение(3);
   возв =спИтого.ПолучитьЗначение(4);
   спис =спИтого.ПолучитьЗначение(5);
   к_ост=спИтого.ПолучитьЗначение(6);
   Таб.ВывестиСекцию("Строка");
   
   Таб.ВывестиСекцию("Подвал");
   Таб.ТолькоПросмотр(1);  
   Таб.ПараметрыСтраницы(2);
   Таб.Опции(0, 0, 5, 0, "ОпцииСтдТов");
   Таб.Показать("Отчет по движению товаров.");
1 Wobland
 
30.11.11
11:29
а почему бы и нет, Ватсон?
2 Wobland
 
30.11.11
11:29
Груви, он не умеет давать имена темам!
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн