1с что такое коллекция значений

Обновлено: 03.07.2024

В данной статье я хочу рассказать о сериализации данных в 1С.

А сейчас немного о самом определении: Сериализация (в программировании) — процесс перевода какой-либо структуры данных в последовательность битов. Обратной к операции сериализации является операция десериализации (структуризации) — восстановление начального состояния структуры данных из битовой последовательности.

Уточним, что серилиазация может применятся не только в рамках одной информационной базы, но и о XML – сериализация. Последняя является отдельной возможностью, и применяется между различными информационными базами данных.

Для начала, рассмотрим сериализацию в рамках одной информационной базы.
Для сохранения значений во время сеанса работы в ИБ используются методы ЗначениеВФайл() и ЗначениеИзФайла().

Пример кода

Пример кода

Если же нам требуется сохранить данные между сеансами, что удобно для пользователя, чтобы не вводить данные каждый раз на форме, то мы будем использовать методы СохранитьЗначение() и ВосстановитьЗначение(), но стоит обратить внимание что данные методы работают только при корректном завершении работы в программе, если вдруг пк будет обесточен, то значения не сохранятся. Также не стоит забывать о сохранении значений в объекте типа ХранилищеЗначений. Подобный тип используется для картинок, образов файлов, так как для них в конфигурации нет соответствующих типов полей.

Пример кода

Пример кода

Если необходимо сохранить значения в строку и восстановить значения из строки, то для этого используются методы ЗначениеВСтрокуВнутр() и ЗначениеИзСтрокиВнутр(). Эти методы реализованы в основном для сохранения функциональной совместимости с 1С:Предприятием 7.7. Использовать их в большинстве случаев не рекомендуется. Для сохранения значений в базу данных рекомендуется использовать, описанный выше, объект типа ХранилищеЗначения, а для получения некоторого строкового идентификатора ссылочного значения можно использовать возможность получения уникального идентификатора ссылки (метод УникальныйИдентификатор()) и соответственно преобразование его к строке.

Пример кода

Пример кода

А теперь немного о XML–сериализации.

Рассмотрим сериализацию на примере объектов xml, потому что они используются чаще всего.

Есть глобальный метод ЗаписатьXML() предназначенный для этого.

Стоит отметить, что значения не всех типов могут быть записаны в формате XML данным методом.Доступные для записи типы данных делятся на на два типа: простые и сложные.

К простым типам данных относятся типы, значения которых представляются подсистемой XML-сериализации в виде элементов XML только с текстовым содержимым:

К первому относятся:

  • Число;
  • Строка;
  • Дата;
  • Булево;
  • ДвоичныеДанные;
  • Null;
  • УникальныйИдентификатор;
  • ХранилищеЗначения;
  • все ссылки на объекты базы данных;
  • ссылки на перечисления, определяемые в метаданных.

Значения сложных типов представляются в виде элементов XML, содержащих вложенные элементы:

  • Тип;
  • ОписаниеТипов;
  • КонстантаМенеджерЗначения.<имя константы>;
  • все объекты базы данных;
  • наборы записей регистров, последовательностей, перерасчетов;
  • УдалениеОбъекта;

Пример кода

На прошлых занятиях мы изучили примитивные типы данных Число, Строка, Дата, Буллево, Неопределено и Тип ознакомьтесь с этими материалами, прежде чем приступить к изучению этого.

Ранее мы уже рассматривали универсальные коллекции значений Массив и Соответствие. В этот раз мы их рассмотрим подробнее их и другие типы коллекций. Эта статья – логическое продолжение материала про Типы значений Неопределено и Тип, здесь мы продолжаем работать с той же внешней обработкой.

Универсальные коллекции значений. Особенности и синтаксис

Найдем а Синтаксис-помощнике Универсальные коллекции значений. Помимо вышеназванных, существуют также хранилища Структура, Список значений, Таблица значений, Дерево значений.


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

Создадим на управляемой форме внешней обработки аналогичные команды и процедуры-обработчики этих команд.


Поместим команды на управляемую форму.


Теперь напишем процедуры–обработчики команд, которые назначат переменной А тип универсального хранилища значений. При этом в поле Комментарий отобразится используемый в обработке код.



После выполнения команды получаем результат, например:


Полный курс программиста 1С – с нуля до разработчика, способного решать практические учетные задачи в любой области.

Универсальная коллекция «Таблица Значений»

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

Для знакомства с ТаблицейЗначений, во-первых, создадим на управляемой форме реквизит Багаж (тип ТаблицаЗначений) с колонками реквизита: Номер (тип Число), Наименование (тип Строка), Количество (тип Число).


Затем поместим Таблицу Значений на управляемую форму


Создадим команду ЗаполнитьБагаж и процедуры-обработчики этой команды. Для заполнения колонки Наименование мы используем коллекцию ТаблицаЗначений и Циклы. Циклы – это функции, которые позволяют выполнять повторяющиеся действия. Возможны различные варианты перебора:

  • Для Каждого – когда при повторении цикла переменной присваивается значение очередного элемента коллекции
  • Пока – цикл выполняется, пока результат заданного логического выражения Истина
  • Для – когда при повторении цикла значение переменной увеличивается на 1


В составе процедур-обработчиков команды «Заполнить» созданы универсальные коллекции значений: Массив –«ДамаСдавала» и ТаблицаЗначений-«ТЗ». Перебирая в цикле элементы массива, заполняем построчно таблицу значений и затем загружаем табличную часть реквизита формы «Багаж» - типа ТаблицаЗначений из заполненной ТаблицыЗначений –ТЗ.

Для очистки табличной части реквизита «Багаж», реквизитов «Комментарий» и «ПрисвоенныйТип» создадим команду «Очистить», поместим ее на форму и напишем процедуру-обработчик этой команды.


Освойте навыки разработчика 1С на очных специализированных курсах от крупнейшей компании-франчайзи 1С.

На прошлых занятиях мы изучили примитивные типы данных Число, Строка, Дата, Буллево, Неопределено и Тип ознакомьтесь с этими материалами, прежде чем приступить к изучению этого.

Ранее мы уже рассматривали универсальные коллекции значений Массив и Соответствие. В этот раз мы их рассмотрим подробнее их и другие типы коллекций. Эта статья – логическое продолжение материала про Типы значений Неопределено и Тип, здесь мы продолжаем работать с той же внешней обработкой.

Универсальные коллекции значений. Особенности и синтаксис

Найдем а Синтаксис-помощнике Универсальные коллекции значений. Помимо вышеназванных, существуют также хранилища Структура, Список значений, Таблица значений, Дерево значений.


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

Создадим на управляемой форме внешней обработки аналогичные команды и процедуры-обработчики этих команд.


Поместим команды на управляемую форму.


Теперь напишем процедуры–обработчики команд, которые назначат переменной А тип универсального хранилища значений. При этом в поле Комментарий отобразится используемый в обработке код.



После выполнения команды получаем результат, например:


Полный курс программиста 1С – с нуля до разработчика, способного решать практические учетные задачи в любой области.

Универсальная коллекция «Таблица Значений»

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

Для знакомства с ТаблицейЗначений, во-первых, создадим на управляемой форме реквизит Багаж (тип ТаблицаЗначений) с колонками реквизита: Номер (тип Число), Наименование (тип Строка), Количество (тип Число).


Затем поместим Таблицу Значений на управляемую форму


Создадим команду ЗаполнитьБагаж и процедуры-обработчики этой команды. Для заполнения колонки Наименование мы используем коллекцию ТаблицаЗначений и Циклы. Циклы – это функции, которые позволяют выполнять повторяющиеся действия. Возможны различные варианты перебора:

  • Для Каждого – когда при повторении цикла переменной присваивается значение очередного элемента коллекции
  • Пока – цикл выполняется, пока результат заданного логического выражения Истина
  • Для – когда при повторении цикла значение переменной увеличивается на 1


В составе процедур-обработчиков команды «Заполнить» созданы универсальные коллекции значений: Массив –«ДамаСдавала» и ТаблицаЗначений-«ТЗ». Перебирая в цикле элементы массива, заполняем построчно таблицу значений и затем загружаем табличную часть реквизита формы «Багаж» - типа ТаблицаЗначений из заполненной ТаблицыЗначений –ТЗ.

Для очистки табличной части реквизита «Багаж», реквизитов «Комментарий» и «ПрисвоенныйТип» создадим команду «Очистить», поместим ее на форму и напишем процедуру-обработчик этой команды.


Освойте навыки разработчика 1С на очных специализированных курсах от крупнейшей компании-франчайзи 1С.

В данной статье пойдет речь о том, какие коллекции есть во встроенном языке 1С, их особенности и для чего они применяются.

В материале освещены сразу два вопроса собеседования программиста 1С:

  1. Чем отличается структура от соответствия?
  2. Можно ли сделать запрос по таблице значений?

Разработчику во встроенном языке доступны следующие объекты, описывающие коллекции:

Массив

Объект описывает коллекцию значений массива. У каждого элемента есть индекс. В 1С можно создавать многомерные массивы, например так:

В массиве можно искать элементы методом Найти(), но поскольку у массива нет индексов данный поиск выполняется не быстро. Метода сортировки массива разработчики 1С не добавили. Возможно, это сделано не просто так, т.к. сортировать можно другие коллекции

Массивы используются для передачи параметров в запрос, для выгрузки колонки таблицы значений, могут служить источником для списка значений.

Фиксированный массив

Тот же массив, но его элементы нельзя изменить, т.е. у него есть только методы Получить(), Найти(), ВГраница() и Количество(). Создается на основе обычного массива.

Данный объект как правило используется в свойствах интерфейсных объектов (элементов управления)

Список значений

Список значений можно представить в качестве следующей таблицы значений:

Как видно из структуры объекта, в поле “Значение” может быть любой объект.

Данный объект, в отличие от массива, уже содержит методы сортировки как по полю Значение, так и по полю Представление. Список значений можно заполнить элементами массива, используя метод ЗагрузитьЗначения().

Списки используются для передачи параметров в запрос, в качестве объекта сравнения в СКД и построителе, а также в отборах в интерфейсе.

Данный объект может быть отображен в интерфейсе, кроме того он имеет методы позволяющие показать диалог установки отметок в списке, диалог выбора значения из списка.

Структура

Структура представляет собой коллекцию пар КлючИЗначение. При этом ключ может быть только строковым и должен удовлетворять требованиям, предъявляемым к именованию переменных встроенного языка, т.е. ключом не может выступать строка “123ключ”. К значениям структуры можно обращаться как к свойствам объекта. При этом ключ используется как имя свойства.

Пары Ключ-значение можно обойти циклом Для каждого … Из … Цикл, проверить существует ли свойство(ключ) структуры можно методом Свойство().

Структура используется обычно для хранения небольшого количества значений, каждое из которых имеет некоторое имя.

Соответствие

Соответствие как и структура представляет собой коллекцию пар КлючИЗначение. При этом, у соответствия в качестве ключа может выступать любое значение! Рекомендуется, чтобы в качестве ключа выступало значение примитивного типа или другого типа, значение которого может только присваиваться, но не может менять свое содержимое. Еще одной особенность соответствия является то, что это индексированная коллекция, т.е. поиск значения по ключу осуществляется очень быстро.

Пары Ключ-значение можно обойти циклом Для каждого … Из … Цикл.

Соответствие обычно используется в тех случаях, когда необходимо заполнить таблицу соответствия одного значения другому, причем размеры этой таблицы могут быть достаточно большими. Также очень удобно использовать соответствие в качестве кэша из-за высокой скорости поиска в нем.

Таблица значений

Таблица значений предназначена для хранения значений в табличном виде. Все основные операции с таблицей производятся именно через этот объект. Он позволяет манипулировать строками таблицы значений и предоставляет доступ к коллекции колонок. Колонки могут быть различных типов (в том числе множественных).

У таблицы значений есть метод Сортировать(), с помощью которого можно сортировать таблицу сразу по нескольким колонкам. С помощью метода Итог() можно сразу получить сумму колонки.

Причем, в запросе необходимо сразу поместить выбранную таблицу во временную, а после этого выполнять действия с ней.

В управляемом приложении данный объект доступен только на сервере! Другими словами, попытка создать на клиенте равно как и передать таблицу значений с сервера на клиент приведет к ошибке.

Читайте также: