Версия для печати темы (https://pro1c.org.ua/index.php?s=33dc27e3efc7d89a9cf2640ecbef6491&showtopic=67194)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Відбір в журналі документів

Автор: kostya77 07.03.23, 10:53

Добрий день. Підкажіть, як налаштувати відбір по реквізиту документа в журналі документів? Наприклад, по автору документа.

Автор: sava1 07.03.23, 11:04

открываем любую станд. конфу, журнал документов и смотрим как реализовано
типо так

Если АвторДляОтбора.Выбран()>0 Тогда
    УстановитьОтбор("Автор", АвторДляОтбора);


Автор: kostya77 07.03.23, 11:21

sava1 @ Сегодня, 11:04 * ,
Отбор можна установить в обычном журнале?

Автор: denis84 07.03.23, 11:23

kostya77 @ Сегодня, 10:53 * ,

//пример из конфигурации "торговля и склад"  общий (полный) журнал.

//******************************************************************************
Процедура ПриВыбореКонтрагента()  
    
    Если КонтрагентДляОтбора.Выбран()>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 Тогда
        ПриУстановкеБыстрогоОтбора();
    КонецЕсли;    

КонецПроцедуры


kostya77 @ Сегодня, 11:21 * ,
в общем журнале

Автор: kostya77 07.03.23, 11:28

denis84 @ Сегодня, 11:23 * ,
При установке отбора ошибка - Неверное имя реквизита

Автор: denis84 07.03.23, 12:01

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