Имя: Пароль:
1C
1С v8
Новый ОписаниеТипов("СправочникСсылкаВсехИВся") - как?
,
0 bolobol
 
11.09.13
18:41
Собственно, в теме и весь вопрос)

Приветствую всех!

Как описание типа сделать "ссылка или объект любого из справочников" + "и из документов"?
1 Лефмихалыч
 
11.09.13
18:43
Новый ОписаниеТипов("ЛюбаяСсылка")
2 Зойч
 
11.09.13
18:48
Справочники.ТипВсеСсылки()
3 bolobol
 
11.09.13
18:55
(1) Новый ОписаниеТипов("ЛюбаяСсылка"): Недопустимое значение параметра (параметр номер '1') (ЛюбаяСсылка)
4 bolobol
 
11.09.13
19:10
(2)     МассТипов= новый массив;
    МассТипов.Добавить(Справочники.ТипВсеСсылки());
    МассТипов.Добавить(Документы.ТипВсеСсылки());
    ТЗ1.Колонки.Добавить("Данные1", МассТипов);
Несоответствие типов (параметр номер '2')
5 NcSteel
 
11.09.13
19:12
(4) Естественно... Тип <> ОписаниеТипов
6 NcSteel
 
11.09.13
19:12
(5) П.С. Хотя может и туплю.
7 pavig
 
11.09.13
19:21
Новый ОписаниеТипов("СправочникСсылка")
зы: не проверял
8 bolobol
 
11.09.13
19:26
(7) проверяйте))

(5) (6) Да, не равно
    МассТипов= новый массив;
    МассТипов.Добавить(Справочники.ТипВсеСсылки());
    МассТипов.Добавить(Документы.ТипВсеСсылки());
    ТЗ1.Колонки.Добавить("Данные1", Новый ОписаниеТипов(МассТипов));
Так тоже не работает, а вот так:
    ТЗ1.Колонки.Добавить("Данные1", Новый ОписаниеТипов(Документы.ТипВсеСсылки()));
Работает, но тип ссылок - только документы. А мне и справочники нужны((
9 pavig
 
11.09.13
19:30
а не)
10 KAO111
 
11.09.13
19:34
Т = Новый ОписаниеТипов(Документы.ТипВсеСсылки());
Т = Новый ОписаниеТипов(Т, Справочники.ТипВсеСсылки());
11 Лефмихалыч
 
11.09.13
19:58
(3) переходите на 8.2 уже наконец
12 bolobol
 
12.09.13
10:28
(10)
ТЗ1.Колонки.Добавить("Данные1", Новый ОписаниеТипов(Новый ОписаниеТипов(Справочники.ТипВсеСсылки()), Документы.ТипВсеСсылки()));
по причине:
Несоответствие типов (параметр номер '2')
13 Defender aka LINN
 
12.09.13
10:35
Вот ты тугой... Справочники.ТипВсеСсылки().Типы()
14 Лефмихалыч
 
модератор
12.09.13
10:36
(12) следи за руками:

Т = Новый ОписаниеТипов(Документы.ТипВсеСсылки());
Т = Новый ОписаниеТипов(Т, Справочники.ТипВсеСсылки());
ТЗ1.Колонки.Добавить("Данные1", Т);
15 Defender aka LINN
 
12.09.13
10:38
(14) Или так
16 cw014
 
12.09.13
10:40
Т = Новый ОписаниеТипов(Справочники.ТипВсеСсылки() ,Документы.ТипВсеСсылки().Типы());
17 palpetrovich
 
12.09.13
10:45
если учесть Синтаксис:
Новый ОписаниеТипов(<Типы>, <КвалификаторыЧисла>, <КвалификаторыСтроки>, <КвалификаторыДаты>, <КвалификаторыДвоичныхДанных>)
то в (14) какое-то страшное колдунство :)
18 bolobol
 
12.09.13
10:48
Да всё просто оказалось!
ТипВсеСсылки() - возвращает _Описание_типов, а не Тип, как следует из названия. Тут-то всё и заиграло как положено!

Всем спасибо! (13) - сам тугой))
19 cw014
 
12.09.13
10:48
(17) в (14) немного не правильно, так как при создании на основании описания типов вторым параметром должен быть массив типов, а не описание. Да и к тому же делается это все в одну строку, как в (16)
20 bolobol
 
12.09.13
10:49
В одну:
ТЗ1.Колонки.Добавить("Данные1", Новый ОписаниеТипов(Справочники.ТипВсеСсылки(), Документы.ТипВсеСсылки().Типы()));
21 cw014
 
12.09.13
10:51
(20) Точно так - и это БигМак!!!)))
22 Лефмихалыч
 
модератор
12.09.13
10:52
(17) а ты дочитай мануал до конца
23 Defender aka LINN
 
12.09.13
10:52
(17) (19) Учу читать СП. Дорого. Или продам колесико от мыши, чуть дешевле.
24 palpetrovich
 
12.09.13
10:55
(22) дочитал, в (17) что-то типа иронии, сначала сказать что 2ой параметр - КвалификаторЧисла, а потом - что первый может состоять из кучи типов РАЗДЕЛЕННЫХ ЗАПЯТЫМИ
25 Defender aka LINN
 
12.09.13
10:56
(24) До второй строки дочитал, что ли? Там ниже еще буквы есть
26 Лефмихалыч
 
модератор
12.09.13
10:57
(24) там ниже еще написано, что у описания типов два разных конструктора
27 palpetrovich
 
12.09.13
10:57
(25) просвети, что именно я недочитал?
28 palpetrovich
 
12.09.13
10:58
(26) упс, действительно не видел
29 bolobol
 
12.09.13
11:00
И так... подумав немного - заимнтересовала тема именно "ВсеСсылки". Как сделать колонку из любых ссылок в одну строку текста? Дабы все строки, числа и прочая шляпа в колонку не попала.
30 palpetrovich
 
12.09.13
11:00
+28 все что видел:
Синтаксис:
Новый ОписаниеТипов(<Типы>, <КвалификаторыЧисла>, <КвалификаторыСтроки>, <КвалификаторыДаты>, <КвалификаторыДвоичныхДанных>)
Параметры:
<Типы> (обязательный)
Тип: Массив; Строка.
Массив значений типа Тип, состоящий из типов, которые будут использованы в объекте, или строка содержащая имена типов, разделенных запятыми.
<КвалификаторыЧисла> (необязательный)
Тип: КвалификаторыЧисла.
Квалификаторы числа, описывающие допустимые значения числового типа. Если параметр не указан, то числа хранить нельзя.
<КвалификаторыСтроки> (необязательный)
Тип: КвалификаторыСтроки.
Квалификаторы строки, описывающие допустимые значения строкового типа. Если параметр не указан, то используется неограниченная длина строки.
<КвалификаторыДаты> (необязательный)
Тип: КвалификаторыДаты.
Квалификаторы даты, описывающие допустимые значения типа Дата. Если параметр не указан, то используются обе части даты (дата + время)
<КвалификаторыДвоичныхДанных> (необязательный)
Тип: КвалификаторыДвоичныхДанных.
Квалификаторы двоичных данных.
Описание:
Создает описание типов на основании заданных типов и квалификаторов для типов Число, Строка, Дата.

есть еще?
31 bolobol
 
12.09.13
11:02
ОписаниеТипов (TypeDescription)
Свойства:

КвалификаторыДаты (DateQualifiers)
КвалификаторыДвоичныхДанных (BinaryDataQualifiers)
КвалификаторыСтроки (StringQualifiers)
КвалификаторыЧисла (NumberQualifiers)

Методы:

ПривестиЗначение (AdjustValue)
СодержитТип (ContainsType)
Типы (Types)

Конструкторы:

На основании объекта ОписаниеТипов
На основании типов и квалификаторов


- всё, дальше читать не надо - выбираем конструктор!
32 Лефмихалыч
 
модератор
12.09.13
11:14
(29) а тебе с какой целью-то?
33 Defender aka LINN
 
12.09.13
11:20
Фсё проста:

мТипВсеСсылки = Справочники.ТипВсеСсылки();
мТипВсеСсылки = Новый ОписаниеТипов(мТипВсеСсылки, Документы.ТипВсеСсылки().Типы());
мТипВсеСсылки = Новый ОписаниеТипов(мТипВсеСсылки, ПланыВидовХарактеристик.ТипВсеСсылки().Типы());
мТипВсеСсылки = Новый ОписаниеТипов(мТипВсеСсылки, ПланыОбмена.ТипВсеСсылки().Типы());
мТипВсеСсылки = Новый ОписаниеТипов(мТипВсеСсылки, ПланыВидовРасчета.ТипВсеСсылки().Типы());
мТипВсеСсылки = Новый ОписаниеТипов(мТипВсеСсылки, ПланыСчетов.ТипВсеСсылки().Типы());
мТипВсеСсылки = Новый ОписаниеТипов(мТипВсеСсылки, Перечисления.ТипВсеСсылки().Типы());
мТипВсеСсылки = Новый ОписаниеТипов(мТипВсеСсылки, БизнесПроцессы.ТипВсеСсылки().Типы());
мТипВсеСсылки = Новый ОписаниеТипов(мТипВсеСсылки, Задачи.ТипВсеСсылки().Типы());
34 Лефмихалыч
 
12.09.13
13:58
35 bolobol
 
12.09.13
14:12
О! Починили тему - благодарю)

И так, насчёт перебора известных вариантов ссылочных объектов - не подходит как решение, т.к. нет гарантии, что в следующем релизе платформы этот список будет столь же полноценным.

Чую, что-то должно быть через перебор метаданных, но не вкуриваю. Есть идеи по универсализации примера(33)?
36 Fragster
 
модератор
12.09.13
14:13
(35) сколько раз за последние 5 лет изменялся список из (33)?
37 bolobol
 
12.09.13
14:21
(36) Вопрос, я полагаю, только мне? ))
Чесснослово - не знаю! Когда-то появились бизнес-процессы и задачи - это считается как один раз? Один ли? Последний ли?

Главное понять - если ли механизм отделения ссылочных "объектов" метаданных от остальных и как на основе этих данных создать ОписаниеТипов.

Вопрос осмотрен в гугле, но ничего более решающего задачу, чем "Попытка СоздатьОбъект("..тута метаданное..")" - не обнаружил.
38 Defender aka LINN
 
12.09.13
14:29
(37) Напомнить, когда они появились?
39 bolobol
 
12.09.13
14:34
(38) Нет, не требуется, спасибо. Суть интересующей задачи я описал.
40 Infsams654
 
12.09.13
14:41
(37) что значит "если ли механизм отделения ссылочных "объектов" метаданных от остальных..." ? Каких остальных - что имеется в виду под остальными?
41 Defender aka LINN
 
12.09.13
14:47
(40) От не ссылочных. Всегда ваш, К.О.
42 Infsams654
 
12.09.13
17:16
(41) Всегда ваш, К.О. создает объекты "От не ссылочных" ?
43 Рэйв
 
12.09.13
17:17
Как всегда на мисте -  комменты ценнее темы.
44 mrDSide
 
12.09.13
17:18
ЛюбаяСсылка
45 Fragster
 
модератор
12.09.13
17:22
(37) я думаю, что быть уверенным в том, что в 8.1, 8.2, 8.3 этот список идентичен и меняться не будет - можно. в 8.4 (которое появится, наверняка, не ранее чем еще лет через 5) если что-то и изменится, то доработать свою вундервафлю можно будет...
46 bolobol
 
12.09.13
17:25
О, да. Но ответ проще - никак.
Метаданные.* - нет итератора, значит и получить все свойства невозможно. А значит и проверять нечего. Глупость какая-то...
47 Serginio1
 
12.09.13
17:43
(46) Можно пройтись по пакету
http://v8.1c.ru/8.1/data/enterprise/current-config
и вытащить все Ref
48 Serginio1
 
12.09.13
17:49
И соответственно ИзXMLТипа(<ИмяТипа>, <URIПространстваИмен>)
49 Odavid
 
12.09.13
17:57
(36)>>сколько раз за последние 5 лет изменялся список
сейчас в УПП - постоянно уже 2 года. Справочники, Документы, перечисления, Отчеты - новые и новые.
50 Odavid
 
12.09.13
18:00
Правда, какой-то ерундой занимается ТС - типы получает, но не знает, зачем, получил - теперь ищет, куда применить...
Если делаешь проверку принадлежности объекта/ссылки к какому-то типу, то накой тебе типы нужны?!
Чтоб длинный список из них составить и на стенку повесить? )))
51 bolobol
 
12.09.13
19:02
Задача в целом:
Распределённая система - Центральный узел (хранит все данные) и Удалённые узлы (хранят свои данные)
Удалённые узлы хранят ооочень много данных и иногда БД (файловая) изволит падать. Данные более месяца там не нужны - их удалять особой цели нет, но отсылать при создании начального образа тоже смысла нет (8ГБ весь образ).
Отсюда и задача. Имея список ненужного - убрать из регистрации объектов для обмена всё, что ссылается на этот список ненужного.
Вот отсюда и нужен список ссылочных объектов БД.

Да-да-да, можно из регистрации по плану обмена взять, всё равно более, чем там есть - не будет зарегистрировано, но если это не план обмена, а регистр с обновлениями, где колонка - любая ссылка... Вот тут-то и хотелось бы что-то более универсальное.

НайтиПоСсылкам(...) работает более 2-х минут, что приемлемо, но долго.
52 Fragster
 
модератор
12.09.13
19:16
(49) при чем тут отчеты и (33)?
53 Defender aka LINN
 
12.09.13
20:10
(49) Odavid опять в бетонный столб впился. Отчет - не ссылочный тип. А при добавлении хоть 100500 новых перечислений код из (33) один фиг будет работать.
З.Ы. Есть читерский вариант - создать константу с типом "ЛюбаяСсылка" и смотреть в ее тип значения. Но это из разряда кожаных плетей и наручников.
(51) Угу. А, типа, нессылочные объекты в обмене не регистрируются, да?
(46) Много ссылок будет в Метаданные.WebСервисы? Или, скажем, в Метаданные.ОбщиеМодули?
54 Serginio1
 
13.09.13
10:51
(51)А что у него нельзя получить тип?

Мета=Метаданные.Справочники.КоторыйСодержитТипЛюбаяССылка;
    Реквизит=Мета.Реквизиты.НеопределенныйТип;
    
    Типы=Реквизит.Тип.Типы();
    Для каждого тип из Типы Цикл
        Сообщить(Тип);  
    КонецЦикла;
55 bolobol
 
13.09.13
16:19
Да! Эта читерская схема работает! ))

Всем спасибо!
56 Odavid
 
13.09.13
16:51
(52) отчеты до кучи, как тоже обновляемые объекты 1С.
А вы не знали, что Отчеты - такие же "объекты" 1С, как и документы?? И что они тоже типа "Типы" ))
...как много одноэсов чудных готовит 1С-а муть ))
57 Odavid
 
13.09.13
16:56
(53) впились куда-то там вы ))
Отчет - такой же ссылочный "объект". как и все остальное. Едиснтвенно - 1С не вывела список отчетов, т.к. посчитала, что отчеты никто хранить не будет. И в выборах Ссылок не стало "типа" ОтчетСсылка.
А ссылка, и, следовательно "тип данных по 1С-овскому" на каждый отчет была, есть и будет.
58 Odavid
 
13.09.13
16:56
*единственно
59 Odavid
 
13.09.13
16:57
(47) а что, все остальные забанены там?
60 Odavid
 
13.09.13
16:58
+ я, например, не могу отобразить эту уникальную 1совую страничку ))
61 Odavid
 
13.09.13
17:00
(55) чем она читерская?!
кстати, "бОлобол" - пишется как "бАлАбол".
Но зачем поколению ЕГЭ и 1С какие-то там знания )))
62 bolobol
 
13.09.13
17:06
Ну, кто здесь бАлАбол - мы уже видим))
63 Odavid
 
13.09.13
17:10
ну да.
А кто чего знает - тоже )))
Кроме того, что вы понимаете под "балабол"? Видимо, это те, кто не восхваляет 1С )
64 Serginio1
 
13.09.13
17:26
(57) А внешний Отчет?
65 Fragster
 
модератор
13.09.13
18:26
Благодаря СКД уже давно все отчеты в справочнике внешних отчетов хранятся...
66 Fragster
 
модератор
13.09.13
18:26
* не внешних, а "универсальных". но название тут не важно
67 Serginio1
 
13.09.13
23:55
(65)  Хранить  можно все что угодно, хоть фильмы. Однако  не будет типа ФильмСсылка, в лучшем случае это ссылка на блоб. Опять же отчет это объект конфигурации(у которого есть свой идентификатор), а не идентификатор экземпляра прикладного типа, коими и являются ссылки.
Программист всегда исправляет последнюю ошибку.