Помощь - Поиск - Пользователи - Календарь
Полная версия: Редактирование докуменов после их запрета изменения
1C-PRO - Форум по 1С > Форумы по платформе "1С:Предприятие 8.x" > (8.х) Конфигурирование на платформе "1С:Предприятие 8.x"
ANDRE
Здравствуйте!
В конфигурации "Управление торговлей" необходимо программно изменить реквизит документа после даты запрета изменения документа в ЛЮБОЙ роли, а потом опять вернуть запрет редактирования!
С помощью запроса обращаюсь к регистру сведений, а вот записать не удается пишет "Полье олбъекта недоступно для записи (ГраницаЗапретаИзменений)". Вот код программы

Код
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ГраницыЗапретаИзмененияДанных.Организация,
| ГраницыЗапретаИзмененияДанных.ГраницаЗапретаИзменений,
| ГраницыЗапретаИзмененияДанных.Роль.Ссылка КАК Роль
|ИЗ
| РегистрСведений.ГраницыЗапретаИзмененияДанных КАК ГраницыЗапретаИзмененияДанных";

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

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


Спасибо за ответ!!!!
lazy
Из Выборки РезультатаЗапроса можно только читать. Для изменения данных в регистре сведений используйте РегистрСведенийМенеджерЗаписи. Описание есть в синтаксис-помощнике.
ANDRE
Цитата(lazy @ 14.10.2008, 9:39) *

Из Выборки РезультатаЗапроса можно только читать. Для изменения данных в регистре сведений используйте РегистрСведенийМенеджерЗаписи. Описание есть в синтаксис-помощнике.

Спасибо буду пробовать!
ANDRE
Я сделал ка вы посоветовали, но выводит ишибку "Нарушение прав доступа". Мне необходимо изменить дату для всех пользователей и с любыми правами:

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

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


Может необходимо изменить временно права пользователя, а потом вернуть его обратно? Как это сделать не знаю.
ANDRE
с помощью этого я добавил пользователю новые права и записал
ТекПольз.Роли.Добавить(Метаданные.Роли.ПолныеПрава);
ТекПольз.Записать();
после этого ниже написал обработку замены даты редактирования, но все равно выдает ошибку "Нарушение прав доступа". Может мои изменения не вступили в силу или я что то еще не записал???
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2009 Invision Power Services, Inc.