Проведение документа

1. _7445_ 12.05.19 16:47 Сейчас в теме
Здравствуйте. Я плохо знаю русский. Извините за этого. Я еще новичок в 1С программирование. В КА. Надо что в форме документа был реквизит с названием "Дата создания документа". Здесь отображала дата который первый раз документ был проведен. И естественно доступность будить Ложь. Написал код, работает но когда документ проводится программ дважды спрашивает что документ был изменён проводить или нет. Как исправить эту ошибку ?
Можете дать подсказку? Что какая события надо, модуль объекта или форма документа?
Код примерно такой. Спасибо всем за ранее.
Если НЕ ЭтотОбъект.Проведен Тогда
		ДатаСоздания = ТекущаяДата();
		ЭтотОбъект.Модифицированность() // Надо написать ??
		ЭтотОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный) // Так надо или проста без параметров или не надо ??
		КонецЕсли;
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. protexprotex 131 12.05.19 22:26 Сейчас в теме
(1) Добрый день. Надо написать не "Если РежимЗаписи = РежимЗаписиДокумента.Проведение", а "Если РежимЗаписи = РежимЗаписиДокумента.запись" - т.к. Вам нужно именно дата создания документа, а не дата его первичного проведения. И документ может быть создан, но не проведен, но уже записан. Иначе в данном поле может быть пусто, если документ записывается, но не проводится.
9. _7445_ 13.05.19 08:10 Сейчас в теме
(6)Спасибо за вниманию. Не именно надо что пользователь видел дату первичного проведения документа.
2. Sander80 82 12.05.19 17:03 Сейчас в теме
Не надо это на форме делать.
Поместите в модуль документа, функция ПередЗаписью(...)
Кусок
Если РежимЗаписи = РежимЗаписиДокумента.Проведение И Не ЗначениеЗаполнено(ДатаСоздания) Тогда
ДатаСоздания = ТекущаяДата()
КонецЕсли
3. _7445_ 12.05.19 17:43 Сейчас в теме
4. Sander80 82 12.05.19 17:54 Сейчас в теме
(3) значит, что-то лишнее осталось. Это точно не следствие того кода, что я дал
5. _7445_ 12.05.19 18:24 Сейчас в теме
(4)Написал ваш код но спрашивает снова. Лишнее ничего нет. Пробовал в другом документе. Тоже самое.
8. 1serger 8 12.05.19 23:14 Сейчас в теме
1. если программа говорит, что документ изменен, значит какой-то реквизит был изменен уже после записи, либо на крайний случай параллельно. следовательно следующий пункт 2.
2. запись ДатыСоздания насколько знаю должна проходить как ТекущийОбъект.ДатаСоздания, метода ПередЗаписьюНаСервере
3. насколько помню по новым правилам стандартов используется не текущаядата, а ТекущаяДатаСеанса...
10. _7445_ 13.05.19 08:29 Сейчас в теме
(8)Спасибо за вниманию. Значить попробовал эту задачу в УТ 10.3 и он работал но если написать этот код в КА тогда уже программ спрашивают что документ был изменён. Код написал в форме документа - перед записи. Полный код --

Если РежимЗаписи = РежимЗаписиДокумента.Проведение И Не Проведен Тогда
ДатаСоздания = ТекущаяДата();
КонецЕсли;
7. palsergeich 12.05.19 22:43 Сейчас в теме
Чуть чуть поиграю в Вангу:
- Это обычные формы.
- Это самодельный реквизит
- Это какая то левая подписка с модальным окном в транзакции.
11. _7445_ 13.05.19 08:31 Сейчас в теме
(7)Спасибо за вниманию.
1) Да это обычная форма.
2) Да
3) Не понял
12. palsergeich 13.05.19 10:34 Сейчас в теме
(11) Нужно проверять код проверки этого реквизита, так как он не типовой, никто кроме Вас не сможет Вам помочь.
13. _7445_ 13.05.19 10:37 Сейчас в теме
14. YanTsys 12 13.05.19 15:38 Сейчас в теме
ЭтотОбъект.Модифицированность() // Надо написать ??

Этот код нужен когда после изменения данных на форме пользователь должен сам решить сохранять ему изменения или нет.
То есть если пользователь будет крестиком закрывать форму появится предупреждение "Документ был изменен, сохранить? Да, нет?

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

Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот