ПрисоединитьСекцию

Тема в разделе "1C и всё что с ней связано", создана пользователем mechanix85, 25 окт 2010.

  1. mechanix85

    mechanix85 Member

    Регистрация:
    25 окт 2010
    Сообщения:
    13
    Симпатии:
    0
    Добрый день!!!

    есть код выгрузке оборотов, типа шахматки, только своим путем

    Процедура Сформировать()
    ТАБ=СоздатьОбъект("Таблица");
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ВыполнитьЗапрос(НачДата,КонДата,,,, 3,, "С");
    ТАБ.ВывестиСекцию("Секция_1|Секция_а");
    Ит.ВыбратьКорСчета();
    Пока Ит.ПолучитьКорСчет() = 1 Цикл
    КТ=ИТ.КорСчет;
    ТАБ.ПрисоединитьСекцию("Секция_1|Секция_б");
    Ит.ВыбратьСчета();
    // ТАБ.ВывестиСекцию("Секция_а|Секция_2");
    Пока Ит.ПолучитьСчет() = 1 Цикл

    ДТ=ИТ.Счет;
    СУМ=ИТ.ДО();

    КонецЦикла;
    КонецЦикла;
    ТАБ.Показать();
    ТАБ.ТолькоПросмотр(1);
    КонецПроцедуры



    подскажите как сделать таблицу в виде шахматки.

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




    сама таблица

    секция_1 ДТ <КТ>
    секция_2 <ДТ> <СУМ>


    Вообще то цель понять как выводить данные на пересечении верт и гор, а не сам отчет

    Спасибо
     
  2. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Вообще то цель понять какую таблицу хотите вывести. Пример нарисуйте, что-ли. И второе, трудность в чем: как работать с запросом или как работать с таблицей?
     
  3. mechanix85

    mechanix85 Member

    Регистрация:
    25 окт 2010
    Сообщения:
    13
    Симпатии:
    0

    таблица типа шахматки

    КД
    ДТ Сумма


    и так далее как в длину так и в ширину

    проблема в том как написать это в запросе.

    спасибо
     
  4. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    А посмотреть, как устроена родная шахматка и сделать по образу и подобию не пробовал ?
     
  5. mechanix85

    mechanix85 Member

    Регистрация:
    25 окт 2010
    Сообщения:
    13
    Симпатии:
    0
    пробовал иначе бы темы не создал, но не полностью понимаю язык 1С, поэтому прошу объяснить
     
  6. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Сударь, благодарю вас подробное и обстоятельное разъяснение. Надеюсь, оно не отняло у Вас много времени.

    Да ты по-русски напиши, что за таблица, как называются колонки, столбики, что на их пересечении. Зачем сразу текст лепить? Если не будет краткого и емкого изложения, с картинкой, с точным указанием, что именно вызывает проблему - тему закрою. ;)

    И второе. Если нужный отчет - шахматка, то что мешает в нем разобраться. А если только типа шахматки, то в чем отличие?
     
  7. mechanix85

    mechanix85 Member

    Регистрация:
    25 окт 2010
    Сообщения:
    13
    Симпатии:
    0
    таблица

    [​IMG]

    секцию_1 вывожу, а как дальше с секцией_2 работать не могу понять
     
  8. tanat

    tanat Well-Known Member

    Регистрация:
    2 мар 2007
    Сообщения:
    265
    Симпатии:
    0
    После
    ТАБ.ПрисоединитьСекцию("Секция_1|Секция_б");
    //тут ваш код, по получению выводимых значений.
    //выводите секцию:
    Таб.ВывестиСекцию("Секция_2|Секция_а");
    // присоединяете:
    ТАБ.ПрисоединитьСекцию("Секция_2|Секция_б");

    Попробуйте.

    Это как конструктор "lego": присоединить - цепляет слева еще одну секцию, Вывести - следующй уровень ( правда с направлением "вниз").
     
  9. mechanix85

    mechanix85 Member

    Регистрация:
    25 окт 2010
    Сообщения:
    13
    Симпатии:
    0
    выводит таблицу вот такую


    [​IMG]

    где первая колонка ДТ
    вторая общий оборот по ДТ счета
    и третья КТ

    ЗЫ: почему слово д е б е т на форуме считается цензурой?
     
  10. mechanix85

    mechanix85 Member

    Регистрация:
    25 окт 2010
    Сообщения:
    13
    Симпатии:
    0
    Это как конструктор "lego": присоединить - цепляет слева еще одну секцию, Вывести - следующй уровень ( правда с направлением "вниз").

    это я уже понял, но почему например первое присоединия секции 2, какбудто отменяется выводом секции2
     
  11. tanat

    tanat Well-Known Member

    Регистрация:
    2 мар 2007
    Сообщения:
    265
    Симпатии:
    0
    Указывайте на будущее платформу. В 7.7 я не особенно "рублю".

    Думается мне, тут особенность в том, что алгоритм вывода данных хромает. Попробуйте нарисовать блок-схему, поможет понять, где что не так.

    З.Ы в слове: де_бет откиньте первую букву и громко крикните вслух то, что получится). Сразу поймете. Кстати: дебИт а не деб_Ет.


    Потому что ПрисоединитьСекцию -добавляет к последней выведенной секции.
     
  12. mechanix85

    mechanix85 Member

    Регистрация:
    25 окт 2010
    Сообщения:
    13
    Симпатии:
    0
    а не думаю что смогу вам чтото нарисовать))

    ладно буду искать ответ на других форумах
     
  13. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    :(
    ДебИт — Не путать с дебЕтом в экономике
     
  14. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Алгоритм должен состоять из 3-разделов:
    1. Вывод только шапки:
    Код ( (Unknown Language)):
    Таб.ВывестиСекцию("Секция_1|Секция_а");
    Цикл по корсчетам
    ТАБ.ПрисоединитьСекцию("Секция_1|Секция_а");
    КТ=ИТ.КорСчет;
    ТАБ.ПрисоединитьСекцию("Секция_1|Секция_б");
    КонеЦикла
    Сами данные не извлекаем, только номера корсчетов

    2. Вывод серцевины. 2 вложенных цикла
    Цикл по основным счетам
    ТАБ.ПрисоединитьСекцию("Секция_2|Секция_а");
    Цикл по корсчетам
    ТАБ.ПрисоединитьСекцию("Секция_2|Секция_а");
    КТ=ИТ.КорСчет;
    Сум=?
    ТАБ.ПрисоединитьСекцию("Секция_1|Секция_б");
    КонеЦикла
    КонеЦикла

    3. Вывод последней строки
    Полная аналогия строки первой строки. Цикл только по корсчетам
    Наверно, ты упускаешь из виду, что первую строку нужно заполнить до конца, до правого края.
    Начав выводить вторую, к первой уже ничего не допишешь.
     
  15. mechanix85

    mechanix85 Member

    Регистрация:
    25 окт 2010
    Сообщения:
    13
    Симпатии:
    0
    я написал чтото страшное, выдает еще страшнее. где я напортачил?

    Код (Text):
    Процедура Сформировать()
    ТАБ=СоздатьОбъект("Таблица");
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ВыполнитьЗапрос(НачДата,КонДата,,,, 3,, "С");
    ТАБ.ВывестиСекцию("Секция_1|Секция_а");
    Ит.ВыбратьКорСчета();
    Пока Ит.ПолучитьКорСчет() = 1 Цикл
    ТАБ.ПрисоединитьСекцию("Секция_1|Секция_а");
    КТ=ИТ.КорСчет;
    ТАБ.ПрисоединитьСекцию("Секция_1|Секция_б");
    КонецЦикла;
    Ит.ВыбратьСчета();
    Пока Ит.ПолучитьСчет() = 1 Цикл
    //  ДТ=ИТ.Счет;
    ТАБ.ПрисоединитьСекцию("Секция_2|Секция_а");
    Ит.ВыбратьКорСчета();
    Пока Ит.ПолучитьКорСчет() = 1 Цикл
    ТАБ.ПрисоединитьСекцию("Секция_2|Секция_а");
    КТ=ИТ.КорСчет;
    СУМ=ИТ.ДО();
    ТАБ.ПрисоединитьСекцию("Секция_1|Секция_б");
    КонецЦикла;
    КонецЦикла;
    Ит.ВыбратьКорСчета();
    Пока Ит.ПолучитьКорСчет() = 1 Цикл
    ТАБ.ПрисоединитьСекцию("Секция_1|Секция_а");
    Ит.ВыбратьСчета();
    Пока Ит.ПолучитьСчет() = 1 Цикл
    ТАБ.ПрисоединитьСекцию("Секция_1|Секция_а");
    ДТ=ИТ.Счет;
    СУМ=ИТ.ДО();
    КонецЦикла;
    КонецЦикла;  
    ТАБ.Показать();
    ТАБ.ТолькоПросмотр(1);
    КонецПроцедуры
     
  16. tanat

    tanat Well-Known Member

    Регистрация:
    2 мар 2007
    Сообщения:
    265
    Симпатии:
    0

    вот только недавно меня бухгалтера ткнули носом за "д*цензура*". зря поверил этим грамотеям)
     
  17. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Код ( (Unknown Language)):
    Процедура Сформировать()
    ТАБ=СоздатьОбъект("Таблица");
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ВыполнитьЗапрос(НачДата,КонДата,,,, 3,, "С");

    // Шапка
    ТАБ.ВывестиСекцию("Секция_1|Секция_а");
    Ит.ВыбратьКорСчета();
    Пока Ит.ПолучитьКорСчет() = 1 Цикл
    // Лишняя ТАБ.ПрисоединитьСекцию("Секция_1|Секция_а");
    КТ=ИТ.КорСчет;
    ТАБ.ПрисоединитьСекцию("Секция_1|Секция_б");
    КонецЦикла;

    // Основняк
    Ит.ВыбратьСчета();
    Пока Ит.ПолучитьСчет() = 1 Цикл
    ДТ=ИТ.Счет;
    ТАБ.ВЫВЕСТИСекцию("Секция_2|Секция_а");
    //  ТАБ.ПрисоединитьСекцию("Секция_2|Секция_а");
    Ит.ВыбратьКорСчета();
    Пока Ит.ПолучитьКорСчет() = 1 Цикл
    // Лишняя         ТАБ.ПрисоединитьСекцию("Секция_2|Секция_а");
    КТ=ИТ.КорСчет;
    СУМ=ИТ.ДО();
    ТАБ.ПрисоединитьСекцию("Секция_1|Секция_б");
    КонецЦикла;
    КонецЦикла;

    // Подвала у вас нет. все, что ниже убрать
    // Ит.ВыбратьКорСчета();
    //   Пока Ит.ПолучитьКорСчет() = 1 Цикл
    //       ТАБ.ПрисоединитьСекцию("Секция_1|Секция_а");
    //       Ит.ВыбратьСчета();
    //       Пока Ит.ПолучитьСчет() = 1 Цикл
    //                   ТАБ.ПрисоединитьСекцию("Секция_1|Секция_а");
    //                   ДТ=ИТ.Счет;
    //                   СУМ=ИТ.ДО();
    //               КонецЦикла;
    //          КонецЦикла;  

    ТАБ.Показать();
    ТАБ.ТолькоПросмотр(1);
    КонецПроцедуры
     
  18. mechanix85

    mechanix85 Member

    Регистрация:
    25 окт 2010
    Сообщения:
    13
    Симпатии:
    0
    знакомая ерунда получилась, когда то такое уже выводил)))


    [​IMG]
     
  19. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Я предпочитаю отчеты, подобные шахматке, делать через ТЗ.
    А сформированную ТЗ затем линейно печатать.
    Тем самым можно к тому же избежать некрасивостей (вывод пустых ячеек без рамок).
     
  20. mechanix85

    mechanix85 Member

    Регистрация:
    25 окт 2010
    Сообщения:
    13
    Симпатии:
    0

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

Поделиться этой страницей