Как правильно добавить новый документ в 1С:Бухгалтерию 2.0 и избежать ошибок при проведении

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При разработке в типовых конфигурациях, таких как 1С:Бухгалтерия предприятия 2.0 (БП 2.0), программисты часто сталкиваются с тем, что простого создания объекта «Документ» в дереве метаданных недостаточно. Система имеет жесткую архитектуру и множество взаимосвязей, реализованных через общие модули и подписки на события. Одной из самых распространенных проблем является ошибка Поле объекта не обнаружено (ДатаДокументаСдвинутаВперед) при попытке проведения документа. В этой статье мы подробно разберем, как устранить эту ошибку и полностью интегрировать новый документ в типовой функционал.

Причина возникновения ошибки «ДатаДокументаСдвинутаВперед»

Рассмотрим ситуацию: вы создали новый документ, настроили его движения по регистрам и прописали логику в процедуре ОбработкаПроведения. Однако при попытке проведения программа выдает ошибку, ссылаясь на ОбщийМодуль.ОбщегоНазначения. Проанализируем фрагмент кода, на котором происходит остановка:


УдалитьДвиженияРегистратора(ЭтотОбъект, Отказ, Ложь, ВыборочноОчищатьРегистры И НЕ ЭтотОбъект.ДополнительныеСвойства.ДатаДокументаСдвинутаВперед);

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

Решение проблемы через подписки на события

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

  1. Откроем конфигуратор и перейдем в ветку Общие -> Подписки на события.
  2. Найдем подписку с именем ПередЗаписьюДокументаДляУдаленияДвижений.
  3. Откроем ее свойства и в поле Источник нажмем на кнопку выбора (три точки).
  4. В открывшемся списке типов объектов нам необходимо найти наш новый документ и установить напротив него галочку.

Что это дает? При записи документа будет вызываться обработчик этой подписки, который сравнивает текущую дату документа с датой, сохраненной в базе данных. По результатам сравнения в структуру ДополнительныеСвойства документа будет программно добавлен ключ ДатаДокументаСдвинутаВперед со значением Истина или Ложь. Это полностью снимет проблему ошибки в общем модуле.

Настройка реквизита «РучнаяКорректировка»

Для корректной работы типовой функции РучнаяКорректировкаОбработкаПроведения, которую вы вызываете в начале модуля проведения, в документе крайне желательно наличие реквизита РучнаяКорректировка с типом Булево.

Выясним причину: если этот реквизит установлен в Истина, типовой механизм блокирует автоматическую очистку и перезапись движений. Это позволяет бухгалтеру вручную отредактировать проводки, и система не «затрет» их при повторном перепроведении документа. Рассмотрим, как это выглядит в коде модуля документа:


Процедура ОбработкаПроведения(Отказ, Режим)
    
    // Вызов типового механизма проверки ручной корректировки
    Если ОбщегоНазначения.РучнаяКорректировкаОбработкаПроведения(РучнаяКорректировка, Отказ, Заголовок, ЭтотОбъект) Тогда
        Возврат;
    КонецЕсли;

    // Далее идет ваш алгоритм формирования движений...
    
КонецПроцедуры

Как включить отображение проводок (Кнопка Дт/Кт)

После того как документ начал проводиться без ошибок, вы можете заметить, что в форме документа или в списке отсутствует кнопка «Дт/Кт», либо при ее нажатии ничего не происходит. В БП 2.0 за просмотр и ручную корректировку движений отвечает общая обработка КорректировкаДвижений.

Чтобы «подружить» ваш документ с этой обработкой, выполним следующие действия:

  1. В дереве метаданных найдем Обработки -> КорректировкаДвижений.
  2. Перейдем к ее реквизитам и найдем реквизит ДокументОбъект.
  3. В свойствах этого реквизита откройте настройку Тип.
  4. Добавьте в список разрешенных типов ваш новый документ.

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

Дополнительные настройки для полной интеграции

Чтобы ваш документ вел себя как «родной» для конфигурации 1С:Бухгалтерия 2.0, рекомендуем выполнить еще несколько важных настроек:

  1. Критерии отбора: Добавьте документ в критерий отбора СвязанныеДокументы. Это позволит документу отображаться в дереве структуры подчиненности.
  2. Последовательности: Если документ влияет на расчет себестоимости или партионный учет, добавьте его в соответствующие последовательности (например, ПартионныйУчет). Без этого документ не будет учитываться при восстановлении последовательности и групповом перепроведении.
  3. Функциональные опции: Если в документе используются склады, подразделения или валюты, проверьте, включен ли он в соответствующие функциональные опции, чтобы поля на форме скрывались или отображались согласно настройкам параметров учета.

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

← На главную