Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Другие решения на платформе "1С:Предприятие 8"]

Запрос 8.1. нужен совет по синтаксису

Тимур15rus
читатель
офлайн
Дата регистрации: 08.11.2008
Сообщений: 613
Пост №1
 
27.01.2011 13:10

Регистр - Долги<br>Измерения - Контрагент, датаплатежа<br>Ресурсы - сумма<br><br>вопрос. Как написать запрос, который будет выводить за определенный период по дням конечный остаток, и еще колонку -просроченный остаток,(т.е. дата платежа меньше выводимой даты). знаю в 7.7 аналог (Когда датаПлатежа и тд.) а вот в 8 не получается(((<br><br>Спасибо заранее<br>

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №2
 
27.01.2011 14:54

"В 8-ке запросы - это как запрос к SQL, а значит получить Остатки в разрезе дат одним махом не выйдет.<br>Я делал так:<br>1. Выборка ОстаткиИОбороты за период<br>2. Сбор периодов<br>3. Получение таблицы связей<br>4. Получение итоговой таблицы.<br>т.е. ваш запрос (правда без просроченного остатка) будет выглядеть примерно так:<br>лЗапрос = Новый Запрос;<br>лЗапрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;<br>лЗапрос.Текст = "Выбрать * Поместить ВТОстатки Из РегистрыНакопления.Долги.ОстаткиИОбороты (&ДатаНач, &ДатаКон, Секунда, , ) Как Остатки";<br>лЗапрос.УстановитьПараметр("ДатаНач", ДатаНач);<br>лЗапрос.УстановитьПараметр("ДатаКон", ДатаКон);<br>лЗапрос.Выполнить(); //Это 1.<br>лЗапрос.Текст = "Выбрать Остатки.Контрагент, КонецПериода (Остатки.ДатаПлатежа) Как ДатаСреза <br>|Поместить ВТДатыСреза Из ВТОстатки Как Остатки<br>|Сгруппировать по Остатки.Контрагент, КонецПериода (Остатки.ДатаПлатежа)";<br>лЗапрос.Выполнить(); //Это 2.<br>лЗапрос.Текст = "Выбрать ДатыСреза.Контрагент, ДатыСреза.ДатаСреза, Максимум(Остатки.ДатаПлатежа) Как МаксДатаПлатежа<br>|Поместить ВТСвязи Из ВТДатыСреза Как ДатыСреза Внутреннее соединение ВТОстатки Как Остатки по<br>| ДатыСреза.Контрагент = Остатки.Контрагент И ДатыСреза.ДатаСреза >= Остатки.ДатаПлатежа<br>|Сгруппировать по ДатыСреза.Контрагент, ДатыСреза.ДатаСреза";<br>лЗапрос.Выполнить(); //Это 3.<br>лЗапрос.Текст = "Выбрать ДатыСреза.*, Остатки.*<br>|Из ВТДатыСреза Как ДатыСреза Внутреннее соединение ВТСвязи Как Связи Внутреннее соединение ВТОстатки Как Остатки по<br>| Связи.Контрагент = Остатки.Контрагент И Связи.МаксДатаПлатежа = Остатки.ДатаПлатежа<br>| по ДатыСреза.Контрагент = Связи.Контрагент И ДатыСреза.ДатаСреза = Связи.ДатаСреза"<br>ТЗ = лЗапрос.Выполнить().Выгрузить(); //Это 4.<br><br>Ну а дальше - вооружаетесь КонсольюЗапросов и гоняете запросы добиваясь нужного вам результата."

Tanya
читатель
офлайн
Дата регистрации: 03.12.2001
Сообщений: 8412
Пост №3
 
27.01.2011 17:31

"Можно проще<br><br>1. Использовать СКД<br>2. Если запрос то например так <br> текст запроса"<br> |...<br> | Наличные.Период КАК Период<br> |ИЗ<br> | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(<br> | &НачалоПериода,<br> | &КонецПериода,<br> | ДЕНЬ,<br> |.... ) КАК Наличные<br> |<br> |ПО<br> | Счет,<br> | Период ПЕРИОДАМИ(ДЕНЬ, &НачалоПериода, &КонецПериода)";<br><br><br>выборка1=запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Счет");<br>пока выборка1.Следующий() цикл<br> выборка2=выборка1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Период","Все");<br> пока выборка2.Следующий() цикл<br>.....<br> // получаем остатки на каждый день<br>"

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация