Используем механизмы обмена данными БСП для произвольного обмена

Публикация № 544413

Разработка - Системная интеграция - Внешние источники данных

Обмен данными БСП Выгрузка Загрузка

Механизм БСП заточен на обмен XML по правилам обмена. Чтобы использовать его для любого другого обмена, коих в мире немало, требуются доработки. В статье описан вариант, как из положения выйти.

    Столкнулся давеча с проблемой: необходимо реализовать обмен данными через ftp. Причём хотелось использовать механизм БСП, чтобы не городить свои велосипеды. Казалось бы, для этого стоит только почитать документацию с ИТС, но не всё так просто. Механизм БСП заточен на обмен XML по правилам обмена. Чтобы использовать его для любого другого обмена, коих в мире не мало, требуются доработки. В статье описан вариант, как из положения выйти (так сказать, и рыбку съесть и косточкой не подавиться и формат обмена использовать произвольный и стандартным механизмом нагло воспользоваться).

    Ещё раз уточню. Здесь по сути нет инфы с ИТС, т.к. статья описывает использование механизмов БСП для произвольного обмена. Для обмена в формате XML по правилам обмена надо читать ИТС.

Какие возможности обмена БСП мы можем использовать:

Для начала стоит отметить, какие же такие типовые возможности я позарился использовать. Речь идёт о справочнике СценарииОбменовДанными.

Где можно прописать параметры обмена данными:

  • действие - выгрузка или загрузка
  • подключение - каталог или FTP или EMAIL или веб сервис или COM подключение (хранится это в РС "НастройкиТранспортаОбмена", значит нам не надо думать, где хранить эти данные)
  • расписание - расписание РЗ (значит не надо добавлять своё)

Вдобавок нам не надо создавать форму, на которой можно задавать все эти настройки и  имеются доп. возможности:

  • выполнить сценарий обмена прямо сейчас
  • Открыть журнал регистрации с отбором по событию обмена

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

Какие требуются доработки:

1. Добавить План обмена. Даже если он не нужен. Ибо без него ничего не взлетит. Это требование БСП. В модуль менеджера добавить следующий код, скопировав из типовых или взяв с ИТС. Естественно добавив только те виды транспорта, которые могут использоваться в вашем обмене. На всякий случай укажу, что вид "FILE" - это обмен через каталог.

Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт
	Результат = Новый Массив;
	Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE);
	Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP);
	Возврат Результат;      
КонецФункции  

2. Переопределить механизм обмена БСП. Для этого нам любезно предназначен специальный ОМ ОбменДаннымиПереопределяемый. В зависимости от задачи, нам нужна одна из двух (или сразу обе) процедур этого ОМ - ПриЗагрузкеДанных или ПриВыгрузкеДанных. Для нового обмена в означенные процедуры необходимо добавить следующий текст:

в ПриЗагрузкеДанных

Если ТипЗнч(Отправитель) = Тип("ПланОбменаСсылка._УТ_ДО_Пользователи") Тогда
	ПриЗагрузке(СтандартнаяОбработка, Отправитель, ИмяФайлаСообщения, ДанныеСообщения,
		КоличествоЭлементовВТранзакции, ИмяСобытияЖурналаРегистрации, КоличествоПолученныхОбъектов)
КонецЕсли;

в ПриВыгрузкеДанных

Если ТипЗнч(Получатель) = Тип("ПланОбменаСсылка._УТ_ДО_Пользователи") Тогда
	ПриВыгрузке(СтандартнаяОбработка, Получатель, ИмяФайлаСообщения, ДанныеСообщения,
		КоличествоЭлементовВТранзакции, ИмяСобытияЖурналаРегистрации, КоличествоОтправленныхОбъектов)
КонецЕсли;

Также в модуль добавляем блок методов УниверсальныйОбменДаннымиСПомощьюБСП

#Область УниверсальныйОбменДаннымиСПомощьюБСП

//Если обмен инициализирован справочником СценарииОбменовДанными
//
Процедура ПриВыгрузке(СтандартнаяОбработка, Получатель, ИмяФайлаСообщения, ДанныеСообщения,
		КоличествоЭлементовВТранзакции, ИмяСобытияЖурналаРегистрации, КоличествоОтправленныхОбъектов) Экспорт
	//КоличествоОтправленныхОбъектов - сюда можно присвоить количество выгруженного, которое потом запишется в ЖР
	//ИмяСобытияЖурналаРегистрации - его использует БСП при записи в ЖР,
	//нам надо делать также, чтобы удобно смотреть ЖР из сценария тестирования 
	
	//Планы обмена фиктивные, поэтому СтандартнаяОбработка не требуется
	СтандартнаяОбработка = Ложь;
	
	//Типовой механизм сам задаёт имя файла выгрузки и формат у него может быть только XML (так выглядит имя - Message_1_2.xml),
	//поэтому,если мы хотим это переопределить, надо получить настройки обмена (такие, как каталог обмена или ftp)
	НастройкиТранспорта = НастройкиТранспортаУзла(Получатель, Перечисления.ДействияПриОбмене.ВыгрузкаДанных);
	//в структуре НастройкиТранспорта лежат настройки из РС НастройкиТранспортаОбмена. Присутствуют не все поля РС, а только те,
	//которые соответствуют выбранному в сценарии обмена виду транспорта обмена (см. Перечисления.ДействияПриОбмене)
	
	//ТЕЛО ВЫГРУЗКИ
	//здесь мы знаем куда выгружать и описываем код выгрузки
	ОбщегоНазначения.МенеджерОбъектаПоСсылке(Получатель).ПриВыгрузке(НастройкиТранспорта, ИмяСобытияЖурналаРегистрации, КоличествоОтправленныхОбъектов);
	
	//эта строка выполняется в самом конце, если выгрузка прошла успешно
	СоздатьФайлВыгрузкиЗаглушкуДляОбменаНаБСП(ИмяФайлаСообщения);
КонецПроцедуры

//Если обмен инициализирован справочником СценарииОбменовДанными
//
Процедура ПриЗагрузке(СтандартнаяОбработка, Отправитель, ИмяФайлаСообщения, ДанныеСообщения,
		КоличествоЭлементовВТранзакции, ИмяСобытияЖурналаРегистрации, КоличествоПолученныхОбъектов) Экспорт
	СтандартнаяОбработка = Ложь;
	НастройкиТранспорта = НастройкиТранспортаУзла(Отправитель, Перечисления.ДействияПриОбмене.ЗагрузкаДанных);
	
	//ТЕЛО ЗАГРУЗКИ
	//здесь мы знаем откуда загружать и описываем код загрузки
	ОбщегоНазначения.МенеджерОбъектаПоСсылке(Отправитель).ПриЗагрузке(НастройкиТранспорта, ИмяСобытияЖурналаРегистрации, КоличествоПолученныхОбъектов);
КонецПроцедуры

Процедура СоздатьФайлВыгрузкиЗаглушкуДляОбменаНаБСП(ИмяФайлаСообщения)
	//Чтобы типовой механизм понял, что выгрузка данных произошла,
	//надо заполнить типовой файл выгрузки содержимым.
	ЗаписьХМЛ = Новый ЗаписьXML;
	ЗаписьХМЛ.ОткрытьФайл(ИмяФайлаСообщения);
	ТекстЗаглушка = "Этот файл создаётся типовым механизмом обмена БСП. Его следует игнорировать. Можно удалять.";
	ЗаписьХМЛ.ЗаписатьНачалоЭлемента("Данные");
	ЗаписьХМЛ.ЗаписатьТекст(ТекстЗаглушка);
	ЗаписьХМЛ.ЗаписатьКонецЭлемента();
	ЗаписьХМЛ.Закрыть();
КонецПроцедуры

Функция НастройкиТранспортаУзла(Узел, ВыполняемоеДействие)
	//к сожалению, здесь мы не имеем ссылки на сценарий обмена, откуда он и был запущен,
	//а она нужна, чтобы определить ВидТранспортаОбмена, т.е. понять куда выгружать (в каталог, или ftp, или ещё куда)
	//есть несколько вариантов решить эту задачу и все "кривые":
	//
	//1. в модуле менеджера ПО, в функции ИспользуемыеТранспортыСообщенийОбмена() разрешить только один ВидТранспортаОбмена
	//2. сделать ВидТранспортаОбмена равным РегистрыСведений.НастройкиТранспортаОбмена.ВидТранспортаСообщенийОбменаПоУмолчанию(...),
	//но тогда настройка транспорта в сценарии обмена станет фиктивной, что приведёт к непониманию со стороны пользователей
	//(ВидТранспортаСообщенийОбменаПоУмолчанию задаётся в предприятии в настройках плана обмена)
	//3. Для СОВОКУПНОСТИ (УЗЕЛ нашего ПО + выполняемое действие (загрузка или выгрузка))
	//ограничить возможность использования сценариев для обмена одним сценарием.
	//Если их будет создано больше - отменять обмен. Если найден один - брать ВидТранспортаОбмена оттуда.
	//
	//Здесь реализован лучший, на мой взгляд, третий путь. Таким образом, мы получим одно ограничение:
	//чтобы выполнять несколько сценариев с данным обменом и выполняемым действием (загрузка или выгрузка),
	//нужно на каждый новый сценарий создавать копированием узел ПО (на всякий случай уточню: в режиме предприятия)
	//но для подавляющего большинства хватит и одного сценария (ведь возможность их множественности, это фича БСП).
	
	Запрос = Новый Запрос;
	Запрос.Текст =
	//поскольку помеченный на удаление сценарий всё равно можно выполнять, отбирать в запросе только непомеченные нельзя
	"ВЫБРАТЬ
	|	СценарииОбменовДаннымиНастройкиОбмена.ВидТранспортаОбмена
	|ИЗ
	|	Справочник.СценарииОбменовДанными.НастройкиОбмена КАК СценарииОбменовДаннымиНастройкиОбмена
	|ГДЕ
	|	СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы
	|	И СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие = &ВыполняемоеДействие";
	Запрос.УстановитьПараметр("УзелИнформационнойБазы", Узел);
	Запрос.УстановитьПараметр("ВыполняемоеДействие", ВыполняемоеДействие);
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Количество() > 1 Тогда
		//Вызывающая процедура обработает исключение и запишет его в ЖР
		ВызватьИсключение "Для узлов данного плана обмена нельзя задавать больше чем по одному сценарию обмена!!!";
	ИначеЕсли Выборка.Количество() = 0 Тогда
		//вообще, здесь мы не можем оказаться, но на всякий случай
		ВызватьИсключение "Не найден сценарий обмена для данного узла обмена";
	КонецЕсли;
	Выборка.Следующий();
	НастройкиТранспорта = РегистрыСведений.НастройкиТранспортаОбмена.НастройкиТранспорта(Узел, Выборка.ВидТранспортаОбмена);
	
	Возврат НастройкиТранспорта;
