8.х доступ к процедурам другого модуля

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

  1. TopicStarter Overlay
    st88
    Offline

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

    Регистрация:
    18 окт 2012
    Сообщения:
    1.725
    Симпатии:
    28
    Баллы:
    54
    Собственно есть такая задача. Есть обработка, в ней выбираются две компании.
    У этих компаний есть по 20 клиентов и соотв по одному договору в котором перечислены эти клиенты.
    Складывается ситуация, когда первая компания отдаёт половину (10 своих клиентов) второй компании.
    Проблемы не составляет из ТЧ первой компании перенести в ТЧ второй компании эти 10 абонентов. А есть проблема в пересчёте ТЧ договоров этих двух компаний, т.к. расчёт ТЧ договора вбит в процедурах модуля договора И КАК К ЭТИМ ПРОЦЕДУРАМ обратиться из обработки чтобы выполнить пересчёт ТЧ договоров обеих компаний и соответсвенно их запись.
    Может как то получать форму договора с ТЧ и программно обращаться, вообщем подскажите возможно это или нет?!
  2. AlexeyKh
    Offline

    AlexeyKh Опытный в 1С

    Регистрация:
    27 июл 2012
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Один из путей.
    В модуле Договора должна быть процедура с пометкой Экспорт

    в программе обработки при переборе ТЧ с Договорами, из Договора получаете объект и через точку вызываете вашу процедуру обработки.
    пример
    Для каждого Стр из ТЧ Цикл

    ДоговорОбъект = Стр.Договор.ПолучитьОбъект();
    ДоговорОбъект.ПроцедураОбработки();

    КонецЦикла;

    примерно так.
  3. TopicStarter Overlay
    st88
    Offline

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

    Регистрация:
    18 окт 2012
    Сообщения:
    1.725
    Симпатии:
    28
    Баллы:
    54
    а если нет варианта влезть и редактировать (дописывать экспорт) в модуль формы договора.

    а если копировать процедуры к себе в обработку, там будет страниц 10, да ещё их все перелопатить под обработку и всё равно будет обращение в них к процедурам в модуле договора и тогда их ещё копировать, и будет ппц а не обработка...(

    ещё есть какой либо путь?!
  4. TopicStarter Overlay
    st88
    Offline

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

    Регистрация:
    18 окт 2012
    Сообщения:
    1.725
    Симпатии:
    28
    Баллы:
    54
    А если вот так сделать??? но чёт не могу разобраться с синтаксисом, выдает ошибку..(
    договорУК1 = документы.Договор.НайтиПоРеквизиту("КонтрАгент",ук1выб).ПолучитьОбъект();
    ФормаДокумента = договорУК1.ПолучитьФорму();
    Формадокумента.УстановитьДействие("ДействияТабличнаяЧастьЗаполнить()",);

    как правильно написать УстановитьДействие??? в договоре как раз есть кнопка заполнить, которая всё пересчитает и сделает?!

    вот в модуле формы договора её описание:
    Процедура ДействияТабличнаяЧастьЗаполнить(Кнопка)

    вот такая вот ошибка:
    {Обработка.ЗаменаУК.Форма.Форма.Форма(99)}: Ошибка при вызове метода контекста (УстановитьДействие)
    Формадокумента.УстановитьДействие("ДействияТабличнаяЧастьЗаполнить()",);
    по причине:
    Недопустимое значение параметра (параметр номер '1')
  5. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Ну дык передайте туда параметр то. Процедура на вход просит параметры - дайте ей его. 1С не загоняет вас в стойло жесткой типизации, посему в качестве параметра можно передать даже строку например УстановитьДействие("СНОВЫМГОДОМПОШЕЛНАФИГ"); Главное чтобы этот параметр в теле процедуры, если он там анализируется - не привел к сбою.

    Зачем вызываете "УстановитьДействие"??? Почему нельзя вызвать саму функцию/проуедура "ХрюМуЗаполнить"?
  6. TopicStarter Overlay
    st88
    Offline

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

    Регистрация:
    18 окт 2012
    Сообщения:
    1.725
    Симпатии:
    28
    Баллы:
    54
    потому что она не экспортная (нельзя лезть в модуль из-за поддержки).
    я так понял в полученной форме в 8-ке никак нельзя программно нажать кнопку "заполнить", чтобы без пользователя всё отработало?!
  7. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Можно. Можно открыть форму, откалибровать ее на экран, проверить что открытие формы производится и кнопка "ОК" встает там где надо. Далее программно открывать форму документа, и вызывать скрипт эмулирующий нажатие мыши в заданных координатах.

    А если серьезно, что? Процедура заполнения такая сложная, что вы не можете ее скопировать в свою обработку и доработать натфилем?
  8. TopicStarter Overlay
    st88
    Offline

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

    Регистрация:
    18 окт 2012
    Сообщения:
    1.725
    Симпатии:
    28
    Баллы:
    54
    ну страниц этак на 5 она и ещё в себе вызывает штуки 3 процедуры, которые в свою очередь в себе тоже вызывают какие либо процедуры или функции. и в общем итоге придётся копировать страниц 15-20 кода и их надфилем обрабатывать.

    имхо ну его нах такой подход... будут пальцем тыкать..)
  9. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    1) Вам каждую! строчку кода дорабатывать совсем даже не придется. Только "шероховатости", которые вам сразу покажет проверка синтаксиса.
    2) На самом деле вызовов идет много, но большАя или даже бОльшая часть этих вызовов заруливается на общие модули, либо является вызовом вполне самостоятельной, практически изолированной функции в десяток строк.

    Практика подобных извратов еще с 1С 7.7 показывает, что перенести кусок кода из модуля формы в свою обработку, и допилить его до потребного вида занимает всего часа 4-6, учитывая что первая месага от вас поступила сегодня в 9:45, а с той поры прошло уже 9.5 часов - то засучив рукава вы бы УЖЕ сделали то, что вам нужно + осталось бы время на тестирование и поковрыться в носу почитать новости.

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