[ Вопрос дня ] Когда требуется предварительное удаление существующих движений документа при его проведении?

Доброго дня, коллеги!

При подготовке к экзамену 1С:Специалист по платформе вам придется разобраться в “старой” и “новой” методиках проведения документов (На нашем сайте есть отличная бесплатная статья на эту тему). В противном случае каша в голове вам гарантирована!

Вопрос

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

Ответ

Здравствуйте! Предварительное удаление существующих движений документа в базе данных требуется только при проведении документа по “старой” методике, когда сначала выбираются остатки регистра, а затем формируются новые движения. Это удаление старых движений нужно для того, чтобы они не влияли на результат выборки остатков и не искажали реальную картину при перепроведении существующего документа будущей датой.

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

*

В обработке проведения мы работаем с объектом Движения, который находится в памяти. По умолчанию (если не делать специально дополнительных настроек) в конфигурациях на управляемых формах (именно такие конфигурации используются сейчас на экзамене) в объект Движения не подгружаются существующие движения документа из базы данных. Поэтому все входящие в него наборы записей регистров пусты – не содержат записей – и выполнять их очистку нет смысла. Можно сразу записать все или некоторые наборы записей регистров из объекта Движения – так как они пусты, будет произведена запись пустых наборов записей, то есть фактически очистка существующих движений в базе данных.

*

Предварительная очистка наборов записей объекта Движения (Движения.ИмяРегистра.Очистить()) – для целей удаления существующих движений из базы данных – не является грубой ошибкой, но нежелательна, так как может быть расценена как недочет, лишнее действие и указывать на недостаток опыта работы с управляемыми формами.

*

Очистка некоторых наборов записей регистров в объекте Движения может понадобиться по логике проведения документа. Поэтому в некоторых случаях команда Движения.ИмяРегистра.Очистить() уместна и оправдана. Однако, повторюсь, если не сделано специальных настроек, и требуется лишь удалить существующие движения документа из базы данных, использовать команду Движения.ИмяРегистра.Очистить() нет необходимости.

Комментарии / обсуждение (3):

  1. user

    Добрый день.
    Хотел бы уточнить : в данной статье говорится о том, что команда Движения.ИмяРегистра.Очистить() – скорее исключение при проведении по новой методике и Движения.Записать() обеспечивает “затирание” прежних движений документа новыми. Однако в Вашей же статье по приведенной ссылке, описывающей различия между старой и новой методиками(
    https://xn—-1-bedvffifm4g.xn--p1ai/articles/2017-02-12-two-methods-for-inventory-check/ ) эта самая очистка все же присутствует в новой методике:
    //  2. Формирование движений-расход регистра
        Движения.СвободныеОстатки.Очистить();
        ВыборкаТовары = РезультатЗапроса.Выбрать();
        Пока ВыборкаТовары.Следующий() Цикл
            Движение = Движения.СвободныеОстатки.ДобавитьРасход();
            Движение.Период = Дата;
            Движение.Номенклатура = ВыборкаТовары.Номенклатура;
            Движение.Количество = ВыборкаТовары.Количество;
        КонецЦикла;
    Не могли бы пояснить, зачем она там необходима?

    • Виталий Фролов

      Добрый день, когда была написана данная статья (2017 год) на экзамене можно было использовать обычные формы. При открытии обычной формы текущие движения прочитывались и содержались в Движения.ИмяРегистра. Если их не очистить, то после записи движений у документа будут старые и новые движения по регистрам.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

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

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.