8.х Вызов процедуры в модуле формы из другой формы

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Guzey, 3 апр 2015.

  1. TopicStarter Overlay
    Guzey
    Offline

    Guzey Опытный в 1С

    Регистрация:
    19 авг 2013
    Сообщения:
    77
    Симпатии:
    5
    Баллы:
    29
    Добрый день Коллеги, вот появился вопрос, вроде простой, но как то не сталкивался с ним. Есть документ контроль операций с товаром, у него есть форма, в модуле формы есть процедура, которая выполняет поиск в справочнике по строке, которую ввели с клавиатуры. Все эта схема работает корректно.
    Но теперь нужно этот документ допилить, имеется внешняя обработка, которая читает из файла строку. Вот тут хочется вызвать процедуру из модуля формы объекта и просто туда передать эту строку. Только как то не могу понять, как это сделать.
    Мои действия сейчас такие, внешняя обработка "заполнение объект", "открытие формы". У формы обработки есть параметр ОбъектыНазначения.
    Элемент=Параметры.ОбъектыНазначения[0];
    КлючПоиска = Новый Структура("Ключ", ДокОтладки);
    ФормаДокумента = ПолучитьФорму("Документ.КонтрольОперацииСТоваром.ФормаОбъекта", КлючПоиска);
    Форму документа из которого вызвана внешняя обработка я получил, а вот дальше то что? Или все таки копипастить нужную процедуру в модуль формы обработки? Может все таки есть какой то способ обратиться к процедуре в модуле формы?
  2. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    НЕ проще ли скопировать эту процедуру в вашу внешнюю обработку и забыть про ту форму?
  3. TopicStarter Overlay
    Guzey
    Offline

    Guzey Опытный в 1С

    Регистрация:
    19 авг 2013
    Сообщения:
    77
    Симпатии:
    5
    Баллы:
    29
    Ну вот я и спрашиваю, есть ли возможность вызвать или все таки копировать? Просто она завязана на несколько других процедур, разработкой которых занимаются другие люди. Каждый раз следить за изменениями не хочется. Проще вызывать уже имеющиеся функции.
  4. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    людям сказать, чтобы перенесли эту процедуру вместе с зависимостями в общий модуль и работать с ним
  5. TopicStarter Overlay
    Guzey
    Offline

    Guzey Опытный в 1С

    Регистрация:
    19 авг 2013
    Сообщения:
    77
    Симпатии:
    5
    Баллы:
    29
    Печально, я думал все таки есть какой то способ. Ладно, будем пробовать договариваться.
  6. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Способ есть. Нужно сначала получить форму, а затем вызвать ее метод (у него ОБЯЗАТЕЛЬНО должно стоять экспорт). Только попробуйте понять сами логику. Вы, для работы с совершенно другим объектом собираетесь получить непонятно какую то форму и вызвать из нее какой то метод. Вопрос, зачем?! Когда можно этот метод просто вызвать из другого, более оптимального места. Либо как я сказал, либо как предыдущий оратор.
  7. TopicStarter Overlay
    Guzey
    Offline

    Guzey Опытный в 1С

    Регистрация:
    19 авг 2013
    Сообщения:
    77
    Симпатии:
    5
    Баллы:
    29
    Вот в этом то и смысл, что внешняя обработка заполнения объекта открывается для конкретного объекта, который известен. Форма этого объекта тоже уже имеется и она открытая. Но вот почему то после ФормаДокумента = ПолучитьФорму("Документ.КонтрольОперацииСТоваром.ФормаОбъекта", КлючПоиска); обратиться к эспортной процедуре ФормаДокумент.МояПроцедураВФорме(); - вот таким образом не получается. Пишет, что метод объекта не обнаружен.

    з.ы. может я конечно не с той стороны подхожу к решению проблемы и логику менять надо в корне.

    Попробую описать подробнее. У документа есть кнопка, при нажатии на которую открывается поле ввода, в него списывают строку вида "200000000004700000011А0001.0004.0404.SDMP85122"(в документе таких строк до 1000), нажимаем ОК вызывается процедура:
    &НаКлиенте
    Процедура ОбработатьСтроку();
    ОбработатьСтрокуНаСервере(Строка);
    КонецПроцедуры

    &НаСервере ОбработатьСтрокуНаСервере(Строка) экспорт
    ...
    КонецПроцедуры

    Далее это строка обрабатывается, раскладывается на составляющие и заполняет табличную часть документа. Строку эту присылают нам с другой фирмы в электронном виде (не спрашивайте почему так, не я это придумал). Вот я и думал, что можно вызвать сразу ОбработатьСтрокуНаСервере и передать туда строку из внешней обработки.

    Сейчас это ручная работу, человек берет, открывает блокнот и начинает построчно копировать в поле ввода эти строки. Логично, что это не оптимальный процесс и очень долгий.

    Если моя логика не верна, поправте, если не сложно. Буду благодарен.

    Второй вариант на сколько я понимаю, получить форму, заполнить ее и потом
    КопироватьДанныеФормы(ДанныеФормыОбъект,ФормаДокумента.Объект);
    ЭтаФорма.Закрыть();
    Последнее редактирование: 3 апр 2015

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