Имя: Пароль:
1C
1C 7.7
v7: вывести СуммаПриход
,
0 Pechka
 
13.09.12
10:45
Выводится отчет с подразделениями (АТЦ,Инструмент участок и т.д.),продукцией. Нужно дополнительно для каждого подразделения вывести "Сумму-приход"(то есть еще одну колонку),которая формируется в др отчете-Производственные затраты,то есть объединить их. Для этого сделала второй запрос , читает с регистра..вместо суммы  выходят нули..
Прикрепляю свой код,второй запрос сама написала.Помогите пожалуйста исправить

//******************************************************************************
Функция ПроверкаДат()
   Если ДатаНач > ПолучитьДатуТА() Тогда
       ДатаНач = ПолучитьДатуТА();
       Предупреждение("Начальная дата не может быть
                      |больше даты точки актуальности!");
       Возврат 0;
   ИначеЕсли ДатаНач > ДатаКон Тогда
       ДатаНач = ДатаКон;
       Предупреждение("Начальная дата не может быть больше
                      |конечной даты формирования отчета!");
       Возврат 0;
   КонецЕсли;
   Возврат 1;
КонецФункции // ПроверкаДат()

//*******************************************
//{{БУХГАЛТЕРСКИЙ ЗАПРОС(Сформировать)

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

   Если ПустоеЗначение(ВыбЗаказчик) = 0 Тогда
       ТекстОбъемДеятельности = ТекстОбъемДеятельности + "
       |Условие (Заказчик = ВыбЗаказчик);";
   КонецЕсли;
   

   ЗапросПоказателиДеятельности = СоздатьОбъект("Запрос");
   ЗапросПоказателиДеятельности.Выполнить(ТекстОбъемДеятельности);
       
         
//        
   Пока ЗапросПоказателиДеятельности.Группировка("Подразделение") = 1 Цикл  
       
           //Если  ЗапросПоказателиДеятельности.Подразделение.Наименование = "АТЦ" Тогда
           //      ЕдИзм = "м/час";
           //КонецЕсли;    
       
       Пока ЗапросПоказателиДеятельности.Группировка("Заказчик") = 1 Цикл
           
               
                   
           
           Пока ЗапросПоказателиДеятельности.Группировка("Продукция") = 1 Цикл
               
               
               
               Пока ЗапросПоказателиДеятельности.Группировка("Владелец") = 1 Цикл
                   
                     ЕдИзм = " ";
                     
                   
                   Если ЗапросПоказателиДеятельности.Подразделение.Наименование = "АТЦ" Тогда
                     ЕдИзм = "м/час" ;
           //    //
           //
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;  
               
                    Если ЗапросПоказателиДеятельности.Подразделение.Наименование = "Инструментальный участок" Тогда
               ЕдИзм = "час" ;  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;  
               
                     Если ЗапросПоказателиДеятельности.Подразделение.Наименование = "Компрессорная" Тогда
               ЕдИзм = "куб.м." ;  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
               
                     Если ЗапросПоказателиДеятельности.Подразделение.Наименование = "Котельная" Тогда
               ЕдИзм = "гкал" ;  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
               
                      Если ЗапросПоказателиДеятельности.Подразделение.Наименование = "Насосная" Тогда
               ЕдИзм = "куб.м.";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
               
                      Если ЗапросПоказателиДеятельности.Подразделение.Наименование = "ОТК" Тогда
               ЕдИзм = "час";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
                   
                    Если ЗапросПоказателиДеятельности.Подразделение.Наименование = "РМЦ" Тогда
               ЕдИзм = "час";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
                   
                    Если ЗапросПоказателиДеятельности.Подразделение.Наименование = "СГМ" Тогда
               ЕдИзм = "час";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
                   
                   Если ЗапросПоказателиДеятельности.Подразделение.Наименование = "Участок по обслуживанию сантехники" Тогда
               ЕдИзм = "час";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
                   
                    Если ЗапросПоказателиДеятельности.Подразделение.Наименование = "ЦЗЛ" Тогда
               ЕдИзм = "пробы";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
               
                    Если ЗапросПоказателиДеятельности.Подразделение.Наименование = "Электроцех" Тогда
               ЕдИзм = "пробы";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;  
               
                    Если ЗапросПоказателиДеятельности.Подразделение.Наименование = "ЭТЛ" Тогда
               ЕдИзм = "час";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
                   
               //Таб.ВывестиСекцию("Строка");
                   
               КонецЦикла;
               
           КонецЦикла;

       КонецЦикла;

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

       
         ЗапросПолучитьСум = СоздатьОбъект("Запрос");
   ЗапросПолучитьСум.Выполнить(ТекстЗапроса);
       
   
               
   
   
       Пока ЗапросПолучитьСум.Группировка("Подразделение") = 1 Цикл
           
       //Пока ЗапросПолучитьСум.Группировка("Заказчик") = 1 Цикл
       Пока ЗапросПолучитьСум.Группировка("Продукция") = 1 Цикл
       Пока ЗапросПолучитьСум.Группировка("Владелец") = 1 Цикл
                 
           
           
               Сум = "";
       
             Если ЗапросПолучитьСум.Подразделение.Наименование = "АТЦ" Тогда
                     
                               
                 Сум = ЗапросПолучитьСум.СумПриход;
                   Таб.ВывестиСекцию("Строка");
                     
               КонецЕсли;  
           
       КонецЦикла;
      // КонецЦикла;
     КонецЦикла;
    КонецЦикла;    
    ////
         
   
   
   
   Таб.Опции(0,0,0,0);

   
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать","");
   
КонецПроцедуры

//}}БУХГАЛТЕРСКИЙ ЗАПРОС  

Процедура ПриОткрытии()  
   
   
   

//{{ИНИЦИАЛИЗАЦИЯ БУХГАЛТЕРСКОГО ЗАПРОСА(Сформировать)
   ДатаНач = НачМесяца(ПолучитьДатуТА());
   ДатаКон = КонМесяца(ПолучитьДатуТА());

//{{ИНИЦИАЛИЗАЦИЯ БУХГАЛТЕРСКОГО ЗАПРОСА

КонецПроцедуры
1 Ёпрст
 
13.09.12
10:54
|Период с ДатаНач" + ПериодПо + ";

это что-то за гранью..
2 Ёпрст
 
13.09.12
10:55
и это тоже:

Если ЗапросПолучитьСум.Подразделение.Наименование = "АТЦ" Тогда

Это условие НИКОГДА не выполнится, ежели что
3 Ёпрст
 
13.09.12
10:55
либо сравнивай ссылки на объект справочника, или хотя бы СокрЛП(Наименование)
4 Pechka
 
13.09.12
11:33
то есть Если СокрЛП(Наименование) = "АТЦ" Тогда
       Сум = ЗапросПолучитьСум.СумПриход;

так? ругается на Наименование: Переменная не определена (Наименование)
5 Zmich
 
13.09.12
11:39
Если СокрЛП(ЗапросПолучитьСум.Подразделение.Наименование) = "АТЦ" Тогда
6 Ёпрст
 
13.09.12
11:40
(4) Печка, тебя явно нужно раскочегарить!
:)

ну подумай хоть мальца
7 Neg
 
13.09.12
11:42
(0) Вау!
8 Ёпрст
 
13.09.12
11:42
И это, сравнивать по наименованию в коде - моветон, исправят наименование с справочнике и привет котёнку - весь твой код коту под хвост
9 Pechka
 
13.09.12
11:44
Если СокрЛП(ЗапросПолучитьСум.Подразделение.Наименование) = "АТЦ" Тогда

по-прежнему нули выходят
10 Pechka
 
13.09.12
11:46
а нет! цифры выходят те ,которые нужно,но за пределами таблицы.Как быть?
11 Ёпрст
 
13.09.12
11:46
(9) прям таки нули ?
12 Pechka
 
13.09.12
11:48
ну нули,то,что нужно..но они внизу таблицы,отдельно как то
13 Pechka
 
13.09.12
11:48
не нули))
14 Zmich
 
