Имя: Пароль:
1C
1С v8
Мульти платформенная обработка
0 MiracMC
 
02.07.19
23:46
Доброго времени суток.

Суть задачи - запускать одну и ту же обработку в разных версиях системы (УПТ, УПП, бухгалтерия....). Понятно что код для разных версий будет свой...
Грабли слови в момент отладки бухгалтерии (УТП и УПП такой проблемы не давало). Часть кода, который работает в УПП и УТП совершенно не совместим с Бух... причем даже не дает сохранить обработку. Ну да и фиг на него. Заключаю этот кусок в условие

Если ИмяКонфигурации <> "БухгалтерияДляУкраины12" Тогда

Но и это не помогает.

даже сохранить не могу... говорит мол нет переменной описанной в куске кода что я исключаю...
Если закоментить - естественно все получается... Но мне то надо работать на всех версией одной обработкой..

Как то можно это побороть?
1 Garykom
 
гуру
02.07.19
23:50
(0) Объявления переменных наружу выносишь из "Если" и по умолчанию инициализируешь.
2 Garykom
 
гуру
02.07.19
23:52
Возьми готовый пример типовой внешней обработки под разные конфиги и изучи внимательно.
3 palsergeich
 
03.07.19
00:12
(0) Блин хочешь мультиконфигурационно - ориентируйся на метаданные.
Если конфа на БСП смотри регистр сведений Версии подсистем, потому что ИмяКонфигурации может быть изменено нерадивыми разрабами.
4 MiracMC
 
03.07.19
00:14
(1) дело в том что речь не совсем о прямой переменной... если б я ее объявлял...
там так

СчетаУчета = УправлениеЗатратами.ПолучитьСчетаУчетаСтатьиЗатрат.....
такое есть в УПП и УТП..

а вот в Бухгалтерии оно называется
СчетаУчета = БухгалтерскийУчетРасчетовСКонтрагентами.ПолучитьСчетаРасчетовСКонтрагентом....

соответственно ругаеться оно так:

Змінна не визначена (УправлениеЗатратами)
СчетаУчета = <<?>>УправлениеЗатратами.ПолучитьСчетаУчетаСтатьиЗатрат

я был уверен что саму работу обработки я смогу регулировать условиями по отношению к наименованию конфигурации... но блин сам конфигуратор ругается.. вот в чем беда...

(2) если б все было так просто
(3) метаданные - возможно ли это в моем случае?
5 hhhh
 
03.07.19
00:16
(4) там есть функция ОбщийМодуль, можешь задать имя модуля. Ориентируйся на нее.
6 palsergeich
 
03.07.19
00:19
(4) Очень просто. Смотри как
ОбщегоНазначения.ОбщийМодуль
7 palsergeich
 
03.07.19
00:24
Соответствие = Новый Соответстие;
Соответствие.Вставить("УПП", УправлениеЗатратами);
Соответствие.Вставить("бухня", УчетЗатрат);

ИмяМоегоМетода = ПолучитьИмяМоегоМетода();
Результат = ОбщегоНазначения.ВыполнитьМетодКонфигурации(ОбщегоНазначения.ОбщийМодуль(Соответствие.Получить("ИмяКонфигурации")), ИмяМоегоМетода)
Как то так
8 Garykom
 
гуру
03.07.19
00:28
В крайнем случае через Выполнить() и Вычислить()
9 palsergeich
 
03.07.19
00:30
(8) Пусть к БСП привыкает, Выполнить и Вычислить - нонгранта в более менее серьезных местах.
Требуют писать или выполнитьметодконфигурации или ВыполнитьВБезопасномРежиме, но самому эти фуннкции не вызывать, только из БСП обертки
10 palsergeich
 
03.07.19
00:31
Это кстати на сколько я помню и в стандартах разработки описано
11 palsergeich
 
03.07.19
00:31
Ну по крайней мере АПК на это агрится
12 Garykom
 
гуру
03.07.19
00:32
(9) Так один фиг внутри БСП оно и есть, только с проверками на безопасность типа.
13 palsergeich
 
03.07.19
00:34
(12) Ты мой текст внимательно прочитал или чисто поспорить?)
14 Garykom
 
гуру
03.07.19
01:25
(13) Согласен что надо использовать БСП если она есть.
Но хорошо бы и понимать как оно работает а не быть простым копи-пастером, чтобы суметь сделать когда нет БСП в конфе или оно другой системы.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс