Функции 1С 8.3 (8.2) ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр
Технологическая платформа 1С содержит большое количество встроенных функций. Сегодня я хотел бы рассказать о паре очень интересных функций — ЗначениеВСтрокуВнутр() и ЗначениеИзСтрокиВнутр(). Рассмотрим использование данных функций и сферу применения.
Методика использования функций
На самом деле данные функции имеют очень мощный и интересный функционал — они преобразовывают значение любого типа в текстовое представление и обратно.
Вернет следующий текст:
Вернет ссылку на элемент справочника Банки с кодом «041501781».
Преобразовать можно абсолютно любое значение, например, структуру:
Структура, где содержится ссылка на банк и его БИК преобразуется в следующее представление:
Применение функций
Функции ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр чаще всего находят применение в обмене данных: данные сохраняются в виде текстового представления, сохраняются во внешний файл, потом из файла загружаются в другую информационную базу.
Но эти функции можно использовать гораздо более разносторонне и творчески, например, чтобы обойти какие-то ограничения системы. Можно в управляемых формах передавать с клиента на сервер таблицы значений в текстовом представлении, делать резервные копии какой-либо важной информации и многое, многое другое.
Кстати, журнал регистрации 1С хранит информацию как раз в аналогичном формате.
Читайте и другие статьи по конфигурированию в 1С.
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
ЗначениеВСтрокуВнутр / ЗначениеИзСтрокиВнутр
Эту статью я посвящаю двум процедурам ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр. Они являются полным «антиподом действий» друг другу, а разработчики 1с предприятия отнесли их в раздел «Процедуры и функции сохранения значений».
Почему именно так они названы, для чего они полезны ну и конечно же почему эти функции ассоциируются с сохранением значений попробую разъяснить.
С этими функциями я познакомился еще, когда начинал свою деятельность 1с программиста в программных продуктах семейства 1с предприятия версии 7.7, обратил я на них внимание впервые, когда мне необходимо было сохранять сложные типы данных (например, заполненную таблицу значений, структуру и т.д.).
А т.к. средствами 1с можно представить различные типы значений в виде строки (с использованием процедуры ЗначениеВСтрокуВнутр), задачка моя упростилась. И вот собственно описание этих двух простых, но очень полезных функций.
ЗначениеВСтрокуВнутр
Функция ЗначениеВСтрокуВнутр преобразует или другими словами приводит в строковое представление данные, т.е. данные преобразуются в специальный строковый формат, который можно использовать только внутри одной информационной базы, это очень важно!
Например, у нас есть массив:
Код 1C v 8.х
А преобразование данного массива в строковое представление будет иметь вид:
<«#»,51e7a0d2-530b-11d4-b98a-008048da3034,<3, <«S»,»Тара»>,<«S»,»Контейнер»>,<«S»,»Паллет»>>>
ЗначениеИзСтрокиВнутр
Функция ЗначениеИзСтрокиВнутр производит обратное преобразование из строкового представления данных во внутреннее представление системы 1с предприятия. Т.е. если выполнить код вида:
Код 1C v 8.х
Мы в переменную «МассивЗначений» передаем уже не строку, а определенный тип данных «Массив» причем массив уже заполненный ранее.
Источник
1С 8.x : ЗначениеВСтрокуВнутр / ЗначениеИзСтрокиВнутр
Эту статью я посвящаю двум процедурам ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр. Они являются полным «антиподом действий» друг другу, а разработчики 1с предприятия отнесли их в раздел «Процедуры и функции сохранения значений».
Почему именно так они названы, для чего они полезны ну и конечно же почему эти функции ассоциируются с сохранением значений попробую разъяснить.
С этими функциями я познакомился еще, когда начинал свою деятельность 1с программиста в программных продуктах семейства 1с предприятия версии 7.7, обратил я на них внимание впервые, когда мне необходимо было сохранять сложные типы данных (например, заполненную таблицу значений, структуру и т.д.).
А т.к. средствами 1с можно представить различные типы значений в виде строки (с использованием процедуры ЗначениеВСтрокуВнутр), задачка моя упростилась. И вот собственно описание этих двух простых, но очень полезных функций.
ЗначениеВСтрокуВнутр
Функция ЗначениеВСтрокуВнутр преобразует или другими словами приводит в строковое представление данные, т.е. данные преобразуются в специальный строковый формат, который можно использовать только внутри одной информационной базы, это очень важно!
Например, у нас есть массив:
Код 1C v 8.х
А преобразование данного массива в строковое представление будет иметь вид:
<«#»,51e7a0d2-530b-11d4-b98a-008048da3034,<3, <«S»,»Тара»>,<«S»,»Контейнер»>,<«S»,»Паллет»>>>
ЗначениеИзСтрокиВнутр
Функция ЗначениеИзСтрокиВнутр производит обратное преобразование из строкового представления данных во внутреннее представление системы 1с предприятия. Т.е. если выполнить код вида:
Код 1C v 8.х
Мы в переменную «МассивЗначений» передаем уже не строку, а определенный тип данных «Массив» причем массив уже заполненный ранее.
Источник
Функция ЗначениеВСтрокуВнутр()
Возвращает представление значения любого типа в строковом внутреннем системном виде
Синтаксис
Функция ЗначениеВСтрокуВнутр() имеет следующий синтаксис:
А также альтернативный англоязычный синтаксис:
Параметры
Описание параметров функции ЗначениеВСтрокуВнутр() :
Имя параметра | Тип | Описание |
---|---|---|
Объект | Произвольный | значение примитивного или агрегатного типа данных, которое необходимо преобразовать. Также можно указывать значения типа СписокЗначений и ТаблицаЗначений |
Жирным шрифтом выделены обязательные параметры |
Возвращаемое значение
Тип: Строка
Строковое внутреннее системное представление значения
Описание
Функция ЗначениеВСтрокуВнутр() преобразует значение произвольного типа в строковый внутренний системный вид:
Как видите, в состав системного представления значения включаются следующие легко узнаваемые составные части:
Полученное строковое значение годится только для использования в рамках одной информационной базы (например, для хранения нескольких значений расшифровки в ячейках отчетов). Для обратного преобразования используется функция ЗначениеИзСтрокиВнутр().
Пример использования
Пример кода с использованием функции ЗначениеВСтрокуВнутр() :
Загадка возвращамого значения ЗначениеВСтрокуВнутр()
ЗначениеВСтрокуВнутр(Значение);
Из синтаксис помощника: Получает системное строковое представление переданного значения.
Что же такое «системное строковое представление»? точнее из чего оно состоит?
Функция ЗначениеВСтрокуВнутр(Значение) возвращает системное строковое представление в виде строки (пример):
Для меня задача состояла в формировании данной строки на стороне НЕ 1с системы, но так чтобы 1с воспринимала сформированную строку как примерно свою. Поэтому первым моментом, и самым как оказалось трудным, стала расшифровка этой самой строки.
После поиска на просторах интернета попадая и на форум миста и на форум 1с получилась примерно следующая общая картина:
a86305d7-b8a1-4312-901f-2ade3efdb351 – это тип объекта 1с (например справочник организации в данном случае). Описание типов в каждой отдельной базе соответственно разное.
135:bc8b001ec9dd45d011dda3f1f556bd7a – UUID (Universally Unique Identifier), где
135 – это номер таблицы в sql базе или не в sql (для файлового режима) данных например _ReferenceN135 (в другой базе этот номер может быть другой, в разрезе баз они разные)
bc8b001ec9dd45d011dda3f1f556bd7a – перевернутый гуид объекта. (во вложении схема переворачивания). (процедуры прямого и обратного преобразования имеются в виде кода 1с, информация о преобразовании найдена здесь в виде публикации)
Скачать файлы
Специальные предложения
Алгоритм там достаточно прост. Для получения идентификаторов типа (a86305d7-b8a1-4312-901f-2ade3efdb351) и номера (135) нужно пробежаться по всем метаданным и преобразовать через ЗначениеВСтрокуВнутр() пустые ссылки.
Да. Тема не раскрыта. Это только верхушка айсберга!
Вот например, Про быстрые массивы
(0) А вот скажите, что дает 135? Критично будет ли следующее:
Пусть значение ЗначениеВСтрокуВнутр дало нам строку вида: <"#",4dcc257a-be68-4de0-bad6-a7dc42232078, 135 :8269998f2df8084a11e421234b28682d>
Теперь мы возьмем и изменим строку на <"#",4dcc257a-be68-4de0-bad6-a7dc42232078, 0 :8269998f2df8084a11e421234b28682d>
и попытаемся сделать ЗначениеИзСтрокиВнутр с получившейся строкой.
Все три ссылки будут равны.
Обновление 05.08.13 13:54
Код открыт Не указано
См. также
Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов Промо
26.05.2017 51490 DarkAn 87
Работа с абстрактным массивом
Абстрактные типы данных и алгоритмы уверенно набирают популярность в языках общего назначения. Встроенный язык 1С является предметно-ориентированным и не спешит развиваться в сторону поддержки абстракций. Однако потребность в них существует, т.к. задачи, решаемые на платформе, не уступают разнообразию из других ЯП. Предлагаю рассмотреть вариант реализации абстрактного массива в 1С.
07.07.2021 3797 kalyaka 56
Еще раз о рабочих днях. Быстрый способ расчета в запросах
В статье рассмотрен механизм учета производственных графиков и рабочих дней. Предложен простой и быстрый алгоритм решения типичных задач: добавление рабочих дней к дате и нахождение разницы между датами в рабочих днях. Все вычисления производятся исключительно запросом, т.е. решение пригодно для СКД и динамических списков.
20.06.2019 14091 Alxby 15
Искусственный интеллект для змейки. Часть 1: Кратчайший/длиннейший путь, Гамильтонов цикл
Различные варианты алгоритмов для игры «Змейка».
07.06.2019 8330 Alex_YAM 2
Агрегатное суммирование строк в запросе – сложно, но не невозможно Промо
Описывается метод соединения строк из одной колонки таблицы в единую результирующую строку в запросе на языке 1С. Метод сложный и по сравнению с внезапросной техникой представляет больше спортивный, чем практический интерес.
09.09.2013 84957 ildarovich 57
Функциональное программирование в 1С
Статья о функциональном программировании в 1С. Добавляем новые возможности. Пример передачи функций в качестве аргумента.
28.03.2019 9575 alexey.kutya 26
Иерархия библиотек. Автоматическое обновление или как отказаться от переопределяемых модулей
В статье рассмотрен один из вариантов библиотечного подхода к разработке, позволяющий организовать иерархический вызов библиотечных процедур и упростить автоматическую сборку готового продукта из нескольких библиотек. Предлагаемый подход может служить одним из элементов CI/CD при разработке ПО на платформе 1С.
04.03.2019 6213 Alxby 4
РусскийФокс. Настройка NotePad++, 1C-подобные функции и операторы и создание объектов
Новый объектно-ориентированный русскоязычный 1С-подобный язык программирования РусскийФокс. Создание объектов и настройка NotePad++. GitHub https://github.com/UfaScript/RusFox
06.07.2018 10599 andreosh 12
Демо связи веб сервисов 1С и php Промо
Демонстрация обращения к веб сервису 1С из php. Пример простейший, уровня hello world. Дана одна страница и информационная база 1С с одним справочником и одним веб сервисом. Веб сервис выдаёт содержимое справочника по запросу странички.
19.07.2013 32786 Трактор 20
Жизненный цикл управляемой формы. Шпаргалка разработчика
Прочитав когда-то давно книжку «Разработка управляемых форм», составил для себя такую схемку-напоминалку для обращения в процессе разработки. С тех пор не раз выручала и избавляла от необходимости лезть в гуглы.
29.06.2018 37348 stas_ganiev 26
Принципы ООП в 1С на примере реализации pattern Decorator
В данной статье будет рассмотрен пример реализации GoF паттерна проектирования decorator в среде разработки 1С. Основная цель данного шаблона, это возможность динамического расширения функциональности базового класса. Сразу оговорюсь, т.к. в 1С нет ООП, это будет не чистый пример реализации данного шаблона, однако свою задачу данный пример будет решать.
21.06.2018 12695 lazarenko 6
Строим «фасады» в 1С
Как реализовать функционал, чтобы не было “мучительно больно” при расширении требований.
04.05.2018 18128 ktb 41
115 полезностей от Буравова Андрея по курсу СКД Евгения Гилёва Промо
Посмотрел 5,5 часовой курс по системе компоновки данных. Нашел невероятное количество не только необходимого, но и примеры не очевидного поведения СКД. У многих не хватает времени и терпения досмотреть курс до конца. Прочитав 115 полезностей, вы сможете понять в каком уроке освещен интересующий вас вопрос и быстро открыть его, чтобы посмотреть видео.
08.04.2012 41453 Flashill 70
Случайность, совпадение, закономерность. Генератор случайных чисел
Объект ГенераторСлучайныхЧисел удобно выдает случайные числа в заданном интервале значений. Исследование особенностей, рассуждения на тему случайных чисел, практика применения. Увлекательно в игровой форме можно исследовать работу генератора случайных чисел.
20.01.2018 41067 Ликреонский 59
Github и 1С. Пошаговая инструкция на конкретном примере
Статья для тех, у кого есть неудержимое желание программировать и хочется доработать какую-то конфигурацию (или проект на 1С), выложенный на Github, но останавливают незнакомые слова Git, Github, Fork, Commit, Pull request, Merge, Issue.
26.10.2017 50032 BlizD 53
Планы обмена 1С: решение проблемы блокировок при помощи средств SQL Server
Небольшое исследование возможности улучшить работу планов обмена 1С средствами SQL Server: view + triggers (представление + триггеры). В статье описывается один из приёмов SQL программирования для решения проблем блокировок, когда основные структуры данных изменить нельзя.
10.01.2017 13394 zhichkin 4
Степень сходства двух наименований справочника
Статья посвящена исследованию следующего вопроса: необходимо сравнить 2 наименования справочников с целью вычисления их степени сходства. По задумке, степень сходства должна выражаться в процентах.
25.02.2015 21939 etmarket 43