Из синтаксис помощника: Получает системное строковое представление переданного значения.
Что же такое "системное строковое представление"? точнее из чего оно состоит?
Функция ЗначениеВСтрокуВнутр(Значение) возвращает системное строковое представление в виде строки (пример):
{«#»,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с, информация о преобразовании найдена здесь в виде публикации)
Название у статьи заманчивое, но к сожалению тема практически не раскрыта. Рассмотрена только одна узкая область — преобразование строки в ссылку. Реально через ЗначениеВСтрокуВнутр() можно передавать очень много всего, а не только отдельные ссылки.
Приведение строки вида 135:bc8b001ec9dd45d011dda3f1f556bd7a в строку вида {«#»,a86305d7-b8a1-4312-901f-2ade3efdb351,135:bc8b001ec9dd45d011dda3f1f556bd7a} я реализовывал в обработкеАнализ и редактирование файлов журнала регистрации 1С 8.1/8.2 — ELF/LOG/LGF/LGP .
Алгоритм там достаточно прост. Для получения идентификаторов типа (a86305d7-b8a1-4312-901f-2ade3efdb351) и номера (135) нужно пробежаться по всем метаданным и преобразовать через ЗначениеВСтрокуВнутр() пустые ссылки.
(1) Антон Ширяев, ну за рамками прикладной задачи тема не рассматривалась, спасибо за дополнение:)
Сори Загадка возвращаЕмого
Да… Тема не раскрыта… Это только верхушка айсберга!
Про быстрые массивы
Вот например,
А преобразование в ссылку — это активно используется в обработках восстановления из разрушенного 1Cv8.1CD (тут таких полно).
Может быть тема раскрыта и не так глубоко, но, допустим, я хотел узнать только описанное в статье, целенаправленно стал искать и быстро нашёл, благодаря статье.
Автор как к человеку знающиму подскажи как правельней зделать в такой ситуации. Реквизит со значением неограничено преобразовываю при помощи функции ЗначениеВСтрокуВнутр() при обратном преобразовании при помощи функции ЗначениеИзСтрокиВнутр() приисходит ошибка формата потока. Подскажите как быть как можно решить етот вопрос. Зарание спасибо за ответ
(6) dyak84, у вас в клиент-серверном варианте такая ошибка возникает?
(0) А вот скажите, что дает 135? Критично будет ли следующее:
Пусть значение ЗначениеВСтрокуВнутр дало нам строку вида: {«#»,4dcc257a-be68-4de0-bad6-a7dc42232078,135:8269998f2df8084a11e421234b28682d}
Теперь мы возьмем и изменим строку на {«#»,4dcc257a-be68-4de0-bad6-a7dc42232078,0:8269998f2df8084a11e421234b28682d}
и попытаемся сделать ЗначениеИзСтрокиВнутр с получившейся строкой.
Результат так же правильно возвращает ссылку. В связи с этим вопрос что дает 135 — номер таблицы во внутренней структуре?
(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}»);
Все три ссылки будут равны.
UUID на мобильной платформе смог получить, а вот номер объекта в таблице БД уже метод не доступен на мобильной платформе.
Методов определения типов объекта 1с вообще не нашел!
Выкрутился другим моментом, что эта фича и не понадобилась.