![]() |
#9 |
Moderator
|
Цитата:
Сообщение от mazzy
Цитата:
Сообщение от tyrex
Пока есть такие идеи:
1) лезем в 12 кодюнит, заводим там временную таблицу, в которую скидываем проводки, в триггере FinishCodeunit пишем ERROR('') для отката транзакций. Перед еррором выводим форму с будущими проводками - недостаток: если в таблицу 17 у нас попадут записи не из 12 кодюнита, а из какого-нибудь друго, то этих проводок мы не отследим Только получившиеся проводки копируются, транзакция откатывается, форма показывается. Минусы - вероятность блокировок возрастает. Сразу всплыли недочеты: - как я и предполагал, проводки в G/Ledger попадают не только через 12 кодюнит :-( - форма показывает не все будущие проводки - блокировок нет, потому что форма показывается в немодальном режиме и транзакция успевает откатиться (однако данные из формы не пропадают). НО: есть сложность в синхронизации пользовательских действий. Например пользователь может открыть счет и посмотреть его будущие проводки. А затем сворачивает форму (не закрывает, а сворачивает!), открывает другой счет и снова смотрит будущие проводки. Еще одно НО: одновременно будущие проводки могут смотреть несколько пользователей и где-то надо хранить флаг "будущности" для каждого юзера Цитата:
Сообщение от mazzy
Цитата:
Сообщение от tyrex
2) лезем в 17 таблицу, вешаем на триггер OnInsert заполнение своей собственной таблицы (дублера таблицы 17). в кодюните 12 заменяем INSERT на INSERT(TRUE). В триггер FinishCodeunit добавляем ERROR('').
Перед еррором выводим форму с будущими проводками. Где-то в глубинах Навижина может быть создание проводок на основании текущей в этой или в других таблицах. Например, создание проводки округления возможно только после создание всех проводок с данным номером документа. Поэтому вариант 2 не годится в общем случае. |
|