All Projects → arkuznetsov → SerLib1C

arkuznetsov / SerLib1C

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

Programming Languages

1C Enterprise
81 projects
Batchfile
5799 projects

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(ТекстОписанияОбъекта, СвойстваСоЗначениемДата)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].