|
Несколько общих модулей, как обращаться??? | ☑ | ||
---|---|---|---|---|
0
Студиозус
10.04.20
✎
13:11
|
Есть такая вещь. Три внешних программы. Которые с помощью разных методов API возвращают однотипные значения.
Стоит задача это всё автоматизировать. Для каждой программы написан отдельный общий модуль, в каждом из которых написаны и одинаково называются процедуры (ПолучитьДанныеПоКоду()) Но соответственно в зависимости от номенклатуры необходимо обращаться к этим процедурам в разных модулях. Т.е. Если Товар1 Анхель.ПолучитьданныеПоКоду("nnn279"); Если Товар2 Ронус.ПолучитьданныеПоКоду("nnn279"); И т.д. Вот не могу придумать, как мне сделать обращение к этим модулям универсальным. Что то типа [ИмяОбщегомодуля].ПолучитьданныеПоКоду("nnn279"); |
|||
1
Делопроизводитель
10.04.20
✎
13:12
|
Выполнить()
|
|||
2
fisher
10.04.20
✎
13:14
|
У общих модулей есть свойство "ЭтотОбъект". Таким образом можно получать на них "ссылку", через которую потом работать. В БСП широко используется.
|
|||
3
Ненавижу 1С
гуру
10.04.20
✎
13:16
|
Если ... Тогда
Модуль = Анхель; ИначеЕсли ... Тогда Модуль = Ронус; КонецЕсли; Модуль.ПолучитьданныеПоКоду("nnn279"); |
|||
4
fisher
10.04.20
✎
13:16
|
Блин, или не через ЭтотОбъект, а напрямую. Но работать через ссылку на общий модуль точно можно.
|
|||
5
Студиозус
10.04.20
✎
13:16
|
(1) А как туда параметры передавать при вызове процедуры?
(2) А как обратиться именно к нужному модулю? У меня есть его имя, но только в виде строки. "Анхель" например. |
|||
6
Студиозус
10.04.20
✎
13:17
|
(3) Да в том то и дело что ни хочу так реализовывать)
Список внешних приложений будет расширяться и постоянно лезть жёстко прописывать в коде не кошено как то. |
|||
7
fisher
10.04.20
✎
13:18
|
(5) Если имя именно в виде строки, тогда через Вычислить(), наверное.
|
|||
8
fisher
10.04.20
✎
13:19
|
Попробуй
Модуль = Вычислить("Анхель"); |
|||
9
arsik
гуру
10.04.20
✎
13:21
|
(6) Сделай еще один общий модуль, который и будет уже вызывать Другие.
|
|||
10
fisher
10.04.20
✎
13:23
|
(6) Кстати да. Ты зря соответствие хочешь из кода вынести. Ведь общий модуль специфичный для внешнего приложения ты все равно в пользовательской части не сделаешь. А значит вполне нормально и соответствие модулей в коде прописать.
|
|||
11
strange2007
10.04.20
✎
13:29
|
В ЗУП-е я сам использовал общие модули в виде ссылки. Одна ф-ия вычисляла общий модуль и в сотне местах этой кострукцией перенаправлял вызов в один из 3-х модулей.
Как делал - не помню. Давно уже это было. Не соврать, с нового года не касался этого. |
|||
12
fisher
10.04.20
✎
13:29
|
Другими словами, если список внешних приложений у тебя задан предопределенными элементами отдельного справочника, то не надо имена общих модулей пихать в него. Захардкодить в одном месте свич по получению соответствующего общего модуля - лучше.
|
|||
13
NeoVision
10.04.20
✎
13:30
|
(0) ОбщегоНазначения.ОбщийМодуль(Имя) в типовых на БСП
если в кратце, то как у (8) |
|||
14
Ненавижу 1С
гуру
10.04.20
✎
13:33
|
(6) ну сделай справочник или РС с реквизитами:
1. условие на языке запросов 2. внешняя обработка профит! |
|||
15
Студиозус
10.04.20
✎
13:50
|
(8)Прокатило!!!!
Спасибо! (10) Я прям в настройках подключения к этим внешним программам пишу какой модуль им использовать. Удобно на самом деле. |
|||
16
Студиозус
10.04.20
✎
13:51
|
(13) Или так можно!)
|
|||
17
fisher
10.04.20
✎
14:51
|
(15) Удобно это может быть только в одном случае - если для новой внешней программы подходит модуль старой. В противном случае никакого удобства не добавляется, т.к. нужно реализовать новый общий модуль и один раз прописать соответствие и без изменения конфы это все равно сделать не выйдет.
|
|||
18
Garykom
гуру
10.04.20
✎
15:04
|
(9) +1 "Общий"
и еще один "Переопределяемый" и да еще "Универсальный" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |