Как трассировать стандартные кнопки?

1. daemonia 22.09.17 11:27 Сейчас в теме
Здравствуйте. Имеем форму документа в УТ 11.1 со стандартными кнопками типа - Провести и Закрыть, Записать, Провести. В форме свойств у них никаких нет, в списке элементов в форме их нет, есть просто элемент "командная панель" у которого только два свойства.
Как можно понять что происходит при нажатии этих кнопок? Какие процедуры в каком порядке выполняются?
Так например путем размещения кучи точек останова выяснил, что при нажатии кнопки Провести перед тем как вызовется процедура Перед записью, оказывается вызывается процедура ОбработкаПроверкиЗаполнения. Однако не исключено что перед ней вызывается еще сотня процедур(
Как можно понять какая строка кода выполняется первой при нажатии кнопки? Может где то есть правильное описание четкого порядка вызова процедур при нажатии стандартных кнопок? Где находил там порядок указан неверный, например что ОбработкаПроверкиЗаполнения выполняется нигде нет упоминания.
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. starik-2005 3033 22.09.17 11:31 Сейчас в теме
(1)
Как можно понять что происходит при нажатии этих кнопок?
Читать мануалы 1С. Там где-то есть список того, что выполняется. Сначала идут клиентские функции формы, потом проверка заполнения, потом серверные функции формы и функции объекта передзаписью, призаписи, обработкапроведения, послезаписи. Ну и потом клиентские послезаписи и передзакрытием/призакрытии (если нажата провестиизакрыть)
3. japopov 68 22.09.17 12:12 Сейчас в теме
(2) ...А ещё забыли возможные расширения и подписки на события. :-)
4. starik-2005 3033 22.09.17 12:19 Сейчас в теме
(3) а еще триггеры в SQL-таблице - жуть, короче, полная.
6. oldfornit 22.09.17 12:22 Сейчас в теме
(4) поподробнее пожалуйста. 1с начала использовать логику на стороне sql-сервера? С какого релиза?
9. starik-2005 3033 22.09.17 12:29 Сейчас в теме
(6) 1С не начала, но никто не мешает это сделать кому-то другому (также как и с расширениями и подписками на события - они не сами собой появляются).
8. japopov 68 22.09.17 12:28 Сейчас в теме
(4) Не вводите в заблуждение человека. Тем более, что первый Ваш ответ был хорош: коротко и по существу. Триггеры SQL 1С не использует. Вся логика - в самой платформе 1С.
Но вот то, что перед и после стандартного обработчика (а в новых платформах - и вместо него) может вызываться процедура из расширения - надо было упомянуть.
Также, стоит сказать и о подписках на события. Их может быть целый ворох на разные события в системе, и отлавливать блох в них бывает очень непросто, так как 1С не предложила механизма, чтобы упорядочить весь этот бардак.
Проще говоря, нет такого механизма, который покажет, что и в каком порядке выполняется при событии на конкретном объекте.
10. starik-2005 3033 22.09.17 12:30 Сейчас в теме
(8)
Не вводите в заблуждение человека. Тем более, что первый Ваш ответ был хорош: коротко и по существу. Триггеры SQL 1С не использует. Вся логика - в самой платформе 1С.
1С - нет, а Вася Пупкин - да. Где гарантия, что Вася не запилил триггеры в той базе, куда смотрит пользователь?
11. japopov 68 22.09.17 12:32 Сейчас в теме
(1) А вообще, судя по постановке вопроса, Вам не это нужно.
Коротко можно суммировать: Перед записью - при записи - после записи. На клиенте и на сервере. Так, как Вам написали в (2). Всю подготовку делаете перед записью. При записи - минимум действий (это выполняется в транзакции записи). Постобработки - после записи.
А вот конкретный порядок процедур при записи и после записи может сильно отличаться и вообще не гарантируется.
12. YanTsys 12 22.09.17 12:44 Сейчас в теме
(1) Не знаю зачем вам это нужно, но как гласит главный закон психологии: "Если нельзя, но очень хочется, то можно"

Итак открываете окно конфигуратора, запускаете приложение на отладку, располагаете окна конфигуратора и клиента рядом, открываете в окне клиента документ так чтобы была видна например кнопка "Записать и закрыть", жмете в конфигураторе "Главное меню-Отладка-Остановить" и ОЧЕНЬ быстро после этого на кнопку "Записать и закрыть"

я например если нажимаю достаточно быстро после этого в конфигураторе попадаю на отладку функции
АвтономнаяРаботаПроверитьВозможностьЗаписиОбщихДанныхДокумен­т

если же не спешить то до того как я нажимаю "Записать и закрыть" конфигуратор успевает уйти в функцию
Подключаемый_ПереключениеНовостей
похоже она вызывается постоянно и вам нужно успеть до её вызова
ну либо посмотреть как её убрать из очереди текущих заданий...
daemonia; +1 Ответить
5. YanTsys 12 22.09.17 12:21 Сейчас в теме
Если вам нужно изучить что происходит, то что вам мешает создать свою кнопку с командой
Записать();
Поставить точку отладки и изучайте на здоровье...

Или у вас есть обоснованные сомнения что команда записать() делает не то же самое что и кнопка записать?
7. alx7304 22.09.17 12:26 Сейчас в теме
Смотрите документацию, по событиям документа, в каком порядке, какие события происходят. Можете попробовать, запустить базу в режиме отладки, в конфигурации выбрать "Отладка - Остановить", переключиться в предприятие, нажать нужную кнопку и посмотреть где остановиться.
13. tormozit 7136 22.09.17 12:48 Сейчас в теме
Отправил на эту тему пожелание в 1С https://partners.v8.1c.ru/forum/t/1638371/m/1638371 , чтобы буквально дали возможность трассировать эти команды.
14. YanTsys 12 22.09.17 13:07 Сейчас в теме
(13) Так есть же возможность, вариант из (12) разве у вас не срабатывает?
15. spacecraft 22.09.17 13:08 Сейчас в теме
(14) причем тут процедуры Обработчиков ожидания?
16. YanTsys 12 22.09.17 13:21 Сейчас в теме
(15) Проверил вы правы переходит к отладке но ни до ни после этого "обработчика" не показывает :(
17. rusmil 262 23.09.17 15:39 Сейчас в теме
Последовательность вызова событий может быть разной в зависимости от того проведен документ или нет. Вот несколько картинок разного поведения вызова событий, см. прикрепленные картинки. Примеры приведены для управляемых форм.
Прикрепленные файлы:
Irwin; allexx; +2 Ответить
18. rusmil 262 23.09.17 15:52 Сейчас в теме
А вот вариант если щелкнули кнопку Провести и закрыть когда еще действуют и подписки на события, последовательность вызовов будет такая, см . картинку
Прикрепленные файлы:
Irwin; allexx; Xershi; +3 Ответить
Оставьте свое сообщение
Вакансии
Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день