Вход | Регистрация
 

Конвертация двух значений перечисления в третье

Конвертация двух значений перечисления в третье
Я
   Kraspila
 
19.05.21 - 12:13
Правила имеют некоторую универсальность, используются в двух разных базах. В первой перечисление имеет значение "Супермаркеты" во второй "НДСГипер"
их нужно консолидировать в базу приемник в виде значения "НДССети"
Подскажите, как это сделать. Завести такое значение нельзя, так как правила загрузятся в другую базу и там его не будет.
Просто заменить на строковое значение тоже не получается.
Такой код тоже не работает:
        Если Строка(Источник) =  "Супермаркеты" ИЛИ  Строка(Источник) =  "НДСГипер" Тогда
        Значение = "НДССети"
    КонецЕсли;
 
 Партнерская программа EFSOL Oblako
   Малыш Джон
 
1 - 19.05.21 - 12:30
в базе приемнике нет значения НДССети, но его нужно там поставить?
   Kraspila
 
2 - 19.05.21 - 12:32
(1) В приемнике как раз всё в порядке, НДССети есть, но в одной базе источнике оно называется "Супермаркеты" во второй "НДСГипер", на выходе надо получить "НДССети "
   mikecool
 
3 - 19.05.21 - 12:33
настроить соответствие значений?
   mikecool
 
4 - 19.05.21 - 12:34
+3 добавить условие и настроить программное соответствие
   Малыш Джон
 
5 - 19.05.21 - 12:34
(2) ну в конвертации значений в ПКС этого перечисления ставь сопоставление соответствующее
   Kraspila
 
6 - 19.05.21 - 12:35
(3) да, но для другой базы будет ошибка, называется то оно по другому в другой базе, т.е. этого не найдется
   Малыш Джон
 
7 - 19.05.21 - 12:36
(6) если у тебя разные базы, значит и правила будут разные
   Kraspila
 
8 - 19.05.21 - 12:36
(5)  для одной настрою,  но для другой базы будет ошибка, называется то оно по другому в другой базе, т.е. этого не найдется. И к тому же в метаданные его не добавишь с другим именем
   mikecool
 
9 - 19.05.21 - 12:36
(6) тогда напиши в коде в передвыгрузкой
если это такая то база и Значение = одно, то Значение = сети
иначеесли
   Kraspila
 
10 - 19.05.21 - 12:37
(4) типа того ?
Если Строка(Источник) =  "Супермаркеты" ИЛИ  Строка(Источник) =  "НДСГипер" Тогда
        Значение = "НДССети"
КонецЕсли; (9) (9)
   Kraspila
 
11 - 19.05.21 - 12:37
(9) Если Строка(Источник) =  "Супермаркеты" ИЛИ  Строка(Источник) =  "НДСГипер" Тогда
        Значение = "НДССети"
КонецЕсли; (9) (9)
   Малыш Джон
 
12 - 19.05.21 - 12:37
(6) можно конечно через попу сделать, но это обязательный гемморой в будущем
   Kraspila
 
13 - 19.05.21 - 12:38
(12) понимаю, что для каждой базы лучше свои правила иметь, но это не от меня зависит
   Малыш Джон
 
14 - 19.05.21 - 12:39
(13) база приемник одна? в смысле экземпляр один? или на каждый регион своя база?
   Kraspila
 
15 - 19.05.21 - 12:39
(9) в каком месте? В передвыгрузкой перечисления? Или значения свойства объекта, где оно участвует?
   Kraspila
 
16 - 19.05.21 - 12:40
(14) Приемник один экземпляр, источника два
   RomanYS
 
17 - 19.05.21 - 12:40
(11) только не "Источник", а "Источник.ТвойРЕквизит"
   Kraspila
 
18 - 19.05.21 - 12:42
(17) да, но если источник уже перечисление, можно оставить  "Источник"? (вопрос с подвохом)
   Малыш Джон
 
19 - 19.05.21 - 12:43
(16) тогда как выше рекомендуют: в событии "Перед выгрузкой" по условию присваивай значение
   Малыш Джон
 
20 - 19.05.21 - 12:44
(18) Источник - это владелец ПКО
   RomanYS
 
21 - 19.05.21 - 12:44
(18) тогда не понятно где ты это пишешь. У перечислений можно просто задать соответствие значений и больше ничего не делать
   Kraspila
 
22 - 19.05.21 - 12:50
(18) (21) да! Но значения в разных базах называются по разному.
   Kraspila
 
23 - 19.05.21 - 12:51
(19) перед выгрузкой реквизита? Или перечисления?
   RomanYS
 
24 - 19.05.21 - 12:57
(22) Соотнести два в один вроде никакой проблемы нет. Естественно сами значения добавить руками придется - из конфигурации придёт только одно значение
   Kraspila
 
25 - 19.05.21 - 12:58
(24) вторая конфигурация не примет правила со значением которого нет
   RomanYS
 
26 - 19.05.21 - 13:00
(25) Проверял?
   Kraspila
 
27 - 19.05.21 - 13:02
(26) да
   Kraspila
 
28 - 19.05.21 - 13:02
(26) при загрузке правил падает
   RomanYS
 
29 - 19.05.21 - 13:04
(23) Значит делай при выгрузке реквизита
(28) Так у тебя таблица соответствий пустая?
   Kraspila
 
30 - 19.05.21 - 13:11
(29) настроены только общие, те, которые совпадают в обеих базах
 
 
   Pro-tone
 
31 - 19.05.21 - 13:28
(2) >>В приемнике как раз всё в порядке, НДССети есть, но в одной базе источнике оно называется "Супермаркеты" во второй "НДСГипер", на выходе надо получить "НДССети "

а что в качестве выхода? куда выход? в третью базу? если нет, то в приемнике есть "НДССети"
   Pro-tone
 
32 - 19.05.21 - 13:30
(29) именно так, похоже структуру базы он не обновил, значений перечислений в конвертахе нет, потому и падает у него на получении значения
   Kraspila
 
33 - 19.05.21 - 14:45
(32) Совершенно верно. Структуру базы обновить нельзя, так как в разных базах значения перечисления называются по разному
   Pro-tone
 
34 - 19.05.21 - 14:49
(33) обычно так всегда и бывает, значения разные, в кд ты их сам сопоставляешь либо в ПКЗ либо кодом в обработчике ПКС "Перед выгрузкой"
   Kraspila
 
35 - 20.05.21 - 10:49
Решение не было найдено. В итоге пришлось сделать так, что-бы в обеих базах-источниках значение перечисления называлось одинаково.
   RomanYS
 
36 - 20.05.21 - 11:34
(35) Ничего не мешало прописать замену для каждого реквизита. Ссылок на это перечисление явно не должно быть много
   Kraspila
 
37 - 20.05.21 - 11:47
(36) просто переименовали значение. Для обмена этого достаточно. Но тем не менее это не решение, а выход из ситуации. Пришлось обращаться в филиал, которому принадлежит база
   azt-yur
 
38 - 20.05.21 - 12:24
(0) Подозреваю что здесь
Если Строка(Источник) =  "Супермаркеты" ИЛИ  Строка(Источник) =  "НДСГипер" Тогда
при преобразовании в строку получается представление перечисления в виде Синонима, а ты сравниваешь с Именем. По идее подобный код должен был сработать
   RomanYS
 
39 - 20.05.21 - 12:24
(37) Решение было в (10) с поправкой (17) при выгрузке реквизита. Это как минимум.
   RomanYS
 
40 - 20.05.21 - 12:25
(38) +1 Вместо Строка использовать XMLСтрока если это имена значений перечислений
   Pro-tone
 
41 - 20.05.21 - 12:34
(40) решение было в (34), а он тут огород городит
   Pro-tone
 
42 - 20.05.21 - 12:34
он - это автор ветки
   Kraspila
 
43 - 20.05.21 - 12:53
(41) метаданные в базах источниках по разному называются. Как ты их сопоставишь?
   RomanYS
 
44 - 20.05.21 - 13:06
(43) Бери второй вариант - ПКС
   Pro-tone
 
45 - 20.05.21 - 13:39
(43) я понимаю так как он написал в (0) 
>>В первой перечисление имеет значение "Супермаркеты" во второй "НДСГипер" 

здесь нет ни слова что это перечисления с разными именами метаданных, а что такое "значение" перечисления, это то что внутри самого перечисления, так вот он пишет что разные значения, а их как сопоставить я причел в (34)
   Pro-tone
 
46 - 20.05.21 - 13:39
*привел
   Pro-tone
 
47 - 20.05.21 - 13:40
поэтому Kraspila , хочешь ответ получить научись верно формулировать вопрос
   Pro-tone
 
48 - 20.05.21 - 13:58
да, если разные метаданные, то тоже не вижу проблемы - сопоставляются реквизиты с разными типами метаданных, а в ПКС принудительно устанавливаются значения, как ты написал в (0), и все работает, только значения надо устанавливать не строчно, а ссылочно, типа такого Перечисления.ТвоеПеречисление.ЗначениеПеречисления
   Pro-tone
 
49 - 20.05.21 - 13:58
и правило конвертации пустое при этом
   RomanYS
 
50 - 20.05.21 - 14:14
(48) Так в источнике нет таких значений. Поэтому устанавливать как раз строкой.
(49) +1
   Pro-tone
 
51 - 20.05.21 - 14:22
(50) тогда это делается передачей в параметр, а дальше в ПКО "Перед загрузкой":
Объект.РеквизитТипПеречисления = Перечисления.ТвоеПеречисление[ПараметрыОбъекта["РеквизитДляПриемника"]]
   Pro-tone
 
52 - 20.05.21 - 14:25
(51) если быть точнее,  то в ПКО "При загрузке", в "Перед загрузкой" там нет еще объекта


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