Имя: Пароль:
1C
1C 7.7
v7: .Добавить столбец Количество ПУБ 7.7
,
0 Pechka
 
29.08.12
13:33
при формировании отчета мне нужно,чтоб выходил еще один столбец "Количество" (кол-во документа)- реализация продажи,материалов..помогите пожалуйста.вот мой код программы:

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

 Перем ПечКоличество;
 Перем Док;
 
//
Функция ПоказатьКурс()
   Перем Стр;

   Если Валюта.Выбран() = 1 Тогда
       Стр = Валюта.Курс.Получить();
   Иначе
       Стр = "";
   КонецЕсли;

   Возврат Стр;
КонецФункции // ПоказатьКурс()




    Процедура Сформировать()
   
       Перем ПечКоличество;
       
   
   
   
   
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
               
   
       Расшифровка = СоздатьОбъект("СписокЗначений");
   Расшифровка.Установить("Отчет", "Сформировать");
   Расшифровка.Установить("ДатаНач", ВыбНачПериода);
   Расшифровка.Установить("ДатаКон", ВыбКонПериода);
   Расшифровка.Установить("Валюта", Валюта);
   
   
   Сч= СоздатьОбъект("Счет");
   
   Ит = СоздатьОбъект("БухгалтерскиеИтоги");
   Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
   Ит.ИспользоватьСубконто(ВидыСубконто.Договоры);
   Ит.ИспользоватьКорСубконто(Сч.ВидСубконто(1),, 1);
   Ит.ИспользоватьКорСубконто(Сч.ВидСубконто(2),, 1);
   Ит.ИспользоватьКорСубконто(Сч.ВидСубконто(3),, 1);    
   Ит.ВключатьСубсчета(-1,-1);
   Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,"62,76.5",,,3,"Проводка", "С");  
   
   ИстВал = СоздатьОбъект("Периодический");
   ИстВал.ИспользоватьОбъект("Курс",Валюта);  

   //
//    ТаблицаДокумента = СоздатьОбъект("ТаблицаЗначений");    
////    Докум.ВыгрузитьТабличнуюЧасть(ТаблицаДокумента);
//    ТаблицаДокумента.Свернуть("Цена", "Количество");
//    КолвоТовара  = Таб.Количество;                  
         

   Таб.ВывестиСекцию("Заголовок");
   Таб.ВывестиСекцию("Шапка");
   Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
   
   Ит.ВыбратьСубконто(1);
   Пока Ит.ПолучитьСубконто(1) = 1 Цикл
       Ит.ВыбратьСубконто(2);
       Пока Ит.ПолучитьСубконто(2) = 1 Цикл
           
           ДоговорСУчастием3Лиц = Ит.Субконто(2).КМ_ДоговорСУчастием3Лиц;
           
           Если (ДоговорСУчастием3Лиц <> ВыбДоговорСУчастием3Лиц)
              и (Ит.Субконто(2) <> ВыбДоговорСУчастием3Лиц) Тогда
               Продолжить;
           КонецЕсли;

           Ит.ВыбратьСчета();
           Пока Ит.ПолучитьСчет() = 1 Цикл
           
               Ит.ВыбратьКорСчета();
               Пока Ит.ПолучитьКорСчет() = 1 Цикл
                   
                   Субконто1 = "";
                   Субконто2 = "";
                   Субконто3 = "";
               
                   Если Ит.КорСчет.КоличествоСубконто()>0 Тогда
                       
                       Ит.ВыбратьКорСубконто(1);
                       Пока Ит.ПолучитьКорСубконто(1) = 1 Цикл
                           
                           Если Ит.КорСчет.КоличествоСубконто()>1 Тогда
                               
                               Ит.ВыбратьКорСубконто(2);
                               Пока Ит.ПолучитьКорСубконто(2) = 1 Цикл
                                   
                                   Если (Ит.Субконто(1) = Ит.КорСубконто(1)) и (Ит.Субконто(2) = Ит.КорСубконто(2))  Тогда
                                       Продолжить;
                                   КонецЕсли;
                                   
                                   Если Ит.КорСчет.КоличествоСубконто()>2 Тогда
                                       
                                       Ит.ВыбратьКорСубконто(3);
                                       Пока Ит.ПолучитьКорСубконто(3) = 1 Цикл
                                           
                                           Ит.ВыбратьПериоды(1);
                                           Пока Ит.ПолучитьПериод() = 1 Цикл
                                               
                                               Если Ит.ВыбранаПоДт() = 1 Тогда
                                                   СчетДт    = Ит.Счет;
                                                   СчетКт    = Ит.КорСчет;
                                               Иначе
                                                   СчетДт    = Ит.КорСчет;
                                                   СчетКт    = Ит.Счет;
                                               КонецЕсли;
                                               
                                               Если (Ит.КорДО("С")<>0) или (Ит.КорКО("С")<>0) Тогда
                                                   Субконто1 = Ит.КорСубконто(1);
                                                   Субконто2 = Ит.КорСубконто(2);
                                                   Субконто3 = Ит.КорСубконто(3);
                                                   
                                                   Таб.ВывестиСекцию("Строка");
                                               КонецЕсли;
                                               
                                           КонецЦикла;
                                           
                                       КонецЦикла;
                                       
                                   Иначе
                                       
                                       Ит.ВыбратьПериоды(1);
                                       Пока Ит.ПолучитьПериод() = 1 Цикл
                                           
                                           Если Ит.ВыбранаПоДт() = 1 Тогда
                                               СчетДт    = Ит.Счет;
                                               СчетКт    = Ит.КорСчет;
                                           Иначе
                                               СчетДт    = Ит.КорСчет;
                                               СчетКт    = Ит.Счет;
                                           КонецЕсли;
                                       
                                           Если (Ит.КорДО("С")<>0) или (Ит.КорКО("С")<>0) Тогда    
                                               Субконто1 = Ит.КорСубконто(1);
                                               Субконто2 = Ит.КорСубконто(2);
                                               Субконто3 = Ит.КорСубконто(3);
                                               Таб.ВывестиСекцию("Строка");
                                           КонецЕсли;
                                       
                                       КонецЦикла;
                                       
                                   КонецЕсли;
                                   
                               КонецЦикла;
                               
                           Иначе
                               
                               Ит.ВыбратьПериоды(1);
                               Пока Ит.ПолучитьПериод() = 1 Цикл
                                   
                                   Если Ит.ВыбранаПоДт() = 1 Тогда
                                       СчетДт    = Ит.Счет;
                                       СчетКт    = Ит.КорСчет;
                                   Иначе
                                       СчетДт    = Ит.КорСчет;
                                       СчетКт    = Ит.Счет;
                                   КонецЕсли;
                               
                                   Если (Ит.КорДО("С")<>0) или (Ит.КорКО("С")<>0) Тогда
                                       Субконто1 = Ит.КорСубконто(1);
                                       Субконто2 = Ит.КорСубконто(2);
                                       Субконто3 = Ит.КорСубконто(3);
                                       Таб.ВывестиСекцию("Строка");
                                   КонецЕсли;
                                   
                                     
                                   
                                   
                               КонецЦикла
                               
                           КонецЕсли;
                       КонецЦикла;
                       
           
                       
                   
                   Иначе
                       
                       Ит.ВыбратьПериоды(1);
                       Пока Ит.ПолучитьПериод() = 1 Цикл
                           
                           Если Ит.ВыбранаПоДт() = 1 Тогда
                               СчетДт    = Ит.Счет;
                               СчетКт    = Ит.КорСчет;
                           Иначе
                               СчетДт    = Ит.КорСчет;
                               СчетКт    = Ит.Счет;
                           КонецЕсли;
                   
                           Если (Ит.КорДО("С")<>0) или (Ит.КорКО("С")<>0) Тогда
                               Таб.ВывестиСекцию("Строка");
                           КонецЕсли;
                           
                       КонецЦикла;
                         
                         
                    ИстВал.ВыбратьЗначения(ВыбНачПериода,ВыбКонПериода);
                   
                   Пока ИстВал.ПолучитьЗначение()=1 Цикл
                       Таб.ВывестиСекцию("Строка");
                   КонецЦикла;    

                       
                       
                       
                   КонецЕсли;
               КонецЦикла;
           КонецЦикла;
       КонецЦикла;
   КонецЦикла;
   
   
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать","");
КонецПроцедуры
//}}БУХГАЛТЕРСКИЙ ЗАПРОС  

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

   Если глФлагРасшифровки = 1 Тогда
       Обновить = глОбновить;
       ВыбНачПериода = глРасшифровка.Получить("ДатаНач");
       ВыбКонПериода = глРасшифровка.Получить("ДатаКон");
       Валюта = глРасшифровка.Получить("Валюта");

       Если Обновить <> 0 Тогда
           Таб = глТаблица;
       КонецЕсли;

       Если Обновить <> 2 Тогда
           Сформировать();
           СтатусВозврата(0);
           Возврат;
       КонецЕсли;
   Иначе
       Обновить = 0;
   

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

     Если Валюта.Выбран()=0 Тогда
           ВосстановитьЗначение("Сформировать",Валюта);
       КонецЕсли;
   КонецЕсли;



КонецПроцедуры
1 Ёпрст
 
29.08.12
13:46
Э какое количество на 62 счете нужно ?
:)
2 Pechka
 
29.08.12
13:48
Количество товара получается из документа
3 Pechka
 
29.08.12
13:51
62 счет и 76.5
4 Zmich
 
29.08.12
13:54
(2). 2 ложки и 3 вилки продали - что в итоге? 5 чего?
5 Pechka
 
29.08.12
14:03
один из столбцов выходит - первичный документ (<Ит.Операция.Документ>),напрмиер реализация,на форме указаны наименование,цена,количество и из этого документа мне нужно количество
6 Ёпрст
 
29.08.12
14:20
(5) Ит.Операция.Документ.Итог("Количество")..
но я тебе этого не предлагал, если че.
7 Pechka
 
29.08.12
14:29
а что будет?)
8 Pechka
 
29.08.12
14:35
ошибку выводит- Реквизит не имеет итога по колонке!
9 vladko
 
29.08.12
14:39
в документе в конфигураторе поставь галку "итог" у реквизита табл.части "Количество"
10 Ёпрст
 
29.08.12
14:42
(8) не вопрос.. вот так тогда:

Ит.Операция.Документ.ВыбратьСтроки();//это воткни перед выводом секции

Ит.Операция.Документ.Итог("Количество");

(9) не надо.
11 Pechka
 
29.08.12
14:52
О! что- то стало появляться,там где сумма стоит-количество выходит соответственно,а где суммы нет,в количестве выходит на печ форме - Ит.Операция.Документ.Итог("Количество") и внизу пишет "неверное имя реквизита"
12 Pechka
 
29.08.12
15:01
как быть,чтоб в пустые ячейки не выводила надпись в Количество?
13 Ёпрст
 
29.08.12
15:39
(11) :)
14 Pechka
 
29.08.12
15:46
м?:)
15 Maximysis
 
29.08.12
15:55
(11) Мне это напомнило:
"Кран повернул напор пашол нанама! Акель бе акельбе..."))))
16 Pechka
 
29.08.12
16:01
вооьщем есть столбец сумма еще,например, 2,159,525 напротив этой строки в столбце "Количество" вывело цифру - 68.77,а там , где в сумме пустота (<ФорматС(Ит.КорДО("С"))>),то в столбце "Количество" вводит строку : Ит.Операция.Документ.Итог("Количество")

примерно так:
Сумма        Количество
2159525       68.77
5258885       77.55
            Ит.Операция.Документ.Итог("Количество")
2645457       55.87
17 Pechka
 
31.08.12
10:47
помогите пожалуйста!!!! :((
18 monsterZE
 
01.09.12
11:02
Мммм.. какое фото.. =) ник оправдывает
19 ДенисЧ
 
01.09.12
11:06
Убери из печформы выражение, а поставь туда ПечКоличество
В модуле при выводе строки пиши
Попытка
 печколичество = Ит.Операция.Документ.Итог("Количество");
Исключение
 печКоличество ="Нет количества";
КонецПопытки;
20 Pechka
 
03.09.12
07:58
спасиба)))
21 Pechka
 
03.09.12
16:31
Когда формирую отчет,иногда выходят по два товара с одного документа реализации,например:
документ                             товар
реализация 0006542 (05.07.12)        219х6,0
реализация 0006542 (05.07.12)        159х6,0
у первого товара кол-во должно быть 31,300, у второго - 27,068. Но у меня выводит общую их сумму (58,368) :

Сумма        Количество
2159525       58,368
5258885       58,368
В модуле записала так: Ит.Операция.Документ.Итог("Количество");

Как сделать , чтоб выводил количество по частям все таки? а не общую сумму их
22 Pechka
 
03.09.12
16:34
мой код :

//*******************************************
//{{БУХГАЛТЕРСКИЙ ЗАПРОС(Сформировать)
//
//Перем ТекВалюта;  
//
//    
//  
////
Функция ПоказатьКурс()
   Перем Стр;

   Если Валюта.Выбран() = 1 Тогда
       Стр = Валюта.Курс.Получить();
   Иначе
       Стр = "";
   КонецЕсли;

   Возврат Стр;
КонецФункции // ПоказатьКурс()
 //**************************************************************
    Процедура Сформировать()

   
   
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
               
   
   //    Расшифровка = СоздатьОбъект("СписокЗначений");
   //Расшифровка.Установить("Отчет", "Сформировать");
   //Расшифровка.Установить("ДатаНач", ВыбНачПериода);
   //Расшифровка.Установить("ДатаКон", ВыбКонПериода);
   //Расшифровка.Установить("Валюта", Валюта);
   //
   
   Сч= СоздатьОбъект("Счет");
   
   Ит = СоздатьОбъект("БухгалтерскиеИтоги");
   Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
   Ит.ИспользоватьСубконто(ВидыСубконто.Договоры);
   Ит.ИспользоватьКорСубконто(Сч.ВидСубконто(1),, 1);
   Ит.ИспользоватьКорСубконто(Сч.ВидСубконто(2),, 1);
   Ит.ИспользоватьКорСубконто(Сч.ВидСубконто(3),, 1);    
   Ит.ВключатьСубсчета(-1,-1);
   Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,"62,76.5",,,3,"Проводка", "С");  
   
   ИстВал = СоздатьОбъект("Периодический");
   ИстВал.ИспользоватьОбъект("Курс",Валюта);  
 
   Таб.ВывестиСекцию("Заголовок");
   Таб.ВывестиСекцию("Шапка");
   Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
   
   

       
       
   
   Ит.ВыбратьСубконто(1);
   Пока Ит.ПолучитьСубконто(1) = 1 Цикл
       Ит.ВыбратьСубконто(2);
       Пока Ит.ПолучитьСубконто(2) = 1 Цикл
           
           ДоговорСУчастием3Лиц = Ит.Субконто(2).КМ_ДоговорСУчастием3Лиц;
           
           Если (ДоговорСУчастием3Лиц <> ВыбДоговорСУчастием3Лиц)
              и (Ит.Субконто(2) <> ВыбДоговорСУчастием3Лиц) Тогда
               Продолжить;
           КонецЕсли;

           Ит.ВыбратьСчета();
           Пока Ит.ПолучитьСчет() = 1 Цикл
           
               Ит.ВыбратьКорСчета();
               Пока Ит.ПолучитьКорСчет() = 1 Цикл
                   
                   Субконто1 = "";
                   Субконто2 = "";
                   Субконто3 = "";
               
                   Если Ит.КорСчет.КоличествоСубконто()>0 Тогда
                       
                       Ит.ВыбратьКорСубконто(1);
                       Пока Ит.ПолучитьКорСубконто(1) = 1 Цикл
                           
                           Если Ит.КорСчет.КоличествоСубконто()>1 Тогда
                               
                               Ит.ВыбратьКорСубконто(2);
                               Пока Ит.ПолучитьКорСубконто(2) = 1 Цикл
                                   
                                   Если (Ит.Субконто(1) = Ит.КорСубконто(1)) и (Ит.Субконто(2) = Ит.КорСубконто(2))  Тогда
                                       Продолжить;
                                   КонецЕсли;
                                   
                                   Если Ит.КорСчет.КоличествоСубконто()>2 Тогда
                                       
                                       Ит.ВыбратьКорСубконто(3);
                                       Пока Ит.ПолучитьКорСубконто(3) = 1 Цикл
                                           
                                           Ит.ВыбратьПериоды(1);
                                           Пока Ит.ПолучитьПериод() = 1 Цикл
                                               
                                               Если Ит.ВыбранаПоДт() = 1 Тогда
                                                   СчетДт    = Ит.Счет;
                                                   СчетКт    = Ит.КорСчет;
                                               Иначе
                                                   СчетДт    = Ит.КорСчет;
                                                   СчетКт    = Ит.Счет;
                                               КонецЕсли;
                                               
                                               
                                                    //КМ_Начало Диляра
                                   
                                                   
                                                    Ит.Операция.Документ.ВыбратьСтроки();
                                                   Ит.Операция.Документ.Итог("Количество");
                                                     
                                               
                                            Если ПустоеЗначение (Ит.КорДО("С")) = 1 Тогда
                                                пер1 = "";
                                                пер2 = "";
                                                пер3 = "";
                                               
                                            Иначе        
                                           
                                                //Если Ит.Операция.Документ.Итог("Количество") > 0 Тогда
                                                 Если Ит.Операция.Документ.КолвоТовара("Количество") > 0 Тогда
                                                         
                                                     пер1 = Ит.Операция.Документ.Итог("Количество");
                                                       
                                                     пер2 = Ит.КорДО("С")/Ит.Операция.Документ.Итог("Количество");
                                                     пер3 = Ит.КорДО("С")/Ит.Операция.Документ.Итог("Количество")/ИстВал.ЗначениеНаДату(Ит.Операция.Документ.ДатаДок);
                                                Иначе

                                                     пер1 = "";
                                                     пер2 = "";
                                                     пер3 = "";
                                                КонецЕсли;
       
                                   
                                               
                                               Таб.ВывестиСекцию("Строка");
   
                                                    //КМ_Конец Диляра
                                           КонецЕсли;
                                                     
                               
                                                   
                                                   
                                               Если (Ит.КорДО("С")<>0) или (Ит.КорКО("С")<>0) Тогда
                                                   Субконто1 = Ит.КорСубконто(1);
                                                   Субконто2 = Ит.КорСубконто(2);
                                                   Субконто3 = Ит.КорСубконто(3);
                                               
                                                    КонецЕсли;
                                           КонецЦикла;
                                           
                                       КонецЦикла;
                                       
                                   Иначе
                                       
                                       Ит.ВыбратьПериоды(1);
                                       Пока Ит.ПолучитьПериод() = 1 Цикл
                                           
                                           Если Ит.ВыбранаПоДт() = 1 Тогда
                                               СчетДт    = Ит.Счет;
                                               СчетКт    = Ит.КорСчет;
                                           Иначе
                                               СчетДт    = Ит.КорСчет;
                                               СчетКт    = Ит.Счет;
                                           КонецЕсли;
                                           
                                   
                                           
                                           
                                           
                                           Если (Ит.КорДО("С")<>0) или (Ит.КорКО("С")<>0) Тогда    
                                               Субконто1 = Ит.КорСубконто(1);
                                               Субконто2 = Ит.КорСубконто(2);
                                               Субконто3 = Ит.КорСубконто(3);
                                           

                                               Таб.ВывестиСекцию("Строка");
                                           КонецЕсли;
                                       
                                       КонецЦикла;
                                       
                                   КонецЕсли;
                                   
                               КонецЦикла;
                               
                           Иначе
                               
                               Ит.ВыбратьПериоды(1);
                               Пока Ит.ПолучитьПериод() = 1 Цикл
                                   
                                   Если Ит.ВыбранаПоДт() = 1 Тогда
                                       СчетДт    = Ит.Счет;
                                       СчетКт    = Ит.КорСчет;
                                   Иначе
                                       СчетДт    = Ит.КорСчет;
                                       СчетКт    = Ит.Счет;
                                   КонецЕсли;
                                           
                                   
   
                                   
                                   
                                   Если (Ит.КорДО("С")<>0) или (Ит.КорКО("С")<>0) Тогда
                                       Субконто1 = Ит.КорСубконто(1);
                                       Субконто2 = Ит.КорСубконто(2);
                                       Субконто3 = Ит.КорСубконто(3);
                                       
                                       Таб.ВывестиСекцию("Строка");
                                   КонецЕсли;
                                   
                                     
                                   
                                   
                               КонецЦикла
                               
                           КонецЕсли;
                       КонецЦикла;
                       
           
                       
                   
                   Иначе
                       
                       Ит.ВыбратьПериоды(1);
                       Пока Ит.ПолучитьПериод() = 1 Цикл
                           
                           Если Ит.ВыбранаПоДт() = 1 Тогда
                               СчетДт    = Ит.Счет;
                               СчетКт    = Ит.КорСчет;
                           Иначе
                               СчетДт    = Ит.КорСчет;
                               СчетКт    = Ит.Счет;
                           КонецЕсли;
                   
                           Если (Ит.КорДО("С")<>0) или (Ит.КорКО("С")<>0) Тогда
                               Таб.ВывестиСекцию("Строка");
                           КонецЕсли;
                           
                       КонецЦикла;
                         
                         
                    ИстВал.ВыбратьЗначения(ВыбНачПериода,ВыбКонПериода);
                   
                   Пока ИстВал.ПолучитьЗначение()=1 Цикл
                       Таб.ВывестиСекцию("Строка");
                   КонецЦикла;    

                       
                       
                       
                   КонецЕсли;
               КонецЦикла;
           КонецЦикла;
       КонецЦикла;
   КонецЦикла;
   
   
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать","");
КонецПроцедуры
//}}БУХГАЛТЕРСКИЙ ЗАПРОС  

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

//    Если глФлагРасшифровки = 1 Тогда
//        Обновить = глОбновить;
//        ВыбНачПериода = глРасшифровка.Получить("ДатаНач");
//        ВыбКонПериода = глРасшифровка.Получить("ДатаКон");
//        Валюта = глРасшифровка.Получить("Валюта");
//
//        Если Обновить <> 0 Тогда
//            Таб = глТаблица;
//        КонецЕсли;
//
//        Если Обновить <> 2 Тогда
//            Сформировать();
//            СтатусВозврата(0);
//            Возврат;
//        КонецЕсли;
//    Иначе
//        Обновить = 0;
   

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

     //Если Валюта.Выбран()=0 Тогда
   //        ВосстановитьЗначение("Сформировать",Валюта);
   //    КонецЕсли;
//    КонецЕсли;



КонецПроцедуры
23 Злопчинский
 
03.09.12
16:49
смысл этого отчета по большому счету ускользает от меня напрочь...
24 BlackSeaCat
 
03.09.12
23:47
(23) Нужна экскурсия по сеновалу (с фото), тогда смысл перестанет ускользать. И не только он...
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший