Версия для печати темы (https://pro1c.org.ua/index.php?s=43b60853e902fa51e96dc78d0444a869&showtopic=63534)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Не заходит в процедуру созданую в модуле формы

Автор: Nikitaje 16.12.20, 9:29

Здравствуйте друзья. 1с 8.3 обычные формы.
На форме создаю процедуру

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
            // Вставить содержимое обработчика.
    //Оповестить("ОбработкаОповещения",Вагоны,ЭтаФОрма);
    Сообщить(123);
    Если (ЭтаФорма.ТолькоПросмотр=Истина) Тогда
          Отказ=Истина;
          Предупреждение("Документ только для ПРОСМОТРА!!!  Запись отменена");
    КонецЕсли;

КонецПроцедуры

Записать(РежимЗаписиДокумента.Запись);


Ставлю точку останова не заходит.
В модуле есть точно такая же процедура, в нее заходит код выполняется. В чем может быть причина?

Автор: DartRomanius 16.12.20, 9:33

Nikitaje @ Сегодня, 10:29 * ,

А в событиях формы прописано?

Автор: Nikitaje 16.12.20, 9:42

DartRomanius @ Сегодня, 10:33 * ,
Да конечно. Даже пересоздавал

Автор: TohaMonster 16.12.20, 13:16

Nikitaje @ Сегодня, 10:29 * ,

Не вполне понятно, у Вас не срабатывает ПередЗаписью() в модуле формы при вызове

Цитата
Записать(РежимЗаписиДокумента.Запись);
? Дык, оно и не должно. В модуле формы это событие возникнет только при интерактивной записи документа из его формы
А вот ПередЗаписью() в модуле объекта, да, выполняется и при программной и при интерактивной записи объекта

Автор: Nikitaje 17.12.20, 1:44

TohaMonster @ Вчера, 14:16 * ,
То есть всегда будет работать одна процедура?
ЗАчем тогда и в модуле формы и в модуле объекта по одинаковой?

Автор: Petre 17.12.20, 8:07

Nikitaje @ Today, 1:44 * ,
Записывать документ можно и не в форме. Это совершенно разные процедуры для разных целей.

Автор: TohaMonster 17.12.20, 10:46

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