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

При авто изменении .ГраницыЗапретаИзмененияДанных тормозит 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)); //КонецПроцедуры //Ильяс\\___________________________________________________________________ КонецПроцедуры
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться