7.7 Открыть форму документа и задать вопрос

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Samouchka, 17 май 2014.

  1. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Приветствую всех! Мне нужно при открытии формы документа задать вопрос. То есть сделать так, чтобы сначала открылась форма данного документа, а поверх формы вызвать диалоговое окно с вопросом. У меня вопрос появляется, а сама форма документа открывается только после ответа на вопрос. Что я не так делаю? В первом варианте кода я пишу процедуру ПолучитьКурсы(), где есть этот вопрос внутри процедуры "ПриОткрытии" формы. Во втором варианте процедуру ПолучитьКурсы() вызываю после всех процедур (пишу в самом низу модуля).
    1 вариант:
    Код:
    Процедура ПолучитьКурсы()
    //запросим получение курсов, если их нет
        КурсПоставкиПолуч = СоздатьОбъект("Периодический");
        КурсПоставкиПолуч.ИспользоватьОбъект("Курс",ВалютаПоставки);
        Если КурсПоставкиПолуч.НайтиЗначение(ДатаПоставки,0)=0 Тогда
            Ответ=Вопрос("Курс валюты на дату поставки ("+ДатаПоставки+") не найден! Получить курс валюты с сайта РБК?",4);
            Если Ответ=7 тогда
                Возврат;
            КонецЕсли;
            Если Ответ=6 тогда
                ДатаВОбработку=ДатаПоставки;
                ОткрытьФорму("Отчет.ИППКурсыВалютРБК",ТекущийДокумент());
            КонецЕсли;
        КонецЕсли;
    КонецПроцедуры
     
    Процедура ПриОткрытии()
    ПолучитьКурсы();
    КонецПроцедуры
    2 вариант:
    Код:
    Процедура ПолучитьКурсы()
    //запросим получение курсов, если их нет
        КурсПоставкиПолуч = СоздатьОбъект("Периодический");
        КурсПоставкиПолуч.ИспользоватьОбъект("Курс",ВалютаПоставки);
        Если КурсПоставкиПолуч.НайтиЗначение(ДатаПоставки,0)=0 Тогда
            Ответ=Вопрос("Курс валюты на дату поставки ("+ДатаПоставки+") не найден! Получить курс валюты с сайта РБК?",4);
            Если Ответ=7 тогда
                Возврат;
            КонецЕсли;
            Если Ответ=6 тогда
                ДатаВОбработку=ДатаПоставки;
                ОткрытьФорму("Отчет.ИППКурсыВалютРБК",ТекущийДокумент());
            КонецЕсли;
        КонецЕсли;
    КонецПроцедуры
    ///////////
    /////////// в самом низу модуля формы:
    ПолучитьКурсы();
  2. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.438
    Симпатии:
    373
    Баллы:
    104
    в чём смысл то?
    из -"Вопрос("Курс валюты на дату поставки ("+ДатаПоставки+") не найден! Получить курс валюты с сайта РБК?",4);" следует что проверить курс валюты надо в момент задания/заполнения даты отгрузки или его изменения, так ведь? и зачем это при открытии делать?
  3. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Смысл есть. Это просто пример неудачный. Дальше мне нужно будет получить курс на завтрашний день, если он еще не загружен. Тогда я просто открываю форму и утвердительно отвечаю на вопрос. Обычно в 14:00 сегодняшнего дня известен курс валют на завтра.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Дело в том что в 7ке нет метода ПослеОткрытия как в 8ке... Но выход есть

    Процедура ИмяВызываемой()
    //тут ваш код
    ОбработкаОжидания("ИмяВызываемой",0);
    КонецПроцедуры

    Процедура ПриОткрытии()
    //тут ваш код
    ОбработкаОжидания("ИмяВызываемой",1);
    КонецПроцедуры
    Samouchka нравится это.
  5. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Похоже здесь в глобальный модуль лезть надо. Нашел для себя лучше решение. У меня на форме была кнопка, которую по сути надо нажать при открытии формы документа. Назначил кнопке команду - клавиша F12, а в процедуре ПриОткрытии написал имитацию нажатия клавиши F12. Получился желаемый результат: сначала открылась форма документа, а поверх вызвылось диалоговое окно с вопросом. Вот он код:
    Код:
    Процедура ПриОткрытии()
    WSHShell = СоздатьОбъект("WScript.Shell");
        WSHShell.SendKeys("{F12}");
    КонецПроцедуры
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Зачем в ГМ???
    Все модуле формы документа. Работа функции ОбработкаОжидания в модуле не документирована, но она работает.

Поделиться этой страницей