8.х Проблема с проведением документа через COMСоединение

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Euronymous, 18 фев 2015.

  1. TopicStarter Overlay
    Euronymous
    Offline

    Euronymous Опытный в 1С

    Регистрация:
    19 фев 2014
    Сообщения:
    206
    Симпатии:
    0
    Баллы:
    26
    Доброго времени суток. При попытке проведения документа возникает ошибка нарушения прав доступа, в результате чего код переходит к обработчику исключения, но и там вылетает с такой же ошибкой.
    Если просто использовать код НовыйДокумент.Записать(); без исключений и прочего мусора, то все работает без проблем. Как можно сделать код приведенный ниже рабочим?

    Код:
    Попытка
    НовыйДокумент.Записать(COM.РежимЗаписиДокумента.Проведение, COM.РежимПроведенияДокумента.Неоперативный);
    Исключение
    НовыйДокумент.Записать();
    КонецПопытки;
    P.S. Ошибка нарушения прав доступа из-за некоторых недоделанных обработчиков перед записью. В будущем планируется устранить:)
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Необходимо устранить проблемы с уровнем доступа: запускать проведение документа через привилегированный модуль или подключатся к удаленной БД пользователем с полными правами.
    Euronymous нравится это.
  3. TopicStarter Overlay
    Euronymous
    Offline

    Euronymous Опытный в 1С

    Регистрация:
    19 фев 2014
    Сообщения:
    206
    Симпатии:
    0
    Баллы:
    26
    Подключаюсь с полными правами, а "через привилегированный модуль" - это имеется ввиду "ПривилегированныйРежим"?
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Если подключение к удаленной БД происходить пользователем с полными правами, то о каких нарушениях прав доступа при проведении документов идет речь? Документ либо проводится, либо нет. Если нет, то устраняем проблемы, возникающие при проведении.
  5. TopicStarter Overlay
    Euronymous
    Offline

    Euronymous Опытный в 1С

    Регистрация:
    19 фев 2014
    Сообщения:
    206
    Симпатии:
    0
    Баллы:
    26
    Ошибка вылетает в случае не заполнения некоторых обязательных полей и выполнения обработок перед записью, в этом случае необходимо чтобы отрабатывало исключение, т.е. просто запись, чего не происходит
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Это не есть проблемы с уровнем доступа.
    В таком случае необходим какой-то признак, что проверка на заполнение реквизитов не производится. В любом случае необходимо сперва доработать алгоритм записи документа.
  7. TopicStarter Overlay
    Euronymous
    Offline

    Euronymous Опытный в 1С

    Регистрация:
    19 фев 2014
    Сообщения:
    206
    Симпатии:
    0
    Баллы:
    26
    Пока что главный вопрос - Если просто использовать код НовыйДокумент.Записать() - никаких проблем, но если использовать:

    Код:
    Попытка
    НовыйДокумент.Записать(COM.РежимЗаписиДокумента.Проведение, COM.РежимПроведенияДокумента.Неоперативный);
    Исключение
    НовыйДокумент.Записать();
    КонецПопытки;
    обработка исключения вылетает - почему?
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Потому что при проведении документа происходит какая-то не штатная ситуация. причем это может быть как ошибка времени выполнения(ошибка в коде), так и задуманное прерывание процесса проведения документа при проверке заполнения реквизитов документа/ТЧ документа.
  9. TopicStarter Overlay
    Euronymous
    Offline

    Euronymous Опытный в 1С

    Регистрация:
    19 фев 2014
    Сообщения:
    206
    Симпатии:
    0
    Баллы:
    26
    И снова та же проблема, при чем возникает исключительно при подключении с платформы 8.3 на 8.3; с 8.2 на 8.2 абсолютно никаких проблем, если документ по многим причинам в попытке не удается провести, то хотя бы в исключении его можно записать.
    Как это вообще объяснить логически и хоть как-то исправить?! )))
  10. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Такое даже на сайт говнокод.ру попало (не помню как пишется правильно).
    Не в обиду.
    Вы зачем базу мучаете?
    Хотя бы так тогда уж пишите:
    Код:
    НовыйДокумент.Записать(COM.РежимЗаписиДокумента.Запись);
    Попытка
      НовыйДокумент.Записать(COM.РежимЗаписиДокумента.Проведение, COM.РежимПроведенияДокумента.Неоперативный);
    Исключение
      ОбщегоНазначения.СообщиьОбОшибке(ОписаниеОшибки());
    КонецПопытки;
    
    --- Объединение сообщений, 21 май 2015 ---
    Хотя вру.
    Там не так кажется было было, там было вроде:
    Код:
    Попытка
    НовыйДокумент.Записать(COM.РежимЗаписиДокумента.Проведение, COM.РежимПроведенияДокумента.Неоперативный);
    Исключение
    НовыйДокумент.Записать(COM.РежимЗаписиДокумента.Проведение, COM.РежимПроведенияДокумента.Неоперативный);
    КонецПопытки;
    
    И комментарий от того кто нашел такое "а вдруг :)".
  11. TopicStarter Overlay
    Euronymous
    Offline

    Euronymous Опытный в 1С

    Регистрация:
    19 фев 2014
    Сообщения:
    206
    Симпатии:
    0
    Баллы:
    26
    По-моему мой код мучает базу гораздо в меньшей степени, зачем документ записывать, а потом перепроводить, учитывая что в большинстве случаев документ будет именно проводится?!
    Хотя в сложившейся ситуации ваш вариант конечно более правильный

    Ну просто никак логически не могу понять почему если док просто записывать - никаких проблем, если на 8.3 в попытке неудачно провести, то на записи он в исключении вылетает. Хотя на 8.2 всё отрабатывает отлично...
  12. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Я написал вам участок кода исключительно исходя из того, что вы как я понял пытаетесь сделать в данный момент. Вы насколько я понял пытаетесь изобразить ситуацию, что если документ не удалось провести то надо хотя бы записать его.
    Затраты ресурсов на запись, по сравнению с затратами на проведение документа - мизерны (как правило).

Поделиться этой страницей