КонецФункции

#КонецОбласти

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

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

#Область ПроцедурыИФункцииБсп

// Возвращает массив используемых транспортов сообщений для этого плана обмена
//
// 1. Например, если план обмена поддерживает только два транспорта сообщений FILE и FTP,
// то тело функции следует определить следующим образом:
//
//	Результат = Новый Массив;
//	Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE);
//	Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP);
//	Возврат Результат;
//
// 2. Например, если план обмена поддерживает все транспорты сообщений, определенных в конфигурации,
// то тело функции следует определить следующим образом:
//
//	Возврат ОбменДаннымиСервер.ВсеТранспортыСообщенийОбменаКонфигурации();
//
// Возвращаемое значение:
//  Массив - массив содержит значения перечисления ВидыТранспортаСообщенийОбмена
//
Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт
	
	Результат = Новый Массив;
	Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE);
	Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP);
	Возврат Результат;
	
КонецФункции	

#КонецОбласти

#Область ВыгрузкаЗагрузкаЭкспортныеМетоды

//Вызывается из _омОбмен.ПриВыгрузке
//
Процедура ПриВыгрузке(НастройкиТранспорта, ИмяСобытияЖурналаРегистрации, КоличествоОтправленныхОбъектов) Экспорт
		
КонецПроцедуры

//Вызывается из _омОбмен.ПриВыгрузке
//
Процедура ПриЗагрузке(НастройкиТранспорта, ИмяСобытияЖурналаРегистрации, КоличествоПолученныхОбъектов) Экспорт
		
КонецПроцедуры

#КонецОбласти

#КонецОбласти


#Область Выгрузка

#КонецОбласти

#Область Загрузка

#КонецОбласти

#КонецЕсли

Ограничения, особенности использования нашего механизма:

  1. Для СОВОКУПНОСТИ (УЗЕЛ нашего ПО + выполняемое действие (загрузка или выгрузка)) можно задать только один сценарий. Если необходимо больше, то, на каждый новый сценарий надо создавать копированием узел ПО (на всякий случай уточню: в режиме предприятия), но для подавляющего большинства хватит и одного сценария (ведь возможность их множественности, это фича БСП).
  2. В папке обмена будет находиться один лишний файл или (в случае "2.в") придётся смириться с типовым именем файла. Но это тоже легко пережить =)
    1. а) Выгрузка. В папке выгрузки автоматом создаётся ненужный файл "Message_1_2.xml" с текстом "<Данные>Этот файл создаётся типовым механизмом обмена БСП. Его следует игнорировать. Можно удалять.</Данные>"
    2. б) Загрузка. В папку загрузки надо кинуть файл "Message_2_1.xml". Можно поместить в него следующий текст: "<Данные>ФАЙЛ НЕ УДАЛЯТЬ!! Без него него не будет работать механизм загрузки на БСП.</Данные>".
    3. в) Если выгрузка в ХМЛ, то можно обойтись без минусов 1 и 2, больше используя механизм БСП. Поскольку БСП как раз рассчитана именно на выгрузку в ХМЛ, то здесь лишних хлопот не требуется и мы можем прямо в ПриВыгрузкеДанных писать файл выгрузки (т.е. блок методов УниверсальныйОбменДаннымиСПомощьюБСП тут не нужен). Пример, как это сделать см в процедуре СоздатьФайлВыгрузкиЗаглушкуДляОбменаНаБСП. Но, у данного решения есть один недостаток: Имя файла генерирует БСП ("Message_1_2.xml", где "1" и "2" это коды узлов "откуда" и "куда" соответственно).

Особенности использования механизма БСП:

В предприятии надо создать два узла ПО, т.к. обмен с самим собой делать нельзя. Также обоим узлам надо задать Код, иначе обмен не взлетит. Данные проверки производятся в процедуре ОбменДаннымиСервер.ВыполнитьПроверкуСтруктурыОбменаНаВалидность.

Инструкция для пользователей:

В плане обмена создаём два узла. Узел Этой базы (у него на картинке зелёная точка справа внизу) и узел базы приёмника. Обязательно заполняем им код и наименование (для простоты можно назвать как на скрине «1» и «2»). Далее для обмена (выгрузки или загрузки) данными надо выбирать узел базы с которой идёт обмен, т.е. «2». Если выберем «1», то обмен проходить не будет а в ЖР появится запись «Нельзя организовать обмен данными с текущим узлом информационной базы. Обмен отменен.».

Спр. «Сценарии синхронизации данных».

Задаём имя сценария, добавляем строку настройки обмена в ТЧ.

Настраиваем параметры подключения.

После того, как всё настроено, можно настроить РЗ или выполнить обмен прямо сейчас.

После выполнения обмена, можно посмотреть его лог в ЖР.

ОпосляСкриптум:

Пришлось немного разобрать механизмы БСП, вследствие  чего родилась сия статья.  В сухом остатке мы имеем:

  • Чтобы использовать механизм обмена данными БСП для произвольного обмена, нужно просто скопировать описанные процедуры. Всё. Дальше можно заняться собственно самими процедурами обмена.
  • Также представлена инструкция для пользователей.

------------------------------------

ИНТЕРЕСНЫХ ВАМ ЗАДАЧ, ПЛОДОТВОРНОЙ РАБОТЫ И ОРИГИНАЛЬНЫХ/ОПТИМАЛЬНЫХ РЕШЕНИЙ!!

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4409 23.08.16 16:46 Сейчас в теме
Полезная вещь.
Патриот; gortol; +2 Ответить
2. sansys 60 24.08.16 05:40 Сейчас в теме
Спасибо за статью, очень помогла.
3. Патриот 260 24.08.16 09:33 Сейчас в теме
(2) sansys, на здоровье, рад, что мой труд помог ещё кому-то.
(1) Поручик, ваш комментарий, похоже стал шикарнейшей рекламой для статьи =)
4. Dach 295 24.08.16 09:36 Сейчас в теме
Статья гуд. Кстати, вопрос с ВидомТранспорта можно решить, добавив в план обмена соответствующий реквизит. И для каждого узла заполнить его нужным образом. В этот узел будет через файл выгружаться, а вот в этот - веб-сервисом. Ну а в целом мне очень нравится, когда для нестандартных решений используется стандартный механизм.
Патриот; +1 Ответить
5. Патриот 260 24.08.16 09:52 Сейчас в теме
(4) Dach, да, можно вид транспорта писать в реквизит плана обмена. Но у этого решения присутствует тот же минус, что и у одного из предложенных в статье. Цитирую: можно
//2. сделать ВидТранспортаОбмена равным РегистрыСведений.НастройкиТранспортаОбмена.ВидТранспортаСообщенийОбменаПоУмолчанию(...),
//но тогда настройка транспорта в сценарии обмена станет фиктивной, что приведёт к непониманию со стороны пользователей

Вот если к вашему предложению добавить ещё пару строк кода в форму механизма БСП (при заполненном реквизите у ПО, брать вид транспорта из него, не давая возможности выбора пользователю), то получится уже действительно красиво! Вот только многие ли решатся внести правку в типовой механизм? Спасибо за идею. Попозже добавлю сей вариант в статью.
6. Dach 295 24.08.16 11:36 Сейчас в теме
(5) я это и имел ввиду. Можно создавать несколько сценариев данных, имя сценария должно быть строго определено; при выборе реквизита "ВидТранспорта" в узле плана обмена находить нужный сценарий и менять настройку там. Тогда не придется код БСП править. Ну примерно так, навскидку. Единственное, не особо надежно - если имя сценария кто-то поменяет, но сомневаюсь что кто-то полезет так глубоко
7. Патриот 260 24.08.16 12:51 Сейчас в теме
(6) Dach, если сделать, как вы предлагаете
при выборе реквизита "ВидТранспорта" в узле плана обмена находить нужный сценарий и менять настройку там. Тогда не придется код БСП править.
то при создании нового сценария, придётся перевыбирать "ВидТранспорта" в узле плана обмена, чтобы он проставился в сценарии, что не очень хорошо.
8. alest 25.08.16 12:14 Сейчас в теме
Поясните, пожалуйста, чем не угодил обмен по правилам. Какой "любой другой обмен" нельзя выполнить из модулей правил обмена?
9. Патриот 260 25.08.16 12:45 Сейчас в теме
(8) alest, вы прикалываетесь? Хотите сказать, что вам не известно, что кроме как в ХМЛ можно в любой другой формат выгружать (или из него загружать) данные? В зависимости от системы, с которой производится обмен и целей.
10. rozer 268 25.08.16 15:53 Сейчас в теме
(9) для этого 1с и придумала ED и КД3. Можно описать любую хмл-схему и xdto-пакет по ней или использовать стандартный от 1с...
11. Патриот 260 25.08.16 16:09 Сейчас в теме
(10) rozer, для чего для этого? Вам раз в день надо выгружать список сотрудников в CSV файл для пропускной системы. И кидать его на ФТП, откуда сторонняя система его заберёт и будет разрешать пропускать тех сотров, которые указаны в файле.
Опишите, будьте добры,
хмл-схему и xdto-пакет
для решения этой задачи
12. rozer 268 25.08.16 22:51 Сейчас в теме
(11) пожалуйста http://v8.1c.ru/edi/edi_stnd/enterprisedata/1.0/#00000000055, в КД3 создается ПКО и ПОД за 3мин. В КД2 правила регистрации для физлиц еще 2 мин. И через 5мин. - вуаля у вас готов xml-файлик на ФТП. Осталось еще желание изобретать "велик" ?
13. Патриот 260 25.08.16 22:57 Сейчас в теме
(12) rozer, какая из букв
CSV
вам не понятна в названии формата, требуемого сторонней системой, разработчиком которой вы не являетесь?
16. rozer 268 26.08.16 08:52 Сейчас в теме
(13) все понял.Извиняюсь...
Патриот; +1 Ответить
23. alest 04.02.20 09:56 Сейчас в теме
(9)
Хотите сказать, что вам не известно, что кроме как в ХМЛ можно в любой другой формат выгружать

