Назначение:
Автоматически сформировать такой документ корректировки, который бы привел существующие остатки регистра накопления к желаемым нами.
Существует аналогичная обработка для корректировки остатков регистров бухгалтерии.
Применение:
- исправление ошибок в регистрах, связанных с некорректным ведением учета ранее (если разбираться задним числом неуместно или невозможно)
- ввод, исправление остатков под желаемые (вы, разумеется, должны понимать, что вы делаете и зачем, и править смежные регистры тоже)
- быстрое обнуление остатков
- обнуление отрицательных остатков
- выборочная свертка базы (фиксация остатков регистров в документе "Корректировка записей регистров", после чего предшествующие документы можно пометить на удаление)
Практические примеры использования:
Обработка полезна на стадии "движения к светлому будущему" при исправлении/восстановлении учета. Особенно актуально для конфигураций КА, УПП, ERP, где практически каждый участок учета находится в нескольких регистрах, и остатки по ним должны быть согласованы.
- Корректировка неправильных остатков в партионном учете (ПартииТоваровНаСкладах) УТ/КА/УПП под регистр "Товары на складах", под бухучет.
- Корректировка некорректных суммовых остатков в партионном учете УТ/КА/УПП под количественные.
- Правки остатков в НТТ (ТоварыВНТТ), особенно когда "упущен" учет в разрезе розничных цен.
- Корректировки и обнуления остатков в регистрах РАУЗ (УчетЗатрат, УчетЗатратРегл) по аналогии с вышеописанными.
- Исправление некорректных остатков по регистрам расчетов и взаиморасчетов всех видов в УТ/УПП/КА (ВзаиморасчетыСКонтрагентами, ....ПоДокументамРасчетов, РасчетыПоПриобретениюВУсловныхЕдиницахОрганизации/РасчетыПоРеализацииВУсловныхЕдиницахОрганизации) в валюте рег. учета и взаиморасчетов, приведение их друг к другу для рублевых договоров
- Исправление остатков по регистрам налогового учета НДС в УПП/КА - НДСНачисленный, НДСПредъявленный, НДСсАвансов и др.
- Исправление остатков по денежным средствам (ДенежныеСредства, РозничнаяВыручка) и заявкам (ЗаявкиНаРасходованиеСредств, ПланируемыеПоступленияДенежныхСредств).
- Расскребание регистров комиссионной торговли.
- Корректировки по всем видам резервов и размещений (РазмещениеЗаказовПокупателей, ТоварыВРезервеНаСкладах и др, и пр).
- Исправление всех промежуточных учетных регистров (...КПолучению, КПередаче, КСписанию и т.п.)
- Натягивание состояния остатков одной копии базы на другую копию.
Обработка, сама по себе, не содержит бизнес-логики исправления. Общий принцип: вы выбираете остатки, правите их как необходимо, и сохраняете результат в виде разностной корректировки. Правки выполняются вручную, но какую-либо автоматизацию вы можете приписать на свое усмотрение.
Порядок использования:
- Открывается обработка, выбирается дата анализа остатков, регистр накопления, документ корректировки (или задается только тип [Т] для нового документа корректировки), вид движения корректировки (приход или расход).
- Устанавливается отбор измерений регистра
- Кнопкой "Заполнить по остаткам" заполняется таблица остатков (необязательно)
- В таблице остатков вносятся или исправляются записи. Если нужно обнулить регистр - таблица очищается.
- Нажимается кнопка "Выполнить", после чего в документ корректировки помещаются такие движения регистра, которые приведут его состояние к заданным в таблице остаткам.
ВАЖНО! Пока вы исполняете п. 4, остальные пользователи могут оперировать данными и изменить остатки корректируемого регистра. У вас, в форме, в желаемых остатках, эти изменения, разумеется, не отразятся. После выполнения корректировки вы, таким образом, получите движения, "отменяющие" работу пользователей. Поэтому, работу над корректировкой остатков целесообразно выполнять в монопольном режиме.
Защита от правок задним числом. Если есть предположение, что однажды учет будет исправлен задним числом ДО вашей корректировки, и "развалит" вашу масштабную работу по приведению его в правильное состояние остатков, существует способ "перестраховаться".
Для этого целесообразно ввести две корректировки. Первая, на 23:29:58, будет обнулять остатки регистра полностью в 0. Вторая, на 23:59:59, будет выводить остатки регистра в целевые значения. Тогда, если кто-либо исправит учет задним числом, то во-первых это можно будет отследить, заполнив таблицу обработки на 23:59:58 (если обнаружится, что остаток ненулевой, то будет ясно, что кто-то "влез" и "вскрыл" остатки), а во-вторых, легко исправить (мы можем тут же обнулить остаток, при этом вторая неизмененная корректировка будет снова выводить остатки регистра в целевые значения).
Сделать это можно следующим образом:
- Обеспечивается, чтобы ни один документ не делал движений по регистру на 23:59:59 - их можно оттащить назад по времени на 23:59:57, или использовать иные ухищрения -например, выполнять корректировки следующим днем в 0:00:00 / 0:00:01, и в конце всех правок оттаскивать их назад (удобно для 1 января).
- Сначала выполняется корректировка регистра на 23:59:59 до целевых значений. Оператор убеждается, что все правильно.
- Окно обработки, выполнявшее эту корректировку, перезаполняется без каких-либо отборов, чтобы получить полные остатки. НЕ закрывается.
- Открывается второй экземпляр обработки (через Файл-Открыть сделать это непосредственно не получится, но можно скопировать файл и назвать его другим именем. Из Дополнительных внешних обработок - можно открыть два экземпляра без проблем), время устанавливается на 23:59:58, выбирается тип документа корректировки (будет создаваться новый документ). Выбирается целевой регистр.
- Таблица не заполняется, нажимаем "Выполнить". Будет заведена корректировка на 23:59:58, обнуляющая регистр.
- Возвращаемся к окну из п. 3, нажимаем там "Очистить записи регистра", "Выполнить". Корректировка на 23:59:59 будет заполнена движениями, выводящими регистр к целевым значениям от нуля.
Этот метод подходит не для всех регистров, и не для всех случаев, но иногда бывает крайне полезен.
По этой же схеме можно выполнять выборочную свертку базы: корректировка по п. 6 может быть сохранена как ввод остатков по регистру "с нуля", а все предшествующие записи регистров - удалены с помощью какой-либо самописной обработки.
Совместимость
Разработано для обычного приложения, платформа 8.2 и 8.3. Тестировалось и успешно использовалось с конфигурациями:
- БП2 по 2.0.66.81
- ЗУП 2.5 всех версий
- КА 1.1 всех версий
- УПП 1.3.179.3
Дополнительно разработана версия для управляемого приложения, платформа 8.3. Тестировалось и успешно использовалось с конфигурациями:
- БП3 по 3.0.106.111
- БСХП 3 по 3.0.106.111
- ЗУП 3 по 3.1.21.36
- КА по 2.4.7.127
Обработка также может работать с любыми нетиповыми конфигурациями, в которых:
- Имеются регистры накопления остатков
- Имеется документ вида "Операция", "Корректировка записей регистров", "Перенос данных", аналогичный такому же из типовых конфигураций или БСП.
- Может приложить руку программист, и дописать в модуле обработки функцию для документа какого-либо другого вида (см. комментарии к модулю обработки)
Изменения
19.01.11
- добавлена возможность групповой обработки строк - обнуления отрицательных значений ресурсов.
02.06.17
- при выборе какой-либо даты, по умолчанию устанавливается время на конец дня (23:59:59). Можно отредактировать вручную. При выборе существующего документа корректировки дата-время устанавливается на его время.
- добавлена возможность выборочного обнуления отдельных ресурсов
- добавлена возможность копирования данных из одного ресурса в другой (удобно для регистров с двойными ресурсами, типа ВзаиморасчетыСКонтрагентами, РасчетыПоРеализации и т.п., только для рублевых договоров, разумеется)
- добавлена возможность очистки таблицы
- правки мелких ошибок, найденных в ходе 5-летней эксплуатации.
26.03.18
- версия для управляемых форм, различия интерфейса и функциональности постарался свести к минимуму.
28.07.19
- опубликовано важное замечание про включение функциональных опций перед использованием управляемой версии.
28.10.20
- В версию для управляемых форм добавлен код регистрации в подсистеме "Внешние отчеты и обработки" Библиотеки стандартных подсистем.
08.06.22
- В версию для управляемых форм добавлены кнопки сохранения и загрузки таблицы целевых остатков через файл. В частности, это позволяет выполнять ряд трюков, включая, например, следующий:
- Вывести в свежесозданной копии базы желаемые остатки какими-нибудь "сложными" (неприемлемыми для основной базы) методами, допустим, с заходом в закрытие периоды, правкой и перепроведением документов.
- Заполнить в ней таблицу "желаемых" остатков на дату предполагаемого исправления, и выгрузить в файл.
- Открыть и аналогично настроить обработку в основной базе, загрузить в форму целевые остатки из файла.
- Выполнить корректировку, тем самым, "натянув" состояние остатков основной базы на остатки, выведенные в копии.
- Повторить с п. 2 для всех необходимых регистров.
- Результатом будет один документ корректировки, с итоговыми движениями, выполняющий правку остатков и записанный в дату, которой проводится исправление.