1C:Бухгалтерия
1С:CRM ПРОФ, КОРП
1С:ERP Управление предприятием 2
Платформа 1С v8.3
Корп. решения 1С
Здравствуйте. Я плохо знаю русский. Извините за этого. Я еще новичок в 1С программирование. В КА. Надо что в форме документа был реквизит с названием "Дата создания документа". Здесь отображала дата который первый раз документ был проведен. И естественно доступность будить Ложь. Написал код, работает но когда документ проводится программ дважды спрашивает что документ был изменён проводить или нет. Как исправить эту ошибку ?
Можете дать подсказку? Что какая события надо, модуль объекта или форма документа?
Код примерно такой. Спасибо всем за ранее.
Можете дать подсказку? Что какая события надо, модуль объекта или форма документа?
Код примерно такой. Спасибо всем за ранее.
Если НЕ ЭтотОбъект.Проведен Тогда
ДатаСоздания = ТекущаяДата();
ЭтотОбъект.Модифицированность() // Надо написать ??
ЭтотОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный) // Так надо или проста без параметров или не надо ??
КонецЕсли;
По теме из базы знаний
- Перекурсовка (пересчет курсов и правильное перепроведение документов). УНФ
- Перепроведение документа в базе
- Экспертный кейс. Расследование деградации производительности системы. Проведение документа “Поступление товаров и услуг” (1С:ERP 2)
- Гарантированное проведение документов (подключаемое расширение)
- Проведение документов на управляемых формах
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Добрый день. Надо написать не "Если РежимЗаписи = РежимЗаписиДокумента.Проведение", а "Если РежимЗаписи = РежимЗаписиДокумента.запись" - т.к. Вам нужно именно дата создания документа, а не дата его первичного проведения. И документ может быть создан, но не проведен, но уже записан. Иначе в данном поле может быть пусто, если документ записывается, но не проводится.
Не надо это на форме делать.
Поместите в модуль документа, функция ПередЗаписью(...)
Кусок
Если РежимЗаписи = РежимЗаписиДокумента.Проведение И Не ЗначениеЗаполнено(ДатаСоздания) Тогда
ДатаСоздания = ТекущаяДата()
КонецЕсли
Поместите в модуль документа, функция ПередЗаписью(...)
Кусок
Если РежимЗаписи = РежимЗаписиДокумента.Проведение И Не ЗначениеЗаполнено(ДатаСоздания) Тогда
ДатаСоздания = ТекущаяДата()
КонецЕсли
1. если программа говорит, что документ изменен, значит какой-то реквизит был изменен уже после записи, либо на крайний случай параллельно. следовательно следующий пункт 2.
2. запись ДатыСоздания насколько знаю должна проходить как ТекущийОбъект.ДатаСоздания, метода ПередЗаписьюНаСервере
3. насколько помню по новым правилам стандартов используется не текущаядата, а ТекущаяДатаСеанса...
2. запись ДатыСоздания насколько знаю должна проходить как ТекущийОбъект.ДатаСоздания, метода ПередЗаписьюНаСервере
3. насколько помню по новым правилам стандартов используется не текущаядата, а ТекущаяДатаСеанса...
(8)Спасибо за вниманию. Значить попробовал эту задачу в УТ 10.3 и он работал но если написать этот код в КА тогда уже программ спрашивают что документ был изменён. Код написал в форме документа - перед записи. Полный код --
Если РежимЗаписи = РежимЗаписиДокумента.Проведение И Не Проведен Тогда
ДатаСоздания = ТекущаяДата();
КонецЕсли;
Если РежимЗаписи = РежимЗаписиДокумента.Проведение И Не Проведен Тогда
ДатаСоздания = ТекущаяДата();
КонецЕсли;
ЭтотОбъект.Модифицированность() // Надо написать ??
Этот код нужен когда после изменения данных на форме пользователь должен сам решить сохранять ему изменения или нет.
То есть если пользователь будет крестиком закрывать форму появится предупреждение "Документ был изменен, сохранить? Да, нет?
Попробуйте в модуле объекта
Если РежимЗаписи=РежимЗаписиДокумента.Проведение Тогда
Если не ЗначениеЗаполнено(ЭтотОбъект.ДатаСоздания) Тогда
ЭтотОбъект.ДатаСоздания = ТекущаяДата();
КонецЕсли;
КонецЕсли;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот