• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы neiroromantik
  • Дата начала
N

neiroromantik

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

unknown181538

Но разницы в случае работы того или иного условия в печатной форме нет.
Может не все данные попадают на печ. форму?
Но как получить в коде значение каждого месяца или переменную, содержащую интервал по датам месяца на текущей итерации цикла?
Используйте Ит.НачДата и Ит.КонДата.
 
K

KiR

Загводка еще в том, что я не до конца понимаю каким должен быть результат в случае разбивки по периодам внутри периода
это самая большая проблема! кто тебе задачу подобную ставил? думаю стоит к этому человеку обратится за разяснениями. а запросы можно делать за любой интервал. да и печатную форму можно строить динамически - ведь есть вертикальные и горизонтальные поля
 
N

neiroromantik

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

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

KiR

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

neiroromantik

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

KiR

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!