Как узнать ошибку проведения документа
Автор Sinsinmin, 06 мая 2011, 09:32
0 Пользователей и 1 гость просматривают эту тему.
программно пишу следующее
ЦитироватьПопытка
ТекстОшибки = «»;
ДокКадрПерем.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
Исключение
ТекстОшибки = ОписаниеОшибки();
ЗаписьОшибки(ТекстОшибки);
ДокКадрПерем.Записать(РежимЗаписиДокумента.Запись);
КонецПопытки;
Но получается что многие документы проводятся с противоречиями. Таким образом выполнение не заходит в исключение проведения. Каким образом можно узнать ошибку проведения документа?
Ошибки проведения обрабатываются в ОбработкеПроведения() документа и выводятся обычным Сообщить()…
- 1 пользователь сказал спасибо!
Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.
Это код внешней обработки.
И мне нужно передать эти ошибки в текстовый документ, для логирования ошибок внешней обработки.
Ну а чем существубщий код не подходит?
Если ты имеешь ввиду мой код, то он выдаёт ошибку только при исключении. Тобишь когда проведение документа невозможно. А хотелось бы узнать ошибки при проведении документа.
Хм, а какие ошибки возможны при нормальном проведении документа? Документ либо провелся (ошибок нет), либо не провелся (ошибки есть). Или я не так понял?
Аааа, кажется вкурил. Ты имеешь ввиду ошибки, которые не отменяют при этом проведения документа?
В ОбработкеПроведения() там где сообщаете об ошибке через Сообщить() надо добавить код, который будет помещать ошибки еще куда нибудь, например в РегистрСведений…
Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.
нельзя трогать код программы. Всё с помощью внешней обработки. Также нельзя делать регистры. Текстовый документ самое то.
VigerV
17.09.12
✎
18:16
Как программно получить ошибку при проведении документа, т.е. допустим программное проведение ряда документов и программное получение(подробное) , не строчку кода, а например «Не списано по партиям…». Все это выполняется в регламентном задании. ОписаниеОшибки() дает только номер строчки кода.
Wobland
17.09.12
✎
18:18
лог пиши
Wobland
17.09.12
✎
18:19
+(1) я про штатный вывод Сообщить в файл
vmv
17.09.12
✎
18:19
в критичные методы добавь параметр СтрокаСообщенияОбОшибке и накапливай эти НЕ пустые строки в контейнер — по другому хренушки
undertaker
17.09.12
✎
18:20
в журнал регистрации можно
VigerV
17.09.12
✎
18:25
Это и пишется в лог регламентного задания который после отсылается на мыло. Но ОписаниеОшибки() выдает не ту инфу.
VigerV
17.09.12
✎
18:25
(3) не совсем понял что ты имел в виду под «в критичные методы добавь параметр СтрокаСообщенияОбОшибке»
shuhard
17.09.12
✎
18:27
(5)я использую запуск обработки с ключиком /OutC:\Robot\del_log.log -NoTruncate
и файлик к письму присоединяю
undertaker
17.09.12
✎
18:27
(5) а ОписаниеОшибки() и не выдаст тебе что «Не списано по партиям»
Wobland
17.09.12
✎
18:28
+(2) *про штатное перенаправление вывода окно сообщений -> файл
Wobland
17.09.12
✎
18:28
(7) вот оно
VigerV
17.09.12
✎
18:51
В файл выводить нельзя, не из-за 1с а изза особенностей сервера, можно ли выводить куда-то внутри самой 1С?
unregistered
17.09.12
✎
18:53
(11) Что за особенность такая?…
undertaker
17.09.12
✎
18:53
(11) см. (4)
unregistered
17.09.12
✎
19:00
(13) (4) Как?
undertaker
17.09.12
✎
22:37
(14) ЗаписьЖурналаРегистрации(«Имя события», УровеньЖурналаРегистрации.Ошибка, , , «Текст ошибки»)
потом по событию можно фильтры накладывать или выгружать ЖР и програмно обрабатывать
rs_trade
17.09.12
✎
23:00
(12) он просто не знает как. вот и вся особенность.
unregistered
18.09.12
✎
08:51
(15) Это и ёжику понятно. Я думал ты знаешь метод не связанный с изменениями конфигурации.
Ты предлагаешь автору по быстренькому добавить во всю конфу в те места, где используется Сообщаить() при проведении воткнуть функцию записи в журнал.
В лучшем случае всё ограничиться процедурой общего модуля ОбщегоНазначения.ОшибкаПриПроведении (в разных конфах может называться по разному). А если этого окажется мало?
shuhard
18.09.12
✎
08:52
(17) в типовой УПП это сделано на уровне константы =)
unregistered
18.09.12
✎
09:08
(18) Прикольно. Я с УПП не работаю, а потому не знал.
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 дней бесплатно
Оцените публикацию
(2 оценок, среднее: 5,00 из 5)
Загрузка…
Назад к статье
Отчеты, документы, обработки
Назад к статье
Новости и изменения
Назад к статье
Дополнительные материалы
Назад к статье