![]() |
|
точка останова не срабатывает на функции | ☑ | ||
---|---|---|---|---|
0
Айрат_116
12.05.20
✎
14:39
|
Здравствуйте, объясните пожалуйста как работает эта процедура на кнопку записать у документа "Списания материалов"
Мне не понятно почему точка останова не срабатывает на функции "ЗаполнитьСпецоснасткуПоОстаткамВЭксплуатации();" Когда я нажимаю "Продолжить" Данные получаются от туда (ЗаполнитьСпецоснасткуПоОстаткамВЭксплуатации) &НаКлиенте Процедура СпецоснасткаЗаполнитьПоОстаткам(Команда) Если НЕ ЗначениеЗаполнено(Объект.ПодразделениеОрганизации) Тогда ПоказатьПредупреждение( , НСтр("ru='Не указано подразделение организации! |Заполнение невозможно!'")); Возврат; КонецЕсли; Если НЕ ПроверитьВозможностьЗаполненияТабличнойЧасти() Тогда Возврат; КонецЕсли; Если Объект.Спецоснастка.Количество() > 0 Тогда ТекстВопроса = НСтр("ru='При заполнении табличная часть будет очищена. |Продолжить?'"); СИстекшимСрокомПолезногоИспользования = Ложь; Оповещение = Новый ОписаниеОповещения( "ВопросПриЗаполненииСпецоснасткуПоОстаткамЗавершение", ЭтотОбъект, СИстекшимСрокомПолезногоИспользования); ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Нет); Иначе ЗаполнитьСпецоснасткуПоОстаткамВЭксплуатации(); КонецЕсли; КонецПроцедуры |
|||
1
Fedor-1971
12.05.20
✎
15:00
|
(0) точно на Записать или таки Заполнить?
несколькими словами: Если не заполнена ТЧ Спецоснастка, то вызываем ЗаполнитьСпецоснасткуПоОстаткамВЭксплуатации(); Иначе будет задан вопрос "... Продолжить?" (Да/Нет), как я понимаю, после ответа Да опять попадёшь в ЗаполнитьСпецоснасткуПоОстаткамВЭксплуатации(); Если отладчик остановился Ф11 зайдёт в функцию, Ф10 нет Если серверный вариант работы с 1С и не включена отладка на сервере то входа в функцию НаСервере не будет |
|||
2
Айрат_116
12.05.20
✎
15:13
|
Как я проверяю: Зашел в документ (Пустая табл часть)
1) Нажимаю заполнить по остаткам (попадаю сюда " ЗаполнитьСпецоснасткуПоОстаткамВЭксплуатации();") 2) Удаляю пару строк и опять нажимаю заполнить (попадаю уже на вопрос: нажимаю продолжить) 3) Он сразу же заполняет заного таблицу, не попадая в ЗаполнитьСпецоснасткуПоОстаткамВЭксплуатации() |
|||
3
Fedor-1971
12.05.20
✎
15:25
|
(2) поставь точку останова внутри ЗаполнитьСпецоснасткуПоОстаткамВЭксплуатации();
После выдачи вопроса, код выполняется дальше, т.е. просто выходит из процедуры, ответ обработается в другой процедуре (из оповещения) - это функционал асинхронного варианта работы системы Просто нужно один раз пройтись по граблям, дальше станет легче |
|||
4
Айрат_116
12.05.20
✎
15:27
|
Всё увидел что попадает туда.
Но теперь не понятно почему в мою процедуру не попадает) 1)Создал команду Команда = ЭтаФорма.Команды.Добавить("ЗаполнитьПоОстаткам"); Команда.Действие = "ОбработчикПоОстаткам"; Команда.ИзменяетСохраняемыеДанные = Истина; Кнопка = ЭтаФорма.Элементы.Добавить("ЗаполнитьПоОстаткам", Тип("КнопкаФормы"), ЭтаФорма.Элементы.ГруппаСпецодеждаЗаполнить); Кнопка.Заголовок = "Заполнить по остаткам Фио и подразделение (Новое)"; Кнопка.ИмяКоманды = "ЗаполнитьПоОстаткам"; 2) Действия команды &НаКлиенте Процедура ОбработчикПоОстаткам(Команда) Если НЕ ПроверитьВозможностьЗаполненияТабличнойЧасти() Тогда Возврат; КонецЕсли; Если Объект.Спецодежда.Количество() > 0 Тогда ТекстВопроса = НСтр("ru='При заполнении табличная часть будет очищена. |Продолжить?'"); СИстекшимСрокомПолезногоИспользования = Ложь; Оповещение = Новый ОписаниеОповещения( "ВопросПриЗаполненииСпецодеждыПоОстаткамЗавершение", ЭтотОбъект, СИстекшимСрокомПолезногоИспользования); ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Нет); Иначе тн_ЗаполнитьСпецодеждуПоОстаткамВЭксплуатации(); КонецЕсли; КонецПроцедуры 3) &НаСервере Процедура тн_ЗаполнитьСпецодеждуПоОстаткамВЭксплуатации(СИстекшимСрокомПолезногоИспользования = Ложь) Объект.Спецодежда.Очистить(); тн_СтандартныеПодсистемыВызовСервера.тн__ЗаполнитьСпецодеждуПоОстаткамВЭксплуатации( Объект, Объект.Спецодежда, , СИстекшимСрокомПолезногоИспользования); КонецПроцедуры Первый раз когда нажимаю всё правильно работает Но если чуть поменять табличную часть и опять нажать на эту кнопку, то она начинает заполнять как с типовой Вроде все процедуры вызываются свои |
|||
5
dezss
12.05.20
✎
15:31
|
Смотри что вызывается в процедуре "ВопросПриЗаполненииСпецодеждыПоОстаткамЗавершение".
Там, скорей всего, нужно заменить типовой вызов на твой. |
|||
6
Айрат_116
12.05.20
✎
15:37
|
(5) Да) Нашел, Спасибо большое=)
|
|||
7
Fedor-1971
12.05.20
✎
15:42
|
(4) в названия добавь префикс нов_.... тогда точно ничего не попутаешь
ВопросПриЗаполненииСпецодеждыПоОстаткамЗавершение(... - вот тут посмотри что творится, скорее всего, вызывается стандартная процедура |
|||
8
Айрат_116
12.05.20
✎
15:46
|
(7) Я префикс ставил (тн)
Да в этом дело было |
|||
9
Айрат_116
12.05.20
✎
15:53
|
(7) Спасибо)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |