|
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; КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |