По теме из базы знаний
- Всякие полезности
- Загрузка документов из Excel в 1С: УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы
- ЭДО: организация архива оригиналов первичных документов, комплексный отчет по ошибкам
- Распознавание и загрузка сканов в 1С "одним нажатием". УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.
- Автоматическая обработка платежных документов при загрузке банковской выписки в 1С (для УТ, БП, КА, ERP, УНФ, Розницы, УПП)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) deniseek77, ???????
НайтиПоРеквизиту(<?>,,);
Синтаксис:
НайтиПоРеквизиту(<ИмяРеквизита>,<Значение>,<ФлагГлобальногоПоиска>)
Назначение:
Найти элемент справочника по значению реквизита.
Возвращает: 1 - если действие выполнено;
0 - если действие не выполнено (элемент не найден).
Параметры:
<ИмяРеквизита> - строка с наименованием реквизита;
<Значение> - значение реквизита для поиска;
<ФлагГлобальногоПоиска> - флаг поиска:
0 - поиск выполняется в пределах подчинения справочника,
1 - поиск выполняется по всему справочнику.
Замечание:
Метод можно использовать только для реквизитов с установленным признаком ''Сортировка''.
Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.
ПоказатьСинтаксис:
НайтиПоРеквизиту(<ИмяРеквизита>,<Значение>,<ФлагГлобальногоПоиска>)
Назначение:
Найти элемент справочника по значению реквизита.
Возвращает: 1 - если действие выполнено;
0 - если действие не выполнено (элемент не найден).
Параметры:
<ИмяРеквизита> - строка с наименованием реквизита;
<Значение> - значение реквизита для поиска;
<ФлагГлобальногоПоиска> - флаг поиска:
0 - поиск выполняется в пределах подчинения справочника,
1 - поиск выполняется по всему справочнику.
Замечание:
Метод можно использовать только для реквизитов с установленным признаком ''Сортировка''.
Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.
(10) Да нет знает и восновном писал из в 8-х , в данном случае у меня происходит перебор резулитатов , как ни странно но запроса, а вот запрос в цикле не хотелось бы ( может это в 7- ой такая традиция). Кстати как я понимаю если и создать запрос то происходит перехват результатов.
(11) alw-1, Не совсем понял, что уже есть выборка документов? И надо выбирать из неё?
А запросом, вот за пару минут конструктором создал на примере приходного кассового ордера и контрагента (реквизит отбора, может быть группа справочника "контрагенты")
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|с ВыбНачПериода по ВыбКонПериода;
|ОбрабатыватьДокументы все;
|ТекущийДокумент = Документ.ПКО.ТекущийДокумент;
|Контрагент = Документ.ПКО.Контрагент;
|Группировка ТекущийДокумент;
|Условие(Контрагент в ВыбКонтрагент);
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Пока Запрос.Группировка(1) = 1 Цикл
// Обработка документов
КонецЦикла;
КонецПроцедуры
А запросом, вот за пару минут конструктором создал на примере приходного кассового ордера и контрагента (реквизит отбора, может быть группа справочника "контрагенты")
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|с ВыбНачПериода по ВыбКонПериода;
|ОбрабатыватьДокументы все;
|ТекущийДокумент = Документ.ПКО.ТекущийДокумент;
|Контрагент = Документ.ПКО.Контрагент;
|Группировка ТекущийДокумент;
|Условие(Контрагент в ВыбКонтрагент);
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Пока Запрос.Группировка(1) = 1 Цикл
// Обработка документов
КонецЦикла;
КонецПроцедуры
(12) Да именно конструктором я создал запрос, его результат в виде таблицы обхожу в цикле, но у меня есть еще доп условия которые я применяю в процессе обхода(наложить их в запросе не могу). Для реализации этих более чем оригинальных условий мне требуется искать документ по реквизиту который я получаю при обходе запроса.(может не очень понятно ну примерно так). Кстати я заметил особенность - если я в цикле(про то что это не эффективно не сейчас) создаю еще один запрос называю Запрос2 то обращение к Запросу первому - основному пропадает (если я не правильно оформляю обращение , подскажи как правильно?)?
Уточню вопрос - я хочу при обходе результата первого запроса создавать второй и использовать его результаты при обработке первого, как сделать так чтобы они друг-другу не мешали?
(вариант не идиальный но соединить две таблицы в 7 -ой не могу).
(вариант не идиальный но соединить две таблицы в 7 -ой не могу).
(17) Нет, до конца выборки цикл не доходит, как я уже говорил я обхожу один запрос и при обходе создаю второй Запрос2, но если перед созданием запроса2 я мог обращаться к элементам по типу - Запрос.Значение, то после запроса2 если я пишу Запрос.Значение то получаю сообщение что значения нет , пусто и когда открыл отладчик , как я понимаю, теперь через запрос. я могу обращаться только к данным 2-го запроса. Вариант с таблицей для выгрузки пепрвого запроса мне не подходит - выгружаются только сгруппированные поля, моя задача сложнее (или мудренее).
(18), Использовал я когда-то вложенные запросы. Все было нормально. Единственная хитрость, что если во вложенном запросе используются результаты внешнего, то надо присваивать их значения переменным. Например
ДокПрихода = Запрос1.ДокПрихода;
ТекстЗапроса2 = "
// какие-то переменные
|Условие(ДокПартии=ДокПрихода);
|";
Еще, возможно, получалось потому, что основной запрос выбирал из регистров, а внутренний - по документам.
ДокПрихода = Запрос1.ДокПрихода;
ТекстЗапроса2 = "
// какие-то переменные
|Условие(ДокПартии=ДокПрихода);
|";
Еще, возможно, получалось потому, что основной запрос выбирал из регистров, а внутренний - по документам.
В качестве завершения темы( может кому пригодится, ну а кто знает то и хорошо) могу привести пример как создать два запроса в одном модуле, причем даже к одному и тому - же объекту:
- основной запрос пишется в главной процедуре например сформировать, из нее вызывается ф-ция ,
- в этой функции создается 2-ой запрос и возвращается результат(таблицу значений - мой случай) в основную.
У меня такой механизм работает и экономит время.
- основной запрос пишется в главной процедуре например сформировать, из нее вызывается ф-ция ,
- в этой функции создается 2-ой запрос и возвращается результат(таблицу значений - мой случай) в основную.
У меня такой механизм работает и экономит время.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот