8.х Не могу нормально вывести отчет:-(

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем pathetique, 2 июн 2008.

  1. TopicStarter Overlay
    pathetique
    Offline

    pathetique Опытный в 1С

    Регистрация:
    21 янв 2008
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте уважаемые любители и знатоки 1с! Смысл вопроса такой.
    Мне в макете(созданный вручную) нужно вывести(упрощенно) 2 столбца:
    левый - список физических лиц(ФИО)
    правый - список ссылок на документы для данного физ лица.
    Список физлиц формируется из одной таблицы циклом. Список документов для данного физлица - вложенным циклом из другой таблицы т.е. смысл такой:
    Код:
    Для каждого строка из Таб1 //выводим левый столбец физлиц
    ОбластьФизЛицо.Параметры.ФизЛицо=строка.ФизЛицо;
    ТабДок.Вывести(ОбластьФизЛицо);
    Для каждого строка2 из Таб2 Цикл //вложенный цикл для текущего физ лица выбирает док-ты в   прав. столбец
    ОбластьДокумент.Параметры.Ссылка=строка2.Ссылка
    ТабДок.Присоединить(ОбластьДокумент);
    КонецЦикла;
    КонецЦикла;
    
    
    Итак вся фигня заключается в том, что второй столбец выводится неправильно. Если второй столбец я вывожу методом "вывести", он выводит его в первом столбце. Метод "присоединить" дает нормальный результат, если одному физлицу соответствует одна ссылка на документ. Если документов 2 и более, то все они выводятся в строку!
    Я покопался в справке и так понял что других методов вроде как не существует... как мне заставить второй цикл выводиться во второй столбец???
  2. AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    Я так подозреваю, что надо копать в сторону группировок.

    таблицы 1 и 2 - это результаты запросов?
  3. TopicStarter Overlay
    pathetique
    Offline

    pathetique Опытный в 1С

    Регистрация:
    21 янв 2008
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    Таблица1- это таблица значений, в которую выгружен результат запроса. Вторая таблица-это массив, который получается циклом для текущего физлица и выбирает из первой таблицы конкретные записи. ...тут короче весьма путанная вещь, я вместо нелюбимых запросов решил все сделать с помощью нескольких таблиц значения B) выводит он нормально, я был уверен, что при выводе в отчет можно заставить следующую запись выводиться в тот же столбец, но строкой ниже :unsure:

    Если так никак нельзя, в принципе можно все в один столбец вывести... получается не особо грамотно, но че поделаешь...
  4. AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    Проще написать один запрос в котором выбираются все необходимые доки по физ.лицу и физ.лицо является группировкой. И потом результат выкинуть в макет. Дешево-сердито-просто. Ваш вариант это уход от необходимости писать запрос. Лучше один раз убить день-два и понять как все работает чем изобретать вот такое НЕЧТО. Это сугубо мое личное мнение, не претендующие как говориться на последнюю инстанцию.
  5. TopicStarter Overlay
    pathetique
    Offline

    pathetique Опытный в 1С

    Регистрация:
    21 янв 2008
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    ok, спасиб. будем думать :unsure:
  6. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    полностью согласен
    но если по твоему методу, то как я понял, можно сделать такой макет (см прикрепленное) и все через ТабДок.вывести(...) :unsure:

    правда, получится на строку смещено

    Вложения:

  7. TopicStarter Overlay
    pathetique
    Offline

    pathetique Опытный в 1С

    Регистрация:
    21 янв 2008
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    ну да... походу так проще всего...
    ....хотя вапще можно попробовать... :unsure: ...но это извращение... :D

    Добавлено: гы-гы я извращенец, но сделал таки:)
    Под вывод документов я создал в макете 2 области одна справа от физлица, справа и другая строкой ниже(как на вышеприведенном рисунке)
    Перед циклом, выводящим документы для текущего Физлица я ввожу переменную типа булево, и в цикле проверяю является ли это вхождение первым
    Если да, я вывожу область справа от физлица методом присоединить. Если не первое, то вывожу другую область методом вывести.
    Мож. и глупость, но полностью переделывать отчет времени сейчас нет:-(...

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