Здравствуйте друзья. 1с 8.3 обычные формы.
На форме создаю процедуру
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
// Вставить содержимое обработчика.
//Оповестить("ОбработкаОповещения",Вагоны,ЭтаФОрма);
Сообщить(123);
Если (ЭтаФорма.ТолькоПросмотр=Истина) Тогда
Отказ=Истина;
Предупреждение("Документ только для ПРОСМОТРА!!! Запись отменена");
КонецЕсли;
КонецПроцедуры
Записать(РежимЗаписиДокумента.Запись);
Nikitaje @ Сегодня, 10:29
,
Не вполне понятно, у Вас не срабатывает ПередЗаписью() в модуле формы при вызове
TohaMonster @ Вчера, 14:16
,
То есть всегда будет работать одна процедура?
ЗАчем тогда и в модуле формы и в модуле объекта по одинаковой?
Nikitaje @ Today, 1:44
,
Записывать документ можно и не в форме. Это совершенно разные процедуры для разных целей.
Nikitaje, Немного не так. События формы срабатывают ТОЛЬКО в случае открытой формы. События объекта срабатывают при любом изменении объекта (как интерактивном, так и программном)
Если Вы открыли документ (именно форму документа), нажали "Записать" (или ОК), то срабатывают события в следующей последовательности:
1. ПередЗаписью() на форме документа
2. 2а) ПередЗаписью() в модуле документа
2б) ПриЗаписи() в модуле документа
2в) ОбработкаПроведения() в модуле документа - если проводим
3. ПриЗаписи() на форме документа
4. ПослеЗаписи() на форме документа
Если Вы записываете документ программно (или проводите его, например, из формы списка), у Вас будет только пункт 2
Еще есть момент: весь п2 - это транзакция, а п1 - это другая транзакция. Если Вы создадите в 2а) какие-то новые объекты в документе, а затем в 2в) у Вас произойдет отказ, Вы можете получите битые ссылки типа <Объект не найден>, поэтому иногда создание таких объектов есть смысл вывести в ПередЗаписью() формы документа
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua