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

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

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

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

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

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

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

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

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

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

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

Я всего лишь не понял из статьи, чем обоснован выбор такого решения, поэтому и задавал вопрос. Больше вопросов нет.
28. Патриот 269 05.02.20 10:18 Сейчас в теме
(27)Ок. Пример. Стандартный механизм не позволял обмениваться данными например в формате json. В случае, когда нужно реализовать обмен именно в формате json (например потому, что так попросила вторая сторона, у которой уже реализован АПИ данного обмена и их обмен работает уже с десятью системами, а мы одиннадцатая) - нельзя было воспользоваться стандартным механизмом. Благодаря статье стало можно.
14. kkkelena1963 26.08.16 04:47 Сейчас в теме
А мне статья очень понравилась! Спасибо большое.
15. Патриот 269 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 157 30.08.16 09:42 Сейчас в теме
А чем и с кем вы "нестандартно" обменивались в этой статье?
В чем нестандартность вашей ситуации?
19. Патриот 269 30.08.16 09:51 Сейчас в теме
(18) Makushimo, нестандартность, с точки зрения разработчиков БСП состоит в том, что я грузил данные не в ХМЛ, а в любой другой формат, в зависимости от требований со стороны того, кому я данные выгружаю. Например в эксель или текст.
20. Makushimo 157 30.08.16 10:18 Сейчас в теме
(19) Патриот
я понял.
в статье это осталось за кадром.
спасибо.
29. Program 212 08.02.21 00:02 Сейчас в теме
(19)покажите чаcть модуля в текст на ftp
30. Патриот 269 09.02.21 01:37 Сейчас в теме
(29) моя ваша не понимать. если имелось ввиду "покажите часть модуля с кодом по выгрузке данных в текстовом формате на ftp", то его нет и он не нужен, т.к. индивидуален в каждой задаче. Как включить использование ftp в статье описано - для этого надо добавить одну строку кода. А сам код выгрузки хоть в текстовый формат, хоть в какой другой прописывается в функции
Процедура ПриВыгрузке(НастройкиТранспорта, ИмяСобытияЖурналаРегистрации, КоличествоОтправленныхОбъектов) Экспорт
что также описано в статье
22. Светлый ум 268 04.02.20 05:25 Сейчас в теме
Оставьте свое сообщение

См. также

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions Промо

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

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    4319    comol    22    

Печать макета MS Word в любом документе с помощью БСП

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

В данной статье рассмотрим типовой функционал вывода на печать макетов печатных форм MS Word (*.docx) для любого документа конфигурации, основанной на библиотеке стандартных подсистем. Вариант клиент-серверный.

23.02.2021    2506    quazare    2    

Базовое понимание внедрения механизма печати в любом документе конфигурации на БСП

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

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

17.02.2021    2161    quazare    14    

Последний раз про срез последних (на каждую дату в запросе)

Инструментарий разработчика Практика программирования Консоль запросов Универсальные функции v8 v8::Запросы Бесплатно (free)

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

15.02.2021    2630    randomus    47    

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

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

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

27.01.2016    78349    Serginio    113    

Перенос/копирование и установка отбора/периода при интерактивном переключении или смене варианта отчета/СКД в БСП 3.1 (1C ERP, УТ, БП, ...)

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

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

18.01.2021    500    SizovE    4    

DaJet Exchange: обмен данными с 1С (часть 1)

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

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

11.01.2021    2356    zhichkin    14    

Генерация штрихкодов с помощью БСП для программистов

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

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

09.01.2021    5475    quazare    15    

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

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

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

26.02.2016    41984    unichkin    47    

Асинхронное выполнение длительных операций

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

Демонстрация использования функционала БСП для выполнения длительных операций. Механизм может быть полезен, например, при загрузке/выгрузке больших объемов данных.

28.12.2020    1578    prog_mayskiyse    7    

Ускоряем медленный/долгий и тормозной стандартный поиск по динамическому списку, настраиваем его под себя

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

Пользователи привыкли искать на форме списка, но, вбивая в поиск некорректные данные, могут завесить всю систему, а если еще искать нужно по НЕ полям списка, то решение только в своём поиске - все это решим в публикации с открытым кодом.

14.12.2020    6924    SizovE    2    

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

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

Очень много реквизитов (настроечные опции, параметры) у справочника или документа, и их все необходимо разместить на управляемую форму - лень! Хочется - добавил в метаданные и всё! В публикации отличное, простое и олдскульное решение с открытым кодом, научимся работать с ДанныеФормыДерево, ДеревомЗначений, сделаем быстрый поиск, создадим универсальный инструмент.

11.12.2020    701    SizovE    6    

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

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

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

19.02.2018    47901    ildarovich    45    

Метаданные и их идентификаторы

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

Идентификаторы (GUID'ы) метаданных конфигурации. Немного о том, как их получить.

05.12.2020    4944    YPermitin    23    

Программное условное оформление динамического списка, раскраска строк списка по цветам справочника или любым другим условиям (условное оформление)

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

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

30.11.2020    2656    SizovE    3    

Выгрузка HTML описаний с картинками (Base64) товаров на сайт/интернет-магазин/B2B, разберем регулярное выражение получения тега body, ПолучитьHTML, ФорматированныйДокумент

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

Редактор HTML платформы 1С простой и очень удобный для небольших задач, однако ПолучитьHTML возвращает отдельно картинки и отдельно целиком HTML страницу со ссылкой на имена этих картинок, что неудобно для отправки в базу данных сайта/интернет-магазина/веб-приложения/B2B. Разберем на открытом коде, как решить эту проблему, напишем универсальную функцию получения значения любого тега HTML на регулярных выражениях. Бонусом - возможность редактировать теги HTML в текстовом режиме.

24.11.2020    678    SizovE    2    

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

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

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

03.03.2017    73160    V.Stavinsky    22    

Сохранение настроек

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

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

22.11.2020    2651    the1    8    

Чтение вложенных свойств Структур Структуры, Соответствий, свойства через точку, разбор JSON

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

JSON: {user.device.type} - как получить значение {type}? А если вложенность значительно глубже? Как проверить, что оно заполнено или удалить его - всё это в публикации с открытым кодом и даже без рекурсии. Бонусом разбор дерева значений - ДанныеФормыЭлементДерева, СтрокаДереваЗначений.

17.11.2020    1619    SizovE    2    

Сохранение настроенного запроса набора данных СКД

Универсальные функции v8 v8::СКД 1cv8.cf Бесплатно (free)

Как сохранить запрос набора данных СКД в том виде, каким он будет выполнен системой для открытия в консоли запросов с диска ИТС.

09.11.2020    1335    Serge R    0    

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

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

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

13.01.2016    24862    unichkin    13    

Запуск почти любых процедур и функции конфигураций в асинхронном режиме - БСП - Длительные операции [Часть 2]

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

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

30.10.2020    5930    quazare    5    

Гарантированно рабочий пример использования длительных операций на БСП с отображением прогресса. [Часть 1]

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

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

29.10.2020    5072    quazare    27    

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

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

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

04.08.2014    19311    Трактор    5    

Простой пример разработки регулярного обмена с использованием БСП на примере ERP 2.4 и УПП 1.3

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

Данный вариант подойдет тем, кто хочет настроить "свой" регулярный обмен с добавлением "своих" планов обмена с использованием правил обмена на КД 2.1.

27.10.2020    3965    байт    8    

Произвольные колонтитулы и повтор шапки таблицы в табличном документе (функция)

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

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

07.10.2020    2047    ellavs    1    

Работаем с контактной информацией в конфигурациях на БСП

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

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

14.09.2020    6888    quazare    9    

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

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

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

11.04.2013    42038    YPermitin    41    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

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

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

30.08.2020    10818    quazare    33    

Самый простой парсинг и обработка веб-страниц в 1С

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

Рассмотрим самый простой парсинг веб-страниц средствами платформы 1С и еще некоторые полезные приемы работы с веб-страницами.

07.08.2020    6696    YPermitin    18    

Выполнение внешней обработки по расписанию для управляемого и обычного приложения

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

Использование БСП для выполнения внешних обработок в управляемом и обычном приложении

06.08.2020    4187    RPGrigorev    0    

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

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

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

05.11.2012    52557    sklowsky    16    

Пользовательское поле СКД одной процедурой

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

Быстрое создание пользовательского поля "выражение" одной процедурой

05.08.2020    1804    Yashazz    0    

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

БСП (Библиотека стандартных подсистем) Информационная безопасность Роли и права v8 КА2 Россия УУ Бесплатно (free)

Решал задачу ограничения доступ к объектам по справочнику "Банковские счета" штатными средствами БСП. Конфигурация КА 2.2. В остальных на БСП должно работать так же. Хотел сделать инструкцию для себя на будущее, решил поделиться.

05.08.2020    2079    ER34    2    

Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0 (сравнение)

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

В данном обзоре приведу примеры встроенных используемых функций для работы с печатными формами на примерах конфигураций Управление торговлей 11.4 и Бухгалтерия 3.0.

10.07.2020    4419    quazare    5    

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

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

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

24.05.2012    34381    shakmaev    47    

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

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

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

09.07.2020    3047    Yashazz    7    

Интеграции с сервером SQL. Быстро и просто

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

Решаем вопросы экспорта/импорта данных в базы отличного от 1С происхождения.

06.07.2020    2542    Infector    4    

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

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

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

05.07.2020    10214    quazare    36    

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

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

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

17.06.2020    6523    John_d    10    

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

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

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

05.06.2020    4445    AKnyazkov    3    

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

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

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

01.06.2020    4036    Sedaiko    17    

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

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

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

08.05.2020    5368    chernenko_vv    25    

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

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

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

04.05.2020    4300    RPGrigorev    0    

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

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

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

10.03.2020    14851    user5300    19    

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

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

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

04.03.2020    5470    partizand    6    

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

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

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

25.12.2019    7525    brooho    18    

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

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

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

25.12.2019    5139    skaoxy    6