![]() |
![]() |
![]() |
|
Как в журнале документов установить отбор по нескольким значениям Ø |
☑ | ||
---|---|---|---|---|
0
biimmap
21.08.06
✎
16:54
|
Привет всем! есть ТиС измененная, нужно в общем журнале документов установить отбор по нескольким реквизитам, например по виду документов и по контрагенту! как это делается? Очень нужно!!! помогите!
|
|||
1
SunShinne
21.08.06
✎
16:55
|
ТаблицаЗначений
|
|||
2
Woppi
21.08.06
✎
16:57
|
Если очень нужно - заведи общий реквизит, типа строка, в нем храни ВидДокумента+Контрагент, отбор программно по значению этого поля.
|
|||
3
biimmap
21.08.06
✎
16:57
|
Мне нужен пример кода. т.к. я в душе не шарю как это делать
|
|||
4
zzz
21.08.06
✎
16:58
|
засекаем 2 часа..
|
|||
5
Бит
21.08.06
✎
16:58
|
(3)набираем в поиске форума "отбор" жмем интер
|
|||
6
Dev
21.08.06
✎
16:59
|
(3) В дУше или в душЕ :)
|
|||
7
SunShinne
21.08.06
✎
17:00
|
(3) тем более ТаблицаЗначений
|
|||
8
DeiMos
21.08.06
✎
17:40
|
Отбор в журнале по нескольким параметрам Решение John
26.01.2000 - 07:56 Добавляем в каждый документ реквизит ВОтборе. В модуле журнала производим проверку каждого документа этого вида на соответствие параметрам отбора. Устанавливаем реквизит. Перезаписываем документы. Устанавливаем отбор. Проверял - работает. Хоть коряво, но есть и плюсы - можно отбирать документы хоть по 10 параметрам, причем и по тем которые задаются пользователем Коммунист 6 - 26.01.2000 - 20:25 Есть более тонкие решения.... Правда не общие, но и не такие корявые, как я когда-то раньше описывал.... John 7 - 27.01.2000 - 08:05 Коммунисту: Например .... Anton 8 - 27.01.2000 - 14:01 Коммунист, зря ты так, идея неплохая, John, я записал в функцию ПриЗаписи в интересующих документах запись дополнительных реквизитов (у меня 3 реквизита A,B,C для отбора и 3 дополнительных реквизита AB,AC,BC) и модифицировал форму журнала. Отборы (любые) работают как из пушки и пересчитывать ничего не нужно. С меня причитается. Коммунист 11 - 27.01.2000 - 19:20 Аnton! Я корявым назвал метод использования таблицы значений! То, что Вы описали и есть самое грамотное решение! А размер базы здесь вообще ни причем! Anton 12 - 28.01.2000 - 00:37 О размере базы. Мелкая она у меня после Y2ю Архивы по 2 мега делает. А насчет обновления реквизитов обработкой - я против. Стараюсь реквизиты документа изменять только в момент его сохранения юзером. Всю служебную инфу - в регистры или если лень - через запросы. Коммунист 13 - 28.01.2000 - 11:19 Насколько я помню, там в типовой у народа такая задача, в документах банковских надо указывать, какие счета, накладные и т.д. гасятся...или что-то в этом роде. Погашение может быть частичным, и надо при подборе документов выбирать недогашенные и еще суммы видеть к погашению (которые в регистрах болтаются, и не факт, что на виду). Это кажется самый тяжелый случай! такое в доки не запихнуть... Или я не прав! Кто-нибудь такие отборы делал? Владимир Н. 14 - 28.01.2000 - 12:47 Товарищ Коммунист, я делал подобный отбор, у меня существует специальный документ "Резерв", есть регистр Резервирование(Товар,Склад,Док,"Резерв"). При проведении ентот документ делает "Приход" по этому регистру. Если на основании него выписывается накладная (у нее в табличной части есть реквизит-этот документ Резерв),то она списывает из этого регистра (может частично), при проведении проверяет, остался ли сводный остаток по этому документу(Резерву) в регистре, если нет, присваивается единица реквизиту "Погашен" этого резерва (или 0, если наоборот). Соответственно по этому реквизиту можно сделать отбор, можно делать отбор также по частично погашенным документам. также в форме журнала показывается остаток товара по этому резерву, и т. д. Что-то я, наверное, загрузил всех. Пока! Anton 15 - 28.01.2000 - 16:40 Тогда если непогашенных документов не очень много может не через подбор выводить надо а через обработку?, Сделать запрос, выгрузить его в таблицу формы обработки, причесать ее слегка, иконки добавить... Коммунист 16 - 28.01.2000 - 17:10 1. Схема резервирования совершенно понятна, как и то, что вы сделали с флагом в документе "Резерв". Интересно всетаки отбор делать по клиенту и по сумме непогашенного долга больше ненулевого предела! 2. Anton! В маленькая базе проблем со скоростью нет в принципе, а вот в БОЛЬШОЙ! Anton 17 - 28.01.2000 - 23:08 Старая база, (с которой проблем в общем-то тоже небыло) и на которой subj успешно проверен занимает 170Мб на SQL. to Коммунист. Если меньше 50 доков - ну их тогда эти отборы. Лучший отбор - запрос с таблицей! |
|||
9
DeiMos
21.08.06
✎
17:44
|
Еще раз про отбор в журнале по нескольким параметрам KFR
15.08.2000 - 16:45 Извинения за возврат к теме Почему нельзя объединить несколько параметров? Как тогда открывается журнал в SQL, и почему в select в SQL нельзя включать условие, т.е. хочу спросить, какие проблемы были у 1С, что не включили одну из необходимых возможностей работы с журналом. Например работает несколько операторов по выписке накладных, и все это в одной куче. И следующий вопрос : Насколько медленней будет открываться журнал, если буду формировать через запрос и открывать через таблицу значений? Afanasiev Vitaly 5 - 16.08.2000 - 01:20 Да можно это. Надо только малость поизвращаться. Типичная проблема - отбор документов конкретного вида по конкретному контрагенту. Для простоты предположим, что журнал называется общий, графа отбора - Контрагент, и она определена для всех дкументоы (в которых только может быть этот реквизит - Контрагент (понятно, что не во вводе остатков товара) Пишем следующее: Док = СоздатьОбъект("Документ."+ВидКоторыйНамНужен); глЗначениеОтбора = Контрагент; Док.Выбрать("Укажите докмент","Журнал.Общий.ФормаСписка); Здесь глЗначениеОтбора - глобальная переменная, с помощью которой мы передаем параметр в открывающуюся форму журнала. В ней в процедуре ПриОткрытии мы пишем следующий код Если глЗначениеОтбора <> "" Тогда УстановитьОтбор("Контрагент", глЗначениеОтбора); глЗначениеОтбора = ""; Результатом всего этого станет то, что пред нами откроется Журнал Общий с отбором по виду документа И контрагенту - то, что и требовалось получить. Проблема правда в том, что откроется он в режиме жесткого выбора, т.е. кнопки НовыйДокумент и пр. недоступны (об этом позже). Главное, что мы установили - то что в 1С есть все необходимые индексы и пр. для выполнения такого одновременного отбора. Теперь о том, как открыть данный журнал в ином режиме. Допустим, что у нас есть форма и в ней реквизит типа Документ.КакойТоВид В процедуру ПриНачалеВыбораЗначения(ИдЭлемДиалога, ФлагСтандобр) помещаем код Если ИдЭлемДиалога = "НашЭлемент" Тогда ФлагСтандОбр = 0 глЗначениеОтбора = Контрагент открытьФорму("Журнал.общий.ФормаСписка"); КонецЕсли Результат- опять же открывается журнал с отбором и по документу и контрагенту. но уже в режиме мягкого выбора - кнокпи создания нового документа и пр. доступны. Так что осталось совсем немного - открыть журнал в режиме чисто просмотра. Тут правда пока решения не нашел. |
|||
10
DeiMos
21.08.06
✎
17:46
|
Отбор в журнале по нескольким параметрам Alexander
21.01.2000 - 10:24 1С7.7. Необходимо сделать отбор в журнале по нескольким параметрам. Например, по автору и типу документов. Я понимаю, это невозможно? Или как ? Коммунист 1 - 21.01.2000 - 19:41 Возможно, но ТАААААК криво! Проще в 1С коллективное письмо накатать, чтобы они наконец эту фичу вставили, и не в общий журнал, а во все! AlexG 2 - 22.01.2000 - 00:51 Досточтимые сэры! А как это вообще можно сделать, пусть и криво? А то ну очень от меня хотят журнал счетов (и только счетов, к примеру), где показаны только счета данного менеджера (т.е. отобранные по реквизиту Автор - общий реквизит для всех документов). Ежели подскажете, как такое слепить в 7.5 - зело признателен буду. Коммунист 3 - 22.01.2000 - 12:21 В новую вкладку таблицу значений поместить и заполнить чем требуется. Криво - не правда ли? AlexG 4 - 22.01.2000 - 17:42 Весьма криво, согласен. Вопрос: при значительном числе документов насколько медленно (или быстро) эдакая вот штука будет формироваться? Я имею в виду: вот человек нажал на кнопку, чтоб вызвать подборку, откуда будет выбирать нужный счет - и сколько придется ожидать? Коммунист 5 - 22.01.2000 - 23:19 Если не все доки выбирать, то быстро - цикл по докам и все. Если прямо множественный отбор, то надо период по-умолчанию ограничить. А как САМ ПОДБОР будет из таблицы работать, не знаю, сделать руки не доходят. Основная фича в таблицах значений - это множественная сортировка - хоть по всем полям сразу, только медленно очень. Этот алгоритм да на ассме бы, да быстрой сортировкой забабахать, да куда там 1С. 100 строк по 4 параметрам на 500MHz 2 секунды сортирует. Время сортироки всего общего журнала - никогда.... Но ничего! Спасибо, хоть такую сортировку реализовали и поиск грамотный не забыли. Интересующийся 6 - 23.01.2000 - 11:07 Почему больше никто ничего не пишет. Должны же быть др. способы. Указанный выше способ работает только под 7.7. А под 7.5 что делать? Коммунист 7 - 23.01.2000 - 12:14 AlexG! А зачем Вам вообще счета выбирать? Лучше использовать ввод на основании, если поле ПоСчету в многострочной части, то подбирать должна машина? Sergo 8 - 23.01.2000 - 19:00 На самом деле это не так трудно, как кажется. Делать надо вот что: 1) создаешь нужный вид отбора 2) создаешь новый общий журнал 2) если нужно выводить все документы какого-то типа, включаешь общий отбор в журнале по типу документа, если нужно выбрать документы по реквизиту включаешь созданный тобой отбор. Единственная проблема , впрочем легко решаемая, для такого журнала нужно создать свою панель управления, т.к. панель управления для общих журналов работает со всеми документами сразу. Как создавать разные отборы и подключать их к общим журналам читай в документации к 1С. Желаю удачи! Коммунист 9 - 23.01.2000 - 20:33 Есть такая фишка! Но тоже кривой способ! Надо петицию на С писать! Чтобы отбор сделали произвольный, а заодно и разделитель учета произвольный! 1С 2001 придется наверное ждать! АНТОН 10 - 24.01.2000 - 11:34 Делал такую фишку. В таблицу значений загонял доки по с множественным отбором. Два нюанса 1. Тормоза жуткие времен СУБД на PC XT. 2. Проблемы с захватом таблицы "журналы" 3. Мало просто отобрать. Юзера (так их и эдак) хотят чтобы если они что-то сделали с документом (причем даже на другой машине), чтобы изменения в таблицу отображались. Причем кнопка Обновить их еще и бесит... После этого гемора - двумя руками за петицию |
|||
11
DeiMos
21.08.06
✎
17:48
|
Неудобно, нужен журнал с отбором по реквизиту по какому либо документу
т.е. фактически отбор сразу по 2-м реквизитам "Вид документа" и "Фирма" (В моем случае нужны были закладки разделяющие по фирмам журнал ОДНОГО вида документов) Можно сделать Качественный (Не отдельное окошко с ТЗ, а окно 1С-овского журнала, а если умники возра-зят, что это не ново, то поясняю: отбор детальный не нов, но возможен только в ОБЩЕМ журнале,где при вводе нового – вываливается список всех документов, а в моем случае ЭТО НЕ ТАК!) Журнал по 1 ДОКУМЕНТУ! с отбором по фирмам (закладками отбора в журнале) Проблема отбора с использованием общего реквизита документов (например "Фирма" в комплексной) Для отбора по какому либо реквизиту делаешь графу отбора куда включаешь реквизит только нужного документа такого типа, какой он есть в документе. (к примеру "ФирмРасхНакл" значение заполняется при записи из "Фирма" соответственно графа отбора ФирмРасхНакл - т.е. т.к. это реквизит ТОЛЬКО ОДНОГО документа - то при включении этого отбора отбор будет УЖЕ по этому виду документа) Далее делаешь Общий журнал с нужными наворотами (закладки отбора, фильтр, итоги и проч.) Делаешь, что при открытии этого журнала сразу включается фильтр, либо активизируется УстановитьОтбор("НужнаяГрафаОтбора") И всячески запрещаешь его менять интерактивно (через предопред. процедуры) Далее метод использования значения, которое является отбором в открытом журнале при вводе новых документов Т.е. треба чтобы при нажатии ввода нового - открывался этот документ и уже с значением фирмы установленной в этом журнале документов (а не Константа.ОсновнаяФирма). Делаешь, что при смене отбора в этом журнале - значение отбора сохраняется в ГлобПерем (соответственно при закрытии журнала - обнуляется), и при вводе нового дока - использовать эту ГлобПерем - если она не пус-тая, иначе использовать Константа.ОсновнаяФирма Далее метод избавления от неприятного момента появления списка всех документов при вводе нового Теперь проблема - при нажатии ввода нового документа вываливается список ВСЕХ документов Это очень неудобно , но есть решение - видимо это глюк ссылочности 1С  Сохраняешь Конфу. У Журнала Документов ставишь что он обычный У документа ставишь ссылку на этот журнал документов Сохраняешь Конфу. У Журнала Документов ставишь что он общий Сохраняешь Конфу. - Готово! - главное потом не трогать ни этот журнал, ни ссылочность документа на журнал, иначе они сохранятся нормально и надо будет эту схему снова делать Оказывается и по нескольким документам тоже можно! - Уже сложнее с вводом новых доку-ментов, решение красивое, обычному пользователю не понять, что ТАКОЕ не реализуется стандартными сред-ствами и стандартным мышлением, хотя иллюзия полная  Если Аналогично создать обычный журнал на 2 или более видов документов (например в моем случае чтобы включились кассовые документы в один журнал с отбором по фирмам я сделал и у ПКО и у РКО по реквизиту КасФрм и включил их в одну графу отбора «КасФрм»)) , и провернуть те же операции с ним что и для одного, то по нажатию кнопки нового документа начинает вводиться первый из них (которые раньше были в составе обычного журнала), (вообще-то это с первого раза у меня не получилось, а получилось только после того как я эту конфигурацию подгрузил к неизмененной) чтобы сделать все комфортно и чтобы не вываливался список всех документов как обычно - надо это обойти: Создаем 2 глоб. Переменных и присваиваем им значения Перем НашЖурналДокументовОткрыт Экспорт; Перем НашЖурналДокументовБылОткрыт Экспорт; НашЖурналДокументовОткрыт="Нет"; НашЖурналДокументовБылОткрыт="Нет"; В журнале Документов при открытии Им присваивается "Да", А при закрытии "Нет"; В процедуре "ВводНового" того документа который вводится при вводе нового документа в нашем Журнале Пишем что-то подобное Если НашЖурналДокументовОткрыт="Да" Тогда // проверка если документ начинает вводиться при журнале документов Спис=СоздатьОбъект("СписокЗначений"); Спис.ДобавитьЗначение("Документ.ПервыйДокументВНашемЖурнале","Его представление"); Спис.ДобавитьЗначение("Документ.ВторойДокументВНашемЖурнале","Его представление"); . . . //Создаем список нужных видов документов и т.д. //Аналогичный программному Зн=0; Если Спис.ВыбратьЗначение(Зн,"Выбор вида документа",1,,0)=0 Тогда // Если пользователь СтатусВозврата(0); // отказался - возврат Возврат; КонецЕсли; НашЖурналДокументовОткрыт="Нет"; //Присваеваем чтобы при выборе этого вида документа нормально ввелся. СтатусВозврата(0); // Отмена ввода этого документа. ОткрытьФорму(Зн,,); // Вводим новый документ выбранного вида КонецЕсли; НашЖурналДокументовОткрыт=НашЖурналДокументовБылОткрыт; // В исходное состояние В итоге при нажатии кнопки ввода нового документа открывается список значений для выбора ТАКОЙ ЖЕ КАК В ОБЫЧНОМ ЖУРНАЛЕ, и вводится новый документ, который выбран, а тот который раньше выскакивал теперь не открывается Обычному пользователю не понять красоту этого решения, он будет думать, что все так как надо Так как визуально и по действиям в программе все также, а жаль...  P.S.: кстати идея: - если обратиться программно к метаданным насчет состава этого журнала документов, то он покажет ли список? Хм, если покажет, то можно оттуда заполнять список для выбора и тем самым унифицировать ввод докумен-тов. + Сделать документ «Ввод документа» который будет стоять в первым во всех таких журналах и при от-крытии которого он открываться не будет, а будет открываться нужный список документов для ввода (брать состав того журнала, который на данный момент открыт (можно какой-нибудь dll-кой проанализировать ак-тивное окно и вернуть Идентификатор Журнала документов к которому и обратимся за списком)) Идея хорошая, но не пробовал, если список не покажет, тогда это все ни к чему |
|||
12
DeiMos
21.08.06
✎
17:50
|
Диагноз:
Надо отфильтровать журнал документов по двум или более реквизитам. Например, выбрать только расходные накладные, причем только с определенным клиентом. Да еще и чтобы тип учета, при этом, был определенным. Анамнез: 1С:Предприятие версий 7.5 и 7.7 накладывает ряд ограничений на фильтрацию (отбор) в журналах документов. Во-первых, отбор работает только в журналах типа "общий", т.е. по умолчанию будут отображаться документы всех видов. Во-вторых, отбор возможен только по одному признаку: отобрать документы только одного вида или отобрать документы по значению графы отбора или отобрать документы по значению общего реквизита, для которого установлен признак Отбор. Рецепт: Указанное ограничение можно обойти с помощью составного реквизита. Проще всего это объяснить на примере. Предположим, надо отбирать только счета, причем по отдельным клиентам. Прежде всего надо сделать новый общий текстовый реквизит. При записи документов в этот реквизит надо записывать примерно такую строку: Вид()+"; "+Контрагент.Код После этого, в общем журнале надо дать возможность пользователю установить новый отбор. Например, разместить элемент ВыбКонтр для выбора контрагента, а в процедуре, вызываемой после выбора, написать примерно так: УстановитьОтбор("ИмяРеквизита","Счет; "+ВыбКонтр.Код); Следует иметь ввиду, что при использовании таких ссылок на элементы справочников, их реквизиты, используемые для отбора, должны быть уникальны и неизменны. Для большей надежности следует использовать внутренний идентификатор элемента справочника, который можно получить с помощью функции ЗначениеВСтрокуВнутр(). |
|||
13
SunShinne
21.08.06
✎
17:56
|
Есть одна идея, только что придумал. Создавать к каждому документу набор подчиненных документов (организовать в зависимости от фильтров - попадает под условия фильтра1 создаем докХ1, потом рассматриваем Фильтр2 для возможного создания докХ2). Организовать список [журнал] документов по подчиненным докам. При открытии подч. дока, например ДокХ2 СтатусВозврата(0); ОткрытьФорму(ДокОсн); Возврат;
Работать будет точно, может быть сумбурно объяснил конечно, звиняйте. |
|||
14
Uho
21.08.06
✎
18:35
|
(13) А Дурочка сказала бы: "юзайте отчет, и не майтесь бредовыми идеями"
|
|||
15
vrag
21.08.06
✎
18:42
|
+ 14
|
|||
16
Uho
21.08.06
✎
18:45
|
хотя, честно говоря, у меня есть такой журнал, но он имел необходимость только из-за изначально неверно спроектированных документов.
|
|||
17
sdaf
22.08.06
✎
09:16
|
+14 UniJorn с любого итс
|
|||
19
Uho
22.08.06
✎
09:54
|
(18) во как!
|
|||
21
Uho
22.08.06
✎
10:02
|
(20) да вроде как нету в семерке ТабличногоПоля...
|
|||
22
JARRE
22.08.06
✎
10:08
|
Я че-то не понял. А где внешние компоненты.
Я с ВК не работаю но неужели нет ВК для множественного обора в журнале. |
|||
23
Одинэсник
22.08.06
✎
10:11
|
мыло давай
|
|||
25
Uho
22.08.06
✎
10:19
|
(24) ну не в 7.7 же :))
|
|||
27
Uho
22.08.06
✎
10:21
|
в ВК :))
|
|||
29
Uho
22.08.06
✎
10:27
|
(28) усё, согласен, был не прав, исправлюсь
|
|||
30
USSR
22.08.06
✎
10:58
|
(18)Я ни разу не пользовался табличным полем, сейчас бегло прочитал, похоже вещь. То есть это практически аналог GRID?
|
|||
32
USSR
22.08.06
✎
14:27
|
(31)При скроллинге?
|
|||
33
SunShinne
22.08.06
✎
14:32
|
[14] - см. 1 (в 13 погорячился, хотя использовать можно)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |