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