Имя: Пароль:
1C
1С v8
Как в настройках выключить отбор ОРганизации
0 asisdes
 
29.01.18
10:23
Доброго дня!
Можете помочь начинающему, я сделал так что в форме отбор выключил
(.Доступность = Ложь) и Организацию прописал из Настроек пользователя. Однако если он зайдет в Настройки то может там перевыбирать Организацию.

https://ibb.co/krDRyb или
<a href="https://ibb.co/krDRyb"><img src="https://thumb.ibb.co/krDRyb/image.png"; alt="image" border="0"></a>
1 asisdes
 
29.01.18
10:24
Модуль формы
2 asisdes
 
29.01.18
10:24
Модуль формы

Перем ИдентификаторОкнаРасшифровки;
Перем ФормаНастройка;
Перем СтруктураРеквизитов;
Перем НеВосстанавливатьНастройку;
Перем СтруктураСвязиЭлементовСДанными;
Перем НП Экспорт; // Настройка периода

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ

// Управляет пометками кнопок ком. панели
//
// Параметры:
//    Нет.
//
Процедура УправлениеПометкамиКнопокКоманднойПанели()
    
    Если ПоказыватьЗаголовок Тогда
        ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Заголовок.Пометка = Истина;
        ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Подменю.Кнопки.Заголовок.Пометка = Истина;

    Иначе
        ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Заголовок.Пометка = Ложь;
        ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Подменю.Кнопки.Заголовок.Пометка = Ложь;

    КонецЕсли;

    Если ПоказыватьПодписи Тогда
        ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Подписи.Пометка = Истина;
        ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Подменю.Кнопки.Подписи.Пометка = Истина;

    Иначе
        ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Подписи.Пометка = Ложь;
        ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Подменю.Кнопки.Подписи.Пометка = Ложь;

    КонецЕсли;

    Если ЭлементыФормы.ПанельОтбор.Свертка = РежимСверткиЭлементаУправления.Верх Тогда
        ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Отбор.Пометка = Ложь;
        ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Подменю.Кнопки.Отбор.Пометка = Ложь;
    Иначе
        ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Отбор.Пометка = Истина;
        ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Подменю.Кнопки.Отбор.Пометка = Истина;
    КонецЕсли;
    
КонецПроцедуры // УправлениеПометкамиКнопокКоманднойПанели()

// Обновляет таблицу отчета
//
// Параметры:
//    Нет.
//
Процедура ОбновитьОтчет() Экспорт

    СформироватьОтчет(ЭлементыФормы.ДокументРезультат, ПоказыватьЗаголовок, , ПоказыватьПодписи);
    
    Если ЭлементыФормы.ДокументРезультат.Области.Найти("Заголовок") <> Неопределено Тогда
        ЭлементыФормы.ДокументРезультат.Область("Заголовок").Видимость = ПоказыватьЗаголовок;
    КонецЕсли;
    Если ЭлементыФормы.ДокументРезультат.Области.Найти("Подписи") <> Неопределено Тогда
        ЭлементыФормы.ДокументРезультат.Область("Подписи").Видимость = ПоказыватьПодписи;
    КонецЕсли;

    ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.ДокументРезультат;

    УправлениеПометкамиКнопокКоманднойПанели();
    
КонецПроцедуры // ОбновитьОтчет()

//  Управляет выводом заголовка
//
// Параметры:
//    Нет.
//
Процедура ВыводЗаголовка()

    // Перезаполнять заголовок можно только у "чистого" отчета
    Если ЭлементыФормы.ДокументРезультат.ВысотаТаблицы = 0 Тогда

        СформироватьОтчет(ЭлементыФормы.ДокументРезультат, ПоказыватьЗаголовок, Истина);
        
    КонецЕсли;

    Если ЭлементыФормы.ДокументРезультат.Области.Найти("Заголовок") <> Неопределено Тогда
        ЭлементыФормы.ДокументРезультат.Область("Заголовок").Видимость = ПоказыватьЗаголовок;
    КонецЕсли;

    УправлениеПометкамиКнопокКоманднойПанели();
    
КонецПроцедуры // ВыводЗаголовка()

// Формирует текст заголовка
//
// Параметры:
//    Нет.
//
Процедура СформироватьЗаголовокФормы()

    Заголовок = УправлениеОтчетами.СформироватьЗаголовокОсновнойФормы(ДатаНач, ДатаКон, "Расчетная ведомость организации", 0);

КонецПроцедуры // СформироватьЗаголовокФормы()

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

// Заполняет настройки из структуры - кроме состояния панели "Отбор"
//
Процедура ВосстановитьНастройкиИзСтруктуры(СтруктураСНастройками) Экспорт

    ПостроительОтчета.УстановитьНастройки(СтруктураСНастройками.НастройкиПостроителя);
    ПоказыватьЗаголовок = СтруктураСНастройками.ЗаголовокПомечен;
    ИспользоватьСвойстваИКатегории = СтруктураСНастройками.ИспользоватьСвойстваИКатегории;
    ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Отбор.Пометка = СтруктураСНастройками.ОтборПомечен;
    Показатели.Загрузить(СтруктураСНастройками.Показатели);
    
    Врм = Истина;
    Если СтруктураСНастройками.Свойство("ИспользоватьСвойстваИКатегории", Врм) Тогда
        ИспользоватьСвойстваИКатегории = Врм;
    КонецЕсли;
    
    Если СтруктураСНастройками.Свойство("ПодписиПомечены") Тогда
        ПоказыватьПодписи = СтруктураСНастройками.ПодписиПомечены;
    Иначе
        ПоказыватьПодписи = Истина;
    КонецЕсли;

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

// Процедура - обработчик события перед сохранением значений формы
//
Процедура ПередСохранениемЗначений(Отказ)

    СохраненныеНастройки = СформироватьСтруктуруДляСохраненияНастроек();

КонецПроцедуры // ПередСохранениемЗначений()

// Процедура - обработчик события после восстановления значений формы
//
Процедура ПослеВосстановленияЗначений()

    Если НеВосстанавливатьНастройку <> Истина Тогда

        Если ТипЗнч(СохраненныеНастройки) = Тип("Структура") Тогда

            ВосстановитьНастройкиИзСтруктуры(СохраненныеНастройки);

            ВыводЗаголовка();

            Если Открыта() Тогда
                ЭлементыФормы.ПанельОтбор.Свертка = ?(СохраненныеНастройки.ОтборПомечен, РежимСверткиЭлементаУправления.Нет, РежимСверткиЭлементаУправления.Верх);
                //Это, что выше, не работает при еще не открытой форме.
                УправлениеПометкамиКнопокКоманднойПанели();
            КонецЕсли;
            
            СформироватьЗаголовокФормы();

        КонецЕсли;

    КонецЕсли;

КонецПроцедуры // ПослеВосстановленияЗначений()

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ НАЖАТИЯ КНОПОК КОМАНДНОЙ ПАНЕЛИ

// Процедура - обработчик нажатия кнопки "Настройка".
//
Процедура КоманднаяПанельФормыНастройка(Кнопка)
    
    //ВызовСтандартнойНастройки(ЭтаФорма);
    
    ФормаНастройка = ПолучитьФорму("ФормаНастройка", ЭтаФорма);

    СтруктураСНастройками = СформироватьСтруктуруДляСохраненияНастроек();

    СтараяДатаНач = ДатаНач;
    СтараяДатаКон = ДатаКон;
    
    РезультатОткрытия = ФормаНастройка.ОткрытьМодально();

    Если РезультатОткрытия = Истина Тогда

        ОбновитьОтчет();

    Иначе
        //форму закрыли эскейпом или по "Закрыть" - восстановим настройки, отчет формировать не будем!
        //восстанавливаем значения
        НеВосстанавливатьНастройку = Ложь;
        ВосстановитьНастройкиИзСтруктуры(СтруктураСНастройками);
        ДатаНач = СтараяДатаНач;
        ДатаКон = СтараяДатаКон;
    КонецЕсли;

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

// Процедура - обработчик нажатия кнопки "Отбор".
//
Процедура КоманднаяПанельФормыОтбор(Кнопка)

    Если НЕ ЭлементыФормы.ПанельОтбор.Свертка = РежимСверткиЭлементаУправления.Верх Тогда
        ЭлементыФормы.ПанельОтбор.Свертка = РежимСверткиЭлементаУправления.Верх;
    Иначе
        ЭлементыФормы.ПанельОтбор.Свертка = РежимСверткиЭлементаУправления.Нет;
    КонецЕсли;

    УправлениеПометкамиКнопокКоманднойПанели();
    
КонецПроцедуры

// Процедура - обработчик нажатия кнопки "Обновить".
//
Процедура КоманднаяПанельФормыСформировать(Кнопка)

    ОбновитьОтчет();

КонецПроцедуры // ВыполнитьНажатие()

// Процедура - обработчик нажатия кнопки "Заголовок".
//
Процедура КоманднаяПанельЗаголовок(Кнопка)
    ПоказыватьЗаголовок = Не ПоказыватьЗаголовок;
    ВыводЗаголовка();
КонецПроцедуры

// Процедура - обработчик нажатия кнопки "Подписи".
//
Процедура КоманднаяПанельФормыПодписи(Кнопка)
    
    ПоказыватьПодписи = Не ПоказыватьПодписи;
        
    ОбластьПодписи = ЭлементыФормы.ДокументРезультат.Области.Найти("Подписи");
    Если ОбластьПодписи <> Неопределено Тогда
        ОбластьПодписи.Видимость = ПоказыватьПодписи;
    КонецЕсли;

    УправлениеПометкамиКнопокКоманднойПанели();

КонецПроцедуры // КоманднаяПанельФормыПодписи()

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ

// Процедура - обработчик закрытия формы
//

// Процедура - обработчик обновления данных формы
//
Процедура ОбновлениеОтображения()

    СформироватьЗаголовокФормы();
    
КонецПроцедуры // ОбновлениеОтображения()

// Процедура - обработчик события перед открытием формы
//
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    
        
        //ЯкупоАС 23-01-2018
        Если НЕ УчетПоВсемОрганизациям Тогда
        Организация = ОсновнаяОрганизация;
        ЭтаФорма.ЭлементыФормы.ФлажокНастройкиОрганизация.Доступность = Ложь;
        ЭтаФорма.ЭлементыФормы.ПолеВидаСравненияОрганизация.Доступность = Ложь;
        ЭтаФорма.ЭлементыФормы.ПолеНастройкиОрганизация.Доступность = Ложь;
        КонецЕсли;
        //ЯкупоАС 23-01-2018


    Если НЕ (неВосстанавливатьНастройку = Истина) Тогда

        ЗаполнитьНачальныеНастройки();

        // восстановим параметры отбора по умолчанию
        ПроцедурыУправленияПерсоналом.ВосстановитьОбщиеПараметрыОтчетовПоЗарплате(ДатаНач, ДатаКон,
                                                        ПостроительОтчета.Отбор.Организация.Значение,
                                                        ПостроительОтчета.Отбор.Организация.ВидСравнения,
                                                        ПостроительОтчета.Отбор.Организация.Использование,
                                                        ,
                                                        ,
                                                        ,
                                                        ПостроительОтчета.Отбор.ПодразделениеОрганизации.Значение,
                                                        ПостроительОтчета.Отбор.ПодразделениеОрганизации.ВидСравнения,
                                                        ПостроительОтчета.Отбор.ПодразделениеОрганизации.Использование);

        ВыводЗаголовка();

        СформироватьЗаголовокФормы();
    КонецЕсли;

    Если Не ЗначениеЗаполнено(ДатаНач) Тогда
        ДатаНач = НачалоМесяца(ОбщегоНазначения.ПолучитьРабочуюДату());
        ДатаКон = КонецМесяца(ДатаНач);
    КонецЕсли;

    УправлениеОтчетами.УстановитьСвязьПолейБыстрогоОтбораНаФорме(ЭлементыФормы, ПостроительОтчета.Отбор, СтруктураСвязиЭлементовСДанными, "ЭтотОтчет.ПостроительОтчета.Отбор");
    
КонецПроцедуры // ПередОткрытием()     ЭтотОбъект

// Процедура - обработчик события при открытии формы
//
Процедура ПриОткрытии()

            
    ОтборУстановлен = Ложь;
    Для Каждого ЭлементОтбора Из ПостроительОтчета.Отбор Цикл
        Если ЭлементОтбора.Использование Тогда
            ОтборУстановлен = Истина;
            Прервать;
        КонецЕсли;
    КонецЦикла;

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

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

// Процедура - обработчик события "ПередЗакрытием" формы.
//
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)

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

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ФОРМЫ

// Процедура - обработчик нажатия кнопки выбора даты начала периода
//
Процедура ДатаНачПриИзменении(Элемент)
    
    ДатаНач = НачалоМесяца(ДатаНач);
    
КонецПроцедуры

// Процедура - обработчик нажатия кнопки выбора даты окончания периода
//
Процедура ДатаКонПриИзменении(Элемент)
    
    ДатаКон = КонецМесяца(ДатаКон);
    
КонецПроцедуры

// Процедура - обработчик события нажати кнопки "выбор периода"
Процедура КнопкаНастройкаПериодаНажатие(Элемент)
    
    НП.УстановитьПериод(НачалоМесяца(ДатаНач), КонецМесяца(ДатаКон));
    Если НП.Редактировать() Тогда
        
        ДатаНач = НачалоМесяца(НП.ПолучитьДатуНачала());
        ДатаКон = КонецМесяца(НП.ПолучитьДатуОкончания());
        
    КонецЕсли;

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

// Процедура - обработчик изменения данных в поле значения отбора
//
Процедура ПолеНастройки1ПриИзменении(Элемент)

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

// Процедура - обработчик изменения данных в поле выбора вида сравнения
//
Процедура ПолеВидаСравнения1ПриИзменении(Элемент)

    УправлениеОтчетами.ПолеВидаСравненияПриИзменении(Элемент, ЭлементыФормы);
    
КонецПроцедуры // ПолеВидаСравнения1ПриИзменении()

// Процедура - обработчик изменения данных в поле значения отбора
//
Процедура ПолеНастройкиФизЛицоПриИзменении(Элемент)

    УправлениеОтчетами.ПолеНастройкиПриИзменении(Элемент, ПостроительОтчета.Отбор);    
    
КонецПроцедуры // ПолеНастройки1ПриИзменении()


Процедура ОтправитьНаПочту(Кнопка)
    
    ОбщегоНазначения.ОтправкаПечатнойФормыПоЭлПочте(ЭтаФорма, ЭлементыФормы.ДокументРезультат);
    
КонецПроцедуры

Процедура ПолеНастройкиФизЛицоНачалоВыбора(Элемент, СтандартнаяОбработка)
    
    ВидСравненияРаботника = ЭлементыФормы.ПолеВидаСравненияФизЛицо.Значение;
    Если ВидСравненияРаботника = ВидСравнения.ВИерархии ИЛИ ВидСравненияРаботника = ВидСравнения.НеВИерархии ИЛИ ВидСравненияРаботника = ВидСравнения.ВСпискеПоИерархии ИЛИ ВидСравненияРаботника = ВидСравнения.НеВСпискеПоИерархии Тогда
        Возврат;
    КонецЕсли;
    
    Если НЕ ТипЗнч(Элемент.Значение) = Тип("СписокЗначений") Тогда
        ТекОрганизация = Неопределено;
        Попытка
            ТекОрганизация = ПостроительОтчета.Отбор.Организация.Значение;
        Исключение
        КонецПопытки;
        
        Если ЗначениеЗаполнено(ТекОрганизация) Тогда
            ТекОрганизация = ОбщегоНазначения.ГоловнаяОрганизацияДляУчетаЗарплаты(ТекОрганизация);
        КонецЕсли;
        ПроцедурыУправленияПерсоналом.ОткрытьФормуВыбораСотрудникаОрганизации(Элемент, "РасчетныеВедомостиОрганизаций", Истина, ТекущаяДата(), ТекОрганизация, СтандартнаяОбработка, Элемент.Значение,,Истина);
    Иначе
        СтандартнаяОбработка = Ложь;
        ФормаРедактированияСпискаСотрудников = ПолучитьФорму("ФормаРедактированияСпискаСотрудников");
        ФормаРедактированияСпискаСотрудников.СписокСотрудников = Элемент.Значение;
        ФормаРедактированияСпискаСотрудников.ОткрытьМодально();        
    КонецЕсли;           
    
КонецПроцедуры

Процедура ПолеНастройкиФизЛицоАвтоПодборТекста(Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка)
    
    ВидСравненияРаботника = ЭлементыФормы.ПолеВидаСравненияФизЛицо.Значение;
    Если ВидСравненияРаботника = ВидСравнения.ВИерархии ИЛИ ВидСравненияРаботника = ВидСравнения.НеВИерархии ИЛИ ВидСравненияРаботника = ВидСравнения.ВСпискеПоИерархии ИЛИ ВидСравненияРаботника = ВидСравнения.НеВСпискеПоИерархии Тогда
        Возврат;
    КонецЕсли;
    
    ТекстАвтоПодбора = ПроцедурыУправленияПерсоналом.ПодобратьФИОРаботникаКандидата("СотрудникиСправочник", Текст,, Истина);
    СтандартнаяОбработка = Ложь;    
    
КонецПроцедуры

Процедура ПолеНастройкиФизЛицоОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
    
    ВидСравненияРаботника = ЭлементыФормы.ПолеВидаСравненияФизЛицо.Значение;
    Если ВидСравненияРаботника = ВидСравнения.ВИерархии ИЛИ ВидСравненияРаботника = ВидСравнения.НеВИерархии ИЛИ ВидСравненияРаботника = ВидСравнения.ВСпискеПоИерархии ИЛИ ВидСравненияРаботника = ВидСравнения.НеВСпискеПоИерархии Тогда
        Возврат;
    КонецЕсли;
    
    Значение = ПроцедурыУправленияПерсоналом.ПодобратьСписокРаботниковКандидатов("СотрудникиСправочник", Текст, Элемент.Значение,, Истина);
    Если ТипЗнч(Значение) = Тип("СписокЗначений") И Значение.Количество() = 0 Тогда
        СтандартнаяОбработка = Истина;
    Иначе
        СтандартнаяОбработка = (Значение = Неопределено);
    КонецЕсли;
    
КонецПроцедуры


////////////////////////////////////////////////////////////////////////////////
// ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ

НП = Новый НастройкаПериода;
НП.ВариантНастройки = ВариантНастройкиПериода.Период;
3 Segate
 
29.01.18
10:30
Если ты не хочешь, чтоб пользователи видели данные по другим организациям - пили рлс =)
4 asisdes
 
29.01.18
10:55
Самое интересное, это так называемое мягкое ограничение похоже.
Если в Настройках пользователя не стоит Учет по всем организациям, то конфа сама обрезает документы не разрешенных организаций. Единственное я нашел в нескольких отчетах по З/П высвечиваются данные
5 yavasya
 
29.01.18
11:59
(4) что ты хочешь? включи в недоступные параметры организацию
6 asisdes
 
29.01.18
13:12
а можете подсказать как?! В общем модуле текст кода надо прописать?! Что то не могу найти где эти параметры формируются... для Формы настройки