Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вызов функции из другого модуля
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
andrew231
Здравствуйте! Мне необходимо вызвать функцию которая находится в модуле формы "Накладная Перемещение" в процедуру которая находится в модуле формы "Акт производство ...". Функция хранит значение "Доступный остаток" который необходимо перенести в другой документ. Глобально объявлять функцию я пробовал и это работает, но это нерациональное решение задачи.

Подскажите доступные методы. Заранее благодарю.
sava1
Цитата(andrew231 @ 09.10.12, 10:52) необходимо зарегистрироваться для просмотра ссылки
это нерациональное решение задачи.


Этим нерациональным решением вся 1с сделана.
Более простого решения просто нет. Есть варианты с использованием внешних компонент - но надо ли?
Cthulhu
Функцию? Не процедуру?
Цитата(andrew231 @ 09.10.12, 9:52) необходимо зарегистрироваться для просмотра ссылки
Функция хранит значение "Доступный остаток" который необходимо перенести в другой документ. Глобально объявлять функцию я пробовал и это работает, но это нерациональное решение задачи.

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

Цитата(sava1 @ 09.10.12, 10:08) необходимо зарегистрироваться для просмотра ссылки
Есть варианты с использованием внешних компонент

Если процедуру - то можно и без ВК.
mister-x
відкриваємо неявно необхідну форму (статусВозврата(0)), виконуємо необхідну процедуру, але потім можливий геморой, краще через глобальник
Cthulhu
Цитата(mister-x @ 09.10.12, 12:52) необходимо зарегистрироваться для просмотра ссылки
відкриваємо неявно необхідну форму (статусВозврата(0)), виконуємо необхідну процедуру

"виконуємо" - це, вибачте мені мою необізнаність, як саме? (власне, з урахуванням того, що мова йде про код інщої форми, й без використання ЗК)
mister-x
передати в форму, що відкривається необхідні параметри і виконати необхідну процедуру, назад вертаємо результат
Cthulhu
Цитата(mister-x @ 09.10.12, 13:32) необходимо зарегистрироваться для просмотра ссылки
передати в форму, що відкривається необхідні параметри і виконати необхідну процедуру

звідки у вас така жагуча впевненість в тому, що в процедурі ПриОткрытии форми документа вже міститься код, який обов'язково відпрацює будь-які "необхідні параметри" - для мене загадка.
ще раз. уважно. мова йде про виконання процедур однієї форми (без її зміни) з коду іншої(!) форми.
mister-x
Цитата(Cthulhu @ 09.10.12, 14:38) необходимо зарегистрироваться для просмотра ссылки
(без її зміни) з коду іншої(!) форми.

про це в задачі нічого не сказано wink.gif\
в рос. торгівлі можна добавляти друковані форми без зміни коду конфи, а тут, на жаль, прийдеться змінювати або глобальний модуль, або іншу потрібну форму (мова йде про стандартні можливості 1С)

[добавлено пізніше]

якщо мається на увазі якась типова конфа
Cthulhu
Цитата(mister-x @ 09.10.12, 13:51) необходимо зарегистрироваться для просмотра ссылки
про це в задачі нічого не сказано wink.gif

а без детского сада и игр в деда буквоеда если?
об изменении формы документа (из модуля которой нужно выполнить процедуру в модуле другой формы) - равным образом ничего не сказано.
и, поелику речь идет о модуле другой формы - как минимум следовало бы при формулировке ответа про "специальные параметры" упомянуть о необходимости внесения изменений ещё и в модуль формы этого документа. а не выдавать неполный (и, строго говоря, неверный) ответ, а потом пытаться делать "хорошую мину при плохой игре". ну, мне так кажется.
sava1
Цитата(andrew231 @ 09.10.12, 10:52) необходимо зарегистрироваться для просмотра ссылки
нерациональное решение задачи.


Кстати, самым рациональным будет поместить функцию в глобальный модуль и вызывать ее из обеих форм
mister-x
Цитата(sava1 @ 09.10.12, 15:02) необходимо зарегистрироваться для просмотра ссылки
а без детского сада и игр в деда буквоеда если?

Цитата(Cthulhu @ 09.10.12, 14:59) необходимо зарегистрироваться для просмотра ссылки
упомянуть о необходимости внесения изменений ещё и в модуль формы этого документа. а не выдавать неполный (и, строго говоря, неверный) ответ, а потом пытаться делать "хорошую мину при плохой игре". ну, мне так кажется.

я дав один із можливих варіантів
Цитата(andrew231 @ 09.10.12, 10:52) необходимо зарегистрироваться для просмотра ссылки
Подскажите доступные методы.

автору вирішувати, що йому більш доцільніше використовувати
Cthulhu
Цитата(mister-x @ 09.10.12, 13:51) необходимо зарегистрироваться для просмотра ссылки
в рос. торгівлі можна добавляти друковані форми без зміни коду конфи, а тут, на жаль, прийдеться змінювати або глобальний модуль, або іншу потрібну форму (мова йде про стандартні можливості 1С)

1) внешние печ.формы - это как бы немного из совсем другой оперы куплет;
2) в 1с есть возможность инициировать выполнение процедур (не функций) одной формы из модуля другой формы. без ВК. не редактируя модуль формы с вызываемой процедурой. и без прочих "ну так в условии же не сказано".
mister-x
Цитата(Cthulhu @ 09.10.12, 15:20) необходимо зарегистрироваться для просмотра ссылки
в 1с есть возможность инициировать выполнение процедур (не функций) одной формы из модуля другой формы. без ВК. не редактируя модуль формы с вызываемой процедурой

не використовував такого і не бачив такого в типових конфах, можна детальніше - самому цікаво?
Cthulhu
Цитата(mister-x @ 09.10.12, 14:25) необходимо зарегистрироваться для просмотра ссылки
не використовував такого і не бачив такого в типових конфах, можна детальніше - самому цікаво?

мне кажется, будет больше пользы, если попробовать самому придумать - как именно.
подсказка: недокументированный способ использования системной процедуры ОбработкаОжидания: допускается её использование в контексте(!) формы, в виде "Форма.ОбработкаОжидания(..);" - с указанием процедуры формы в качестве процедуры, вызываемой по обработке ожидания.
mister-x
Цитата(Cthulhu @ 09.10.12, 15:30) необходимо зарегистрироваться для просмотра ссылки
недокументированный способ использования системной процедуры ОбработкаОжидания: допускается её использование в контексте(!) формы, в виде "Форма.ОбработкаОжидания(..);" - с указанием в вызываемой по обработке ожидания процедуры формы.

чого він ще не тут необходимо зарегистрироваться для просмотра ссылки wink.gif
а взагалі то
Цитата
ОбработкаОжидания(<ИмяПроцедуры>,<ИнтервалВызова>)
Назначение:
Инициирует периодический вызов процедуры глобального модуля с заданным интервалом времени.
Возвращает имя процедуры глобального модуля, которая назначена для периодического запуска (на момент до исполнения процедуры).

про таку недокументовану фічу не знав
andrew231
Похоже что варианта нет! ладно будем копать))


Спасибо за желание помочь haha.gif
mister-x
копайте сюди
Цитата(Cthulhu @ 09.10.12, 15:30) необходимо зарегистрироваться для просмотра ссылки
подсказка: недокументированный способ использования системной процедуры ОбработкаОжидания: допускается её использование в контексте(!) формы, в виде "Форма.ОбработкаОжидания(..);" - с указанием процедуры формы в качестве процедуры, вызываемой по обработке ожидания.

Vofka
Цитата(andrew231 @ 11.10.12, 15:42) необходимо зарегистрироваться для просмотра ссылки
Похоже что варианта нет!

А через глобальный модуль почему не вариант?
Cthulhu
Цитата(andrew231 @ 11.10.12, 14:42) необходимо зарегистрироваться для просмотра ссылки
Похоже что варианта нет! ладно будем копать))

вариантов, вообще-то, целых два с половиной.
первый - готовый, но "не ндравицца".
второй - не готовый, думать, блин, придётся.
и последний полувариант - использование ВК, которая позволяет "в лоб" вызывать процедуры и функции модуля формы через контекст открытой формы.

а, впрочем... как скажете, нет так нет.
andrew231
Цитата(mister-x @ 11.10.12, 15:46) необходимо зарегистрироваться для просмотра ссылки
копайте сюди

окей спасибо)


Цитата(Vofka @ 11.10.12, 16:04) необходимо зарегистрироваться для просмотра ссылки
А через глобальный модуль почему не вариант?


потому что создание функции в глобальном модуле только для того чтобы ей пользовался лишь один вид документа это не рационально.
Vofka
Цитата(andrew231 @ 15.10.12, 10:47) необходимо зарегистрироваться для просмотра ссылки
потому что создание функции в глобальном модуле только для того чтобы ей пользовался лишь один вид документа это не рационально.

Из ваших слов я понял, что минимум 2.
andrew231
Цитата(Cthulhu @ 11.10.12, 16:50) необходимо зарегистрироваться для просмотра ссылки
вариантов, вообще-то, целых два с половиной.
первый - готовый, но "не ндравицца".
второй - не готовый, думать, блин, придётся.
и последний полувариант - использование ВК, которая позволяет "в лоб" вызывать процедуры и функции модуля формы через контекст открытой формы.

а, впрочем... как скажете, нет так нет.



ну да на этом я и остановился, т.е. копать начал именно в этом направлении)) спасибо 64000000.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.