|
v7: Помогите с запросом к регистру взаиморасчетов | ☑ | ||
---|---|---|---|---|
0
vadim777
15.06.16
✎
14:57
|
Смысл запроса: получить документы движения регистра по условию СуммаОсн <> СуммаВал. Запрос не выводит документы.
Процедура Сформировать1() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать1) //|Период с Дата1 по Дата2; //|Обрабатывать НеПомеченныеНаУдаление; |Клиент = Регистр.Взаиморасчеты.Клиент; |Заказ = Регистр.Взаиморасчеты.Заказ; |СуммаОсн = Регистр.Взаиморасчеты.СуммаОсн; |СуммаВал = Регистр.Взаиморасчеты.СуммаВал; |Док = Регистр.Взаиморасчеты.ТекущийДокумент; |Группировка Клиент; |Группировка Заказ; |Группировка Док; |Условие(СуммаОсн <> СуммаВал); |Функция сСуммаОсн = КонОст(СуммаОсн); |Функция сСуммаВал = КонОст(СуммаВал); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать1"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл // Заполнение полей Клиент Таб.ВывестиСекцию("Клиент"); Пока Запрос.Группировка(2) = 1 Цикл // Заполнение полей Заказ Таб.ВывестиСекцию("Заказ"); Пока Запрос.Группировка(3) = 1 Цикл // Заполнение полей Док Таб.ВывестиСекцию("Док"); КонецЦикла; КонецЦикла; КонецЦикла; // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать1", ""); КонецПроцедуры |
|||
1
AlexYurg
15.06.16
✎
14:59
|
Попробуй вместо КонОст() использовать Приход() или Расход()
|
|||
2
Масянька
15.06.16
✎
15:00
|
(0) Из СП:
Группировка <?> Упорядочить по ; Синтаксис: Группировка <ИмяГруппировки>|<ПредопредГруппировка> [Упорядочить по <КонкретизацГруппировки>, ...][Без Упорядочивания][Без Групп][Все [ВошедшиеВЗапрос]]; Англоязычный синоним: Group <ИмяГруппировки>|<ПредопредГруппировка> [Order By КонкретизацГруппировки, ...][Without Groups][All [IncludedInQuery]]; Назначение: Установить порядок выборки информации. Параметры: <ИмяГруппировки> - имя внутренней переменной, задающей группировку; <ПредопредГруппировка> - ключевое слово одной из встроенных группировок; <КонкретизацГруппировки> - конкретизация переменной <ИмяГруппировки>, задающая порядок групп. Ключевые слова: Упорядочить по - параметры, следующие за данным ключевым словом, определяют упорядочивание строк в группировке. Без Упорядочивания - необязательное добавочное ключевое слово, которое преследует цель уменьшения времени формирования запроса, при условии, что ни упорядочивание, ни значения упорядочивания при использовании данного запроса не нужны. Без Групп - группы справочника не выводятся в запрос (для группировки по справочнику); Все - в запрос выводятся все значения, и нулевые тоже (используется для группировок по справочникам и временных группировок). ВошедшиеВЗапрос - уточняет предыдущее ключевое слово 'Все'. Использование данного слова подразумевает, что в каждую строку запроса будут включены значения данных (в том числе нулевые), для которых есть ненулевое значение хотя бы в одной строке запроса. Замечание: Предопределенные группировки: Документ (Document) - позволяет детализацию до документа; СтрокаДокумента (DocumentLine) - позволяет детализацию до строки документа; |
|||
3
vadim777
15.06.16
✎
15:10
|
(1) Результат запроса пуст.
|
|||
4
AlexYurg
15.06.16
✎
15:11
|
(3) Присоединяюсь к (2) - вместо "Группировка Док" нужно использовать предопределенную группировку: "Группировка Документ"
|
|||
5
vadim777
15.06.16
✎
15:12
|
(2) Попробовал так:
ТекстЗапроса = "//{{ЗАПРОС(Сформировать1) //|Период с Дата1 по Дата2; //|Обрабатывать НеПомеченныеНаУдаление; |Клиент = Регистр.Взаиморасчеты.Клиент; |Заказ = Регистр.Взаиморасчеты.Заказ; |СуммаОсн = Регистр.Взаиморасчеты.СуммаОсн; |СуммаВал = Регистр.Взаиморасчеты.СуммаВал; //|Док = Регистр.Взаиморасчеты.ТекущийДокумент; |Группировка Клиент; |Группировка Заказ; |Группировка Документ; |Условие(СуммаОсн <> СуммаВал); |Функция сСуммаОсн = КонОст(СуммаОсн); |Функция сСуммаВал = КонОст(СуммаВал); |"//}}ЗАПРОС Пока Запрос.Группировка(1) = 1 Цикл // Заполнение полей Клиент Таб.ВывестиСекцию("Клиент"); Пока Запрос.Группировка(2) = 1 Цикл // Заполнение полей Заказ Таб.ВывестиСекцию("Заказ"); Пока Запрос.Группировка(3) = 1 Цикл // Заполнение полей Док Сообщить(Запрос.Документ); Таб.ВывестиСекцию("Док"); КонецЦикла; КонецЦикла; КонецЦикла; В цикл по 3-й группировке процесс не входит. |
|||
6
Ёпрст
15.06.16
✎
15:15
|
(0)
>>> |Условие(СуммаОсн <> СуммаВал); зачем тебе это бредовое условие при вычислении останков в запросе ? Че надо то хоть ? |
|||
7
Ёпрст
15.06.16
✎
15:17
|
>>>получить документы движения регистра
При функции КонОст, их не было нет и не будет, от слова никогда. |
|||
8
vadim777
15.06.16
✎
15:18
|
(6) Найти документы, которые сформировали движение регистра Взаиморасчеты, где СуммаОсн <> СуммаВал.
|
|||
9
Ёпрст
15.06.16
✎
15:20
|
(8) Зачем тогда смотришь на останки ? Они к документам движения никоим боком не относятся
|
|||
10
vadim777
15.06.16
✎
15:22
|
(8) Так без функций запрос по регистрам вообще не работает. Какую функцию использовать в моем случае?
|
|||
11
Mikeware
15.06.16
✎
15:25
|
(10) Приход. Или расход.
ибо документ либо приходует, либо расходует |
|||
12
vadim777
15.06.16
✎
15:27
|
(11) Пробовал и Приход(..), и Расход(..). Результат запроса нулевой - даже в первую группировку цикл не входит.
|
|||
13
Масянька
15.06.16
✎
15:30
|
(12)
|Период с ДатаНачала по ДатаКонца; |Контрагент = Регистр.Покупатели.Договор.Владелец; |Док = Регистр.Покупатели.ТекущийДокумент; |ВидДолга = Регистр.Покупатели.ВидДолга; |Операция = Регистр.Покупатели.КодОперации; |СуРубли = Регистр.Покупатели.СуммаРуб; |СуВалюта = Регистр.Покупатели.СуммаУпр; |Основание = Регистр.Покупатели.ТекущийДокумент.Реализация.ДокОснование, | Регистр.Покупатели.ТекущийДокумент.ПКО.ДокОснование, | Регистр.Покупатели.ТекущийДокумент.СтрокаВыпискиПриход.ДокОснование; |Кред = Регистр.Покупатели.КредДокумент; |Оплата = Регистр.Покупатели.ДокументОплаты; |Группировка Док Упорядочить по Док.ДатаДок; |Функция ПриходРуб = Приход(СуРубли); |Функция РасходРуб = Расход(СуРубли); |Функция НачОстРуб = НачОст(СуРубли); |Функция НачОстВал = НачОст(СуВалюта); |Функция КонОстРуб = КонОст(СуРубли); |Условие(Контрагент = СписокКлиентов); Попробуй условие обрабатывать не в запросе. |
|||
14
vadim777
15.06.16
✎
15:34
|
(13) Что такое
|Док = Регистр.Покупатели.ТекущийДокумент; ТекущийДокумент - это предопределенный реквизит? |
|||
15
Масянька
15.06.16
✎
15:38
|
(14) Ты издеваешься?
|
|||
16
Ёпрст
15.06.16
✎
15:38
|
(12) и,.. за какой период смотрел приход и расход *
|
|||
17
Ёпрст
15.06.16
✎
15:38
|
?
|
|||
18
vadim777
15.06.16
✎
15:40
|
(16) За все
|
|||
19
Ёпрст
15.06.16
✎
15:40
|
(18) Где это "за все" в тексте запроса ?
|
|||
20
vadim777
15.06.16
✎
15:41
|
(15) Стормозил. Вот такой запрос сейчас, все равно документы не выводит:
ТекстЗапроса = "//{{ЗАПРОС(Сформировать1) |Клиент = Регистр.Взаиморасчеты.Клиент; |Заказ = Регистр.Взаиморасчеты.Заказ; |СуммаОсн = Регистр.Взаиморасчеты.СуммаОсн; |СуммаВал = Регистр.Взаиморасчеты.СуммаВал; |Док = Регистр.Взаиморасчеты.ТекущийДокумент; |Группировка Клиент; |Группировка Заказ; |Группировка Док Упорядочить По Док.ДатаДок; |Функция ПриходСуммаОсн = Приход(СуммаОсн); |Функция ПриходСуммаВал = Приход(СуммаВал); |Функция НачОстСуммаОсн = НачОст(СуммаОсн); |Функция НачОстСуммаВал = НачОст(СуммаВал); |Функция РасходСуммаОсн = Расход(СуммаОсн); |Функция РасходСуммаВал = Расход(СуммаВал); |Функция КонОстСуммаОсн = КонОст(СуммаОсн); |Функция КонОстСуммаВал = КонОст(СуммаВал); |"//}}ЗАПРОС ; |
|||
21
Ёпрст
15.06.16
✎
15:42
|
(20) На ТА нет прихода или Расхода по этому регистру.
|
|||
22
vadim777
15.06.16
✎
15:42
|
(19) Наверно, это ключевой момент. Как указать, что за весь период?
|
|||
23
Зая Бусечка
15.06.16
✎
15:43
|
(22) Укажи начдату с 1973 года
|
|||
24
пипец
15.06.16
✎
15:43
|
конструктором запросов не пользовался никогда ?
|
|||
25
пипец
15.06.16
✎
15:44
|
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ДатаНачала по ДатаКонца; |
|||
26
vadim777
15.06.16
✎
15:44
|
(24) Изначально конструктором и был создан.
|
|||
27
Масянька
15.06.16
✎
15:44
|
(23) Какая умная девочка. :)
Предлагаю - 01.01.0001 :) |
|||
28
vadim777
15.06.16
✎
15:46
|
(25) А если вообще не указывать даты - запрос будет за весь период, или на ТА?
|
|||
29
Ёпрст
15.06.16
✎
15:47
|
(28) Открой СП и почитай, там, если че , написано :)
|
|||
30
Зая Бусечка
15.06.16
✎
15:47
|
(27) Успехов вам, мадам Горски ))
(28) На ТА |
|||
31
Mikeware
15.06.16
✎
15:47
|
(28) ты "за" и "на" отличаешь?
|
|||
32
Масянька
15.06.16
✎
15:49
|
(30) Не смотрела... Отрицательный персонаж?
|
|||
33
vadim777
15.06.16
✎
15:50
|
Ну понял, понял. Завтра даты буду использовать - домой пора.
|
|||
34
Масянька
15.06.16
✎
15:50
|
(31) Ты еще спроси про "РассчитатьНа" и "РассчитатьПо" :))))
|
|||
35
пипец
16.06.16
✎
09:43
|
еще про временный расчет )))
|
|||
36
Зая Бусечка
16.06.16
✎
10:22
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |