|
Как обойти РольДоступна() при програмной записи РС? arsik, DemonShinji2, рокот, Гипервизор, Logovazz, lexushka, Мультук, Михаил Козлов, Homer, skafandr, RomaH, CepeLLlka, orakool, Silgis, JohnGilbert, Hawk_1c, 2S, 1сПупс, Kigo_Kigo, Timon1405, Ненавижу 1С, nick86, paramedic, abfm, Климов Сергей, Garykom, maxar, Zapal, YFedor, viraboy, sikuda, kir-g, Prog_man, takefive, KJlag, Dirk Diggler, okmail, IVT_2009, Vstur, ZloyBrawler, Fedor-1971, vis, ildary, zenik, КонецЕсли, Metman, dergreche, Lama12, 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) 🤦 У тебя весь регистр сведений очиститься.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |