PDA

Просмотр полной версии : Обработка дата запрета редактирования.



candrey
27.02.2015, 22:45
Добрый вечер.
В наличии 1С Предприятие 8.2, релиз Управление тороговым предприятием для Украины 1.2. Файловый вариант.Обычное приложение.

Столкнулся с проблемой немогу добавить вторую и третю группу пользователей для закрытия даты запрета редактирования вчерашним днем т.е физичиски добавить могу строчку, но програмно она не выполняется. Чтоб двигались обе даты для "М" и "М1".
Сама обработка предназначена для "закрытие периода на редактирования вчерашней даты"
Помогите с решение проблемы! Двигается только дата по М1
Зарания Спасибо!

Код.

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

ПользовательДляЗапрета = Справочники.Пользователи.Н айтиПоНаименованию("М");
ПользовательДляЗапрета1 = Справочники.Пользователи.Н айтиПоНаименованию("М1");


// Создаём ДеревоЗначений для обработки
ДеревоДаты = Новый ДеревоЗначений;

ДеревоДаты.Колонки.Добавит ь("ОрганизацияПользователь");
ДеревоДаты.Колонки.Добавит ь("Граница");
ДеревоДаты.Колонки.Добавит ь("ПравоНаИзменение");
ДеревоДаты.Колонки.Добавит ь("ТипСтроки");




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

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

Выборка = Запрос.Выполнить().Выбрать() ;
ЕстьРольПолныеПрава = РольДоступна("ПолныеПрава");
Пока Выборка.Следующий() Цикл

Если Выборка.Пользователь = Неопределено Тогда
СтрокаОрганизации = ДеревоДаты.Строки.Добавить ();

СтрокаОрганизации.Организ� �цияПользователь = Выборка.Организация;
СтрокаОрганизации.Граница = Выборка.ГраницаЗапретаИзм� �нений;
СтрокаОрганизации.ПравоНа� �зменение = ЕстьРольПолныеПрава ИЛИ Выборка.ПравоНаИзменение;
СтрокаОрганизации.ТипСтро� �и = Выборка.ПризнакТипаСтроки;
Иначе

Если СтрокаОрганизации = Неопределено ИЛИ СтрокаОрганизации.Организ� �цияПользователь <> Выборка.Организация Тогда
СтрокаОрганизации = ДеревоДаты.Строки.Добавить ();
СтрокаОрганизации.Организ� �цияПользователь = Выборка.Организация;
СтрокаОрганизации.ПравоНа� �зменение = ЕстьРольПолныеПрава ИЛИ Выборка.ПравоНаИзменение;
СтрокаОрганизации.ТипСтро� �и = 1;
КонецЕсли;

СтрокаПользователя = СтрокаОрганизации.Строки.Д обавить();
СтрокаПользователя.Органи� �ацияПользователь = Выборка.Пользователь;
СтрокаПользователя.Границ� � = Выборка.ГраницаЗапретаИзм� �нений;
СтрокаПользователя.ПравоН� �Изменение = ЕстьРольПолныеПрава ИЛИ Выборка.ПравоНаИзменение;
СтрокаПользователя.ТипСтр� �ки = Выборка.ПризнакТипаСтроки;
КонецЕсли;
КонецЦикла;


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

Если Не РольДоступна("ПолныеПрава") Тогда
Запрос.Текст = Запрос.Текст + "
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Настройки� �равДоступаПользователей КАК НастройкиПравДоступаПольз ователей
|ПО Организации.Ссылка = НастройкиПравДоступаПольз ователей.ОбъектДоступа
| И (НастройкиПравДоступаПоль� �ователей.ВидОбъектаДоступ а = ЗНАЧЕНИЕ(Перечисление.Виды ОбъектовДоступа.Организац� �и))
| И (НастройкиПравДоступаПоль� �ователей.Пользователь В
| (ВЫБРАТЬ
| Справочник.ГруппыПользова� �елей.ПользователиГруппы.С� �ылка
| ИЗ
| Справочник.ГруппыПользова� �елей.ПользователиГруппы
| ГДЕ
| Справочник.ГруппыПользова� �елей.ПользователиГруппы.П� �льзователь = &ТекущийПользователь))
| И (НастройкиПравДоступаПоль� �ователей.Запись = ИСТИНА)";

Запрос.УстановитьПараметр("ТекущийПользователь", ПараметрыСеанса.ТекущийПо� �ьзователь);
КонецЕсли;

Выборка = Запрос.Выполнить().Выбрать() ;
Пока Выборка.Следующий() Цикл
НужноДобавить = Истина;



Набор = РегистрыСведений.ГраницыЗ� �претаИзмененияДанных.Созд атьНаборЗаписей();
Набор.Отбор.Организация.Ус� �ановить(Выборка.Организац� �я);

СтрокаВДереве = ДеревоДаты.Строки.Найти(Вы� �орка.Организация, "ОрганизацияПользователь");

Запись = Набор.Добавить();
Запись.Организация = Выборка.Организация;
Запись.Пользователь = Неопределено;

Если СтрокаВДереве = Неопределено Тогда
Запись.ГраницаЗапретаИзме� �ений = Дата('00010101');
Иначе
Запись.ГраницаЗапретаИзме� �ений = СтрокаВДереве.Граница;
Для Каждого СтрокаРоли ИЗ СтрокаВДереве.Строки Цикл
Запись = Набор.Добавить();
Запись.Организация = Выборка.Организация;
Запись.Пользователь = СтрокаРоли.ОрганизацияПол� �зователь;
Если Запись.Пользователь = ПользовательДляЗапрета Тогда
НужноДобавить = Ложь;
Запись.ГраницаЗапретаИзме� �ений = НачалоДня(ТекущаяДата()) - 1;
Иначе
Запись.ГраницаЗапретаИзме� �ений = СтрокаРоли.Граница;
КонецЕсли;
КонецЦикла;
КонецЕсли;

Выборка = Запрос.Выполнить().Выбрать() ;
Пока Выборка.Следующий() Цикл
НужноДобавить = Истина;


Набор = РегистрыСведений.ГраницыЗ� �претаИзмененияДанных.Созд атьНаборЗаписей();
Набор.Отбор.Организация.Ус� �ановить(Выборка.Организац� �я);

СтрокаВДереве = ДеревоДаты.Строки.Найти(Вы� �орка.Организация, "ОрганизацияПользователь");

Запись = Набор.Добавить();
Запись.Организация = Выборка.Организация;
Запись.Пользователь = Неопределено;

Если СтрокаВДереве = Неопределено Тогда
Запись.ГраницаЗапретаИзме� �ений = Дата('00010101');
Иначе
Запись.ГраницаЗапретаИзме� �ений = СтрокаВДереве.Граница;
Для Каждого СтрокаРоли ИЗ СтрокаВДереве.Строки Цикл
Запись = Набор.Добавить();
Запись.Организация = Выборка.Организация;
Запись.Пользователь = СтрокаРоли.ОрганизацияПол� �зователь;
Если Запись.Пользователь = ПользовательДляЗапрета1 Тогда
НужноДобавить = Ложь;
Запись.ГраницаЗапретаИзме� �ений = НачалоДня(ТекущаяДата()) - 1;
Иначе
Запись.ГраницаЗапретаИзме� �ений = СтрокаРоли.Граница;
КонецЕсли;
КонецЦикла;
КонецЕсли;

// Добавим пользователя
Если НужноДобавить Тогда
Запись = Набор.Добавить();
Запись.Организация = Выборка.Организация;
Запись.Пользователь = ПользовательДляЗапрета;
Запись.ГраницаЗапретаИзме� �ений = НачалоДня(ТекущаяДата()) - 1;
КонецЕсли;


Если НужноДобавить Тогда
Запись = Набор.Добавить();
Запись.Организация = Выборка.Организация;
Запись.Пользователь = ПользовательДляЗапрета1;
Запись.ГраницаЗапретаИзме� �ений = НачалоДня(ТекущаяДата()) - 1;
КонецЕсли;


Набор.Записать();
КонецЦикла;
КонецЦикла;