|   |   | 
| 
 | 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 Цикл Сообщить(Запрос.Док); КонецЦикла; КонецПроцедуры | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |