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

В модуле объекта написал следующее:

```1c
    Если НЕ ЗначениеЗаполнено(ДатаОтгрузки)
    Тогда ДатаОтгрузки = ТекущаяДата() + 60 * 60 * 24;
    КонецЕсли;
```

Он срабатывает но не совсем верно, прибавляет дату когда она уже стоит. Если поле пустое, то просит заполнить.
---
У меня сейчас нет под рукой 1С (и вообще не открывал 1С почти 2 года))), но чисто по памяти: там вроде бы в начале проведения многих документов идёт проверка заполнения обязательных реквизитов документов в одной из предопределенных процедур то ли модуля документа, то ли модуля формы документа -- ПередЗаписью(), ПриЗаписи() -- для чего из одной из этих предопределенных процедур вызывается процедура с названием типа ПроверкаЗаполнения(). Вот оттуда вас и просят заполнить пустое поле.

То есть вам нужно свой код, указанный выше, вставить перед вызовом вот этой самой процедуры ПроверкаЗаполнения(). В результате перед проверкой заполнения обязательных реквизитов документа поле "дата отгрузки" уже будет заполнено и всё пройдёт как вам надо.
---
Поставь точку остановки. И проверяй какое там значение при записи.
---
без указания контекста вызова мы может обсудить только извращенный синтаксис фрагмента
---
У меня сейчас нет под рукой 1С (и вообще не открывал 1С почти 2 года))), но чисто по памяти: там вроде бы в начале проведения многих документов идёт проверка заполнения обязательных реквизитов документов в одной из предопределенных процедур то ли модуля документа, то ли модуля формы документа -- ПередЗаписью(), ПриЗаписи() -- для чего из одной из этих предопределенных процедур вызывается процедура с названием типа ПроверкаЗаполнения(). Вот оттуда вас и просят заполнить пустое поле.

То есть вам нужно свой код, указанный выше, вставить перед вызовом вот этой самой процедуры ПроверкаЗаполнения(). В результате перед проверкой заполнения обязательных реквизитов документа поле "дата отгрузки" уже будет заполнено и всё пройдёт как вам надо.
---
но чисто по памяти

Не вводите в заблуждение. Сплошные неточности.
---
У вас просто отрабатывает проверка заполнения потому что в реквизите документа "ДатаОтгрузки" как показано на картинке - стоит выдавать ошибку. Я думаю если вы поставите - "не проверять" раз уж вы в коде проверяете заполненность реквизита и нормализуете его значение когда он не заполнен, то все у вас получится.

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

Правильнее, добавить в расширение событие ОбработкаПроверкиЗаполнения и удалить дату отгрузки из массива проверяемых реквизитов:

```1c
    &Перед("ОбработкаПроверкиЗаполнения")
    Процедура ОФ_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

    Индекс = ПроверяемыеРеквизиты.Найти("ДатаОтгрузки");
    Если Не Индекс = Неопределено Тогда
    ПроверяемыеРеквизиты.Удалить(Индекс);
    КонецЕсли;

    КонецПроцедуры
```
---
Ну каноничнее может быть и так. Однако ТС не сомневаясь, в модуле объекта, безо всяких расширений модифицирует типовой код. Одно с другим не сочетается вы не находите? :)
---
После отключения "Выдавать ошибку" или размещения кода для удаления из Проверяемых реквизитов:
Если ДатаОтгрузки = Дата(01,01,0001)
        Тогда ДатаОтгрузки = ТекущаяДата() + 60 * 60 * 24;
    КонецЕсли;
---
У него ошибка возникает до того как начинает исполнятся обработка проведения. так что тут с чем хочешь сравнивай :)
---
Это я привел пример для размещения после отключения проверки вашим методом у реквизита или кодом от skeptik2105 :)