|
v7: Поиск документа запросом | ☑ | ||
---|---|---|---|---|
0
Wefast
29.07.16
✎
14:37
|
Я совсем плох в 7
У меня есть сумма и дата. Мне нужно по этим условиям найти документ ДАтаДок = Дата(2016,07,29); Выручка = 12345; Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |ОбрабатыватьДокументы все; |Реализация = Документ.Реализация.ТекущийДокумент; |Выручка = Документ.Реализация.Выручка; |Функция РеализацияВыручкаСумма = Сумма(Выручка); |Условие(Реализация.ДатаДок = ДатаДок); |Условие(Выручка = Выручка); |" ; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат 0; КонецЕсли; И как потом все это обойти? Пока Запрос.Группировка()=1 Цикл Сообщить(ЗАпрос.Реализация.ДатаДок); Сообщить(Запрос.Выручка); КонецЦикла; Что я не так делаю? запрос то простейший вроде |
|||
1
Это_mike
29.07.16
✎
14:38
|
открой для себя конструктор,Ю чтоль...
|
|||
2
Wefast
29.07.16
✎
14:39
|
(1) я им и делал
|
|||
3
MrStomak
29.07.16
✎
14:41
|
Тебя самого как, не смущает такая строка?
|Условие(Выручка = Выручка); |
|||
4
Wefast
29.07.16
✎
14:43
|
(3) Конструктор так сделал. Но да ладно переменную я переименую.
Он и без этого условия только по дате ничего не находит судя по всему |
|||
5
MrStomak
29.07.16
✎
14:47
|
(4) ну для даты можно использовать конструкцию Период С <?> По
|
|||
6
Wefast
29.07.16
✎
14:57
|
(5) сделал вот так
КонецПроцедуры Процедура Сформ() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформ) |ОбрабатыватьДокументы все; |Без итогов; |ТекущийДокумент = Документ.Реализация.ТекущийДокумент; |ДатаДок = Документ.Реализация.ДатаДок; |Выручка = Документ.Реализация.Выручка; |Функция ВыручкаСумма = Сумма(Выручка); |Группировка ТекущийДокумент; |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформ"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка() = 1 Цикл // Заполнение полей Сформ Таб.ВывестиСекцию("Сформ"); КонецЦикла; // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформ", ""); КонецПроцедуры Все с помощью конструктора. Дату вообще нигде не выбирал. Условий не ставил. В итоге он на макет созданный конструктором выводит 5 строчек. Документов же over9000 |
|||
7
lamme
29.07.16
✎
15:03
|
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат 0; КонецЕсли; ТЗ = новый ТаблицаЗначений; // тут не так в 7-ке Запрос.выгрузить(ТЗ); Тз.выбратьстроку(); |
|||
8
MishaD
29.07.16
✎
15:03
|
Запросы, по крайней мере в файловой 7.7(не прямые) сильно тормознутые. Простая выборка отработает в 1.5 - 2 раза быстрее.
|
|||
9
Wefast
29.07.16
✎
15:11
|
(7) Показывает 5 строчек всего не понятно каких, выручка у них 0 и дату не выводит
|
|||
10
lamme
29.07.16
✎
15:14
|
ТекстЗапроса =
" |ОбрабатыватьДокументы все; |Реализация = Документ.Реализация.ТекущийДокумент; ||РеализацияДата = Документ.Реализация.ДатаДок; |Выручка = Документ.Реализация.Выручка; |Функция РеализацияВыручкаСумма = Сумма(Выручка); |Условие(Реализация.ДатаДок = ДатаДок); |Условие(Выручка = Выручка); |Группировка Реализация" |Группировка РеализацияДата" ; |
|||
11
lamme
29.07.16
✎
15:14
|
(9)
нет группировок по необходимым тебе полям |
|||
12
Ёпрст
29.07.16
✎
15:15
|
>>> |Условие(Реализация.ДатаДок = ДатаДок);
за такое надо линейкой по пальчикам, стальной |
|||
13
lamme
29.07.16
✎
15:16
|
(12)
кстати да ... там по другому период обрабатывается |
|||
14
Это_mike
29.07.16
✎
15:17
|
(12) да пусть развлекаются...
|
|||
15
lamme
29.07.16
✎
15:18
|
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода; |
|||
16
Wefast
29.07.16
✎
15:28
|
(15) спасибо
|
|||
17
Wefast
29.07.16
✎
15:31
|
(15)
|ОбрабатыватьДокументы все; |Период с ВыбНачПериода по ВыбКонПериода; |ТекущийДокумент = Документ.Реализация.ТекущийДокумент; |ДатаДок = Документ.Реализация.ДатаДок; |Выручка = Документ.Реализация.Выручка; |Функция ВыручкаСумма = Сумма(Выручка); |Группировка ТекущийДокумент; |Группировка ДатаДок; |; ТЗ = СоздатьОбъект("ТаблицаЗначений"); Запрос.выгрузить(ТЗ); Тз.выбратьстроку(); Выводит 3 строки пусто пусто сумма пусто дата сумма док дата сумма Как иерархию в общем. Как с этим бороться? |
|||
18
lamme
29.07.16
✎
15:33
|
|Без итогов;
|ОбрабатыватьДокументы все; .. |
|||
19
Builder
29.07.16
✎
15:49
|
Нахрена 2 группировки?
|Группировка ТекущийДокумент; |Группировка ДатаДок; Оставь одну |Группировка ТекущийДокумент; |
|||
20
Builder
29.07.16
✎
15:51
|
Документ.Реализация.Выручка - это реквизит табличной части или документа?
|
|||
21
csharpprogrammer
29.07.16
✎
16:24
|
Функция Всего(Док)
Возврат Док.Итог("Выручка"); КонецФункции Процедура Сформировать() ДатаДок = Дата(2016, 7, 29); Выручка = 12345; Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Период С ДатаДок По ДатаДок; |ОбрабатыватьДокументы Все; |Док = Документ.Реализация.ТекущийДокумент; |Условие(Всего(Док) = Выручка); |Группировка Док; |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка() = 1 Цикл Сообщить(Запрос.Док); КонецЦикла; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |