Как программно установить отбор для журнала документов

1. alw-1 20.10.11 11:27 Сейчас в теме
Требуется задать параметры отбора программно, чтобы при открытии журнала документов отбор уже был включен с заданными параметрами. В моем случае это текущий пользователь.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. CyberNut 52 20.10.11 12:16 Сейчас в теме
(1) alw-1,
В ПередОткрытием можно установить программно:

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
	
	ЭтаФорма.ДокументСписок.Отбор.Ответственный.ВидСравнения = ВидСравнения.Равно;
	ЭтаФорма.ДокументСписок.Отбор.Ответственный.Значение = ПараметрыСеанса.ТекущийПользователь;
	ЭтаФорма.ДокументСписок.Отбор.Ответственный.Использование = Истина;
	//Запретим пользователю менять отбор
	ЭлементыФормы.ДокументСписок.НастройкаОтбора.Ответственный.Доступность = Ложь;
	
КонецПроцедуры
Показать
О.Ж; Bor_ka; user690446_Vartamonov; user987613; b00ker; mark_oilbass; janit; ssvetla; kasper076; fzt; fromon; +11 Ответить
2. patimka 20.10.11 11:39 Сейчас в теме
Видимо, придется дописать форму списка журнала документа. Например, навесить на событие формы При открытии процедурку
3. anterehin 15 20.10.11 11:40 Сейчас в теме
В обработке "ОбновлениеОтображения" формы списка


Отбор["Экспедитор"].Использование = Истина;
Отбор["Экспедитор"].ВидСравнения = ВидСравнения.ВСписке;
Отбор["Экспедитор"].Значение = Список;

Где "Экспедитор" реквизит отбора

Да прошу прощения.Сделал корректировку увидев предыдущий ответ. Если это нужно разово и чтобы пользователь потом мог менять то при открытии. Если делать жёсткое ограничение чтобы пользователь не мог менять фильтр то в ОбновлениеОтображения
4. patimka 20.10.11 11:42 Сейчас в теме
Ну а в процедурке написать что-то типа того
ЖурналДокументовСписок.Отбор.<нужный параметр>.Использование = Истина;
ЖурналДокументовСписок.Отбор.<нужный параметр>.Значение = <значение>

Узнать пользователя текущего можно так глЗначениеПеременной("глТекущийПользователь");
5. patimka 20.10.11 11:43 Сейчас в теме
в обновлении отображении такое делать я бы не стала...
6. mugambi 6 20.10.11 11:45 Сейчас в теме
Попробуй в настройках прав этого документа посмотреть.
7. patimka 20.10.11 11:55 Сейчас в теме
Вряд ли в настройках прав можно это найти...
9. alw-1 20.10.11 12:29 Сейчас в теме
Мой случай - жеское ограничение. Все предидущие советы касаются случая какого - то одного журнала, конечно инфа полезная, но если надо ограничить во всех, чтобы пользователь открывая видел только свои документы или скажем документы какой-то группы. Подобного рода ограничения прописываются где то в общих модулях - модуль работы с диалогами. Если кто -то решал что-то подобное - поделитесь опытом.
10. skyvixen 35 27.10.11 18:14 Сейчас в теме
Посмотри, есть ли глобальная процедура, запускаемая при открытии, или перед открытием интересных тебе форм. Если есть - добавь в нее настройку значений отбора и доступности к настройкам отбора. Если нет - стоит такую процедуру создать.
12. alw-1 28.10.11 14:28 Сейчас в теме
(10) skyvixen,
Процедура есть в общем модуле работы с диалогами, хотел посоветоваться с теми, кто с этим сталкивался.
(11) rustamsmax,
Спасибо этот вариант я знаю, но задача - через отбор.
11. rustamsmax 89 27.10.11 19:04 Сейчас в теме
Для ограничение по пользователет то подойдет системные ограничений по правам
Если посморите в конфигураторе есть закладка "Права" у документах.
там надо вставить галочку на чтение и снизу немножка писать код запроса

"ДокументЗаказ ГДЕ ДокументЗаказ.Автор = &ТекущийПользователь"


где ТекущийПользователь ПараметрСеанса


если не поняли могу поделит сво. конфу
13. 713-87 28.10.11 16:30 Сейчас в теме
В конструкторе покапайтесь с с мастером форм.
14. ra9000 12 15.06.14 22:02 Сейчас в теме
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
		ТекПользователь = ПараметрыСеанса.ТекущийПользователь;
	КассаПоУмолчанию = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекПользователь, "ОсновнаяКасса");
Если  ЗначениеЗаполнено(КассаПоУмолчанию) Тогда
	ЭтаФорма.ДокументСписок.Отбор.Касса.ВидСравнения = ВидСравнения.Равно; 
	ЭтаФорма.ДокументСписок.Отбор.Касса.Значение = КассаПоУмолчанию; 
	ЭтаФорма.ДокументСписок.Отбор.Касса.Использование = Истина; 
	//Запретим пользователю менять отбор 
	ЭлементыФормы.Список.НастройкаОтбора.Касса.Доступность = Ложь; 
Конецесли;

КонецПроцедуры
Показать
fzt; fromon; +2 Ответить
35. Idris1204 21.02.20 00:14 Сейчас в теме
(14)Мне ужно сделать отбор Виду операции. Вид операции это - Справочники.СтатьяДДС.ОплатаПоставщику. как мне передать параметр для значение

ЭтаФорма.ДокументСписок.Отбор.ВидОперации.Значение = Справочники.СтатьяДДС.ОплатаПоставщику
так у меня выдает ошибка не соответсвие контекста (Значение)
15. Shurik1C 22.09.14 18:41 Сейчас в теме
Все бы ничего, но есть задача с которой уже неоднократно сталкивался и пока не решил..

Вот как в обычном приложении сделать отбор в групп через ИЛИ?
Допустим: список Касс ИЛИ Текущий пользователь.

В УФ это делается просто, созданием сначала группы отбора ИЛИ, а потом запихиваением туда двух значений отборов..

Подскажите!
16. Salavat 15 22.09.14 19:09 Сейчас в теме
(15) Shurik1C, как мне (в похожей ситуации подсказали) говорю - нужно в запросе отобрать список нужных документов.
и этот список поместить в отбор в виде - Ссылка в "Список" (полученный из запроса).
17. Shurik1C 22.09.14 19:20 Сейчас в теме
Тоже не выход, пользователи активно используют отбор регистратору..
Да и не самая лучшая идея для Клиент-Серверного варианта)))


Должно же быть что-то по типу УФ ГруппаИЛИ...
18. Salavat 15 22.09.14 20:16 Сейчас в теме
(17) Shurik1C, ну если отбор по регистратору, то Ссыка = задаётся да, а иначе - предложеный (ну и переключаете их программно) вариант работает.
у меня - точно.
ну да - дофига ссылка в "........" это не есть гуд (мягко говоря), но - мне показали и пользую.
19. Dupektop 20.02.15 11:41 Сейчас в теме
Доброго времени суток, подскажите, а если значение отбора содержит несколько типов, как в отборе, программно указать нужный тип, значение которого я передаю? Пример, в журнале документов контрагентов, поле отбора Контрагент, имеет 3 типа, Контрагент, Физ.лицо, строка. Как при отборе указать что передаваемый тип, это контрагент?
20. fzt 20.02.15 11:55 Сейчас в теме
(19) Dupektop,
Отбор = <список чего-то там>.Отбор;
Если Отбор.Найти("Контрагент") = Неопределено Тогда
	Отбор.Добавить("Контрагент");
КонецЕсли;
Отбор["Контрагент"].Использование = Истина;
Отбор["Контрагент"].Значение      = ТекСтрока.Сотрудник;
Отбор["Контрагент"].ВидСравнения  = ВидСравнения.Равно;

Если Отбор.Найти("Физ.лицо") = Неопределено Тогда
	Отбор.Добавить("Физ.лицо");
КонецЕсли;
....
Показать

Где непонятно?
21. Dupektop 20.02.15 12:17 Сейчас в теме
(20) fzt, может не правильно объяснил, но поле отбора Контрагент имеет составной тип, Поле отбора контрагент, может принимать 3 типа, 1. Справочники.Контрагент, 2. Справочники.ФизЛицо, 3. Строка.
Если просто передать:
Отбор["Контрагент"].Использование = Истина;
Отбор["Контрагент"].Значение = ТекСтрока.Сотрудник;
Отбор["Контрагент"].ВидСравнения = ВидСравнения.Равно;
выдает ошибку, Неверный тип значения
22. Xershi 1537 20.02.15 12:21 Сейчас в теме
(21) Dupektop,
Отбор["Контрагент"].Использование = Истина; 
Отбор["Контрагент"].ВидСравнения = ВидСравнения.Равно;
Отбор["Контрагент"].Значение = ТекСтрока.Сотрудник;  

По идее такая последовательность должна быть.
23. fzt 20.02.15 13:00 Сейчас в теме
(21) Dupektop, сдледует ознакомиться, про составные типы http://infostart.ru/public/184361/
Сегодня тяпница. Может в выходные споткнусь об комп. А вообще должно просто присвоиться приведение типов оно само сделает.
Посмотри внимательно, возможно ты присваиваеш объект, а не ссылку?
Отбор["Контрагент"].Значение = ТекСтрока.Сотрудник.Ссылка;

(22) Xershi, по моему совершенно до фонаря порядок заполнения.
24. Xershi 1537 20.02.15 13:05 Сейчас в теме
(23) fzt, при прочих равных условиях порядок имеет значение, правда для "равно" наверно не критичен.
Один раз наткнулся на такой баг.
25. Dupektop 20.02.15 13:15 Сейчас в теме
(23) fzt, (24) Xershi, большое спасибо! Разобрался сам, наверно действительно пятница действует (((( списку передавал Таблицу значений, вот и ругался на не соответствие типов...
26. vas2005 8 29.04.15 11:09 Сейчас в теме
Доброго времени суток.

Подскажите пожста, в какой форме должны быть записаны значения сравнения списка..
Если ВидСравнения.Равно... то тут все понятно, а вот если ВидСравнения.ВСписке ..., тут я запутался((((

("БанковскийСчетКасса", Истина, ВидСравнения.ВСписке,  )


Как мне передать список касс..??
Точнее как как это правильно сделать. Значения надо передавать по названию Касс.
27. Xershi 1537 29.04.15 11:28 Сейчас в теме
(26) vas2005, у вас должен быть СЗ в который содержит ваши кассы. Заполнить список можно обойдя результат запроса, который получает ваши кассы.
28. vas2005 8 29.04.15 13:42 Сейчас в теме
(27) Xershi, В том то и дело, что мне надо указать конкретные кассы, а не находить их....
.ДобавитьОтбор("БанковскийСчетКасса", Истина, ВидСравнения.ВСписке, ???? ) как мне тут вместо вопросов указать конкретные кассы??? по коду справочника или по наименованию.
29. alw-1 03.12.15 11:50 Сейчас в теме
Решил не создавать новую ветку, а продолжить. Когда задавал этот вопрос разобрался. а сейчас не могу вспомнить. Нужно создать отбор в управляемой форме списка документов делал так
&НаКлиенте
Процедура ПриОткрытии(Отказ)
	Преф = ОбщиеДействия.ПолучитьПрефиксБазыПоПользователю();
	Если Преф <> "Общий"  Тогда
       
	ОтборСписка = ЭтаФорма.Список.Отбор;
	 
       ОтборСписка["Номер"].ВидСравнения =  ВидСравнения.Содержит;
	   ОтборСписка["Номер"].Значение =  Преф;
	   ОтборСписка["Номер"].Использование = Истина;
	КонецЕсли;
КонецПроцедуры
Показать


Выдает ошибку поле объекта не обноружено - Номер. Это поле есть в списке. Не совсем понял почему не система не видит.
30. alljoke 03.12.15 13:58 Сейчас в теме
СписокОхотников.Отбор.Элементы.Очистить();
ЭлементОтбора = СписокОхотников.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Активна");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ПравоеЗначение = Не УдаленныеЗаписи;
31. alljoke 03.12.15 13:59 Сейчас в теме
УдаленныеЗаписи - реквизит формы.
32. alw-1 03.12.15 14:13 Сейчас в теме
(31) alljoke, Спасибо, нашел ошибку - НЕ ВидСравнения.Содержит, а ВидСравненияКомпоновкиДанных.Содержит - список работает по павилам СКД. Вот работающее рещение для моего случая может кому пригодится:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Преф = ОбщиеДействия.ПолучитьПрефиксБазыПоПользователю();
	
	Если Преф <> "Общий"  Тогда
		
		ТекОтбор = Список.Отбор.Элементы;
		
		ТекОтбор.Очистить();
		УсловиеОтбора = ТекОтбор.Добавить(тип("ЭлементОтбораКомпоновкиДанных"));
		УсловиеОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номер");
		УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;
		УсловиеОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
		УсловиеОтбора.ПравоеЗначение = Преф;
		 
	КонецЕсли;
КонецПроцедуры

Показать


РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный - если не хотим чтобы пользователь открывал весь список без фильтра.
jusin; TRABANT; +2 Ответить
33. dadel70 23.08.16 16:24 Сейчас в теме
Доброго времени всем!
А как можно сбросить уже установленный пользователем отбор? Пользователь его завел с критической ошибкой и теперь под ним не открывается программа. При открытии Журнала документов сразу ввыдает ошибку: Ошибка в пути к данным: CRM_ОсновноеКонтактноеЛицоВладелец[Состояние клиента (Справочник "Клиенты" (Общие))]Наименование
Уже была подобная ситуация у них у другого пользователя, но тогда я как то смог быстро закрыть форму с ошибкой и как то сбросил отбор пользователя. Сейчас не дает так поступить.
34. dadel70 23.08.16 17:41 Сейчас в теме
Решение нашлось, может кому ещё пригодится.
&НаКлиенте
Процедура Очиститья(Команда)
	ОчиститьНастройкиПользователя(ПользователиИнформационнойБазы.НайтиПоИмени(Объект.Пользователь.Наименование));
КонецПроцедуры
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот