Хочу запретить в правах изменение документов.
Каждый менеджер создает свои документы по закупкам и по реализации. У каждого в правах стоит:
- Менеджер по закупкам,
- Менеджер по продажам,
- Пользователь.
Менеджеров три Вова, Петя, Дима.
И один администратор: Женя.
Создал менеджер Вова РТиУ, провел его, и все хорошо. Но есть злой менеджер Дима, который зашел в этот документ чтото там изменил, и перепровел его.
Вот я и хочу запретить другим менегерам ковырятся в документах своих собратьев.
Надо чтобы они могли зайти в чужие документы, но не могли их изменить.
И также надло чтобы менеджер создав документ, мог его потом открыть отредоктировать и отменить его проведение, НО не мог его перепровести!
- Менеджер по закупкам,
- Менеджер по продажам,
- Пользователь.
Менеджеров три Вова, Петя, Дима.
И один администратор: Женя.
Создал менеджер Вова РТиУ, провел его, и все хорошо. Но есть злой менеджер Дима, который зашел в этот документ чтото там изменил, и перепровел его.
Вот я и хочу запретить другим менегерам ковырятся в документах своих собратьев.
Надо чтобы они могли зайти в чужие документы, но не могли их изменить.
И также надло чтобы менеджер создав документ, мог его потом открыть отредоктировать и отменить его проведение, НО не мог его перепровести!
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Поменяй начало процедуры "ПриОткрытии" в документе "Реализация"
Процедура ПриОткрытии()
ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);
Если ЭтоНовый() Тогда
ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект, глЗначениеПеременной("глТекущийПользователь"), мВалютаРегламентированногоУчета, "Продажа", ПараметрОбъектКопирования, ПараметрОснование);
Если ЗначениеЗаполнено(ДоговорКонтрагента)
И ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером Тогда
ОтражатьВНалоговомУчете = Ложь;
КонецЕсли;
Иначе
// начало изменения
Если Не РольДоступна(Метаданные.Роли.ПолныеПрава) Тогда
Если глЗначениеПеременной("глТекущийПользователь") <> Ответственный Тогда
ЭтаФорма.ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
// конец изменения
НастройкаПравДоступа.ОпределитьДоступностьВозможностьИзмененияДокументаПоДатеЗапрета(ДокументОбъект, ЭтаФорма);
КонецЕсли;
Процедура ПриОткрытии()
ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);
Если ЭтоНовый() Тогда
ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект, глЗначениеПеременной("глТекущийПользователь"), мВалютаРегламентированногоУчета, "Продажа", ПараметрОбъектКопирования, ПараметрОснование);
Если ЗначениеЗаполнено(ДоговорКонтрагента)
И ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером Тогда
ОтражатьВНалоговомУчете = Ложь;
КонецЕсли;
Иначе
// начало изменения
Если Не РольДоступна(Метаданные.Роли.ПолныеПрава) Тогда
Если глЗначениеПеременной("глТекущийПользователь") <> Ответственный Тогда
ЭтаФорма.ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
// конец изменения
НастройкаПравДоступа.ОпределитьДоступностьВозможностьИзмененияДокументаПоДатеЗапр
КонецЕсли;
На всякий случай полный текст процедуры
Процедура ПриОткрытии()
ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);
Если ЭтоНовый() Тогда
ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект, глЗначениеПеременной("глТекущийПользователь"), мВалютаРегламентированногоУчета, "Продажа", ПараметрОбъектКопирования, ПараметрОснование);
Если ЗначениеЗаполнено(ДоговорКонтрагента)
И ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером Тогда
ОтражатьВНалоговомУчете = Ложь;
КонецЕсли;
Иначе
Если Не РольДоступна(Метаданные.Роли.ПолныеПрава) Тогда
Если глЗначениеПеременной("глТекущийПользователь") <> Ответственный Тогда
ЭтаФорма.ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
НастройкаПравДоступа.ОпределитьДоступностьВозможностьИзмененияДокументаПоДатеЗапрета(ДокументОбъект, ЭтаФорма);
КонецЕсли;
МеханизмНумерацииОбъектов.УстановитьДоступностьПоляВводаНомера(Метаданные(), ЭтаФорма, ЭлементыФормы.ДействияФормы.Кнопки.Подменю1,ЭлементыФормы.Номер);
РаботаСДиалогами.УправлениеПризнакомОтраженияВРеглУчете(ЭтотОбъект, ЭтаФорма,,,мОтражатьВРегламентированномУчете);
РаботаСДиалогами.ПроверитьВидПоступленияПередачи(ЭтотОбъект, ЭтаФорма);
СтруктураКолонок = Новый Структура();
// Установить колонки, видимостью которых пользователь управлять не может.
СтруктураКолонок.Вставить("Номенклатура");
СтруктураКолонок.Вставить("Количество");
СтруктураКолонок.Вставить("Цена");
СтруктураКолонок.Вставить("Сумма");
СтруктураКолонок.Вставить("СпособСписанияОстаткаТоваров");
// Установить ограничение - изменять видимоть колонок для таличной части
// "Возвратная тара".
ОбработкаТабличныхЧастей.УстановитьИзменятьВидимостьКолонокТабЧасти(мКолонкиВозвратнаяТара, СтруктураКолонок);
// Установить колонки, видимостью которых пользователь управлять не может.
СтруктураКолонок.Вставить("СтавкаНДС");
СтруктураКолонок.Вставить("СуммаНДС");
СтруктураКолонок.Вставить("ЕдиницаИзмерения");
СтруктураКолонок.Вставить("Качество");
ОбработкаТабличныхЧастей.УстановитьИзменятьВидимостьКолонокТабЧасти(мКолонкиТовары, СтруктураКолонок);
// Заполняем подменю, вызываемое нажатием кнопки "Операция" командной панели
// формы, значениями перечисления "Вид операции" данного вида документа.
// В качестве обработки выбора вида операции назначается процедура
// ДействияФормыДействиеУстановитьОперацию модуля формы.
РаботаСДиалогами.УстановитьПодменюВыбораВидаОперации(ЭлементыФормы.ДействияФормы.Кнопки.ПодменюВидаОперации,
ВидОперации.Метаданные().ЗначенияПеречисления,
Новый Действие("ДействияФормыДействиеУстановитьОперацию"));
// Установить печатную форму по умолчанию.
РаботаСДиалогами.УстановитьКнопкуПечати(ЭтотОбъект, ЭтаФорма);
// Вывести в заголовке формы вид операции.
РаботаСДиалогами.УстановитьЗаголовокФормыДокумента(Строка(ВидОперации), ЭтотОбъект, ЭтаФорма);
// Обновить содержание информационных строк.
РаботаСДиалогами.СформироватьНадписьДолга(ДоговорКонтрагента, Сделка, ЭлементыФормы.ИнфНадписьДолга, Ссылка, Истина);
УстановитьЗаголовкиПоДоговору();
// Запомнить текущие значения реквизитов формы.
мТекущаяДатаДокумента = Дата;
мТекущаяВалютаВзаиморасчетов = ДоговорКонтрагента.ВалютаВзаиморасчетов;
ПриИзмененииОблагаетсяЕНВД();
// Установить видимость колонок "ХарактеристикаНоменклатуры" и "СерияНоменклатуры"
РаботаСДиалогами.УстановитьВидимостьХарактеристикиНоменклатуры(мКолонкиТовары);
РаботаСДиалогами.УстановитьВидимостьХарактеристикиНоменклатуры(мКолонкиТаблицаАвтоСкидок);
РаботаСДиалогами.УстановитьВидимостьСерииНоменклатуры(мКолонкиТовары);
// Установить видимость закладки "Возвратная тара"
РаботаСДиалогами.УстановитьВидимостьЗакладкиВозвратнаяТара(ЭтаФорма);
РаботаСДиалогами.УстановитьВидимостьОбязательностьСклада(мКолонкиТовары, мКолонкиВозвратнаяТара, ЭлементыФормы.Склад, "Склад", мУказаниеСкладовВТЧ);
//Запомним автоотметку поля шапки Склад
мАвтоОтметкаСклада = ЭлементыФормы.Склад.АвтоОтметкаНезаполненного;
мПоДокументамРасчетов = ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом;
РаботаСДиалогами.УстановитьВидимостьКолонкиЗаказ(ЭлементыФормы, ВидОперации, ДоговорКонтрагента, мКолонкиТовары, мКолонкиВозвратнаяТара, мКолонкиУслуги, мКолонкиДокументы, ЭлементыФормы.Сделка);
// Установить видимость реквизитов и заголовков колонок.
УстановитьВидимость();
УстановитьВидимостьКонтроляВзаиморасчетов();
ЗаполнитьТекстПроСчетФактуру();
УстановитьАвтоотметкуСклада();
ЭлементыФормы.ОсновнаяПанель.Страницы.Услуги.Видимость = (ДоговорКонтрагента.ВидДоговора <> Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером);
ПриИзмененииВидаСклада();
// установим доступность колонки "Цена" для редактирования
мМожноМенятьЦенуВДокументе = УправлениеДопПравамиПользователей.РазрешитьРедактированиеЦенВДокументах();
мКолонкиТовары.Цена.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиТовары.Сумма.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиТовары.ПроцентСкидкиНаценки.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиТовары.СуммаНДС.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиВозвратнаяТара.Цена.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиВозвратнаяТара.Сумма.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиУслуги.Цена.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиУслуги.ПроцентСкидкиНаценки.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиУслуги.Сумма.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиУслуги.СуммаНДС.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
// Установка текущей страницы
Страницы = Новый СписокЗначений;
Страницы.Добавить("Товары", "Товары");
Страницы.Добавить("Тара", "ВозвратнаяТара");
Страницы.Добавить("Услуги", "Услуги");
Страницы.Добавить("ДокументыРасчетовСКонтрагентом", "ДокументыРасчетовСКонтрагентом");
РаботаСДиалогами.УстановкаТекущейСтраницы(ЭтотОбъект, ЭлементыФормы.ОсновнаяПанель, Страницы,);
// Установить активный реквизит.
РаботаСДиалогами.АктивизироватьРеквизитВФорме(ЭтотОбъект, ЭтаФорма);
мСклад = Склад;
// Сохраним текущее значение сделки
мСтароеЗначениеСделки = Сделка;
мСтароеЗначениеСклада = Склад;
РаботаСДиалогами.УстановитьДоступностьКнопкиЗаполнитьИзТерминалаСбораДанных(ЭтаФорма, мТерминалы);
РаботаСДиалогами.УстановитьДоступностьМенюПроверить(ЭтаФорма);
РаботаСДиалогами.УстановитьДоступностьКнопкиСерийныеНомера(ЭлементыФормы.КоманднаяПанельТовары.Кнопки);
ЭтаФорма.ПодключитьОбработчикИзмененияДанных("ВидПередачи" , "ОбработчикИзмененияДанных");
ЭтаФорма.ПодключитьОбработчикИзмененияДанных("ОтражатьВУправленческомУчете", "ОбработчикИзмененияДанных");
КонецПроцедуры // ПриОткрытии()
Процедура ПриОткрытии()
ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);
Если ЭтоНовый() Тогда
ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект, глЗначениеПеременной("глТекущийПользователь"), мВалютаРегламентированногоУчета, "Продажа", ПараметрОбъектКопирования, ПараметрОснование);
Если ЗначениеЗаполнено(ДоговорКонтрагента)
И ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером Тогда
ОтражатьВНалоговомУчете = Ложь;
КонецЕсли;
Иначе
Если Не РольДоступна(Метаданные.Роли.ПолныеПрава) Тогда
Если глЗначениеПеременной("глТекущийПользователь") <> Ответственный Тогда
ЭтаФорма.ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
НастройкаПравДоступа.ОпределитьДоступностьВозможностьИзмененияДокументаПоДатеЗапр
КонецЕсли;
МеханизмНумерацииОбъектов.УстановитьДоступностьПоляВводаНомера(Метаданные(), ЭтаФорма, ЭлементыФормы.ДействияФормы.Кнопки.Подменю1,ЭлементыФормы.Номер);
РаботаСДиалогами.УправлениеПризнакомОтраженияВРеглУчете(ЭтотОбъект, ЭтаФорма,,,мОтражатьВРегламентированномУчете);
РаботаСДиалогами.ПроверитьВидПоступленияПередачи(ЭтотОбъект, ЭтаФорма);
СтруктураКолонок = Новый Структура();
// Установить колонки, видимостью которых пользователь управлять не может.
СтруктураКолонок.Вставить("Номенклатура");
СтруктураКолонок.Вставить("Количество");
СтруктураКолонок.Вставить("Цена");
СтруктураКолонок.Вставить("Сумма");
СтруктураКолонок.Вставить("СпособСписанияОстаткаТоваров");
// Установить ограничение - изменять видимоть колонок для таличной части
// "Возвратная тара".
ОбработкаТабличныхЧастей.УстановитьИзменятьВидимостьКолонокТабЧасти(мКолонкиВозвратнаяТара, СтруктураКолонок);
// Установить колонки, видимостью которых пользователь управлять не может.
СтруктураКолонок.Вставить("СтавкаНДС");
СтруктураКолонок.Вставить("СуммаНДС");
СтруктураКолонок.Вставить("ЕдиницаИзмерения");
СтруктураКолонок.Вставить("Качество");
ОбработкаТабличныхЧастей.УстановитьИзменятьВидимостьКолонокТабЧасти(мКолонкиТовары, СтруктураКолонок);
// Заполняем подменю, вызываемое нажатием кнопки "Операция" командной панели
// формы, значениями перечисления "Вид операции" данного вида документа.
// В качестве обработки выбора вида операции назначается процедура
// ДействияФормыДействиеУстановитьОперацию модуля формы.
РаботаСДиалогами.УстановитьПодменюВыбораВидаОперации(ЭлементыФормы.ДействияФормы.Кнопки.ПодменюВидаОперации,
ВидОперации.Метаданные().ЗначенияПеречисления,
Новый Действие("ДействияФормыДействиеУстановитьОперацию"));
// Установить печатную форму по умолчанию.
РаботаСДиалогами.УстановитьКнопкуПечати(ЭтотОбъект, ЭтаФорма);
// Вывести в заголовке формы вид операции.
РаботаСДиалогами.УстановитьЗаголовокФормыДокумента(Строка(ВидОперации), ЭтотОбъект, ЭтаФорма);
// Обновить содержание информационных строк.
РаботаСДиалогами.СформироватьНадписьДолга(ДоговорКонтрагента, Сделка, ЭлементыФормы.ИнфНадписьДолга, Ссылка, Истина);
УстановитьЗаголовкиПоДоговору();
// Запомнить текущие значения реквизитов формы.
мТекущаяДатаДокумента = Дата;
мТекущаяВалютаВзаиморасчетов = ДоговорКонтрагента.ВалютаВзаиморасчетов;
ПриИзмененииОблагаетсяЕНВД();
// Установить видимость колонок "ХарактеристикаНоменклатуры" и "СерияНоменклатуры"
РаботаСДиалогами.УстановитьВидимостьХарактеристикиНоменклатуры(мКолонкиТовары);
РаботаСДиалогами.УстановитьВидимостьХарактеристикиНоменклатуры(мКолонкиТаблицаАвтоСкидок);
РаботаСДиалогами.УстановитьВидимостьСерииНоменклатуры(мКолонкиТовары);
// Установить видимость закладки "Возвратная тара"
РаботаСДиалогами.УстановитьВидимостьЗакладкиВозвратнаяТара(ЭтаФорма);
РаботаСДиалогами.УстановитьВидимостьОбязательностьСклада(мКолонкиТовары, мКолонкиВозвратнаяТара, ЭлементыФормы.Склад, "Склад", мУказаниеСкладовВТЧ);
//Запомним автоотметку поля шапки Склад
мАвтоОтметкаСклада = ЭлементыФормы.Склад.АвтоОтметкаНезаполненного;
мПоДокументамРасчетов = ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом;
РаботаСДиалогами.УстановитьВидимостьКолонкиЗаказ(ЭлементыФормы, ВидОперации, ДоговорКонтрагента, мКолонкиТовары, мКолонкиВозвратнаяТара, мКолонкиУслуги, мКолонкиДокументы, ЭлементыФормы.Сделка);
// Установить видимость реквизитов и заголовков колонок.
УстановитьВидимость();
УстановитьВидимостьКонтроляВзаиморасчетов();
ЗаполнитьТекстПроСчетФактуру();
УстановитьАвтоотметкуСклада();
ЭлементыФормы.ОсновнаяПанель.Страницы.Услуги.Видимость = (ДоговорКонтрагента.ВидДоговора <> Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером);
ПриИзмененииВидаСклада();
// установим доступность колонки "Цена" для редактирования
мМожноМенятьЦенуВДокументе = УправлениеДопПравамиПользователей.РазрешитьРедактированиеЦенВДокументах();
мКолонкиТовары.Цена.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиТовары.Сумма.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиТовары.ПроцентСкидкиНаценки.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиТовары.СуммаНДС.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиВозвратнаяТара.Цена.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиВозвратнаяТара.Сумма.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиУслуги.Цена.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиУслуги.ПроцентСкидкиНаценки.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиУслуги.Сумма.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
мКолонкиУслуги.СуммаНДС.ЭлементУправления.ТолькоПросмотр = НЕ мМожноМенятьЦенуВДокументе;
// Установка текущей страницы
Страницы = Новый СписокЗначений;
Страницы.Добавить("Товары", "Товары");
Страницы.Добавить("Тара", "ВозвратнаяТара");
Страницы.Добавить("Услуги", "Услуги");
Страницы.Добавить("ДокументыРасчетовСКонтрагентом", "ДокументыРасчетовСКонтрагентом");
РаботаСДиалогами.УстановкаТекущейСтраницы(ЭтотОбъект, ЭлементыФормы.ОсновнаяПанель, Страницы,);
// Установить активный реквизит.
РаботаСДиалогами.АктивизироватьРеквизитВФорме(ЭтотОбъект, ЭтаФорма);
мСклад = Склад;
// Сохраним текущее значение сделки
мСтароеЗначениеСделки = Сделка;
мСтароеЗначениеСклада = Склад;
РаботаСДиалогами.УстановитьДоступностьКнопкиЗаполнитьИзТерминалаСбораДанных(ЭтаФорма, мТерминалы);
РаботаСДиалогами.УстановитьДоступностьМенюПроверить(ЭтаФорма);
РаботаСДиалогами.УстановитьДоступностьКнопкиСерийныеНомера(ЭлементыФормы.КоманднаяПанельТовары.Кнопки);
ЭтаФорма.ПодключитьОбработчикИзмененияДанных("ВидПередачи" , "ОбработчикИзмененияДанных");
ЭтаФорма.ПодключитьОбработчикИзмененияДанных("ОтражатьВУправленческомУчете", "ОбработчикИзмененияДанных");
КонецПроцедуры // ПриОткрытии()
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот