Добрий день. Підкажіть, як налаштувати відбір по реквізиту документа в журналі документів? Наприклад, по автору документа.
открываем любую станд. конфу, журнал документов и смотрим как реализовано
типо так
Если АвторДляОтбора.Выбран()>0 Тогда
УстановитьОтбор("Автор", АвторДляОтбора);
//пример из конфигурации "торговля и склад" общий (полный) журнал.
//******************************************************************************
Процедура ПриВыбореКонтрагента()
Если КонтрагентДляОтбора.Выбран()>0 Тогда
УстановитьОтбор("Контрагент", КонтрагентДляОтбора);
КонтрагентДляОтбора = КонтрагентДляОтбора.ТекущийЭлемент();
Иначе
УстановитьОтбор("");
КонецЕсли;
КонецПроцедуры
//******************************************************************************
Процедура ПриВыбореВидаДокумента()
Если ПустоеЗначение(ВидДокументаДляОтбора) = 1 Тогда
ВидДокументаДляОтбора=1;
КонецЕсли;
УстановитьОтбор(СписокВидовДокументов.ПолучитьЗначение(ВидДокументаДляОтбора), );
КонецПроцедуры
//******************************************************************************
Процедура ПриВыбореАвтора()
Если АвторДляОтбора.Выбран()>0 Тогда
УстановитьОтбор("Автор", АвторДляОтбора);
АвторДляОтбора = АвторДляОтбора.ТекущийЭлемент();
Иначе
УстановитьОтбор("");
КонецЕсли;
КонецПроцедуры
//******************************************************************************
Процедура ПриВыбореТипа()
Если ПустоеЗначение(ТипДляОтбора)>0 Тогда
ТипДляОтбора=1;
КонецЕсли;
УстановитьОтбор("ТипУчета", ТипДляОтбора-1);
КонецПроцедуры
//******************************************************************************
Процедура ПриВыбореФирмы()
Если ФирмаДляОтбора.Выбран()>0 Тогда
УстановитьОтбор("Фирма", ФирмаДляОтбора);
ФирмаДляОтбора = ФирмаДляОтбора.ТекущийЭлемент();
Иначе
УстановитьОтбор("");
КонецЕсли;
КонецПроцедуры
//******************************************************************************
//
Процедура ПриУстановкеБыстрогоОтбора()
Перем ТекущДок;
ТекущДок = ТекущийДокумент;
Если ВидОтбора.ТекущаяСтрока() = 6 Тогда // нет быстрого отбора
ЗначениеВВидеСтроки = "";
Форма.кнЗначение.Доступность(0);
УстановитьОтбор("");
ВидыОтбора("*");
Иначе // есть быстрый отбор
Форма.кнЗначение.Доступность(1);
Если ВидОтбора.ТекущаяСтрока() = 1 Тогда
ПриВыбореКонтрагента();
ЗначениеВВидеСтроки=Строка(КонтрагентДляОтбора);
ИначеЕсли ВидОтбора.ТекущаяСтрока() = 2 Тогда
ПриВыбореВидаДокумента();
СписокВидовДокументов.ПолучитьЗначение(ВидДокументаДляОтбора,ЗначениеВВидеСтроки);
ИначеЕсли ВидОтбора.ТекущаяСтрока() = 3 Тогда
ПриВыбореАвтора();
ЗначениеВВидеСтроки=Строка(АвторДляОтбора);
ИначеЕсли ВидОтбора.ТекущаяСтрока() = 4 Тогда
ПриВыбореТипа();
ТипыУчета.ПолучитьЗначение(ТипДляОтбора,ЗначениеВВидеСтроки);
ИначеЕсли ВидОтбора.ТекущаяСтрока() = 5 Тогда
ПриВыбореФирмы();
ЗначениеВВидеСтроки=Строка(ФирмаДляОтбора);
КонецЕсли;
ВидыОтбора("");
КонецЕсли;
Попытка
АктивизироватьОбъект(ТекущДок);
Исключение
КонецПопытки;
КонецПроцедуры // ПриУстановкеБыстрогоОтбора
//******************************************************************************
//
Процедура ВыборЗначения()
Перем ЗначениеИзменилось,СтароеЗначение,ВыбЗначение;
Если ВидОтбора.ТекущаяСтрока() = 6 Тогда // нет быстрого отбора
Возврат;
КонецЕсли;
ЗначениеИзменилось=0;
Если ВидОтбора.ТекущаяСтрока() = 1 Тогда
СтароеЗначение=КонтрагентДляОтбора;
ВыбЗначение = СоздатьОбъект("Справочник.Контрагенты");
Если ВыбЗначение.Выбрать("Выбор контрагента","Форма списка")=1 Тогда
КонтрагентДляОтбора = ВыбЗначение;
Если ВыбЗначение<>СтароеЗначение Тогда
ЗначениеИзменилось=1;
КонецЕсли;
КонецЕсли;
ИначеЕсли ВидОтбора.ТекущаяСтрока() = 2 Тогда
СтароеЗначение=ВидДокументаДляОтбора;
Если ПустоеЗначение(ВидДокументаДляОтбора)>0 Тогда
ВыбЗначение = "";
Иначе
ВыбЗначение = СписокВидовДокументов.ПолучитьЗначение(ВидДокументаДляОтбора);
КонецЕсли;
СписокВидовДокументов.ВыбратьЗначение(ВыбЗначение,"Выбор вида документов",,,0);
ВидДокументаДляОтбора = СписокВидовДокументов.НайтиЗначение(ВыбЗначение);
Если ВидДокументаДляОтбора<>СтароеЗначение Тогда
ЗначениеИзменилось=1;
КонецЕсли;
ИначеЕсли ВидОтбора.ТекущаяСтрока() = 3 Тогда
СтароеЗначение=АвторДляОтбора;
ВыбЗначение = СоздатьОбъект("Справочник.Пользователи");
Если ВыбЗначение.Выбрать("Выбор автора","Форма списка")=1 Тогда
АвторДляОтбора = ВыбЗначение;
Если ВыбЗначение<>СтароеЗначение Тогда
ЗначениеИзменилось=1;
КонецЕсли;
КонецЕсли;
ИначеЕсли ВидОтбора.ТекущаяСтрока() = 4 Тогда
СтароеЗначение=ТипДляОтбора;
Если ПустоеЗначение(ТипДляОтбора)>0 Тогда
ВыбЗначение = "";
Иначе
ВыбЗначение = ТипыУчета.ПолучитьЗначение(ТипДляОтбора);
КонецЕсли;
ТипыУчета.ВыбратьЗначение(ВыбЗначение,"Выбор типа учета",,,0);
ТипДляОтбора = ТипыУчета.НайтиЗначение(ВыбЗначение);
Если ТипДляОтбора<>СтароеЗначение Тогда
ЗначениеИзменилось=1;
КонецЕсли;
ИначеЕсли ВидОтбора.ТекущаяСтрока() = 5 Тогда
СтароеЗначение=ФирмаДляОтбора;
ВыбЗначение = СоздатьОбъект("Справочник.Фирмы");
Если ВыбЗначение.Выбрать("Выбор фирмы","Форма списка")=1 Тогда
ФирмаДляОтбора = ВыбЗначение;
Если ВыбЗначение<>СтароеЗначение Тогда
ЗначениеИзменилось=1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ЗначениеИзменилось=1 Тогда
ПриУстановкеБыстрогоОтбора();
КонецЕсли;
КонецПроцедуры
denis84 @ Сегодня, 11:23
,
При установке отбора ошибка - Неверное имя реквизита
kostya77 @ Сегодня, 11:28
,
ну значит, что-то не так делаете!
kostya77 @ Сегодня, 11:28
,
у вас есть какая-то стандартна конфигурация под рукой? посмотрите там как реализовано
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua