Зафиксировать транзакцию при отказе. Как? #714369


#0 by ИС-2
в продолжении Необходимо менять документ заказ покупателя, если не прошли проверки в реализации. Примерно такой код: КонецПроцедуры Он в Сделке изменения не фиксируются. Это из-за того, что действие выполняется в транизакции? Как можно зафиксировать изменения, если транзакция откатывается? Выносить в форму? Что еще?
#1 by shuhard
[Как можно зафиксировать изменения, если транзакция откатывается] хранить их там где нет транзакций: - в файлах - в другой СУБД
#2 by vde69
не возможно... 1с не поддерживает вложеные транзакции, если внутри вложеной транзакции будет необработаная ошибка она протранслируется на самую верхнюю транзакцию выход только один - сделать ВНЕ транзакции...
#3 by Рэйв
Сделай кнопку "Проверка" и пока ее не нажмут не давай записать.
#4 by DrZombi
Ты главное помни, когда ты повторно вызываешь "Записать" в Предопределенных процедурах Модуля документа. То они будут вызываться каждый раз и до бесконечности. Порочный Круг лучше разрывать элементарной передаче параметра через "ДополнительныеСвойства" Документа (Объекта) И анализировать, есть ли "Флаг", того что документ уже записывается повторно :)
#5 by DrZombi
+ Да и код "СделкаОб.ЕстьОшибки = истина"... Зачем оно? Как правило, если Пользователь записывает не проведенный документ, то можно разрешать ему делать, все что Угодно... Проверку лучше делать перед или при Проведении. Ну и соответственно, если документ уже проведен.
#6 by DrZombi
+  И если пользователь просто записывает документ без проведения, так и меняй признак "ЕстьОшибки" на истину. И далее работай в Журналах для разукраски :)
#7 by ИС-2
печально
#8 by AlexITGround
обрати внимание на 8 пост в предыдущей теме или постарайся подробнее объяснить с какой целью требуется изменить ЗаказПокупателя, а то тут предлагатели уже напредлагали
#9 by AlexITGround
" логика такая. При проведении реализации могут возникнуть ошибки (большая дебеторка, нет товара на остатках, нет цен и т.д) или, при автоформировании, будут удаляться позиции, которых нет на остатке. Т.е надо фиксировать почему клиенту не отгрузили, то что он хотел" - большая дебеторка Ведиде кредитный контроль на уровне заказа. - нет товара на остатках Делайте закрытие заказов типовым способом, указывая причину невыполнения заказов. Это тоже важный момент. - нет цен Это вообще забей. Если вообще нет - то не проводить документ. Если не те цены - воспитывать фин. отдел или кто там у вас их вводит не вовремя.
#10 by ИС-2
все это не подходит т.к очень большой объем ввода документов (1000 за 1 час). Типовым функционалом не пахнет
#11 by ИС-2
сейчас надо как-то зафиксировать транзакцию, которая происходит в обработке проведения (контроль остатков). Как можно сделать?
#12 by ИС-2
Составили способы. Есть еще: 1.    Вынос проверки в событие ПередЗаписью. Если документ не удается провести, то менять режим записи с проведения на запись. Таким образом транзакция зафиксируется. 2.    Вынос проверки в форму 3.    Писать GUIDы причин и реализаций в файлики на XEON. Сложно и не надежно 4.    Писать GUIDы причин и реализаций в журнал регистрации. Медленная работа журнала регистрации 5.    Писать GUIDы причин и реализаций в отдельной базе и подтягивать данные от туда 6.    Писать GUIDы причин и реализаций в глобальную переменную клиентского сеанса. Через обработчик ожидания считывать информацию из данной переменной и записывать. Тормоза у пользователя 7.    При возникновении ошибки порождать фоновое задание, которое будет менять заказ.
#13 by France
зачем тогда создавать заказ, если его "втихаря" и "взади" будете править при проведении реализации?? не проще отказаться от использования заказов??
#14 by hhhh
можно записывать эти сделки например в журнал регистрации. Потом, после транзакции обработкой меняете сделки.
#15 by ИС-2
таково ТЗ. Надо фиксировать именно в заказе. Поясните, пжс, про блокировки при реализации варианта 1. Вынос проверок в событие ПередЗаписью. Если документ не удается провести, то менять режим записи с проведения на запись. Таким образом транзакция зафиксируется. Событие ПередЗаписью реализации. Идет проверка по остаткам, в этот момент блокируем записи по измерениям (склад+номенклатура). Если контроль остатков прошел, то делаем запись в регистр, снимаем блокировку регистра. Если нет остатков, то тоже снимаем блокировку. Остальные движения выполняются в проведении. Блокировка остатков будет до тех пор пока документ полностью не проведется или она пропадет как только я сниму блокировку?
#16 by ИС-2
вверх
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С