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