![]() |
|
Получить ссылки из таблицы УИДов | ☑ | ||
---|---|---|---|---|
0
SeiOkami
01.08.16
✎
11:06
|
Такое дело. Есть ТЗ с УИДами. Можно ли преобразовать их в ссылки заданного типа как-то помимо цикла по строкам ТЗ? Так сказать, "массово".
|
|||
1
Ёпрст
гуру
01.08.16
✎
11:09
|
делай, разрешаю.
|
|||
2
SeiOkami
01.08.16
✎
11:10
|
(1), спасибо!
а не подскажешь как именно? |
|||
3
Ёпрст
гуру
01.08.16
✎
11:11
|
(2) обойти ТЗ, получить ссылки
|
|||
4
Ёпрст
гуру
01.08.16
✎
11:13
|
либо, сделать аналог ЗначениеИзСтрокиВнутр, т.е, создать правильный текст
|
|||
5
Ёпрст
гуру
01.08.16
✎
11:13
|
хотя, там тоже будет обход, текста
|
|||
6
hhhh
01.08.16
✎
11:20
|
(4) это теперь называется по-новому: сериализация - десериализация.
|
|||
7
hhhh
01.08.16
✎
11:24
|
(0) обычно массовая медленнее раза в 3. чем просто обход цикла. Потому что в ней стараются сделать поуниверсальнее.
зачем вам это, просто обход цикла 5 строчек программы. И быстро работает. |
|||
8
Fragster
гуру
01.08.16
✎
11:32
|
а откуда взялась ТЗ с уидами?
если из XML, то можно замутить схему, чтобы при засасывании XML там сразу ссылки были |
|||
9
SeiOkami
01.08.16
✎
11:33
|
(8), преимущественно из внешнего источника данных
|
|||
10
SeiOkami
01.08.16
✎
11:37
|
(4), сейчас попробую использовать ЗначениеВСтрокуВнутр(), но кажется мне, что так будет дольше, чем цикл
|
|||
11
SeiOkami
01.08.16
✎
11:37
|
(7), не хочется делать лишний цикл по ТЗ в несколько миллионов строк
|
|||
12
Ёпрст
гуру
01.08.16
✎
11:39
|
(9) дык из внешнего источника данных, сразу и получайте ссылки
|
|||
13
SeiOkami
01.08.16
✎
11:40
|
(12), как из внешнего источника получить ссылку на текущую базу?
|
|||
14
Ёпрст
гуру
01.08.16
✎
11:46
|
(13) типизации нету что ле там ?
|
|||
15
hhhh
01.08.16
✎
11:46
|
(11) разбейте это ТЭ на маленькие, тысяч по 20. Миллион - это слишком.
|
|||
16
SeiOkami
01.08.16
✎
11:46
|
У мне в ВИД есть таблица с колонкой "Идентификатор". Она возвращает УИД. Если есть метод, который мне вернет вместо УИД ссылку на элемент текущей, то это круто. Но я такого не знаю
|
|||
17
Ёпрст
гуру
01.08.16
✎
11:46
|
Через выразить() нельзя ?
|
|||
18
SeiOkami
01.08.16
✎
11:47
|
(15), в чем смысл? все равно придется все строки обойти
|
|||
19
SeiOkami
01.08.16
✎
11:47
|
(17), не, уже пробовал. несовместивые данные.
|
|||
20
hhhh
01.08.16
✎
11:52
|
(19) вы сделайти в базе пример сериализации
XMLТаблица = ОбщегоНазначения.ЗначениеВСтрокуXML(ТЗ); потом эту XMLТаблицe посмотрите и сделайте, чтобы ваша новая ТЗ была бы в хмл-файлике точно такой же структуры. и ее потом загрузите десериализацией ТЗ = ОбщегоНазначения.ЗначениеИзСтрокиXML(хмлстрока); |
|||
21
hhhh
01.08.16
✎
11:55
|
(20) но миллион строк она у вас думаю не потянет, сдохнет.
|
|||
22
Cyberhawk
01.08.16
✎
12:11
|
Выгрузить колонку, обойти массив, загрузить колонку
|
|||
23
aleks_default
01.08.16
✎
12:11
|
"Если есть метод, который мне вернет вместо УИД ссылку на элемент текущей"
ДокументМенеджер.<Имя документа> (DocumentManager.<Имя документа>) ПолучитьСсылку (GetRef) Синтаксис: ПолучитьСсылку(<УникальныйИдентификатор>) Параметры: <УникальныйИдентификатор> (необязательный) Тип: УникальныйИдентификатор. Уникальный идентификатор, из которого будет формироваться ссылка. Возвращаемое значение: Тип: ДокументСсылка. Описание: Формирует ссылку из значения типа УникальныйИдентификатор. Данный уникальный идентификатор может быть в дальнейшем получен из ссылки методом УникальныйИдентификатор. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Если параметр не указан или передано значение Неопределено, то будет сформирована новая уникальная ссылка. См. также: ДокументСсылка, метод УникальныйИдентификатор |
|||
24
SeiOkami
01.08.16
✎
12:14
|
(23), обожаю типов, которые не вчитываясь копипастят СП
|
|||
25
aleks_default
01.08.16
✎
12:28
|
Во что вчитываться?
Ты написал "Если есть метод, который мне вернет вместо УИД ссылку на элемент текущей, то это круто. Но я такого не знаю" Я тебе ответил. Пиши правильно чтобы не было недопонимания. |
|||
26
Fragster
гуру
01.08.16
✎
12:28
|
XMLЗначение(Тип, Строка) быстрее (23), кстати, Если еще и тип вне цикла запомнить - будет "почти летать"
|
|||
27
SeiOkami
01.08.16
✎
12:31
|
(25), читай. читай. а потом ещё раз прочитай. а потом подумай о том, что есть такая интересная вещь как "контекст комментария"
|
|||
28
SeiOkami
01.08.16
✎
12:41
|
(20), (26)
попробовал. выпало с нехваткой памяти. а ЗначениеВСтрокуВнутр не выпадало) В общем, как я понял, только цикл. В добавок только что обнаружил, в запрос нельзя передавать ТЗ с колонкой типа "УникальныйИдентификатор". Что очень странно -_- |
|||
29
Fragster
гуру
01.08.16
✎
12:46
|
(28) ты код приведи, а то что-то сомнительно, что (26) падало
|
|||
30
SeiOkami
01.08.16
✎
12:50
|
(29), я использовал ОбщегоНазначения.ЗначениеВСтрокуXML(ТЗ)
она выпала а XMLСтрока() сказала, что неверное значение |
|||
31
Fragster
гуру
01.08.16
✎
12:51
|
(30) а в XMLСтрока ты строку передавал, или УИ?
|
|||
32
SeiOkami
01.08.16
✎
12:52
|
(31), ТЗ я передовал. мне нужно УИДы из ТЗ перевернуть в ссылки
|
|||
33
hhhh
01.08.16
✎
13:03
|
(30) у меня работает ОбщегоНазначения.ЗначениеВСтрокуXML(ТЗ) правда там где-то 200 строк в тз.
|
|||
34
hhhh
01.08.16
✎
13:04
|
(30) так вы наверно туда уникальные идентификаторы засунули, а не надо. Надо ссылки.
|
|||
35
SeiOkami
01.08.16
✎
13:24
|
(33), у меня сейчас 800 тыс.
|
|||
36
SeiOkami
01.08.16
✎
13:25
|
(34), так мне как раз ссылки получить и нужно.
|
|||
37
Fragster
гуру
01.08.16
✎
15:42
|
вот настоящий копрокод:
ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("УИ" , Новый ОписаниеТипов("УникальныйИдентификатор")); Стр = ТЗ.Добавить(); Стр.УИ = Заявка.УникальныйИдентификатор(); ЗаписьУзлов = Новый ЗаписьУзловDOM; ОпределениеТипа = Новый ОпределениеТипаДокументаDOM("ValueTable"); Документ = Новый ДокументDOM("http://v8.1c.ru/8.1/data/core", "ValueTable", ОпределениеТипа); ЗаписьУзлов.Открыть(Документ); СериализаторXDTO.ЗаписатьXML(ЗаписьУзлов, ТЗ); Документ.ЗаменитьДочерний(ЗаписьУзлов.УзелDOM, Документ.ЭлементДокумента); ЗаписьУзлов.Закрыть(); КолонкаТип = Документ.ЭлементДокумента.ДочерниеУзлы[0].ДочерниеУзлы[1].ДочерниеУзлы[0]; ПИ = "http://v8.1c.ru/8.1/data/enterprise/current-config"; Префикс = "abcd"; Текстовый = Документ.СоздатьТекстовыйУзел(Префикс + ":DocumentRef.Заявка"); КолонкаТип.ЗаменитьДочерний(Текстовый, КолонкаТип.ДочерниеУзлы[0]); КолонкаТип.УстановитьСоответствиеПространстваИмен(Префикс, "http://v8.1c.ru/8.1/data/enterprise/current-config", Истина); ЧтениеУзлов = Новый ЧтениеУзловDOM; ЧтениеУзлов.Открыть(Документ.ЭлементДокумента); ТЗ2 = СериализаторXDTO.ПрочитатьXML(ЧтениеУзлов); ЧтениеУзлов.Закрыть(); |
|||
38
Fragster
гуру
01.08.16
✎
15:43
|
из строк и гуидов переделывает в ссылки
|
|||
39
Fragster
гуру
01.08.16
✎
15:43
|
значение для ПИ можно получить их XMLТипЗнч()
|
|||
40
Fragster
гуру
01.08.16
✎
15:44
|
значение, которое ставить вместо "DocumentRef.Заявка"
|
|||
41
Fragster
гуру
01.08.16
✎
16:02
|
100к строк прожевало достаточно оперативно, 1кк строк походу не смогла засосать в DOM
|
|||
42
RomanYS
01.08.16
✎
19:11
|
(26) замер показывает что не быстрее если у тебя уже ГУИД, быстрее если строка ГУИДа.
(0) зачем что-придумывать если цикл по массиву 1М значений по (23) выполняется 10 секунд на ноутбуке |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |