Цитата:
Сообщение от
Blog bot
Первое что приходит в голову - это просто добавить новое поле в строки заказов и потом переделать некоторые складские отчеты таким образом, чтобы они строились по соединению (join) таблицы складских проводок с исходным документом. Проблема в том, что в реальности постоянно возникают ситуации, при которых клиент, задним числом вспоминает что неплохо бы это поле добавить не только в заказы (например), но и в складские журналы списания или переноса.
И не только это.
Заказы - это по сути специализированные Журналы.
Журналы - это по сути черновики.
При разноске информация из черновиков переносится в беловики (в проводки и документы)
А черновики могут быть удалены!!!! (это штатное поведение Аксапты)
Join с первичным документам приводит к массе неприятных побочных эффектов.
Первый - черновики становится нельзя удалять (в результате растет база).
Второй - нарушается логика, которая гласит: в черновиках то, что мы собираемся сделать, а в проводках то, что уже сделали
Третий - значение поля в первичном документе становится нельзя измененять впоследствии (особенно для заказов/закупок). Если делается join, то в этом случае УЖЕ проведенный документ может ИЗМЕНИТЬ свое значение. Следовательно, нельзя изменять заджойненое поле при частичных отгрузки/закупках. Например, в заказе 100 шт. Ответственный Иванов. Клиенту отгружено 60 штук. Иванов заболел/умер/уволился, вместо него Петров. Но если мы поставим Петрова в шапку, то и уже отгруженные 60 штук пойдут на Петрова. Но с другой стороны, оставшиеся 40 надо отдать Петрову. Проблема.
Четвертый - о котором говорит Denis Fedotenko - первичные документы разные и в коде обрабатывать их надо по-разному.
К сожалению, эту ошибку "Join с первичными документами" сделали при локализации. При некоторых условиях заказы/закупки/журналы удалять нельзя (книги продаж/покупок, налоговый учет, ОС).
Цитата:
Сообщение от
Blog bot
Если транслировать эту задачу в более приземленные термины, то нужно:
1. Добавить в таблицу складских проводок (inventTrans) поле "Сейл" и копировать туда поле "Ответственный продавец" из шапки заказа
Ох. Ни в коем случае не напрямую из шапки заказа!
Поля обязательно надо протаскивать через SalesParmTable, PurchParmTable!
Иначе концов не собрать при разборе полетов!
А слово "копировать" очень правильное.