Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отбор в журнале документов по автору создания
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
kostya77
Добрый день. Подскажите, как организовать в обычном журнале документов отбор по автору документа? Нужно, чтобы пользователь, вошедший в систему, видел только свои документы и не имел доступа к чужим документам
denis84
kostya77 @ Сегодня, 7:45 необходимо зарегистрироваться для просмотра ссылки ,
Добрый день! Я делал по другому. Создавал общий журнал например "ПриходныеНакладныеСОтбором", куда включены все виды документов. А потом прописывал отбор по автору или контрагенту. При открытии журнала сразу устанавливаем значение отбора по автору с запретом изменения этого значения.
kostya77
denis84 @ Сегодня, 8:23 необходимо зарегистрироваться для просмотра ссылки ,
А как сделать, так. чтобы в журнал попали документы одного вида?
denis84
kostya77 @ Сегодня, 8:43 необходимо зарегистрироваться для просмотра ссылки ,
// Описание переменных 
Перем СписокДействий;  // Список действий по документу  
Перем ИмяФормы;
Перем КонтрагентДляОтбора,ФирмаДляОтбора,ВидДокументаДляОтбора,АвторДляОтбора,ТипДляОтбора;
Перем ЗначениеВВидеСтроки;

//******************************************************************************
Процедура ПриВыбореКонтрагента()  
    
    Если КонтрагентДляОтбора.Выбран()>0 Тогда
        УстановитьОтбор("КонтрагентПН", КонтрагентДляОтбора);
        КонтрагентДляОтбора = КонтрагентДляОтбора.ТекущийЭлемент();  
    Иначе
        УстановитьОтбор("");
        УстановитьОтбор("ПриходнаяНакладная");
    КонецЕсли;
    
КонецПроцедуры

//******************************************************************************
Процедура ПриВыбореАвтора()  
    
    Если АвторДляОтбора.Выбран()>0 Тогда
        УстановитьОтбор("АвторПН", АвторДляОтбора);
        АвторДляОтбора = АвторДляОтбора.ТекущийЭлемент();
    Иначе
        УстановитьОтбор("");
        УстановитьОтбор("ПриходнаяНакладная");
    КонецЕсли;
    
КонецПроцедуры

//******************************************************************************
Процедура ПриВыбореФирмы()  
    
    Если ФирмаДляОтбора.Выбран()>0 Тогда
        УстановитьОтбор("ФирмаПН", ФирмаДляОтбора);
        ФирмаДляОтбора = ФирмаДляОтбора.ТекущийЭлемент();
    Иначе
        УстановитьОтбор("");
        УстановитьОтбор("ПриходнаяНакладная");
    КонецЕсли;
    
КонецПроцедуры

//******************************************************************************
//
Процедура ПриУстановкеБыстрогоОтбора()
    Перем ТекущДок;                          
    
    ТекущДок = ТекущийДокумент;
    
    Если ВидОтбора.ТекущаяСтрока() = 5 Тогда    // нет быстрого отбора
            
        ЗначениеВВидеСтроки = "";
        
        Форма.кнЗначение.Доступность(0);
        УстановитьОтбор("");
        УстановитьОтбор("ПриходнаяНакладная");
        ВидыОтбора("*");

    Иначе        // есть быстрый отбор
        
        Форма.кнЗначение.Доступность(1);
        
        Если ВидОтбора.ТекущаяСтрока() = 1 Тогда
            ПриВыбореКонтрагента();
            ЗначениеВВидеСтроки=Строка(КонтрагентДляОтбора);
            
        ИначеЕсли ВидОтбора.ТекущаяСтрока() = 2 Тогда
            ПриВыбореАвтора();                          
            ЗначениеВВидеСтроки=Строка(АвторДляОтбора);
            
        ИначеЕсли ВидОтбора.ТекущаяСтрока() = 3 Тогда
            ПриВыбореФирмы();
            ЗначениеВВидеСтроки=Строка(ФирмаДляОтбора);
        Иначе
            ЗначениеВВидеСтроки = "";
            УстановитьОтбор("");
            УстановитьОтбор("ПриходнаяНакладная");
        КонецЕсли;
        
        ВидыОтбора("");
        
    КонецЕсли;
    
    Попытка
        АктивизироватьОбъект(ТекущДок);
    Исключение    
    КонецПопытки;    
        
КонецПроцедуры // ПриУстановкеБыстрогоОтбора


//******************************************************************************
//
Процедура ВыборЗначения()  
    Перем ЗначениеИзменилось,СтароеЗначение,ВыбЗначение;                    
    
    Если ВидОтбора.ТекущаяСтрока() = 4 Тогда    // нет быстрого отбора
        Возврат;
    КонецЕсли;    
    
    ЗначениеИзменилось=0;    
    
    Если ВидОтбора.ТекущаяСтрока() = 1 Тогда
        СтароеЗначение=КонтрагентДляОтбора;
        ВыбЗначение = СоздатьОбъект("Справочник.Контрагенты");
        Если ВыбЗначение.Выбрать("Выбор контрагента","Форма списка")=1 Тогда
            КонтрагентДляОтбора = ВыбЗначение;
            Если ВыбЗначение<>СтароеЗначение Тогда
                ЗначениеИзменилось=1;    
            КонецЕсли;    
        КонецЕсли;    

    ИначеЕсли ВидОтбора.ТекущаяСтрока() = 2 Тогда
        СтароеЗначение=АвторДляОтбора;
        ВыбЗначение = СоздатьОбъект("Справочник.Пользователи");
        Если ВыбЗначение.Выбрать("Выбор автора","Форма списка")=1 Тогда
            АвторДляОтбора = ВыбЗначение;
            Если ВыбЗначение<>СтароеЗначение Тогда
                ЗначениеИзменилось=1;    
            КонецЕсли;    
        КонецЕсли;    
    
    ИначеЕсли ВидОтбора.ТекущаяСтрока() = 3 Тогда
        СтароеЗначение=ФирмаДляОтбора;
        ВыбЗначение = СоздатьОбъект("Справочник.Фирмы");
        Если ВыбЗначение.Выбрать("Выбор фирмы","Форма списка")=1 Тогда
            ФирмаДляОтбора = ВыбЗначение;
            Если ВыбЗначение<>СтароеЗначение Тогда
                ЗначениеИзменилось=1;    
            КонецЕсли;    
        КонецЕсли;    
        
    КонецЕсли;
            
    Если ЗначениеИзменилось=1 Тогда
        ПриУстановкеБыстрогоОтбора();
    КонецЕсли;    

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

//******************************************************************************
Процедура ПриОбычномОткрытииЖурнала()
    
    // определение контрагента для отбора
    КонтрагентДляОтбора = глВосстановитьЗначение(ИмяФормы, "КонтрагентОтбораЖурнала", ПолучитьПустоеЗначение("Справочник.Контрагенты"));
    // определение фирмы для отбора
    ФирмаДляОтбора = глВосстановитьЗначение(ИмяФормы, "ФирмаОтбораЖурнала", ПолучитьПустоеЗначение("Справочник.Фирмы"));
    // определение автора документа для отбора
    АвторДляОтбора = глВосстановитьЗначение(ИмяФормы, "АвторДляОтбораЖурнала", ПолучитьПустоеЗначение("Справочник.Пользователи"));
КонецПроцедуры
//******************************************************************************
Процедура ПриОткрытии()
    УстановитьОтбор("ПриходнаяНакладная");
    // Определение был ли быстрый отбор
    ТекСтр = глВосстановитьЗначение(ИмяФормы, "ВидОтбораЖурнала", 1);
    ВидОтбора.ТекущаяСтрока(ТекСтр);
    // будем отслеживать только реальные изменения этих реквизитов
    Форма.ВидОтбора.ВыполнятьФормулуТолькоПриИзменении(1);
КонецПроцедуры

//******************************************************************************
Процедура ПриЗакрытии() // Предопределенная процедура
    глСохранитьЗначение(ИмяФормы,"КонтрагентОтбораЖурнала",КонтрагентДляОтбора);
    глСохранитьЗначение(ИмяФормы,"ФирмаОтбораЖурнала",ФирмаДляОтбора);
    глСохранитьЗначение(ИмяФормы,"АвторДляОтбораЖурнала",АвторДляОтбора);
    глСохранитьЗначение(ИмяФормы,"ТипДляОтбораЖурнала",ТипДляОтбора);          
КонецПроцедуры // ПриЗакрытии

//*****************************************************************************
//Инициализирум список действий по кнопке "Действия"
СписокДействий = глПолучитьСписокДействий("
    |СтруктураПодчиненности,
    |ДвиженияДокумента,
    |ВводНалоговых,
    |ВводНаОсновании,
    |Подчиненные");
ВидОтбора.ДобавитьЗначение("по контрагенту");
ВидОтбора.ДобавитьЗначение("по автору");
ВидОтбора.ДобавитьЗначение("по фирме");
ВидОтбора.ДобавитьЗначение("отсутствует");

КонтрагентДляОтбора = СоздатьОбъект("Справочник.Контрагенты");  
ФирмаДляОтбора = СоздатьОбъект("Справочник.Фирмы");
АвторДляОтбора = СоздатьОбъект("Справочник.Пользователи");

ЗначениеВВидеСтроки = "";

ИмяФормы = "Журнал.ПриходныеНакладные.Форма.ФормаСписка";
kostya77
denis84 @ Сегодня, 9:16 необходимо зарегистрироваться для просмотра ссылки ,
Это получается нужно для каждого докумена создавать графу отбора?
denis84
kostya77 @ Сегодня, 9:23 необходимо зарегистрироваться для просмотра ссылки ,
я делал для каждого вида документа свой журнал с отбором. Это было моё решение, а так вам самим решать как реализовать.
kostya77
denis84 @ Сегодня, 9:27 необходимо зарегистрироваться для просмотра ссылки ,
я понял. Спасибо
denis84
kostya77 @ Сегодня, 9:37 необходимо зарегистрироваться для просмотра ссылки ,
для "спасибо", есть специальная кнопка
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.