8.х Редактирование докуменов после их запрета изменения

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем ANDRE, 14 окт 2008.

  1. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте!
    В конфигурации "Управление торговлей" необходимо программно изменить реквизит документа после даты запрета изменения документа в ЛЮБОЙ роли, а потом опять вернуть запрет редактирования!
    С помощью запроса обращаюсь к регистру сведений, а вот записать не удается пишет "Полье олбъекта недоступно для записи (ГраницаЗапретаИзменений)". Вот код программы

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

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Из Выборки РезультатаЗапроса можно только читать. Для изменения данных в регистре сведений используйте РегистрСведенийМенеджерЗаписи. Описание есть в синтаксис-помощнике.
  3. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Спасибо буду пробовать!
  4. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Я сделал ка вы посоветовали, но выводит ишибку "Нарушение прав доступа". Мне необходимо изменить дату для всех пользователей и с любыми правами:

    Код:
    Мен = РегистрыСведений.ГраницыЗапретаИзмененияДанных.СоздатьМенеджерЗаписи();
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |	ГраницыЗапретаИзмененияДанных.Организация,
    |	ГраницыЗапретаИзмененияДанных.ГраницаЗапретаИзменений,
    |	ГраницыЗапретаИзмененияДанных.Роль.Ссылка КАК Роль
    |ИЗ
    |	РегистрСведений.ГраницыЗапретаИзмененияДанных КАК ГраницыЗапретаИзмененияДанных";
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
    Для ш=0 По Перечисления.НаборПравПользователей.Количество()-1 Цикл
    Если Выборка.Роль = Перечисления.НаборПравПользователей.Получить(ш) Тогда
    Мен.Роль = Выборка.Роль;
    Мен.Организация = Выборка.Организация;
    Мен.ГраницаЗапретаИзменений = Выборка.ГраницаЗапретаИзменений;
    Мен.Прочитать();
    Если Мен.Выбран() Тогда
    Сообщить("Дата изменена");
    Мен.ГраницаЗапретаИзменений = ДобавитьМесяц(ТекущаяДата(),-2);
    Мен.Записать();
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    Прервать;
    КонецЦикла;
    
    Может необходимо изменить временно права пользователя, а потом вернуть его обратно? Как это сделать не знаю.
  5. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    с помощью этого я добавил пользователю новые права и записал
    ТекПольз.Роли.Добавить(Метаданные.Роли.ПолныеПрава);
    ТекПольз.Записать();
    после этого ниже написал обработку замены даты редактирования, но все равно выдает ошибку "Нарушение прав доступа". Может мои изменения не вступили в силу или я что то еще не записал???

Поделиться этой страницей