Имя: Пароль:
1C
 
Как в журнале документов установить отбор по нескольким значениям
Ø
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 ДОКУМЕНТУ! с отбором по фирмам (закладками отбора в журнале)
Проблема отбора с использованием общего реквизита документов (например "Фирма" в комплексной)
Для отбора по какому либо реквизиту делаешь графу отбора
куда включаешь реквизит только нужного документа такого типа,
какой он есть в документе. (к примеру "ФирмРасхНакл" значение заполняется при записи из "Фирма"
соответственно графа отбора ФирмРасхНакл - т.е. т.к. это реквизит ТОЛЬКО ОДНОГО документа -
то при включении этого отбора отбор будет УЖЕ по этому виду документа)
Далее делаешь Общий журнал с нужными наворотами
(закладки отбора, фильтр, итоги и проч.)
Делаешь, что при открытии этого журнала сразу включается фильтр,
либо активизируется УстановитьОтбор("НужнаяГрафаОтбора")
И всячески запрещаешь его менять интерактивно (через предопред. процедуры)
Далее метод использования значения, которое является отбором в открытом журнале при вводе новых документов
Т.е. треба чтобы при нажатии ввода нового - открывался этот документ и уже с значением фирмы
установленной в этом журнале документов (а не Константа.ОсновнаяФирма).
Делаешь, что при смене отбора в этом журнале - значение отбора сохраняется в ГлобПерем (соответственно
при закрытии журнала - обнуляется), и при вводе нового дока - использовать эту ГлобПерем - если она не пус-тая, иначе использовать Константа.ОсновнаяФирма
Далее метод избавления от неприятного момента появления списка всех документов при вводе нового
Теперь проблема - при нажатии ввода нового документа вываливается список ВСЕХ документов
Это очень неудобно &#61516;, но есть решение - видимо это глюк ссылочности 1С &#61514;
Сохраняешь Конфу.
У Журнала Документов ставишь что он обычный
У документа ставишь ссылку на этот журнал документов
Сохраняешь Конфу.
У Журнала Документов ставишь что он общий
Сохраняешь Конфу. - Готово! - главное потом не трогать ни этот журнал,
ни ссылочность документа на журнал, иначе они сохранятся нормально и надо будет эту схему
снова делать
Оказывается и по нескольким документам тоже можно! - Уже сложнее с вводом новых доку-ментов, решение красивое, обычному пользователю не понять, что ТАКОЕ не реализуется стандартными сред-ствами и стандартным мышлением, хотя иллюзия полная &#61514;
Если Аналогично создать обычный журнал на 2 или более видов документов (например в моем случае чтобы включились кассовые документы в один журнал с отбором по фирмам я сделал и у ПКО и у РКО по реквизиту КасФрм и включил их в одну графу отбора «КасФрм»)) , и провернуть те же операции с ним что и для одного, то по нажатию кнопки нового документа начинает вводиться первый из них (которые раньше были в составе обычного журнала), (вообще-то это с первого раза у меня не получилось,
а получилось только после того как я эту конфигурацию подгрузил к неизмененной)
чтобы сделать все комфортно и чтобы не вываливался список
всех документов как обычно - надо это обойти:
Создаем 2 глоб. Переменных и присваиваем им значения
Перем НашЖурналДокументовОткрыт Экспорт;
Перем НашЖурналДокументовБылОткрыт Экспорт;
НашЖурналДокументовОткрыт="Нет";
НашЖурналДокументовБылОткрыт="Нет";
В журнале Документов при открытии
Им присваивается "Да",
А при закрытии "Нет";
В процедуре "ВводНового" того документа который вводится при вводе нового документа
в нашем Журнале
Пишем что-то подобное
Если НашЖурналДокументовОткрыт="Да" Тогда // проверка если документ начинает вводиться при
журнале документов
    Спис=СоздатьОбъект("СписокЗначений");
    Спис.ДобавитьЗначение("Документ.ПервыйДокументВНашемЖурнале","Его представление");
    Спис.ДобавитьЗначение("Документ.ВторойДокументВНашемЖурнале","Его представление");
        . . . //Создаем список нужных видов документов
        и т.д. //Аналогичный программному
    Зн=0;
    Если Спис.ВыбратьЗначение(Зн,"Выбор вида документа",1,,0)=0 Тогда // Если пользователь
        СтатусВозврата(0); // отказался - возврат
        Возврат;
    КонецЕсли;
    НашЖурналДокументовОткрыт="Нет"; //Присваеваем чтобы при выборе этого вида документа
нормально ввелся.
    СтатусВозврата(0); // Отмена ввода этого документа.
    ОткрытьФорму(Зн,,); // Вводим новый документ выбранного вида
КонецЕсли;
НашЖурналДокументовОткрыт=НашЖурналДокументовБылОткрыт; // В исходное состояние
В итоге при нажатии кнопки ввода нового документа
открывается список значений для выбора ТАКОЙ ЖЕ КАК В ОБЫЧНОМ ЖУРНАЛЕ,
и вводится новый документ, который выбран, а тот который раньше выскакивал теперь не открывается
Обычному пользователю не понять красоту этого решения, он будет думать, что все так как надо
Так как визуально и по действиям в программе все также, а жаль... &#61514;
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 погорячился, хотя использовать можно)
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс