#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). На сколько я понимаю запрос через справочник работать будет давольно таки. Но глупый вопрос, как разруливали проблему с удалением документов (Для меня этот вопрос особенно важен так как будет использоваться МОД, потому что есть удаленные офисы).
#9
by pit
"юзеры в некоторые дни запросто могли ввести больше 10 тыс. документов"/24 часа60 минут в часе60 секунд в минуте60*60*24 = 86400 секунд в сутках...Итого каждые 8.64 секунды один документ....Мдя... как говорится, не тележку мазать...если 100 юзеров за 8 часов работы вводят каждый час каждый юзер по 12 доков..
#12
by Бит
Но все же, по поводу множественного отбора... другие варианты или другие решения ... есть?
#14
by madness81
Sorry, попутал малость насчет "10 тыс. документов", нуль лишний написал,хотя в реале около штуки доков в день набивают, в базе материального обеспечения работают практически все цеха, плюс обмен с казной (бухией и т.д.). Щас там много что поменялось, но отбор так и работает до сих пор, на склько я знаю. Бекас тут ни причем, мы (франч) сами это все делали.
#15
by madness81
Как будет время, могу выслать (если надо) тебе образец работы справочника отборов и реализации всего этого. МДшника у меня сейчас нет, у клиента (я его уже давно не обслуживаю, сопровождают другие коллеги).По поводу удаления документов все просто:В глобальном модуле пишеш процедуру обработки удаления документа,в ней при удалении документа организуеш поиск в справочнике отборов по документу и спокойно удаляешь.На случай ручного удаления (файлов документов) можно сделать обработку проверки наличия документов по ссылкам на документы в справочнике отборов.
#16
by madness81
Вообще в одной только базе по мат. обеспеч. юзеров не меньше 200 будет, а работают в день не меньше 100 юзеров. Сколько доков один вводит в час я не замерял, но прирост базы в месяц приличный. В общем работа интенсивная. Предприятие повторяю крупнейшее в европе (нефть)
#23
by Златик
В графах отбора журналов документов не могу участвовать строковые реквизиты длиной более 20 символов, строковые реквизиты неограниченной длины и числовые реквизиты с дробной частью.(Из документации к релизу 24).В свете вышесказанного пример из поста 1- развод.
#24
by Mischel
ты почитай внимательнее. при чем тут графы отбора журнала? отбор, как таковой, реализуется в таблице, которую ручками делаешь. не фиг обижать тех, кто такую красоту придумал.
#25
by Бит
то 23. Читай дальше, просто человек первоначально ошибся.во вторых можно записывать код справочников в общий реквизит (остается конечно вопрос как записать данные о виде документа)Но вопрос в другом как решали по другому.
#26
by Неспец
я решал сходную задачу, но до идеала не довел:использовалась форма (специально выделенного) справочника "Журнал" подчинённого пользователю и прямыми запросами на ADO заполнялась элементами (документами)..Идея была в том, что бы использовать движок от справочника для отображения сложной выборки документов, в том числе по нескольким реквизитам одновременно. При обновлении или смене параметров - все удалялось и перестраивалось. Скорость построения на моём железе - 2000 строк/секунду. Отображение движком - мгновенно..Идеально было бы уговорить кого-нибудь из крутых писателей ВК (Орефкова, например), к которым я отношусь с _огромным_УВАЖЕНИЕМ_, разработать DLL "Расширенный общий журнал", но врядли они согласятся :(
#27
by Бит
то 26. Цель стоит, узнать есть ли в природе нароботки по этому вопросу (Пока некто особо не откликнулся) или найти идеи (Одну подкинули). Да и просто я думаю, что данная проблема (потребность) всречается часто... поэтому стараюсь ветку подольше подержать... может что появится.А по поводу ДЛЛ я пока не потену (не разу не делал), а просить ... не охота (да и кто будет безкорыстно делать, а шефы не заплатят однозначно).
#28
by Эстет хренов
мы делали через штатный механизм графы отбора в общем журнале.независимый отбор до 5 параметров, отрабатывает на ура.
#31
by Эстет хренов
(Бит)нет, именно через графу отбораиспользуются теже старые идеи по формированию составных ключей отбораломает детально объяснять, через неделю все равно кто-то поднимет тему
#36
by Эстет хренов
не за что.блин, может мне тоже свой отбор попиаритькак pit конвертацию mxl->xls. :)
#38
by Эстет хренов
Штатный отбор поведенных документов по 4-5 независимым параметрам в общем журнале по графе отбора, быстро и эффективно - 10 WMZ
#40
by Бодун
: Странно. У меня общий реквизит (композитный) для отборов - строка длины 111, работает как часы.ЗЫ: проверял довольно давно - на длине 124, примерно, "затыкается".
#41
by ShootNICK
Идея на форуме поднималась. штатными методами 1с (общие реквизиты) делается гибкий отбор. 4-5 независимых параметров отбра - оптимум видимо...больше - геморройней. но с калькулятором не считал - остальные методы заполнения - долго. решение рабочее. работает не на одном предприятии (минимум на двух :) )
#42
by Синхронизатор
2: ещё парочку-троечку приплюсуй.Реквизит составлялся из Id-ов агрегатных реквизитов документов (благо длина стандартная) - иногда с разделителем для красоты ("|"). Больше пяти, дейс-но, не было нужно.
#45
by Pro
если я правильно понял вариант может быть такой: имеем Условие1, Условие2 и т.д., создаем справочник с реквизитами ДокументПоиска тип "документ", и реквизиты по количеству условий Условие1, Условие2... При проведении документа пишем в справочник документ и ставим метку в реквизит соответствующего условия. Для корректной работы создаем две функции - для проведения документа и для отмены проведения. Создаем форму для просмотра с включением отбора по нужным реквизитам. Как я понимаю таким образом можно организовать и множественный отбор, т.е. создать УсловиеХ, которое соответствует (УсловиеА и (УсловиеБ или УсловиеВ)) и т.д.
#48
by madness81
А составной реквизит (я так понимаю, что он неограниченной длины строка, который содержит списокЗначений в внутреннем строчном значении) хранит только в типе Строка. А теперь представь ситуацию: документ удаляется. И что? А ссылка в составном реквизите сама удалится? Короче, вариант этот не очень. Лучше через явные реквизиты с явным определением типа. Правильно понял. Я по такому принципу сделал отбор.(17 и 18) Сорри, щас МД-шник скинуть не могу, его у меня нет, и когда будет - не известно, к этому клиенту я уже пока не езжу. Может кто мне передаст, в общем я ваши адреса записал, может до конца недели скину на мыло.Щас я думаю над вариантом такого отбора, чтобы пользователь мог сам выбрать нужные условия отбора. Если успех будет - ветку подниму.
#49
by DimG
При помощи формекса можно сделать любой журнал. В стандартную таблчную часть журнала пихаем вычисляемую колонку, т.е. получаем в ней ТекущийДокумент фильтруем по любым его признакам и выводим его в Таблицузначений на форме, после чего при помощи формекса прячем сандартную табличную часть журнала. Такова моя идея. И фсе.
#50
by madness81
Можно то можно, но не у всех руки потянутся...Но не знаю, каково будет, если, допустим, юзер открывает журнал, за месяц например, а если он общий - документов будет в среднем:100 юзеров * 700 документов в день * 22 дней в месяце = около 1 600 000 документов за месяц. Вопрос: сможет ли формекс переварить с достаточной скоростью стоко документов, да еще с отбором? Я честно не знаю, ни одной компоненты я не пробовал :-)
#53
by madness81
Насколько я помню Формекс - Внешняя компонента FormX. Слышал много приятного, но не пользовался, ни к чему она была мне. А дальше -
#56
by andreyka
Отборы, как правило, нужны по реквизитам, которые присутствуют в документе, так что не удалишь ты элемент справочника, который используется в документе. Реквизит - Строка ограниченной длины. У меня такой отбор работает в двух фирмах уже два года - все довольны
#57
by Бит
то 56. Количество элементов справочников (Номенклатура, Контрагенты). Количество документов в месяц? Если можно.
#62
by Бит
Работают через терминал? SQL? Количество пользователей? (просто хочу примерить к своим задачам)
#63
by andreyka
dbf? некоторые через терминал, некоторые - нет. Я тебе советую попробовать на копии - это быстро делается.
#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
Запарили... графы отбора, справочники, ну вы блин, закопались! Быстрее и проще (никто не говорит, что это удобно), чем составным индексом по общим реквизитам с признаком отбор не сделаете, и не морочьте себе голову.
#70
by Звездочет
В качестве забавы сделал демо-конфигурацию с 5 видами отбора по справочнику и обработку, генерирующую справочники и заданное число документов с псевдослучайным выбором реквизитов (использовал 10000). После тестирования стало ясно, что справочник совершенно не нужен и отбор по составному индексу явно работает быстрее.Ясно стало, что пять реквизитов отборов-лишка, достаточно и трех.
#71
by Эстет хренов
(Звездочет)>>Поскольку для отборов по 4 реквизитам в произвольных сочетаниях требуется уже 14 граф отбора,достаточно всего одной графы отбора.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Как правильно сделать быстрый отбор в общем журнале по контрагенту?
- 1С 7.7. - Отбор в журнале сразу по нескольким видам отбора
- Зачем нужен отбор "В интервале", если есть отбор "больше" и "меньше"?
- "Отключить отбор " и "Отбор по значению в текущей колонке"
- УФ. Программный отбор и пользовательский отбор....
- 8.3.5, УФ, Реквизит таблицы значений с типом "Отбор"/ "Отбор компоновки данных"
- v7: 1cpp Набор Классов ПоставщикДанных Установить отбор, отменить отбор
В этой группе 1С
- перенос нескольких элементов справочника из одной группы в другую
- ПБУ 18/02 автоматизация
- Как открыть форму выбора справочника внутри определенной группы?
- Работа в терминале
- как привязать кнопку к границе формы?
- Откуда в оборотно-сальдовой ведомости -9,999,999,999.99 красным цветом ?
- Возможна ли повторная выгрузка периферийной базы?
- Строка неограниченной длины в регистре сведений
- остатки по дт и кт - как?
- Как открыть окно сообщений в 1с 77?
- Траблы связки 1С+MS SQL, help!
- Кто курил траву? Я или платформа?
- Как средствами 1с или не 1с получить список каталогов в каталоге?
- Строка обрезается....
- Сворачивание ТЗ
- Как в 1С 7ке создать файл-флаг без расширения?
- У одного элемента два владельца!!!
- V8: Не могу присвоить значение элементу табличной части
- Дата и время в Delphi
- Итог в форма списка документа.