Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 июн 2021, 12:33

Не могу найти функции при записи формы

Автор Daiv, 20 июл 2017, 10:47

0 Пользователей и 1 гость просматривают эту тему.

Daiv

Здравствуйте, имеем 1с 8.2.19 с конфигурацией автосервиса. Проблема заключается в том, что при подборе запчастей в заявке на ремонт и нажатии кнопки сохранить эти запчасти списываются со склада. Хочу сделать, что бы списание происходило только в том случае, если статус заказа = в работе.
Открыл конфигуратор нашел эту форму, нашел функции, как я понял за запись отвечает функция ДокументОбъект.Записать();, но её нигде найти не могу, подскажите где её искать, или может я что-то не так делаю?)

AIFrame

Ну так ее может и не быть в форме.
Если используется обработчик ПриЗаписи() или ПередЗаписью() из формы объекта - то это чисто интерактивные обработчики. Они не будут отрабатывать при неинтерактивной записи\проведении документа (если не указать явно).
В самом модуле объекта тоже могут присутствовать обработчики ПередЗаписью(), ПриЗаписи(), ОбработкаПроведения(), ОбработкаОтменыПроведения(), ПриКопировании и т.д.
Весь список доступных хуков (обработчиков объекта) доступен в конфигураторе в верхнем меню (как правило). Если напротив процедуры\функции нет соотв. значка - значит этот обработчик в модуле не объявлен - жмешь его и он добавляется в модуль.
На форме можно тыкнуть в заголовок - в свойствах в самом низу будет список хуков формы и прцедуры, которые эти хуки отрабатывают (если есть). Если строка пустая - тыкаешь в лупу, процедура создается в модуле. Так, в принципе, можно работать с любым элементом формы, у которого есть набор хуков.

Daiv

Цитата: AIFrame от 20 июл 2017, 11:01
Ну так ее может и не быть в форме.

Похоже в форме её и нет, а где тогда может быть? Всё пересмотрел не могу найти.

Цитата: AIFrame от 20 июл 2017, 11:01
Если используется обработчик ПриЗаписи()...

Используется, но он просто как я понял рассчитывает стоимость заказа РассчитатьСтоимостьЗаказа

AIFrame

Цитата: Daiv от 20 июл 2017, 11:16а где тогда может быть?
Нигде. Она просто не объявлена. Объяви ее она будет работать.
И не забудь вникнуть в чем разница между модулем всего объекта с его процедурой ПриЗаписи(), и модулем формы с ее процедурой ПриЗаписи(). Ключевой момент - интерактивность. Модуль объекта и его события отрабатывается всегда, а модуль формы - когда работают с формой.
---
На втором скрине ты правильно смотришь - вот они события формы, три объявлено, остальные нет.

Daiv

Цитата: AIFrame от 20 июл 2017, 11:20
Цитата: Daiv от 20 июл 2017, 11:16а где тогда может быть?
Нигде. Она просто не объявлена. Объяви ее она будет работать.
И не забудь вникнуть в чем разница между модулем всего объекта с его процедурой ПриЗаписи(), и модулем формы с ее процедурой ПриЗаписи(). Ключевой момент - интерактивность. Модуль объекта и его события отрабатывается всегда, а модуль формы - когда работают с формой.

Не могу понять, как тогда при нажатии кнопки "ОК", "Записать" информация сохраняется в БД и происходит списание товара, ведь должен же быть где-то какой-то код, который отрабатывается?

oleg-x

Цитата: Daiv от 20 июл 2017, 11:24

Не могу понять, как тогда при нажатии кнопки "ОК", "Записать" информация сохраняется в БД и происходит списание товара, ведь должен же быть где-то какой-то код, который отрабатывается?
1) Запусти клиент в режиме отладки.
2) Открой обработку/документ, сделай все необходимые действия и перед тем как нажать "ок"...
3) открой конфигуратор и нажми паузу и после этого в программе нажми "ок".
И через отладку ты увидишь весь выполняемый код.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

AIFrame

Элементы формы ссылаются на реквизиты объекта.
При записи платформа записывает данные из элементов формы в эти реквизиты.
Т.е. делает все платформа.
Обработчик ПриЗаписи и подобные нужны, чтобы внести изменения в этот процесс или добавить функционала. Они не отвечают за весь механизм сохранения объектов, а только модифицируют его.

Daiv

Цитата: oleg-x от 20 июл 2017, 11:29
Цитата: Daiv от 20 июл 2017, 11:24

Не могу понять, как тогда при нажатии кнопки "ОК", "Записать" информация сохраняется в БД и происходит списание товара, ведь должен же быть где-то какой-то код, который отрабатывается?
1) Запусти клиент в режиме отладки.
2) Открой обработку/документ, сделай все необходимые действия и перед тем как нажать "ок"...
3) открой конфигуратор и нажми паузу и после этого в программе нажми "ок".
И через отладку ты увидишь весь выполняемый код.

Спасибо, нашел, разобрался

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск