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