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

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

ua
Offline Offline

« : 31-01-2012 17:46 » 

помогите, пожалуйста...

 данные выводит в таблицу, но разъехались два документа в разные стороны, сначала выводит один документ, а потом за ним другой , а надо чтоб два одновременно...и итог по колонке не считает почему то ...

Код: (1C v8)
Процедура ДвижениеПоФин()
 Таб = СоздатьОбъект("Таблица");
 Таб.ИсходнаяТаблица("Таблица2");
 Таб.ВывестиСекцию("Заголовок");
 Таб.ВывестиСекцию("Шапка");


 Опер = СоздатьОбъект("Операция");


 то = СоздатьОбъект("ТаблицаЗначений");
 то.НоваяКолонка("Док","Документ");
 то.НоваяКолонка("ДокО","Документ");
 то.НоваяКолонка("ДатаИнв","ДАТА");
 то.НоваяКолонка("Дата1","ДАТА");
 то.НоваяКолонка("Дата2","ДАТА");
 то.НоваяКолонка("Дата3","ДАТА");
 то.НоваяКолонка("сумма11",,,,,,,);
 то.НоваяКолонка("СуммаЭ",,,,,,,);
 то.НоваяКолонка("ВалютаИнв",,,,,,,);
 то.НоваяКолонка("НомКред",,,,,,,);
 то.НоваяКолонка("Потери1",,,,,,,);
 то.НоваяКолонка("Сумма1",,,,,,,);
 то.НоваяКолонка("Потери2",,,,,,,);
 то.НоваяКолонка("Сумма2",,,,,,,);
 то.НоваяКолонка("Потери3",,,,,,,);
 то.НоваяКолонка("Сумма3",,,,,,,);

 СчетЦель = "50.1.0";

 ПланСчетов = ВыбранныйПланСчетов();

 Опер.ВыбратьОперацииСПроводками(Дата1, Дата2, СчетЦель, "", ПланСчетов, РазделительУчета);

 Пока Опер.ПолучитьПроводку() = 1 Цикл
 Если (Опер.Дебет.Счет.Код = "14.5.0") или (Опер.Дебет.Счет.Код = "14.5.1") или (Опер.Дебет.Счет.Код = "14.5.2") или (Опер.Дебет.Счет.Код = СчетЦель) Тогда
 то.НоваяСтрока();
 Если Опер.Дебет.Счет.Код = СчетЦель Тогда
 ДокО = СоздатьОбъект("Документ.ОстаткиПоСчетам");
 то.ДокО = Опер.Документ;
 то.ДатаИнв = Опер.ДатаОперации;
 то.сумма11 = Опер.ВалСумма;
 то.СуммаЭ = Опер.Сумма;
 то.ВалютаИнв = Опер.Валюта;
 Итогсумма11 = то.итог("сумма11");
 ИтогСуммаЭ = то.итог("СуммаЭ");
 КонецЕсли;
 Док = СоздатьОбъект("Документ.ФинансированиеЦелевое");

 Док = Опер.Документ;
 Если Опер.Документ.ПредставлениеВида() = "Фин.целевое" Тогда
 то.Док = Док;
 то.НомКред = Док.источник;

 Если Опер.Дебет.Счет.Код = "14.5.0" Тогда
 то.Дата1 = то.Док.ДатаДок;
 то.Потери1 = то.Док.СуммаПотери;
 то.Сумма1 = то.Док.СуммаВ;

 ИначеЕсли Опер.Дебет.Счет.Код = "14.5.1" Тогда
 то.Дата2 = то.Док.ДатаДок;
 то.Потери2 = то.Док.СуммаПотери;
 то.Сумма2 = то.Док.СуммаВ;

 ИначеЕсли Опер.Дебет.Счет.Код = "14.5.2" Тогда
 то.Дата3 = то.Док.ДатаДок;
 то.Потери3 = то.Док.СуммаПотери;
 то.Сумма3 = то.Док.СуммаВ;
 ИтогПотери3 = то.итог("Потери3");
 ИтогСумма3 = то.итог("Сумма3");
 КонецЕсли;
 ИтогПотери1 = то.итог("Потери1");
 ИтогСумма1 = то.итог("Сумма1");
 ИтогПотери2 = то.итог("Потери2");
 ИтогСумма2 = то.итог("Сумма2");

 КонецЕсли;


 КонецЕсли;
 КонецЦикла;
 Опер = 0;

 то.Свернуть("Док,ДокО",);
 то.выбратьСтроки();
 Пока то.получитьСтроку()=1 Цикл

 Таб.ВывестиСекцию("Данные");

 КонецЦикла;

 Таб.ВывестиСекцию("Итого");
 Таб.Опции(0,0);

 Таб.Показать();

 КонецПроцедуры


http://imageshack.us/photo/my-images/515/ris1.jpg/
 
       
« Последнее редактирование: 31-01-2012 18:56 от Kivals » Записан
Kivals
Модератор

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

WWW
« Ответ #1 : 31-01-2012 18:55 » 

1. Для кода используй [code][/code]
2. Скриншот сжат - развернуть его в 100% у меня не получилось - так ничего и не понял
3. Что значит "надо чтоб два одновременно"?
Записан
annyz
Интересующийся

