1с разрешить редактирование реквизитов программно

Разрешение пользователям редактировать отдельные реквизиты документа без перепроведения или просто одни реквизиты разрешать, а другие запрещать.

Разрешение пользователям редактировать отдельные реквизиты документа без перепроведения или просто одни реквизиты разрешать, а другие запрещать.

Иногда необходимо разрешить редактирование некоторых реквизитов документа без перепроведения. Например: Комментарий, АдресКонтрагента, КонтактноеЛицо. Ещё бывает необходимым разрешить изменение отдельных реквизитов в закрытых документах. Например, поставить отметку о состоянии доставки и написать комментарий.

В модуле менеджера документа пишем функцию, которая определяет массив допустимых к редактированию реквизитов

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

// Возвращает массив имён реквизитов, разрешённых для изменнения без перепроведения.

// Если получен параметр типа Массив, то имена реквизитов добавляются в него

Функция ПолучитьМассивРеквизитовИзменяемыхБезПерепроведения(МассивРеквизитовДопустимыхКИзменению = Неопределено) Экспорт

Если Не ТипЗнч(МассивРеквизитовДопустимыхКИзменению) = Тип(«Массив») Тогда

МассивРеквизитовДопустимыхКИзменению = Новый Массив;

КонецЕсли;

//Типовые реквизиты

МассивРеквизитовДопустимыхКИзменению.Добавить(«Грузополучатель»);

МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьНомер»);

МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьДата»);

МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьНомер»);

МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьВыдана»);

МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьЧерезКого»);

МассивРеквизитовДопустимыхКИзменению.Добавить(«Комментарий»);

МассивРеквизитовДопустимыхКИзменению.Добавить(«АдресДоставки»);

//Добавленные реквизиты

Возврат МассивРеквизитовДопустимыхКИзменению;

КонецФункции

В модуле ОбщегоНазначения пишем функции общие для всех документов.

// сравниваем реквизиты документа из базы данных с записываемым объектом

// имена изменённых реквизитов запихываем в массив

Функция ПолучитьСписокИзменённыхРеквизитов(ДокОбъект) Экспорт

СписокИзменённыхРеквизитов = Новый Массив;

Ссылка = ДокОбъект.Ссылка;

мдОбъекта = ДокОбъект.Метаданные();

// сравниваем стандартные реквизиты

Для Каждого Реквизит из мдОбъекта.СтандартныеРеквизиты Цикл

Если ДокОбъект[Реквизит.Имя] <> Ссылка[Реквизит.Имя] Тогда

СписокИзменённыхРеквизитов.Добавить(Реквизит.Имя);

КонецЕсли;

КонецЦикла;

В модуле документа ПредЗаписью разрешаем запись без пререпроведения в случае, если были изменены только реквизиты, не вызывающие перепроведение.

РедактированиеЗаднимЧислом = Ложь;

МассивРеквизитовДопустимыхКИзменению = Документы.РеализацияТоваровУслуг.ПолучитьМассивРеквизитовИзменяемыхБезПерепроведения();

СписокИзменённыхРеквизитов = ОбщегоНазначения.ПолучитьСписокИзменённыхРеквизитов(ЭтотОбъект);

СписокИзменённыхРеквизитовВызывающихПерепроведение = ОбщегоНазначения.МожноЗаписыватьБезПерепроведения(ЭтотОбъект, МассивРеквизитовДопустимыхКИзменению, СписокИзменённыхРеквизитов);

Если СписокИзменённыхРеквизитовВызывающихПерепроведение = «» И Проведен И СписокИзменённыхРеквизитов.Количество() > 0 Тогда

РежимЗаписи = РежимЗаписиДокумента.Запись;

ИначеЕсли НЕ РедактированиеЗаднимЧислом и Дата < НачалоДня(ТекущаяДата()) И Не РольДоступна(«ПравоАдминистрирования») Тогда

Сообщить(«Недостаточно прав для проведения реализации « + Номер + » « + Строка(Дата) +

» задним числом. Изменены реквизиты: « + СписокИзменённыхРеквизитовВызывающихПерепроведение);

Отказ = Истина;

КонецЕсли;

 

Оцените статью:

Загрузка…

Если Вы заметили ошибку, то выделите ее мышью и нажмите Ctrl+Enter

Добрый день! Есть упр. форма, на ней реквизит. Подскажите, как программно изменить свойство редактирования реквизита? (свойства реквизита -> Редактирование) Буду благодарен за помощь.

присвоить? нет, не может быть всё так просто

Ну, когда нажимаешь Редактирование -> Открыть, там есть галочка вверху Редактирование, означающая, что редактирование разрешено для всех ролей. Вот как ее программно установить?

кажется я сейчас узнаю что-то очень новое про УФ.. где нажимаешь?

На кой фиг ее требуется менять программно?

видимо, нормальным путём не удаётся

Wobland, встаешь на любой реквизит упр. формы, правой кнопкой мыши — > Свойства -> Редактирование -> Открыть.

Менять нужно программно, чтобы потом не было проблем при обновлениях (если внести изменения в типовую форму, то они затираются при обновлениях).

о чём это говорит? или должно тебе сказать

вот Серера умеет подобные фокусы делать

«о чём это говорит? или должно тебе сказать» — ни о чем не говорит. В СП нет массы полезной информации, приходится постоянно в справку заглядывать или книги.

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Создали новый вид цены в программе 1с: Управление Торговлей 11.4. Теперь его нужно изменить, но  поля неактивны и нельзя что-либо поменять.

Не редактируются реквизиты Вида Цены Ут11

Данное ограничение связано с  Подсистемой «Запрет редактирования реквизитов объектов», которая запрещает изменять некоторые реквизиты объектов, которые являются ключевыми и оказывают влияние на поведение других объектов. Данная

Если Вы  уверены, что изменение реквизитов не повлечет за собой негативных последствий и объект еще не используется, то можно разблокировать реквизиты для редактирования.

В данном случае Вид цены был только создан и нигде не используется. 

Проверяем доступна ли команда “Разрешить редактирование реквизитов “:

Разрешить редактирование реквизитов

Если Пользователи.РолиДоступны(«РедактированиеРеквизитовОбъектов»)

   И ПравоДоступа(«Редактирование», Ссылка.Метаданные())

   И НЕ ВсеРеквизитыБезПраваРедактирования Тогда

// Добавление команды

Команда = Форма.Команды.Добавить(«РазрешитьРедактированиеРеквизитовОбъекта»);

Если нет, то добавляем роль “РедактированиеРеквизитовОбъектов” и возможность редактирования данного объекта.

Появляется предупреждение о разблокировании реквизитов и необходимости проверить использование объекта. Если объект используется, то не рекомендуется разблокировать реквизиты и нужно нажать кнопку “Закрыть”.

Разблокирование реквизитов

Если же нажата кнопка “Разрешить редактирование”, то реквизиты на форме станут доступны для изменения:

Редактирование формы Виды Цен 

Внимание!!! Разблокирование реквизитов для редактирования Вы делаете на свой страх и риск.

Поделиться ссылкой:

Похожие записи

1

2

Показывать по
10
20
40
сообщений

Новая тема

Ответить

gala2009

Дата регистрации: 11.03.2009
Сообщений: 319

Например, Пользователю с ролью Пользователь1 дать право на изменение реквизита Комментарий в записанных документах Реализация товаров и услуг. Для всех остальных реквизитов право на изменение должно быть закрыто.

StarS

Дата регистрации: 15.07.2003
Сообщений: 1623

Типовыми средствами или через «замочек с конфы снять»?

gala2009

Дата регистрации: 11.03.2009
Сообщений: 319

если типовыми невозможно (что приоритетно)<br>то кодом, все равно замок снят, новая роль создана

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

Платформа 8.2 позволяет такое настроить в ролях. Реквизиты могут быть открыты на просмотр и редактирование.

gala2009

Дата регистрации: 11.03.2009
Сообщений: 319

С реквизитами пробовала, двумя способами, оба не сработали.<br>При настройке роли в Док-те РТиУ Реквизиты, а заодно и Табличные части ставлю на просмотр, реквизит Комментарий на просмотр и редактирование.<br>Но права на сам документ РТиУ перебивают все настройки прав отдельных реквизитов<br>1.Если у него галки на Чтение, Добавление, Изменение, Провендение, Просмотр, ВводПоСтроке (а у Комментария — редактирование) -<br>то в 1С не редактируеися ни одно поле, в тч и Комментарий<br> <br>2. Если в документе добавляем галку Редактирование, интер.измен,инт.пров, инт,отмена(а у всех реквизитов (кроме Комментария) просмотр), то в 1С редактируются все рквизиты, и кол-во и пр

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

А для варианта №1 после снятия общего редактирования выставляли редактирование по-реквизитно?

Тимур15rus

Дата регистрации: 08.11.2008
Сообщений: 613

Ну когда все научатся сначала писать хотя бы версию платформы, о конфигурации уже не говорю.

gala2009

Дата регистрации: 11.03.2009
Сообщений: 319

платформа 8.2.13.219<br>релиз БП 2.0.29.10

gala2009

Дата регистрации: 11.03.2009
Сообщений: 319

> выставляли редактирование по-реквизитно?<br>да, все ревизиты после настройки прав документа только на просмотр (а точнее поставлены первые 7 галок)- стали тоже все на просмотр,<br>а в Комментарий захожу и добавляю еще Редактирование — в итоге он не редактируется, как и все остальные<br> <br>вообще заметила, что редактирование уже записанных и проведенных документов возможно только при галках на правах документа -Интерактивное изменение и Интерактивное проведение, то есть пробуем плясать от этого, и ограничивать только посмотром реквизиты и табличные части- оп! — правится все!

gala2009

Дата регистрации: 11.03.2009
Сообщений: 319

Да, хочу сказать, что экспериментировала с ролью Бухгалтер,<br>сейчас попробую на ПолныхПравах

Страница 1 из 2

  1. Добрый день!
    Скажите пожалуйста как можно дать доступ пользователю изменить определенному реквизиту справочника?
    Спасибо!


  2. ТехБухПривет

    Offline

    ТехБухПривет
    Профессионал в 1С
    Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    825
    Симпатии:
    89
    Баллы:
    54

    Правильно ли я понял менять Определённый реквизит у справочника, но остальное трогать право не имеет?
    Если так, то надо создавать отдельную роль(скопировать уже существующую для данного пользователя) и там прописывать данные ограничения.
    Но учтите база станет не типовой и придётся переносить при каждом обновлении + вносить изменение вводимые в типовую роль.
    Сначала задайтесь вопросом вы к этому готовы?

  3. Да правильно!
    Но конфиг рукописная


  4. ТехБухПривет

    Offline

    ТехБухПривет
    Профессионал в 1С
    Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    825
    Симпатии:
    89
    Баллы:
    54

    ну если рукописная, то не вижу проблем)) выбираете необходимую роль F9 и препарируете правила доступа к необходимому справочнику со всем вниманием и усердием, а потом уже назначаете нужному пользователю(не путать роли в метаданных и роли назначаемые в администрировании пользователям — если разницу не видите — лучше не трогать)

  5. так?
    upload_2014-10-22_11-26-59.png


  6. ТехБухПривет

    Offline

    ТехБухПривет
    Профессионал в 1С
    Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    825
    Симпатии:
    89
    Баллы:
    54

    Да только надеюсь это скопированная роль и переименованная иначе у всех пользователей у кого назначена данная роль будет применено данное правило… Ну и надеюсь правило про архивную копию вы соблюдаете ;)

  7. работает спасибо!
    а насчет «архивную копию» какой архив нужен?

    — Объединение сообщений, 22 окт 2014

    и еще как дать доступ смог создать и записать но после сохранение не смог изменить только наименование?

    Последнее редактирование: 22 окт 2014

  8. ТехБухПривет

    Offline

    ТехБухПривет
    Профессионал в 1С
    Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    825
    Симпатии:
    89
    Баллы:
    54

    всегда пожалуйста(плюсик лучшая награда;))
    Знаете старый добрый боян: Администраторы БД делятся на две категории: те кто ещё не делает копию и кто теперь делает копию…)))

  9. Скажите пожалуйста как дать доступ смог создать и записать но после сохранение не смог изменить только наименование?


  10. ТехБухПривет

    Offline

    ТехБухПривет
    Профессионал в 1С
    Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    825
    Симпатии:
    89
    Баллы:
    54

    хм)) какой вопрос такой ответ: Редактирование…

  11. как уберу галку с Редактирование то пользователь при создание не может Редактировать! Как быть?
    upload_2014-10-22_14-40-37.png

    upload_2014-10-22_14-42-18.png


  12. Tiger86

    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    программно прописать, что если роль такая то и элемент записан, то запрет на редактирование )))

  13. пример покажите пожалуйста


  14. alexburn

    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Вот вам пример на коленке:

    Если РольДоступна("ВашаРоль") И ЭтотОбъект.Записан() Тогда
    НужныйЭлемент.Доступность = ЛОЖЬ;
    КонецЕсли;
  15. В реквизите Наименование недоступен Ограничение прав доступа на Редактирование,
    где нужно записать этот код?


  16. Tiger86

    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    ну можно приоткрытии формы элемента сразу определиться с доступностью полей


  17. ТехБухПривет

    Offline

    ТехБухПривет
    Профессионал в 1С
    Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    825
    Симпатии:
    89
    Баллы:
    54

    Предвидя вопрос отвечаю)):

    screenshot.2014-10-23.jpg

    Появится код формы при открытии — сделаете проверку

  18. вот код

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
       
    Если РольДоступна("Роль1") И ЭтотОбъект.Записан() Тогда
    НужныйЭлемент.Доступность = ЛОЖЬ;
    КонецЕсли;
       
    КонецПроцедуры
    

    проверил и ошибки

    {Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(5,30)}: Переменная не определена (ЭтотОбъект)
    Если РольДоступна("Роль1") И <<?>>ЭтотОбъект.Записан() Тогда (Проверка: Тонкий клиент)
    {Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(6,1)}: Переменная не определена (НужныйЭлемент)
    <<?>>НужныйЭлемент.Доступность = ЛОЖЬ; (Проверка: Тонкий клиент)
    {Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(5,6)}: Процедура или функция с указанным именем не определена (РольДоступна)
    Если <<?>>РольДоступна("Роль1") И ЭтотОбъект.Записан() Тогда (Проверка: Тонкий клиент)
    

  19. Tiger86

    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    ЭтотОбъект вроде для толстого клиента? для УФ наверное просто ОБъект

    — Объединение сообщений, 24 окт 2014

    ну и чтож вы как маленький, реквизиты то свои надо подпихивать.. вам же код для примера дали — адаптируйте под свои названия и нужды

Страница 1 из 2


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

 0 

   

Распечатать

1С 8.x : Как включить режим редактирования записей в списке?

В 8.1 для многих объектов (справочники, регистры сведений и т.п.) в свойствах можно было настроить способ редактирования записей/элементов: в диалоге или в списке или обоими способами

В 8.2 эту возможность убрали из целей производительности, Максим Радченко пишет в своей книге:

В версии 8.2 не поддерживается режим редактирования ссылочных данных информационной базы в списке. Данные можно редактировать только в форме.

При работе в режиме управляемого приложения свойство объекта конфигурации Способ редактирования игнорируется, и данные редактируются всегда в отдельной форме.

Это относится ко всем таблицам, источником данных которых является динамический список.

Если же таблица имеет другой источник данных (табличная часть, дерево значений и т.д.), то ее данные редактируются непосредственно в списке

В обычных формах, программно можно установить режим редактирования в списке

Код 1C v 8.х

 ЭлементыФормы.СписокДоговорыПайщиков.СпособРедактирования = СпособРедактированияСписка.ВСписке;

// или

ЭлементыФормы.ДанныеФизЛиц.СпособРедактирования = СпособРедактированияСписка.ВСписке;

Для Регистра Сведений или Справочника — открыть палитру Свойства — закладка — представление — установить способ редактирования В Списке

Понравилась статья? Поделить с друзьями:
  • 1с реквизит табличной части в динамический список
  • 1с сообщение пользователю с указанием на реквизит
  • 1с стандартные реквизиты справочника в расширение
  • 1с управляемая форма реквизит использовать всегда
  • 1с управляемые формы получить реквизит на клиенте