Имя: Пароль:
1C
1С v8
Как так 1С ограничили права?
0 Sevish
 
30.01.24
15:58
Добрый день всем!
Есть в КА документ "Корректировка регистров". Есть регистр накопления "Товары к оформлению излишков и недостач".
Понятно, что для того, чтобы этим документом откорректировать обозначенный регистр нужны полные права (других нет на регистр).
Хорошо, в расширении создаю новую роль, добавляю регистр, выдаю на него полные права. Пишу обработку, проверяю возможность записи в регистр - все отлично!

Теперь под этим пользователем открываю документ "Корректировка регистров", добавляю регистр, добавляю строку и .... поле "Период" не доступно для записи... нет прав? Как так?

Через отладчик посмотрел, у колонки "Период" "ТолькоПросомотр"="Ложь", "Доступность"="Истина".

Выдаю пользователю полные права - все отлично, может ставить дату, забираю - нет.

Облазил весь код отладчиком, ничего не нашел.

Подскажите, пожалуйста, как это победить?

Если что, в 1С в этом документе динамически формируется страничка с ТЧ:

    ТаблицаФормы = Элементы.Добавить("ТаблицаДвижений" + ИмяРегистра, Тип("ТаблицаФормы"), Родитель);
    ТаблицаФормы.ПутьКДанным      = "Объект.Движения." + ИмяРегистра;

И все... а как поле "Период" заблокировалось то?
1 Momus
 
30.01.24
16:01
что-то не нашел в тексте самого очевидного: есть ли права на изменение самого документа корректировки
2 yopQua
 
30.01.24
16:13
поле "Период" не доступно для записи

это не про права
3 Sevish
 
30.01.24
16:36
(1) Да есть, я этим же документом могу любой другой регистр откорректировать, но если нет поля "Период".

(2) Возможно, а про что? Там есть типовой обработчик &НаКлиенте при начале редактирования, в котором устанавливается значение "Период", если он есть в ТЧ. Так вот он при срабатывании и выдает такую ошибку. Ну и сам я не могу мышкой в поле провалиться...
4 Волшебник
 
30.01.24
16:39
Скорее всего, ошибка в обработчике ПриНачалеРедактирования, который ещё отключает стандартную обработку
5 Momus
 
30.01.24
16:46
(3) какой релиз?
6 Sevish
 
30.01.24
16:50
Безумная идея пришла в голову:
мне надо было дать права на один регистр, может ли быть именно поле "Период" не доступна, потому что есть в движениях "Корректировки регистров" иные регистры, в которых есть поле "Период", но на них нет прав (и не нужны)?
7 Sevish
 
30.01.24
16:51
(4) увы, нет
// Подключаемый обработчик события "ПриНачалеРедактирования" таблицы формы.
//
&НаКлиенте
Процедура Подключаемый_ТаблицаПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)

    Если НоваяСтрока Тогда
        Элемент.ТекущиеДанные.Период = Объект.Дата;
        ЗаполнитьЗначенияСвойств(Элемент.ТекущиеДанные, Новый Структура("Организация", Организация));
    КонецЕсли;

КонецПроцедуры
8 Sevish
 
30.01.24
16:51
(5) последний, 2.5.15.103, 8.3.23.2040
9 Sevish
 
30.01.24
16:52
Вот тут "Элемент.ТекущиеДанные.Период" и ругается, что поле не доступно для записи.
10 yopQua
 
30.01.24
17:10
(6) если права подозреваете, то проверьте еще РЛС
поле не доступно для записи возникает, когда в переменной значение такого типа, для которого доступность только чтение, без записи

как то не понял
Там есть типовой обработчик &НаКлиенте при начале редактирования, в котором устанавливается значение "Период", если он есть в ТЧ. Так вот он при срабатывании и выдает такую ошибку.

И
увы, нет
// Подключаемый обработчик события "ПриНачалеРедактирования" таблицы формы.
//
&НаКлиенте
Процедура Подключаемый_ТаблицаПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)

    Если НоваяСтрока Тогда
        Элемент.ТекущиеДанные.Период = Объект.Дата;
        ЗаполнитьЗначенияСвойств(Элемент.ТекущиеДанные, Новый Структура("Организация", Организация));
    КонецЕсли;

КонецПроцедуры

говорят о противоположном, так есть тут ошибка?
пс. а, использование: чтение и запись

(9) ну вот и смотрите, что там
11 Волшебник
 
30.01.24
17:03
(9) В отладчике проверьте тип "Элемент.ТекущиеДанные"
12 yopQua
 
30.01.24
17:11
типовые функционалы..
или регистр самописный?
13 Sevish
 
30.01.24
17:14
(12) Все типовое.
(10) мысли интересная... я не смотрел что там за тип, т. к. очевидно, что он дата... проверил только, что поле формы доступно и нет ограничения на только просмотр.
(11) Попробую.
14 Волшебник
 
30.01.24
17:19
(13) проверьте тип "Элемент.ТекущиеДанные", а не "Элемент.ТекущиеДанные.Период"
15 Sevish
 
30.01.24
17:22
(14) "Элемент.ТекущиеДанные" = "ДанныеФормыЭлементКоллекции"
16 yopQua
 
30.01.24
17:31
:D :D
17 Волшебник
 
30.01.24
18:52
(15) Что Вы там собрались присваивать этому отражению? Работайте с записью набора регистра
18 Sevish
 
31.01.24
05:55
(17) это типовой код, было написано ещё в самом начале. Так что это вопрос к 1С что они там собрались присваивать, но в любом случае под полными правами все присваивается.
19 Web00001
 
31.01.24
06:30
(17) В ТекущихДанных элемента формы(который коллекция), лежат элементы коллекции, что не так то?
20 Momus
 
31.01.24
08:00
(8) под рукой только последний релиз ветки дп 2.5.12, все ок.
(19) тоже не понял
21 Sevish
 
31.01.24
12:08
(20) под какими правами?
22 Sevish
 
31.01.24
12:09
(20) создайте корректировку регистров под пользователем, у которого нет "Полных прав". Получается?
23 Momus
 
31.01.24
12:44
(21) Каюсь, был не прав. Я проверял в ЕРП, а там есть типовая роль на этот документ. Подумал, что в КА также, но щас перепроверил и оказалось, что на этот документ только полные права. По вашему пример добавил в расширение КА роль и накинул права, получил ту же ошибку
24 Sevish
 
01.02.24
04:54
Воть :(
Все же мне кажется что надо ВСЕ регистры закинуть в расширение и выдать права, тогда поле станет доступным. НО! То что в ERP все работает, это хорошая подсказка. Сейчас посмотрю как там.
25 Sevish
 
01.02.24
05:02
(23) Увы, да, в ERP есть "УдаленныйДоступOData" и с её помощью можно было бы выкрутиться. В КА роль эта есть, но прав нет на регистры.

Вопрос: а можно как-то программно добавить в расширение объекты? Я б тогда обработку написал, которая из метаданных "Корректировка регистров" все бы закинула в расширение.
26 Web00001
 
01.02.24
06:22
(25)Можно самому написать xml файлы, из которых соберется расширение. Но возможно это сильно дольше чем их закидывать вручную.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс