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

09.03.17

Интеграция - Внешние источники данных

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

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

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

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

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

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

Интеграция RabbitMQ СистемаКомпоновкиДанных JSON

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 руб.

02.09.2020    119909    656    389    

701

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9155    9    8    

10

Перенос данных из Парус 8 в ЗГУ 3

Зарплата Внешние источники данных Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    22347    18    1    

21

Автоматическая многопоточная выгрузка данных 1С 8.3 в БД Clickhouse и MS SQL (для работы с данными 1С в BI-системах)

Внешние источники данных Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматизированной выгрузки данных из 1С 8.3, а также MS Excel в базу данных ClickHouse, а также в Microsoft SQL для работы с данными 1С в Yandex Datalens, Visiology, Apache Superset (и не только) - "Экстрактор данных 1С в BI". Решение отлично работает со всеми типовыми (и не только) конфигурациями 1С 8.3 для управляемых форм. Gозволяет автоматизировать работу бизнес-аналитика по ежедневной выгрузке данных из 1С в БД ClickHouse для последующей работы с этой БД в Yandex Datalens/ Система полностью автоматизирует работу с хранилищем данных в БД Clickhouse/MS SQL. Не надо быть программистом, чтобы одной кнопкой получать любые данные из 1С в Вашей BI-системе

230000 руб.

15.11.2022    12906    11    47    

28

Перенос данных из Парус 7.хх в ЗГУ ред.3

Внешние источники данных Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 7.хх учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

24000 руб.

24.04.2017    48627    96    159    

86

Перенос начальных остатков из Парус 7.71 в БГУ

Внешние источники данных Взаиморасчеты Учет ОС и НМА Логистика, склад и ТМЦ Бюджетный учет Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 2.0 1С:Бухгалтерия государственного учреждения Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Перенос словарей и начальных остатков из ПП Парус-Бухгалтерия Бюджет 7.71 в 1Сv8 БГУ2. Заполнение словарей и документов по вводу начальных остатков. Не требуется установка ПП Парус7. Возможна дозагрузка. Позволит автоматически и наиболее полно ввести данные в программу для начала работы. 

15600 руб.

08.12.2011    81470    128    123    

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

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


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

StreamObject = DataProcessors.DataProcessorJSON.Create();

или не

TemplateParameters = IHLDataComposition.NewDataCompositionTemplateParameters();

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

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

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

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

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

Вообще основная суть подсистемы это делать интеграции быстро, но пока остальные части не добавлены сюда. Они пока в процессе перевода.
JohnyDeath; +1 Ответить
11. virtex3 20 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 20 26.02.17 08:48 Сейчас в теме
15. pbazeliuk 1954 26.02.17 15:28 Сейчас в теме
(12) Прикрепите внешний отчет, так как на тестовых конфигурациях ваш xml не собирается.
16. virtex3 20 26.02.17 16:06 Сейчас в теме
(15) а это не внешний отчет, он в конфигурации.

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

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

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

Файл конфигурации в прикреплении, чтобы не тратить вам SM.
Прикрепленные файлы:
IHL.cf
13. virtex3 20 26.02.17 09:53 Сейчас в теме
(10)
Мне кажется будет логичней передавать МакетКомпоновкиДанных , а не просто СхемаКомпоновкиДанных и НастройкиПоУмолчанию

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

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

Тогда будет более универсально, как мне кажется.
14. pbazeliuk 1954 26.02.17 11:38 Сейчас в теме
(13) Макет создается внутри общего модуля, вместо настроек по умолчанию можно использовать ваши настройки. По поводу ошибки смотрю.
19. jaroslav.h 180 26.02.17 16:46 Сейчас в теме
А как отписаться от темы? Галка не снимается в доп параметрах ответа
23. caponid 22.03.17 11:32 Сейчас в теме
Если использовать итоги, то выдает ошибку
{DataProcessor.DataProcessorJSON.ObjectModule(296)}: Поле объекта не обнаружено (Макет3)
ColumnNames = TemplateColumns[Item.Template];


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

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

PS: Оказывается я совсем не понимаю код на английском... читать пришлось со словарём по ctrl+F1 :-( - очень сложно переключаться между "текущим контекстом" и публикацией.
PSS: Красивые иконки - поделитесь источником?
26. pbazeliuk 1954 23.03.17 10:57 Сейчас в теме
(25) Сервис с иконками - https://icons8.com/
По поводу идеи здесь нужно подумать, так как основная задача это обмены между различными системами, а не системами на базе 1С:Предприятие.
27. 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"/>
Показать


Основная идея - не нужно думать, для каких систем какие поля в выборке/скд для ссылки выбирать - задал один раз правила, и они будут выполнятся.
Там же у меня и трансформация значений. - если надо что то допустим к коду добавить
28. user1475435 09.10.20 16:07 Сейчас в теме
Привет! У меня проблема с HTTP-службой. Каким-то образом GET выдает 500 ошибок в запросе. Но написанный мной код работает с другой серверной базой данных. Пожалуйста, помогите мне. ERROR ===> {APS_UPDATE HTTPСервис.IntegrationWithElmakonSite.Модуль(99)}: Ошибка при вызове метода контекста (ЗаписатьJSON)


    Запрос1 = Новый Запрос;
    Запрос1.Текст = 
        "ВЫБРАТЬ ПЕРВЫЕ 10
        |   РасчетыСКлиентамиПоРассрочкуОстатки.Контрагент КАК Контрагент,
        |   РасчетыСКлиентамиПоРассрочкуОстатки.Склад КАК Склад,
        |   РасчетыСКлиентамиПоРассрочкуОстатки.СуммаОстаток КАК СуммаОстаток,
        |   РасчетыСКлиентамиПоРассрочкуОстатки.ДатаПогашения КАК ДатаПогашения
        |ИЗ
        |   РегистрНакопления.РасчетыСКлиентамиПоРассрочку.Остатки КАК РасчетыСКлиентамиПоРассрочкуОстатки";
    
    РезультатЗапроса = Запрос1.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Массивв = Новый Массив();
   ЛичныеДанные = Новый Структура;
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        ЛичныеДанные.Вставить("Контрагент", ВыборкаДетальныеЗаписи.Контрагент);
        ЛичныеДанные.Вставить("СуммаОстаток", ВыборкаДетальныеЗаписи.СуммаОстаток);
        ЛичныеДанные.Вставить("ДатаПогашения", ВыборкаДетальныеЗаписи.ДатаПогашения);
        ЛичныеДанные.Вставить("Склад", ВыборкаДетальныеЗаписи.Склад);
        Массивв.Добавить(ЛичныеДанные);
    КонецЦикла; 
    
    НастройкиСериализацииJSON = Новый НастройкиСериализацииJSON;
    НастройкиСериализацииJSON.ФорматСериализацииДаты = ФорматДатыJSON.ISO;
    НастройкиСериализацииJSON.СериализовыватьМассивыКакОбъекты = Истина;
    НастройкиСериализацииJSON.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.ЛокальнаяДата;
    
    ЗаписJSON = Новый ЗаписьJSON;
    ЗаписJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписJSON, Массивв, НастройкиСериализацииJSON,,,);
    СтпокаДляОтвета = ЗаписJSON.Закрыть();
    
    Ответ = Новый HTTPСервисОтвет(200);
    //Ответ.Заголовки.Вставить("Access-Control-Allow-Origin", "http://localhost:63342");
    //Ответ.Заголовки.Вставить("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE, HEAD, OPTIONS");
    //Ответ.Заголовки.Вставить("Access-Control-Allow-Credentials", "true");
    //Ответ.Заголовки.Вставить("Access-Control-Allow-Headers", "X-Requested-With, origin, content-type, accept");
    Ответ.Заголовки.Вставить("Content-type", "application/json; charset=utf-8");
    Ответ.УстановитьТелоИзСтроки(СтпокаДляОтвета, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
    Возврат Ответ;
Показать
29. user1475435 12.10.20 13:35 Сейчас в теме
(28) пожалюста помагите!!!
30. JohnyDeath 301 12.10.20 14:38 Сейчас в теме
(29) Посмотрите, что у вас в переменной "Массивв". Скорее всего там где-то NULL закрался или еще какое-то невалидное для JSON значение
karomag; pbazeliuk; user1475435; +3 Ответить
31. user1475435 12.10.20 14:54 Сейчас в теме
(30)Но я не смог найти значение NULL. Почему это происходит? Это были коды, над которыми я работал в другом более простом проекте. Пожалуйста, помогите. Я беспокоился об этом в течение 1 месяца. Я буду глупым, пока не овладею этим.
32. JohnyDeath 301 12.10.20 15:07 Сейчас в теме
(31) и вообще у вас там Контрагент и Склад - это не простые типы, а ссылка. Стандартный конвертер в JSON не будет преобразовывать. Нужно либо делать доп обработку (4й параметр в процедура ЗаписатьJSON), либо сразу в структуре передавайте ГУИД (или что там вам нужно передавать)
pbazeliuk; +1 Ответить
33. user1475435 13.10.20 13:51 Сейчас в теме
(32) Это сработало! Спасибо, брат! Большое спасибо. Вы мне очень помогли, когда я был в депрессии и сказал, что я не буду программистом 1с!
Оставьте свое сообщение