Отбор в общем журнале по нескольким реквизитам #20800


#0 by Бит
Вопрос канешно не нов, но всеже, что нибудь новое появилось в решении этой проблемы, кроме создания общего реквизита документов и использования таблицы значений. Если кто что то другое использовал откликнитесь пожалуйста.
#1 by madness81
Точно не помню всех деталей, да и нет сейчас у меня времени детально все описать.Создается справочник специально для отборов по любым условиям. То есть структура его продумывается сама; можно и без реквизитов обойтись, поставить всего один реквизит - строка неограниченной длины, куда пишем расшифровку отбора. Затем при записи/проведении документа создаем новый элемент справочника отборов и в него записываем данные, которые требуются для отбора, например:   *** Док: РасхНакл №5 01,01,05 *** Контрагент: Куклус-Клан 95 *** и т.д.А в журнале (можно и без журнала обойтись, мы создали обработку специально для этой цели, она работала как журнал общий с возможностью отбора по люьым желаемым клиентом реквизитам) с помощью табличной части организовать работу с справочником отборов.Может если что и не понятно - не бейте. Времени у меня в обрез. Потом может зайду, кокретно напишу, если только ветка держаьтся будет. :-)
#2 by Бит
Про общий реквизит ясно (в вопросе я указывал этот способ), но неясно зачем при этом справочник отборов?
#3 by madness81
База, на которой это все делалось, была просто очень большой, юзеры в некоторые дни запросто могли ввести больше 10 тыс. документов и т.д. (Предприятие - крупнейшее в европе по переработке нефти, ОАО Линос).Сам я это не делал, но смотрел как это все работало. Скорость была на порядок выше, чем при отборе в журнале. Там было очень много подчиненых документов и т.д. Тогда был организованы справочники для хранении данных для быстрого отбора, так как в нем намного быстрее искать. То есть, каждый проведенный документ - это один элемент справочника отборов. А в этот элемент можно запихнуть что угодно, структуру только продумать надо. В результате в журнале, организованом по табличной части, организуется запрос по справочнику отборов с нужными условиями. Например: выбрать все заявки на одного испонителя, по нему же всех заказчиков и прочее нужное. Все это разбиралось и разбрасывалось по таблицам в форме. В результате юзер видел все сразу, что нужно. То есть суть в том, что в справочнике отборов хранятся ссылки на объекты. А поиск по справочнику работает ИМХО намного быстрее чем по документам. Идея правильно раскрыта? Если что непонятно справшивай, я пока здесь еще немного побуду. Минут 20-40.
#4 by Бит
Этот вариант тоже содержался в вопросе, и опять же неясно зачем при этом справочник отборов? Так как если использовать запрос+таблица значений, можно обойтись без этого справочника. Вопрос в следующем есть ли другие варианты реализации множественного отбора спосбами которые не содержатся в вопросе. Может библиотеки кто делал под это делал? Или ...
#5 by Los
- Красиво. Он просто, наверное, объяснил плохо... А вариант - очень красивый. Каждый элемент справочника - это некая хэш-функция документа. При составлении своего произвольного отбора - составляется соответствующая маска хэша и ищется в справочнике. Затем по найденным элементам - строится список документов. Можно без справочника, но тогда тебе придется хэши документов генерить на лету, а это долго. Особенно на его объемах.
#6 by madness81
Да, вариант неплох. :-) Но зато как намучались при создании его и отладке... ;-)+Щас у меня всего 5 минут на объяснения (я уже ухожу с работы, может дома еще напишу) в простом и подробном вариенте:1. Создаем новый справочник "ОтборКонтрагент"   а1) В нем делаем новый реквизит "СсылкаКонтрагент", тип "Справочник.Контрагент"   а2) В нем делаем новый реквизит "ДокументСоздания", тип "Документ"   б) Представим, что надо по этому контрагенту сохранить ссылки на заявки      (Документ.ЗаявкаНаТМЦ) и на какую-нить готовую продукцию (Справочник.      ТМЦ). Добавляем новые реквизиты СсылкаТМЦ, СсылкаЗаявка.  З.Ы.: Можно вместо реквизитов СсылкаТМЦ, СсылкаЗаявка сделать один        реквизит - СТрока неограниченной длины, и в нее сохранять список        значений с любыми данными или ссылками, предварительно преобразовав        ее в строку (ЗначениеВСтроку), но тогда скорость отбора по этой        строке меньше будет.2. В документе (назовем например Документ.ИспольнениеЗаявок) в модуле документа при проведении (или в модуле формы при записи) пишем:3. В журнале документов делаем табличную часть (думаю, понятно зачем, для отображения документов и/или результатов отбора или всяких действий). Пишем запрос по справочнику отборКонтрагент с нужными условиями.Лады, я побежал, машина ждет.Потом может подробней напишу, если не понятно, я уже тупой ;-)Всего доброго.
#7 by Бит
"юзеры в некоторые дни запросто могли ввести больше 10 тыс. документов" - это круто. У нас около 400-600 документов в день (в среднем около 500), за год примерно около 130 тыс. (260 дней * 500). На сколько я понимаю запрос через справочник работать будет давольно таки. Но глупый вопрос, как разруливали проблему с удалением документов (Для меня этот вопрос особенно важен так как будет использоваться МОД, потому что есть удаленные офисы).
#8 by Бит
Есть еще какие нибудь идеи?
#9 by pit
"юзеры в некоторые дни запросто могли ввести больше 10 тыс. документов"/24 часа60 минут в часе60 секунд в минуте60*60*24 = 86400 секунд в сутках...Итого каждые 8.64 секунды один документ....Мдя... как говорится, не тележку мазать...если 100 юзеров за 8 часов работы вводят каждый час каждый юзер по 12 доков..
#10 by Guk
Всё нормально. Там боты работают ;)...
#11 by pit
Бекас внедряет?
#12 by Бит
Но все же, по поводу множественного отбора... другие варианты или другие решения ... есть?
#13 by Бит
UP
#14 by madness81
Sorry, попутал малость насчет "10 тыс. документов", нуль лишний написал,хотя в реале около штуки доков в день набивают, в базе материального обеспечения работают практически все цеха, плюс обмен с казной (бухией и т.д.). Щас там много что поменялось, но отбор так и работает до сих пор, на склько я знаю. Бекас тут ни причем, мы (франч) сами это все делали.
#15 by madness81
Как будет время, могу выслать (если надо) тебе образец работы справочника отборов и реализации всего этого. МДшника у меня сейчас нет, у клиента (я его уже давно не обслуживаю, сопровождают другие коллеги).По поводу удаления документов все просто:В глобальном модуле пишеш процедуру обработки удаления документа,в ней при удалении документа организуеш поиск в справочнике отборов по документу и спокойно удаляешь.На случай ручного удаления (файлов документов) можно сделать обработку проверки наличия документов по ссылкам на документы в справочнике отборов.
#16 by madness81
Вообще в одной только базе по мат. обеспеч. юзеров не меньше 200 будет, а работают в день не меньше 100 юзеров. Сколько доков один вводит в час я не замерял, но прирост базы в месяц приличный. В общем работа интенсивная. Предприятие повторяю крупнейшее в европе (нефть)
#19 by Бит
Еще идеи ... может быть есть?
#20 by Бит
UP
#21 by Бит
UP
#22 by Бит
и нова UP
#23 by Златик
В графах отбора журналов документов не могу участвовать строковые реквизиты длиной более 20 символов, строковые реквизиты неограниченной длины и числовые реквизиты с дробной частью.(Из документации к релизу 24).В свете вышесказанного пример из поста 1- развод.
#24 by Mischel
ты почитай внимательнее. при чем тут графы отбора журнала? отбор, как таковой, реализуется в таблице, которую ручками делаешь. не фиг обижать тех, кто такую красоту придумал.
#25 by Бит
то 23. Читай дальше, просто человек первоначально ошибся.во вторых можно записывать код справочников в общий реквизит (остается конечно вопрос как записать данные о виде документа)Но вопрос в другом как решали по другому.
#26 by Неспец
я решал сходную задачу, но до идеала не довел:использовалась форма (специально выделенного) справочника "Журнал" подчинённого пользователю и прямыми запросами на ADO заполнялась элементами (документами)..Идея была в том, что бы использовать движок от справочника для отображения сложной выборки документов, в том числе по нескольким реквизитам одновременно. При обновлении или смене параметров - все удалялось и перестраивалось. Скорость построения на моём железе - 2000 строк/секунду. Отображение движком - мгновенно..Идеально было бы уговорить кого-нибудь из крутых писателей ВК (Орефкова, например), к которым я отношусь с _огромным_УВАЖЕНИЕМ_, разработать DLL "Расширенный общий журнал", но врядли они согласятся :(
#27 by Бит
то 26. Цель стоит, узнать есть ли в природе нароботки по этому вопросу (Пока некто особо не откликнулся) или найти идеи (Одну подкинули). Да и просто я думаю, что данная проблема (потребность) всречается часто... поэтому стараюсь ветку подольше подержать... может что появится.А по поводу ДЛЛ я пока не потену (не разу не делал), а просить ... не охота (да и кто будет безкорыстно делать, а шефы не заплатят однозначно).
#28 by Эстет хренов
мы делали через штатный механизм графы отбора в общем журнале.независимый отбор до 5 параметров, отрабатывает на ура.
#29 by Бит
Через общие реквизиты документов? Если можно по подробней.
#30 by Бит
UP
#31 by Эстет хренов
(Бит)нет, именно через графу отбораиспользуются теже старые идеи по формированию составных ключей отбораломает детально объяснять, через неделю все равно кто-то поднимет тему
#32 by Бит
Большое спасибо :)
#33 by mszsuz
Здесь есть два примера
#35 by Бит
Читал, хочется альтернативного и более производительного если это возможно...
#36 by Эстет хренов
не за что.блин, может мне тоже свой отбор попиаритькак pit конвертацию mxl->xls. :)
#37 by Бит
(Эстет хренов) Может и пора. Но пока только слова.
#38 by Эстет хренов
Штатный отбор поведенных документов по 4-5 независимым параметрам в общем журнале по графе отбора, быстро и эффективно - 10 WMZ
#39 by Бит
ЦЬЯ ?
#40 by Бодун
: Странно. У меня общий реквизит (композитный) для отборов - строка длины 111, работает как часы.ЗЫ: проверял довольно давно - на длине 124, примерно, "затыкается".
#41 by ShootNICK
Идея на форуме поднималась. штатными методами 1с (общие реквизиты) делается гибкий отбор. 4-5 независимых параметров отбра - оптимум видимо...больше - геморройней. но с калькулятором не считал - остальные методы заполнения - долго. решение рабочее. работает не на одном предприятии (минимум на двух :) )
#42 by Синхронизатор
2: ещё парочку-троечку приплюсуй.Реквизит составлялся из Id-ов агрегатных реквизитов документов (благо длина стандартная) - иногда с разделителем для красоты ("|"). Больше пяти, дейс-но, не было нужно.
#43 by Бит
UP
#44 by Бит
UP
#45 by Pro
если я правильно понял вариант может быть такой: имеем Условие1, Условие2 и т.д., создаем справочник с реквизитами ДокументПоиска тип "документ", и реквизиты по количеству условий Условие1, Условие2... При проведении документа пишем в справочник документ и ставим метку в реквизит соответствующего условия. Для корректной работы создаем две функции - для проведения документа и для отмены проведения. Создаем форму для просмотра с включением отбора по нужным реквизитам. Как я понимаю таким образом можно организовать и множественный отбор, т.е. создать УсловиеХ, которое соответствует (УсловиеА и (УсловиеБ или УсловиеВ)) и т.д.
#46 by Бит
Да (Идея интересная, не првдали?). Но вот (Эстет хренов), что умалчивает или ..
#47 by andreyka
а чем тебе не нравится составной реквизит, и реализовать просто и работает отлично.
#48 by madness81
А составной реквизит (я так понимаю, что он неограниченной длины строка, который содержит списокЗначений в внутреннем строчном значении) хранит только в типе Строка. А теперь представь ситуацию: документ удаляется. И что? А ссылка в составном реквизите сама удалится? Короче, вариант этот не очень. Лучше через явные реквизиты с явным определением типа. Правильно понял. Я по такому принципу сделал отбор.(17 и 18) Сорри, щас МД-шник скинуть не могу, его у меня нет, и когда будет - не известно, к этому клиенту я уже пока не езжу. Может кто мне передаст, в общем я ваши адреса записал, может до конца недели скину на мыло.Щас я думаю над вариантом такого отбора, чтобы пользователь мог сам выбрать нужные условия отбора. Если успех будет - ветку подниму.
#49 by DimG
При помощи формекса можно сделать любой журнал. В стандартную таблчную часть журнала пихаем вычисляемую колонку, т.е. получаем в ней ТекущийДокумент фильтруем по любым его признакам и выводим его в Таблицузначений на форме, после чего при помощи формекса прячем сандартную табличную часть журнала. Такова моя идея. И фсе.
#50 by madness81
Можно то можно, но не у всех руки потянутся...Но не знаю, каково будет, если, допустим, юзер открывает журнал, за месяц например, а если он общий - документов будет в среднем:100 юзеров * 700 документов в день * 22 дней в месяце = около 1 600 000 документов за месяц. Вопрос: сможет ли формекс переварить с достаточной скоростью стоко документов, да еще с отбором? Я честно не знаю, ни одной компоненты я не пробовал :-)
#51 by Бит
"формекс" -...?
#52 by Бит
UP
#53 by madness81
Насколько я помню Формекс - Внешняя компонента FormX. Слышал много приятного, но не пользовался, ни к чему она была мне. А дальше -
#54 by Бит
53 Спасибо.
#55 by Бодун
: поправка: FormEx,
#56 by andreyka
Отборы, как правило, нужны по реквизитам, которые присутствуют в документе, так что не удалишь ты элемент справочника, который используется в документе. Реквизит - Строка ограниченной длины. У меня такой отбор работает в двух фирмах уже два года - все довольны
#57 by Бит
то 56. Количество элементов справочников (Номенклатура, Контрагенты). Количество документов в месяц? Если можно.
#58 by andreyka
Номенклатура - 10 000, Контрагентов 20 000, Документов на данный момент 100 000
#59 by Бит
Быстро отборы отрабатывают, допустим если смотреть в интервале за год.
#60 by andreyka
задержки визуально не видно
#61 by andreyka
но опять же, смотря по какому количеству реквизитов будешь делать
#62 by Бит
Работают через терминал? SQL? Количество пользователей? (просто хочу примерить к своим задачам)
#63 by andreyka
dbf? некоторые через терминал, некоторые - нет. Я тебе советую попробовать на копии - это быстро делается.
#64 by Бит
Спасибо.
#65 by Z1
Таблица значений и 1с++ - для маленьких выборок ( а они должны быть маленькими когда много ограничений ) самый быстрый вариант ( ИМХО) причемне тратиться место для хранения доп информации и быстро и легко написать.также для шаблон поиска в строке (like) только таким способом и другие перечисленные способы не годяться.___ madness81 Вышли свою реализацию, если не сложно, образец работы справочника отбора. 1c (dog) metaltrade ( point) ru
#66 by Звездочет
Следует разделить собственно способы отбора по журналу и методы эмуляции журнала документов.Когда предлагается завести справочник с шестью реквизитами, пять из которых-значения для составления отбора, а шестой-ссылка на документ, нужно понимать, что собственно отбор по такому справочнику невозможен. Возможно только составление списка документов, удовлетворяющих наложенным фильтрам. А дальше пользователю вместо списочной формы журнала будет выдана либо таблица значений на форме, либо списочная форма самогосправочника отборов с вызванным методом ИспользоватьСписокЭлементов.Результат можно использовать для просмотра, выбора, открытия и ввода новых документов, (программно реализуемым), но этот результат не будет журналом. В частности, при вводе документов другим пользователем, таблица пвсевдо-журнала автоматически не обновится.Да и скорость работы этой подделки будет не такая, как у журналов.Теперь рассмотрим, что такое собственно отбор по пяти значениям.Если используются все пять, тогда достаточно одного справочника и одной графы отбора.Но трудно представить, что у всех документов все пять реквизитов- не пустые, и нужно использовать только такой узкий поиск. Пользователю наверняка потребуется использовать не все пять, а любое сочетание из пяти (по 1,2,3 или 4 реквизитам).Для реализации отбора по 1 реквизиту из 5 потребуется как минимум 4 графы отбора (допустим что пятый реквизит- вид документа, для которго графа не нужна).Число сочетаний по 2 из 5 =10, по 3 из 5=10, по 4 из 5=5, всего получаем как минимум 25 доп. справочников для отбора плюс еще один- для отбора по 5 из 5, и четыре графы для отбора по одному реквизиту. Для каждого справочника составного отбора- своя графа.Всего получаем минимум 30 граф отбора и 26 справочников.Слишком тяжеловесная конструкция! И не лишними ли здесь справочники?А нужен ли на практике отбор по 5 значениям именно в журнале? Вряд ли. Для этого вполне достаточно отчетов с расшифровкой ячеек, либо подделок под журналы.Для ограничения доступа пользователей к просмотру списка документов вполне достаточно отбора по 2-3 реквизитам (типа автор, склад и контрагент), что элементарно организуется пятью графами отбора, две из которых-для составных реквизитов.Поскольку для отборов по 4 реквизитам в произвольных сочетаниях требуется уже 14 граф отбора, стоит задуматься: а действительно ли нам в этой ситуации требуется отбор по журналу?
#67 by 12345
Запарили... графы отбора, справочники, ну вы блин, закопались! Быстрее и проще (никто не говорит, что это удобно), чем составным индексом по общим реквизитам с признаком отбор не сделаете, и не морочьте себе голову.
#68 by Бит
UP на всякий случай
#69 by Бит
Up
#70 by Звездочет
В качестве забавы сделал демо-конфигурацию с 5 видами отбора по справочнику и обработку, генерирующую справочники и заданное число документов с псевдослучайным выбором реквизитов (использовал 10000). После тестирования стало ясно, что справочник совершенно не нужен и отбор по составному индексу явно работает быстрее.Ясно стало, что пять реквизитов отборов-лишка, достаточно и трех.
#71 by Эстет хренов
(Звездочет)>>Поскольку для отборов по 4 реквизитам в произвольных сочетаниях требуется уже 14 граф отбора,достаточно всего одной графы отбора.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям