Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Мульти платформенная обработка

Мульти платформенная обработка
Я
   MiracMC
 
02.07.19 - 23:46
Доброго времени суток.

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

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

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

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

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

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

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

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

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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.