13.09.12
11:48
Используй в непонятных ситуациях конструкцию после выполнения запроса:

ТЗ = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ТЗ);
ТЗ.ВыбратьСтроку();

и анализируй, что за цифры у тебя получаются в запросе.
15 Pechka
 
13.09.12
11:56
Цифры как раз получаются СуммаПриход для каждого подразделения.. А когда формируется отчет,выводятся цифры только для АТЦ,которые и нужны,но они почему-то снизу таблицы..Примерно так выглядит:
АТЦ    
АТЦ        
Электроцех    
БВЦ
           515.000
           882570.52
           505875.77
16 Ёпрст
 
13.09.12
12:01
(15) дык , как написала - так и выводит.
В начале, результаты первого запроса в Таблицу, затем - результаты второго запроса, в котором только суммы.
17 Ёпрст
 
13.09.12
12:03
у тябя  документ КорректировкаИзмерителей, толкает регистр ПроизводственныеЗатраты ?
если да, то пиши ОДИН запрос к регистру ПроизводственныеЗатраты , из которого доставай всё что нужно, а про первый запрос забудь.
18 Pechka
 
13.09.12
13:41
сделала один запрос к регистру,цифры выходят,но уже не выводит Заказчик..В первом запросе обращение к документу,а в регистре нет Заказчика..
19 Zmich
 
13.09.12
13:45
(18). Добавь в текст запроса

|Док = Регистр.ПроизводственныеЗатраты.ТекущийДокумент;

Потом

Заказчик = Запрос.Док.Заказчик;
20 Pechka
 
13.09.12
14:00
Ёпрст4, получились цифры и заказчик вышел,прописала путь -    |Заказчик        = Регистр.ПроизводственныеЗатраты.Продукция.КМ_ПодразделениеЗаказчик; Только теперь не выходит показатель деятельности,на печатной форме только записан как : <глФорматКол(ЗапросПоказателиДеятельности.База)>  
А функция база как раз с первого запроса,как ее вытащить оттуда
21 Ёпрст
 
13.09.12
14:30
(20) База       = Сумма(Количество);

это надо "как-то" в запросе ?
илии что ?
22 Ёпрст
 
13.09.12
14:30
покажите финальный текст запроса
23 Pechka
 
13.09.12
14:33
//******************************************************************************
//
Функция ПроверкаДат()
   Если ДатаНач > ПолучитьДатуТА() Тогда
       ДатаНач = ПолучитьДатуТА();
       Предупреждение("Начальная дата не может быть
                      |больше даты точки актуальности!");
       Возврат 0;
   ИначеЕсли ДатаНач > ДатаКон Тогда
       ДатаНач = ДатаКон;
       Предупреждение("Начальная дата не может быть больше
                      |конечной даты формирования отчета!");
       Возврат 0;
   КонецЕсли;
   Возврат 1;
КонецФункции // ПроверкаДат()

//*******************************************
//{{БУХГАЛТЕРСКИЙ ЗАПРОС(Сформировать)

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

   Если ПустоеЗначение(ВыбЗаказчик) = 0 Тогда
       ТекстОбъемДеятельности = ТекстОбъемДеятельности + "
       |Условие (Заказчик = ВыбЗаказчик);";
   КонецЕсли;
   

   ЗапросПоказателиДеятельности = СоздатьОбъект("Запрос");
   ЗапросПоказателиДеятельности.Выполнить(ТекстОбъемДеятельности);
       

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

       
       
         ЗапросПолучитьСум = СоздатьОбъект("Запрос");
   ЗапросПолучитьСум.Выполнить(ТекстЗапроса);
   
                 
       
              //Заказчик = ЗапросПолучитьСум.Докум.Заказчик;
   
   
       Пока ЗапросПолучитьСум.Группировка("Подразделение") = 1 Цикл  
       
       Пока ЗапросПолучитьСум.Группировка("Заказчик") = 1 Цикл
           
           
           Пока ЗапросПолучитьСум.Группировка("Продукция") = 1 Цикл
               
               
               Пока ЗапросПолучитьСум.Группировка("Владелец") = 1 Цикл
                   
                     ЕдИзм = " ";
                     Сум = " ";
                     
                   Если ЗапросПолучитьСум.Подразделение.Наименование = "АТЦ" Тогда
                     Сум = ЗапросПолучитьСум.СумПриход;
                   //Если ЗапросПолучитьСум.Подразделение.Наименование = "АТЦ" Тогда
                     ЕдИзм = "м/час" ;
           //    //
           //
                   Таб.ВывестиСекцию("Строка");
                   КонецЕсли;  
               
                    Если ЗапросПолучитьСум.Подразделение.Наименование = "Инструментальный участок" Тогда
               ЕдИзм = "час" ;  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;  
               
                     Если ЗапросПолучитьСум.Подразделение.Наименование = "Компрессорная" Тогда
               ЕдИзм = "куб.м." ;  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
               
                     Если ЗапросПолучитьСум.Подразделение.Наименование = "Котельная" Тогда
               ЕдИзм = "гкал" ;  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
               
                      Если ЗапросПолучитьСум.Подразделение.Наименование = "Насосная" Тогда
               ЕдИзм = "куб.м.";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
               
                      Если ЗапросПолучитьСум.Подразделение.Наименование = "ОТК" Тогда
               ЕдИзм = "час";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
                   
                    Если ЗапросПолучитьСум.Подразделение.Наименование = "РМЦ" Тогда
               ЕдИзм = "час";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
                   
                    Если ЗапросПолучитьСум.Подразделение.Наименование = "СГМ" Тогда
               ЕдИзм = "час";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
                   
                   Если ЗапросПолучитьСум.Подразделение.Наименование = "Участок по обслуживанию сантехники" Тогда
               ЕдИзм = "час";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
                   
                    Если ЗапросПолучитьСум.Подразделение.Наименование = "ЦЗЛ" Тогда
               ЕдИзм = "пробы";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
               
                    Если ЗапросПолучитьСум.Подразделение.Наименование = "Электроцех" Тогда
               ЕдИзм = "пробы";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;  
               
                    Если ЗапросПолучитьСум.Подразделение.Наименование = "ЭТЛ" Тогда
               ЕдИзм = "час";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
                   
           
                   
               КонецЦикла;
               
           КонецЦикла;

       КонецЦикла;

   КонецЦикла;

   //
   
   Таб.Опции(0,0,0,0);

   
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать","");
   
КонецПроцедуры

//}}БУХГАЛТЕРСКИЙ ЗАПРОС  

Процедура ПриОткрытии()  
   
   
   

//{{ИНИЦИАЛИЗАЦИЯ БУХГАЛТЕРСКОГО ЗАПРОСА(Сформировать)
   ДатаНач = НачМесяца(ПолучитьДатуТА());
   ДатаКон = КонМесяца(ПолучитьДатуТА());

//{{ИНИЦИАЛИЗАЦИЯ БУХГАЛТЕРСКОГО ЗАПРОСА

КонецПроцедуры
24 Pechka
 
13.09.12
14:34
да,эту базу как то в запрос или не знаю уж..
25 Pechka
 
13.09.12
14:35
показатель деятельности колонка-это с документа корректир измерителей-на производство.вот эти цифры теперь надо бы вытащить
26 Ёпрст
 
13.09.12
14:35
как то всё не так.. зачем вам 2 запроса?
27 Pechka
 
13.09.12
15:24
был сначала первый запрос,выводил несколько столбцов,сказали добавить СуммаПриход..а она берется из производственных затрат..то есть регистры уже..
28 Ёпрст
 
13.09.12
15:25
(27) ну дык ответь на (17)
29 Pechka
 
13.09.12
15:29
блин,я не понимаю..когда выводится отчет производственные затраты,нажимаю на строку продукция,выходит окошко ,выбираю -по документам и там вылезает этот документ Корректировка..
30 Pechka
 
13.09.12
15:30
я не понимаю можно ли в регистр его засунуть Оо и каким образом
31 Ёпрст
 
13.09.12
15:31
ээх..
Открой в предприятии общий журнал документов, найди в нём любой проведенный документ вида КМ_КорректировкаИзмерителей

на нём ПКМ (Правой Кнопкой Мыши) - далее, в контекстном меню быбери Движения регистра - выбери регистр ПроизводственныеЗатраты... Там есть движения у указанного вида документа ?
Али нет ?
32 Pechka
 
13.09.12
15:38
есть))) галочка стоит!
33 Ёпрст
 
