|
v7: Передача документов в другую конфигурацию через XML. Невозможно принять реквизит | ☑ | ||
---|---|---|---|---|
0
Romchyk
19.01.17
✎
22:42
|
Передача документов в другую конфигурацию через XML. Невозможно принять реквизит документа. Реквизит имеет вид перечисления. Через файл передаю идентификатор перечисления.
фрагмент кода: Перес = СокрЛП(ДокРеквизит.ПолучитьАтрибут("Значення")); Вид = СокрЛП(ДокРеквизит.ПолучитьАтрибут("Вид")); Для к=1 по Метаданные.Перечисление() Цикл ТекВид=Метаданные.Перечисление(к); Если СокрЛП(ТекВид.Идентификатор) = Вид Тогда Для й=1 по ТекВид.Значение() Цикл ТекЗнач=ТекВид.Значение(й); Если (СокрЛП(ТекЗнач.Идентификатор) = Перес) или (СокрЛП(ТекЗнач.Представление) = Перес) Тогда Документ.УстановитьАтрибут(ДокРеквизит.Наименование, ТекЗнач ); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; |
|||
1
Romchyk
19.01.17
✎
22:48
|
Если написать код так:
Документ.УстановитьАтрибут(ДокРеквизит.Наименование, Перечисление.ТицЦен.Цена2 ); тогда все хорошо, а в первом варианте не получается. Подскажите где ошибка |
|||
2
Romchyk
20.01.17
✎
09:57
|
Профессионалы помогите
|
|||
3
FIXXXL
20.01.17
✎
10:01
|
подозреваю, что ТекЗнач у тебя объект метаданных, а нужна ссылка
попробуй через ПредопределенноеЗначение(....) .... - строка-путь к значению перечисления |
|||
4
FIXXXL
20.01.17
✎
10:03
|
сорри, не увидел 77 :)
|
|||
5
h-sp
20.01.17
✎
10:08
|
(2) вообще непонятно, где тут у тебя XML?
|
|||
6
Romchyk
20.01.17
✎
11:34
|
это фрагмент кода
Перес = СокрЛП(ДокРеквизит.ПолучитьАтрибут("Значення")); Вид = СокрЛП(ДокРеквизит.ПолучитьАтрибут("Вид")); значение Перес и Вид берутся с XML файла |
|||
7
Slypower
20.01.17
✎
12:05
|
Так нужно сперва найти это значение в базе, т.к. ТекЗнач - это строка, скорее всего, а реквизит дока - это перечисление.
Используй ЗначениеПоИдентификатору(<?>) Синтаксис: ЗначениеПоИдентификатору(<Идентификатор>) Назначение: Возвращает значение перечисления, соответствующее идентификатору в конфигураторе. Если не найдено - то пустое значение. Параметры: <Идентификатор> - строковое выражение. Идентификатор значения перечисления, заданный в конфигураторе. или ЗначениеПоНомеру(<?>) Синтаксис: ЗначениеПоНомеру(<Номер>) Назначение: Возвращает значение перечисления по порядковому номеру в перечислении. Параметры: <Номер> - порядковый номер значения в перечислении. А уже затем присваивай в доке |
|||
8
Romchyk
20.01.17
✎
12:42
|
е = Перечисление.ТипыЦен.ЗначениеПоИдентификатору(ТекЗнач.Идентификатор);
Документ.УстановитьАтрибут(ДокРеквизит.Наименование, е); Заработало, но еще одна проблема. ТипыЦен - это вид регистра. Вместо него нужно подложить переменную Вид. Вид = СокрЛП(ДокРеквизит.ПолучитьАтрибут("Вид")); е = Перечисление.Вид.ЗначениеПоИдентификатору(ТекЗнач.Идентификатор); Документ.УстановитьАтрибут(ДокРеквизит.Наименование, е); но так не работает |
|||
9
Romchyk
20.01.17
✎
13:14
|
Нашел решение: ПолучитьАтрибут()
Вид = СокрЛП(ДокРеквизит.ПолучитьАтрибут("Вид")); е = Перечисление.ПолучитьАтрибут(Вид).ЗначениеПоИдентификатору(ТекЗнач.Идентификатор); окумент.УстановитьАтрибут(ДокРеквизит.Наименование, е); Slypower большое спасибо. |
|||
10
Slypower
20.01.17
✎
13:23
|
(8) это хорошо, что работает, только вот реквизит документа никак не может быть ТИПОМ регистра. Строка, перечисление, справочник, документ, число и т.д., но не регистр. Перечисление это так сказать, набор значений.
Поэтому вы как-то не совсем разобрались с реквизитами и регистрами, либо не верно излагаете свою мысль) |
|||
11
Romchyk
20.01.17
✎
15:56
|
извиняюсь, ТипыЦен - это вид перечисление а не регистра
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |