PDA

Просмотр полной версии : Типы значений



LusikoUkr
22.03.2013, 14:57
Подскажите, кто знает, следующий момент. Меня интересует проверка на тип значения "ДокументСсылка", но не конкретно (типа, ДокументСсылка.Перемещени� �), а только, что это Документ, а не Справочник, Число, и т.д. Конкретнее, меня интересует тип колонки таблицы значений. Заранее спасибо всем откликнувшимся.

base_1c
22.03.2013, 22:05
Вариант проверки типа значения "ДокументССылка":

Если Найти(Строка(ТипЗнч(<Значение>)),"ДокументССылка")>0 тогда <"Это документ">

LusikoUkr
23.03.2013, 12:46
Да, этот вариант я использую, но он не совсем подходит. Объясню, почему. Я перебираю столбцы таблицы значений (или табличного документа) методом "Для каждого СтрокаТаб из Товары Цикл" , и нужно определить тип значения (т.е. тип реквизита колонки), чтобы создать в дальнейшем поле соответствующего типа. Можно определить Синоним колонки, типа "Справочник ссылка: nnnnnnn", и после некоторых строчных преобразований получить тип "СправочникСсылка.nnnnnn". Но синоним нг всегда совпадает с именем реквизита...А получить имя реквизита колонки при данном переборе не могу...

Balu203
25.03.2013, 11:46
Подскажите, кто знает, следующий момент. Меня интересует проверка на тип значения "ДокументСсылка", но не конкретно (типа, ДокументСсылка.Перемещени� �), а только, что это Документ, а не Справочник, Число, и т.д. Конкретнее, меня интересует тип колонки таблицы значений. Заранее спасибо всем откликнувшимся.

Документы.ТипВсеСсылки().Со держитТип(ПроверяемыйТип)
Справочники.ТипВсеСсылки(). СодержитТип(ПроверяемыйТи� �)

LusikoUkr
25.03.2013, 12:11
Спасибо за ответ. ПОпробую применить, хотя пока не знаю как...В данном случае надо перебирать всемозможные типы, чтобы определить нужный, а надо по типу, как в 7-ке : Если ТипЗначения(Знач) = 12 ТОгда ....

Balu203
25.03.2013, 12:18
Спасибо за ответ. ПОпробую применить, хотя пока не знаю как...В данном случае надо перебирать всемозможные типы, чтобы определить нужный, а надо по типу, как в 7-ке : Если ТипЗначения(Знач) = 12 ТОгда ....

И в чем проблема?

Если Документы.ТипВсеСсылки().Со держитТип(ТипЗнч(Знач)) Тогда ...

перебирать ничего не надо

LusikoUkr
25.03.2013, 12:29
Может я не допонимаю, но приведу конкретно: Для каждого Реквизит Из Док.Метаданные().ТабличныеЧ асти.Товары.Реквизиты , где док -конкретно выбраннй документ. Нужно определить тип Реквизита (каждой конкретной колонки табличной части), т.е., меня интероесеут имя объекта, которое записывается в колонку таблицы.

Balu203
25.03.2013, 12:34
Может я не допонимаю, но приведу конкретно: Для каждого Реквизит Из Док.Метаданные().ТабличныеЧ асти.Товары.Реквизиты , где док -конкретно выбраннй документ. Нужно определить тип Реквизита (каждой конкретной колонки табличной части), т.е., меня интероесеут имя объекта, которое записывается в колонку таблицы.

А вот теперь нужно, точнее просто необходимо объяснить зачем всё это надо

LusikoUkr
25.03.2013, 12:40
А надо это для того, чтобы создать таблицу значений с теми же реквизитами для дальнейшего ее использования, а именно- мне нужно выгружать/загружать отдельные документы в разные конфигурации. Типа универсальной обработки

Balu203
25.03.2013, 12:45
Ну тогда всё тривиально до ужаса:

Для каждого Реквизит Из Док.Метаданные().ТабличныеЧ асти.Товары.Реквизиты

типы получим с помощью Реквизит.Тип, это уже готовое ОписаниеТипов для колонки ТЗ

т.е. ТЗ.Колонки.Добавить(Реквиз� �т.Имя,Реквизит.Тип)

LusikoUkr
25.03.2013, 12:51
НЕ совсем. Реквизит.Тип в данном переборе - это синоним реквизита, а не имя. А синоним не всегда совпадаем с именем (с чем я и столкнулась, когда пошла эти путем).

---------- Post added at 12:51 ---------- Previous post was at 12:48 ----------

Выше я писала по этому поводу, как это в действительности - Это Реквизит.Тип - "Справочник ссылка: nnnnnnn". Преобразовать можно, но что делать с такими, н-р "Справочник ссылка: склады (места хранения)" . И для каждого реквизита что-то свое...

Balu203
25.03.2013, 13:09
НЕ совсем. Реквизит.Тип в данном переборе - это синоним реквизита, а не имя. А синоним не всегда совпадаем с именем (с чем я и столкнулась, когда пошла эти путем).

---------- Post added at 12:51 ---------- Previous post was at 12:48 ----------

Выше я писала по этому поводу, как это в действительности - Это Реквизит.Тип - "Справочник ссылка: nnnnnnn". Преобразовать можно, но что делать с такими, н-р "Справочник ссылка: склады (места хранения)" . И для каждого реквизита что-то свое...


Отвыкните уже от 77! Синоним, это синоним. А Тип это Тип!

в случае с "таким перебором":

Для каждого Реквизит Из Док.Метаданные().ТабличныеЧ асти.Товары.Реквизиты

Реквизит.Тип, это ОписаниеТипов, его не нужно преобразовывать!!! Его надо указать при создании колонки ТЗ в качестве типа! Это НЕ текстовая строка, она НЕ равна синониму! Это в 77 тип у вас строкой обозначается в 1С 8 есть специальный класс ОписаниеТипов, в котором в отличие от 77 можно указывать любые типы в любых комбинациях!!! в 77 вы не можете создать колонку в ТЗ, в которой тип Строка или Справочник.Контрагенты, в 1с 8 можно

Код который написал я в одном из ответов работать будет!

LusikoUkr
25.03.2013, 13:23
СПасибо. Сейчас попробую.

---------- Post added at 13:23 ---------- Previous post was at 13:13 ----------

Я, конечно, достану вас окончательно. Да, в таком варианте все получается.Но мне нужно именно имя, т.к. мне надо выгрузить полученные значения в любой файл в том виде, в котором я смогу их найти в ДРУГОЙ БАЗЕ! И база эта аналогичная по конфигурации, но другая. И стандартные обработки Загрузки/Выгрузки здесь не подходят.

Balu203
25.03.2013, 13:48
Имя колонки при отработке метода Колонки.Добавить(Реквизит.� �мя,Реквизит.Тип) будет совпадать, в другой базе можно будет обратиться так же. Но проблема переноса куда интереснее.

Надо каким-то образом понимать есть объект, упомянутый в документе в другой базе или его надо создать, типами тут не обойдешься, ссылки на элементы в другой базе будут бесполезны...
Самое интересное в случае справочников, ибо может быть иерархия (в Справочнике Номенклатура - 100%), может быть неуникальность кодов, переносить это крайне сложно. Адекватно можно настроить перенос только создав свои правила конвертации в Конвертации данных, но это сложно. Впрочем, изобретать что-то свое еще более неблагодарное и бесполезное занятие.

LusikoUkr
25.03.2013, 14:08
Да, это все я понимаю. Базы аналочны по ассортименту. В случае отсутствия чего-либо будет создаваться новый элемент. Поиск по уникальному значению. Это фактически переброс аналогичного товара с одного ЧП на другое. В любом случае, спасибо. Я все это учту. Думаю, что-то, да получится. А потом, как говорят - мы не ищем легких путей...