Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

При авто изменении .ГраницыЗапретаИзмененияДанных тормозит 1с при запуске по сети, что можно сделать? ут10,3

    • #1
    • 14.02.2014 20:33
    0
    Процедура УстановитьПараметрГраницыЗапретаИзмененияДанных() Экспорт

    //Если РольДоступна("ПолныеПрава") И НЕ Константы.ПрименятьДатуЗапретаДляПолныхПрав.Получить() Тогда
    // ПараметрыСеанса.ГраницыЗапретаИзмененияДанных = Новый ХранилищеЗначения(Неопределено, Новый СжатиеДанных(0));
    //
    // Возврат;
    //КонецЕсли;
    //
    //ТекстЗапросаПоОрганизациям = "
    //|ВЫБРАТЬ
    //| Значение(Справочник.Организации.ПустаяСсылка) как Организация
    //| ОБЪЕДИНИТЬ
    //| ВЫБРАТЬ
    //| Организации.Ссылка
    //| ИЗ
    //| Справочник.Организации КАК Организации ";
    //
    //ТекстЗапросаПоОбщейДатеЗапретаРедактирования = "ВЫБРАТЬ
    // | ЕстьNull(ГраницыЗапретаИзмененияДанных.ГраницаЗапретаИзменений, ДатаВремя(1,1,1)) КАК ОбщаяДата
    // |ИЗ
    // | РегистрСведений.ГраницыЗапретаИзмененияДанных КАК ГраницыЗапретаИзмененияДанных
    // |ГДЕ
    // | ГраницыЗапретаИзмененияДанных.Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
    // | И ГраницыЗапретаИзмененияДанных.Пользователь = НЕОПРЕДЕЛЕНО";
    //ТекстЗапросаПоПриоритетамЗаписей = "ВЫБРАТЬ
    // | Границы.Организация КАК Организация,
    // | Границы.Пользователь КАК Пользователь,
    // | ВЫБОР
    // | КОГДА Границы.Пользователь = НЕОПРЕДЕЛЕНО
    // | ТОГДА 3
    // | КОГДА Границы.Пользователь ССЫЛКА Справочник.ГруппыПользователей
    // | И ГруппыПользователей.Пользователь = &Пользователь
    // | ТОГДА 2
    // | КОГДА Границы.Пользователь ССЫЛКА Справочник.Пользователи
    // | И Границы.Пользователь = &Пользователь
    // | ТОГДА 1
    // | КОНЕЦ КАК Приоритет,
    // | Границы.ГраницаЗапретаИзменений КАК ГраницаЗапретаИзменений
    // |ИЗ
    // | РегистрСведений.ГраницыЗапретаИзмененияДанных КАК Границы
    // | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГруппыПользователей.ПользователиГруппы КАК ГруппыПользователей
    // | ПО (ГруппыПользователей.Пользователь = &Пользователь И ГруппыПользователей.Ссылка = Границы.Пользователь)";
    //
    //Запрос = Новый Запрос;
    //Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    // | Организации.Организация как Организация,
    // | МИНИМУМ(ЕСТЬNULL(ТаблицаГраницыЗапрета.ГраницаЗапретаИзменений, ОбщаяДатаЗапрета.ОбщаяДата)) КАК ГраницаЗапретаИзменений,
    // | ОбщаяДатаЗапрета.ОбщаяДата как ОбщаяДата
    // |ИЗ
    // | (" + ТекстЗапросаПоОрганизациям+") Как Организации
    // | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    // | Границы.Организация КАК Организация,
    // | МИНИМУМ(Приоритеты.Приоритет) КАК Приоритет
    // | ИЗ
    // | РегистрСведений.ГраницыЗапретаИзмененияДанных КАК Границы
    // | ЛЕВОЕ СОЕДИНЕНИЕ (" + ТекстЗапросаПоПриоритетамЗаписей + ") КАК Приоритеты
    // | ПО Границы.Организация = Приоритеты.Организация
    // | И Границы.Пользователь = Приоритеты.Пользователь
    // |
    // | СГРУППИРОВАТЬ ПО
    // | Границы.Организация) КАК ТаблицаПриоритетов
    // | ПО ТаблицаПриоритетов.Организация = Организации.Организация
    // | ЛЕВОЕ СОЕДИНЕНИЕ (" + ТекстЗапросаПоПриоритетамЗаписей + ") КАК ТаблицаГраницыЗапрета
    // | ПО ТаблицаПриоритетов.Организация = ТаблицаГраницыЗапрета.Организация
    // | И ТаблицаПриоритетов.Приоритет = ТаблицаГраницыЗапрета.Приоритет,
    // | (" + ТекстЗапросаПоОбщейДатеЗапретаРедактирования + ") Как ОбщаяДатаЗапрета
    // |СГРУППИРОВАТЬ ПО
    // | Организации.Организация, ОбщаяДата";
    //
    //Запрос.УстановитьПараметр("Пользователь", глЗначениеПеременной("глТекущийПользователь"));
    //
    //РезультатЗапроса = Запрос.Выполнить();
    //Если РезультатЗапроса.Пустой() Тогда
    // Соответствие = Неопределено;
    //Иначе
    // Соответствие = Новый Соответствие;
    // Выборка = РезультатЗапроса.Выбрать();
    // ОбщаяДатаЗапрета = Неопределено;
    // Пока Выборка.Следующий() Цикл
    // Соответствие[Выборка.Организация] = ?(ЗначениеЗаполнено(Выборка.ГраницаЗапретаИзменений), КонецДня(Выборка.ГраницаЗапретаИзменений), Выборка.ГраницаЗапретаИзменений);
    // Если ОбщаяДатаЗапрета = Неопределено Тогда
    // ОбщаяДатаЗапрета = ?(ЗначениеЗаполнено(Выборка.ОбщаяДата), КонецДня(Выборка.ОбщаяДата), Выборка.ОбщаяДата);
    // КонецЕсли;
    // КонецЦикла;
    //
    // Если НЕ ОбщаяДатаЗапрета = Неопределено Тогда
    // Соответствие["ОбщаяДатаЗапретаРедактирования"] = ОбщаяДатаЗапрета;
    // КонецЕсли;
    //
    // Если Соответствие.Количество() = 0 Тогда
    // Соответствие = Неопределено;
    // КонецЕсли;
    //КонецЕсли;
    //
    //Если Соответствие <> Неопределено Тогда
    // СохранятьСоответствие = Ложь;
    // Для Каждого КлючИЗначение Из Соответствие Цикл
    // ЕСли ЗначениеЗаполнено(КлючИЗначение.Значение) Тогда
    // СохранятьСоответствие = Истина;
    // Прервать;
    // КонецЕсли;
    // КонецЦикла;
    // Если НЕ СохранятьСоответствие Тогда
    // Соответствие = Неопределено;
    // КонецЕсли;
    //КонецЕсли;
    //
    //ПараметрыСеанса.ГраницыЗапретаИзмененияДанных = Новый ХранилищеЗначения(Соответствие, Новый СжатиеДанных(0));
    //Ильяс\\___________________________________________________________________
    //Процедура УстановитьПараметрГраницыЗапретаИзмененияДанных() Экспорт
    Если РольДоступна("ПолныеПрава") И НЕ Константы.ПрименятьДатуЗапретаДляПолныхПрав.Получить() Тогда
    ПараметрыСеанса.ГраницыЗапретаИзмененияДанных = Новый ХранилищеЗначения(Неопределено, Новый СжатиеДанных(0));

    Возврат;
    КонецЕсли;
    Попытка
    //КоличествоДней = Константы.КоличествоДней.Получить();
    ДеньДата = День(ТекущаяДата());
    Если СтрДлина(ДеньДата) = 1 Тогда
    ДеньДата = "0" + СокрЛП(ДеньДата);
    КонецЕсли;
    Если ДеньДата > 10 тогда
    КоличествоДней = ДеньДата - 10;
    КонецЕсли;
    Если ДеньДата < 10 тогда
    КоличествоДней = ДеньДата + 20;
    КонецЕсли;
    ДатаУстановки = НачалоДня(ТекущаяДата()) - (60*60*24*КоличествоДней);
    НаборЗаписей = РегистрыСведений.ГраницыЗапретаИзмененияДанных.СоздатьНаборЗаписей();
    Запись = НаборЗаписей.Добавить();
    //Запись.Организация = Организация;
    //Запись.Пользователь =ТекПользователь;
    Запись.ГраницаЗапретаИзменений = НачалоДня(ДатаУстановки);
    НаборЗаписей.Записать();
    Исключение
    Сообщить(ОписаниеОшибки());
    КонецПопытки;

    ТекстЗапросаПоОрганизациям = "
    |ВЫБРАТЬ
    | Значение(Справочник.Организации.ПустаяСсылка) как Организация
    | ОБЪЕДИНИТЬ
    | ВЫБРАТЬ
    | Организации.Ссылка
    | ИЗ
    | Справочник.Организации КАК Организации ";

    ТекстЗапросаПоОбщейДатеЗапретаРедактирования = "ВЫБРАТЬ
    | ЕстьNull(ГраницыЗапретаИзмененияДанных.ГраницаЗапретаИзменений, ДатаВремя(1,1,1)) КАК ОбщаяДата
    |ИЗ
    | РегистрСведений.ГраницыЗапретаИзмененияДанных КАК ГраницыЗапретаИзмененияДанных
    |ГДЕ
    | ГраницыЗапретаИзмененияДанных.Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
    | И ГраницыЗапретаИзмененияДанных.Пользователь = НЕОПРЕДЕЛЕНО";
    ТекстЗапросаПоПриоритетамЗаписей = "ВЫБРАТЬ
    | Границы.Организация КАК Организация,
    | Границы.Пользователь КАК Пользователь,
    | ВЫБОР
    | КОГДА Границы.Пользователь = НЕОПРЕДЕЛЕНО
    | ТОГДА 3
    | КОГДА Границы.Пользователь ССЫЛКА Справочник.ГруппыПользователей
    | И ГруппыПользователей.Пользователь = &Пользователь
    | ТОГДА 2
    | КОГДА Границы.Пользователь ССЫЛКА Справочник.Пользователи
    | И Границы.Пользователь = &Пользователь
    | ТОГДА 1
    | КОНЕЦ КАК Приоритет,
    | Границы.ГраницаЗапретаИзменений КАК ГраницаЗапретаИзменений
    |ИЗ
    | РегистрСведений.ГраницыЗапретаИзмененияДанных КАК Границы
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГруппыПользователей.ПользователиГруппы КАК ГруппыПользователей
    | ПО (ГруппыПользователей.Пользователь = &Пользователь И ГруппыПользователей.Ссылка = Границы.Пользователь)";

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | Организации.Организация как Организация,
    | МИНИМУМ(ЕСТЬNULL(ТаблицаГраницыЗапрета.ГраницаЗапретаИзменений, ОбщаяДатаЗапрета.ОбщаяДата)) КАК ГраницаЗапретаИзменений,
    | ОбщаяДатаЗапрета.ОбщаяДата как ОбщаяДата
    |ИЗ
    | (" + ТекстЗапросаПоОрганизациям+") Как Организации
    | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    | Границы.Организация КАК Организация,
    | МИНИМУМ(Приоритеты.Приоритет) КАК Приоритет
    | ИЗ
    | РегистрСведений.ГраницыЗапретаИзмененияДанных КАК Границы
    | ЛЕВОЕ СОЕДИНЕНИЕ (" + ТекстЗапросаПоПриоритетамЗаписей + ") КАК Приоритеты
    | ПО Границы.Организация = Приоритеты.Организация
    | И Границы.Пользователь = Приоритеты.Пользователь
    |
    | СГРУППИРОВАТЬ ПО
    | Границы.Организация) КАК ТаблицаПриоритетов
    | ПО ТаблицаПриоритетов.Организация = Организации.Организация
    | ЛЕВОЕ СОЕДИНЕНИЕ (" + ТекстЗапросаПоПриоритетамЗаписей + ") КАК ТаблицаГраницыЗапрета
    | ПО ТаблицаПриоритетов.Организация = ТаблицаГраницыЗапрета.Организация
    | И ТаблицаПриоритетов.Приоритет = ТаблицаГраницыЗапрета.Приоритет,
    | (" + ТекстЗапросаПоОбщейДатеЗапретаРедактирования + ") Как ОбщаяДатаЗапрета
    |СГРУППИРОВАТЬ ПО
    | Организации.Организация, ОбщаяДата";

    Запрос.УстановитьПараметр("Пользователь", глЗначениеПеременной("глТекущийПользователь"));

    РезультатЗапроса = Запрос.Выполнить();
    Если РезультатЗапроса.Пустой() Тогда
    Соответствие = Неопределено;
    Иначе
    Соответствие = Новый Соответствие;
    Выборка = РезультатЗапроса.Выбрать();
    ОбщаяДатаЗапрета = Неопределено;
    Пока Выборка.Следующий() Цикл
    Соответствие[Выборка.Организация] = ?(ЗначениеЗаполнено(Выборка.ГраницаЗапретаИзменений), КонецДня(Выборка.ГраницаЗапретаИзменений), Выборка.ГраницаЗапретаИзменений);
    Если ОбщаяДатаЗапрета = Неопределено Тогда
    ОбщаяДатаЗапрета = ?(ЗначениеЗаполнено(Выборка.ОбщаяДата), КонецДня(Выборка.ОбщаяДата), Выборка.ОбщаяДата);
    КонецЕсли;
    КонецЦикла;

    Если НЕ ОбщаяДатаЗапрета = Неопределено Тогда
    Соответствие["ОбщаяДатаЗапретаРедактирования"] = ОбщаяДатаЗапрета;
    КонецЕсли;

    Если Соответствие.Количество() = 0 Тогда
    Соответствие = Неопределено;
    КонецЕсли;
    КонецЕсли;

    Если Соответствие <> Неопределено Тогда
    СохранятьСоответствие = Ложь;
    Для Каждого КлючИЗначение Из Соответствие Цикл
    ЕСли ЗначениеЗаполнено(КлючИЗначение.Значение) Тогда
    СохранятьСоответствие = Истина;
    Прервать;
    КонецЕсли;
    КонецЦикла;
    Если НЕ СохранятьСоответствие Тогда
    Соответствие = Неопределено;
    КонецЕсли;
    КонецЕсли;

    ПараметрыСеанса.ГраницыЗапретаИзмененияДанных = Новый ХранилищеЗначения(Соответствие, Новый СжатиеДанных(0));

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

    //Ильяс\\___________________________________________________________________
    КонецПроцедуры
Яндекс-директ
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться