Преобразует значение из строкового системного представления во внутреннее.
Синтаксис
ЗначениеИзСтрокиВнутр(<Строка>)Примеры платформы
Файл = Новый ЧтениеXML;
Файл.ОткрытьФайл(ИмяФайла);
Пока Файл.Прочитать() Цикл
Если (Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента) И
(Файл.Имя = "СоответствиеСчетов") Тогда
ИначеЕсли (Файл.ТипУзла = ТипУзлаXML.Текст) Тогда
Если (ИмяЭлемента = "СчетХозрасчетный") Тогда
ИначеЕсли ИмяЭлемента = "ЗначениеТип" Тогда
ТипЗнач = ЗначениеИзСтрокиВнутр(Файл.Значение);
КонецЕсли;
Иначе
ИмяЭлемента = Файл.Имя;
КонецЕсли;
КонецЦикла;Полное описание, параметры и ограничения
Глобальный контекст.ЗначениеИзСтрокиВнутр (Global context.ValueFromStringInternal)
Глобальный контекст (Global context)
ЗначениеИзСтрокиВнутр (ValueFromStringInternal)
Доступен, начиная с версии 8.0.
Синтаксис:
ЗначениеИзСтрокиВнутр(<Строка>)
Параметры:
<Строка> (обязательный)
Тип: Строка.
Системное представление значения в строковом виде.
Возвращаемое значение:
Тип: Произвольный.
Значение, полученное из строкового системного представления.
Описание:
Преобразует значение из строкового системного представления во внутреннее.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Примечание:
Строковое представление данных имеет специальный системный формат, использующий идентификацию данных внутри одной информационной базы.
Используется для сохранения функциональной совместимости с 1С:Предприятием 7.7. Использовать для других целей не рекомендуется.
Пример:
Файл = Новый ЧтениеXML;
Файл.ОткрытьФайл(ИмяФайла);
Пока Файл.Прочитать() Цикл
Если (Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента) И
(Файл.Имя = "СоответствиеСчетов") Тогда
// ...
ИначеЕсли (Файл.ТипУзла = ТипУзлаXML.Текст) Тогда
Если (ИмяЭлемента = "СчетХозрасчетный") Тогда
// ...
ИначеЕсли ИмяЭлемента = "ЗначениеТип" Тогда
ТипЗнач = ЗначениеИзСтрокиВнутр(Файл.Значение);
КонецЕсли;
// ...
Иначе
ИмяЭлемента = Файл.Имя;
КонецЕсли;
КонецЦикла;
См. также:
Глобальный контекст, метод ЗначениеВСтрокуВнутр
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Собрать свой профиль 8.5 и изменить независимую копию для сравнения
Один объект описывает светлый профиль с навигацией слева. Его собственное внутреннее представление читается обратно и копия меняется на тёмный вариант с навигацией сверху.
Где и как запускать
Полный серверный общий модуль собственной учебной конфигурации. Не модуль запуска рабочей базы.
Подготовка
Создайте серверный общий модуль УчебныеНастройкиКлиента в отдельной своей конфигурации УчебнаяКонфигурацияСинтаксиса. Флаг Сервер включён. Вставьте весь код одного выбранного урока.
Из серверной команды собственной обработки вызовите УчебныеНастройкиКлиента.ВыполнитьПример(). Используйте платформу 8.5.1.1343: новые свойства 8.5 отсутствуют на старых релизах.
Для первого опыта вручную сохраните настройки клиентского приложения через его стандартное окно параметров и заново войдите своим учебным пользователем. Отсутствие сохранённой настройки тоже обрабатывается.
Во всех опытах имя другого пользователя не передаётся. Первый урок только читает системный ключ текущего пользователя; следующие не перезаписывают этот системный ключ.
Последний урок сохраняет один собственный профиль под учебным ключом в ХранилищеОбщихНастроек. Нужна роль с правом СохранениеДанныхПользователя; не включайте привилегированный режим ради опыта.
Проверка объекта и его сериализации не доказывает видимое применение темы, масштаба или расположения панелей. Эксперименты с внешним видом выполняйте только в собственной учебной базе.
Процедура ВыполнитьПример() Экспорт
Оригинал = СоздатьСвойПрофиль85();
До = СнимокСвоегоПрофиля(Оригинал);
СтрокаСвоегоПрофиля = ЗначениеВСтрокуВнутр(Оригинал);
Копия = ЗначениеИзСтрокиВнутр(СтрокаСвоегоПрофиля);
Если ТипЗнч(Копия) <> Тип("НастройкиКлиентскогоПриложения") Тогда
ВызватьИсключение "Сериализация собственного профиля не сохранила тип";
КонецЕсли;
Копия.ТемаКлиентскогоПриложения = ТемаКлиентскогоПриложения.Темная;
Копия.ВариантОтображенияОсновногоОкнаКлиентскогоПриложения = ВариантОтображенияОсновногоОкнаКлиентскогоПриложения.НавигацияСверху;
После = СнимокСвоегоПрофиля(Копия);
Сообщить(До.ВариантИнтерфейсаКлиентскогоПриложения = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_5);
Сообщить(До.ВариантМасштабаФормКлиентскогоПриложения = ВариантМасштабаФормКлиентскогоПриложения.Обычный);
Сообщить(До.ТемаКлиентскогоПриложения = ТемаКлиентскогоПриложения.Светлая);
Сообщить(После.ТемаКлиентскогоПриложения = ТемаКлиентскогоПриложения.Темная);
Сообщить(До.ВариантОтображенияОсновногоОкнаКлиентскогоПриложения = ВариантОтображенияОсновногоОкнаКлиентскогоПриложения.НавигацияСлева);
Сообщить(После.ВариантОтображенияОсновногоОкнаКлиентскогоПриложения = ВариантОтображенияОсновногоОкнаКлиентскогоПриложения.НавигацияСверху);
Сообщить(До.ВариантМасштабаКлиентскогоПриложения = После.ВариантМасштабаКлиентскогоПриложения);
Сообщить(Оригинал.ТемаКлиентскогоПриложения = ТемаКлиентскогоПриложения.Светлая);
Сообщить(Оригинал.ВариантОтображенияОсновногоОкнаКлиентскогоПриложения = ВариантОтображенияОсновногоОкнаКлиентскогоПриложения.НавигацияСлева);
Сообщить("Проверены объекты профилей, не видимое применение к текущему окну");
КонецПроцедуры
Функция СоздатьСвойПрофиль85()
Профиль = Новый НастройкиКлиентскогоПриложения;
Профиль.ВариантИнтерфейсаКлиентскогоПриложения = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_5;
Профиль.ВариантМасштабаФормКлиентскогоПриложения = ВариантМасштабаФормКлиентскогоПриложения.Обычный;
Профиль.ВариантОткрытияОконКлиентскогоПриложения = ВариантОткрытияОконКлиентскогоПриложения.ОткрыватьДанныеВДиалоговыхОкнах;
Профиль.ВариантОтображенияОсновногоОкнаКлиентскогоПриложения = ВариантОтображенияОсновногоОкнаКлиентскогоПриложения.НавигацияСлева;
Профиль.ОтображатьПанелиНавигацииИДействий = Ложь;
Профиль.ОтображатьПанельРазделов = Истина;
Профиль.РежимОткрытияФормПриложения = РежимОткрытияФормПриложения.Закладки;
Профиль.СкоростьКлиентскогоСоединения = СкоростьКлиентскогоСоединения.Обычная;
Профиль.ТемаКлиентскогоПриложения = ТемаКлиентскогоПриложения.Светлая;
Возврат Профиль;
КонецФункции
Функция СнимокСвоегоПрофиля(Профиль)
Если ТипЗнч(Профиль) <> Тип("НастройкиКлиентскогоПриложения") Тогда
ВызватьИсключение "Ожидался объект настроек клиентского приложения";
КонецЕсли;
Снимок = Новый Структура;
Снимок.Вставить("ВариантИнтерфейсаКлиентскогоПриложения", Профиль.ВариантИнтерфейсаКлиентскогоПриложения);
Снимок.Вставить("ВариантМасштабаКлиентскогоПриложения", Профиль.ВариантМасштабаКлиентскогоПриложения);
Снимок.Вставить("ВариантМасштабаФормКлиентскогоПриложения", Профиль.ВариантМасштабаФормКлиентскогоПриложения);
Снимок.Вставить("ВариантОткрытияОконКлиентскогоПриложения", Профиль.ВариантОткрытияОконКлиентскогоПриложения);
Снимок.Вставить("ВариантОтображенияОсновногоОкнаКлиентскогоПриложения", Профиль.ВариантОтображенияОсновногоОкнаКлиентскогоПриложения);
Снимок.Вставить("ОтображатьПанелиНавигацииИДействий", Профиль.ОтображатьПанелиНавигацииИДействий);
Снимок.Вставить("ОтображатьПанельРазделов", Профиль.ОтображатьПанельРазделов);
Снимок.Вставить("РежимОткрытияФормПриложения", Профиль.РежимОткрытияФормПриложения);
Снимок.Вставить("СкоростьКлиентскогоСоединения", Профиль.СкоростьКлиентскогоСоединения);
Снимок.Вставить("ТемаКлиентскогоПриложения", Профиль.ТемаКлиентскогоПриложения);
Возврат Снимок;
КонецФункцииРазбор по шагам
Создать собственный профиль фабрикой: все девять изменяемых параметров назначены явно, десятый только читается.
Сериализовать только свой объект и сразу восстановить его из своей строки. Не принимать эту строку из HTTP, файла или пользовательского ввода.
В независимой копии изменить тему и направление навигации; исходный объект не присваивать копии.
Сопоставить два снимка и снова прочитать оригинал, чтобы подтвердить независимость объектов.
Смена значения темы в объекте не используется как доказательство изменения цветов открытого приложения.
Как проверить результат
Девять булевых сообщений Истина: обе версии отличаются только выбранными темой и положением навигации; оригинал сохранился.
ВариантМасштабаКлиентскогоПриложения одинаков до и после, присваивания этому свойству нет.
Ожидаемый результат
Сформированы и сравнены полноценные профили, а не универсальная обёртка отдельного свойства.
На что обратить внимание
Внутренняя строка — формат платформы, не JSON и не стабильный публичный контракт обмена.
ЗначениеИзСтрокиВнутр здесь получает исключительно только что созданное собственное представление; не десериализуйте неизвестный внешний текст.
Настройки 8.5 не гарантируют переход рабочего приложения на другой интерфейс: действуют ограничения конфигурации и клиента.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Изменить порядок и удалить связь только в собственной копии дерева
Копируем настоящий результат в памяти. Порядок связей и временное удаление исследуем без искажения исходного отчёта и без заявления, что изменённый лес является новым результатом анализа.
Где и как запускать
Полный модуль своей управляемой формы в толстом клиенте Windows. Собственный кластерный расчёт, поиск настоящей диаграммы отчёта и собственное поле дендрограммы.
Подготовка
Используйте отдельную учебную базу 8.5.1.1343 и толстый управляемый клиент Windows. Создайте внешнюю обработку с пустой управляемой основной формой.
Создайте только команду Выполнить и её кнопку. Назначьте обработчик Выполнить(Команда), а событию ПриСозданииНаСервере — одноимённый обработчик из полного модуля.
Не создавайте вручную реквизит УчебноеДерево и поле ПолеУчебногоДерева: они создаются серверной процедурой. Каждый урок запускайте в своей копии формы.
Клиентский построитель отчёта анализа данных недоступен в тонком/веб-клиенте. Самостоятельное перенесение этого полного опыта на сервер тоже не подходит.
Шесть точек с собственными кодами guide-point-1…6 создаются в памяти: три около (0,0), три около (10,10). Это не координаты людей, адреса клиентов или рабочие платежи.
Алгоритм ДальняяСвязь формирует собственный кластерный отчёт. Код ищет настоящий рисунок типа Дендрограмма и проверяет его тип до обращения к связям. Отсутствие рисунка — явная ошибка подготовки, не выдуманный успех.
Рабочие документы, файлы, сеть и печать не используются. Запуск в 1С и фактический вид диаграммы не проверены: выполните контрольные шаги на собственном стенде.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Реквизиты = Новый Массив;
Реквизиты.Добавить(Новый РеквизитФормы("УчебноеДерево", Новый ОписаниеТипов("Дендрограмма")));
ЭтаФорма.ИзменитьРеквизиты(Реквизиты);
ЭтаФорма.УчебноеДерево = Новый Дендрограмма;
Поле = Элементы.Добавить("ПолеУчебногоДерева", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеДендрограммы;
Поле.ПутьКДанным = "УчебноеДерево";
Поле.Заголовок = "Кластеры шести собственных точек";
КонецПроцедуры
&НаКлиенте
Процедура Выполнить(Команда)
Точки = Новый ТаблицаЗначений;
Точки.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
Точки.Колонки.Добавить("X", Новый ОписаниеТипов("Число"));
Точки.Колонки.Добавить("Y", Новый ОписаниеТипов("Число"));
Координаты = Новый Массив;
Координаты.Добавить(Новый Структура("X,Y", 0, 0));
Координаты.Добавить(Новый Структура("X,Y", 0, 1));
Координаты.Добавить(Новый Структура("X,Y", 1, 0));
Координаты.Добавить(Новый Структура("X,Y", 10, 10));
Координаты.Добавить(Новый Структура("X,Y", 10, 11));
Координаты.Добавить(Новый Структура("X,Y", 11, 10));
Для Индекс = 0 По 5 Цикл
Точка = Точки.Добавить();
Точка.Код = "guide-point-" + Строка(Индекс + 1);
Точка.X = Координаты[Индекс].X;
Точка.Y = Координаты[Индекс].Y;
КонецЦикла;
Построитель = Новый ПостроительОтчетаАнализаДанных;
Построитель.ТипАнализа = Тип("АнализДанныхКластеризация");
Построитель.ИсточникДанных = Точки;
Построитель.ОтображатьСостояние = Ложь;
Построитель.ОбрабатыватьПрерываниеПользователя = Истина;
Колонки = Построитель.НастройкаКолонок;
Ключ = Колонки.Найти("Код");
X = Колонки.Найти("X");
Y = Колонки.Найти("Y");
Если Ключ = Неопределено ИЛИ X = Неопределено ИЛИ Y = Неопределено Тогда
ВызватьИсключение "Нет трёх настроек собственных колонок";
КонецЕсли;
Ключ.ТипКолонки = ТипКолонкиАнализаДанныхКластеризация.Ключ;
Ключ.ВидДанных = ВидДанныхАнализа.Дискретные;
X.ТипКолонки = ТипКолонкиАнализаДанныхКластеризация.Входная;
X.ВидДанных = ВидДанныхАнализа.Непрерывные;
Y.ТипКолонки = ТипКолонкиАнализаДанныхКластеризация.Входная;
Y.ВидДанных = ВидДанныхАнализа.Непрерывные;
Количество = ПараметрУчебногоАнализа(Построитель.Параметры, "КоличествоКластеров", "ClusterCount");
Если НЕ Количество.ТипЗначения.СодержитТип(Тип("Число")) Тогда
ВызватьИсключение "У параметра количества ожидается числовой тип";
КонецЕсли;
Количество.Значение = 2;
Метод = ПараметрУчебногоАнализа(Построитель.Параметры, "МетодКластеризации", "ClusterizationMethod");
Метод.Значение = МетодКластеризации.ДальняяСвязь;
Заполнение = ПараметрУчебногоАнализа(Построитель.Параметры, "ТипЗаполненияТаблицы", "TableFillType");
Заполнение.Значение = ТипЗаполненияТаблицыРезультатаАнализаДанных.ВсеПоля;
Сообщить("Параметр: " + Количество.Имя + "; заголовок: " + Количество.Заголовок);
Сообщить(Количество.Значение = 2);
Сообщить(Ключ.Имя = "Код");
Сообщить("Тип дополнительных параметров X: " + Строка(ТипЗнч(X.ДополнительныеПараметры)));
Сообщить(Колонки.Количество() = 3);
Сообщить(Колонки.Получить(Колонки.Индекс(Ключ)) = Ключ);
Построитель.Выполнить();
Результат = Построитель.Результат;
Если ТипЗнч(Результат) <> Тип("РезультатАнализаДанныхКластеризация") Тогда
ВызватьИсключение "Ожидался результат кластеризации";
КонецЕсли;
Сообщить(Результат.КоличествоОбъектов = 6);
Сообщить(Результат.Кластеры.Количество() = 2);
Сообщить(Результат.ОбъектыКластеризации.Количество() = 6);
Сообщить(Результат.ТаблицаКластеризации.Количество() = 6);
ВсегоВКластерах = 0;
Для Каждого Кластер Из Результат.Кластеры Цикл
ВсегоВКластерах = ВсегоВКластерах + Кластер.КоличествоОбъектов;
Сообщить(СтрШаблон("Размер группы=%1; координат центра=%2", Кластер.КоличествоОбъектов, Кластер.ЦентрТяжести.Количество()));
Сообщить("Тип значений прогноза: " + Строка(ТипЗнч(Кластер.ЗначенияПолейПрогноза)));
КонецЦикла;
Сообщить(ВсегоВКластерах = 6);
Сообщить("Строк таблицы связей: " + Строка(Результат.ТаблицаСвязей.Количество()));
Сообщить("Строк матрицы расстояний: " + Строка(Результат.МежкластерныеРасстояния.Количество()));
Сообщить(ТипЗнч(Результат.НастройкаКолонок) = Тип("КолонкиАнализаДанных"));
Сообщить(ТипЗнч(Результат.Параметры) = Тип("ПараметрыАнализаДанных"));
Документ = Новый ТабличныйДокумент;
Построитель.Вывести(Документ);
Дерево = Неопределено;
Для Каждого Рисунок Из Документ.Рисунки Цикл
Если Рисунок.ТипРисунка = ТипРисункаТабличногоДокумента.Дендрограмма Тогда
Дерево = Рисунок.Объект;
Прервать;
КонецЕсли;
КонецЦикла;
Если Дерево = Неопределено Тогда
ВызватьИсключение "В собственном кластерном отчёте не найдена дендрограмма. Проверьте толстый клиент, метод ДальняяСвязь и автоматически формируемый макет";
КонецЕсли;
Если ТипЗнч(Дерево) <> Тип("Дендрограмма") Тогда
ВызватьИсключение "В собственном рисунке ожидалась Дендрограмма";
КонецЕсли;
Если Дерево.Элементы.Количество() < 2 Или Дерево.Связи.Количество() = 0 Тогда
ВызватьИсключение "Для опыта нужна настоящая диаграмма минимум с двумя элементами и связями";
КонецЕсли;
ДоЭлементов = Дерево.Элементы.Количество();
ДоСвязей = Дерево.Связи.Количество();
Копия = ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(Дерево));
Если ТипЗнч(Копия) <> Тип("Дендрограмма") Тогда
ВызватьИсключение "Внутреннее восстановление не вернуло Дендрограмма";
КонецЕсли;
Если Копия.Элементы.Количество() <> ДоЭлементов Или Копия.Связи.Количество() <> ДоСвязей Тогда
ВызватьИсключение "Копия собственного дерева не сохранила размеры коллекций";
КонецЕсли;
Если Копия.Связи.Количество() < 2 Тогда
ВызватьИсключение "Для перемещения своей связи нужно не меньше двух записей";
КонецЕсли;
Связь = Копия.Связи.Получить(0);
Сообщить(Копия.Связи.Индекс(Связь) = 0);
ПервыйКонец = Связь.ПервыйЭлемент;
ВторойКонец = Связь.ВторойЭлемент;
Копия.Связи.Сдвинуть(Связь, 1);
Сообщить(Копия.Связи.Индекс(Связь) = 1);
Сообщить(Копия.Связи.Получить(1) = Связь);
Сообщить(Связь.ПервыйЭлемент = ПервыйКонец И Связь.ВторойЭлемент = ВторойКонец);
Копия.Связи.Удалить(Связь);
Сообщить(Копия.Связи.Количество() = ДоСвязей - 1);
Копия.Связи.Очистить();
Сообщить(Копия.Связи.Количество() = 0);
Сообщить(Копия.Элементы.Количество() = ДоЭлементов);
ЭтаФорма.УчебноеДерево = Дерево;
Сообщить(Дерево.Элементы.Количество() = ДоЭлементов);
Сообщить(Дерево.Связи.Количество() = ДоСвязей);
Документ.Показать("Отчёт по шести собственным точкам; рабочие данные не использовались");
КонецПроцедуры
&НаКлиенте
Функция ПараметрУчебногоАнализа(Параметры, Русское, Английское)
Параметр = Параметры.Найти(Русское);
Если Параметр = Неопределено Тогда
Параметр = Параметры.Найти(Английское);
КонецЕсли;
Если Параметр = Неопределено Тогда
ВызватьИсключение "Нет документированного параметра " + Русское;
КонецЕсли;
Возврат Параметр;
КонецФункцииРазбор по шагам
Внутренний формат используется только между двумя операциями в памяти. Содержимое собственной диаграммы не печатается как служебная строка и не отправляется в сеть.
Проверить тип и размеры восстановленной копии. Для перемещения первой связи на следующую позицию нужны как минимум две связи.
Получить(0) и Индекс возвращают запись и её положение. Сдвинуть меняет порядок коллекции, не заменяя readonly-концы связи.
Удалить одну связь в копии и проверить уменьшение на 1. Такая структура уже не обязана быть полным деревом исходного кластерного анализа.
Очистить только связи копии: элементы остаются. В интерфейс вывести исходное Дерево, не испорченную учебную копию.
Как проверить результат
Дополнительные девять проверок Истина: позиции, идентичность, неизменные концы, уменьшение, пустые связи, сохранённые элементы копии и обе исходные коллекции.
После опыта собственный исходный отчёт и поле продолжают показывать настоящее дерево; очистка Копия.Связи не очищает Дерево.Связи.
Ожидаемый результат
Методы коллекции применены к действительным связанным объектам с проверкой независимости источника и копии.
На что обратить внимание
Дерево и Копия должны быть разными экземплярами, не двумя переменными одной ссылки. Внутреннее восстановление проверяется до мутаций.
Порядок записи в Связи не является порядком объединения кластеров для иной модели. Не объявляйте перемещение новым анализом.
Копия без связей сохранена только для упражнения и не используется для вывода успешного дерева.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.