Как найти документ по реквизиту шапки

1. alw-1 25.04.13 10:37 Сейчас в теме
У меня док -ты. определенного типа, мне нужно находить документы по определенному значению реквизита. Хотел использовать метод ВыбратьПоЗначению() но для него надо создавать объект - "документ", значит в выборку попадут док- ты разных типов. И еще по всем ли реквизитам можно отбирать?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. falcon 25.04.13 10:39 Сейчас в теме
(1) alw-1,
<ИмяОтбора> - строка с названием Общего реквизита документов либо названием Графы отбора журналов;
9. dusha0020 1120 25.04.13 11:05 Сейчас в теме
(1) alw-1,
в выборку попадут док- ты разных типов
Если в графу отбора включить 1 реквизит 1 типа документа, то в выборку этой графе отбора попадут документы только нужного типа.
3. alw-1 25.04.13 10:45 Сейчас в теме
Ну а как можно найти документ определенного типа по значению обычного реквизита?
4. deniseek77 86 25.04.13 10:48 Сейчас в теме
5. dusha0020 1120 25.04.13 10:52 Сейчас в теме
(4) deniseek77,
НайтиПоРеквизиту(<?>,,);
Синтаксис:
НайтиПоРеквизиту(<ИмяРеквизита>,<Значение>,<ФлагГлобальногоПоиска>)
Назначение:
Найти элемент справочника по значению реквизита.
Возвращает: 1 - если действие выполнено;
0 - если действие не выполнено (элемент не найден).
Параметры:
<ИмяРеквизита> - строка с наименованием реквизита;
<Значение> - значение реквизита для поиска;
<ФлагГлобальногоПоиска> - флаг поиска:
0 - поиск выполняется в пределах подчинения справочника,
1 - поиск выполняется по всему справочнику.
Замечание:
Метод можно использовать только для реквизитов с установленным признаком ''Сортировка''.
Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.
Показать
???????
6. alw-1 25.04.13 10:52 Сейчас в теме
(4) У меня документ а не справочник (такого метода нет).
7. dusha0020 1120 25.04.13 10:55 Сейчас в теме
(3) alw-1, Если это не общий реквизит или он не включен в графу отбора - самый простой способ будет запросом.
8. DenisCh 25.04.13 10:55 Сейчас в теме
А что, запросы нынче - некошерны?
10. Nick_Tick 25.04.13 11:06 Сейчас в теме
(8) DenisCh, Похоже, просто не знает человек про запросы.
11. alw-1 25.04.13 12:17 Сейчас в теме
(10) Да нет знает и восновном писал из в 8-х , в данном случае у меня происходит перебор резулитатов , как ни странно но запроса, а вот запрос в цикле не хотелось бы ( может это в 7- ой такая традиция). Кстати как я понимаю если и создать запрос то происходит перехват результатов.
12. Nick_Tick 25.04.13 12:29 Сейчас в теме
(11) alw-1, Не совсем понял, что уже есть выборка документов? И надо выбирать из неё?
А запросом, вот за пару минут конструктором создал на примере приходного кассового ордера и контрагента (реквизит отбора, может быть группа справочника "контрагенты")

//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|с ВыбНачПериода по ВыбКонПериода;
|ОбрабатыватьДокументы все;
|ТекущийДокумент = Документ.ПКО.ТекущийДокумент;
|Контрагент = Документ.ПКО.Контрагент;
|Группировка ТекущийДокумент;
|Условие(Контрагент в ВыбКонтрагент);
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;

Пока Запрос.Группировка(1) = 1 Цикл
// Обработка документов

КонецЦикла;

КонецПроцедуры
13. alw-1 25.04.13 12:45 Сейчас в теме
(12) Да именно конструктором я создал запрос, его результат в виде таблицы обхожу в цикле, но у меня есть еще доп условия которые я применяю в процессе обхода(наложить их в запросе не могу). Для реализации этих более чем оригинальных условий мне требуется искать документ по реквизиту который я получаю при обходе запроса.(может не очень понятно ну примерно так). Кстати я заметил особенность - если я в цикле(про то что это не эффективно не сейчас) создаю еще один запрос называю Запрос2 то обращение к Запросу первому - основному пропадает (если я не правильно оформляю обращение , подскажи как правильно?)?
14. Nick_Tick 25.04.13 13:01 Сейчас в теме
(13)А как выглядит обращение ко второму запросу? И я бы в такой ситуации выгрузил результаты первого в таблицу значений, она точно не пропадет.
16. alw-1 25.04.13 13:11 Сейчас в теме
(14) Nick_Tick, Была такая мысль , правда выгрузка это тоже время ,сразу перебирать результат быстрее, но наверно попробую.
15. alw-1 25.04.13 13:09 Сейчас в теме
Уточню вопрос - я хочу при обходе результата первого запроса создавать второй и использовать его результаты при обработке первого, как сделать так чтобы они друг-другу не мешали?
(вариант не идиальный но соединить две таблицы в 7 -ой не могу).
17. Nick_Tick 25.04.13 13:55 Сейчас в теме
(15) alw-1, Видимо, при обработке первого запроса, выборка проходит до конца, а не теряется, стоит попробовать метод ВНачалоВыборки()
18. alw-1 25.04.13 14:54 Сейчас в теме
(17) Нет, до конца выборки цикл не доходит, как я уже говорил я обхожу один запрос и при обходе создаю второй Запрос2, но если перед созданием запроса2 я мог обращаться к элементам по типу - Запрос.Значение, то после запроса2 если я пишу Запрос.Значение то получаю сообщение что значения нет , пусто и когда открыл отладчик , как я понимаю, теперь через запрос. я могу обращаться только к данным 2-го запроса. Вариант с таблицей для выгрузки пепрвого запроса мне не подходит - выгружаются только сгруппированные поля, моя задача сложнее (или мудренее).
19. Nick_Tick 25.04.13 15:17 Сейчас в теме
(18), Использовал я когда-то вложенные запросы. Все было нормально. Единственная хитрость, что если во вложенном запросе используются результаты внешнего, то надо присваивать их значения переменным. Например
ДокПрихода = Запрос1.ДокПрихода;

ТекстЗапроса2 = "
// какие-то переменные
|Условие(ДокПартии=ДокПрихода);
|";

Еще, возможно, получалось потому, что основной запрос выбирал из регистров, а внутренний - по документам.
20. arc581 17.05.13 10:41 Сейчас в теме
посмотрите в обработке универсальныйподборобъектов, там это все есть
21. alw-1 24.05.13 10:17 Сейчас в теме
В качестве завершения темы( может кому пригодится, ну а кто знает то и хорошо) могу привести пример как создать два запроса в одном модуле, причем даже к одному и тому - же объекту:
- основной запрос пишется в главной процедуре например сформировать, из нее вызывается ф-ция ,
- в этой функции создается 2-ой запрос и возвращается результат(таблицу значений - мой случай) в основную.
У меня такой механизм работает и экономит время.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот