|
Программно записать элементы справочников в БП3.0 | ☑ | ||
---|---|---|---|---|
0
Masi4
15.05.14
✎
16:46
|
БП 3.0
Тонкий клиент Права: группа ролей Бухгалтер Необходимо выполнить создание элемента справочника "Договоры контрагентов", но при попытке выполнить нижеприведённый код возникает ошибка : "Не удалось записать "Договор Контрагента"!". &НаСервере Процедура КомандаСоздатьДоговорНаСервере() Договор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент (); Договор.Владелец = Справочники.Контрагенты.НайтиПоКоду ("000027477"); Договор.Наименование = "0100059144"; Договор.Организация = Справочники.Организации.НайтиПоКоду ("000000001"); Договор.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем; Договор.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду ("978"); Договор.РасчетыВУсловныхЕдиницах = Истина; Договор.Валютный = Истина; Договор.Записать (); КонецПроцедуры Тот же вариант со справочником "Номенклатура" возваращает "Нарушение прав доступа. &НаСервере Процедура КомандаСоздатьТоварНаСервере() СпрТовары = Справочники.Номенклатура.СоздатьЭлемент (); СпрТовары.Наименование = "123456789"; СпрТовары.Записать (); КонецПроцедуры Если тоже самое выполнить с полными права - всё работает. Подскажите, как создавать элементы справочников под ролями Бухгалтеров в БП3.0? ПС. Не посылайте в яндекс или гугл. |
|||
1
Wobland
15.05.14
✎
16:47
|
дать прав пробовал?
|
|||
2
salvator
15.05.14
✎
16:49
|
А в чем глубинный смысл создавать один договор программно?
|
|||
3
Masi4
15.05.14
✎
17:02
|
(1) Если тоже самое выполнить с полными права - всё работает. (2) Договора, как и товары создаются пачками в мегамодулях. Я всего лишь привёл простой пример проблемного кода.
|
|||
4
xXeNoNx
15.05.14
✎
17:04
|
Рлс глянь, права дай
|
|||
5
salvator
15.05.14
✎
17:04
|
(3) Кури настройки ролей.
|
|||
6
Naumov
15.05.14
✎
17:05
|
После ругни смотришь на что ругается и добавляешь в права.
|
|||
7
Wobland
15.05.14
✎
17:05
|
(3) а от нас чего хочешь?
|
|||
8
Ymryn
15.05.14
✎
17:05
|
Если не изменяет память там есть отдельная роль на работу/запись с Нормативно справочной информаций (или просто Справочной информацией). Дай пользователю эту роль.
|
|||
9
xXeNoNx
15.05.14
✎
17:06
|
УстановитьПревилигированныйрежим
|
|||
10
Naumov
15.05.14
✎
17:06
|
*смотришь в журнале регистрации
|
|||
11
Wobland
15.05.14
✎
17:06
|
(9) фу. ты этим ртом потом хлебушек будешь кушать
|
|||
12
xXeNoNx
15.05.14
✎
17:07
|
(11) Какой вопрос, такой ответ...
|
|||
13
Masi4
15.05.14
✎
17:11
|
(4) Давал разные права, но работает только с полными правами.
|
|||
14
Masi4
15.05.14
✎
17:12
|
(7) От вас лично ничего. Но вопрос я задал вполне конкретно: "Подскажите, как создавать элементы справочников под ролями Бухгалтеров в БП3.0?"
|
|||
15
Wobland
15.05.14
✎
17:14
|
(14) лично я не знаю, и мне поровну. а сам найти ответ не хочешь
|
|||
16
Wobland
15.05.14
✎
17:14
|
+(15) ?
|
|||
17
Masi4
15.05.14
✎
17:16
|
(15) (16) Понятно, что всем или многим поровно. Искал, читал, у 1С спрашивал (и они даже ответили через 3 часа). Нигде ничего...
|
|||
18
Wobland
15.05.14
✎
17:17
|
только разве вЖР не ходил
|
|||
19
acsent
15.05.14
✎
17:18
|
установить привилегированный режим
|
|||
20
Masi4
15.05.14
✎
17:19
|
(8) Роли выданные пользователю: "Добавление и изменение базовой нормативно-справочной информации", "Добавление и изменение общей базовой нормативно-справочной информации", "Добавление и изменение общей бухгалтерской нормативно-справочной информации"
|
|||
21
Masi4
15.05.14
✎
17:21
|
(9) (19) Не помогло
|
|||
22
Masi4
15.05.14
✎
17:22
|
(18) а ЖР это вкуда?
|
|||
23
Ymryn
15.05.14
✎
17:22
|
(20) установлено ли ограничение доступа по уровням записей? Если да, то были ли запущены регламентная обработка после этого и были ли установлены соответствующие разрешения?
|
|||
24
Ymryn
15.05.14
✎
17:22
|
(22) журнал регистрации я так предполагаю.
|
|||
25
acsent
15.05.14
✎
17:24
|
(21) во внешней обработке конечно не поможет
|
|||
26
Masi4
15.05.14
✎
17:26
|
(5) Курил, только в теории получается что все права уже есть: у пользователя установлена роль "Добавление и изменение данных бухгалтерии", а у этой роли есть и создание и изменение элементов справочника.
|
|||
27
Masi4
15.05.14
✎
17:32
|
(10) (24) ЖР - оказывается полезная весчь. Вот что он мне сказал:
{ОбщийМодуль.ОбменДаннымиВызовСервера.Модуль(87)}: Ошибка при получении значения атрибута контекста (ДатаОбновленияПовторноИспользуемыхЗначенийМРО) Если ПараметрыСеанса.ДатаОбновленияПовторноИспользуемыхЗначенийМРО <> АктуальнаяДата Тогда по причине: Нарушение прав доступа! |
|||
28
Wobland
15.05.14
✎
17:33
|
(27) можешь не благодарить
|
|||
29
Masi4
15.05.14
✎
17:36
|
(28) Не, не. За это спасибо! Я и не думал что от него такая польза...
|
|||
30
Masi4
15.05.14
✎
17:39
|
(27) Вот только зайти туда дебагером не смогу. С ограниченными правами туда не пустят в конфигуратор, а с полными ошибка не появляется...
|
|||
31
Wobland
15.05.14
✎
17:50
|
(30) надо как-то заставить запустить отладку от имени ущербного юзера
|
|||
32
Masi4
15.05.14
✎
17:58
|
(31) Дал пользователю много прав. Запустил конфигуратор из под него. Отнял права. Запустил тонкий клиент. Дал права - подключил клиента к отладке. Он выдал много новых сообщений, но мои точки остановка в обоначенных местах продинамил.
{Форма.Форма.Форма(155)}: Ошибка при вызове метода контекста (Записать) СпрТовары.Записать (); по причине: Ошибка при выполнении обработчика - 'ПередЗаписью' по причине: {ОбщийМодуль.ОбменДаннымиВызовСервера.Модуль(477)}: Ошибка при получении значения атрибута контекста (ИспользуемыеПланыОбмена) СпрТовары.Записать (); по причине: Нарушение прав доступа! по причине: Ошибка при выполнении обработчика - 'ПередЗаписью' по причине: {ОбщийМодуль.ОбменДаннымиВызовСервера.Модуль(477)}: Ошибка при получении значения атрибута контекста (ИспользуемыеПланыОбмена) по причине: Нарушение прав доступа! {ОбщийМодуль.ОбменДаннымиВызовСервера.Модуль(477)}: Ошибка при получении значения атрибута контекста (ИспользуемыеПланыОбмена) Если ПараметрыСеанса.ИспользуемыеПланыОбмена.Количество() > 0 Тогда по причине: Нарушение прав доступа! Нарушение прав доступа! |
|||
33
batmansoft
15.05.14
✎
18:03
|
Попробуй создать роль, где всем справочникам, регистрам и документам назначить только права на программную запись и чтения. Таким образом, интерактивно шаловливыми ручками он не сможет что либо натворить, а программа под его правами сможет сделать.
|
|||
34
Masi4
15.05.14
✎
18:39
|
(33) Мне нельзя править конфу. Ни под каким предлогом. Это как бы условие обязательное.
|
|||
35
Masi4
16.05.14
✎
11:27
|
(31) Запустил от ущербного пользователя. Создал файловую локальную базу. Дал права администратора. Запустил конфигуратор. Отнял права администратора. Запустил толстый клиент (управляемое приложение). И уже 10 минут тыкаю F11.
|
|||
36
Wobland
16.05.14
✎
11:36
|
||||
37
Masi4
16.05.14
✎
11:43
|
(36) Это я итак знаю и сделал. Но спасибо за участие.
|
|||
38
Masi4
16.05.14
✎
11:46
|
(35) В итоге я нашел источник ошибки. Я правда не знаю пока почему туда входит выполнение.
Насколько я понял у пользователя нет прав сюда: Если ПараметрыСеанса.ИспользуемыеПланыОбмена.Количество() > 0 Тогда |
|||
39
Wobland
16.05.14
✎
11:47
|
>Нарушение прав доступа! Ошибка при получении значения атрибута контекста (ИспользуемыеПланыОбмена)
кажется, да. но я не уверен |
|||
40
Masi4
16.05.14
✎
11:49
|
(39) Именно на этом месте деббагер останавливается и появляется ошибка. Теперь думаю какие из стандартных прав позволят обойти это.
|
|||
41
Wobland
16.05.14
✎
12:01
|
ну расскажи, каким ролям это позволено, не молчи ;)
|
|||
42
Masi4
16.05.14
✎
12:04
|
(41) Кто знает в БП 3.0 весь доступ поделён на кучу ролей в конфигураторе, а в конфигурации (режим предприятие) есть пять групп ролей. Это предыстория. Так вот единственная более менее безвредная роль - это администрирование. Я не знаю как и где смотреть доступ к переменной "ПараметрыСеанса", так что могу только предполагать.
|
|||
43
Wobland
16.05.14
✎
12:07
|
(42) а это совсем ни разу не переменная. даже напротив: это параметры сеанса
|
|||
44
Masi4
16.05.14
✎
12:09
|
(43) Да, я это уже посмотрел) Оказывается не параметрах сеанса дело... Потому что у роли Администрирование тоже нет доступа к "Параметрам сеанса".
|
|||
45
hhhh
16.05.14
✎
12:13
|
(44) то что "Потому что у роли Администрирование тоже нет доступа к "Параметрам сеанса"." ничего не следует.
|
|||
46
Masi4
16.05.14
✎
12:17
|
(45) Возможно, но с этой ролью в дополнение к группе ролей Бухгалтер - всё работает.
|
|||
47
hhhh
16.05.14
✎
12:25
|
что за группа ролей такая?
|
|||
48
Masi4
16.05.14
✎
12:31
|
Проблема не в Параметрах сеанса. Что-то другое мешает. С простыми правами я получаю отказ на изменение данных в процедуре "ПередЗаписью". С дополнением роли Администрирование - не получаю отказа...
|
|||
49
Masi4
16.05.14
✎
12:43
|
Я нашёл (надеюсь) место проблемное:
ОбменДаннымиВызовСервера.ПроверитьКэшМеханизмаРегистрацииОбъектов (); Здесь возникает первая ошибка и здесь я получаю отказ. Почему - не знаю... |
|||
50
Wobland
16.05.14
✎
12:43
|
а ЖР знает?
|
|||
51
Masi4
16.05.14
✎
12:56
|
(50) Нет. ЖР знает только это:
{ОбщийМодуль.ОбменДаннымиВызовСервера.Модуль(87)}: Ошибка при получении значения атрибута контекста (ДатаОбновленияПовторноИспользуемыхЗначенийМРО) Если ПараметрыСеанса.ДатаОбновленияПовторноИспользуемыхЗначенийМРО <> АктуальнаяДата Тогда по причине: Нарушение прав доступа! Целых 5 раз. |
|||
52
Masi4
16.05.14
✎
12:59
|
А вот когда выполнение сваливается в исключение как можно посмотреть описание ошибки кроме функции "ОписаниеОшибки ()"? Функция возвращает пусто...
|
|||
53
Masi4
16.05.14
✎
13:08
|
Я дал пользователю все права кроме "Полных" и "Административных"... и всё равно не получается.
|
|||
54
Masi4
16.05.14
✎
13:08
|
Плакать хочется... %-)
|
|||
55
hhhh
16.05.14
✎
13:15
|
но вообще у вас настроен обмен? Всё четко там? Он работает?
|
|||
56
Masi4
16.05.14
✎
13:20
|
(55) Прошу прощения, но я не совсем понял какой обмен... У нас только одна база, и задача стоит: создавать из внешней обработки товары и договора...
|
|||
57
hhhh
16.05.14
✎
13:25
|
(56) ну и? не видите, что у вас обмен данными? Если хотите чтобы бухгалтер обмены фигачил между базами, настройте ему обмен.
|
|||
58
Masi4
16.05.14
✎
13:28
|
(57) Ещё раз. У нас 1 база 1С. В этой базе нужно создать (не загружать, не обмениваться), просто создать по кнопке из внешней обработки договор или товар.
|
|||
59
Masi4
16.05.14
✎
13:31
|
Вопрос в другом. Почему некоторые элементы параметров сеанса (ПараметрыСеанса) доступны при обращении из внешней обработке, а другие нет? Как не вводя обработку в конфу позволить ей делать всё то, что может делать пользователь, под которым обработка запустилась?
|
|||
60
Поpyчик-4
16.05.14
✎
13:40
|
(0) УстановитьПривилегированныйРежим(Истина) в вашей обработке ещё не предлагали?
|
|||
61
Masi4
16.05.14
✎
13:44
|
(60) Вот здесь (9) и здесь (19) ...
|
|||
62
singlych
16.05.14
✎
13:47
|
УстановитьПривилегированныйРежим не будет работать в обработках, которые открываются через файл-открыть и в дополнительных с безопасным режимом, вроде. А следовательно, записать договор не судьба без полных прав. Попробуй поставь небезопасный.
|
|||
63
Masi4
16.05.14
✎
13:48
|
(62) Прошу прощение: поставить небезопасный что?
|
|||
64
singlych
16.05.14
✎
13:49
|
(63) режим. Ты же вроде дополнительную обработку пишешь?
|
|||
65
Masi4
16.05.14
✎
13:51
|
(64) {Форма.Форма.Форма(142)}: Ошибка при вызове метода контекста (УстановитьБезопасныйРежим)
УстановитьБезопасныйРежим (Ложь); по причине: В данной процедуре/ функции не был установлен безопасный режим |
|||
66
Masi4
16.05.14
✎
13:52
|
(64) Угу - дополнительную пишу...
|
|||
67
singlych
16.05.14
✎
13:58
|
(66) если ты будешь открывать ее через файл-открыть, он не установится никогда. устанавливай в СведенияОВнешнейОбработке() и регистрируй в базе.
|
|||
68
Masi4
16.05.14
✎
14:06
|
(67) Прошу не бить ногами, но как обработку зарегистрировать в базе?
|
|||
69
Поpyчик-4
16.05.14
✎
14:07
|
(68) Искать в гугле. Вопрос уже давно обсосан до дыр.
|
|||
70
Masi4
16.05.14
✎
14:42
|
(69) Не помогло...
|
|||
71
Поpyчик-4
16.05.14
✎
14:55
|
(70) Триста рублей. Вот пример http://files.mail.ru/CFFA42B0FB804C8FBAE9DC6849E43EC1
|
|||
72
Masi4
16.05.14
✎
14:56
|
Конкретизирую.
Функция СведенияОВнешнейОбработке() Экспорт РегистрационныеДанные = Новый Структура(); РегистрационныеДанные.Вставить ("Наименование", "Установка"); РегистрационныеДанные.Вставить ("БезопасныйРежим", Истина); РегистрационныеДанные.Вставить ("Версия", "v 1.4"); РегистрационныеДанные.Вставить ("Информация", "v 1.0"); РегистрационныеДанные.Вставить ("Вид", "ДополнительнаяОбработка"); МассивНазначений = Новый Массив; МассивНазначений.Добавить ("Справочник.*"); РегистрационныеДанные.Вставить ("Назначение", МассивНазначений); тз = Новый ТаблицаЗначений; тз.Колонки.Добавить("Идентификатор"); тз.Колонки.Добавить("Использование"); тз.Колонки.Добавить("Представление"); НоваяСтрока = тз.Добавить(); НоваяСтрока.Идентификатор = "ОткрытьОбработку"; НоваяСтрока.Использование = "ОткрытиеФормы"; НоваяСтрока.Представление = "Открыть"; РегистрационныеДанные.Вставить("Команды", тз); Возврат РегистрационныеДанные; КонецФункции &НаСервере Процедура Команда1НаСервере() //УстановитьБезопасныйРежим (Ложь); УстановитьПривилегированныйРежим (Истина); СпрТовары = Справочники.Номенклатура.НайтиПоКоду ("0085991").ПолучитьОбъект (); СпрТовары.Записать (); КонецПроцедуры Подключил к базе. Запустил. Та же ошибка. |
|||
73
Masi4
16.05.14
✎
14:57
|
(71) Это вы мне предлагаете за 300 рублей решить мою проблему? :) Или за 300 рублей вы мне пароль для файла дадите? :)
|
|||
74
singlych
16.05.14
✎
15:02
|
(73) эмм.. кому я что говорил..
убери уже УстановитьПривилегированныйРежим и сделай РегистрационныеДанные.Вставить ("БезопасныйРежим", Ложь); |
|||
75
Masi4
16.05.14
✎
15:15
|
(74) Тестовая обработка отработала. Сейчас перенесу всё в мегамодуль и проверю.
|
|||
76
Masi4
16.05.14
✎
15:28
|
Получилось! Спасибо всем за помощь!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |