IE2017

Процессор вывода результата компоновки данных в JSON. И не только...

Обмен - Обмен с другими системами

У каждого разработчика возникают задачи интеграции решений. Основная масса решений призвана вывести данные из «1С:Предприятие 8» в обусловленном формате. Разработчики используют огромную часть своих драгоценных ресурсов на реализацию определенной структуры вывода и необходимого формата. А что если...

Лирическое отступление

Вспомните свои проекты интеграции, почти все они имеют вывод в виде таблицы или дерева. Примерно год назад мне пришла голову идея, а что если использовать за основу обменов систему компоновки данных - она ведь все это умеет. Почти целый год эта идея обкатывалась на различных конфигурациях, платформах и серверах; при различных требованиях к интеграции; успешно выводила сотни миллионов объектов за один подход (BI системы). Пришло время двигать технология в массы.

Как заставить это работать?

Версия 0.5.0.0
  • Необходима платформа «1С:Предприятие 8», версия и режим совместимости 8.3.6 и выше;
  • К статье прикреплена конфигурация, в ней 3 общих модуля - это часть кодовой базы из проекта «Библиотека интеграционного счастья», а так же обработка, которая умеет выводить JSON используя схему компоновки данных. Вывод максимально аналогичен выводу в ТабличныйДокумент;
    • Общие модули это основа, которая работает с вашими настройками;
    • Дополнительная обработка это готовый пример реализации вывода в JSON. Что примечательно, вы можете реализовать такую же обработку для другого формата по аналогии и она будет работать;
    • Ничего не мешает выполнять вывод даже в очень специфичные форматы.
  • Достаточно «Сравнить и объединить» с основной конфигурацией и система готова к работе;
  • Создать схему компоновки данных, инициализировать StreamObject (Дополнительная обработка) и передать, как параметры, в основной общий модуль и на выходе получить результат;
  • Ну как же без примера:
    • Быстрый вывод. Вывод с использованием дополнительных объектов, повышенное использование памяти: 

      НастройкиМакета = IHLDataComposition.NewDataCompositionTemplateParameters();
      НастройкиМакета.Schema   = СхемаКомпоновкиДанных;
      НастройкиМакета.Template = НастройкиКомпоновкиДанных;

      НастройкиВывода = IHLDataComposition.NewOutputParameters();
      НастройкиВывода.DCTParameters = НастройкиМакета;
      НастройкиВывода.CanUseExternalFunctions = Истина;

      StreamObject = Обработки.DataProcessorJSON.Create();
      StreamObject.Initialize();
      StreamObject.WriteStartObject();

      // Последний параметр указывает на быстрый вывод
      IHLDataComposition.Output(Неопределено, StreamObject, НастройкиВывода, Ложь);

      StreamObject.WriteEndObject();
      Результат = StreamObject.Close();

    • Последовательный вывод. Медленнее, чем быстрый вывод на 22.53%, но позволяет выводить результаты ограниченные только размером оперативной памяти сервера «1С:Предприятие 8»:

      НастройкиМакета = IHLDataComposition.NewDataCompositionTemplateParameters();
      НастройкиМакета.Schema   = СхемаКомпоновкиДанных;
      НастройкиМакета.Template = НастройкиКомпоновкиДанных;

      НастройкиВывода = IHLDataComposition.NewOutputParameters();
      НастройкиВывода.DCTParameters = НастройкиМакета;
      НастройкиВывода.CanUseExternalFunctions = Истина;

      StreamObject = Обработки.DataProcessorJSON.Create();
      StreamObject.Initialize();
      StreamObject.WriteStartObject();

      // Последний параметр указывает на последовательный вывод
      IHLDataComposition.Output(Неопределено, StreamObject, НастройкиВывода, Истина);

      StreamObject.WriteEndObject();
      Результат = StreamObject.Close();

  • Поверьте, в моей практике, пока не удалось встретить обмен, который не укладывался в возможности системы компоновки данных;
  • Вся конфигурация написана на английском языке, так как необходимо гарантировать работу в иностранных конфигурациях.

Видео, как это работает:

Версия 0.6.0.0
Требования:
  • Необходима платформа «1С:Предприятие 8», версия и режим совместимости 8.3.6 и выше;
  • К статье прикреплена конфигурация, в ней локализированная часть подсистемы - из проекта «Библиотека интеграционного счастья»;
  • Достаточно «Сравнить и объединить» с основной конфигурацией и система готова к работе;
  • После установки необходимо выполнить такие шаги:
    • добавить необходимые методы в справочник IHL_Methods (конфигурация пока поставляеться без встроенных методов)

    • после этого можно создавать элементы справочника IHL_ExchangeSettings (XML и CSV форматы пока не локализированы)

    • после выбора необходимого формата станет возможно добавлять методы из справочника IHL_Methods 

    • на этом этапе можно редактировать схему компоновки данных (Edit schema), а так же в конструкторе можно загрузить схему из файла

    • после создания СКД, появляеться возможность изменять настройки СКД через компоновщик настроек (страницы Structure, Parameters, Fields, Filter, Order). Внимание, после изменения СКД в компоновщик настроек будут загружены настройки по умолчанию.

    • на вкладке тестирование можно протестировать вывод в табличный документ и в текстовый документ в формате обмена, что был выбран при создании справочника

  • Элементы справочника можно использовать для хранения и тестирования настроек ваших обменов; Вызывать необходимые настройки при определенных событиях и организовывать обмены (пока это на плечах ваших программистов, в версии 0.7.0.0 будет проще);
  • Так же осталась возможность из предыдущей версии: создать схему компоновки данных, инициализировать StreamObject (Дополнительная обработка) и передать, как параметры, в основной общий модуль и на выходе получить результат;
  • Небольшие изменения в примере из версии 0.5.0.0:
    • Быстрый вывод. Вывод с использованием дополнительных объектов, повышенное использование памяти: 

      DataCompositionTemplate = IHL_DataComposition.NewDataCompositionTemplateParameters();
      DataCompositionTemplate.Schema   = DataCompositionSchema;
      DataCompositionTemplate.Template = DataCompositionSettings;

      OutputParameters = IHL_DataComposition.NewOutputParameters();
      OutputParameters.DCTParameters = DataCompositionTemplate;
      OutputParameters.CanUseExternalFunctions = True;

      StreamObject = DataProcessors.DataProcessorJSON.Create();
      StreamObject.Initialize();
      StreamObject.WriteStartObject();

      // Последний параметр указывает на быстрый вывод
      IHL_DataComposition.Output(Undefined, StreamObject, OutputParameters, False);

      StreamObject.WriteEndObject();
      Result = StreamObject.Close();

    • Последовательный вывод. Медленнее, чем быстрый вывод на 22.53%, но позволяет выводить результаты ограниченные только размером оперативной памяти сервера «1С:Предприятие 8»:

      DataCompositionTemplate = IHL_DataComposition.NewDataCompositionTemplateParameters();
      DataCompositionTemplate.Schema   = DataCompositionSchema;
      DataCompositionTemplate.Template = DataCompositionSettings;

      OutputParameters = IHL_DataComposition.NewOutputParameters();
      OutputParameters.DCTParameters = DataCompositionTemplate;
      OutputParameters.CanUseExternalFunctions = True;

      StreamObject = DataProcessors.DataProcessorJSON.Create();
      StreamObject.Initialize();
      StreamObject.WriteStartObject();

      // Последний параметр указывает на последовательный вывод
      IHL_DataComposition.Output(Undefined, StreamObject, OutputParameters, True);

      StreamObject.WriteEndObject();
      Result = StreamObject.Close();

Планы для версии 0.7.0.0:

  • Локализировать интерфейс програмного получения настроек обмена;
  • Локализировать возможность обрабатывать API необходимого формата (Describe API, описать API есть возможность, но нигде не используеться);
  • Локализировать базовый авторизационный модуль (Базовая авторизация) + прикрепить видео трех-шаговой OAuth авторизации;
  • Локализировать подписки на события для вызова методов обмена из справочника IHL_ExchangeSettings.

На этом, пожалуй, закончу статью. Это еще не конец, проект живой и вы можете высказать свои предложения, а так же планирую дополнять статью.

Скачать файлы

Наименование Файл Версия Размер
IHL (Конфигурация-подсистема)
.cf 96,79Kb
09.03.17
5
.cf 0.6.0.0 96,79Kb 5 Скачать
IHL (Расширение процессора вывода компоновки данных)
.cf 20,50Kb
13.02.17
16
.cf 0.5.0.0 20,50Kb 16 Скачать
Тестовая обработка из видео "Курсы валют"
.epf 8,26Kb
09.03.17
9
.epf 8,26Kb 9 Скачать

См. также

Комментарии
1. Alexei Snitkovski (Snitkovski) 64 14.02.17 11:28 Сейчас в теме
Спасибо!
Очень интересная разработка - ознакомимся.
И показательно, что авторы сразу говорят о "необходимости работы в иностранных конфигурациях" - отдельное спасибо!
Saint13; Inkasor; DrAku1a; Serg_1C(M); +4 Ответить
2. Трактор Трактор (Трактор) 1138 15.02.17 10:20 Сейчас в теме
Хотел изобразить что-то подобное. Но руки не доходили. Плюс посовещавшись с веб программистами решили остаться на soap.
3. Петр Базелюк (pbazeliuk) 1290 15.02.17 11:08 Сейчас в теме
(2) Идея давно летала в воздухе, но как всегда не доходят руки ни :) Вчера с коллегой приняли решения, добавить больше функциональности, справочник обменов, что бы можно было СКД редактировать прямо в «1С:Предприятии 8» и, возможно, логическое продолжение точку входа (HTTPСервис).
4. Konstantin Konstantin (KonstB) 162 16.02.17 11:47 Сейчас в теме
(0) Вопрос не по теме

Вся конфигурация написана на английском языке, так как необходимо гарантировать работу в иностранных конфигурациях


Почему тогда не

StreamObject = DataProcessors.DataProcessorJSON.Create();

или не

TemplateParameters = IHLDataComposition.NewDataCompositionTemplateParameters();

Почему часть на русском часть на "иностранном"?
5. Петр Базелюк (pbazeliuk) 1290 16.02.17 14:17 Сейчас в теме
(4) В английской версии оно так и есть, но для обывателей этого ресурса, думаю, лучше видеть знакомые слова.
6. Konstantin Konstantin (KonstB) 162 16.02.17 14:53 Сейчас в теме
(5) Ясно.

П.С, Режет глаз (часть на русском часть на "иностранном") и как результат менее понятно - ну это чисто мое мнение :) Пару раз видел на боевых конфигурациях "рушлиш" - мрак ... )
7. Ярослав Володимирович (myr4ik07) 104 16.02.17 22:15 Сейчас в теме
Несколько раз прочитал и не могу понять применения, в чем фишка, дайте ответ? Авось и ко мне дойдет где у себя это могу прикрутить...
8. Петр Базелюк (pbazeliuk) 1290 17.02.17 10:05 Сейчас в теме
(7) Представте кому-то нужны данные из «1С:Предприятие 8», ваша задача набросать СистемуКомпоновкиДанных и создать структуру отчета которая бы соответствовала вашему обмену. После прогонки данным модулем на выходе будет необходимый результат.
myr4ik07; +1 Ответить
9. Нурлан М (virtex3) 14 25.02.17 19:21 Сейчас в теме
А в чем отличие перевода табличного документа в JSON вот таким образом?

Функция СформироватьJSONизРезультата(данные)
	
	массивСтруктур = Новый Массив;     		
	колонки = данные.Колонки;
		
	Для каждого цСтрока Из данные Цикл      			
		структ = Новый Структура;   			
		Для каждого цКолонка Из колонки Цикл 				
			значение = цСтрока[цКолонка.Имя];				
			типЗначения = ТипЗнч( значение );				
			Если типЗначения = Тип("Булево")
				ИЛИ типЗначения = Тип("Строка")
				ИЛИ типЗначения = Тип("Дата")
				ИЛИ типЗначения = Тип("Число") Тогда 					
				структ.Вставить( цКолонка.Имя, значение ); 					
			Иначе 					
				структ.Вставить( цКолонка.Имя, Строка( значение ) );					
			КонецЕсли;				
		КонецЦикла;
		массивСтруктур.Добавить( структ );
	КонецЦикла;
		
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку();
	ЗаписатьJSON( ЗаписьJSON, массивСтруктур );
    Возврат ЗаписьJSON.Закрыть();
КонецФункции

...Показать Скрыть
10. Петр Базелюк (pbazeliuk) 1290 25.02.17 22:04 Сейчас в теме
(9)
1. На каждом уровне иерархии могут быть полностью различные колонки;
2. на вложенных уровнях (например, детальные записи) не должно быть колонок, если они есть полем группировки в родительских группах;
3. колонки полученные из поля группировки косвенным образом должны быть вынесены на уровень группировки из детальных записей;
4. суть не в обработке ТабличногоДокумента, ТаблицыЗначений или ДереваЗначений - по ним очень проблемно построить правильный вывод (в некоторых объектах на каждом уровне есть все колонки, что не есть правильно). Построение идет из процессора вывода.

P. S. Именно ваш код не оптимальный, очень много лишних вычислений, так же огромный перерасход памяти. Уверен на 1 млн. структур упадет весь процесс.
Так же в вашем коде есть ошибка, исходя из чего могу предположить, что код нигде не использовался.

Вообще основная суть подсистемы это делать интеграции быстро, но пока остальные части не добавлены сюда. Они пока в процессе перевода.
JohnyDeath; +1 Ответить 3
11. Нурлан М (virtex3) 14 26.02.17 08:25 Сейчас в теме
(10) мой то код может и не оптимизирован, но работает и успешно, а вот ваш валится на сложных настройках компоновки.

Описание:Error calling context method (Вставить)
Причина: ИнформацияОбОшибке
ИмяМодуля: ОбщийМодуль.IHLDataComposition.Модуль
ИсходнаяСтрока: TemplateColumnCache.Insert(String(Cell.Value), Value);
НомерСтроки: 517


При использовании настроек макета по умолчанию - вообще ничего не выводит

Вот мои настройки макета
<?xml version="1.0" encoding="UTF-8"?>
<Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<selection>
		<item xsi:type="SelectedItemFolder">
			<title>Сальдо на начало периода</title>
			<item xsi:type="SelectedItemFolder">
				<title>Дебет</title>
				<item xsi:type="SelectedItemField">
					<field>СальдоНаНачалоПериода.БУНачальныйОстатокДт</field>
				</item>
				<placement>Vertically</placement>
			</item>
			<item xsi:type="SelectedItemFolder">
				<title>Кредит</title>
				<item xsi:type="SelectedItemField">
					<field>СальдоНаНачалоПериода.БУНачальныйОстатокКт</field>
				</item>
				<placement>Vertically</placement>
			</item>
			<placement>Auto</placement>
		</item>
		<item xsi:type="SelectedItemFolder">
			<title>Обороты за период</title>
			<item xsi:type="SelectedItemFolder">
				<title>Дебет</title>
				<item xsi:type="SelectedItemField">
					<field>ОборотыЗаПериод.БУОборотДт</field>
				</item>
				<placement>Vertically</placement>
			</item>
			<item xsi:type="SelectedItemFolder">
				<title>Кредит</title>
				<item xsi:type="SelectedItemField">
					<field>ОборотыЗаПериод.БУОборотКт</field>
				</item>
				<placement>Vertically</placement>
			</item>
			<placement>Auto</placement>
		</item>
		<item xsi:type="SelectedItemFolder">
			<title>Сальдо на конец периода</title>
			<item xsi:type="SelectedItemFolder">
				<title>Дебет</title>
				<item xsi:type="SelectedItemField">
					<field>СальдоНаКонецПериода.БУКонечныйОстатокДт</field>
				</item>
				<placement>Vertically</placement>
			</item>
			<item xsi:type="SelectedItemFolder">
				<title>Кредит</title>
				<item xsi:type="SelectedItemField">
					<field>СальдоНаКонецПериода.БУКонечныйОстатокКт</field>
				</item>
				<placement>Vertically</placement>
			</item>
			<placement>Auto</placement>
		</item>
	</selection>
	<filter>
		<item xsi:type="FilterItemComparison">
			<left xsi:type="dcscor:Field">Счет</left>
			<comparisonType>InList</comparisonType>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">a3d8833a-83ef-424a-a2e5-3e35c2ca86c5</right>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">bd5cd2e8-8180-41e9-a605-e9e46ef462a6</right>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">b9d05ad3-be77-4ed7-b496-0c71c176d494</right>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">9104a21e-d318-4bb7-a9ed-c39f2dcc23c7</right>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">02e77527-851a-46ff-bcd4-348a97dd8b86</right>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">6c9fe182-c1c8-4a86-bcf3-b4098a329280</right>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">0a4fc021-3a01-4c8b-a890-030bbef481db</right>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">34bb5285-5268-4a76-a879-b10062033e0e</right>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">22ec8658-81be-4f46-91b0-0655d47a1e56</right>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">3a4c678b-6444-41db-9a4b-6c629d074bb3</right>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">891a395a-b1b3-4305-a281-a4f6c82e09d8</right>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">f8bf0526-ca0b-4734-8c1c-172729ca4ff2</right>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">b6adc222-48d7-4489-beab-7459328f629e</right>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">677672bb-0aee-4b0e-9be6-5adfc6dfe6e1</right>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">3f336225-99c6-4801-ace3-a550250260c7</right>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">cd09e79c-e63a-4354-9342-aff7804544e3</right>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">87274f0f-24f6-47ae-9a84-25df95050ffc</right>
			<right xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d4p1:ChartOfAccountsRef.Типовой">c0b543b9-1494-4ef2-b7a9-59685c25ddd3</right>
		</item>
		<item xsi:type="FilterItemGroup">
			<groupType>OrGroup</groupType>
			<presentation xsi:type="xs:string">###ОтборПоОрганизации###</presentation>
		</item>
	</filter>
	<dataParameters>
		<dcscor:item xsi:type="SettingsParameterValue">
			<dcscor:parameter>КонецПериода</dcscor:parameter>
			<dcscor:value xsi:type="xs:dateTime">2017-02-26T23:59:59</dcscor:value>
		</dcscor:item>
		<dcscor:item xsi:type="SettingsParameterValue">
			<dcscor:parameter>НачалоПериода</dcscor:parameter>
			<dcscor:value xsi:type="xs:dateTime">2017-02-26T00:00:00</dcscor:value>
		</dcscor:item>
		<dcscor:item xsi:type="SettingsParameterValue">
			<dcscor:parameter>СписокВидовСубконто</dcscor:parameter>
			<dcscor:value xsi:type="v8:Array">
				<v8:Value xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d5p1:ChartOfCharacteristicTypesRef.ВидыСубконтоТиповые">25d9067b-0d96-4f0d-a5fd-12d29fba60b8</v8:Value>
			</dcscor:value>
		</dcscor:item>
		<dcscor:item xsi:type="SettingsParameterValue">
			<dcscor:parameter>Периодичность</dcscor:parameter>
			<dcscor:value xsi:type="xs:decimal">0</dcscor:value>
		</dcscor:item>
		<dcscor:item xsi:type="SettingsParameterValue">
			<dcscor:parameter>ПараметрПериод</dcscor:parameter>
			<dcscor:value xsi:type="xs:dateTime">2017-02-26T23:59:59</dcscor:value>
		</dcscor:item>
	</dataParameters>
	<order>
		<item xsi:type="OrderItemField">
			<field>СальдоНаКонецПериода.БУКонечныйРазвернутыйОстатокКт.ПроцентОбщий</field>
			<orderType>Desc</orderType>
		</item>
	</order>
	<conditionalAppearance>
		<item>
			<selection/>
			<filter/>
			<appearance>
				<dcscor:item xsi:type="SettingsParameterValue">
					<dcscor:parameter>ВыделятьОтрицательные</dcscor:parameter>
					<dcscor:value xsi:type="xs:boolean">true</dcscor:value>
				</dcscor:item>
			</appearance>
			<presentation xsi:type="xs:string">Выделять отрицательные</presentation>
		</item>
		<item>
			<selection/>
			<filter/>
			<appearance>
				<dcscor:item xsi:type="SettingsParameterValue">
					<dcscor:parameter>Шрифт</dcscor:parameter>
					<dcscor:value xsi:type="v8ui:Font" ref="sys:DefaultGUIFont" height="9" kind="WindowsFont"/>
				</dcscor:item>
			</appearance>
			<presentation xsi:type="xs:string">Основной шрифт</presentation>
		</item>
		<item>
			<use>false</use>
			<selection>
				<item>
					<field>Счет</field>
				</item>
				<item>
					<field>Субконто1</field>
				</item>
			</selection>
			<filter/>
			<appearance>
				<dcscor:item xsi:type="SettingsParameterValue">
					<dcscor:parameter>АвтоОтступ</dcscor:parameter>
					<dcscor:value xsi:type="xs:decimal">1</dcscor:value>
				</dcscor:item>
			</appearance>
			<presentation xsi:type="xs:string">Уменьшенный автоотступ</presentation>
		</item>
		<item>
			<selection>
				<item>
					<field>СальдоНаНачалоПериода.ВалютнаяСуммаНачальныйОстатокДт</field>
				</item>
				<item>
					<field>СальдоНаНачалоПериода.ВалютнаяСуммаНачальныйРазвернутыйОстатокДт</field>
				</item>
				<item>
					<field>СальдоНаКонецПериода.ВалютнаяСуммаКонечныйОстатокДт</field>
				</item>
				<item>
					<field>СальдоНаКонецПериода.ВалютнаяСуммаКонечныйРазвернутыйОстатокДт</field>
				</item>
			</selection>
			<filter>
				<item xsi:type="FilterItemComparison">
					<left xsi:type="dcscor:Field">Счет.Валютный</left>
					<comparisonType>Equal</comparisonType>
					<right xsi:type="xs:boolean">false</right>
				</item>
			</filter>
			<appearance>
				<dcscor:item xsi:type="SettingsParameterValue">
					<dcscor:parameter>МаксимальнаяВысота</dcscor:parameter>
					<dcscor:value xsi:type="xs:decimal">1</dcscor:value>
				</dcscor:item>
			</appearance>
		</item>
	</conditionalAppearance>
	<outputParameters>
		<dcscor:item xsi:type="SettingsParameterValue">
			<dcscor:parameter>МакетОформления</dcscor:parameter>
			<dcscor:value xsi:type="xs:string">МакетОформленияОтчетов</dcscor:value>
		</dcscor:item>
		<dcscor:item xsi:type="SettingsParameterValue">
			<dcscor:parameter>РасположениеРеквизитов</dcscor:parameter>
			<dcscor:value xsi:type="DataCompositionAttributesPlacement">WithOwnerField</dc­scor:value>
		</dcscor:item>
		<dcscor:item xsi:type="SettingsParameterValue">
			<dcscor:parameter>ВыводитьПараметрыДанных</dcscor:parameter>
			<dcscor:value xsi:type="DataCompositionTextOutputType">DontOutput</dcscor:value>
		</dcscor:item>
		<dcscor:item xsi:type="SettingsParameterValue">
			<dcscor:parameter>ВыводитьОтбор</dcscor:parameter>
			<dcscor:value xsi:type="DataCompositionTextOutputType">DontOutput</dcscor:value>
		</dcscor:item>
	</outputParameters>
	<item xsi:type="StructureItemGroup">
		<groupItems>
			<item xsi:type="GroupItemField">
				<field>Счет</field>
				<groupType>Hierarchy</groupType>
				<periodAdditionType>None</periodAdditionType>
				<periodAdditionBegin xsi:type="xs:dateTime">0001-01-01T00:00:00</periodAdditionBegin>
				<periodAdditionEnd xsi:type="xs:dateTime">0001-01-01T00:00:00</periodAdditionEnd>
			</item>
		</groupItems>
		<filter>
			<item xsi:type="FilterItemComparison">
				<left xsi:type="dcscor:Field">SystemFields.LevelInGroup</left>
				<comparisonType>Equal</comparisonType>
				<right xsi:type="xs:decimal">1</right>
				<application>Hierarchy</application>
			</item>
		</filter>
		<order>
			<item xsi:type="OrderItemAuto"/>
		</order>
		<selection>
			<item xsi:type="SelectedItemAuto"/>
		</selection>
		<outputParameters>
			<dcscor:item xsi:type="SettingsParameterValue">
				<dcscor:parameter>ВыводитьОтбор</dcscor:parameter>
				<dcscor:value xsi:type="DataCompositionTextOutputType">DontOutput</dcscor:value>
			</dcscor:item>
		</outputParameters>
		<item xsi:type="StructureItemGroup">
			<groupItems>
				<item xsi:type="GroupItemField">
					<field>Субконто1</field>
					<groupType>Items</groupType>
					<periodAdditionType>None</periodAdditionType>
					<periodAdditionBegin xsi:type="xs:dateTime">0001-01-01T00:00:00</periodAdditionBegin>
					<periodAdditionEnd xsi:type="xs:dateTime">0001-01-01T00:00:00</periodAdditionEnd>
				</item>
			</groupItems>
			<order>
				<item xsi:type="OrderItemAuto"/>
			</order>
			<selection>
				<item xsi:type="SelectedItemAuto"/>
			</selection>
		</item>
	</item>
</Settings>
...Показать Скрыть


А вот настройки по умолчанию, при которых отчет будет пустой

<?xml version="1.0" encoding="UTF-8"?>
<Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<conditionalAppearance>
		<item>
			<selection/>
			<filter/>
			<appearance>
				<dcscor:item xsi:type="SettingsParameterValue">
					<dcscor:parameter>ВыделятьОтрицательные</dcscor:parameter>
					<dcscor:value xsi:type="xs:boolean">true</dcscor:value>
				</dcscor:item>
			</appearance>
			<presentation xsi:type="xs:string">Выделять отрицательные</presentation>
		</item>
		<item>
			<selection/>
			<filter/>
			<appearance>
				<dcscor:item xsi:type="SettingsParameterValue">
					<dcscor:parameter>Шрифт</dcscor:parameter>
					<dcscor:value xsi:type="v8ui:Font" ref="sys:DefaultGUIFont" height="9" kind="WindowsFont"/>
				</dcscor:item>
			</appearance>
			<presentation xsi:type="xs:string">Основной шрифт</presentation>
		</item>
	</conditionalAppearance>
	<outputParameters>
		<dcscor:item xsi:type="SettingsParameterValue">
			<dcscor:use>false</dcscor:use>
			<dcscor:parameter>МакетОформления</dcscor:parameter>
			<dcscor:value xsi:type="xs:string">Green</dcscor:value>
		</dcscor:item>
		<dcscor:item xsi:type="SettingsParameterValue">
			<dcscor:parameter>ВыводитьПараметрыДанных</dcscor:parameter>
			<dcscor:value xsi:type="DataCompositionTextOutputType">DontOutput</dcscor:value>
		</dcscor:item>
		<dcscor:item xsi:type="SettingsParameterValue">
			<dcscor:parameter>ВыводитьОтбор</dcscor:parameter>
			<dcscor:value xsi:type="DataCompositionTextOutputType">DontOutput</dcscor:value>
		</dcscor:item>
	</outputParameters>
</Settings>
...Показать Скрыть
12. Нурлан М (virtex3) 14 26.02.17 08:48 Сейчас в теме
13. Нурлан М (virtex3) 14 26.02.17 09:53 Сейчас в теме
(10)
Мне кажется будет логичней передавать МакетКомпоновкиДанных , а не просто СхемаКомпоновкиДанных и НастройкиПоУмолчанию

Также как это делается в ПКД

МакетКомпоновкиДанных = ПроцессорКомпоновкиДанных.Инициализировать(<Макет>, <ВнешниеНаборыДанных>, <ДанныеРасшифровки>, <ВозможностьИспользованияВнешнихФункций>)

Тогда будет более универсально, как мне кажется.
14. Петр Базелюк (pbazeliuk) 1290 26.02.17 11:38 Сейчас в теме
(13) Макет создается внутри общего модуля, вместо настроек по умолчанию можно использовать ваши настройки. По поводу ошибки смотрю.
15. Петр Базелюк (pbazeliuk) 1290 26.02.17 15:28 Сейчас в теме
(12) Прикрепите внешний отчет, так как на тестовых конфигурациях ваш xml не собирается.
16. Нурлан М (virtex3) 14 26.02.17 16:06 Сейчас в теме
(15) а это не внешний отчет, он в конфигурации.

вам отдельно отчет выгрузить из конфы или всю конфигурацию?
17. Петр Базелюк (pbazeliuk) 1290 26.02.17 16:27 Сейчас в теме
(16) Только отчет и если можно сообщите версию конфигурации.
18. Нурлан М (virtex3) 14 26.02.17 16:34 Сейчас в теме
(17) Бухгалтерия для Казахстана, редакция 3.0, версия 3.0.11.12

Выше скидывал настройку и СКД для АнализСубконтоТиповой
Прикрепленные файлы:
ОборотноСальдоваяВедомостьПоСчетуТиповой.erf
АнализСубконтоТиповой.erf
19. Ярослав Володимирович (myr4ik07) 104 26.02.17 16:46 Сейчас в теме
А как отписаться от темы? Галка не снимается в доп параметрах ответа
20. Петр Базелюк (pbazeliuk) 1290 26.02.17 16:51 Сейчас в теме
(18) В этого отчета нет структуры отчета. В этом основная причина. Стяну пока с партнерского портала конфигурацию посмотрю детальнее.
21. Нурлан М (virtex3) 14 15.03.17 10:19 Сейчас в теме
22. Петр Базелюк (pbazeliuk) 1290 15.03.17 12:04 Сейчас в теме
(21) В вашем случае, используются не стандартные возможности системы компоновки данных. Система компоновки данных не содержит структуру отчета, а если нет структуры отчета - тогда и нечего выводить (это можно обойти, но пока нету времени на это, если это необходимо это можно решить на платной основе).

В версии 0.6.0.0 есть возможность самому набросать\скопировать систему компоновки данных в Catalogs.IHL_ExchangeSettings, а так же необходимые настройки и настроить структуру отчета и тут же протестировать. Если и здесь будут ошибки их будет проще проанализировать.

Файл конфигурации в прикреплении, чтобы не тратить вам SM.
Прикрепленные файлы:
IHL.cf
23. Caponid V (caponid) 22.03.17 11:32 Сейчас в теме
Если использовать итоги, то выдает ошибку
{DataProcessor.DataProcessorJSON.ObjectModule(296)}: Поле объекта не обнаружено (Макет3)
ColumnNames = TemplateColumns[Item.Template];


вот собственно пример
Прикрепленные файлы:
TST_compRes.xml
24. Петр Базелюк (pbazeliuk) 1290 22.03.17 11:55 Сейчас в теме
(23) Это известная ошибка, пока не определился в каком виде и где выводить ИТОГИ.
Планирую к концу месяца выкатить обновление, что позволит так же описывать более декларативное и детальное описание формата вывода.
Прикрепленные файлы:
25. Caponid V (caponid) 22.03.17 15:57 Сейчас в теме
Даже в том состоянии, в котором есть - мне очень понравилось ))
Идея замечательная, да и код "красивый".

Из идей развития - могу предложить сделать описание ссылки/перечисления - когда сама ссылка в выгрузке расшифровывается до ключевых полей поиска в приемнике и управляется этот механизм каким нить справочником с правилами трансформации/расшифровки ссылки.

PS: Оказывается я совсем не понимаю код на английском... читать пришлось со словарём по ctrl+F1 :-( - очень сложно переключаться между "текущим контекстом" и публикацией.
PSS: Красивые иконки - поделитесь источником?
26. Петр Базелюк (pbazeliuk) 1290 23.03.17 10:57 Сейчас в теме
(25) Сервис с иконками - https://icons8.com/
По поводу идеи здесь нужно подумать, так как основная задача это обмены между различными системами, а не системами на базе 1С:Предприятие.
27. Caponid V (caponid) 23.03.17 11:53 Сейчас в теме
За иконки спасибо. Добавил себе в закладки.

а расшифровка ссылки - у меня в механизмах обмена (на объектах XDTO) получилось вот так
Заданы правила формирования по объектам и выгрузка выглядит вот так:
// это таблица ссылок для всего пакета
<TRef T="Справочник.Контрагенты" ID="00000000-0000-0000-0000-123456789123">
	<R N="G" T="bol" V=0/>
	<R N="EDR" T="str" V="11111111"/>
	<R N="ExtID" T="str" V="XX-1111111"/>
</TRef>

//а это фрагмент документа

<R N="Проведен" T="bol" V=1/>
// это просто ссылка
<R N="Автор" T="Справочник.Пользователи" V="00000000-0000-0000-0000-123456789000"/>
// а это ссылка с с полями поиска
<R N="Контрагент" TRef="00000000-0000-0000-0000-123456789123"/>
...Показать Скрыть


Основная идея - не нужно думать, для каких систем какие поля в выборке/скд для ссылки выбирать - задал один раз правила, и они будут выполнятся.
Там же у меня и трансформация значений. - если надо что то допустим к коду добавить
Оставьте свое сообщение