Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: нужна помощь по суммированию значений в отчете  (Прочитано 19525 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
staff
Помогающий

ua
Offline Offline
Пол: Мужской

« : 16-07-2009 07:33 » 

помогите с правильностью написания отчета

необходимо выводить в Макет Отчета значение, что бы происходило сложение и отнимание по указанной части
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 16-07-2009 13:07 » new

Чего??? Не ленись описать задачу...
Записан
staff
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #2 : 17-07-2009 06:35 » 

сейчас пришу отчет в 1С 8.1, суть заключается в чем, необходимо суммировать и отнимать данные из ячейки, программа предназначена для элеватора семян, есть транспотрер по которому идет загрузка семян и банки где эти семена хранятся, когда в складском документе начинаю вбивать значения загрузку семян или выгрузку (определенный транспортер, определенная банка) в отчете формируются отдельные позиции (не происходит суммирование или отнимание из банок)
вот код отчета
Процедура КнопкаСформироватьНажатие(Кнопка)
   // Вставить содержимое обработчика.
   Запрос = новый Запрос;
    Запрос.Текст =
   "ВЫБРАТЬ
   |   ОборотнаяВедомость.Транспортер КАК Транспортер,
   |   ОборотнаяВедомость.Банки КАК Банки,
   |   ОборотнаяВедомость.ВидСемян КАК ВидСемян,
   |   ОборотнаяВедомость.Регистратор КАК Регистратор,
   |   СУММА(ОборотнаяВедомость.СуммаНачальныйОстаток) КАК НачОстаток,
   |   СУММА(ОборотнаяВедомость.СуммаКонечныйОстаток) КАК КонОстаток,
   |   СУММА(ОборотнаяВедомость.СуммаПриход) КАК Приход,
   |   СУММА(ОборотнаяВедомость.СуммаРасход) КАК Расход
   |ИЗ
   |   РегистрНакопления.ОборотнаяВедомость.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, ДвиженияИГраницыПериода, ) КАК ОборотнаяВедомость ";
       Флаг1=0;
    если не ВыбТранспортер.Пустая() тогда
    Запрос.Текст=Запрос.Текст+"ГДЕ ОборотнаяВедомость.Транспортер=&ПТранспортер ";
    Флаг=1;
    конецЕсли;   
    Если не ВыбБанки.Пустая() тогда
      Если флаг1=0 тогда 
      Запрос.Текст=Запрос.Текст+"ГДЕ ОборотнаяВедомость.Банки=&ПБанки ";
      Флаг1=1;
      иначе
      Запрос.Текст=Запрос.Текст+"И ОборотнаяВедомость.Банки=&ПБанки ";          
      конецесли;   
    конецесли;
    если ПечБанки тогда
      Если флаг1=0 тогда   
      Запрос.Текст=Запрос.Текст+"ГДЕ ОборотнаяВедомость.Банки.ВыводПриПечати ";
      Иначе
      Запрос.Текст=Запрос.Текст+"И ОборотнаяВедомость.Банки.ВыводПриПечати";
      конецесли; 
    конецесли;   
   Запрос.Текст=Запрос.Текст+"
   |СГРУППИРОВАТЬ ПО ОборотнаяВедомость.Транспортер, ОборотнаяВедомость.Банки, ОборотнаяВедомость.ВидСемян, ОборотнаяВедомость.Регистратор
   |ИТОГИ СУММА(НачОстаток), СУММА(КонОстаток), СУММА(Приход), СУММА(Расход)
   |ПО Транспортер, Банки, ВидСемян, регистратор
   |АВТОУПОРЯДОЧИВАНИЕ";
   Запрос.УстановитьПараметр("НачалоПериода", НачПериода);
   Запрос.УстановитьПараметр("КонецПериода", КонПериода);
   Если не ВыбТранспортер.Пустая() тогда
      Запрос.УстановитьПараметр("ПТранспортер", ВыбТранспортер);
    конецесли;
    Если не ВыбБанки.Пустая() тогда
      Запрос.УстановитьПараметр("ПБанки", ВыбБанки);
   конецесли;
      Результат=Запрос.Выполнить();
         Выборка=Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
      темп = новый ТабличныйДокумент;
         ТабДок=ПолучитьМакет("Макет");
      ОбластьПериод=ТабДок.ПолучитьОбласть("Период");
         ОбластьПериод.Параметры.Период=" Период с "+НачПериода+" по "+КонПериода;
      Темп.Вывести(ОбластьПериод);
         ОбластьШапка=ТабДок.ПолучитьОбласть("Шапка");
      Темп.Вывести(ОбластьШапка);
   Пока Выборка.Следующий() цикл
      ОбластьТранспортер=ТабДок.ПолучитьОбласть("Транспортер");
         ОбластьТранспортер.Параметры.Транспортер="Транспортер   "+Выборка.Транспортер;
      Темп.Вывести(ОбластьТранспортер);
         ВыборкаБанки=Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
      Пока выборкаБанки.Следующий() цикл
         ФлагБанки=0;
            ВыборкаВидСемян=ВыборкаБанки.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
         Пока выборкаВидСемян.Следующий() цикл
            если выборкаВидСемян.ВидСемян.Пустая() тогда
                  продолжить
             конецесли;
         Если ФлагБанки=0 тогда
            ОбластьБанки=ТабДок.ПолучитьОбласть("Банки");
               ОбластьБанки.Параметры.Банки="Банки   "+ВыборкаБанки.Банки;
            Темп.Вывести(ОбластьБанки);
               ФлагБанки=1;
         конецесли;    
            ОбластьВидСемян=ТабДок.ПолучитьОбласть("ВидСемян");
                  ОбластьВидСемян.Параметры.ВидСемян=ВыборкаВидСемян.ВидСемян;
            Если ВыборкаВидСемян.НачОстаток>0 тогда
                ОбластьВидСемян.Параметры.НачальныйОстатокПриход=ВыборкаВидСемян.НачОстаток;
            иначе
                ОбластьВидСемян.Параметры.НачальныйОстатокРасход=-ВыборкаВидСемян.НачОстаток   
              конецесли;    
                  Темп.Вывести(ОбластьВидСемян);
                  ВыборкаРегистратор=ВыборкаВидСемян.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
         Пока ВыборкаРегистратор.Следующий() цикл
                 Если ВыборкаРегистратор.Регистратор<>Неопределено тогда 
             ОбластьРегистратор=ТабДок.ПолучитьОбласть("Регистратор");
                Если ВыборкаРегистратор.Приход>0 тогда
             ОбластьРегистратор.Параметры.Контрагент=ВыборкаРегистратор.Регистратор;   
                 конецесли;
              Если ВыборкаРегистратор.Расход>0 тогда
             ОбластьРегистратор.Параметры.Контрагент=ВыборкаРегистратор.Регистратор;   
                конецесли;     
             ОбластьРегистратор.Параметры.Приход=ВыборкаРегистратор.Приход;
               ОбластьРегистратор.Параметры.Расход=ВыборкаРегистратор.Расход;
                ОбластьРегистратор.Параметры.Дата=ВыборкаРегистратор.Регистратор.дата;
                   Темп.Вывести(ОбластьРегистратор);
            конецесли;
         конеццикла;   
            ОбластьИтогоВидСемян=ТабДок.ПолучитьОбласть("ИтогоВидСемян");
            Если ВыборкаВидСемян.КонОстаток>0 тогда
            ОбластьИтогоВидСемян.Параметры.КонечныйОстатокПриход=ВыборкаВидСемян.КонОстаток;
         Иначе
            ОбластьИтогоВидСемян.Параметры.КонечныйОстатокРасход=-ВыборкаВидСемян.КонОстаток   
          конецесли;    
            Темп.Вывести(ОбластьИтогоВидСемян);
         конеццикла;         
      конеццикла;   
   конеццикла;   
   ТабФорма=Отчеты.ОтчетПоСеменам.ПолучитьФорму("ФормаТаблицы");
   ТабФорма.Открыть();
   ТабФорма.ЭлементыФормы.Результат.Вывести(Темп);
конецпроцедуры   
Записан
staff
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #3 : 17-07-2009 06:39 » 

что необходимо добавить в код что бы происходило суммирование или отнимание из банок (загрузка и отгрузка производится по разным транспортерам в одну банку)
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 17-07-2009 06:55 » 

По-моему необходимо убрать: Группировка (и итоги) по Регистратору лишняя.
Или у тебя в пределах одного документа есть одинаковые Транспортер/Банка/ВидСемян и тебе нужно именно их просуммировать?
Записан
staff
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #5 : 17-07-2009 07:30 » 

само дело в чем, когда составляю складской документ выбираю отдельно процедуру (загрузка или отгрузка), вид семян которую мы используем, дальше транспортер (то по чем происходит загрузка или отгрузка в банки) и сама банка где хранится семена, банка одна и таже тока изменяются транспортреры (загружаем в банку по одному транспортеру или же выгружаем из банки по другому транспортеру).
когда ставлю загрузку по транспортеру (например 12) и банку (111) и вид семян (подсолнух) делаю проводку в отчете создается позиция, когда делаю отгрузку по транспортеру (12) и банку (111) и вид семян (подсолнух) то происходит отнимание и в ИтогоВидСемян отобразается остаток, но когда ставлю отгрузку по транспортеру (14) и банку (111) и вид семян (подсолнух) то происходит создание другой позиции в отчете где из банки (111) ничего не отнимается.
пробовал убрать группировки по регистратору у меня нечего не выводит
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 17-07-2009 07:44 » 

ОборотнаяВедомость.Транспортер - это что? Измерение или Реквизит?
Логично предположить что это реквизит, тогда остатки по нему не ведутся.
Опусти его в группировках ниже чем Банка и ВидСемян:
СГРУППИРОВАТЬ ПО ОборотнаяВедомость.Банки, ОборотнаяВедомость.ВидСемян, ОборотнаяВедомость.Транспортер, ...
Записан
staff
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #7 : 17-07-2009 07:46 » 

это у меня измерение
Записан
staff
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #8 : 17-07-2009 07:48 » 

у меня должно происходить изменение остатков по определенной банке
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 17-07-2009 08:13 » 

А в форме записей регистра нужная запись присутсвует?
попробуй написать просто й запрос и протестировать его, а потом усложняй до нужного функционала
Записан
staff
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #10 : 17-07-2009 09:00 » 

сейчас создал новую форму отчета, кроме даты и банки у меня ничего не выводится
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 17-07-2009 10:07 » 

"загружаем в банку по одному транспортеру или же выгружаем из банки по другому транспортеру" в принципе подразумевает что транспортер нужно ставить в конец группировок
Отчет в прикрепленном файл выводит следующую картинку по твоим данным

Это то, что тебе нужно?

* report.PNG (4.35 Кб - загружено 2202 раз.)
* ТестОстатки.erf (6.65 Кб - загружено 857 раз.)
Записан
staff
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #12 : 20-07-2009 08:11 » 

такой вопрос, как можно сделать (в конфигураторе) что бы столбцы в отчете подгонялись под результаты (НачОстаток, Приход, Расход и КонОстаток), а так же ВидСемян и Транспортер до заголовка, так как во время печати затрачивается много листов??? а то когда в параметрах печати ==> ставить под масштаб шаблона, идет печать отчета мелкими буквами
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 20-07-2009 08:39 » 

Варианты на выбор:
1. Попробуй выводить данные через макет, как это у тебя было и раньше (Построитель отчета я использовал для достижения быстрого результата)
2. Используй
Код:
ТабличныйДокумент=Новый ТабличныйДокумент;
Построитель.Вывести(ТабличныйДокумент);
ТабличныйДокумент.Область.ШиринаКолонки = ХХХ;
ТабличныйДокумент.Показать();
3. Изучай СКД: Система компоновки данных
Записан
staff
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #14 : 21-07-2009 13:07 » 

пробовал дальше разрабатывать ОтчетПоСеменам все та же проблема значения как выводились так и выводятся, что можете подсказать в таком случае, даже вашу ТестОстатки дорабатывал ничего не выводит
Записан
staff
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #15 : 21-07-2009 13:56 » 

даже пробовал через СКД, но начальство сказало что хотим так, вручную написанно
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 28-07-2009 07:43 » 

Посмотри здесь как задать собственный шаблон для Построителя отчета:
http://www.kb.mista.ru/article.php?id=293
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines