Вход | Регистрация
 

точка останова не срабатывает на функции

точка останова не срабатывает на функции
Я
   Айрат_116
 
12.05.20 - 14:39
Здравствуйте, объясните пожалуйста как работает эта процедура на кнопку записать у документа "Списания материалов"

Мне не понятно почему точка останова не срабатывает на функции "ЗаполнитьСпецоснасткуПоОстаткамВЭксплуатации();" Когда я нажимаю "Продолжить"

Данные получаются от туда (ЗаполнитьСпецоснасткуПоОстаткамВЭксплуатации)

&НаКлиенте
Процедура СпецоснасткаЗаполнитьПоОстаткам(Команда)

    Если НЕ ЗначениеЗаполнено(Объект.ПодразделениеОрганизации) Тогда
        ПоказатьПредупреждение( , НСтр("ru='Не указано подразделение организации!
            |Заполнение невозможно!'"));
        Возврат;
    КонецЕсли;

    Если НЕ ПроверитьВозможностьЗаполненияТабличнойЧасти() Тогда
        Возврат;
    КонецЕсли;

    Если Объект.Спецоснастка.Количество() > 0 Тогда
        ТекстВопроса = НСтр("ru='При заполнении табличная часть будет очищена.
            |Продолжить?'");
        СИстекшимСрокомПолезногоИспользования = Ложь;
        Оповещение = Новый ОписаниеОповещения(
            "ВопросПриЗаполненииСпецоснасткуПоОстаткамЗавершение", ЭтотОбъект, СИстекшимСрокомПолезногоИспользования);
        ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Нет);
    Иначе
        ЗаполнитьСпецоснасткуПоОстаткамВЭксплуатации();
    КонецЕсли;

КонецПроцедуры
   Fedor-1971
 
1 - 12.05.20 - 15:00
(0) точно на Записать или таки Заполнить?
несколькими словами:
Если не заполнена ТЧ Спецоснастка, то вызываем ЗаполнитьСпецоснасткуПоОстаткамВЭксплуатации();
Иначе будет задан вопрос "... Продолжить?" (Да/Нет), 

как я понимаю, после ответа Да опять попадёшь в ЗаполнитьСпецоснасткуПоОстаткамВЭксплуатации();

Если отладчик остановился Ф11 зайдёт в функцию, Ф10 нет
Если серверный вариант работы с 1С и не включена отладка на сервере то входа в функцию НаСервере не будет
   Айрат_116
 
2 - 12.05.20 - 15:13
Как я проверяю: Зашел в документ (Пустая табл часть)
1) Нажимаю заполнить по остаткам (попадаю сюда " ЗаполнитьСпецоснасткуПоОстаткамВЭксплуатации();")
2) Удаляю пару строк и опять нажимаю заполнить (попадаю уже на вопрос: нажимаю продолжить)
3) Он сразу же заполняет заного таблицу, не попадая в ЗаполнитьСпецоснасткуПоОстаткамВЭксплуатации()
   Fedor-1971
 
3 - 12.05.20 - 15:25
(2) поставь точку останова внутри ЗаполнитьСпецоснасткуПоОстаткамВЭксплуатации();

После выдачи вопроса, код выполняется дальше, т.е. просто выходит из процедуры, ответ обработается в другой процедуре (из оповещения) - это функционал асинхронного варианта работы системы

Просто нужно один раз пройтись по граблям, дальше станет легче
   Айрат_116
 
4 - 12.05.20 - 15:27
Всё увидел что попадает туда.

Но теперь не понятно почему в мою процедуру не попадает)
1)Создал команду
        Команда    = ЭтаФорма.Команды.Добавить("ЗаполнитьПоОстаткам");
    Команда.Действие    = "ОбработчикПоОстаткам";
    Команда.ИзменяетСохраняемыеДанные = Истина;
    
    Кнопка        = ЭтаФорма.Элементы.Добавить("ЗаполнитьПоОстаткам", Тип("КнопкаФормы"), ЭтаФорма.Элементы.ГруппаСпецодеждаЗаполнить);
    Кнопка.Заголовок    = "Заполнить по остаткам Фио и подразделение (Новое)";
    Кнопка.ИмяКоманды    = "ЗаполнитьПоОстаткам";

2) Действия команды

&НаКлиенте
Процедура ОбработчикПоОстаткам(Команда)
    
    Если НЕ ПроверитьВозможностьЗаполненияТабличнойЧасти() Тогда
        Возврат;
    КонецЕсли;

    Если Объект.Спецодежда.Количество() > 0 Тогда
        ТекстВопроса = НСтр("ru='При заполнении табличная часть будет очищена.
            |Продолжить?'");
        СИстекшимСрокомПолезногоИспользования = Ложь;
        Оповещение = Новый ОписаниеОповещения(
            "ВопросПриЗаполненииСпецодеждыПоОстаткамЗавершение", ЭтотОбъект, СИстекшимСрокомПолезногоИспользования);
        ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Нет);
    Иначе
        тн_ЗаполнитьСпецодеждуПоОстаткамВЭксплуатации();
    КонецЕсли;

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

3)

&НаСервере
Процедура тн_ЗаполнитьСпецодеждуПоОстаткамВЭксплуатации(СИстекшимСрокомПолезногоИспользования = Ложь)

    Объект.Спецодежда.Очистить();

    тн_СтандартныеПодсистемыВызовСервера.тн__ЗаполнитьСпецодеждуПоОстаткамВЭксплуатации(
        Объект, 
        Объект.Спецодежда, 
        ,
        СИстекшимСрокомПолезногоИспользования); 

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

Первый раз когда нажимаю всё правильно работает
Но если чуть поменять табличную часть и опять нажать на эту кнопку, то она начинает заполнять как с типовой
Вроде все процедуры вызываются свои
   dezss
 
5 - 12.05.20 - 15:31
Смотри что вызывается в процедуре "ВопросПриЗаполненииСпецодеждыПоОстаткамЗавершение".
Там, скорей всего, нужно заменить типовой вызов на твой.
   Айрат_116
 
6 - 12.05.20 - 15:37
(5) Да) Нашел, Спасибо большое=)
   Fedor-1971
 
7 - 12.05.20 - 15:42
(4) в названия добавь префикс нов_.... тогда точно ничего не попутаешь

ВопросПриЗаполненииСпецодеждыПоОстаткамЗавершение(... - вот тут посмотри что творится, скорее всего, вызывается стандартная процедура
   Айрат_116
 
8 - 12.05.20 - 15:46
(7) Я префикс ставил (тн)
Да в этом дело было
   Айрат_116
 
9 - 12.05.20 - 15:53
(7) Спасибо)

Список тем форума
Рекламное место пустует  Рекламное место пустует
AdBlock убивает бесплатный контент. 1Сергей
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.