gifts2017

Загадка возвращамого значения ЗначениеВСтрокуВнутр()

Опубликовал Виталий Трач (vitalya24) в раздел Программирование - Теория программирования

ЗначениеВСтрокуВнутр(Значение);
Из синтаксис помощника: Получает системное строковое представление переданного значения.

Что же такое "системное строковое представление"? точнее из чего оно состоит?

Функция ЗначениеВСтрокуВнутр(Значение) возвращает системное строковое представление в виде строки (пример):

{"#",a86305d7-b8a1-4312-901f-2ade3efdb351,135:bc8b001ec9dd45d011dda3f1f556bd7a}

Для меня задача состояла в формировании данной строки на стороне НЕ 1с системы, но так чтобы 1с воспринимала сформированную строку как примерно свою. Поэтому первым моментом, и самым как оказалось трудным, стала расшифровка этой самой строки.

После поиска на просторах интернета попадая и на форум миста и на форум 1с получилась примерно следующая общая картина:

Расшифровка строки :               

{"#",a86305d7-b8a1-4312-901f-2ade3efdb351,135:bc8b001ec9dd45d011dda3f1f556bd7a}

 

a86305d7-b8a1-4312-901f-2ade3efdb351 – это тип объекта 1с (например справочник организации в данном случае). Описание типов в каждой отдельной базе соответственно разное.

 

135:bc8b001ec9dd45d011dda3f1f556bd7a – UUID (Universally Unique Identifier), где

 

135 – это номер таблицы в sql базе или не в sql (для файлового режима) данных например _ReferenceN135 (в другой базе этот номер может быть другой, в разрезе баз они разные)

 

bc8b001ec9dd45d011dda3f1f556bd7a – перевернутый гуид объекта. (во вложении схема переворачивания). (процедуры прямого и обратного преобразования имеются в виде кода 1с, информация о преобразовании найдена здесь в виде публикации)

 

 

 

 

 

 

 

 

 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
1
.png 22,30Kb
05.08.13
16
.png 1 22,30Kb 16 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Антон Ширяев (Антон Ширяев) 05.08.13 15:37
Название у статьи заманчивое, но к сожалению тема практически не раскрыта. Рассмотрена только одна узкая область - преобразование строки в ссылку. Реально через ЗначениеВСтрокуВнутр() можно передавать очень много всего, а не только отдельные ссылки.

Приведение строки вида 135:bc8b001ec9dd45d011dda3f1f556bd7a в строку вида {"#",a86305d7-b8a1-4312-901f-2ade3efdb351,135:bc8b001ec9dd45d011dda3f1f556bd7a} я реализовывал в обработке Анализ и редактирование файлов журнала регистрации 1С 8.1/8.2 - ELF/LOG/LGF/LGP.

Алгоритм там достаточно прост. Для получения идентификаторов типа (a86305d7-b8a1-4312-901f-2ade3efdb351) и номера (135) нужно пробежаться по всем метаданным и преобразовать через ЗначениеВСтрокуВнутр() пустые ссылки.
Meson; yku; lana_veta; vitalya24; +4 Ответить 1
2. Виталий Трач (vitalya24) 05.08.13 15:45
(1) Антон Ширяев, ну за рамками прикладной задачи тема не рассматривалась, спасибо за дополнение:)
3. serpent Пентюхов С. Г. (serpent) 06.08.13 09:01
Сори Загадка возвращаЕмого
vitalya24; +1 Ответить
4. Андрей Акулов (DrAku1a) 07.08.13 03:19
Да... Тема не раскрыта... Это только верхушка айсберга!
Вот например, Про быстрые массивы

А преобразование в ссылку - это активно используется в обработках восстановления из разрушенного 1Cv8.1CD (тут таких полно).
5. Владимир Кузнецов (mr.Kot) 29.10.13 14:14
Может быть тема раскрыта и не так глубоко, но, допустим, я хотел узнать только описанное в статье, целенаправленно стал искать и быстро нашёл, благодаря статье.
6. andrey dyak (dyak84) 19.01.14 17:49
Автор как к человеку знающиму подскажи как правельней зделать в такой ситуации. Реквизит со значением неограничено преобразовываю при помощи функции ЗначениеВСтрокуВнутр() при обратном преобразовании при помощи функции ЗначениеИзСтрокиВнутр() приисходит ошибка формата потока. Подскажите как быть как можно решить етот вопрос. Зарание спасибо за ответ
7. Мария Ковалева (nobuta) 24.01.14 10:40
(6) dyak84, у вас в клиент-серверном варианте такая ошибка возникает?
8. Виталий Барилко (Diversus) 08.12.14 14:16
(0) А вот скажите, что дает 135? Критично будет ли следующее:

Пусть значение ЗначениеВСтрокуВнутр дало нам строку вида: {"#",4dcc257a-be68-4de0-bad6-a7dc42232078,135:8269998f2df8084a11e421234b28682d}
Теперь мы возьмем и изменим строку на {"#",4dcc257a-be68-4de0-bad6-a7dc42232078,0:8269998f2df8084a11e421234b28682d}
и попытаемся сделать ЗначениеИзСтрокиВнутр с получившейся строкой.

Результат так же правильно возвращает ссылку. В связи с этим вопрос что дает 135 - номер таблицы во внутренней структуре?
9. Виталий Барилко (Diversus) 08.12.14 14:23
(0) И кстати да:
Ссылка1=ЗначениеИзСтрокиВнутр("{""#"",4dcc257a-be68-4de0-bad6-a7dc42232078,135:8269998f2df8084a11e421234b28682d}");
Ссылка2=ЗначениеИзСтрокиВнутр("{""#"",4dcc257a-be68-4de0-bad6-a7dc42232078,0:8269998f2df8084a11e421234b28682d}");
Ссылка3=ЗначениеИзСтрокиВнутр("{""#"",4dcc257a-be68-4de0-bad6-a7dc42232078,9999:8269998f2df8084a11e421234b28682d}");

Все три ссылки будут равны.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа