|
Как обойти РольДоступна() при програмной записи РС? ndrv, kir-g, Kigo_Kigo, КонецЕсли, Garykom, maxab72, Prog_man, arsik, Somebody, Hawk_1c, rozer76, _Batoo, 1сПупс, Fish, JohnGilbert, Михаил_, Lama12, Zapal, Кулибин, ALCAPONA, Gun47, dergreche, Fragster, Жеглофф, Злопчинский, глазковыколупыватель, ivanov-i-i, DmitryKSL, Redaktor, d18, nick86, YFedor, Ненавижу 1С, Гипервизор, DemonShinji2, рокот, Logovazz, lexushka, Мультук, Михаил Козлов, Homer, skafandr, RomaH, CepeLLlka, orakool, Silgis, 2S, Timon1405, paramedic, abfm, Климов Сергей, maxar, viraboy, sikuda, takefive, KJlag, Dirk Diggler, okmail, IVT_2009, Vstur, ZloyBrawler, Fedor-1971, vis, ildary, zenik, Metman, craxx, Ychenik1c, mr_K, SleepyHead
| ☑ | ||
|---|---|---|---|---|
|
0
1сПупс
24.09.26
✎
07:19
|
Коллеги, доброго утра.
В внешней обработке (подключена как БСП) делаю записи в РегСвед. Запрос = Новый Запрос; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл НоваяЗаписьРС = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи(); НоваяЗаписьРС.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура; НовыйШтрихкод = РегистрыСведений.ШтрихкодыНоменклатуры.СформироватьШтрихкодEAN13(); НоваяЗаписьРС.Штрихкод = НовыйШтрихкод; НоваяЗаписьРС.Записать(); КонецЦикла Данную обработку будет использовать персонал. В Модуле набора записей данного регистра_ Заказчик в расширении жестко обрезал запись РегСвед если роль не ПолныеПрава. "Мол, специально отрубили чтобы не создавали": &Перед("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, Замещение)
Если не РольДоступна("ПолныеПрава") Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Можно ли сделать так, что если я вызываю запись из конкретной обработки контроль прав не выполнялся? |
|||
|
1
arsik
гуру
24.09.26
✎
07:25
|
Передавать флаг через ДополнительныеСвойства набора записей
|
|||
|
2
1сПупс
24.09.26
✎
07:35
|
(1) думал об этом, но как его заполнить на стороне внешней обработки?
|
|||
|
3
arsik
гуру
24.09.26
✎
07:41
|
(2) Через какой объект ты записываешь во внешней обработке? Или там у тебя не программная запись?
|
|||
|
4
1сПупс
24.09.26
✎
07:47
|
Переписал так расширение, но тут получается что при любой программной записи не будет контроля на права. А нужно только из моей обработки:
&Перед("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, Замещение)
Если Не ДополнительныеСвойства.Свойство("ИнтерактивнаяЗапись") Тогда
Возврат;
КонецЕсли;
Если не РольДоступна("ПолныеПрава") Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
&После("ОбработкаПроверкиЗаполнения")
Процедура Расш1_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
ДополнительныеСвойства.Вставить("ИнтерактивнаяЗапись");
КонецПроцедуры
|
|||
|
5
Мультук
гуру
24.09.26
✎
07:46
|
(2)
1) google: 1с регистрсведений наборзаписей ДополнительныеСвойства Ответ:
НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Период.Установить(ТекущаяДата());
// Заполняем набор записей...
// Передаем произвольный параметр через ДополнительныеСвойства
НаборЗаписей.ДополнительныеСвойства.Вставить("ИгнорироватьПроверку", Истина);
НаборЗаписей.Записать();
Там же пример кода для Процедура Расш1_ПередЗаписью(Отказ, Замещение) 2) Это для СоздатьНаборЗаписей, а можно так сделать для СоздатьМенеджерЗаписи ? Нет, нельзя. |
|||
|
6
arsik
гуру
24.09.26
✎
07:45
|
(4) 🤦
|
|||
|
7
1сПупс
24.09.26
✎
07:46
|
(3) юзер нажимает кнопку, формируются записи, серверный код привел в первом посте.
|
|||
|
8
arsik
гуру
24.09.26
✎
07:47
|
(7) 🤦🤦
|
|||
|
9
1сПупс
24.09.26
✎
07:52
|
(5) Благодарю! походу придется создавать записи через НаборЗаписей, а не МенеджерЗаписи...
|
|||
|
10
Lama12
24.09.26
✎
07:52
|
А все боятся что ИИ заменит программистов. Ну, ну...
|
|||
|
11
Garykom
гуру
24.09.26
✎
07:55
|
Переписать расширение с добавлением специальной роли на этот РС кроме ПолныеПрава
Пользователям выдавать эту роль |
|||
|
12
Мультук
гуру
24.09.26
✎
08:03
|
(11)
Тогда будет еще 20 страниц обсуждения, чтобы такие пользователи могли программно менять регистр, а интерактивно - нет |
|||
|
13
ZloyBrawler
24.09.26
✎
08:19
|
(12) это классика)) Давайте наделаем искусственных ограничений, а потом героически будем их обходить. У нас таким же способом ТЗ пишутся...
|
|||
|
14
1сПупс
24.09.26
✎
08:25
|
(11) хотели так сделать, но пользователей много... решили искать способ обхода программный.
|
|||
|
15
Kigo_Kigo
24.09.26
✎
08:58
|
ОбненДанными.Загрузка = Истина, не?
Если.ОбменДанными.Загрузка = Истина тогда Возврат; не знаю, но дожно сработать для НаборЗаписей.ОбненДанными.Загрузка = Истина |
|||
|
16
1сПупс
24.09.26
✎
09:17
|
может кому пригодится:
Обработка: Запрос = Новый Запрос;
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
НаборЗаписей = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.ДополнительныеСвойства.Вставить("НеПроводитьПроверкуНаПрава");
НоваяЗаписьНабора = НаборЗаписей.Добавить();
НоваяЗаписьНабора.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
НовыйШтрихкод = РегистрыСведений.ШтрихкодыНоменклатуры.СформироватьШтрихкодEAN13();
НоваяЗаписьНабора.Штрихкод = НовыйШтрихкод;
НоваяЗаписьНабора.УТР_Серия = ВыборкаДетальныеЗаписи.Серия;
Попытка
НаборЗаписей.Записать(Ложь);
Исключение
Сообщить("Ошибка при записи набора: " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла
Расширение: &Перед("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, Замещение)
Если ДополнительныеСвойства.Свойство("НеПроводитьПроверкуНаПрава") Тогда
Возврат;
КонецЕсли;
Если не РольДоступна("ПолныеПрава") Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
пришлось писать набор в цикле, там новый номер штрихкода ищется среди уже имеющихся в базе. Отдельное спасибо Мультук |
|||
|
17
arsik
гуру
24.09.26
✎
09:51
|
(16) 🤦 У тебя весь регистр сведений очиститься.
|
|||
|
18
Somebody
24.09.26
✎
10:41
|
(16) Отбор на записи должен быть
|
|||
|
19
Garykom
гуру
24.09.26
✎
10:48
|
Интересно а ТС в курсе про УстановитьПривилегированныйРежим(Истина) ?
|
|||
|
20
Kigo_Kigo
24.09.26
✎
10:49
|
(19) А разве это спасет от проверки в лоб на полные права?
|
|||
|
21
Garykom
гуру
24.09.26
✎
10:50
|
(20) Не спасет, но суть что полный аналог просто сделать в расширении в этой проверке в лоб
Проверку на этот самый режим добавить |
|||
|
22
Garykom
гуру
24.09.26
✎
10:52
|
&Перед("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, Замещение)
Если НЕ РольДоступна("ПолныеПрава") И НЕ ПривилегированныйРежим() Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры |
|||
|
23
1сПупс
24.09.26
✎
11:11
|
(17) А Записать(Ложь) не смущает? Почему должно всё очиститься?
(18) а зачем тут отбор? конечно можно воткнуть НаборЗаписей.Отбор.Штрихкод.Установить(НовыйШтрихкод); и потом писать с НаборЗаписей.Записать(); но что это даст? |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |