#0
by DarkFrenzy
Каким образом быстрее всего найти все документы (общее количество документов за месяц - ~8000), содержащие в своей табличной части определенную номенклатуру (в базовом отчете "реестр документов" для ТиС 2.0 потребовалось добавить поле ТМЦ/группа)? Сначала сделал это просто перебором всех документов и всех элементов табличной части (Док.ПолучитьСтроку=1 и Док.ПолучитьАтрибут) - отчет обрабатывался слишком долго. Затем попробовал выгружать колонку с номенклатурой, если она существует в список значений и искать там с помощью НайтиЗначение - на локальном компьютере выполнялось быстрее, а на сервере еще дольше чем предыдущий вариант. 1С изучаю всего месяц, поэтому быстродействие для меня пока что темный лес. Сейчас вот думаю попробовать через запрос. Может подскажете,как сделать, чтобы отчет обрабатывался быстрее всего?
#2
by Ёпрст
Запрос к регистру с фильтром на номенклатуру, из него - документ движения регистра. Запрос лучше прямой.
#4
by DarkFrenzy
>>Запрос к регистру с фильтром на номенклатуру, из него - документ движения регистра. Там список всех документов из метаданных, многие даже поле номенклатуры не содержат. Может я и туплю, но по идее они не все связаны с регистрами.
#5
by Ёпрст
штатно - это не быстро в большой базе, но можно переписать на прямой запрос.. Только вот нафига ? в Тис-е всегда есть хотя бы 1 регистр в котором участвует Номенклатура, который толкают все документы, содержащие Номенклатуру в реквизите.
#6
by Злой Бобр
Точно тупишь. Попробуй более точно указать что нужно, тогда и получишь более точную рекомендацию.
#7
by Skom
Рег.IDDOC From $Регистр.Продажи as Рег (nolock) Where $Рег.Номенклатура = :ВыбНоменклатура как то так...лень проверять
#8
by DarkFrenzy
>>а через поиск ссылок не подходит? Как раз сейчас пытаюсь разобраться как работает "НайтиСсылки(<Объекты>,<Ссылки>)", так как в запрос надо передавать большое количество видов документов, выбранных пользователем. Правда не уверен еще, что НайтиСсылки используется именно для этого:)
#9
by Skom
в общем. у тебя в ТиС есть регистр продажи (оборотный) в котором фиксируются все продажи (а так же и возвраты) номенклатуры. (перемещения там не учитываются) просто оттуда выбери ДВИЖЕНИЯ с расходом нужной тебе номенклатуры если прямым запросом то на мой не смотри. делай сам. я там фигню всякую написал)))) если штатным то я не умею им пользоваться...забыл((( в общем ВПЕРЕД!!!
#10
by Skom
если у тя ТИПОВАЯ ТиС тогда ФАКТ ПРОДАЖИ товара фиксируется в регистре ПРОДАЖИ (оборотный)
#11
by DarkFrenzy
>>Точно тупишь. Попробуй более точно указать что нужно, тогда и получишь более точную рекомендацию. Имеется изначальный список документов, содержащий в себе все виды документов метаданных. Пользователь может убирать ненужные документы из этого списка и выбирать период с какой и по какую дату искать. В базовой версии поиск можно вести по Фирме, Автору, Юр.Лицу, Проекту, Контрагенту и Складу. Также можно указать отбор по статусу (проведенные, не проведенные, помеченные на удаление) А нужно добавить возможность поиска по ТМЦ или группе ТМЦ из табличной части документа "номенклатура".
#12
by DarkFrenzy
>> если у тя ТИПОВАЯ ТиС тогда ФАКТ ПРОДАЖИ товара фиксируется в регистре ПРОДАЖИ (оборотный) Документы могут быть и не проведенные
#15
by DarkFrenzy
>>прямой запрос тебя спасет в этом плане А не подскажешь как в него передать список видов обрабатываемых документов, с учетом того, что не все содержать в табличной части графу "номенклатура"?
#20
by palpetrovich
"1С изучаю всего месяц..." мдя, одно из двух, или все-же не месяц или автор - вундеркинд :)
#21
by Злой Бобр
Тогда задам тупой вопрос - а как ты будешь определять реквизит документа по которому проверять есть там твое ТМЦ или нет?
#23
by palpetrovich
перечитай его посты ...после месяца изучения - я-бы сказал - посты не мальчика, но мужа :)
#26
by DarkFrenzy
>>Ну и сформируй этот список. В чем проблема? Список то есть. Только вот не в одном примере, я не видел как этот список передается в запрос. Поясню |Номенклатура = Документ.СписаниеТМЦ.номенклатура, Документ.ПоступлениеТМЦ.номенклатура, ... и т.д.; - это если вручную прописывать, а как не вручную сделать?
#28
by DarkFrenzy
>>"1С изучаю всего месяц..." мдя, одно из двух, или все-же не месяц или автор - вундеркинд :) Просто стоит задача как можно быстрее его освоить, вот и долблюсь по 7 часов в день.
#33
by Shaman100M
+ Это "Поиск значений в ТЧ доков". Перебираю метаданные и формирую запрос по всем документам где содержится вид поискового значения. Работает достаточно быстро.
#34
by DarkFrenzy
>>тогда нелишней будет информайця файловый у тебя вариант базы или скульный Файловый >>+ Это "Поиск значений в ТЧ доков". Спасибо, уже скачивал эту обработку, запускал - работает хоть и быстрее, но незначительно (прирост производительности около 10-15% был на сколько я помню по сравнением с тем, что у меня).
#35
by Злой Бобр
Ну а что ты хотел? 8 тыщ это фигня а не объем. Было б у тебя в день 8 тыщ - тогда б и был смысл заморачиваться с ускорением. А так +,- 10 сек. - особой роли неиграет.
#36
by palpetrovich
раз файловый - стало-быть надо смотреть в сторону 1sqlite. Это библтотека, позовляющая напряму обращаться к таблицам базы, "прямы запросы" как говорилось выше
#37
by DarkFrenzy
>>Ну а что ты хотел? 8 тыщ это фигня а не объем. Было б у тебя в день 8 тыщ - тогда б и был смысл заморачиваться с ускорением. А так +,- 10 сек. - особой роли неиграет. В том то и дело, что я понятия не имею сколько времени этот отчет должен обрабатываться при правильно написанном коде. Долгое время обработки я списываю на свои недостаточные знания языка 1с и оптимизации. Если срок обработки скажем в 3 минуты - это нормальное явление, конечно нет особого смысла заморачиваться. Если его можно свести к 20 секундам, то есть.
#38
by Злой Бобр
На прямом запросе я думаю должно в среднем отрабатывать за 10-30 сек., в зависимости отколичества и значений фильтров.
#39
by palpetrovich
+36: для одного вида документа будет выглядеть примерно так (я сам не спец в прямых, может поправят, добавят кто...): ну и саму 1sqlite.dll надо скачать и кинуть в базу
#40
by Skom
ВыбранныеДокументы - элемент на форме СПИСОК С ПОМЕТКАМИ в котором пользователи выбираюткаки виды доков обрабатывать
#45
by DarkFrenzy
>>Тогда задам тупой вопрос - а как ты будешь определять реквизит документа по которому проверять есть там твое ТМЦ или нет? Пропустил вопрос. Там только 2 варианта может быть, либо в документе есть реквизит "номенклатура", либо его нету. В других реквизитах искать не имеет смысла - для всех документов, где есть ТМЦ используется один и тот же реквизит "номенклатура".
#48
by Mikeware
во-первых, то, что реквизит с именем "Номенклатура" содержит данные вида "Справочник.номенклатура" - всего лишть соглашение, и не более. А соглашениям верить нельзя. Поэтому - проверяй тип. Во-вторых, есть еще реквизиты - справочники неопределенного вида. Или даже вообще неопределенного типа... Это тоже учитывай
#49
by Злой Бобр
Согласен на все 100. Но если автору нужно побыстрячку слепить, то вероятно пока на это можно закрыть глаза. Хотя конечно же нет ничего более постоянного чем временное, поэтому лучше сразу писать по уму.
#50
by DarkFrenzy
, Да я тоже с вами согласен, просто на данный момент у реквизита "номенклатура" всех видов документов такой тип. Побыстрячку лепить не надо, для этого уже есть обработка с простым перебором. Сейчас цель - правильно составить 1Сный запрос:) Изучение 1sqlite/MSSQL все же оставлю на потом, когда нормально изучу 1с
#51
by palpetrovich
можешь на потом, а можешь и попробовать нижеизложенную поделку :) зы: мне самому интересно, только разбираюсь с 1sqlite. Спасибо Eprst-у за помощь... в общем - то что получилось. Работает!
#52
by palpetrovich
+51: только если будешь пробовать - наверняка тебе прийдется поменять "ТМЦ" на "Номенклатура". Может еще что... ВыбрТМЦ - реквизит на форме СписокДоков - я получал просто все, где есть в табЧасти "ТМЦ". Ты можешь - как хочешь :)
#54
by DarkFrenzy
Подредактировал сегодня твой код для своей обработки ("ВыбрТМЦ" поменял везде на "ВыбТМЦ", а "ТМЦ" на "Номенклатура", добавил СписокДоков=СоздатьОбъект("СписокЗначений") и попытку базаДанных = СоздатьОбъект("SQLiteBase") как в примере ). Выдается ошибка - "Значение не представляет агрегатный объект (ВыбратьСтроку)" на строку тз.ВыбратьСтроку; Извращался по разному с кодом, но сделать запрос рабочим пока что не получается. Также, насколько я понял из кода, ВыбрТМЦ не проверяется на группу, содержащую элементы табличной части. Буду рад любой помощи.
#56
by palpetrovich
добавь вверху модуля и "поменял на "Номенклатура"" - это если у тебя справочник действительно "Номенклатура" :)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v7: Поиск соответствий номенклатуры в текстовом файле
- По умолчанию при нажатии Ctrl-F поиск настроен на поиск по текущей колонке
- Поиск номенклатуры по артикулу, содержащему пробелы
- Поиск номенклатуры по артикулу
- В Проводнике не работает Поиск!?! при нажатии на Поиск процесс зависает, справа как
- Что быстрее? Поиск в таблице значений, соответствии или прямой поиск в базе?
- Поиск в УФ как програмно отключить поиск?
- Обработка подбор номенклатуры (поиск по любому слову номенклатуры )
- 1С 8.3. Что быстрее - поиск по коду в справочнике или поиск в ТЗ
- 1С:Предприятие 8.1 УТ 10.3 Как Поиск по штрихкоду поменять на поиск по коду?
В этой группе 1С
- Командная панель и графическая схема
- 1С 8.2 Как программно получить путь к БД?
- параметры виртуальной таблицы регистра бухгалтерии ДвиженияССубконто
- Как работают с заказами поставщику в УТ10.3?
- remoteapp на server 2003?
- Кто занялся арендой 1С, поделитесь впечатлениями.
- ККМ offline и УТ 11 - все пропало?
- 8.2 НайтиФайлы не работает
- Как увеличить число одновременно запущенных 1С?
- Штрихкоды в конвертации
- Запуск бизнес-процесса с несколькими точками старта
- copyhere("folde",16); код 16 не работает!
- пропали данные в регламентированных отчетах
- Как в табличную часть документа добавить столбец, который не является реквизитом
- как зайти в безопасный режим hp proliant dl380g6 ?
- вывод значений через запятую
- Неоднозначное поле в простом запросе в одну строчку
- пронумеровать строки табличного документа
- Есть ли для УТ отчет аналог "Ведомость по контрагентам" ?
- v8: Тип неопределён Addin.КартинкаШтрихкода.Barcode