• Stars
    star
    121
  • Rank 292,524 (Top 6 %)
  • Language 1C Enterprise
  • License
    Mozilla Public Li...
  • Created over 6 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Data serialization for 1C / Библиотека сериализации / десериализации данных 1С

1C Serialization Library

Библиотека сериализации 1С (обработка)

Набор процедур и функций для сериализации/десериализации данных 1С и объектов СКД в простые структуры данных (Структура, соответствие, массив).

Варианты использования:

  • замена платформенных функций сериализации, например, при сохранении версий объектов
  • передача данных по протоколу HTTP
  • основа для простых обработок обмена данными
  • основа для получения отчетов из внешних ИБ 1С

Особенности:

  • разработка ведется в формате EDT
  • процедуры/функции поддерживают ограничение состава полей
  • табличные части преобразуются в служебный элемент структуры с ключом "__ТЧ"
  • при десериализации приоритетными являются метаданные, т.е. не возникает ошибок при изменении структуры данных конфигурации
  • поддерживается возможность назначения процедур дополнения ссылочных данных при выгрузке
  • поддерживается возможность переопределения функций поиска ссылочных данных

Особенности преобразования объектов СКД:

  1. ПутьКДанным пользовательских полей СКД формируется системой автоматически, поэтому:
    • после загрузки СКД значение может отличаться на номер поля
    • если в исходной СКД значение было на языке, отличном от языка целевой, то новое значение будет на языке целевой СКД
  2. Поле "Обязательное" роли поля набора данных сейчас устанавливается принудительно, хотя в документации отмечено как "Только чтение" (EDT тоже ругается)
  3. Поле "Схема" вложенной схемы компоновки данных при добавлении имеет тип неопределено и принудительно устанавливается значение "Новый СхемаКомпоновкиДанных()", хотя в документации отмечено как "Только чтение" (EDT тоже ругается)
  4. В исходных настройках СКД в полях ТипЗначения составного типа могут встречаться дубли типов <БизнесПроцесс....> при загрузке дубли схлопываются
  5. В исходных настройках СКД иногда встречается некорректный тип элементов свойства "ПараметрыДанных" объекта "НастройкиКомпоновкиДанных", вместо "ЗначениеПараметраНастроекКомпоновкиДанных" используется "ЗначениеПараметраКомпоновкиДанных". После выгрузки загрузки СКД, все элементы поля "ПараметрыДанных" будут приведены к типу "ЗначениеПараметраНастроекКомпоновкиДанных".
  6. Если в исходных настройках поле типа "Дата" имеет значение Неопределено, то при загрузке будет установлена пустая дата
  7. Если в исходных настройках поле типа "Строка" имеет значение Неопределено, то при загрузке будет установлена пустая строка
  8. Не заполняется поле "Идентификатор" в элементах структуры настроек (Группировки, Таблицы, Диаграммы), т.к. имеет признак "Только чтение", а автоматического присвоения значения не происходит. Влияние на работоспособность СКД пока не проверялось.

Методы преобразования прикладных объектов 1С

Общие методы

  • ОбъектВСтруктуру(Объект, СписокСвойств, ИсключаяСвойства)
  • ЗаполнитьОбъектИзСтруктуры(Объект, СтруктураОбъекта, СписокСвойств, ИсключаяСвойства)
  • СоздатьОбъектИзСтруктуры(СтруктураОбъекта, УстановитьСсылку, СписокСвойств, ИсключаяСвойства)

  • СсылкаВСтруктуру(Значение)
  • СсылкаИзСтруктуры(СтруктураЗначения)

  • НаборЗаписейРегистраВСтруктуру(НаборЗаписей, СписокСвойств, ИсключаяСвойства)
  • ЗаполнитьНаборЗаписейРегистраИзСтруктуры(НаборЗаписей, СтруктураНабораЗаписей, СписокСвойств, ИсключаяСвойства)
  • СоздатьНаборЗаписейРегистраИзСтруктуры(СтруктураНабораЗаписей, ПолучатьБитыеСсылки, СписокСвойств, ИсключаяСвойства)

  • ДвиженияДокументаВСтруктуру(Объект, СписокРегистров, ИсключаяРегистры)
  • ДвиженияДокументаИзСтруктуры(Объект, СтруктураДвижений, СписокРегистров, ИсключаяРегистры)

  • ЗначениеВСтруктуру(Значение)
  • ЗначениеИзСтруктуры(СтруктураЗначения, ПолучатьБитыеСсылки)

Прикладные объекты (ссылочные)

При преобразовании ссылочных объектов могут быть использованы фильтры свойств. Используется единый набор параметров:

  • Объект - преобразуемый/восстанавливаемый объект
  • СтруктураОбъекта - результат преобразования / источник для восстановления
  • СписокСвойств - список свойств, которые попадут в результат преобразования
  • ИсключаяСвойства - список свойств, которые не будут преобразованы (приоритет выше чем у СписокСвойств)

  • СправочникВСтруктуру(Объект, СписокСвойств, ИсключаяСвойства)
  • СправочникИзСтруктуры(Объект, СтруктураОбъекта, ПолучатьБитыеСсылки, СписокСвойств, ИсключаяСвойства)

  • ПланСчетовВСтруктуру(Объект, СписокСвойств, ИсключаяСвойства)
  • ПланСчетовИзСтруктуры(Объект, СтруктураОбъекта, ПолучатьБитыеСсылки, СписокСвойств, ИсключаяСвойства)

  • ПланВидовХарактеристикВСтруктуру(Объект, СписокСвойств, ИсключаяСвойства)
  • ПланВидовХарактеристикИзСтруктуры(Объект, СтруктураОбъекта, ПолучатьБитыеСсылки, СписокСвойств, ИсключаяСвойства)

  • ПланВидовРасчетаВСтруктуру(Объект, СписокСвойств, ИсключаяСвойства)
  • ПланВидовРасчетаИзСтруктуры(Объект, СтруктураОбъекта, ПолучатьБитыеСсылки, СписокСвойств, ИсключаяСвойства)

  • ДокументВСтруктуру(Объект, СписокСвойств, ИсключаяСвойства)
  • ДокументИзСтруктуры(Объект, СтруктураОбъекта, ПолучатьБитыеСсылки, СписокСвойств, ИсключаяСвойства)

  • БизнесПроцессВСтруктуру(Объект, СписокСвойств, ИсключаяСвойства)
  • БизнесПроцессИзСтруктуры(Объект, СтруктураОбъекта, ПолучатьБитыеСсылки, СписокСвойств, ИсключаяСвойства)

  • ЗадачаВСтруктуру(Объект, СписокСвойств, ИсключаяСвойства)
  • ЗадачаПроцессИзСтруктуры(Объект, СтруктураОбъекта, ПолучатьБитыеСсылки, СписокСвойств, ИсключаяСвойства)
Дополнение ссылочных данных при выгрузке

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

&НаСервере
Процедура МояПроцедураДополнения(ОписаниеЗначения, Значение) Экспорт
	// Код дополнения
	// ОписаниеЗначения.Вставить("КодЭлемента", Значение.Код);
КонецПроцедуры

где:

  • ОписаниеЗначения - Структура - Структура содержащая поля описания ссылки
  • Значение - ЛюбаяСсылка - ссылка, для которой получено описание

И перед выполнением выгрузки данных добавить обработчик дополнения ссылок

Библиотека.ДобавитьПравилоВыгрузкиТипа("Справочник.МойСправочник", "МояПроцедураДополнения", ЭтотОбъект)

где:

  • Библиотека - Обработка-объект библиотеки преобразования данных (этой библиотеки)
Переопределение поиска ссылочных данных при загрузке

При загрузке ссылочных данных возможно переопределение функции поиска ссылок, для этого необходимо в модуле, выполняющем загрузку, создать функцию вида:

&НаСервере
Функция МояФункцияПоискаСсылок(ОписаниеВида, МетаОбъект, ОписаниеЗначения) Экспорт
	// Код поиска ссылки
	// НайденнаяСсылка = Справочники.МойЗагружаемыйСправочник.НайтиПоКоду(ОписаниеЗначения.КодЭлемента);
	// Возврат НайденнаяСсылка;
КонецФункции

где доступны параметры:

  • ОписаниеВида - Структура - Структура содержащая описание вида загружаемой ссылки
  • МетаОбъект - ОписаниеМетаданных - Описание метаданных загружаемой ссылки
  • ОписаниеЗначения - Структура - Структура содержащая поля описания искомой ссылки

И перед выполнением выгрузки данных добавить обработчик дополнения ссылок

Библиотека.ДобавитьПравилоЗагрузкиТипа("Справочник.МойСправочник", "Справочник.МойЗагружаемыйСправочник", "МояФункцияПоискаСсылок", ЭтотОбъект)

где:

  • Библиотека - Обработка-объект библиотеки преобразования данных (этой библиотеки)

Прикладные объекты (регистры)

При преобразовании регистров могут быть использованы фильтры свойств. Используется единый набор параметров:

  • НаборЗаписей - преобразуемый/восстанавливаемый набор записей регистра
  • СтруктураОбъекта - результат преобразования / источник для восстановления
  • СписокСвойств - список свойств, которые попадут в результат преобразования
  • ИсключаяСвойства - список свойств, которые не будут преобразованы (приоритет выше чем у СписокСвойств)

  • НаборЗаписейРегистраСведенийВСтруктуру(НаборЗаписей, СписокСвойств, ИсключаяСвойства)
  • НаборЗаписейРегистраСведенийИзСтруктуры(НаборЗаписей, СтруктураОбъекта, ПолучатьБитыеСсылки, СписокСвойств, ИсключаяСвойства)

  • НаборЗаписейРегистраНакопленияВСтруктуру(НаборЗаписей, СписокСвойств, ИсключаяСвойства)
  • НаборЗаписейРегистраНакопленияИзСтруктуры(НаборЗаписей, СтруктураОбъекта, ПолучатьБитыеСсылки, СписокСвойств, ИсключаяСвойства)

  • НаборЗаписейРегистраБухгалтерииВСтруктуру(НаборЗаписей, СписокСвойств, ИсключаяСвойства)
  • НаборЗаписейРегистраБухгалтерииИзСтруктуры(НаборЗаписей, СтруктураОбъекта, ПолучатьБитыеСсылки, СписокСвойств, ИсключаяСвойства)

  • НаборЗаписейРегистраРасчетаВСтруктуру(НаборЗаписей, СписокСвойств, ИсключаяСвойства)
  • НаборЗаписейРегистраРасчетаИзСтруктуры(НаборЗаписей, СтруктураОбъекта, ПолучатьБитыеСсылки, СписокСвойств, ИсключаяСвойства)

Коллекции

При преобразовании коллекций выполняется рекурсивное преобразование всех вложенных значений с использованием функций ЗначениеВСтруктуру()/ЗначениеИзСтруктуры().

  • СтруктураВСтруктуру(Значение)
  • СтруктураИзСтруктуры(СтруктураЗначения)

  • МассивВСтруктуру(Значение)
  • МассивИзСтруктуры(СтруктураЗначения)

  • СоответствиеВСтруктуру(Значение)
  • СоответствиеИзСтруктуры(СтруктураЗначения)

  • СписокЗначенийВСтруктуру(Значение)
  • СписокЗначенийИзСтруктуры(СтруктураЗначения)

  • ТаблицаЗначенийВСтруктуру(Значение, СписокСвойств, ИсключаяСвойства)
  • ТаблицаЗначенийИзСтруктуры(СтруктураЗначения, СписокСвойств, ИсключаяСвойства)

  • ДеревоЗначенийВСтруктуру(Значение, СписокСвойств, ИсключаяСвойства)
  • ДеревоЗначенийИзСтруктуры(СтруктураЗначения, СписокСвойств, ИсключаяСвойства)

Методы преобразования данных формы

  • ДанныеФормыВСтруктуру(Форма, ТолькоСохраняемые, СписокСвойств, ИсключаяСвойства)
  • ДанныеФормыИзСтруктуры(Форма, СтруктураДанных, ПроверятьИмяФормы, СоздаватьРеквизиты, СписокСвойств, ИсключаяСвойства)

Методы преобразования объектов СКД

  • СКДВСтруктуру(Объект)
  • СКДИзСтруктуры(Объект, СтруктураОбъекта)

  • НастройкиСКДВСтруктуру(Объект)
  • НастройкиСКДИзСтруктуры(Объект, СтруктураОбъекта)

Методы чтения/записи JSON

При чтении записи JSON выполняется преобразование типов не совместимых с JSON в/из строки. Для преобразования "неизвестных" типов используется ЗначениеВСтрокуВнутр(). Значения типа "Дата" записываются/читаются в формате Microsoft.

  • ЗаписатьОписаниеОбъектаВJSON(ОписаниеОбъекта)
  • ПрочитатьОписаниеОбъектаИзJSON(ТекстОписанияОбъекта, СвойстваСоЗначениемДата)

More Repositories

1

some1cdocs

Несколько документов около разработки 1С.
103
star
2

cpdb

Приложение oscript для копирования баз данных 1C / MS SQL и развертывания на целевой системе.
1C Enterprise
90
star
3

irac

Интерфейсная библиотека (oscript) к утилите администрирования кластера серверов 1С (rac).
1C Enterprise
75
star
4

1CFilesConverter

Cкрипты для конвертации файлов 1С между различными форматами (Binary, XML, EDT)
Batchfile
73
star
5

yard

Загрузка и обработка релизов конфигураций 1С
1C Enterprise
69
star
6

hirac

REST API для получения информации о кластере сервера 1С и управления объектами кластера
1C Enterprise
41
star
7

yabr.os

Чтение скобочного формата файлов 1С (oscript)
1C Enterprise
36
star
8

yabr.1c

Чтение скобочного формата файлов 1С (обработки 1С)
1C Enterprise
29
star
9

yadt

Приложение oscript для развертывания конфигураций 1С на базах подключенных к хранилищу.
1C Enterprise
28
star
10

onecover

Расчет покрытия тестами в 1С
18
star
11

clientSSH

sshlib для oscript
C#
17
star
12

RegDataMover

Перенос движений документов 1С между копиями баз
1C Enterprise
15
star
13

EvtHUB

Реализация подсистемы взаимодействия с использованием событий в конфигурациях 1С.
1C Enterprise
11
star
14

scenex

Скрипт oscript для выполнения сценариев.
1C Enterprise
10
star
15

ifaceDemo

Демонстрация применения интерфейсов в конфигурациях 1С
1C Enterprise
10
star
16

jexlib

Компонента извлечения данных из JSON по указанному пути JSON-Path для oscript
C#
9
star
17

nextcloud-lib

oscript library for NextCloud
1C Enterprise
8
star
18

iracli

Приложение oscript для взаимодействия с сервисом администрирования 1С
1C Enterprise
8
star
19

jex

Приложение для извлечения данных из строк и файлов JSON с помощью запросов JSON-path
1C Enterprise
6
star
20

deflator

Компонента упаковки / распаковки по алгоритму Deflate для oscript
C#
5
star
21

ArKuznetsov

5
star
22

xsltlib

C#
3
star
23

rector

1C Enterprise
1
star