#0
by ИС-2
в продолжении Необходимо менять документ заказ покупателя, если не прошли проверки в реализации. Примерно такой код: КонецПроцедуры Он в Сделке изменения не фиксируются. Это из-за того, что действие выполняется в транизакции? Как можно зафиксировать изменения, если транзакция откатывается? Выносить в форму? Что еще?
#1
by shuhard
[Как можно зафиксировать изменения, если транзакция откатывается] хранить их там где нет транзакций: - в файлах - в другой СУБД
#2
by vde69
не возможно... 1с не поддерживает вложеные транзакции, если внутри вложеной транзакции будет необработаная ошибка она протранслируется на самую верхнюю транзакцию выход только один - сделать ВНЕ транзакции...
#4
by DrZombi
Ты главное помни, когда ты повторно вызываешь "Записать" в Предопределенных процедурах Модуля документа. То они будут вызываться каждый раз и до бесконечности. Порочный Круг лучше разрывать элементарной передаче параметра через "ДополнительныеСвойства" Документа (Объекта) И анализировать, есть ли "Флаг", того что документ уже записывается повторно :)
#5
by DrZombi
+ Да и код "СделкаОб.ЕстьОшибки = истина"... Зачем оно? Как правило, если Пользователь записывает не проведенный документ, то можно разрешать ему делать, все что Угодно... Проверку лучше делать перед или при Проведении. Ну и соответственно, если документ уже проведен.
#6
by DrZombi
+ И если пользователь просто записывает документ без проведения, так и меняй признак "ЕстьОшибки" на истину. И далее работай в Журналах для разукраски :)
#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. Вынос проверок в событие ПередЗаписью. Если документ не удается провести, то менять режим записи с проведения на запись. Таким образом транзакция зафиксируется. Событие ПередЗаписью реализации. Идет проверка по остаткам, в этот момент блокируем записи по измерениям (склад+номенклатура). Если контроль остатков прошел, то делаем запись в регистр, снимаем блокировку регистра. Если нет остатков, то тоже снимаем блокировку. Остальные движения выполняются в проведении. Блокировка остатков будет до тех пор пока документ полностью не проведется или она пропадет как только я сниму блокировку?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Создание документа копированием в управляемых формах
- обойти колонки табличной части
- Одна база УПП вместо нескольких баз УПП, УТ, БУХ, ЗУП
- Не установлен приемник XML.
- Конвертация данных.ПослеВыгрузки изменить ТЧ документа
- Программно открыть обработку удаления помеченных объектов
- ЗУП Сдельно-премиальная оплата труда
- Excel через ADO. Есть вопрос
- Сортировка ТЧ документа
- Как закрыть справочник физлиц на чтение?
- Замена УПП 1.3 на ERP УП 2.0
- Программно добавление, изменение состава подсистемы. управляемое приложение
- 1с + SDK Perco Продолжение темы.
- 1С 8.2 ЗУП 8 SQL печтная формируется очень долго
- СКД. передача параметров отбора в отчет при программном формировании
- Смена платформы на сервере с 8.2 на 8.3
- УФ. 8.3. Форму выбора из формы списка (НЕ программно)
- Медленная работа веб-сервисов 1С
- подписка на событие при проведении документа
- v7: Вылет программы при смене иконки.