Вы читать умеете? Где я сказал, что нельзя в другие форматы выгружать? Мой вопрос был о другом.
24. Патриот 260 04.02.20 10:25 Сейчас в теме
(23)каков вопрос, таков и ответ.
первые строки в статье
Механизм БСП заточен на обмен XML по правилам обмена. Чтобы использовать его для любого другого обмена, коих в мире немало, требуются доработки. В статье описан вариант, как из положения выйти.

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

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

Теперь, когда мы через четыре года всё-таки расставили чёрточки над Й, могу более точно ответить:
Например, обмен через эксель файлы реализовать через типовой модуль обмена на тот момент возможности не было.

А также и любой другой обмен, как и описано в начале статьи. Просто казалось, что "любой другой обмен кроме ХМЛ", это понятно какой - мы же на проф сообществе 1С сидим всё-таки.
25. alest 04.02.20 14:39 Сейчас в теме
(24)
Не знаю, что за черточки и где вы расставили. Я спросил, какой, по вашему мнению, прочий обмен нельзя сделать через правила обмена КД, а вы возмутились, что я "сидя на проф сообществе", не знаю формата выгрузки csv...

Через правила обмена нельзя данные записать в xls или csv файл?

Кто-то поднял эту старую тему до меня, а я на дату не посмотрел, сожалею.
26. Патриот 260 04.02.20 15:36 Сейчас в теме
(25) вы спросили не так. ладно отвечу
Я спросил, какой, по вашему мнению, прочий обмен нельзя сделать через правила обмена КД

Любой обмен можно сделать по правилам обмена КД
мне непонятно с чем связан данный вопрос, но да ладно. Просто в контексте статьи ожидаются вопросы связанные с её контекстом, поэтому ранее я отвечал исходя из этого.
Ещё вопросы, коллега?
27. alest 04.02.20 19:58 Сейчас в теме
(26)
непонятно с чем связан данный вопрос, но да ладно. Просто в контексте статьи ожидаются вопросы связанные с её контекстом, поэтому ранее я отвечал исходя из этого.
Ещё вопросы, коллега?

Я всего лишь не понял из статьи, чем обоснован выбор такого решения, поэтому и задавал вопрос. Больше вопросов нет.
28. Патриот 260 05.02.20 10:18 Сейчас в теме
(27)Ок. Пример. Стандартный механизм не позволял обмениваться данными например в формате json. В случае, когда нужно реализовать обмен именно в формате json (например потому, что так попросила вторая сторона, у которой уже реализован АПИ данного обмена и их обмен работает уже с десятью системами, а мы одиннадцатая) - нельзя было воспользоваться стандартным механизмом. Благодаря статье стало можно.
14. kkkelena1963 26.08.16 04:47 Сейчас в теме
А мне статья очень понравилась! Спасибо большое.
15. Патриот 260 26.08.16 08:11 Сейчас в теме
(14) kkkelena1963, пожалуйста! А если вы ещё нажмёте на плюс статье, то это меня смотивирует написать ещё =)
21. kembrik 3 06.10.16 10:56 Сейчас в теме
(15)

Статья отличная, плюс поставил, пишите ещё! Воспользовался, чтобы убрать наконец "костыль" на обработках ожидания с выгрузкой в JSON

Вдруг будете раздумывать над темой новой статьи - очень интересен вариант с доработкой "старой" конфы на БСП (Например УТ 11.0.9.9) до "необходимого минимума", позволяющего использовать обмен данными на основе ED и КД3 (вон выше вам про него напомнили)
Патриот; +1 Ответить
17. dvs69 26.08.16 09:59 Сейчас в теме
Спасибо за статью, доступно изложен материал, еще раз спасибо.
18. Makushimo 155 30.08.16 09:42 Сейчас в теме
А чем и с кем вы "нестандартно" обменивались в этой статье?
В чем нестандартность вашей ситуации?
19. Патриот 260 30.08.16 09:51 Сейчас в теме
(18) Makushimo, нестандартность, с точки зрения разработчиков БСП состоит в том, что я грузил данные не в ХМЛ, а в любой другой формат, в зависимости от требований со стороны того, кому я данные выгружаю. Например в эксель или текст.
20. Makushimo 155 30.08.16 10:18 Сейчас в теме
(19) Патриот
я понял.
в статье это осталось за кадром.
спасибо.
22. Светлый ум 257 04.02.20 05:25 Сейчас в теме
Оставьте свое сообщение

См. также

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    73424    0    Serginio    108    

Вывод дерева в табличный документ СКД

Практика программирования Универсальные функции v8 v8::СКД Бесплатно (free)

Вывод содержимого элемента формы "ДанныеФормыДерево" в табличный документ средствами СКД.

09.07.2020    884    0    Yashazz    3    

Возможности работы со строками при помощи БСП, которые должен знать каждый программист

Практика программирования БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

Переходим на следующий уровень работы со строками, уходим от типовых возможностей платформы. Узнаем, как применить функционал БСП конфигурации.

05.07.2020    4562    0    quazare    33    

Диадок. Подключаемый модуль. Отладка

Интеграция Внешние источники данных v8 1cv8.cf Бесплатно (free)

Небольшой пример, как работать с подключаемым модулем Диадок (для изменения УПД перед выгрузкой на сайт Диадок.). Отладка подключаемого модуля, если не смогли подключить стандартную отладку.

17.06.2020    2272    0    John_d    1    

Универсальные функции с примерами использования Промо

Универсальные функции v8 Бесплатно (free)

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

26.02.2016    40464    0    unichkin    38    

Мастер-класс "Ведение проектов в типовых конфигурациях 1С"

Управление проектом CI/CD БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

При адаптации типовой конфигурации под особенности учета в компании важно обеспечить возможность легкого обновления поставки. Как организовать архитектуру решения и продумать процесс быстрой и эффективной разработки без ущерба типовой функциональности, на конференции Infostart Event 2019 Inception рассказал ведущий программист компании BIA-Teсhnologies Алексей Князьков.

05.06.2020    3284    0    AKnyazkov    3    

Способ хранения данных расширения или дополнительной обработки

БСП (Библиотека стандартных подсистем) Практика программирования v8 Бесплатно (free)

Описание способа хранения данных расширения или дополнительной обработки в информационной базе с использованием функционала Библиотеки стандартных подсистем.

01.06.2020    2836    0    Sedaiko    17    

Как мы загружаем данные в "Центр управления кассами Магнита"

Внешние источники данных Интеграция v8 1cv8.cf Бесплатно (free)

Статья о том, как мы делали механизм загрузки больших объемов данных в "Центр управления кассами Магнита"

08.05.2020    4312    0    chernenko_vv    25    

Минимализмы 3 Промо

Практика программирования Универсальные функции v8 Бесплатно (free)

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    44916    0    ildarovich    45    

Синхронизация БИТ:СКУД 8 с Parsec.Net 2.5

Интеграция Внешние источники данных v8 1cv8.cf Бесплатно (free)

Настройка синхронизации БИТ:СКУД 8 с Parsec.Net.2.5, выгрузка данных из внешней системы контроля доступа.

04.05.2020    3417    0    RPGrigorev    0    

Полезные функции БСП (Часть 2)

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

Список полезных функций из состава Библиотеки стандартных подсистем 3.1.

10.03.2020    9885    0    user5300    15    

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

Перенос данных из 1C8 в 1C8 БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

Как проводятся документы при обмене по универсальному формату. Пример доработки типовых правил обмена с переносом состояния документа: проведен/не поведен/пометка удаления.

04.03.2020    3887    0    partizand    6    

Библиотека стандартных подсистем (Механизм БСП) Промо

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Конфигурации в 1С пишутся для пользователей и по их «правилам» (клиент всегда прав), поэтому в основном все конфигурации разные, но достаточно часто в них используются одни и те же объекты, которые незначительно отличаются друг от друга. Действительно, сложно представить конфигурацию, где не фигурировали бы такие сущности как номенклатура, контрагенты, пользователи, валюта. И некоторые задачи являются типичными: возможность базового разграничения прав, работа с электронной почтой, задачи пользователям и т.д. Но...!

03.03.2017    65362    0    V.Stavinsky    21    

Сходство Джаро - Винклера. Нечеткое сравнение строк

Универсальные функции v8 Россия Бесплатно (free)

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

25.12.2019    6314    0    brooho    17    

Получение данных из Сигур

Внешние источники данных v8 1cv8.cf Бесплатно (free)

Получение данных из СКУД Сигур (без танцов с бубном)

25.12.2019    3427    0    skaoxy    5    

Функция - Формат государственного номера автомобиля

Универсальные функции v8 Автомобили, автосервисы Россия Бесплатно (free)

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

23.12.2019    2915    0    brooho    4    

Выполнение произвольного кода в фоновых заданиях Промо

Универсальные функции v8 Бесплатно (free)

Если надо быстро провести 100`000 документов...

13.01.2016    24240    4    unichkin    13    

[БСП] Внешняя печатная форма: как перед печатью выводить форму настроек

Печатные формы документов БСП (Библиотека стандартных подсистем) v8 КА2 Бесплатно (free)

Во внешней печатной форме перед печатью нужно выводить форму настроек. Для примера рассматриваю печатную форму "Акт сверки взаимных расчетов " .

19.12.2019    9733    0    John_d    8    

Полезности | Дерево значений | Обычные формы |

Практика программирования Универсальные функции v8 Бесплатно (free)

Полезные функции при работе с деревом значений.

04.12.2019    4846    0    Mellow    7    

Использование XML-схемы из макета внешней обработки

Обмен через XML Универсальные функции v8 1cv8.cf Бесплатно (free)

Простой способ использования XML-схем из макета внешней обработки.

28.10.2019    10042    0    Olesia_Matusevich    10    

Распределение оплаты по товарам Промо

Практика программирования Универсальные функции v8 1cv8.cf Бесплатно (free)

Учебная задача. Оплата приходит по заказу. Требуется запросом распределить её по товарам. Практическая задача была сложнее. Упростил специально для иллюстрации. Сначала собираем в одну таблицу заказы и товары. Затем ОБЪЕДИНТЬ ВСЕ с оплатами. Потом намазываем оплату на товар.

04.08.2014    18864    0    Трактор    5    

Быстрое создание наполненных коллекций

Практика программирования Универсальные функции v8 1cv8.cf Бесплатно (free)

Разберем самые частые способы создания коллекции, значения которой известны заранее. И сравним скорость их выполнения.

28.10.2019    6678    0    SeiOkami    66    

Преобразование XML в таблицу значений или иной объект 1С методом XSL преобразования

Универсальные функции Обмен через XML v8 1cv8.cf Бесплатно (free)

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

24.10.2019    10062    0    kraspila    28    

Обертка функций Excel на русском. Ускорение процесса разработки.

Загрузка и выгрузка в Excel Универсальные функции v8 Бесплатно (free)

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

24.10.2019    6786    0    DmitryKotov    6    

Кэширование COM-соединения. Три способа Промо

Практика программирования Перенос данных из 1С7.7 в 1C8.X Внешние источники данных WEB v8 Россия Бесплатно (free)

Статья о трех способах кэширования COM-соединения в 1С:Предприятии 8.x.

11.04.2013    40532    0    YPermitin    34    

Интеграция решений на 1С и сервиса обмена данными RabbitMQ через Web REST API

Внешние источники данных v8 1cv8.cf Бесплатно (free)

Отправка "Hello world" из 1С на сервер RabbitMQ и обратно при помощи web REST API. Проще уже некуда! Совместимо с Linux и Windows! Реализация протестирована на 1С 8.3.14.1854 (x64).

21.10.2019    12420    0    Eret1k    24    

Реализация печати QR кодов "Библиотека стандартных подсистем", редакция 3.1 (3.1.1.151)

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Рассмотрим, как реализовать печать QR кодов с помощью механизмов БСП.

16.10.2019    6032    0    paulis    4    

Реализация команды печати "Библиотека стандартных подсистем", редакция 3.1 (3.1.1.151)

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

В новом релизе "БСП" произошли изменения в процедурах общих модулей, связанных с механизмом печати, и в процедурах их вызова в формах документов и в формах списков. Рассмотрим их.

12.10.2019    5134    0    paulis    4    

Перенос данных из учетных программ Парус в конфигурации 1С Промо

Внешние источники данных v7.7 v8 БП2.0 ЗУП2.5 ЗКБУ БГУ 1С7:Бух 1С7:ЗиК 1С7:ББУ Россия БУ Госбюджет Бесплатно (free)

Статья посвящена анализу процессов переноса данных из учетных программ Парус в конфигурации 1С.

05.11.2012    50826    0    sklowsky    16    

Полезняшки по СКД и построителям. Просто код

Практика программирования Универсальные функции v8 v8::СКД Бесплатно (free)

Полезные процедуры и функции для работы с построителями и СКД. Просто исходник.

10.10.2019    9039    0    Yashazz    45    

Шпаргалка (БСП). Добавление в новый документ механизма печати дополнительных печатных форм

Печать БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

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

10.10.2019    14958    0    John_d    14    

От чего можно отказаться при разработке расширений 1С

Практика программирования БСП (Библиотека стандартных подсистем) Расширения v8 Бесплатно (free)

Разработка расширений 1С и оптимизация через механизм БСП: Дополнительные отчеты и обработки.

23.09.2019    10045    0    independ    24    

Сканируем без сканера или MXL to JPG Промо

Внешние источники данных Универсальные функции Печатные формы документов v8 1cv8.cf Бесплатно (free)

Хотите конвертировать документы в формат изображения менее чем за минуту, не имея сканера? Тогда эта статья для вас.

24.05.2012    33559    0    shakmaev    47    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    28282    0    ids79    16    

Вставка BLOB в таблицы ORACLE средствами 1С 8.х с использованием Microsoft OLEDB Provider

Внешние источники данных v8 1cv8.cf Россия Бесплатно (free)

Столкнулся с необходимостью выгружать картинки из 1С 8 в ORACLE-таблицу.

08.08.2019    4445    0    nomad_irk    0    

БСП: Дополнительные отчеты и обработки - одна обработка, несколько форм

Практика программирования Работа с интерфейсом БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

Как в одной дополнительной обработке разместить несколько форм с типом команды "ОткрытиеФормы"?

29.07.2019    9943    0    dsdred    9    

Выгрузка данных в таблицу MS SQL SERVER

Внешние источники данных v8 Бесплатно (free)

Процедура по выгрузке данных из 1C (таблица значений) в таблицу MS SQL SERVER через COM.

02.07.2019    7178    0    EvgenSav    18    

1С и компьютерное зрение: новый подход к контролю за ассортиментом магазина

Розничная торговля Внешние источники данных Розничная торговля v8 1С:Франчайзи, автоматизация бизнеса УУ Бесплатно (free)

Машинное зрение в магазинах и 1С. Как поднять эффективность торгового предприятия (магазин. кафе, шоурум и т.д.) с совершенно неожиданной стороны? Как получить реальные демографические данные покупателей и, самое главное, как это использовать в повседневной работе магазина? Как можно расширить привычные ABC и XYZ анализ, добавив в них пласт данных о трафике и демографии покупателей? Что необходимо для 1С, чтобы использовать данные видеоанализа людского трафика?

20.06.2019    8536    0    osipov_cvizi    16    

Подсистема "Варианты отчетов". Используете ли Вы ее правильно?

Работа с интерфейсом БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Небольшая история про использование подсистемы "Варианты отчетов" из БСП. Используете ли Вы ее правильно?

04.06.2019    37278    0    YPermitin    52    

Подсистема БСП «Управление доступом», основные объекты и регистры

БСП (Библиотека стандартных подсистем) Роли и права v8 v8::УФ v8::Права 1cv8.cf Бесплатно (free)

Основные принципы работы подсистемы «Управление доступом» из состава БСП. Виды доступа, ограничение доступа на уровне записей. Описание основных объектов и регистров, используемых подсистемой.

23.05.2019    19586    0    ids79    8    

Сохранение запроса со всеми параметрами и временными таблицами

Универсальные функции v8 v8::УФ Россия Бесплатно (free)

Функция сохранения запроса со всеми параметрами и временными таблицами в формате *.q1c для открытия в консоли запросов с диска ИТС.

13.05.2019    5995    0    Serge R    5    

Интеграция решений на 1С и сервиса обмена данными RabbitMQ

Внешние источники данных v8 1cv8.cf Бесплатно (free)

"Hello world" из 1С на сервер RabbitMQ и обратно. Полностью открытый код 1С! Реализация протестирована на 1С 8.3.12.1714 (x64).

24.04.2019    17257    0    Eret1k    52    

MS Access и 1С. Что, когда и зачем?

Практика программирования Внешние источники данных Разработка v8 Бесплатно (free)

Об использовании MS Access в связке с 1С. Можно ли использовать продукты Office на сервере. Когда Access может быть полезен. Примеры работы и другое.

09.04.2019    26720    0    YPermitin    36    

Иерархия справочника Сверху Вниз. Получаем произвольное количество родителей "верхнего" уровня

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Иерархия справочника Сверху Вниз. Функция для получения произвольного количества родителей "верхнего" уровня. На примере справочника "Номенклатура".

28.03.2019    5836    0    obsfromekb    11    

Как программно открыть внешний отчет из "Дополнительных отчетов и обработок" и передать параметры (при помощи БСП)

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Пример, как при помощи БСП программно открыть внешний отчет/обработку из "Дополнительные отчеты и обработки" и передать параметры...

25.03.2019    20102    14    ellavs    12    

Доработка проведения типовых документов в УТ 11.4, КА 2.4, ЕРП 2.4

Практика программирования Универсальные функции Разработка v8 v8::УФ ERP2 УТ11 КА2 Россия УУ Бесплатно (free)

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

22.03.2019    16605    0    ids79    16    

RabbitMQ + Конвертация Данных 3.0

Внешние источники данных Обмен через XML Интеграция Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

21.03.2019    24504    0    barelpro    82    

Загрузка ЭЛН (электронных листов нетрудоспособности) из файлов

Внешние источники данных Зарплата Зарплата v8 УПП1 Россия БУ ФОМС, ПФ, ФСС Бесплатно (free)

Что делать, если по каким-то причинам нет возможности разместить 1С и Крипто-Про на одном рабочем месте? Правильно - открывать конфигуратор и пилить. Благо, там не сложно. Непосредственно решение для УПП 1.3. Для ЗиК 2.5 и Комплексной автоматизации должно быть аналогично.

07.02.2019    6360    0    SatanClaws    4