13.09.12
15:41
(32) ну дык, тогда все данные бери только с регистра, смотри, какие там есть ресурсы .. и смотри движения в самом предприятии, что туда пишется.
34 Pechka
 
13.09.12
15:46
есть и кол-во и сумма
|Сумма = Регистр.ПроизводственныеЗатраты.Сумма;  
|Количество=Регистр.ПроизводственныеЗатраты.Количество;
|Функция База       = Сумма(Количество);

Сейчас выходит количество из производственных затрат,а нужно же из документа
35 Ёпрст
 
13.09.12
15:48
(34) ну блин, забудь ты про документ, у тебя все данные должны быть в регистре, какие еще там есть ресурсы, помимо ресурса
Количество ?
36 Ёпрст
 
13.09.12
15:49
+ Регистр поди остатков ?
тогда в тексте запроса, так:

//|Функция База       = Сумма(Количество);
|Функция БазаПриход       = Приход(Количество);
|Функция БазаРасход       = Расход(Количество);
37 Ёпрст
 
13.09.12
15:50
Если оборотов, то оставляешь как было, т.е так:
|Функция База       = Сумма(Количество);
38 Pechka
 
13.09.12
15:56
ресурсы-количество,сумма,суммаНУ,суммаПР,количествоОС..
39 Ёпрст
 
13.09.12
16:02
(38) ну вот..
Тип регистра какой еще ?
Смотри его свойства в пофигураторе (там переключатель - останковый он или оборотный)
40 Pechka
 
13.09.12
16:05
уффф.знать бы где это еще смотреть :/
41 Ёпрст
 
13.09.12
16:07
(40) два раза щелкни мышой на нужном регистре в дереве метаданных в пофигураторе - откроется окошко свойств данного регистра, там и гляди
42 Pechka
 
13.09.12
16:17
я неуч) Остатки это
43 Ёпрст
 
13.09.12
16:18
ну вот, теперь пиши как в (36)..и получай аналогичным способом остальные ресурсы:

,сумма,суммаНУ,суммаПР,количествоОС
44 Ёпрст
 
13.09.12
16:18
думаю, этого более чем достаточно
45 Pechka
 
13.09.12
16:34
так?а на печатной форме что написать?
   
|Продукция = Регистр.ПроизводственныеЗатраты.Продукция;
|Подразделение=Регистр.ПроизводственныеЗатраты.Подразделение;
|ВидЗатрат = Регистр.ПроизводственныеЗатраты.ВидЗатрат;
|Затрата= Регистр.ПроизводственныеЗатраты.Затрата;
|Заказчик= Регистр.ПроизводственныеЗатраты.Продукция.КМ_ПодразделениеЗаказчик;
|Владелец= Регистр.ПроизводственныеЗатраты.Владелец;
|Заказ= Регистр.ПроизводственныеЗатраты.Заказ;
|Статус= Регистр.ПроизводственныеЗатраты.Статус;
|Сумма           = Регистр.ПроизводственныеЗатраты.Сумма;
|СуммаНУ         = Регистр.ПроизводственныеЗатраты.СуммаНУ;
|СуммаПР         = Регистр.ПроизводственныеЗатраты.СуммаПР;
|Количество      =Регистр.ПроизводственныеЗатраты.Количество;
|КоличествоОС  =Регистр.ПроизводственныеЗатраты.КоличествоОС;
//|Функция База       = Сумма(Количество);
|Функция БазаПриход       = Приход(Количество);
|Функция БазаРасход       = Расход(Количество);
|Группировка Подразделение без групп;
|Функция СумПриход = Приход(Сумма);
|Группировка Заказчик без групп;
|Группировка Продукция без групп;
|Группировка Владелец без групп;
46 Ёпрст
 
13.09.12
16:48
(45) почти, нет еще сумм

|Функция СуммаПриход       = Приход(Сумма);
|Функция СуммаРасход       = Расход(Сумма);
....
|Функция СуммаНУПриход       = Приход(СуммаНУ);
|Функция СуммаНУРасход       = Расход(СуммаНУ);    

и т.д..

на выходе получай эти суммы:

Запрос.СуммаНУПриход, Запрос.СуммаРасход        
и т.д.

т.е получай значения функций при обходе группировок запроса.
47 Ёпрст
 
13.09.12
16:48
+46 оговорка, не сумм, а функций
:)
48 Pechka
 
13.09.12
17:05
написала..а что в печатной формме то писать?
49 Ёпрст
 
13.09.12
17:31
(48) так и пиши  Запрос.СуммаРасход ..тип ячейки - выражение.
50 Ёпрст
 
13.09.12
17:31
:)
51 Pechka
 
14.09.12
08:07
Спасибо огромное!!получилось!:)
52 Pechka
 
14.09.12
08:40
окончательный код:
//******************************************************************************
//
Функция ПроверкаДат()
   Если ДатаНач > ПолучитьДатуТА() Тогда
       ДатаНач = ПолучитьДатуТА();
       Предупреждение("Начальная дата не может быть
                      |больше даты точки актуальности!");
       Возврат 0;
   ИначеЕсли ДатаНач > ДатаКон Тогда
       ДатаНач = ДатаКон;
       Предупреждение("Начальная дата не может быть больше
                      |конечной даты формирования отчета!");
       Возврат 0;
   КонецЕсли;
   Возврат 1;
КонецФункции // ПроверкаДат()

//*******************************************
//{{БУХГАЛТЕРСКИЙ ЗАПРОС(Сформировать)

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

   Если ПустоеЗначение(ВыбЗаказчик) = 0 Тогда
       ТекстОбъемДеятельности = ТекстОбъемДеятельности + "
       |Условие (Заказчик = ВыбЗаказчик);";
   КонецЕсли;
   

   ЗапросПоказателиДеятельности = СоздатьОбъект("Запрос");
   ЗапросПоказателиДеятельности.Выполнить(ТекстОбъемДеятельности);
       

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

                               
       
         ЗапросПолучитьСум = СоздатьОбъект("Запрос");
   ЗапросПолучитьСум.Выполнить(ТекстЗапроса);
   

   
   
       Пока ЗапросПолучитьСум.Группировка("Подразделение") = 1 Цикл  
       
       Пока ЗапросПолучитьСум.Группировка("Заказчик") = 1 Цикл
           
           
           Пока ЗапросПолучитьСум.Группировка("Продукция") = 1 Цикл
               
                     ЕдИзм = " ";
                     Сум = " ";
                     
                   Если ЗапросПолучитьСум.Подразделение.Наименование = "АТЦ" Тогда
                       Сум = ЗапросПолучитьСум.СуммаПриход;
                 
                     ЕдИзм = "м/час" ;
           //    //
           //
                   Таб.ВывестиСекцию("Строка");
                   КонецЕсли;  
               
                    Если ЗапросПолучитьСум.Подразделение.Наименование = "Инструментальный участок" Тогда
               ЕдИзм = "час" ;  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;  
               
                     Если ЗапросПолучитьСум.Подразделение.Наименование = "Компрессорная" Тогда
               Сум = ЗапросПолучитьСум.СуммаПриход;
               ЕдИзм = "куб.м." ;  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
               
                     Если ЗапросПолучитьСум.Подразделение.Наименование = "Котельная" Тогда
               Сум = ЗапросПолучитьСум.СуммаПриход;
               ЕдИзм = "гкал" ;  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
               
                      Если ЗапросПолучитьСум.Подразделение.Наименование = "Насосная" Тогда
               Сум = ЗапросПолучитьСум.СуммаПриход;          
               ЕдИзм = "куб.м.";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
               
                      Если ЗапросПолучитьСум.Подразделение.Наименование = "ОТК" Тогда  
               Сум = ЗапросПолучитьСум.СуммаПриход;          
               ЕдИзм = "час";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
                   
                    Если ЗапросПолучитьСум.Подразделение.Наименование = "РМЦ" Тогда
               ЕдИзм = "час";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
                   
                    Если ЗапросПолучитьСум.Подразделение.Наименование = "СГМ" Тогда
               Сум = ЗапросПолучитьСум.СуммаПриход;        
               ЕдИзм = "час";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
                   
                   Если ЗапросПолучитьСум.Подразделение.Наименование = "Участок по обслуживанию сантехники" Тогда
               Сум = ЗапросПолучитьСум.СуммаПриход;        
               ЕдИзм = "час";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
                   
                    Если ЗапросПолучитьСум.Подразделение.Наименование = "ЦЗЛ" Тогда
               Сум = ЗапросПолучитьСум.СуммаПриход;        
               ЕдИзм = "пробы";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
               
                    Если ЗапросПолучитьСум.Подразделение.Наименование = "Электроцех" Тогда
               Сум = ЗапросПолучитьСум.СуммаПриход;        
               ЕдИзм = "пробы";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;  
               
                    Если ЗапросПолучитьСум.Подразделение.Наименование = "ЭТЛ" Тогда
               ЕдИзм = "час";  
                   Таб.ВывестиСекцию("Строка");
               КонецЕсли;
                   
           //ИначеЕсли
           //Иначе
                   
           //    КонецЦикла;
               
           КонецЦикла;

       КонецЦикла;

   КонецЦикла;

   //
   
   Таб.Опции(0,0,0,0);

   
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать","");
   
КонецПроцедуры

//}}БУХГАЛТЕРСКИЙ ЗАПРОС  

Процедура ПриОткрытии()  
   
   
   

//{{ИНИЦИАЛИЗАЦИЯ БУХГАЛТЕРСКОГО ЗАПРОСА(Сформировать)
   ДатаНач = НачМесяца(ПолучитьДатуТА());
   ДатаКон = КонМесяца(ПолучитьДатуТА());

//{{ИНИЦИАЛИЗАЦИЯ БУХГАЛТЕРСКОГО ЗАПРОСА

КонецПроцедуры
53 Pechka
 
14.09.12
12:54
Помогите пожалуйста теперь получить общую сумму только для инструментального участка(подразделение). Сейчас выходит у меня примерно так:

Подразделение    Заказчик     Продукция                Сумма
Инстр.участок     СГМ        Металлоизделия().СГМ         5
Инстр.участок   стан 10-65   Валки 25х25 стан 10-65       6
Инстр.участок   стан 10-65   Валки 20х20 стан 10-65       7
Инстр.участок   стан 10-65   Валки 40х20 стан 10-65       12
Инстр.участок   стан 102-220 Валки Ф219 стан 102-220      72
Инстр.участок   стан 102-220 Валки 40х40 стан 102-220     35
Инстр.участок     СГМ        Нож дисковой                 10

Надо просуммировать одинаковые значения,которые показаны в столбце Заказчик. В итоге получить сумму общую для стан 10-65,например и т.д. Как должно выглядеть:

Инстр.участок     СГМ        Металлоизделия() СГМ         15
Инстр.участок   стан 10-65   Валки 25х25 стан 10-65       25
Инстр.участок   стан 10-65   Валки 20х20 стан 10-65       25
Инстр.участок   стан 10-65   Валки 40х20 стан 10-65       25
Инстр.участок   стан 102-220 Валки Ф219 стан 102-220      105
Инстр.участок   стан 102-220 Валки 40х40 стан 102-220     105
Инстр.участок     СГМ        Нож дисковой СГМ             15

Думаю через ТаблицуЗначений,
ТаблицаОтчета = СоздатьОбъект("ТаблицаЗначений");
ТаблицаОтчета.НоваяКолонка("Наименование", "Строка");
ТаблицаОтчета.НоваяКолонка("Сум","Число",15,2);
а как это все свернуть не знаю..
54 PuhUfa
 
14.09.12
12:59
не?

Свернуть(<?>,);
Синтаксис:
Свернуть(<ГруппКолонки>,<СуммКолонки>)
Назначение:
Позволяет свернуть таблицу значений по соответствующим значениям колонок, т.е. заменяет на одну строку все дублирующие (по значениям группировочных колонок)  строки, суммируя значения по суммируемым колонкам.
55 Pechka
 
14.09.12
13:04
это понятно Свернуть,каким образом обозначить,что именно в инструментальном участке одинаковые позиции свернуть
56 BlackSeaCat
 
14.09.12
13:04
Перед Свернуть() надо использовать Завалить(ТС) :-)