Ошибка при создании документа по COM - Не удалось записать: "Реестр документов"!
Добрый день.
Платформа: 1С:Предприятие 8.3 (8.3.14.1630)
Конфа: Управление торговлей, редакция 11 (11.4.8.73)
После обновления с 11.4.7.150 на 11.4.8.73 возникает ошибка при попытке создать документ в удаленной базе.
Произошла исключительная ситуация (1C:Enterprise 8.3.14.1630): Ошибка при выполнении обработчика - 'ПриЗаписи'
{РегистрСведений.РеестрДокументов.МодульМенеджера(30)}: Ошибка при вызове метода контекста (Записать)
Не удалось записать: "Реестр документов"!
Кто-нибудь сталкивался с такой проблемой ?
Платформа: 1С:Предприятие 8.3 (8.3.14.1630)
Конфа: Управление торговлей, редакция 11 (11.4.8.73)
После обновления с 11.4.7.150 на 11.4.8.73 возникает ошибка при попытке создать документ в удаленной базе.
Произошла исключительная ситуация (1C:Enterprise 8.3.14.1630): Ошибка при выполнении обработчика - 'ПриЗаписи'
{РегистрСведений.РеестрДокументов.МодульМенеджера(30)}: Ошибка при вызове метода контекста (Записать)
Не удалось записать: "Реестр документов"!
Кто-нибудь сталкивался с такой проблемой ?
По теме из базы знаний
Найденные решения
Ну и мы подошли к причине ошибки:
Перед записью регистра сведений РеестрДокументов в модуле набора записей выполняется проверка на привилегированный режим.
Решение обрамлено символами ///***.
Хотя и был установлен привилегированный режим в модуле менеджера регистра сведений, где этот набор записи записывается, привилегированный режим при записи набора в модуль набора записей не передается.
Есть другой конечно вариант - устанавливать привилегированный режим внутри процедуры ПередЗаписью, но мне текущее решение вполне достаточно.
Спасибо всем за активное участие. Подсказка chipazawra помогла решить проблему.
Перед записью регистра сведений РеестрДокументов в модуле набора записей выполняется проверка на привилегированный режим.
Процедура ПередЗаписью(Отказ, Замещение)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Если Не ПривилегированныйРежим() Тогда
///***
#Если ВнешнееСоединение Тогда
Возврат;
#КонецЕсли
///***
Отказ = Истина;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
КонецПроцедуры
ПоказатьРешение обрамлено символами ///***.
Хотя и был установлен привилегированный режим в модуле менеджера регистра сведений, где этот набор записи записывается, привилегированный режим при записи набора в модуль набора записей не передается.
Есть другой конечно вариант - устанавливать привилегированный режим внутри процедуры ПередЗаписью, но мне текущее решение вполне достаточно.
Спасибо всем за активное участие. Подсказка chipazawra помогла решить проблему.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Да, сталкивался.
Платформа:1С:Предприятие 8.3 (8.3.14.1694)
Конфигурация:1С:ERP Управление предприятием 2 (2.4.8.84)
Причина - Проверка на привилегированный режим в модуле набора записей регистра "Реестр документов"
...
Если Не ПривилегированныйРежим() Тогда
Отказ = Истина;
КонецЕсли;
...
Долго разбираться не стал зачем это добавлено. Обмены встали. Через расширение закомментил этот кусок. Думаю разобраться позже.
Платформа:1С:Предприятие 8.3 (8.3.14.1694)
Конфигурация:1С:ERP Управление предприятием 2 (2.4.8.84)
Причина - Проверка на привилегированный режим в модуле набора записей регистра "Реестр документов"
...
Если Не ПривилегированныйРежим() Тогда
Отказ = Истина;
КонецЕсли;
...
Долго разбираться не стал зачем это добавлено. Обмены встали. Через расширение закомментил этот кусок. Думаю разобраться позже.
Код работал в версии 11.4.7.150:
В третьей строке процедуры сейчас возникает ошибка (после того, как устанавливаем ОбменДанными.Загрузка = Ложь и пытаемся записать документ).
Процедура ЗаписатьДокумент(ДокV8, СтрСтатус, Проводить = Истина)
ДокV8.Записать(V8.РежимЗаписиДокумента.Запись);
ДокV8.ОбменДанными.Загрузка = Ложь;
ДокV8.Записать(V8.РежимЗаписиДокумента.Запись);
Если Проводить Тогда
Попытка
ДокV8.Записать(V8.РежимЗаписиДокумента.Проведение);
СтрСтатус.Комментарий = "Выгружен успешно";
СтрСтатус.ДокументВУТ = V8.String(ДокV8.Ссылка);
Исключение
СтрСтатус.Комментарий = "Не удалось провести документ. "+ОписаниеОшибки();
КонецПопытки;
КонецЕсли;
КонецПроцедуры
ПоказатьВ третьей строке процедуры сейчас возникает ошибка (после того, как устанавливаем ОбменДанными.Загрузка = Ложь и пытаемся записать документ).
Странно что он вообще сюда полез РегистрСведений.РеестрДокументов.МодульМенеджера(30)
Эта процедура "РегистрСведений.РеестрДокументов.ЗаписатьДанныеДокумента(Ссылка, ДополнительныеСвойства, Отказ, ЭтоОбновлениеИБ = Ложь) Экспорт" вызывается только в обработке проведения.
Мне кажется нужно копать в сторону режима записи.
Да и зачем записывать документ дважды ?
ДокV8.Записать(V8.РежимЗаписиДокумента.Запись);
ДокV8.ОбменДанными.Загрузка = Ложь;
ДокV8.Записать(V8.РежимЗаписиДокумента.Запись);
Эта процедура "РегистрСведений.РеестрДокументов.ЗаписатьДанныеДокумента(Ссылка, ДополнительныеСвойства, Отказ, ЭтоОбновлениеИБ = Ложь) Экспорт" вызывается только в обработке проведения.
Мне кажется нужно копать в сторону режима записи.
Да и зачем записывать документ дважды ?
ДокV8.Записать(V8.РежимЗаписиДокумента.Запись);
ДокV8.ОбменДанными.Загрузка = Ложь;
ДокV8.Записать(V8.РежимЗаписиДокумента.Запись);
(13) У меня получилось подключиться отладчиком. Тонкость в том, что нужно как я понял запускать приложение, из которого выполняется com-соединение в режиме толстого клиента.
И еще - не нужно указывать конкретный порт - тогда сканируются все порты.
Мой текст файла следующий:
И еще - не нужно указывать конкретный порт - тогда сканируются все порты.
Мой текст файла следующий:
<config xmlns="http://v8.1c.ru/v8/comcntrcfg">;
<debugconfig debug="true"
debuggerURL="tcp://localhost"/>
</config>
<debugconfig debug="true"
debuggerURL="tcp://localhost"/>
</config>
Ну и мы подошли к причине ошибки:
Перед записью регистра сведений РеестрДокументов в модуле набора записей выполняется проверка на привилегированный режим.
Решение обрамлено символами ///***.
Хотя и был установлен привилегированный режим в модуле менеджера регистра сведений, где этот набор записи записывается, привилегированный режим при записи набора в модуль набора записей не передается.
Есть другой конечно вариант - устанавливать привилегированный режим внутри процедуры ПередЗаписью, но мне текущее решение вполне достаточно.
Спасибо всем за активное участие. Подсказка chipazawra помогла решить проблему.
Перед записью регистра сведений РеестрДокументов в модуле набора записей выполняется проверка на привилегированный режим.
Процедура ПередЗаписью(Отказ, Замещение)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Если Не ПривилегированныйРежим() Тогда
///***
#Если ВнешнееСоединение Тогда
Возврат;
#КонецЕсли
///***
Отказ = Истина;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
КонецПроцедуры
ПоказатьРешение обрамлено символами ///***.
Хотя и был установлен привилегированный режим в модуле менеджера регистра сведений, где этот набор записи записывается, привилегированный режим при записи набора в модуль набора записей не передается.
Есть другой конечно вариант - устанавливать привилегированный режим внутри процедуры ПередЗаписью, но мне текущее решение вполне достаточно.
Спасибо всем за активное участие. Подсказка chipazawra помогла решить проблему.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот