Как записать в регистр сведений в документе при отмене транзакции? #604009


#0 by Антон Мак
При проведении документа (либо перед записью) проверяем некие условия и, если они не выполняются, не проводим документ. При этом сведения о причинах отказа от проведения документа необходимо записать в регистр сведений. В процедурах ПередЗаписью, ПриЗаписи и ОбработкаПроведение записать регистр нельзя, т.к. они выполняются в транзакции и при ее отмене запись в регистр тоже будет отменена. Каким образом можно реализовать такой механизм?
#1 by FIXXXL
проверять перед проведением не вариант?
#2 by unregistered
Запись и проведение происходят в одной транзакции.
#3 by Ненавижу 1С
1с не реализовала параллельные транзакции
#4 by Галахад
А зачем? Пользователю почитать лень?
#5 by Maxus43
для этого в ЖР пишут, он независим от транзакций
#6 by НЕА123
ПОслеЗаписи ?
#7 by patapum
не делай отмену транзакции. обнули движения, присвой статус не проведен, выдай ругань. и записывай себе в регистр
#8 by unregistered
У объекта не бывает. Только на форме.
#9 by hhhh
я писал эти сведения в таблицу значений, а потом уже после эта таблица сохранялась в регистр сведений. НО это было давно, ещё на 8.0.
#10 by Антон Мак
А где хранилась эта таблица? "Потом" - это в какой момент?
#11 by Антон Мак
Документы создаются автоматически, без участия пользователя, форма не открывается. Для этого и нужно сохранять отчет об ошибках проведения.
#12 by Maxus43
ЖР чем не устраивает? по ошибкам там отбор сделать и увидиш всё
#13 by Антон Мак
А к ЖР можно обращаться из кода? Нам нужно потом выводить эти ошибки в специальную форму пользователям.
#14 by Maxus43
в него только писать можно из кода, анализировать отдельно не получится, только после выгрузки его в файл
#15 by Галахад
В файлик пишите ошибки и пользователю письмом отправляете.
#16 by Maxus43
или просто в файлик, а другое регл задание пусть проверяет периодически, файл есть - пишет в регистр и удаляет файл
#17 by Антон Мак
Логично, но к сожалению, при базе на SQL и большом кол-ве заказов этот вариант будет не самым лучшим по скорости.
#18 by Антон Мак
Единственный более менее подходящий вариант был придуман такой: - Все проверки из обработки проведения выносятся в ПередЗаписью; - В конце ПередЗаписью если Отказ, меняем РежимПроведения с Проведения на Запись. - Пишем ошибки в регистр - ??? - ПРОфИТ Но, возможно, есть более изящное решение, позволяющее не выдергивать всё из обработки проведения?
#19 by ПиН
передзаписью Если РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда
#20 by Maxus43
нормальный вариант. файлики маленьки пиши только с описанием ошибки и ссылкой на док. рег задание потом в фоне сделает записи в регистр об ошибках
#21 by hhhh
таблица в глобальных переменных была, и обработчик ожидания запускался один раз в минуту, анализировал эту таблицу и писал в регистр.
#22 by MM
ВыгрузитьЖурналРегистрации(<Приемник>, <Фильтр>, <Колонки>, <ИмяВходногоФайла>, <МаксимальноеКоличество>) Параметры: <Приемник> (обязательный) Тип: Строка; ТаблицаЗначений. Строка, содержащая имя выходного XML файла, либо таблица значений, в которую будут выгружены выбранные в соответствии с отбором записи журнала регистрации.
#23 by Maxus43
я об этом же, только выгружать ЖР. А использовать его для отчетов юзеру об ошиюках - бред) там же другая инфа нужная
#24 by Sammo
Емнип, был еще вариант использования фонового задания, которое запускается без ожидания его завершения. Но сама постановка хромает, имхо. Например, нужну ли эти проверки при интерактивном проведении? Если речь идет про обработку, которая проводит документы - может эту проверку вынести в модуль обработки...
#25 by Maxus43
в обработке то легко...
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям