На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:

  • Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
  • Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
  • Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.

Высказать своё мнение о модераторах раздела можно здесь: evGenius
  
> Обращение к процедурам одного документа из другого
    Ух щас спрошу... :)
    Нужно создать программно (без участия пользователя) документ, вызвать некоторые его процедуры, записать и провести. Т.е вот в таком фрагменте:
    ExpandedWrap disabled
      Источник=СоздатьОбъект("Документ.ЗаказПоставщику");
      Источник.Новый();
      Источник.ВводНаОсновании(ДокОснование);
      Источник.Провести();
      Источник.Записать();
    Возникает ошибка : Поле агрегатного объекта не обнаружено (ВводНаОсновании).
    А мне нужно именно вызывать процедуры из созданных объектов.
    Т. Е просто невидны процедуры другого модуля. Обратиться к ним можно с помощью передачи контекста, НО для этого нужно ВРУЧНУЮ - МЫШКОЙ открыть этот документ. А я этого нехочу!!! Мне это просто никак не нужно!!! :angry: :( :huh: :blink:
      а у дока ЗаказПоставщику вообще есть процедура ВводНаОсновании?
      подозреваю что нет, хотя можт и не в этом дело - попробуй просто взять кусок кода из этой процедуры (если она все же есть) и поставить вместо той строки (ну и подкорректировать его по месту) - ведь надо просто какие-то начальные значения поустанавливать - да?
        Да нет, ето я знаю. Вопрос именно в том - как вызвать процедуру из другого модуля?
          а, ясно: ВводНаОсновании - это предопределенный метод формы документа, а не документа - т.е. у дока такого метода ессно нету - надо что-то типа:
          Док.Форма.ВводНаОсновании() - но неуверен - надо поэкспериментировать...
            Для агрегатных типов данных в 1С ты не можешь вызывать из другого модуля их процедуры. Т.е. например, если у тебя есть в модуле формы документа процедура ааа(), то ты не можешь вызвать Док.ааа() - это не ООП. По крайней мере так было до 17 релиза.
              Так и есть - нельзя, но уже нашелся один обходной вариант. Кто догадается первым?biggrin.gif
                как я и говорил: "...просто взять кусок кода из этой процедуры..." ???
                  Нет smile.gif
                    Хм... Непосредственно в программировании под 1С не силен... Но когда-то обходил похожий глюк за счет того, что открывал нужную форму в фоновом режиме, а там уже когда надо к ней обращался, временно передвая ей фокус. Не уверен, правда, что так можно делать и тут.
                      Не, так не катит по той простой причине, что когда форма документа открыта (пусть даже в фоновом режиме) в этот документ запрещена запись. Все оказалось намного проще. Если нужно чтобы запускаемая форма сделала последовательность каких то действий, то можно передать ей в качестве параметра список действий а в процедуре - при открытии поставить отслеживание передачи твоего параметра и обработку его. Это конечно обходной вариант, но как сильно он облегчает жизнь! laugh.gif laugh.gif laugh.gif
                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0250 ]   [ 15 queries used ]   [ Generated: 25.04.24, 13:08 GMT ]