Разбивка по периодам внутри бух.итогов

Тема в разделе "1C и всё что с ней связано", создана пользователем neiroromantik, 22 сен 2009.

  1. neiroromantik

    neiroromantik Гость

    Добрый день!
    Нужно реализовать возможность разбивки по периодам внутри периода с детализацтей по дням, неделям, декадам, месяцам и т.п.
    Получаю через форму значение из списка значений. Затем делаю запрос.
    Итоги.ВыполнитьЗапрос(начдата, кондата, "10.1", , , , , период) // период - переменная, которая получает выбранное через форму значение.
    Ит.ВыбратьСубконто();
    Пока Ит.ПолучитьСубконто()=1 цикл
    Ит.ВыбратьПериоды(0)
    Пока Ит.ПолучитьПериод()=1 цикл
    П=Ит.ПолучитьПериод;
    ..........................................
    .....................................
    КонецЦикла;
    КонецЦикла
    По условию задачи должна быть возможность детализации по дням, неделям и т.п. внутри периода. Возможность развбивки по периодам реализована
    на форме с помощью флажка. Если флажок снят, нет разбивки по периодам внутри периода и наоборот, т.е. выполняются в коде два разных
    условия, в каждом свой запрос. В последнем случае в запросе указан параметр "периодичность". Но разницы в случае работы того или иного условия в печатной форме нет. Загводка еще в том, что я не до конца понимаю каким должен быть результат в случае разбивки по периодам внутри периода. Представляю себе это так.
    Например, нужно получить период с 1.06 по 31.08 с разбивкой по месяцам. Тогда печатная форма будет выглядеть так.
    Июнь Июль Август
    Итоги Итоги Итоги
    Но как получить в коде значение каждого месяца или переменную, содержащую интервал по датам месяца на текущей итерации цикла?
    В данном случае перменная П имеет знаение 0.
    Этой мой первый отчет. Объясните как получить необходимый результат. Или может быть я неправильно понял условие и все должно выглядеть как-нибудь иначе?
     
  2. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Может не все данные попадают на печ. форму?
    Используйте Ит.НачДата и Ит.КонДата.
     
  3. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    это самая большая проблема! кто тебе задачу подобную ставил? думаю стоит к этому человеку обратится за разяснениями. а запросы можно делать за любой интервал. да и печатную форму можно строить динамически - ведь есть вертикальные и горизонтальные поля
     
  4. neiroromantik

    neiroromantik Гость

    Нет, все данные попадают в печатную форму. Ит.НачДата и Ит.КонДата я использовал в запросе. Задача состоит в том, чтобы была возможность
    разбить выбранные периоды на дни, недели, декады, месяцы и т.п.
    Как это сделать я пока не представляю. В документации не нашел никаких адекватных поставленной задаче примеров.
    Была идея с вложенным циклом отбирать периоды после выбора конкретного значения субконто. В первом сообщении написан пример. Но сейчас я понимаю, что это нелогично. По логике вещей необходимо во внешнем цикле отбирать период , а во вложенном значение субконто. Но тогда программа вообще не работает , пишет "не выбрано предыдущее значение". Вот и ломаю мозг, как после использования параметра "периодичность" в запросе, получить детальную разбивку по периодам. К примеру, нужно получить нач. сальдо по каждому из месяцов, входящих в заданный период отбора.
    Может кто-нибудь чем-нибудь поможет. Не словом, так кодом.

    Kir, все обратился за разъянениями.
    В печатной форме все должно выглядеть примерно так, как я и предполагал. Например,
    Июль Август Сентябрь
    Итоги Итоги Итоги
    Теперьв вопрос в том, как это реализовать в коде. Если написать запрос
    Итоги.ВыполнитьЗапрос(начдата, кондата, "10.1", , , , , "месяц")
    Как затем получить результаты этого запроса?
    Как из него получить субконто понятно. А как извлечь месяц отдельно?
     
  5. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    ну так ты все правильно делаешь - Итоги.ВыполнитьЗапрос(начдата, кондата, "10.1", , , , , "месяц")
    Потом в цикле обходишь результаты запроса и в том же цикле можешь заполнять сразу и табличную часть. только не забудь перед выполнением запроса объявить субконто - сколько их тебе нужно - Итоги.использоватьСубконо(); - синтаксис почитай в помощнике
     
  6. neiroromantik

    neiroromantik Гость

    Kir, видимо не совсем правильно, потому что таким образом не работает
    Итоги.СоздатьЗапрос(НачДата, КонДата, "10.1", , , , , период ) ;
    //Значение итогов нужно получить с учетом субконто.
    Итоги.ВыбратьПериоды()
    Пока Итоги.ПолучитьПериод()=1 Цикл
    П=ПолучитьПериод();
    Итоги.ВыбратьСубконто();
    Пока Итоги.ПолучитьСубконто()=1 Цикл
    ..........
    .........
    КонецЦикла;
    КонецЦикла;
    Например, пользователь выбирает период с 1.06.2009 по 1.08.2009 и деталицию по периодам в диалоге, со
    значением "месяц", которое передается переменной "период", заданной в запросе. Как получить в коде
    значение каждого из периодов? Я пробовал сделать это способом, который описан кодом выше. Но переменная П
    имеет в этом случае значение 0. В доке ничего не нашел по этому вопросу, поэтому прошу помощи здесь.
    Кто знает, как получить период кодом внутри периода, помогите.
    Для наглядности, если слегка сумбурно описал, визуальный пример результата.
    Июнь Июль Август
    Итоги Итоги Итоги
     
  7. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    обрабатывая результаты запроса у тебя в Итоги есть поля ДатаНач или ДатаКон. Соотвественно их можно преобразовать с помощью функции формат в название месяца. советую поглядеть отладчиком переменную ИТОГИ чтобы увидеть какие у тебя поля вообще возвращаются после выполнения запроса, а зная это - можно уже думать как их лучше использовать, ибо объект БухИтоги возвращает определенный набор данных
     
Загрузка...

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