Имя: Пароль:
1C
 
Несколько общих модулей, как обращаться???
,
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 "Общий"
и еще один "Переопределяемый" и да еще "Универсальный"
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.