Автоматическое заполнение даты отгрузки в документе "Заказ Покупателя"
Нужно что бы при проведении документа, если поле "дата отгрузки" пустое ставилась дата на следующий день. Если поле заполнено, то оставить то значение которое поставили.
В модуле объекта написал следующее:
Он срабатывает но не совсем верно, прибавляет дату когда она уже стоит. Если поле пустое, то просит заполнить.
В модуле объекта написал следующее:
Если НЕ ЗначениеЗаполнено(ДатаОтгрузки)
Тогда ДатаОтгрузки = ТекущаяДата() + 60 * 60 * 24;
КонецЕсли;
Он срабатывает но не совсем верно, прибавляет дату когда она уже стоит. Если поле пустое, то просит заполнить.
По теме из базы знаний
- Обработка "Все одной кнопкой" (групповое создание и печать документов) для УПП ред. 1.3
- Журнал заказов покупателей. КА 1.1
- От заказов покупателей до выпуска продукции (на примере работы в 1С:ERP предприятия химической отрасли)
- [Расширение] УНФ: Дополнительный контроль остатков (списания) товаров на дату документа (как в 1С:Бухгалтерии)
- SynchroSber - полноценный модуль API интеграции с маркетплейсом Мегамаркет (СберМегаМаркет) для 1С УТ 11.X, КА 2.X, ERP 2.X, УНФ 1.6, 3.0 (возможность работы как с публикацией, так и без публикации базы)
Найденные решения
У меня сейчас нет под рукой 1С (и вообще не открывал 1С почти 2 года))), но чисто по памяти: там вроде бы в начале проведения многих документов идёт проверка заполнения обязательных реквизитов документов в одной из предопределенных процедур то ли модуля документа, то ли модуля формы документа -- ПередЗаписью(), ПриЗаписи() -- для чего из одной из этих предопределенных процедур вызывается процедура с названием типа ПроверкаЗаполнения(). Вот оттуда вас и просят заполнить пустое поле.
То есть вам нужно свой код, указанный выше, вставить перед вызовом вот этой самой процедуры ПроверкаЗаполнения(). В результате перед проверкой заполнения обязательных реквизитов документа поле "дата отгрузки" уже будет заполнено и всё пройдёт как вам надо.
То есть вам нужно свой код, указанный выше, вставить перед вызовом вот этой самой процедуры ПроверкаЗаполнения(). В результате перед проверкой заполнения обязательных реквизитов документа поле "дата отгрузки" уже будет заполнено и всё пройдёт как вам надо.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
У меня сейчас нет под рукой 1С (и вообще не открывал 1С почти 2 года))), но чисто по памяти: там вроде бы в начале проведения многих документов идёт проверка заполнения обязательных реквизитов документов в одной из предопределенных процедур то ли модуля документа, то ли модуля формы документа -- ПередЗаписью(), ПриЗаписи() -- для чего из одной из этих предопределенных процедур вызывается процедура с названием типа ПроверкаЗаполнения(). Вот оттуда вас и просят заполнить пустое поле.
То есть вам нужно свой код, указанный выше, вставить перед вызовом вот этой самой процедуры ПроверкаЗаполнения(). В результате перед проверкой заполнения обязательных реквизитов документа поле "дата отгрузки" уже будет заполнено и всё пройдёт как вам надо.
То есть вам нужно свой код, указанный выше, вставить перед вызовом вот этой самой процедуры ПроверкаЗаполнения(). В результате перед проверкой заполнения обязательных реквизитов документа поле "дата отгрузки" уже будет заполнено и всё пройдёт как вам надо.
У вас просто отрабатывает проверка заполнения потому что в реквизите документа "ДатаОтгрузки" как показано на картинке - стоит выдавать ошибку. Я думаю если вы поставите - "не проверять" раз уж вы в коде проверяете заполненность реквизита и нормализуете его значение когда он не заполнен, то все у вас получится.
Пример картинки из релиза 1.6.15.39 но я думаю что там во всех релизах стоит выдавать ошибку для незаполненной даты отгрузки.
Пример картинки из релиза 1.6.15.39 но я думаю что там во всех релизах стоит выдавать ошибку для незаполненной даты отгрузки.
Прикрепленные файлы:

(5)
Правильнее, добавить в расширение событие ОбработкаПроверкиЗаполнения и удалить дату отгрузки из массива проверяемых реквизитов:
Я думаю если вы поставите - "не проверять" раз уж вы в коде проверяете заполненность реквизита и нормализуете его значение когда он не заполнен, то все у вас получится.
Правильнее, добавить в расширение событие ОбработкаПроверкиЗаполнения и удалить дату отгрузки из массива проверяемых реквизитов:
&Перед("ОбработкаПроверкиЗаполнения")
Процедура ОФ_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Индекс = ПроверяемыеРеквизиты.Найти("ДатаОтгрузки");
Если Не Индекс = Неопределено Тогда
ПроверяемыеРеквизиты.Удалить(Индекс);
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот