Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запрет на отмену проводки.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
l2d808
1с8.3 Самописная. Клиент-сервер.
Добрый день, Уважаемое сообщество.
Столкнулся с вопросом. Как запретить пользователю отменять проводку (програмно), не используя роли?
podcast
l2d808 @ Сегодня, 12:10 необходимо зарегистрироваться для просмотра ссылки ,
Если всем пользователем то ПередЗаписью проверять РежимЗаписи если ОтменаПроведения то Отказ, а если нужны условия то нужо выкручивваться с них.
l2d808
Вышел с ситуации так:

в модуле документа прописал:
Процедура ОбработкаУдаленияПроведения(Отказ)
    Сообщить("Відміна проведення ЗАБОРОНЕНА! Зверніться до Адміністратора!");
    Отказ = Истина;
КонецПроцедуры


Если кому интересно, дальше можно ставить любое условие.
l2d808
Есть продолжение данной темы.
Как запретить програмно обычное и интерактисное удаление справочников и документов?
sava1
Трудно добавить роль?
Или "делаем ректально" - это наше второе Я ?
l2d808
sava1 @ Сегодня, 11:10 необходимо зарегистрироваться для просмотра ссылки ,
Суть в том что, роли раздаются направо и налево, а вот некоторые объекты должны быть стабильно не изменяемые.
А вот на счет "ректально" пожалуйста поподробнее...
Vladal
Цитата(l2d808 @ 14.08.18, 11:06) необходимо зарегистрироваться для просмотра ссылки
Как запретить програмно обычное и интерактисное удаление справочников и документов?

В модуле объекта обработчик ПередУдалением()

Процедура ПередУдалением(Отказ)
    Если Не РольДоступна ("СуперПуперАдминистратор") Тогда
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры


То же добавить и в приведенный выше код:
Процедура ОбработкаУдаленияПроведения(Отказ)
    Если Не РольДоступна ("СуперПуперАдминистратор") Тогда
        Сообщить("Відміна проведення ЗАБОРОНЕНА! Зверніться до Адміністратора!");
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры


Ответственным пользователям, которым разрешено помечать на удаление указанные объекты добавить роль "СуперПуперАдминистратор".
А вот что делать с обработкой удаления объектов с ИТС или из меню Операции - Удаление помеченных объектов - отобрать право "интерактивное удаление объектов".
l2d808
Цитата(Vladal @ 14.08.18, 13:52) необходимо зарегистрироваться для просмотра ссылки
В модуле объекта обработчик ПередУдалением()

Процедура ПередУдалением(Отказ)
    Если Не РольДоступна ("СуперПуперАдминистратор") Тогда
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры



К сожалению при попытке пометить на удаление, реакции никакой. эту процедуру при удалении 1с-ка не замечает.
sava1
Цитата(l2d808 @ 14.08.18, 14:06) необходимо зарегистрироваться для просмотра ссылки
при попытке пометить на удаление, реакции никакой


Пометка на удаление - это не удаление, а просто запись документа с доп. реквизитом IsMarked.
Анализироват надо перед записью - сравнивать объект и объектВбазе. И в случае пометки - отказываться от записи.
ed.kharkov
l2d808 @ Вчера, 14:06 необходимо зарегистрироваться для просмотра ссылки ,

В модуле объекта
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
      Если ПометкаУдаления
        И Не Ссылка.ПометкаУдаления
        И Не РольДоступна ("СуперПуперАдминистратор") Тогда
        
        Отказ = Истина;
      КонецЕсли;
КонецПроцедуры
muslim18
ed.kharkov @ 15.08.18, 11:40 необходимо зарегистрироваться для просмотра ссылки ,
Можно ли эту процедуру создать в общем модуле и применить для всех объектов "Документы" чтоб не писать в каждом отдельно ??
Slon747
Цитата(Slon747 @ 10.05.25, 18:30) необходимо зарегистрироваться для просмотра ссылки
Можно ли эту процедуру создать в общем модуле и применить для всех объектов "Документы" чтоб не писать в каждом отдельно ??

Можно создать подписку на событие
muslim18
Slon747 @ Сегодня, 20:30 необходимо зарегистрироваться для просмотра ссылки ,
Если возможно, то опишите метод по подробнее, с примером будет лучше))))
Slon747


Вот пример из типовой конфигурации.
В данном примере перед записью любого типа документа (источник ДокументОбъект) вызывается процедура общего модуля и там можно вызвать Отказ.

Процедура ПередЗаписьюДокументаДатаЗапретаРедактированияПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
    
    Если Отказ ИЛИ Источник.ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;

    Если    ТипЗнч(Источник) = Тип("ДокументОбъект.ВыгрузкаРегламентированныхОтчетов")
        ИЛИ ТипЗнч(Источник) = Тип("ДокументОбъект.РегламентированныйОтчет") Тогда
        // для этих типов документов не проверяем.
        Возврат;
    КонецЕсли;
    
    ПроверкаПериодаДокумента(Источник, Отказ, РежимЗаписи);
    Если Отказ Тогда
        #Если Клиент Тогда
            Сообщить(НСтр("ru='Редактирование данных этого периода запрещено. Изменения не могут быть записаны...';uk='Редагування даних цього періоду заборонено. Зміни не можуть бути записані...'"), СтатусСообщения.Важное);
        #КонецЕсли
    КонецЕсли;
КонецПроцедуры // ПередЗаписьюДокументаДатаЗапретаРедактированияПередЗаписью()

muslim18
Slon747 @ Вчера, 9:58 необходимо зарегистрироваться для просмотра ссылки ,
Благодарю !!! ваш совет помог, только вот как написать метод на условие ПометкаУдаления?

в модуле объекта так работает, а как вызвать из общего модуля такой метод? (ПометкаУдаления, Ссылка)

    Если ПометкаУдаления 
        И Не Ссылка.ПометкаУдаления
        И Не РольДоступна ("ПолныеПрава") Тогда
        Сообщить("У вас не достаточно прав на удаление!");
        Отказ = Истина;
    КонецЕсли;
Slon747
muslim18 @ Сегодня, 11:25 необходимо зарегистрироваться для просмотра ссылки ,
Вот так я сделал. Проверил, работает.


Процедура ПередПометкойНаУдалениеДокумента(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
    
    Если Отказ ИЛИ Источник.ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;

    Если Источник.ПометкаУдаления И Не Источник.Ссылка.ПометкаУдаления И Не РольДоступна("ПолныеПрава") Тогда
        Сообщить("У вас не достаточно прав на удаление!");
        Отказ = Истина;
    КонецЕсли;

КонецПроцедуры
muslim18
Slon747 @ 12.05.25, 16:23 необходимо зарегистрироваться для просмотра ссылки ,
Благодарю за поддержку!! получилось реализовать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.