|
![]() |
#1 |
Участник
|
Цитата:
Сообщение от tyrex
Пока есть такие идеи:
1) лезем в 12 кодюнит, заводим там временную таблицу, в которую скидываем проводки, в триггере FinishCodeunit пишем ERROR('') для отката транзакций. Перед еррором выводим форму с будущими проводками - недостаток: если в таблицу 17 у нас попадут записи не из 12 кодюнита, а из какого-нибудь друго, то этих проводок мы не отследим Только получившиеся проводки копируются, транзакция откатывается, форма показывается. Минусы - вероятность блокировок возрастает. Цитата:
Сообщение от tyrex
2) лезем в 17 таблицу, вешаем на триггер OnInsert заполнение своей собственной таблицы (дублера таблицы 17). в кодюните 12 заменяем INSERT на INSERT(TRUE). В триггер FinishCodeunit добавляем ERROR('').
Перед еррором выводим форму с будущими проводками. - недостаток: после того как сработает еррор, транзакция откатится и соотственно наша собственная таблица тоже подчистится Где-то в глубинах Навижина может быть создание проводок на основании текущей в этой или в других таблицах. Например, создание проводки округления возможно только после создание всех проводок с данным номером документа. Поэтому вариант 2 не годится в общем случае. |
|
![]() |
#2 |
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 не годится в общем случае. |
|
![]() |
#3 |
Участник
|
Цитата:
Сообщение от tyrex
А затем сворачивает форму (не закрывает, а сворачивает!), открывает другой счет и снова смотрит будущие проводки.
Еще одно НО: одновременно будущие проводки могут смотреть несколько пользователей и где-то надо хранить флаг "будущности" для каждого юзера В Аксапте используется механизм временных таблиц для хранения промежуточных итогов. Оставлять ТОЛЬКО на экране - принципиально неправильно. |
|
![]() |
#4 |
Moderator
|
Цитата:
Сообщение от mazzy
В Аксапте используется механизм временных таблиц для хранения промежуточных итогов.
Оставлять ТОЛЬКО на экране - принципиально неправильно. Не думаю что это неправильно - т.к. задача показать проводки реализуется. Тут проблема в том, как отследить появление записей в G/L минуя 12 кодюнит "Gen. Jnl.-Post Line" - слишком много функционала надо перелопатить. Пахнет коммерческой разработкой :-) |
|