|   |   | 
| 
 | v7: Запросы в 1с 7.7 | ☑ | ||
|---|---|---|---|---|
| 0
    
        Starhan 08.08.16✎ 09:02 | 
        Имеется вот такой запрос. Структура метданных следующая, есть документ (ВыгрузкаДокумента) в шапке которого реквизит - ДокументНаВыгрузку (тип документ), надо запросом проверить есть ли уже документы с нужным документом и ВидомОперации на выгрузку
 //Процедура ДокументНаВыгрузке(). Функция ДокументНаВыгрузке(ТекДок,ВидОперации) Экспорт Перем Запрос, ТекстЗапроса; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(ЗапросДокументНаВыгрузке) |ОбрабатыватьДокументы НеПроведенные; |Обрабатывать НеПомеченныеНаУдаление; |Без итогов; |ВыгрузкаДокумента= Документ.ВыгрузкаДокумента.ТекущийДокумент; |ДокументНаВыгрузку = Документ.ВыгрузкаДокумента.ДокументНаВыгрузку; |ВидОперации = Документ.ВыгрузкаДокумента.ВидОперации; |Выгружен = Документ.ВыгрузкаДокумента.Выгружен; |Условие(ДокументНаВыгрузку = ТекДок); |Условие(ВидОперации = ВидОперации); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат 0; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса // Заполнение полей "Заголовок" Пока Запрос.Группировка() = 1 Цикл // Заполнение полей ЗапросДокументНаВыгрузке Возврат 1; КонецЦикла; // Вывод заполненной формы КонецФункции //ДокументНаВыгрузке(ТекДок,ВидОперации) Проблема в том что запрос выполняется но всегда пустой (обход не проходит) Что я делаю не так? | |||
| 1
    
        Ёпрст гуру 08.08.16✎ 09:11 | 
        Передаешь не ссылку на документ     | |||
| 2
    
        LazyStranger 08.08.16✎ 09:11 | 
        скорее всего впадает в ступор от условия
 (ВидОперации = ВидОперации) переименуй переменную в запросе |запрВидОперации = Документ.ВыгрузкаДокумента.ВидОперации; |Условие(запрВидОперации = ВидОперации); | |||
| 3
    
        Ёпрст гуру 08.08.16✎ 09:11 | 
        + запрос в топку, весь     | |||
| 4
    
        Остап Сулейманович 08.08.16✎ 09:14 | 
        (0)
 1. В запросе нет функции. Хотя бы счётчик. 2. Не указаны даты. 3. В семерке это проще сделать выборкой. | |||
| 5
    
        Ёпрст гуру 08.08.16✎ 09:16 | 
        (4) 
 1.для этого запроса они не нужны 2.аналогично | |||
| 6
    
        Builder 08.08.16✎ 09:17 | 
        (4) В запросе по документам и справочникам функция не нужна.
 Даты да, неплохо бы указать. Выборкой по подчиненным тут будет скорее всего быстрее. | |||
| 7
    
        Starhan 08.08.16✎ 09:33 | 
        (1) передаю как ТекущийДокумент()
 это неправильно? | |||
| 8
    
        Starhan 08.08.16✎ 09:33 | 
        (3) а как лучше я тонкостей 7.7. не помню совсем.     | |||
| 9
    
        Ёпрст гуру 08.08.16✎ 09:35 | 
        (7) покажи, что передаешь     | |||
| 10
    
        Ёпрст гуру 08.08.16✎ 09:36 | 
        ну и 
 |ОбрабатыватьДокументы Все; для начала | |||
| 11
    
        Ёпрст гуру 08.08.16✎ 09:37 | 
        ну и выбратьподчиненныедокументы будет быстрее     | |||
| 12
    
        Остап Сулейманович 08.08.16✎ 09:37 | 
        (8)
 Докс = СоздатьОбъект("Документ"); Докс.ВыбратьДокументы(начДата, конДата, ТекущийДокумент()); Пока Докс.ПолучитьДокумент() = 1 Цикл Если Докс.Проведен() = 1 Тогда Продолжить; КонецЕсли; Если Докс.Вид() = "ТвойВидДокумента" Тогда Если Докс.ВидОперации = ТвойВидОперации Тогда Возврат 1; КонецЕсли; КонецЕсли; КонецЦикла; Возврат 0; | |||
| 13
    
        Starhan 08.08.16✎ 09:39 | 
        (9)
 ДокументНаВыгрузке(ТекущийДокумент(),Перечисление.ВидыОперацийДокументНавыгрузку.Продажа); | |||
| 14
    
        Starhan 08.08.16✎ 09:44 | 
        А может кто нибудь подсказать как этот запрос будет выглядить через ToySQL     | |||
| 15
    
        Это_mike 08.08.16✎ 09:46 | 
        (14) А почему Той? 
 Я, кстати, только одну контору виделЭ, которая той использовала (заморозчики) | |||
| 16
    
        Хуан 08.08.16✎ 09:46 | 
        Используй выбратьподчиненныедокументы()     | |||
| 17
    
        Это_mike 08.08.16✎ 09:47 | 
        И да, зачем тебе в результтах запроса ВидОперации, если ты по нему фильтруешь     | |||
| 18
    
        Starhan 08.08.16✎ 09:48 | 
        (15) потому что в базе уже используется той скл
 легаси :) Я не виноватый | |||
| 19
    
        Starhan 08.08.16✎ 09:49 | 
        (16) это надо документ ВыгрузкаДокумента подчинить документу Чек (реквизит ДокументНаВыгрузку)?     | |||
| 20
    
        Это_mike 08.08.16✎ 09:51 | 
        (18) не помню, чем ToySQL отличается
 (19) не надо, он уже сам подчинился - ссылку записал | |||
| 21
    
        Хуан 08.08.16✎ 09:51 | 
        Условие(ДокументНаВыгрузку = ТекДок);
 Судя по тексту запроса - он уже подчинен. | |||
| 22
    
        Starhan 08.08.16✎ 09:53 | 
        (21) подчинен - является реквизитом документа?     | |||
| 23
    
        Starhan 08.08.16✎ 09:53 | 
        (20) ага понял.     | |||
| 24
    
        Boroda 08.08.16✎ 09:53 | 
        Запрос нао доработать с учетов данных советов и еще добавить строчку "Группировка Документ". Примерно вот так:
 ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ДатаНачала по Датаокончания; |Без итогов; |ТекДок = Документ.ПКО.ТекущийДокумент; |Основание = Документ.ПКО.ДокОснование; |КодОперации = Документ.ПКО.КодОперации; |Условие(Основание = ВыбДок); |Условие(КодОперации = ВыбКодОперации); |Группировка Документ; |"//}}ЗАПРОС ; | |||
| 25
    
        Хуан 08.08.16✎ 09:54 | 
        (22) Да. На него есть ссылка в любом реквизите документа     | |||
| 26
    
        Это_mike 08.08.16✎ 09:56 | 
        а вообще, такой запрос должен жутко долго работать. надо (16), или если прямой - тотоже по 1scrdoc     | |||
| 27
    
        Starhan 08.08.16✎ 10:27 | 
        переписал на той скл по аналогии с тем что было в базе, заработало всем спасибо.     | |||
| 28
    
        Это_mike 08.08.16✎ 10:32 | 
        (27) кинь поглядеть, чем синтаксис ТойСКЛ отличается...     | |||
| 29
    
        Starhan 08.08.16✎ 13:40 | 
        ВремТаб = СоздатьОбъект("ТаблицаЗначений");
 ТекстЗапроса = " |SELECT TOP 1 | [Док.ДокументНаВыгрузку] ДокументНаВыгрузку |FROM | [Документ.ВыгрузкаДокумента] Док WITH(NOLOCK) |WHERE | [Док.ДокументНаВыгрузку]=[@ТекДок] AND | [Док.ВидОперации]=[@ВидОперации] | |"; Если глЗапросSQL.МетаЗапрос(ТекстЗапроса) = 0 Тогда Сообщить(глЗапросSQL.Ошибка); Возврат 0; КонецЕсли; глЗапросSQL.Выгрузить(ВремТаб); Если ВремТаб.КоличествоСтрок() = 0 Тогда Возврат 0; Иначе Возврат 1; КонецЕсли; | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |