8.х запрет на изменение

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

  1. TopicStarter Overlay
    Vovan27
    Offline

    Vovan27

    Регистрация:
    17 июл 2008
    Сообщения:
    45
    Симпатии:
    0
    Баллы:
    1
    Подскажите как сделать так чтобы после записи документа, нельзя было изменять данные кроме незаполненных ? Если можно то с примерами, мне легче будет понять.
    Зарание Пасиба.
  2. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Имхо: в данном варианте - только переписывая модули формы, чтобы блокировать заполненные элементы.
  3. TopicStarter Overlay
    Vovan27
    Offline

    Vovan27

    Регистрация:
    17 июл 2008
    Сообщения:
    45
    Симпатии:
    0
    Баллы:
    1
    Это новый документ, только создается,
    подскажи как сделать, а я уже буду пробовать
  4. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Ну, проще всего для начинающих работать со статичными конструкциями.
    В форме пишем нечто такое:
    Код:
    Процедура ПриОткрытии()
    Если (НЕ ЭтоНовый() ) И (НЕ РольДоступна("ПолныеПрава")) Тогда // ага, это открыли уже записанный документ, и не доступна роль "ПолныеПрава" - это не одмин
    // блокируем не заполненные реквизиты
    Если НЕ ЗначениеНеЗаполнено(Контрагент) Тогда // для 8.1. это будет Если ЗначениеЗаполнено(Контрагент) Тогда
    ЭлементыФормы.Контрагент.Доступность = Ложь; // блокировка доступности реквизита
    КонецЕсли;
    Если НЕ ЗначениеНеЗаполнено(Организация) Тогда
    ЭлементыФормы.Организация.Доступность = Ложь;
    КонецЕсли;
    // и так далее для каждого элемента и реквизита
    
    КонецЕсли;
    КонецПроцедуры
    
    Разумеется, что тоже самое можно сделать менее "топорно" работая через метаданные и индексирование, но начинающим как правило легче понять более громоздкий код.
  5. TopicStarter Overlay
    Vovan27
    Offline

    Vovan27

    Регистрация:
    17 июл 2008
    Сообщения:
    45
    Симпатии:
    0
    Баллы:
    1
    Пасиб попробую так, правда я роли уже распределил, админ может все, диспетчер заполняет документ кроме определенных колонок, а заправщик заполняет те колонки которые неимеет право диспетчер
  6. TopicStarter Overlay
    Vovan27
    Offline

    Vovan27

    Регистрация:
    17 июл 2008
    Сообщения:
    45
    Симпатии:
    0
    Баллы:
    1
    с шапкой это работает отлично, а как быть с табличной частью? подскажеш?
  7. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    При открытии формы вставь:
    Код:
    Если НЕ ЭтоНовый() Тогда
    ЭтаФорма.ТолькоПросмотр = Истина;
    КонецЕсли;
    
  8. TopicStarter Overlay
    Vovan27
    Offline

    Vovan27

    Регистрация:
    17 июл 2008
    Сообщения:
    45
    Симпатии:
    0
    Баллы:
    1
    Ну и что? на сколько я понимаю этим он мне весь документ сделает для просмотра, а мне то нужно пустые клеточки заполнять и при этом чтоб немог изменить (нечаянно или специально) уже заполненные.
  9. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    С табличной частью все значительно сложнее - все сильно зависит от того, как именно ты хочешь ее заблокировать.
  10. TopicStarter Overlay
    Vovan27
    Offline

    Vovan27

    Регистрация:
    17 июл 2008
    Сообщения:
    45
    Симпатии:
    0
    Баллы:
    1
    ну так же как и шапку, т.е. как тока записал документ то все что заполнено изменять нельзя, а все оставшиеся пустые клеточки можно заполнять дальше
  11. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    В решение данной задачи тебе помогут предопределенные процедуры ТЧ. В частности ПередНачаломИзменения(Элемент, Отказ).

    Вот пример применения:
    Код:
        Если (ЭлементыФормы.График.ТекущаяКолонка.Имя <> "ФизЛицо") Или (ЭлементыФормы.График.ТекущаяКолонка.Имя <> "Должность") Тогда
    Отказ = Истина;    
    КонецЕсли; 
    
    
    Обрати внимание так же на то, что пользователь может добавлять, удалять строки. ПередНачаломДобавления(Элемент, Отказ, Копирование)
    Т.е. тут нужно разбираться, что - именно можно и что нельзя, и делать алгоритм.
  12. TopicStarter Overlay
    Vovan27
    Offline

    Vovan27

    Регистрация:
    17 июл 2008
    Сообщения:
    45
    Симпатии:
    0
    Баллы:
    1
    да ты вопрос задал хороший, мне действительно нужно еще чтоб после записи документа нельзя было строки добовлять.
    вот как у меня получилось для таб части:
    Код:
    Процедура НоменклатураПередНачаломИзменения(Элемент, Отказ)
    Если РольДоступна("Администратор") Тогда 
    Отказ = ложь;
    ИначеЕсли Элемент.ТекущаяКолонка.Данные = "Заправщик" тогда
    Отказ =  ложь;
    ИначеЕсли ЗначениеНеЗаполнено(Элемент.ТекущаяСтрока[Элемент.ТекущаяКолонка.Данные]) тогда
    Отказ = ложь;
    Иначе Отказ = Истина;
    КонецЕсли;
    КонецПроцедуры
    
    
    а как еще добавить чтоб новые строки нельзя было добовлять?
  13. TopicStarter Overlay
    Vovan27
    Offline

    Vovan27

    Регистрация:
    17 июл 2008
    Сообщения:
    45
    Симпатии:
    0
    Баллы:
    1
    да ты вопрос задал хороший, мне действительно нужно еще чтоб после записи документа нельзя было строки добовлять и удолять.
    вот как у меня получилось для таб части:
    Код:
    Процедура НоменклатураПередНачаломИзменения(Элемент, Отказ)
    Если РольДоступна("Администратор") Тогда 
    Отказ = ложь;
    ИначеЕсли Элемент.ТекущаяКолонка.Данные = "Заправщик" тогда
    Отказ =  ложь;
    ИначеЕсли ЗначениеНеЗаполнено(Элемент.ТекущаяСтрока[Элемент.ТекущаяКолонка.Данные]) тогда
    Отказ = ложь;
    Иначе Отказ = Истина;
    КонецЕсли;
    КонецПроцедуры
    
    
    а как еще добавить чтоб новые строки нельзя было добовлять?
  14. TopicStarter Overlay
    Vovan27
    Offline

    Vovan27

    Регистрация:
    17 июл 2008
    Сообщения:
    45
    Симпатии:
    0
    Баллы:
    1
    Все спасибо всем, разобрался

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