Попалась как-то база Бухгалтерии, редакция 2.0. В базе 62.01 и 62.02 были в некотором беспорядке :)
Поставили задачу привести в приличный вид на конец какого-то периода.
Беспорядок выражался в различных проявлениях последствия манкирования пользователями последовательного проведения документов. Или, проще говоря, в базе никто не занимался восстановлением последовательности.
Открываем ОСВ (пардон, открываем оборотно-сальдовую ведомость) по 62 и видим по одному контрагенту, по одному договору, по 62.01 дебетовое сальдо, по 62.02 кредитовое. Вот бы взять и все перепровести... А нельзя. Не потому, что сдано, потому что нельзя. Именно в этой базе, по определенным причинам (независящим от базы, конфигурации и прочего) нельзя перепроводить документы.
Поэтому выход один. Садится и начинать как-то закрывать остатки. Сел, попробовал - удовольствие сомнительное.
Ситуацию сальдо по 62.01/62.02 можно попробовать закрыть через корректировку долга. Ну да, там надо держать ухо в остро, надо бдить, что бы не подцепились другие счета (не исключено, что у контрагента есть еще остатки по 60.01, по 76 счетам).
Когда увидел ситуацию дебетовое сальдо по 62.01 и ... минусовое кредитовое сальдо по 62.02 понял, что пора писать обработку. В этой ситуации напрашивается перенос отрицательного остатка 62.02 на 62.01. Ну раз аванс пересписали, вроде как долг. Что делать с 76.АВ и вообще вопрос НДС в этой ситуации опускаем. Это уже другой этап борьбы за достоверность учета :)
В конечном итоге понадобился инструмент, который может обрабатывать все найденные ситуации (отрицательное буду приводить как видно в ОСВ):
- отрицательное СКД по 62.01. Переносим на 62.02
- отрицательное СКК по 62.02. Переносим на 62.01
- СКД 62.01 и СКК 62.02. Просто закрываем между собой.
- отрицательное СКД по 62.01 и положительное СКД по 62.01 по документам. Да да, и такое было. Закрыть между собой.
- отрицательное СКК по 62.02 и положительное СКК по 62.02 по документам. Закрыть между собой.
И так далее....
Со временем на инструменте добавились сервисные кнопки. Указав на одной стороне 62.01, надоело на вторую бегать за 62.02. Добавил через кнопку заполнения - раз и дальше само :)
Что может инструмент, привел выше. Как им пользоваться.
Обработка работает со сторонами проводки. Так как писалась изначально под 62 счет, то и термины с этой стороны. Для 60 счет термины меняются местами в голове пользователя, в обработке нет :)
Обработка в результате своей работы порождает операции.
Момент анализа указывается на начало. Дата операции указывается со временем, для точности позиционирования.
Для внутреннего закрытия счета можно заполнить лишь одну из сторон. Я по привычке для закрытия 62.01 заполняю дебетовую сторону. Если заполнить на кредитовой стороне 62.02, просто нажимаем "Заполнить др. счет". Если надо скопировать 62.01 на другую сторону (такое тоже иногда надо), нажимаем "Копировать др. счет".
При выборе контрагента ищется договор. Если договор по клиент/организация один - он и подставляется. Обработка не учитывает, что договор для 62.01 должен быть с покупателем, а для 60.01 с поставщиком. Инструмент универсальный, иногда надо было выбирать "неправильный" договор.
Контрагент при выборе копируется на другую сторону автоматически. Договор автоматически не копируется, так как часто приходится иметь дело с другим договором. Для удобства заполнения другой стороны нажимаем кнопку "Копировать др. дог."
Указали и можно уже закрывать.
Для закрытия в пределах счета (отрицательное на положительное) жмем кнопку "Закрыть счет". В этому случае проводка будет в пределах стороны. Например, сторона была 62.01. В пределах этой стороны и будет закрытие, будет проводка 62.01/62.01
Для переноса на другую жмем кнопку Перенести долг на другую сторону. Если остаток отрицательный, добавляем флажок "Отрицательный остаток" :)
Иногда надо поменять местами счета сторон, но не менять аналитку. Жмем кнопку "Поменять местами счета ..."
Для закрытия остатков между сторонами (например 62.01/62.02) жмем кнопку "Закрыть по аналитике Дт/Кр". А если с обоих сторон отрицательное сальдо, жмем кнопку "Закрыть по аналитике Дт/Кр (отр.)".
Для открытия порожденной последней операции жмем на кнопку "Открыть последнюю операцию". Удаления последней операции делать не стал. Это важно было в начале действа, потом все вошло в колею, удалять не понадобилось.
Обработал базу по 62 счету, обработал по 60 - все прошло хорошо. При работе по 60 счету надо в голове менять логику работы.
Вот, пожалуй, и все. Не хватает еще полного автоматизма. Но его наращивать не получилось - с базой к тому времени уже разобрались :)