1с получить ошибку проведения документа

Как узнать ошибку проведения документа

Автор Sinsinmin, 06 мая 2011, 09:32

0 Пользователей и 1 гость просматривают эту тему.

программно пишу следующее

ЦитироватьПопытка
        ТекстОшибки = «»;
      ДокКадрПерем.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
   Исключение
      ТекстОшибки = ОписаниеОшибки();
      ЗаписьОшибки(ТекстОшибки);
      ДокКадрПерем.Записать(РежимЗаписиДокумента.Запись);
   КонецПопытки;   

Но получается что многие документы проводятся с противоречиями. Таким образом выполнение не заходит в исключение проведения. Каким образом можно узнать ошибку проведения документа?


Ошибки проведения обрабатываются в ОбработкеПроведения() документа и выводятся обычным Сообщить()…

  • 1 пользователь сказал спасибо!

Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.


Это код внешней обработки.


И мне нужно передать эти ошибки в текстовый документ, для логирования ошибок внешней обработки.


Ну а чем существубщий код не подходит?


Если ты имеешь ввиду мой код, то он выдаёт ошибку только при исключении. Тобишь когда проведение документа невозможно. А хотелось бы узнать ошибки при проведении документа.


Хм, а какие ошибки возможны при нормальном проведении документа? Документ либо провелся (ошибок нет), либо не провелся (ошибки есть). Или я не так понял?


Аааа, кажется вкурил. Ты имеешь ввиду ошибки, которые не отменяют при этом проведения документа?


В ОбработкеПроведения() там где сообщаете об ошибке через Сообщить() надо добавить код, который будет помещать ошибки еще куда нибудь, например в РегистрСведений…

Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.


нельзя трогать код программы. Всё с помощью внешней обработки. Также нельзя делать регистры. Текстовый документ самое то.


Программное получение ошибки при проведении документа ☑ 0

VigerV

17.09.12

18:16

Как программно получить ошибку при проведении документа, т.е. допустим программное проведение ряда документов и программное получение(подробное) , не строчку кода, а например «Не списано по партиям…». Все это выполняется в регламентном задании. ОписаниеОшибки() дает только номер строчки кода.

1

Wobland

17.09.12

18:18

лог пиши

2

Wobland

17.09.12

18:19

+(1) я про штатный вывод Сообщить в файл

3

vmv

17.09.12

18:19

в критичные методы добавь параметр СтрокаСообщенияОбОшибке и накапливай эти НЕ пустые строки в контейнер — по другому хренушки

4

undertaker

17.09.12

18:20

в журнал регистрации можно

5

VigerV

17.09.12

18:25

Это и пишется в лог регламентного задания который после отсылается на мыло. Но ОписаниеОшибки() выдает не ту инфу.

6

VigerV

17.09.12

18:25

(3) не совсем понял что ты имел в виду под «в критичные методы добавь параметр СтрокаСообщенияОбОшибке»

7

shuhard

17.09.12

18:27

(5)я использую запуск обработки с ключиком  /OutC:\Robot\del_log.log -NoTruncate

и файлик к письму присоединяю

8

undertaker

17.09.12

18:27

(5) а ОписаниеОшибки() и не выдаст тебе что «Не списано по партиям»

9

Wobland

17.09.12

18:28

+(2) *про штатное перенаправление вывода окно сообщений -> файл

10

Wobland

17.09.12

18:28

(7) вот оно

11

VigerV

17.09.12

18:51

В файл выводить нельзя, не из-за 1с а изза особенностей сервера, можно ли выводить куда-то внутри самой 1С?

12

unregistered

17.09.12

18:53

(11) Что за особенность такая?…

13

undertaker

17.09.12

18:53

(11) см. (4)

14

unregistered

17.09.12

19:00

(13) (4) Как?

15

undertaker

17.09.12

22:37

(14) ЗаписьЖурналаРегистрации(«Имя события», УровеньЖурналаРегистрации.Ошибка, , , «Текст ошибки»)

потом по событию можно фильтры накладывать или выгружать ЖР и програмно обрабатывать

16

rs_trade

17.09.12

23:00

(12) он просто не знает как. вот и вся особенность.

17

unregistered

18.09.12

08:51

(15) Это и ёжику понятно. Я думал ты знаешь метод не связанный с изменениями конфигурации.

Ты предлагаешь автору по быстренькому добавить во всю конфу в те места, где используется Сообщаить() при проведении воткнуть функцию записи в журнал.

В лучшем случае всё ограничиться процедурой общего модуля ОбщегоНазначения.ОшибкаПриПроведении (в разных конфах может называться по разному). А если этого окажется мало?

18

shuhard

18.09.12

08:52

(17) в типовой УПП это сделано на уровне константы =)

19

unregistered

18.09.12

09:08

(18) Прикольно. Я с УПП не работаю, а потому не знал.

20

shuhard

18.09.12

09:10

(19) кругозор расширил

Добрый день! При проведении документа осуществленна проверка, в случае проведения документа из формы и наличию ошибок при проведении необходимо отобразить подробный список ошибок, механизм СообщитьПользователю не подходит для этого. Подскажите, как лучше передать результат выполнения на клиентскую часть? Погуглил — рекомендуют разместить результат в параметрах сеанса и т.д., но мне это кажется диким, что лучше сделать?

не, не подходит такой вариант Нужна специализированная форма в которой будет в иерархическом виде отображаться ошибки, предлагаться расшифровки и горячие кнопки для исправления… необходимо где то сохранить результат, чтобы потом его вывести в отдельной форме «для ошибок», либо на форме документа отобразить элемент, по нажатию на который будет выведена форма «для ошибок».

почему с этим не справиться регистр сведений?

при откате транзакции, он тоже откатывается.

Чем временное хранилище не подходит?

пока решил сделать именно через временное хранилище, остался вопрос только с тем как кинуть адресом временного хранилища в форму и в составке данных, которые кидаю…

+100500 — почему то все советуют сделать именно через справочник

ТЗ/ДЗ, что может быть проще?

так то эти данные не отображаются клиенте+кидаться с сервером ДЗ вообще нельзя.

Самый хороший способ — через доп.данные объекта-документа. Добавить в доп.данные таблицу значений, в форме должно быть событие, которое происходит после записи о объекта и в котором доступен сам объект, т.е. не произошла еще конвертация в реквизит формы. там и прочитать доп.параметры, заполнив реквизит формы — таблицу значений с сообщениями, ну а дальше можно делать с ней что угодно. Сейчас под рукой нет 1с, проверить это не могу, но я бы действовал примерно так

— если транзакция откатывается — события такого нет. И вообще с доп. свойствами можно работать на форме перед записью на сервере, после записи у тек. объекта их уже нет — там другой экземпляр. Хотя если такой способ рабочий, то может с ним стоит еще покопаться. Я пока решил эту проблему по другому, но хочу вернуться к ней и сделать правильно.

Что бы проверить, что он рабочий — нужно в конфигураторе посидеть. Но у формы документа, если я не ошибаюсь, есть событие, в котором доступен объект, не реквизит формы Объект, а именно тот объект, который был записан и он должен передаваться в параметре события. Но, конечно, я могу ошибаться. Проверить смогу только на следующей неделе -сейчас в отпуске

а если его персонально в транзакцию обернуть?

в 1с нет автономных транзакций. Все, что выполняется в рамках транзакции, например, запись, является одной транзакцией и будет откачено при роллбеке. Как вариант, если использовать временное хранилище — можно использовать guid самого объекта. Затем на форме получить значение из временного хранилища по этому guid-у. Это не очень хорошее решение, но рабочее.

Объект.ДополнительныеСвойства — это структура которая существует пока существует сам объект, сувай туда.

Я тут поигрался, и вроде как в случае отказа поведения, никакой обработчик формы не вызывается. Поэтому видится вариант делать свою кнопку проведения в которой получать объект, проводить, и ловить ошибки в ДополнительныеСвойства.

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Последовательность событий при записи нового документа из формы документа

Заливкой выделены события, выполняющиеся в транзакции записи.

Последовательность событий при проведении документа из формы документа (провести и закрыть)

Заливкой выделены события, выполняющиеся в транзакции записи.

Последовательность событий при отмене проведения документа из формы документа

Заливкой выделены события, выполняющиеся в транзакции записи.

Обработчики событий

ПередЗаписью(Отказ, ПараметрыЗаписи)  // модуль формы клиент

Расширение управляемой формы для документа. Возникает на клиенте перед выполнением записи объекта из формы. Процедура-обработчик данного события вызывается перед вызовом процедуры-обработчика события ПередЗаписью.

  • Отказ, тип Булево. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина, запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь.
  • ПараметрыЗаписи, тип Структура. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения». Параметр РежимПроведения может отсутствовать, если режим проведения в документе не определен.

Примечание: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере.

ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)  // модуль формы сервер

Расширение управляемой формы для документа. Вызывается перед записью объекта на сервере. Можно отменить запись. Выполняется вне транзакции.

  • Отказ, тип Булево. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина, запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь.
  • ТекущийОбъект, тип ДокументОбъект.ИмяДокумента. Записываемый объект.
  • ПараметрыЗаписи, тип Структура. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».
ДокументОбъект.ИмяДокумента.ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)  // модуль объекта сервер

Возникает перед выполнением записи объекта. Процедура-обработчик вызывается после начала транзакции записи, но до начала записи документа.

  • Отказ, тип Булево. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь.
  • РежимЗаписи, тип РежимЗаписиДокумента. В параметр передается текущий режим записи документа. Позволяет определить в теле процедуры режим записи. Изменение значения параметра позволяет изменить режим записи.
  • РежимПроведения, тип РежимПроведенияДокумента. В данный параметр передается текущий режим проведения. Изменение значения параметра позволяет изменить режим проведения.
ДокументОбъект.ИмяДокумента.ПриЗаписи(Отказ)  // модуль объекта сервер

Возникает при записи объекта. Процедура-обработчик вызывается после записи объекта в базу данных, но до окончания транзакции записи.

  • Отказ, тип Булево. Признак отказа от записи документа. Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись документа выполнена не будет. Значение по умолчанию: Ложь.
ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)  // модуль формы сервер

Расширение управляемой формы для документа. Возникает на сервере при записи объекта из формы. Процедура-обработчик вызывается после записи объекта (после события ПриЗаписи объекта) в базу данных, но до окончания транзакции записи.

  • Отказ, тип Булево. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись произведена не будет. Значение по умолчанию: Ложь.
  • ТекущийОбъект, тип ДокументОбъект.ИмяДокумента. Записываемый документ.
  • ПараметрыЗаписи, тип Структура. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».
ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)  // модуль формы сервер

Расширение управляемой формы для документа. Вызывается после записи объекта на сервере и после завершения транзакции.

  • ТекущийОбъект, тип ДокументОбъект.ИмяДокумента. Записываемый объект.
  • ПараметрыЗаписи, тип Структура. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».
ПослеЗаписи(ПараметрыЗаписи)  // модуль формы клиент

Расширение управляемой формы для документа. Возникает на сервере после записи объекта и после окончания транзакции записи, то есть к моменту вызова этой процедуры запись объекта полностью завершена.

  • ПараметрыЗаписи, тип Структура. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».

Примечание: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере.

Поиск:
1С:Предприятие • Документ • Перед записью • Перед записью на сервере • После записи • После записи на сервере • При записи • При записи на сервере • Событие

Как в ЗУП 3.1 можно посмотреть описание ошибки? Например, когда не проводится документ Начисление зарплаты и взносов.

В ЗУП 3.1 есть 3 способа посмотреть описание ошибки:

  • Непосредственно в самом документе, при проведении / записи которого выдается ошибка.
  • В Журнале регистрации (Администрирование — Обслуживание — Журнал регистрации).
  • Сформировать отчет об ошибке для отправки в 1С и посмотреть описание во вложенном файле отчета – способ доступен для ошибок с типом Возникла непредвиденная ситуация.

При появлении ошибки в документе, можно анализировать текст самого сообщения о проблеме.

Также текст ошибки можно увидеть в Журнале регистрации. Для этого в поле Критичность выберем значение Ошибка.

В настройках отбора можно убрать фильтр по периоду.

Подробный текст ошибки можно открыть двойным щелчком левой кнопки мыши по ее описанию.

При возникновении ошибки, связанной с непредвиденной ситуацией, для анализа проблемы можно воспользоваться ссылкой Сформировать отчет об ошибке.

В открывшейся форме по ссылке Подробный текст ошибки можно будет увидеть описание проблемы.

Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Оцените публикацию

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд

(2 оценок, среднее: 5,00 из 5)

Загрузка…

Назад к статье

Отчеты, документы, обработки

Назад к статье

Новости и изменения

Назад к статье

Дополнительные материалы

Назад к статье

Топ-вопросов

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • 1с подождите пожалуйста выполняется сохранение информации об ошибке
  • 1с ошибка преобразования картинки
  • 1с платежное поручение исходящее ошибка
  • 1с ошибка прав доступа при открытии внешней обработки
  • 1с пишет ошибка формата потока как исправить

  • Добавить комментарий

    ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: