![]() |
![]() |
![]() |
|
v7: в запросе отбор по измерению неопределенного типа не работает ...глюк 1С или ? | ☑ | ||
---|---|---|---|---|
0
andrewch60
16.11.16
✎
23:21
|
рабочий запрос в форме документа :
ТекстЗапроса = " |Период с ДатаДок по ДатаКон; |Докум = Регистр.Расчеты.ТекущийДокумент; ->|ДокРейс = Регистр.Расчеты.Док;//ИЗМЕРЕНИЕ НЕОПРЕДЕЛЕННОГО ТИПА(СОДЕРЖИТ И ДОКУМЕНТЫ И ЭЛЕМЕНТЫ СПРАВОЧНИКОВ) |Контрагент = Регистр.Расчеты.Контрагент; |Статья = Регистр.Расчеты.Статья; |Сумма = Регистр.Расчеты.Сумма; |Группировка Статья Без Групп; |Группировка Контрагент Без Групп; |Функция ПриходЭкв = Приход(Сумма); |Функция РасходЭкв = Расход(Сумма); |Условие ((Докум.Вид() = ""СменаВодителя"")ИЛИ (Докум.Вид() = ""ЗакрытиеРейса"")ИЛИ (Докум.Вид() = ""Загрузка"")ИЛИ (Докум.Вид() = ""Разгрузка"")); |Условие (((Статья = СтатьяПриходаРасхода_ЗаПростой)или(Статья = СтатьяРасхода_ЗарплатаВодителю))и(Статья <> СтатьяПрРасх_РасчетСВодителем)); ->|Условие (ДокРейс = ТекущийДокумент());";//ВСЕ В ЭТОЙ СТРОКЕ С ТекущийДокумент()ВСЕ ПРЕКРАСНО ОТБИРАЕТ, НО ЗАПРОС НУЖЕН В ОТЧЕТЕ, И Я ПЕРЕДАЮ В НЕГО ВЫБРАННОЕ ЗНАЧЕНИЕ РЕКВИЗИТА ФОРМЫ "ПОДОКУМЕНТУ" И С НИМ ПОЛУЧАЮ ПУСТОЙ РЕЗУЛЬТАТ ЗАПРОСА... Пробовал убирать условие и тогда результат есть и можно отсеять ненужное обходя группировки. Пробовал передавать Документы.ТекущийДокумент() найденный через НайтиДокумент(ПоДокументу), не помогает...В чем соль? неужели в обходе исключать ненужное придется? |
|||
1
Torquader
16.11.16
✎
23:25
|
Попробуй сначала вместо ТекущийДокумент() использовать переменную, в которую также положишь значение ТекущийДокумент(), но но вызова отчёта.
|
|||
2
andrewch60
16.11.16
✎
23:26
|
Измерения : Контрагент - спр. Контрагентов
Док - Неопределенный Ресурс - сумма Установил у "Док" для проверки тип "Документ" и запрос заработал... но может кто то знает, почему при использовании из Формы Документа с ТекущийДокумент() отбор работает и так?? Менять тип - потерять записи по элементам справочников...Надо переписывать все |
|||
3
andrewch60
16.11.16
✎
23:30
|
(1) ПоДоку = ТекущийДокумент();
ТекстЗапроса = " |Период с ДатаДок по ДатаКон; |Докум = Регистр.Расчеты.ТекущийДокумент; |ДокРейс = Регистр.Расчеты.Док; |Контрагент = Регистр.Расчеты.Контрагент; |Статья = Регистр.Расчеты.Статья; |Сумма = Регистр.Расчеты.Сумма; |Группировка Статья Без Групп; |Группировка Контрагент Без Групп; |Функция ПриходЭкв = Приход(Сумма); |Функция РасходЭкв = Расход(Сумма); |Условие ((Докум.Вид() = ""СменаВодителя"")ИЛИ (Докум.Вид() = ""ЗакрытиеРейса"")ИЛИ (Докум.Вид() = ""Загрузка"")ИЛИ (Докум.Вид() = ""Разгрузка"")); |Условие (((Статья = СтатьяПриходаРасхода_ЗаПростой)или(Статья = СтатьяРасхода_ЗарплатаВодителю))и(Статья <> СтатьяПрРасх_РасчетСВодителем)); |Условие (ДокРейс = ПоДоку);"; уже не хочет работать. |
|||
4
Torquader
16.11.16
✎
23:37
|
А что за условие со статьями ?
Если выполняется первое или второе - то явно выполняется третье. И попробуй сделать группировку по ДокРейс |
|||
5
andrewch60
16.11.16
✎
23:49
|
(4) да, со статьями ерунда, но мне эти условия не нужны в новом запросе.
ТекстЗапроса = " |Период с ДатаН по ДатаК; |Докум = Регистр.Расчеты.ТекущийДокумент; |ДокРейс = Регистр.Расчеты.Док; |Контрагент = Регистр.Расчеты.Контрагент; |Статья = Регистр.Расчеты.Статья; |Сумма = Регистр.Расчеты.Сумма; |Группировка ДокРейс; |Группировка Статья ; |Группировка Контрагент; |Функция ПриходЭкв = Приход(Сумма); |Функция РасходЭкв = Расход(Сумма); |Условие (ДокРейс = ПоДокументу);"; попробовал с группировкой - пустой результат |
|||
6
Torquader
16.11.16
✎
23:52
|
А вообще без условия какой результат выдаёт с группировкой по ДокРейс ?
|
|||
7
andrewch60
16.11.16
✎
23:57
|
(6) Да, здесь картинки прикрепить нельзя? Без этого условия все норм.
|
|||
8
Torquader
17.11.16
✎
00:04
|
(7) Просто там можно посмотреть, что возвращает ДокРейс.
Есть подозрение, что внутри запроса ТекущийДокумент вернуло пустую ссылку по которой что-то отобралось тогда как по конкретному документу ничего отобрать нельзя. Ещё можно попробовать сделать так - создать документ общего вида - установить конкретный вид документа - установить позицию (через найти) и текущий документ от этого чуда передать в поиск. P.S. если посмотреть ЗначениеВСтрокуВнутр от того, что вернул запрос в поле и от того, с чем сравнивают - можно найти много отличий. |
|||
9
andrewch60
17.11.16
✎
00:15
|
в этой же базе есть похожий регистр, только измерение "Док" - документ определенного типа - там все без вопросов.
"по конкретному документу ничего отобрать нельзя" - конфигурация больше 3ех лет работает, и этот запрос выводил ЗП водителя в общей информации по Рейсу. Запрос с ТекущийДокумент верно отрабатывает. "создать документ общего вида - установить конкретный вид документа - установить позицию (через найти) и текущий документ от этого чуда передать в поиск. " - это пробовал, отказывается работать. Есть какая то незримая разница между "ТекущийДокумент" и все остальные варианты передачи значения... |
|||
10
andrewch60
17.11.16
✎
00:23
|
ЗначениеВСтрокуВнутр
ЗапросДопПрРасх.Группировка("ДокРейс") Рез={"O","0","0","0","0","0"," 79 15056 "} ТекущийДокумент() Тек={"O","0","0","79","0","0"," 15056 "} знать бы, что в какой последовательности идет |
|||
11
andrewch60
17.11.16
✎
00:28
|
нашел
Расшифровка для документа: {"O","0","0","53","0","0"," 847 "} "O" - признак, что это (документ, справочник и т.д.) "0" - не используется "0" - не используется "53" - идентификатор типа "0" - не используется "0" - не используется " 847 " первые 10 символов - идентификатор документа оставшиеся 3 символа - идентификатор базы УРБД Другой вариант: {"O","0","0","0","0","0"," 53 847 "} "O" - признак, что это (документ, справочник и т.д.) "0" - не используется "0" - не используется "0" - не используется "0" - не используется "0" - не используется " 53 847 " первые 10 символов - идентификатор типа следующие 10 символов - идентификатор документа оставшиеся 3 символа - идентификатор базы УРБД |
|||
12
Torquader
17.11.16
✎
00:38
|
Вот теперь ты увидел, чем отличаются документы общего и определённого вида, а также увидел, что нужно собрать, чтобы оно получилось.
Документ общего вида что возвращает в ссылке ? Кстати, вполне возможно, что если от переданной переменной внутри запроса взять ТекущийДокумент(), то она получит то, что нужно - или ТекущийДокумент() придётся взять от Док в запросе, предварительно проверив тип. Ну или вручную собрать значение через ЗначениеИзСтрокиВнутр. |
|||
13
Torquader
17.11.16
✎
00:39
|
(11) Документ общего вида - это когда вид=0, а реальный веид перенесён к идентификатору в первые 10 символов (перед ним).
|
|||
14
andrewch60
17.11.16
✎
00:54
|
ТекстЗапроса = "
|Период с ДатаН по ДатаК; |Докум = Регистр.Расчеты.ТекущийДокумент; |ДокРейс = Регистр.Расчеты.Док; |Контрагент = Регистр.Расчеты.Контрагент; |Статья = Регистр.Расчеты.Статья; |Сумма = Регистр.Расчеты.Сумма; |Группировка Контрагент; |Группировка ДокРейс; |Группировка Статья ; |Функция ПриходЭкв = Приход(Сумма); |Функция РасходЭкв = Расход(Сумма); |Условие (Контрагент = Водитель); |Условие (ДокРейс = ПоДокументу.ТекущийДокумент());"; хвала тебе ,добрый человек...ЗАРАБОТАЛО ТАК |
|||
15
andrewch60
17.11.16
✎
00:58
|
(12) с радостью пожертвую немного в фонд твоего досуга
может на тел. закинуть могу ? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |