|
Одна внешняя обработка для разных (отличных) конфигураций. | ☑ | ||
---|---|---|---|---|
0
new_hope
06.03.19
✎
16:54
|
Есть небольшая внешняя обработка, которая (как Я этого хочу) должна работать в двух разных конфигурациях.
Так вот - в одной конфигурации она запускается и все Ок, в другой - вываливается с ошибкой, ошибка в коде, в процедуре - которая никогда не вызывается в другой конфигурации. В этой процедуре идет вызов процедуры общего модуля конфигурации, которая отсутствует во второй. То-есть перед открытием внешней обработки проходит полный синтаксический контроль? Этого можно избежать? Или делать две разные обработки и все? Сорри, если совсем дурной вопрос. |
|||
1
zak555
06.03.19
✎
16:55
|
пример кода
|
|||
2
zak555
06.03.19
✎
16:55
|
а так в выполнить
|
|||
3
Fragster
гуру
06.03.19
✎
17:00
|
завернуть код в Выполнить или в другую форму
|
|||
4
new_hope
06.03.19
✎
17:00
|
(1)
Вот ошибка: {ВнешняяОбработка.ЗагрузкаПД.Форма.Форма.Форма(150,61)}: Переменная не определена (глТекущийПользователь) ОбщегоНазначения.ЗаполнитьШапкуДокумента(ДокументПлатежка,<<?>>глТекущийПользователь); Просто в другой конфигурации отсутствует переменная "глТекущийПользователь". Но - во второй конфигурации я и не предполагал вызов этой процедуры, где эта "ошибочная" строка кода. Но система всеравно проверяет и вываливает обработку |
|||
5
new_hope
06.03.19
✎
17:01
|
(3) Сейчас попробую. Спасибо.
|
|||
6
new_hope
06.03.19
✎
17:01
|
(2) Спасибо. пробую.
|
|||
7
mistеr
06.03.19
✎
19:25
|
Проще не использовать глТекущийПользователь.
|
|||
8
lubitelxml
06.03.19
✎
19:30
|
используйте ПараметрыСеанса.ТекущийПользователь
|
|||
9
Смотрящий
06.03.19
✎
20:22
|
(0) глТекущийПользователь = глТекущийПользователь;
ОбщегоНазначения.ЗаполнитьШапкуДокумента(ДокументПлатежка, глТекущийПользователь); |
|||
10
d4rkmesa
06.03.19
✎
20:29
|
(0) В БСП есть процедура ОбщегоНазначения.ОбщийМодуль :
Функция ОбщийМодуль(Имя) Экспорт Если Метаданные.ОбщиеМодули.Найти(Имя) <> Неопределено Тогда Модуль = Вычислить(Имя); // ВычислитьВБезопасномРежиме не требуется, т.к. проверка надежная. ИначеЕсли СтрЧислоВхождений(Имя, ".") = 1 Тогда Возврат СерверныйМодульМенеджера(Имя); Иначе Модуль = Неопределено; КонецЕсли; Если ТипЗнч(Модуль) <> Тип("ОбщийМодуль") Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Общий модуль ""%1"" не найден.'"), Имя); КонецЕсли; Возврат Модуль; КонецФункции Через возвращаемое значение можно вызывать свою функцию. |
|||
11
Мимохожий Однако
06.03.19
✎
23:32
|
Если известны идентификаторы конфигураций, можно прописать для каждой конфигурации свою функцию
|
|||
12
Сияющий в темноте
06.03.19
✎
23:52
|
Можно общий модуль подучать через выполнить в переменную,а потом уже вызывать функцию через точку от этой переменной,контроль синтаксиса не заметит,что модуля нету.
|
|||
13
Бертыш
07.03.19
✎
01:13
|
ОбщегоНазначения.ЗаполнитьШапкуДокумента(ДокументПлатежка,Вычислить("глТекущийПользователь"));
|
|||
14
PaulBC
07.03.19
✎
02:40
|
а что нельзя поместить процедуру общего модуля в модуль обработки?
|
|||
15
Cyberhawk
07.03.19
✎
07:17
|
(11) Задача автора не в том, как разделить выполнение кода, а как обеспечить его компиляцию без ошибок
|
|||
16
seevkik
07.03.19
✎
07:27
|
(15) В таком случае обращаться к метаданным через [""]
|
|||
17
Мимохожий Однако
07.03.19
✎
08:23
|
(15) Можно поместить проблемный код в макет, например.
|
|||
18
xXeNoNx
07.03.19
✎
08:28
|
Запаковать различные версии обработки в макеты, потом по какому-либо ID вытаскивать их от туда и запускать
|
|||
19
Мимохожий Однако
07.03.19
✎
08:32
|
(18) Похожую штуку однажды наблюдал в обработке для подготовки данных ТСЖ в госорганы. Там для каждого региона была отдельная форма.
|
|||
20
Cyberhawk
07.03.19
✎
08:58
|
(16) Это не всегда возможно
|
|||
21
Cyberhawk
07.03.19
✎
08:59
|
(17) Ну это вариация на уже предложенный вариант со строкой + Выполнить()
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |