|
v7: Запрос в 7-ке не работает условие ОбрабатыватьДокументы... | ☑ | ||
---|---|---|---|---|
0
Джордж1
08.02.22
✎
19:49
|
Запрос
|Период с Дата1 по Дата2; |ОбрабатыватьДокументы Проведенные; |Обрабатывать НеПомеченныеНаУдаление; |Контрагент = Регистр.ОтгрузкиПоДоговорам.Договор.Владелец,Документ.СводнаяРеализацияПоДоговору.Договор.Владелец; |Договор = Регистр.ОтгрузкиПоДоговорам.Договор,Документ.СводнаяРеализацияПоДоговору.Договор; |КатегорияДоговора = Регистр.ОтгрузкиПоДоговорам.Договор.Категория,Документ.СводнаяРеализацияПоДоговору.Договор.Категория; |_Отгружено = Регистр.ОтгрузкиПоДоговорам.Сумма; |_Сумма = Документ.СводнаяРеализацияПоДоговору.Сумма; |Условие (ПустоеЗначение(Договор)=0); |Функция Отражено = Сумма(_Сумма); |Функция Отгружено = Приход(_Отгружено); |Функция Выставлено = Расход(_Отгружено); Попадают в результаты как минимум НЕпроведенные документы. Чего может быть не так? |
|||
1
Джордж1
08.02.22
✎
19:56
|
А вот это |Обрабатывать НеПомеченныеНаУдаление; - вполне работает
|
|||
2
welwel
08.02.22
✎
20:13
|
Обычно достаточно
|ОбрабатыватьДокументы Проведенные; Без этого: |Обрабатывать НеПомеченныеНаУдаление; |
|||
3
Chieftain
08.02.22
✎
20:24
|
Вообще, если память не изменяет, без указания "ОбрабатыватьДокументы" подтягивает только проведенные документы. Чтобы непроведенные показались - нужно писать "ОбрабатыватьДокументы Все;"
|
|||
4
Chieftain
08.02.22
✎
20:31
|
Сделай одну группировку по документу, в обработке выведи документы по условию документ.Проведен()=0.
Сдается мне при таком запросе что-то не так посчитали, а запрос работает как надо |
|||
5
Джордж1
08.02.22
✎
21:29
|
(4)мне не нужна группировка по документам. Запрос чем хорош - сделает сам группировки и суммы по ним посчитает.
(2,3) так до - но не работает такое |
|||
6
Ёпрст
08.02.22
✎
21:40
|
(0) как минимум, всё в топку. Скрещивать движения регистра с документом в одном запросе..это надо уметь
|
|||
7
Джордж1
08.02.22
✎
21:42
|
(6)Зачем же в топку - все же штатно и даже работает.
Если делать по отдельности, то потом формировать отчет из разных источников замучаешься - про произвольные группировки можно сразу забыть |
|||
8
DCKiller
08.02.22
✎
21:47
|
(7) Ну сделай в запросе переменную "Документ"
Документ = Регистр.ОтгрузкиПоДоговорам.ТекущийДокумент; ... Условие(Документ.Проведен() = 1); как-то так, короче... |
|||
9
Джордж1
08.02.22
✎
21:51
|
(8)во первых - такое условие скорее всего отбросит все итоги по регистрам
во вторых делал такое условие но к функции Функция ... Когда (Регистр.ОтгрузкиПоДоговорам.ТекущийДокумент()=1) - ругается на условие |
|||
10
Смотрящий
08.02.22
✎
21:52
|
|ОбрабатыватьДокументы Проведенные;
|Обрабатывать НеПомеченныеНаУдаление; Выбрось Замени |Функция Отражено = Сумма(_Сумма) Когда (Документ.СводнаяРеализацияПоДоговору.Проведен() = 1); |
|||
11
Джордж1
08.02.22
✎
21:54
|
(10)см.выше - ругается на условие так почему то
|
|||
12
DCKiller
08.02.22
✎
21:55
|
(9), (10) у тя ТекущийДокумент в запросе со скобками, вот и ругается.
|
|||
13
Джордж1
08.02.22
✎
21:55
|
и на такое
Документ.СводнаяРеализацияПоДоговору.Проведен() = 1 и на такое Документ.СводнаяРеализацияПоДоговору.ТекущийДокумент.Проведен() = 1 |
|||
14
DCKiller
08.02.22
✎
21:56
|
"ТекущийДокумент()=1"
а это что вообще такое?.. |
|||
15
Джордж1
08.02.22
✎
21:56
|
(12)я в посте ошибся. писал правильно - см (13)
Счас еще попробую |
|||
16
Джордж1
08.02.22
✎
21:56
|
(14)обшибся в посте говорю, не в запросе
|
|||
17
Джордж1
08.02.22
✎
21:59
|
{Отчет.СверкаСводныхРеализаций.Форма.Модуль(101)}: Функция Отражено = Сумма(_Сумма) Когда ( <<?>> ,Документ.СводнаяРеализацияПоДоговору.Проведен()=1);
Запрос[10] : Ожидается логическое выражение {Отчет.СверкаСводныхРеализаций.Форма.Модуль(101)}: Функция Отражено = Сумма(_Сумма) Когда ( <<?>> ,Документ.СводнаяРеализацияПоДоговору.ТекущийДокумент.Проведен()=1); Запрос[10] : Ожидается логическое выражение |
|||
18
Ёпрст
08.02.22
✎
21:59
|
Если че, по-умолчанию, чорий запрос по докам всегда обрабатывает только проведенные.
|
|||
19
Ёпрст
08.02.22
✎
21:59
|
А так, всё в топку.
|
|||
20
Джордж1
08.02.22
✎
22:00
|
(18)ну вот видишь не только
|
|||
21
Смотрящий
08.02.22
✎
22:01
|
(17) Лепи переменную запроса тогда
_Документ = Документ.СводнаяРеализацияПоДоговору.ТекущийДокумент или как он там сожрет ее А в когда уже проверяй на проведен() по переменной запроса |
|||
22
Джордж1
08.02.22
✎
22:02
|
(21)Так работает почти. - Значение не представляет агрегатный объект Проведен()
|
|||
23
Джордж1
08.02.22
✎
22:03
|
Хрень какая то. Хотя запросы в 7-ке дело темное, особенно к разным таблицам
|
|||
24
Ёпрст
08.02.22
✎
22:04
|
(20)в (0) я вижу какую то ересь..то что оно что-то возвращает, уже подвиг.
|
|||
25
Смотрящий
08.02.22
✎
22:05
|
(22) Когда убери )
|
|||
26
Ёпрст
08.02.22
✎
22:06
|
И..в (0) не видно, какой ты там вообще документ увидел.
|
|||
27
Джордж1
08.02.22
✎
22:07
|
(24)У меня все отчеты унифицированы - с произвольными отборами и группировками.
Можно было сделать через 2 запроса и ТЗ - но получилось бы некрасиво. Данный отчет - он поверочный - в принципе не так страшно если туда что-то лишнее попадет. Решаем локальную редкую задачу (25) убираешь и попадают непроведенные документы в результаты |
|||
28
Джордж1
08.02.22
✎
22:07
|
(26)В смысле какой документ - написано же какой
|
|||
29
Ёпрст
08.02.22
✎
22:08
|
(28) где написано? В какой переменной/группировке запроса он в (0) ?
|
|||
30
Джордж1
08.02.22
✎
22:09
|
(29)Я сейчас попробывал через переменную Док=Документ.СводнаяРеализацияПоДоговору.ТекущийДокумент
и проверку в Когда результат в (22) |
|||
31
DCKiller
08.02.22
✎
22:14
|
(30) Ну, тогда лепи свою функцию, которая будет проверять, проведен переданный в нее параметром док или нет, и в запросе вызывай в условие...
Условие(ДокументПроведен(Док) = 1); |
|||
32
Джордж1
08.02.22
✎
22:17
|
(31)Думал об этом.
но решил не делать, потому как непонятно на что это ругань идет {Отчет.СверкаСводныхРеализаций.Форма.Модуль(101)}: Функция Отражено = Сумма(_Сумма) Когда ( <<?>> Документ.СводнаяРеализацияПоДоговору.Проведен()=1); Запрос[10] : Ожидается логическое выражение Чего здесь интерпритатору может не нравиться |
|||
33
DCKiller
08.02.22
✎
22:23
|
(32) В запросе создай переменную "Док"
Док = Документ.СводнаяРеализацияПоДоговору.ТекущийДокумент, Документ.ЕщеКакойНибудьДокумент.ТекущийДокумент; а в функцию Функция Отражено = Сумма(_Сумма) Когда ((Док.Вид() = "СводнаяРеализацияПоДоговору") И (Док.Проведен() = 1)); вроде в запросе "Проведен()" со скобками всё же должно работать, пишут... |
|||
34
Джордж1
08.02.22
✎
22:23
|
(33)Я проверил - так работает
|
|||
35
DCKiller
08.02.22
✎
22:24
|
Уже лет 5 клюшки не ковырял, позабывал всё... эх!.. :-'(
|
|||
36
Джордж1
08.02.22
✎
22:26
|
(35)не идей почему на такое условие ругается
{Отчет.СверкаСводныхРеализаций.Форма.Модуль(101)}: Функция Отражено = Сумма(_Сумма) Когда ( <<?>> Документ.СводнаяРеализацияПоДоговору.Проведен()=1); Запрос[10] : Ожидается логическое выражение |
|||
37
DCKiller
08.02.22
✎
22:28
|
(36) Чем (33) не устраивает? Или ты хочешь заставить запрос, чтобы он отрабатывал именно эту конструкцию?
Ругается он потому, что ожидает переменную с именем "Документ", которая д.б. объявлена выше в тексте запроса, а поскольку не находит - то и пишет, что идите вы, уважаемый, отседова... с таким кодом. |
|||
38
Джордж1
08.02.22
✎
22:33
|
(37)Получается в условиях можно использовать только явно объявленные переменные, в отличии от 8-ки
|
|||
39
Злопчинский
09.02.22
✎
01:20
|
Поддерживаю Епрста.
На удостоверение в том что запрос выдает вменяемые данные времени гораздо больше чем просто тупо скрестить результаты двух запросов 9тем более что с ИТЗ это враз быстрее чем с просто ТЗ). . ну и Когда - отрабатывает уже "потом" на сделанной выборке, а не во время собственно самой выборки данных запросом) |
|||
40
Злопчинский
09.02.22
✎
01:22
|
Группировки вообще не указаны. хрень какая-то.
при этом запросто при таком вымученном запросе могут получитьяс совершенно "разные" результаты (неожидаемые) в зависимости от периода |
|||
41
acanta
09.02.22
✎
01:42
|
Обрабатывать (не)помеченные на удаление о носится к запросу по любой таблице (справочник или документы), а (не)проведенные к таблице документов. На регистры (накопления/бухгалтерии)как бы вообще не должно влиять, но это не точно.
|
|||
42
Chieftain
09.02.22
✎
01:50
|
(34) А я тебе говорил - выведи группировки по документам и проверь - если среди них непроведенные. Так ты выяснишь правильно ли запрос отрабатывает.
(36) Потому что нет такого поля в запросе "Документ.СводнаяРеализацияПоДоговору" |
|||
43
Chieftain
09.02.22
✎
01:52
|
(20) Ты ересь пишешь, специально проверил - все работает, непроведенные документы в запросе только при "ОбрабатыватьДокументы Все;"
|
|||
44
Джордж1
09.02.22
✎
08:14
|
(40)Группировки потом добавляются - через универсальный механизм
(41) вот не накладывается условие на таблицу докумнета (42)еще раз - при группировке по документам - итогов по группировкам не получишь (43) Хреново проверил. |
|||
45
АгентБезопасной Нацио
09.02.22
✎
08:39
|
(39) если есть ИТЗ - значит, есть 1с++. Если есть 1с++ - какой смысл лепить черный запрос?
зы. может, конечно, я предвзят - но я забросил черные запросы сразу, как появился механизм прямых... и так "черные" и не освоил. |
|||
46
Ёпрст
09.02.22
✎
10:09
|
(45) ага, и после прямых, такой дичи как в (0) даже в чорных перестал бы писать, после усвоения.
|
|||
47
Chieftain
09.02.22
✎
12:20
|
(44) Группировка по документам - для проверки, что действительно попадают непроведенные документы в результатах запроса. А то пока только твои слова, что данные неверные.
Еще вариант как достоверно проверить - создай непроведенный документ СводнаяРеализацияПоДоговору с неприлично большой суммой и сравни результаты запроса с ним и без. Проверил хорошо, с разными вариантами соединения таблиц и тестовым документом. |
|||
48
Джордж1
09.02.22
✎
13:04
|
(47)А врать или придумывать мне зачем. - я сразу в результатах отчета вижу данные по непроведенному документу. + в тестовой базе ситуацию моделировал -
ОбрабатыватьДокументы Проведенные; - не работает |
|||
49
Chieftain
09.02.22
✎
22:03
|
(48) Не врать, а заблуждаться. Поэтому и говорю - вывод самый простой способ гарантированно проверить достоверность твоего "вижу"
Я сделал простой тест, результат различается, значит работает Проверил попутно воспоминания, что по умолчанию именно "ОбрабатыватьДокументы Проведенные;" НаДату = '02.02.22'; ТекстЗапроса = " |Период с НаДату По НаДату; |ОбрабатыватьДокументы Проведенные; |Контрагент = Регистр.Долги.Контрагент,Документ.Реализация.Контрагент; |ТекущийДокумент = Регистр.Долги.ТекущийДокумент,Документ.Реализация.ТекущийДокумент; |_СуммаРег = Регистр.Долги.Долг; |_Сумма = Документ.Реализация.СуммаВзаиморасчетов; |Функция Сумма = Сумма(_Сумма); |Функция СуммаРег = Приход(_СуммаРег); |Группировка Контрагент; |"; Запрос = СоздатьОбъект("Запрос"); Запрос.Выполнить(ТекстЗапроса); Сообщить("Проведенные: "+Запрос.Сумма+" <> "+Запрос.СуммаРег,"!!!"); ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"ОбрабатыватьДокументы Проведенные;","ОбрабатыватьДокументы Все;"); Запрос = СоздатьОбъект("Запрос"); Запрос.Выполнить(ТекстЗапроса); Сообщить("Все: "+Запрос.Сумма+" <> "+Запрос.СуммаРег,"!!!"); |
|||
50
Злопчинский
09.02.22
✎
23:27
|
(48) для теста выкинь обращение к этому документу по ссылке из регистра и потом посмотри...
. Я, всегда оставляю 1℅ в своих утверждениях про бред, ибо всё возможнт в этом подлунном мире. . Но с учётом того что прямыми запросами я не пользуюсь - косяк бы выплыл... . Дай текст запроса для воспроизводимого текста, самому мне влом хреначить |
|||
51
Злопчинский
09.02.22
✎
23:53
|
Автор в этой ветке - неадекват (не вообще, а в данной ветке)
Не приведен ПОЛНЫЙ ТЕКСТ "неработающего" запроса |
|||
52
Злопчинский
10.02.22
✎
00:24
|
Воспроизводим ситуацию.
1. ТиС, текущая дата, документов в текущей дате нет 2. Заявка покупателя, проводим (движения по заявке в плюс, Фирма-Номенклатура-Договор-Заявка) 3. Реализация на основании заявки покупателя, проводим (движения по заявке в минус, Фирма-Номенклатура-Договор-Заявка) 4. Заявку покупателя - отменяем проведение https://www.screencast.com/t/EtYm2WRb Вменяемый запрос в адекватном виде Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{хрен вам а не конструктор |Период с ВыбНачПериода по ВыбКонПериода; |ОбрабатыватьДокументы Проведенные; |Обрабатывать НеПомеченныеНаУдаление; |СуммаВзаиморасчетов = Документ.ЗаявкаПокупателя.СуммаВзаиморасчетов; |Функция СуммаСуммаВзаиморасчетов = Сумма(СуммаВзаиморасчетов); |Группировка Документ; |"//}}хрен вам а не конструктор ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; ТЗ = ""; Запрос.Выгрузить(ТЗ,1,1); ПечатьТЗ(ТЗ,"Тест (Мутный запрос), итоги"); Итог - пустой. работает правильно и ожидаемо, ибо запрос вменяемый . теперь делаем невменяемый запрос, аналог (0) . Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{хрен вам а не конструктор |Период с ВыбНачПериода по ВыбКонПериода; |ОбрабатыватьДокументы Проведенные; |Обрабатывать НеПомеченныеНаУдаление; |Контрагент = Регистр.Заявки.ДоговорПокупателя.Владелец, Документ.ЗаявкаПокупателя.Договор.Владелец; |Договор = Регистр.Заявки.ДоговорПокупателя, Документ.ЗаявкаПокупателя.Договор; |СтоимостьРасход = Регистр.Заявки.СтоимостьРасход; |СуммаВзаиморасчетов = Документ.ЗаявкаПокупателя.СуммаВзаиморасчетов; |Функция СуммаСтоимостьРасход = Расход(СтоимостьРасход); |Функция СуммаСуммаВзаиморасчетов = Сумма(СуммаВзаиморасчетов); |Условие (ПустоеЗначение(Договор)=0); |Группировка Контрагент Без групп; |Группировка Договор Без Групп; |Группировка Документ; |"//}}хрен вам а не конструктор ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; ТЗ = ""; Запрос.Выгрузить(ТЗ,1,1); ПечатьТЗ(ТЗ,"Тест (Мутный запрос), итоги"); . Получаем результат, в котором присутствует непроведенный документ, внезапно, да? https://www.screencast.com/t/zUjM4Bng7t . Причину - я указал в 50. А главная причина почему у меня такой хрени не вылазит - я не пишу мутных запросов. |
|||
53
Злопчинский
10.02.22
✎
00:26
|
А теперь делаем еще интереснее для понимания почему у автора вылезла "хрень" - распроводим и реализацию - итого в периоде вообще нет проведенных документов...
и смотрим результат по запросу с заремленной строкой и разремленной... с учетом того что в периоде вообще нет движений по регистру... и думаем... в основном ТС пусть думает . |Период с ВыбНачПериода по ВыбКонПериода; |ОбрабатыватьДокументы Проведенные; |Обрабатывать НеПомеченныеНаУдаление; |Контрагент = Документ.ЗаявкаПокупателя.Договор.Владелец; |Договор = Документ.ЗаявкаПокупателя.Договор; //|СтоимостьРасход = Регистр.Заявки.СтоимостьРасход; //а вот если эту строку разремить!! |СуммаВзаиморасчетов = Документ.ЗаявкаПокупателя.СуммаВзаиморасчетов; |Функция СуммаСуммаВзаиморасчетов = Сумма(СуммаВзаиморасчетов); |Условие (ПустоеЗначение(Договор)=0); |Группировка Контрагент Без групп; |Группировка Договор Без Групп; |Группировка Документ; |
|||
54
Злопчинский
10.02.22
✎
00:30
|
а извращениями как у ТС я в рабочее время не занимаюсь, только как хобби ;-)
https://infostart.ru/1c/articles/485039/ |
|||
55
Злопчинский
10.02.22
✎
10:47
|
что, у автора кончилась фантазия?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |