![]() |
![]() |
![]() |
|
В бухгалтерии 3.0 не получается записать документы внешней обработкой | ☑ | ||
---|---|---|---|---|
0
Леонид_ПС
25.06.13
✎
08:16
|
Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.21.14)
Для загрузки кассовых документов написана внешняя обработка. Под пользователем с полными правами выполняется нормально, а под пользователем с включенным профилем "Главный бухгалтер" + профиль, в котором включено использование внешних обработок, права ко всем организациям, выдается ошибка Вот это выдается пользователю. ============================ Проблема Приходный кассовый ордер от 03.06.2013 8:03:17 {ВнешняяОбработка.ДополнительныеВозможностиБухТЭСК_Управляемая.МодульОбъекта(104)}: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика - 'ПередЗаписью': {ОбщийМодуль.ОбновлениеИнформационнойБазы.Модуль(822)}: Ошибка при вызове метода контекста (Выполнить): Недостаточно прав для работы с таблицей "РегистрСведений.ВерсииПодсистем" Вот это пишется в журнал ========================== {ОбщийМодуль.ОбменДаннымиВызовСервера.Модуль(95)}: Ошибка при вызове метода контекста (ПолучитьФункциональнуюОпцию) АктуальнаяДата = ПолучитьФункциональнуюОпцию("АктуальнаяДатаОбновленияПовторноИспользуемыхЗначенийМРО"); по причине: Ошибка при получении значения функциональной опции "АктуальнаяДатаОбновленияПовторноИспользуемыхЗначенийМРО". Нет доступа: объект: 'Константа.ДатаОбновленияПовторноИспользуемыхЗначенийМРО' Таблица: 'Const10560', SDBL-команда: 'SELECT'. Часть кода внешней обработки // это в модуле формы &НаСервере Процедура СоздатьДокументПоСтрокеТаблицы(стрД) докПКООбъект=Документы.ПриходныйКассовыйОрдер.СоздатьДокумент(); докПКООбъект.Дата=стрД.ДатаПлатежа; докПКООбъект.Организация=ОрганизацияДокумента; докПКООбъект.СчетКасса=?(стрД.Агентский,ПланыСчетов.Хозрасчетный.КассаПлатежногоАгента,ПланыСчетов.Хозрасчетный.КассаОрганизации); докПКООбъект.СтавкаНДС=Перечисления.СтавкиНДС.НДС18; стРасшифровка=докПКООбъект.РасшифровкаПлатежа.Добавить(); стРасшифровка.ДоговорКонтрагента=стрД.Договор; Если стрД.КорСчет=ПланыСчетов.Хозрасчетный.РасчетыСПокупателями // 62.1 или стрД.КорСчет=ПланыСчетов.Хозрасчетный.РасчетыПоАвансамПолученным // 62.2 или стрД.КорСчет=ПланыСчетов.Хозрасчетный.РасчетыСПрочимиПоставщикамиИПодрядчиками // 76.5 Тогда докПКООбъект.ВидОперации=Перечисления.ВидыОперацийПКО.ОплатаПокупателя; стРасшифровка.СуммаПлатежа=стрД.Сумма; стРасшифровка.СуммаВзаиморасчетов=стрД.Сумма; стРасшифровка.СтавкаНДС=докПКООбъект.СтавкаНДС; стРасшифровка.СуммаНДС=стрД.Сумма*18/100; // пусть пока так, если понадобится другой, сделаю в настройках стРасшифровка.СтатьяДвиженияДенежныхСредств=стрД.ДДС; Если стрД.КорСчет=ПланыСчетов.Хозрасчетный.РасчетыСПокупателями // 62.1 или стрД.КорСчет=ПланыСчетов.Хозрасчетный.РасчетыПоАвансамПолученным // 62.2 Тогда стРасшифровка.СчетУчетаРасчетовПоАвансам=ПланыСчетов.Хозрасчетный.РасчетыПоАвансамПолученным; // 62.2 стРасшифровка.СчетУчетаРасчетовСКонтрагентом=ПланыСчетов.Хозрасчетный.РасчетыСПокупателями; // 62.1 Иначе стРасшифровка.СчетУчетаРасчетовПоАвансам=стрД.КорСчет; стРасшифровка.СчетУчетаРасчетовСКонтрагентом=стрД.КорСчет; КонецЕсли; стРасшифровка.СпособПогашенияЗадолженности=Перечисления.СпособыПогашенияЗадолженности.Автоматически; Иначе докПКООбъект.ВидОперации=Перечисления.ВидыОперацийПКО.ПрочийПриход; докПКООбъект.СчетУчетаРасчетовСКонтрагентом=стрД.КорСчет; докПКООбъект.СубконтоКт1=стрД.СубконтоКт1; докПКООбъект.СубконтоКт2=стрД.СубконтоКт2; докПКООбъект.СубконтоКт3=стрД.СубконтоКт3; КонецЕсли; докПКООбъект.Контрагент=стрД.Контрагент; докПКООбъект.ДоговорКонтрагента=стрД.Договор; Попытка докПКООбъект.ВалютаДокумента=стрД.Договор.ВалютаВзаиморасчетов; Исключение КонецПопытки; Если не ЗначениеЗаполнено(докПКООбъект.ВалютаДокумента) Тогда докПКООбъект.ВалютаДокумента=Константы.ВалютаРегламентированногоУчета.Получить(); КонецЕсли; докПКООбъект.СуммаДокумента=стрД.Сумма; докПКООбъект.ПринятоОт=стрД.ПринятоОт; докПКООбъект.Основание=стрД.Основание; докПКООбъект.Комментарий=стрД.Комментарий; докПКООбъект.СтатьяДвиженияДенежныхСредств=стрД.ДДС; докПКООбъект.ПодразделениеОрганизации=стрД.Касса; стРасшифровка.КратностьВзаиморасчетов=1; стРасшифровка.КурсВзаиморасчетов=1; стРасшифровка.СтатьяДвиженияДенежныхСредств=стрД.ДДС; // всегда в проводку берется здесь ОбработкаОбъект=РеквизитФормыВЗначение("Объект"); ОбработкаОбъект.ЗаписатьИПровестиДокумент(докПКООбъект); КонецПроцедуры // это в модуле обработки &НаСервере Функция ЗаписатьИПровестиДокумент(ДокОбъект,Записать=Истина,Провести=Истина,Сообщать=Истина) Экспорт Попытка УстановитьПривилегированныйРежим(Истина); Если Записать Тогда докОбъект.Записать(РежимЗаписиДокумента.Запись); КонецЕсли; Если Провести Тогда докОбъект.Записать(РежимЗаписиДокумента.Проведение); КонецЕсли; Если Сообщать Тогда Сообщить(?(Записать,"Создан ","")+?(Провести,"проведен ","")+докОбъект); КонецЕсли; Возврат Истина; Исключение Сообщить("Проблема "+докОбъект+" "+ОписаниеОшибки(),СтатусСообщения.Внимание); Возврат Ложь; КонецПопытки; КонецФункции Интерактивно этот пользователь документы создавать может. |
|||
1
IamAlexy
25.06.13
✎
08:25
|
и ? сам же написал.
Недостаточно прав для работы с таблицей "РегистрСведений.ВерсииПодсистем" исправь права и грузи |
|||
2
el-gamberro
25.06.13
✎
08:26
|
(1) ЛОЛ :)
|
|||
3
НаборДанных
25.06.13
✎
08:27
|
Лол в том, что буху придется давать права администратора.
|
|||
4
el-gamberro
25.06.13
✎
08:27
|
Я использую свой спец модуль для записи объекта.
Запись происходит при установленном привилегированном режиме. |
|||
5
el-gamberro
25.06.13
✎
08:28
|
(3) Не рекомендуются. Хотя я все таки дал. ибо система прав не очень разумна.
|
|||
6
НаборДанных
25.06.13
✎
08:30
|
(5)Тут интересно, а ручками пользователь с профилем Главный бухгалтер тоже не может провести ПКО что ли?
|
|||
7
el-gamberro
25.06.13
✎
08:46
|
(6) Непонятный вопрос. Там вывоз перед записью, а не при проведении доков.
Если мне не изменяет память вот в чем косяк: Из формы внешней обработины не видны параметры сеанса и соот-но на куче всякой хрени обработки падают. |
|||
8
Леонид_ПС
25.06.13
✎
09:01
|
Я в первом сообщении писал:
Интерактивно этот пользователь документы создавать может. Похоже что (7) прав. Поищу в этом направлении. А вообще там в процедурах, где выпадает ошибка стоит УстановитьПривилегированныйРежим(Истина) но оно не срабатывает, хотя модули выполняются на сервере в тонком клиенте. |
|||
9
Зойч
25.06.13
✎
09:12
|
(8) во внешней так нельзя
|
|||
10
el-gamberro
25.06.13
✎
09:16
|
(8)
Ну проверь что безопасный режим ложь, плюс я все таки пишу объект в отдельной общем модуле. Причем функция универсальная. она просто делает запись объекта и все, ес-но в привилегированном режиме |
|||
11
Леонид_ПС
25.06.13
✎
09:24
|
Процедуры, о которых я писал в (8) - родные 1С-овские.
Привилегированный режим почему-то не устанавливается. В конфигурацию вмешиваться - табу, только внешними обработками. |
|||
12
el-gamberro
25.06.13
✎
10:27
|
(11) Почему табу? Никаких проблем с обновлением, ведь конфа на поддержке. а общий модуль он твой, отдельно от поставки.
|
|||
13
Леонид_ПС
25.06.13
✎
10:50
|
Сейчас на тестовой БД проверил. Не изменял ничего, просто включил обработку в конфигурацию и дал на нее права. Все работает.
Похоже, что когда серверные процедуры/функции вызываются из внешней обработки, тогда не работает установка привилегированного режима. То ли ошибка, то ли так задумано. |
|||
14
acsent
25.06.13
✎
10:51
|
(13) я же тебе в еще в (9) написал
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |