В учетных системах обычно применяется одна из двух разных стратегий работы с документами - построчное сохранение в базе данных и сохранение с буферизацией в оперативной памяти.
В первом случае при добавлении или корректировке строки документа изменение сразу отражается в базе данных. Последующее нажатие кнопки подтверждения (ОК) приводит к дополнительным проверкам и закрытию диалога работы с документом, а закрытие документа без подтверждения изменений приводит к автоматическому откату сделанных записей в базе данных. Во втором случае все изменения в строках документа делаются в оперативной памяти, а запись в базу данных осуществляется при нажатии кнопки подтверждения (ОК). Закрытие документа без подтверждения просто закрывает диалог работы с документом, не производя запись в базу данных.
В Купце используется вариант с построчным сохранением документов. Его реализация существенно сложнее варианта с буферизацией и требует от пользователей более дисциплинированной работы. Есть и свои плюсы. Можно организовать более тесное взаимодействие между пользователями, так как они знают о работе друг друга, и при всяких потенциально возможных аппаратных сбоях результаты работы не теряются, так как они уже сохранены в базе данных.
Ниже приведен скриншот диалога подбора товаров при выписке отгрузочной накладной.
Когда оператор создает новую накладную, она находится в режиме "Выписывается", выбираемые в ней товары автоматически резервируются, уменьшая доступный свободный остаток товаров на складе. После утверждения накладной уменьшается фактический остаток на складе, резерв снимается.
В колонке "Ост своб" выводится свободный остаток товаров на складе. В пределах этого остатка оператор может выписать товары в накладной (если, конечно, ему не разрешена выписка в минус в настройках прав доступа). Как только кто-то из операторов выпишет товар, у всех остальных значение свободного остатка обновляется. В колонке "Выписано" отражается количество товаров, которые выписываются. Нажав кнопку "Выписан", можно посмотреть, кто из операторов выписывает данный товар. Нажав кнопку "Карточка", можно посмотреть все операции с товаром, принятые к учету (то есть по утвержденным документам). В данном диалоге еще надо обратить внимание, что товары следуют в алфавитном порядке, а поиск выполняется по коду. Эта схема используется при так называемой "витринной торговле", когда покупатель диктует оператору коды товаров, которые он хочет приобрести. Если покупатель просит товара больше, чем есть на свободном остатке, оператор может оперативно сообщить ему об этом и предложить подобный товар.
Если рассматриваемый пример спроецировать на систему с буферизированным вводом документов, то операторы не знают реального свободного остатка товаров и ориентируются на фактический остаток. Это приводит к тому, что в процессе сохранения и проведения (утверждения) документа товаров может не хватать, так как другой оператор первым сохранил (провел, утвердил) накладную. В результате приходится снова возвращаться к дефицитной позиции, обсуждать с покупателем, что заметно увеличивает время обслуживания.
Конечно, речь идет об общей стратегии работы с документами в учетной системе. В отдельных конкретных случаях описанные две технологии могут сочетаться. Например, в Купце в диалоге "Окно кассира", предназначенном для организации работы продавца в рознице, используется буферизованный ввод чеков. Аналогично, системы с буферизированным вводом могут использовать построчное сохранение документа, когда требуется обеспечить конкурентную работу операторов.