Имя: Пароль:
1C
1С v8
Как отключить проверку при создании объектаXDTO на основании типа?
0 RomaH
 
naïve
17.12.14
10:13
В типе описаны фасеты (возможные значения)

Атрибут = ФабрикаXDTO.Создать(Свойство.Тип, "6.04");

выдает исключение

{Обработка.BILL.Форма.Форма.Форма(24)}: Ошибка при вызове метода контекста (Создать)
            Атрибут = ФабрикаXDTO.Создать(Свойство.Тип, "6.04");
по причине:
Несоответствие типов XDTO
по причине:
Ошибка проверки данных XDTO:
Значение: '6.04' не соответствует простому типу:
Значение не соответствует значениям фасета перечисления

хотелось бы сначала пройти весь алгоритм создания XML, а потом уж его проверить на соответствие схеме

это возможно?
1 RomaH
 
naïve
17.12.14
10:17
2 RomaH
 
naïve
17.12.14
15:20
вверх
3 tridog
 
17.12.14
15:43
(0) А зачем? Ну, предположим, надурите вы ее (фабрику), запишите свой xml. Он же все равно потом не прочитается из-за несоответствия схеме.
4 Smile 8D
 
17.12.14
15:50
(3) Возможно хотят собрать все ошибки и вывести их разом, а не выводить по одной
5 RomaH
 
naïve
17.12.14
16:00
(4)  а-то
допустим выгружается данные о лечении пациентов в фонд ОМС

всего пациентов 10000
у 50 из них ошибка в дате рождения 0063
у 20 не верно указан вид документа уд. личность "38"

и еще куча неверной информации, правила проверки прописаны в XSD которую мы получаем из фонда

до сегодняшнего момента XML  формировалась без использования XSD - XSD использовалась только для проверки уже готового файла

теперь вот смотрим в сторону XDTO - но там в случае ошибки сразу исключение

конечно можно через попытку/исключение каждый объект заполнять, но как-то кривовато
6 tridog
 
17.12.14
21:24
(5) Если будет создаваться невалидный объект - будет еще кривее.

Для описанной задачи - при первой ошибке установки свойства кажется оптимальным переходить в режим проверки дальнейших данных - т.е. продолжать уже только создавать объекты, не записывая их в xml. И, собственно, накапливать информацию об ошибках.
7 RomaH
 
naïve
17.12.14
22:41
(6) так я их и не записываю в хмл
а создаю объекты - ошибка именно на этой строке кода:
ФабрикаXDTO.Создать(Свойство.Тип, "6.04");
8 RomaH
 
naïve
17.12.14
22:44
(5) Если будет создаваться невалидный объект - будет еще кривее.
поставь себя на место человека который будет жать на кнопку "создать файл в ТФОМС"

нажал - подождал 5 минут (там не хилый сбор данных идет) - ошибка - исправил
нажал - ошибка - исправил
100500 раз
нажал - нет ошибок - записал

или все-таки лучше
нажал - список ошибок - исправил
нажал - записал?
9 tridog
 
17.12.14
23:32
(8) Я и не предлагал после первой ошибки падать :)

Но это и не повод пытаться получить от XDTO нарушение контракта.

Фабрика кидает исключение вполне обоснованно - Ваше дело исключение обработать.
10 Apokalipsec
 
18.12.14
00:01
Как облегчить задачу - формировать в отдельной процедуре, всё обернуть в попытку, в случае исключения добавлять ошибку в массив ошибок, потом вывести весь массив. По крайней мере не по одной ошибке вылавливать.
11 RomaH
 
naïve
18.12.14
08:03
(10) на каждый тип отдельную Попытку?

Атрибут = ФабрикаXDTO.Создать(Свойство.Тип, "6.04");

заменить на

Атрибут = СоздатьАтрибутВПопытке(Тип,Значение);
12 RomaH
 
naïve
18.12.14
08:07
с попыткой-то понятно
может другой вариант имеется создания ХМЛ по схеме
что бы с коллекциями, но без проверки
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан