Имя: Пароль:
1C
1С v8
XDTO - Не дает установить значение перечисления
0 Madway
 
21.12.16
21:20
Исходные:

Две конфигурации с одинаковыми названиями перечислений но отличающимися значениями:
Конфигурация 1:
Перечисление1
- Значение1
- Значение2

Конфигурация 3
Перечисление2
- Значение1
- Значение2
- Значение3

Тип в схеме:
<xs:simpleType name="EnumRef.ТипыКасс">
    <xs:restriction base="xs:string">
        <xs:enumeration value=""/>
        <xs:enumeration value="Значение1"/>
        <xs:enumeration value="Значение2"/>
        <xs:enumeration value="Значение3"/>
    </xs:restriction>
</xs:simpleType>

Создаю объект XDTO по своей схеме.

Делаю выгрузку данных из Конфигурации 1, где у нас в конфигурации только 2 значения.

Заполняю объект XDTO.
Вариант1:
ОбъектXDTO.Свойство = Значение3Строкой;
Выдает ошибку:
Ошибка при установке значения атрибута контекста (Перечисление1): Ошибка отображения типов:
Отображение лексического значения 'Значение3' в значение типа 'ПеречислениеСсылка.Перечисление1'
Не работает. Пытается преобразовать значение в ссылку 1С, не выходит, отваливается в ошибку.

ОбъектXDTO.Свойство = Значение2Строкой;
Работает. Перобразовал в ссылку 1С, так как нашел ее.

Вариант2:
Переименовываем(удаляем) объект метеданных Перечисление1 в конфигурации.
ОбъектXDTO.Свойство = Значение3Строкой;
Записывается без ошибки. Записывается как строка без преобразования.

ОбъектXDTO.Свойство = Значение2Строкой;
Записывается без ошибки. Записывается как строка без преобразования.

Вопрос. Как в данном случае записать в объект XDTO значение перечисления отсутствующее в конфигурации источнике если перечисление с одинаковыми названиями есть в обоих конфигурациях.

Пока вопрос решил добавлением значение3 из конфигурации2 в конфигурацию 1, но это однозначно костыль.
1 Madway
 
21.12.16
21:22
Корректировка:

Исходные:

Две конфигурации с одинаковыми названиями перечислений но отличающимися значениями:
Конфигурация 1:
Перечисление1
- Значение1
- Значение2

Конфигурация 2
Перечисление1
- Значение1
- Значение2
- Значение3

Тип в схеме:
<xs:simpleType name="EnumRef.Перечисление1">
    <xs:restriction base="xs:string">
        <xs:enumeration value=""/>
        <xs:enumeration value="Значение1"/>
        <xs:enumeration value="Значение2"/>
        <xs:enumeration value="Значение3"/>
    </xs:restriction>
</xs:simpleType>

Создаю объект XDTO по своей схеме.

Делаю выгрузку данных из Конфигурации 1, где у нас в конфигурации только 2 значения перечисления.

Заполняю объект XDTO.
Вариант1:
ОбъектXDTO.Свойство = Значение3Строкой;
Выдает ошибку:
Ошибка при установке значения атрибута контекста (Перечисление1): Ошибка отображения типов:
Отображение лексического значения 'Значение3' в значение типа 'ПеречислениеСсылка.Перечисление1'
Не работает. Пытается преобразовать значение в ссылку 1С, не выходит, отваливается в ошибку.

ОбъектXDTO.Свойство = Значение2Строкой;
Работает. Перобразовал в ссылку 1С, так как нашел ее.

Вариант2:
Переименовываем(удаляем) объект метеданных Перечисление1 в конфигурации.
ОбъектXDTO.Свойство = Значение3Строкой;
Записывается без ошибки. Записывается как строка без преобразования.

ОбъектXDTO.Свойство = Значение2Строкой;
Записывается без ошибки. Записывается как строка без преобразования.

Вопрос. Как в данном случае записать в объект XDTO значение перечисления отсутствующее в конфигурации источнике если перечисление с одинаковыми названиями есть в обоих конфигурациях.

Пока вопрос решил добавлением значение3 из конфигурации2 в конфигурацию 1, но это однозначно костыль.
2 Defender aka LINN
 
21.12.16
22:26
Соответствие предопределенных значений сделал?
ИмяПКО или как оно там в 3 КД - задано?
3 Madway
 
22.12.16
12:50
(2) Обмен не через правила конвертации, а через XDTO.
4 Жан Пердежон
 
22.12.16
12:59
как объект создаешь?
5 Жан Пердежон
 
22.12.16
13:04
Вангую: фабрика у тебя не той системы
6 Defender aka LINN
 
22.12.16
14:32
(3) Там тоже "правила" есть какбе
7 Defender aka LINN
 
22.12.16
14:33
(+) Или ты совсем свое пилишь?