Имя: Пароль:
1C
1С v8
БП 3.0. Как правильно ветвить выполнение кода для разных организаций.
,
0 Deon
 
23.07.14
16:19
Есть БП 3.0, в которой ведется учет по нескольким организациям.
И случилось так, что для одной организации документ должен проводиться по одному алгоритму, для другой - по другому.
Как грамотно в коде указывать это условие?
Штатно всякие различия между организациями живут в регистре учетной политики. Разумно ли добавлять туда свой ресурс и в ветвлении обращаться к нему?
1 Deon
 
23.07.14
16:32
Да не может быть, чтобы ни у кого не было идей
2 Borteg
 
23.07.14
16:35
Если  Тогда
3 Aloex
 
23.07.14
16:36
go to
4 Deon
 
23.07.14
16:39
Вброс хиловат даже для начала )
5 Borteg
 
23.07.14
16:42
(4) ты уже достаточно вбросил
что хочешь услышать то? обычно условие чем не подходит? или надо изрыгнуть мега регистр  организация/поле чтото там считывать и исходя из этого выполнять куски кода?
6 acsent
 
23.07.14
16:44
Скорее всего эта настройка уже есть
7 YFedor
 
23.07.14
16:52
(0) Тут ведь все зависит от того, что за условие.

Я писал в строковом реквизите организации строки типа Параметр1=Значение1;Параметр2 = Значение2;

Брал эту строку в нужных местах и анализировал
8 Deon
 
23.07.14
17:06
(7) А потом каждый раз разбирал эту строку? А если Значение должно быть ссылкой?
9 Лефмихалыч
 
23.07.14
17:10
я бы в отдельную базу вынес бы к херам эту особенную организацию, а данные бы конвертацией сливал
10 Лефмихалыч
 
23.07.14
17:10
иначе натурально греха необерешься
11 Deon
 
23.07.14
17:10
Давайте придумаю конкретную задачу:

Если у пользователя стоит основная организация "ООО Контора", то приветствовать его сообщением "Привет"
Если у пользователя стоит основная организация "ООО Корпорация", то приветствовать его сообщением "Здравствуйте"
12 Deon
 
23.07.14
17:10
(9) (10) Это да, это жестоко.
13 Лефмихалыч
 
23.07.14
17:11
(11) это другая задача - тут текст приветствия нужно в свойства организации добавить и все. Тебе же нужно, чтобы пользователи ООО Контора получали сообщение "Привет", а пользователей ООО КОрпорация через клавиатуру током херачило
14 Deon
 
23.07.14
17:12
(13) "в свойства организации" - это в доп.свойства или в реквизит справочника?
15 Borteg
 
23.07.14
17:15
НастройкаВРег = ВРег("ОсновнаяОрганизация");
    
    ЗначениеНастройки = ХранилищеОбщихНастроек.Загрузить(НастройкаВРег,,, Неопределено);
    
    Организация = ?(ЗначениеНастройки = Неопределено, Справочники.Организации.ПустаяСсылка(), ЗначениеНастройки);

Если Организация.МойРеквизит = 1 Тогда
иначе
КонецЕсли;

В упрощенном варианте я бы както так может быть сделал. Можно регистр прикрепить.
16 Borteg
 
23.07.14
17:17
(15) а если организации 2
то вообще можно просто для  основной организации проводить по 1 алгоритму для другой по другому

НастройкаВРег = ВРег("ОсновнаяОрганизация");
    
    ЗначениеНастройки = ХранилищеОбщихНастроек.Загрузить(НастройкаВРег,,, Неопределено);
    
    Организация = ?(ЗначениеНастройки = Неопределено, Справочники.Организации.ПустаяСсылка(), ЗначениеНастройки);

Если Документ.организация = Организация Тогда
17 Лефмихалыч
 
23.07.14
17:18
(14) я бы допсвойства использовал. Ради такой херни метаданные портить - моветон
18 bolobol
 
23.07.14
17:19
Подписка на выполнение кода и там уже стереть на%ер всё, что сделал неправдный 1С код и вписать свой для любимой организации.
19 bolobol
 
23.07.14
17:20
Портить типовуху - зло! Каждое обновление это будет доказывать ежемесячно.
20 Лефмихалыч
 
23.07.14
17:20
а вообще, если по-разному проводятся, может быть это просто разные документы?


Ну или уж точно - это абсолютно разные виды операций
21 Deon
 
23.07.14
17:22
(17) Обращение к допсвойствам из кода тоже не очень красивое. Все равно надо его имя в коде писать. А это имя любой пользователь поменять может
22 Deon
 
23.07.14
17:23
(19) Ну а как же мне сказать "Привет", не портя типовую. А не поздороваться - не вежливо
23 Лефмихалыч
 
23.07.14
17:38
(22) настоящий самурай типовой код не трогает
24 YFedor
 
23.07.14
17:40
(8) У меня есть свой общий модуль, в котором по переданной организации выдается структура со значениями параметров.

Все равно типовой код ломать, поэтому и общий модуль добавить не проблема, а уже в проведении:

параметрыОрганизации_ = МойОбщийМодуль.ПолучитьПараметрыОрганизации(Организация);

хреначитьПоОсобому_ = Ложь;

Если параметрыОрганизации_.Свойство("ХреначитьПоОсобому") Тогда
Если параметрыОрганизации_.ХреначитьПоОсобому Тогда
хреначитьПоОсобому_ = Истина;


Если хреначитьПоОсобому_ Тогда
ХреначитьПоОсобому();
Иначе
ХреначитьКакОбычно();
КонецЕсли;//хреначитьПоОсобому_
25 YFedor
 
23.07.14
17:41
+(24) два КонецЕсли забыл
26 bolobol
 
23.07.14
17:42
Даже сказать "привет" можно не портя типовую. Запустить 1С с обработкой при старте
27 Deon
 
23.07.14
17:43
(26) Это костыли
28 Лефмихалыч
 
23.07.14
17:44
(27) нет, костыли - это типовой код ломать
29 Deon
 
23.07.14
17:44
(25) Очень хорошо, спасибо. А как выглядит код модуля "МойОбщийМодуль"?
30 Deon
 
23.07.14
17:45
(28) Не ломать, а дорабатывать с учетом предстоящих обновлений.
31 Deon
 
23.07.14
17:46
(26) (28) Да хрен с ними, с костылями. А как в этой обработке грамотно реализовать ветвление?
32 VRednaia
 
23.07.14
17:58
(31)  что (24) оказалось слишком длинным для чтения?
33 f_vadim
 
23.07.14
18:03
(31) во. придмал такой велосипед на костылях.
В типовой добавить одну строку, типа если свойство не заполнено - пляшем по типовому коду, если заполнено - выполнить(код_из_свойства). В свойстве хранить код проведения :)
Независимо от того, куда вы едете — это в гору и против ветра!