Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 окт 2024, 07:36

Разработка отчёта БП3.0

Автор Пересвет, 24 окт 2019, 22:46

0 Пользователей и 1 гость просматривают эту тему.

Пересвет

Здравствуйте!
Платформа 8.3 БП3.0 Посмотрите, пожалуйста код. Подготавливаю отчёт по Субконто 2, требуется вывести только по определённым счетам 60.01 и 60.02. Так же можно сделать?

alexandr_ll

Цитата: Пересвет от 24 окт 2019, 22:46
Здравствуйте!
Платформа 8.3 БП3.0 Посмотрите, пожалуйста код. Подготавливаю отчёт по Субконто 2, требуется вывести только по определённым счетам 60.01 и 60.02. Так же можно сделать?
Зачем делать запрос по всем счетам, а потом ограничивать выборку определенными счетами? Ограничьте сразу в запросе
Например:

ЗапросД = Новый Запрос;
ЗапросД.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОстаткиИОбороты.Субконто1,
| ХозрасчетныйОстаткиИОбороты.Субконто2,
| ХозрасчетныйОстаткиИОбороты.Регистратор,
| ХозрасчетныйОстаткиИОбороты.Организация,
| ХозрасчетныйОстаткиИОбороты.Счет,
| ХозрасчетныйОстаткиИОбороты.КорСчет,
| ХозрасчетныйОстаткиИОбороты.СуммаОборотДт,
| ХозрасчетныйОстаткиИОбороты.СуммаОборотКт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачДата, &КонДата, Регистратор, Счет В ИЕРАРХИИ (&ВыбСчет), &ВидыСубконто, ,не(КорСчет В ИЕРАРХИИ (&ВыбСчет))) КАК ХозрасчетныйОстаткиИОбороты
| УПОРЯДОЧИТЬ ПО
|    ХозрасчетныйОстаткиИОбороты.Регистратор.Дата ";


СписСчетов=Новый СписокЗначений;
СписСчетов.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("60"));//60 весь
СписСчетов.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("62"));//62 весь

ЗапросД.УстановитьПараметр("ВыбСчет", СписСчетов);
ЗапросД.УстановитьПараметр("НачДата", НачалоДня(Отчет.НачДата));
ЗапросД.УстановитьПараметр("КонДата", КонецДня(Отчет.КонДата));



https://helpme1c.ru/registry-buxgalterii-v-yazyke-1s-8-v-primerax

Пересвет

Ага ... Ясно. А этот кусок кода за что отвечает? Заполняет значениями параметры в форме (макете)?
Цитата: alexandr_ll от 25 окт 2019, 07:09

    ЗапросД.УстановитьПараметр("ВыбСчет", СписСчетов);
    ЗапросД.УстановитьПараметр("НачДата", НачалоДня(Отчет.НачДата));
    ЗапросД.УстановитьПараметр("КонДата", КонецДня(Отчет.КонДата));


alexandr_ll

Цитата: Пересвет от 25 окт 2019, 13:04
Ага ... Ясно. А этот кусок кода за что отвечает? Заполняет значениями параметры в форме (макете)?
Цитата: alexandr_ll от 25 окт 2019, 07:09

    ЗапросД.УстановитьПараметр("ВыбСчет", СписСчетов);
    ЗапросД.УстановитьПараметр("НачДата", НачалоДня(Отчет.НачДата));
    ЗапросД.УстановитьПараметр("КонДата", КонецДня(Отчет.КонДата));
В запросе есть параметры с символом & впереди, они задаются методом УстановитьПараметр.

Пересвет

Цитата: alexandr_ll от 25 окт 2019, 13:37В запросе есть параметры с символом & впереди, они задаются методом УстановитьПараметр.
Не совсем понятно. Сначала выполняется запрос. Потом мы создаём структуру и заливаем туда всё со счетов 60 и 62. А только потом кодом устанавливаем параметры для запроса? Я не шарю ещё в таких тонкостях...

Добавлено: 25 окт 2019, 20:22


И ещё вопрос. А почему сам запрос не работает в консоле запросов. Там ругается на синтаксис.:(


Цитировать
При выполнении запроса произошла ошибка: {ВнешняяОбработка.ВС_КонсольЗапросов.Форма.Форма.Форма(23)}: Ошибка при вызове метода контекста (Выполнить): {(11, 49)}: Не задано значение параметра "НачДата"
РегистрБухгалтерии.Хозрасчетный.Обороты(<<?>>&НачДата, &КонДата, Регистратор, Счет В ИЕРАРХИИ (&ВыбСчет), &ВидыСубконто, ,не(КорСчет В ИЕРАРХИИ (&ВыбСчет))) КАК ХозрасчетныйОстаткиИОбороты

alexandr_ll

Цитата: Пересвет от 25 окт 2019, 20:09
Цитата: alexandr_ll от 25 окт 2019, 13:37В запросе есть параметры с символом & впереди, они задаются методом УстановитьПараметр.
Не совсем понятно. Сначала выполняется запрос. Потом мы создаём структуру и заливаем туда всё со счетов 60 и 62. А только потом кодом устанавливаем параметры для запроса? Я не шарю ещё в таких тонкостях...

Добавлено: 25 окт 2019, 20:22


И ещё вопрос. А почему сам запрос не работает в консоле запросов. Там ругается на синтаксис.:(


Цитировать
При выполнении запроса произошла ошибка: {ВнешняяОбработка.ВС_КонсольЗапросов.Форма.Форма.Форма(23)}: Ошибка при вызове метода контекста (Выполнить): {(11, 49)}: Не задано значение параметра "НачДата"
РегистрБухгалтерии.Хозрасчетный.Обороты(<<?>>&НачДата, &КонДата, Регистратор, Счет В ИЕРАРХИИ (&ВыбСчет), &ВидыСубконто, ,не(КорСчет В ИЕРАРХИИ (&ВыбСчет))) КАК ХозрасчетныйОстаткиИОбороты
В запросе используется виртуальная таблица "Обороты", для нее  задаются параметры.
Подробнее - здесь:
https://helpme1c.ru/registry-buxgalterii-v-yazyke-1s-8-v-primerax
Параметры задаются методом "УстановитьПараметр" до исполнения метода "Запрос.Выполнить()", а не после.
Конечно, я привел вам только пример кода, его нужно доработать для вашей обработки. В частности присвоить правильные имена реквизитов.

Пересвет

Приблизительно понял. Спасибо.
Уточню на всякий случай. Т.е по нужным счетам "заливаем" данные  в структуру, а потом от туда переносим всё это в параметр для запроса. Так? см. рисунок.

alexandr_ll

Цитата: Пересвет от 26 окт 2019, 12:42
Приблизительно понял. Спасибо.
Уточню на всякий случай. Т.е по нужным счетам "заливаем" данные  в структуру, а потом от туда переносим всё это в параметр для запроса. Так? см. рисунок.
Так, только не в структуру а в список значений.

Пересвет

Ещё небольшой вопрос по внешнему отчёту. Как можно сделать, чтоб при нажатии кнопки "сформировать" отчёт открывался не в отдельном окне, а в том же? Сам отчёт выполнен не в Скд (если это важно).

Пересвет

Подскажет кто-нибудь?

Похожие темы (5)

Рейтинг@Mail.ru

Поиск