Показать сообщение отдельно
Старый 24.05.2007, 00:13   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Blog bot Посмотреть сообщение
Первое что приходит в голову - это просто добавить новое поле в строки заказов и потом переделать некоторые складские отчеты таким образом, чтобы они строились по соединению (join) таблицы складских проводок с исходным документом. Проблема в том, что в реальности постоянно возникают ситуации, при которых клиент, задним числом вспоминает что неплохо бы это поле добавить не только в заказы (например), но и в складские журналы списания или переноса.
И не только это.
Заказы - это по сути специализированные Журналы.
Журналы - это по сути черновики.
При разноске информация из черновиков переносится в беловики (в проводки и документы)
А черновики могут быть удалены!!!! (это штатное поведение Аксапты)

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

К сожалению, эту ошибку "Join с первичными документами" сделали при локализации. При некоторых условиях заказы/закупки/журналы удалять нельзя (книги продаж/покупок, налоговый учет, ОС).

Цитата:
Сообщение от Blog bot Посмотреть сообщение
Если транслировать эту задачу в более приземленные термины, то нужно:
1. Добавить в таблицу складских проводок (inventTrans) поле "Сейл" и копировать туда поле "Ответственный продавец" из шапки заказа
Ох. Ни в коем случае не напрямую из шапки заказа!
Поля обязательно надо протаскивать через SalesParmTable, PurchParmTable!
Иначе концов не собрать при разборе полетов!

А слово "копировать" очень правильное.
__________________
полезное на axForum, github, vk, coub.