ua
Offline Offline

« Ответ #2 : 31-01-2012 19:58 » 

Просто у меня из отчета в отчет тянется одна и та же дурацкая ошибка...Если документы остатки по счетам и целевое финансирование

пишу

 Опер = СоздатьОбъект("Операция");

выбираю проводки по счету 50.1

Опер.ВыбратьОперацииСПроводками(Дата1, Дата2, СчетЦель, "", ПланСчетов, РазделительУчета);

Пока Опер.ПолучитьПроводку() = 1 Цикл

а потом тяну данные из документа остатки по счетам, но только из проводок беру данные , а не именно из документа

то.ДатаИнв = Опер.ДатаОперации;
            то.сумма11 = Опер.ВалСумма;
            то.СуммаЭ = Опер.Сумма;
            то.ВалютаИнв = Опер.Валюта;

самое интересное, что этот итог он считает и выводит правильно
            Итогсумма11 = то.итог("сумма11");
            ИтогСуммаЭ = то.итог("СуммаЭ");

беру следующих документ

Док = СоздатьОбъект("Документ.ФинансированиеЦелевое");

Но тут могу только из документа по проводке получается бред

                               Док = Опер.Документ;
            Если Опер.Документ.ПредставлениеВида() = "Фин.целевое" Тогда
                                        то.Док = Док;
                 то.НомКред = Док.источник;
                  
                Если Опер.Дебет.Счет.Код = "14.5.0" Тогда
                     то.Дата1 = то.Док.ДатаДок;
                     то.Потери1 = то.Док.СуммаПотери;
                     то.Сумма1 = то.Док.СуммаВ;
                  
                  ИначеЕсли Опер.Дебет.Счет.Код = "14.5.1" Тогда
                     то.Дата2 = то.Док.ДатаДок;
                     то.Потери2 = то.Док.СуммаПотери;
                     то.Сумма2 = то.Док.СуммаВ;
                     
                  ИначеЕсли Опер.Дебет.Счет.Код = "14.5.2" Тогда 
                     то.Дата3 = то.Док.ДатаДок;
                     то.Потери3 = то.Док.СуммаПотери;
                     то.Сумма3 = то.Док.СуммаВ;

Эти данные он мне тянет правильно, но только в итог пишет ноль и все, как я уже не извращалась
когда начинаю выводить данные в таблицу из таблицы значений он мне выводит


первые пять строчек данных  по остатки по счетам, а данные по целевому финансированию пустые, а потом пустые строки по остатки по счетам, а данные по целевому финансированию выводятся...
Пока то.получитьСтроку()=1 Цикл 
            
               Таб.ВывестиСекцию("Данные");
               
         КонецЦикла;

я думаю, просто надо свернуть эти два документа, а как ума не хватает



ну вот в принципе и вся проблема...(((

Записан
Kivals
Модератор

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

WWW
« Ответ #3 : 31-01-2012 20:05 » 

Чтобы свернуть таблицу значений - есть метод Свернуть(ПоляГрупировки, ПоляИтогов) (я вижу ты его используешь, но не могу понять как)
В ПоляИтогов у тебя должны попасть все числовые поля, в поля группировки  все остальные.
При этом важно чтобы поля группировки заполнялись одинково в первом и во втором цикле
Записан
annyz
Интересующийся

ua
Offline Offline

« Ответ #4 : 31-01-2012 20:11 » 

Вот другой скриншот:

http://keep4u.ru/full/8c49ff98254fd9bc00a94d18789efa7a.html

Добавлено через 8 минут и 52 секунды:
ДокО - название(номер) документа остатки по счетам, Док - название номер документа целевое финанс.

пишу свернуть их, а в суммировать пусто оставила...это код семерки, у нас на работе она как ни печально...

руководствовалась этим

Синтаксис:
Свернуть(<ГруппКолонки>,<СуммКолонки>)


Добавлено через 1 минуту и 25 секунд:
но только когда я так сворачиваю он вообще ничего в таблицу не выводит убираю свернуть выводит то что на скриншоте...

мое свернуть не работает((
« Последнее редактирование: 31-01-2012 20:21 от annyz » Записан
Kivals
Модератор

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

WWW
« Ответ #5 : 31-01-2012 22:01 » 

Читай внимательно:
...В ПоляИтогов у тебя должны попасть все числовые поля, в поля группировки  все остальные...
А ты во втором параметре не пишешь ничего - вот ничего и не получаешь. Если хоть одно поле не будет указано в первом или втором параметре - то в результате этого поля (колонки) не будет.
Записан
annyz
Интересующийся

ua
Offline Offline

« Ответ #6 : 01-02-2012 17:26 » 

А что делать если у меня в одном документе есть такой реквизит, а во втором нет, как свернуть в таком случае?
Записан
Kivals
Модератор

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

WWW
« Ответ #7 : 01-02-2012 19:26 » new

Вариант 1: запоминай в служебной переменной (СписокЗначений или ТаблицаЗначений) нужные реквизиты и при добавлении строки во втором цикле заполняй их из служебной переменной, найдя нужную запись.
Вариант 2: сверни сначала таблицу по общим реквизитам, потом добавь новые колонки и заполни их из значения другой колонки (например: Склад из документа Приход).
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines