Старая и новая методики проведения документов в 1С 8.3

Старая методика проведения

Представим, что для товарного учета была разработана простая конфигурация, в которой есть регистр накопления Остатки товаров:

Регистр накопления

А также два документа Приход товара и Расход товара:

Документы

Приход товара формирует приходные движения в регистр, расход товара — расходные.

Сейчас обработка проведения документа Расход товара выглядит следующим образом:

Так как нет контроля остатков, то возможна продажа в минус.

Старая методика проведения документов используется когда нужно выполнить контроль остатков при формировании расходных движений.

Алгоритм старой методики проведения:

  1. Удаление старых движений документа. Если этого не сделать, то если у проведенного документа перенести дату вперед, то при контроле остатков на 4-ом шаге учитывались бы движения текущего документа.
  2. Блокировка данных документа. Старый набор записей будет заблокирован автоматически на первом шаге, при записи пустого набора.
  3. Получение данных для проведения.
  4. Контроль отрицательных остатков.
  5. Формирование движений.
  6. Автоматическая запись движений.

В результате обработка проведения будет выглядеть следующим образом:

В запросе при установке параметра используется следующая строка кода:

Если мы проводим документ оперативно, то можно не указывать параметр для виртуальной таблицы остатков, в результате остатки будут получены из текущих итогов, что значительно быстрее.

При неоперативном проведении нужно контролировать остатки на момент времени документа.

Новая методика проведения

Новая методика на самом деле не такая уж новая. Она была придумана при появлении версии платформы 8.2. Однако до сих пор применяется название новая методика.

Основное преимущество новой методики в том, что не нужно записывать набор записей дважды (в первый раз для удаления старых движений, второй раз для записи нового набора), а также блокировка устанавливается не в самом начале обработки проведения.

Алгоритм новой методики проведения:

  1. Получение данных для проведения.
  2. Формирование движений.
  3. Запись движений.
  4. Автоматическая блокировка данных документа. Блокируется и старый набор записей и новый.
  5. Контроль отрицательных остатков.
  6. Отмена проведения, если контроль не пройден.

Обработка проведения будет выглядеть следующим образом:

До записи движений используется следующая строка кода:

В результате при записи набора регистра будет установлена блокировка по записанным измерениям как нового набора, так и старого (при перепроведении).

На самом деле свойство БлокироватьДляИзменения не устанавливает блокировку. Блокировка будет установлена автоматически при записи регистра. А данное свойство временно отключает механизм разделения итогов. В результате параллельные транзакции не смогут записать в регистр набор с тем же составом измерений.

Так как контроль остатков выполняется после проведения, то параметром передается граница с видом Включая:

Новую методику проведения нельзя использовать если для проведения нужно использовать данные самого регистра, в который пишем. Например, если бы в регистре был ресурс Себестоимость и при проведении нужно списывать себестоимость. В этом случае при перепроведении документа мы бы получали неверные цифры из-за того, что в выборку попадали результаты проведения текущего документа. А если до получения данных записать пустой набор, то мы снова возвращаемся к старой методике проведения.

Отличия между старой и новой методикой проведения

  1. В старой контроль остатков выполняется до записи, в новой после записи движений.
  2. В новой не нужно дважды записывать набор записей (для удаления старого набора).
  3. Новую нельзя использовать когда для формирования движений нужны данные из этого же регистра (например для себестоимости).
  4. В новой позже устанавливается блокировка на регистр.

Подписывайтесь на группу ВКонтакте , где я публикую ссылки на новые статьи с данного сайта, а также интересные материалы с других ресурсов по программированию в 1С
Здесь может быть Ваша реклама
Понравилась статья? Поделиться с друзьями:
Используя этот сайт, Вы даете согласие на использование cookies. На данном этапе Вы можете отказаться от использования cookies, настроив необходимые параметры в своем браузере.
ok