Выполнение синхронизации (обмен) по событию 1С (двусторонний обмен)

16.11.21

Интеграция - Обмен между базами 1C

Выполнить синхронизацию(обмен) с другой базой 1С по событию в 1С (проведение документа). Запустить синхронизацию из другой базы 1С.

Итак, имеется две базы 1С (Бухгалтерия и Автосервис, на базе УНФ) с настроенным двусторонним обменом.

Задача состоит в том, чтобы при проведении документа "ПриходнаяНакладная" оперативно отразить данные по приходу товара в другой базе, чтобы этот товар можно было уже вносить в Заказ-наряды. Товар поступает к нам примерно 3-4 раза в день.

Итак, товар приходуем в одной базе 1С (Бухгалтерия), затем оперативно перегружаем приход в другую базу 1С(Автосервис).

На данный момент, ручная синхронизация(обмен) по данной задаче работает. Наша цель - Автоматизировать.

....

Когда я копал, каким же мне методом это сделать... друг подсказал реализовать через WEB-Сервисы. Копал я WEB-Сервисы, но был вариант такой, что подключаюсь к базе Бухгалтерия, где создана "ПриходнаяНакладная" читаю данные и загружаю в базу Автосервис, т.е. необходимо было перегружать сами данные.

Я так подумал... почему бы мне после проведения документа не запустить Синхронизацию программно. Ну хорошо, синхронизацию в Бухгалтерии я запущу, а как ее запустить в Автосервис. Вот для этого и мне и пригодились WEB-Сервисы.

В итоге все свелось к таким пунктам:

1. Проведение документа "ПриходнаяНакладная" и запуск синхронизации в 1С:Бухгалтерия.

2. Проведение документа "ПриходнаяНакладная" и запуск с задержкой в 1 мин синхронизации в 1С:Автосервис (используя WEB-Сервисы).

Почему с задержкой? Я подумал, что выполнение синхронизации и запись в файл занимает некоторое время, поэтому чтобы все успелось записаться, беру время с запасом. Потом я время уменьшил до 45 сек.

....
1. Проведение документа "ПриходнаяНакладная" и запуск синхронизации в 1С:Бухгалтерия.

Запуск синхронизации(обмена) сводится к запуску самого сценария синхронизации данных. В 1С:Бухгалтерия в документе "ПриходнаяНакладная" в модуле документа в событии ПослеЗаписиНаСервере пишу сценарий запуска сценария обмена с 1С:Автосервис в данной конфигурации:

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
	
	Отказ = Ложь;
	
	// Запускаем выполнение обмена в Бухгалтерии.
	СценарийОбменаСсылка = Справочники.СценарииОбменовДанными.НайтиПоНаименованию("Сценарий синхронизации для Автосервис 1.6");
	ОбменДаннымиСервер.ВыполнитьОбменДаннымиПоСценариюОбменаДанными(Отказ, СценарийОбменаСсылка);
	
	// Обновляем данных табличной части сценария обмена.
	ОбновитьСостоянияОбменовДанными(СценарийОбменаСсылка);
	
КонецПроцедуры

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

Процедура ОбновитьСостоянияОбменовДанными была взята также из этого модуля и модифицированна: а) Добавляем параметр в процедуру "ОбновитьСостоянияОбменовДанными" (необходимо передать ссылку на нужный нам сценарий для выполнения) б) в самом вызове процедуры ставим аргумент. в) Для загрузки получаем объект сценария

При этом сам запрос не меняется.

Итоговый код процедуры ОбновитьСостоянияОбменовДанными:

&НаСервере
Процедура ОбновитьСостоянияОбменовДанными(СценарийОбменаСсылка)
	
	ТекстЗапроса = "
	|ВЫБРАТЬ
	|	СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы,
	|	СценарииОбменовДаннымиНастройкиОбмена.ВидТранспортаОбмена,
	|	СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие,
	|	ВЫБОР
	|	КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена ЕСТЬ NULL
	|	ТОГДА 0
	|	КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена = ЗНАЧЕНИЕ(Перечисление.РезультатыВыполненияОбмена.Предупреждение_СообщениеОбменаБылоРанееПринято)
	|	ТОГДА 2
	|	КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена = ЗНАЧЕНИЕ(Перечисление.РезультатыВыполненияОбмена.ВыполненоСПредупреждениями)
	|	ТОГДА 2
	|	КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена = ЗНАЧЕНИЕ(Перечисление.РезультатыВыполненияОбмена.Выполнено)
	|	ТОГДА 0
	|	ИНАЧЕ 1
	|	КОНЕЦ КАК РезультатВыполненияОбмена
	|ИЗ
	|	Справочник.СценарииОбменовДанными.НастройкиОбмена КАК СценарииОбменовДаннымиНастройкиОбмена
	|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияОбменовДанными КАК СостоянияОбменовДанными
	|	ПО СостоянияОбменовДанными.УзелИнформационнойБазы = СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы
	|	 И СостоянияОбменовДанными.ДействиеПриОбмене      = СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие
	|ГДЕ
	|	СценарииОбменовДаннымиНастройкиОбмена.Ссылка = &Ссылка
	|УПОРЯДОЧИТЬ ПО
	|	СценарииОбменовДаннымиНастройкиОбмена.НомерСтроки ВОЗР
	|";
	
	Запрос = Новый Запрос;
	Запрос.Текст = ТекстЗапроса;
	Запрос.УстановитьПараметр("Ссылка", СценарийОбменаСсылка);
	
    // Получаем объект сценария
	СценарийОбменаОбъект = СценарийОбменаСсылка.ПолучитьОбъект();
	
	СценарийОбменаОбъект.НастройкиОбмена.Загрузить(Запрос.Выполнить().Выгрузить());
	
КонецПроцедуры

2. Проведение документа "ПриходнаяНакладная" и запуск с задержкой в 1 мин синхронизации в 1С:Автосервис (используя WEB-Сервисы).

Для автоматического запуска сценария синхронизации в 1С:Автосервис понадобились WEB-Сервисы. Т.е суть в том, что в 1С-Автосервис создаем WEB-Сервис, публикуем базу, затем он становится доступен для использования внешними приложениями (мне напомнил принцип работы API). Наверное это и есть своего рода API в 1С.

Создание WEB-Сервиса.

WEB-Сервис я создавал в расширении. Назвал ObmenWS с одной единственной функцией запускаемой сценарий обмена (ЕxchangeStart). Параметры функция не имеет. Возвращаемое значение Истина, всегда.

 

 

На вкладке Прочее задал данные настройки:

 

 

Свойства Функции ЕxchangeStart:

 

 

Проваливаясь в процедуру ЕxchangeStart:


Функция ЕxchangeStart()
	
	Отказ = Ложь;
	
	// Запускаем выполнение обмена.
	СценарийОбменаСсылка = Справочники.СценарииОбменовДанными.НайтиПоНаименованию("Сценарий синхронизации для Бухгалтерия предприятия 2.1");
	ОбменДаннымиСервер.ВыполнитьОбменДаннымиПоСценариюОбменаДанными(Отказ, СценарийОбменаСсылка);
	
	// Обновляем данных табличной части сценария обмена.
	ОбновитьСостоянияОбменовДанными(СценарийОбменаСсылка);
	
	Возврат Истина;
	
КонецФункции

&НаСервере
Процедура ОбновитьСостоянияОбменовДанными(СценарийОбменаСсылка)
	
	ТекстЗапроса = "
	|ВЫБРАТЬ
	|	СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы,
	|	СценарииОбменовДаннымиНастройкиОбмена.ВидТранспортаОбмена,
	|	СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие,
	|	ВЫБОР
	|	КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена ЕСТЬ NULL
	|	ТОГДА 0
	|	КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена = ЗНАЧЕНИЕ(Перечисление.РезультатыВыполненияОбмена.Предупреждение_СообщениеОбменаБылоРанееПринято)
	|	ТОГДА 2
	|	КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена = ЗНАЧЕНИЕ(Перечисление.РезультатыВыполненияОбмена.ВыполненоСПредупреждениями)
	|	ТОГДА 2
	|	КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена = ЗНАЧЕНИЕ(Перечисление.РезультатыВыполненияОбмена.Выполнено)
	|	ТОГДА 0
	|	ИНАЧЕ 1
	|	КОНЕЦ КАК РезультатВыполненияОбмена
	|ИЗ
	|	Справочник.СценарииОбменовДанными.НастройкиОбмена КАК СценарииОбменовДаннымиНастройкиОбмена
	|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияОбменовДанными КАК СостоянияОбменовДанными
	|	ПО СостоянияОбменовДанными.УзелИнформационнойБазы = СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы
	|	 И СостоянияОбменовДанными.ДействиеПриОбмене      = СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие
	|ГДЕ
	|	СценарииОбменовДаннымиНастройкиОбмена.Ссылка = &Ссылка
	|УПОРЯДОЧИТЬ ПО
	|	СценарииОбменовДаннымиНастройкиОбмена.НомерСтроки ВОЗР
	|";
	
	Запрос = Новый Запрос;
	Запрос.Текст = ТекстЗапроса;
	Запрос.УстановитьПараметр("Ссылка", СценарийОбменаСсылка);
	
	СценарийОбменаОбъект = СценарийОбменаСсылка.ПолучитьОбъект();
	
	СценарийОбменаОбъект.НастройкиОбмена.Загрузить(Запрос.Выполнить().Выгрузить());
	
КонецПроцедуры

Данный код я также беру из справочника "СценарииОбменовДанными" из модуля формы элемента, за основу была взята процедура "ВыполнитьОбменДаннымиПоСтрокеНастройки" но только уже в конфигурации 1С:Автосервис.

Процедура ОбновитьСостоянияОбменовДанными была взята также из этого модуля и модифицированна как в прошлом случае.

....

Публикация базы.

Итак, WEB-Сервис создан, осталось опубликовать базу. У меня она опубликована была уже, поэтому нужно только переопубликовать. Но перед публикацией поставьте галочку "Публиковать WEB-Сервисы расширений по умолчанию". Тогда наш WEB-Сервис из расширения будет работать.

Проверка доступности WEB-Сервиса.

После публикации проверим работоспособность WEB-Сервиса: запускаем строку https://*здесь ссылка на нашу базу*/ws/ObmenWS.1cws?wsdl Браузер должен вернуть XML-Строку. Может еще потребовать ввести логин и пароль - это от базы 1С.

Когда у нас все работает, тогда мы можем его уже дергать из другого приложения. Т.е он доступен и работает. Ура!

Вызов WEB-Сервиса из 1С:Бухгалтерия

Необходимо:

1. Создать WS-Ссылку

2. Создать регламентное(фоновое) задание.

3. Модифицировать процедуру ПослеЗаписиНаСервере нашего документа "ПриходнаяНакладная"

Создать WS-Ссылку

В 1С:Бухгалтерия в расширении я создаю новую WS-Ссылку. При создании указываю туда ссылку на мой созданный в 1С:Автосервис WEB-Сервис (https://*здесь ссылка на нашу базу*/ws/ObmenWS.1cws?wsdl). Если потребует ввести логин и пароль, то это от 1С (под кем будет запускаться обмен). Делаю по инструкции из ИТС https://its.1c.ru/db/v8doc#content:71:1:issogl2_17.3.1.%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9ws-%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B8

Это статическая ссылка для подключения к WEB-Сервису.

Создать регламентное(фоновое) задание

Когда я думал над тем как же мне выполнить запуск WEB-Сервиса через 1 мин искал методы типа Sleep в 1С и тп. Но подумал почему бы не создать фоновое задание и каждый раз при проведении менять время выполнения (выполнять единократно). Итак, создаем регламентное задание. Свойства регламентного задания:

 

 

А метод регламентного задания выглядит так:

Процедура ВыполнениеОбменаАвтосервис() Экспорт
	
	Прокси = WSСсылки.WSПодключениеАвтосервис.СоздатьWSПрокси("1.1.1.1", "ObmenWS", "ObmenWSSoap");
	
	// Пользователь 1С под которым запускаем обмен (я создал отдельного с правами Админ)
	Прокси.Пользователь = "Обмен1С";
	Прокси.Пароль = "1111";
	
	// Выполняем функцию обмена, возвращает Истина
	СинхронизацияАвтосервисВыполнена = Прокси.ЕxchangeStart();
	
КонецПроцедуры

Модифицировать процедуру ПослеЗаписиНаСервере нашего документа "ПриходнаяНакладная"

Протестировав, понял, что 1 мин много, поставил 45 сек. Время можно подгонять под ваши нужды.

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
	
	Отказ = Ложь;
	
	// Запускаем выполнение обмена в Бухгалтерии.
	СценарийОбменаСсылка = Справочники.СценарииОбменовДанными.НайтиПоНаименованию("Сценарий синхронизации для Автосервис 1.6");
	ОбменДаннымиСервер.ВыполнитьОбменДаннымиПоСценариюОбменаДанными(Отказ, СценарийОбменаСсылка);
	
	// Обновляем данных табличной части сценария обмена.
	ОбновитьСостоянияОбменовДанными(СценарийОбменаСсылка);
	
	// Запускаем выполнение обмена в Автосервис
	РеглЗад = РегламентныеЗадания.НайтиПредопределенное("ВыполнениеОбменаАвтосервис");
	
	//создаем новое расписание
	//единократно, в заданное время
	НовоеРасп = Новый РасписаниеРегламентногоЗадания;
	НовоеРасп.ПериодПовтораДней = 0;
	// на 45 сек позже
	НовоеРасп.ВремяНачала = ТекущаяДата() + 45; 
	
	РеглЗад.Расписание = НовоеРасп;
	РеглЗад.Записать();
	
КонецПроцедуры

 

ИТОГ: После записи документа происходит синхронизация в текущей конфигурации 1С:Бухгалтерия и устанавливается регламентное задание на 45 сек позже. Регламентное задание дергает WEB-Сервис, который находится в 1С:Автосервис и запускает процедуру синхронизации там. Итак мы в течении 45 секунд получаем актуальную информацию в 1С:Автосервис.

....

Не претендую на идеал, т.к опыт работы с 1С небольшой.

Синхронизация обмен WEB-Сервисы WS-Ссылка проведение документа регламентное задание фоновое Приходная накладная товары отражение прихода товаров в автоматическом режиме

См. также

SALE! 15%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

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

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    135566    729    291    

391

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

38500 34650 руб.

15.04.2019    68849    181    139    

111

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.226.x) и БП 3.0 (3.0.151.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20623    136    38    

94

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 руб.

23.07.2020    46781    199    64    

162

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

50722 45650 руб.

31.10.2014    231919    125    327    

296

SALE! 10%

Перенос данных из БП 3.0 в УНФ 3.0 / УНФ 1.6. Переносятся остатки, документы и справочная информация

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

В продаже с 2018г. | Воспользовались более 41 предприятия! | Правила конвертации (КД 2) для переноса данных из БП 3 в УНФ | Переносятся все виды документов, начальные остатки и вся возможная справочная информация | Есть фильтр по организациям | Оперативно обновляем на новые релизы | Оказываем техподдержку | В комплект файлов входит инструкция, авторская версия обработки "Универсальный обмен...", актуальные правила переноса данных и архив старых версий переноса | Учет в БП 3 должен быть корректным, некорректные данные не переносятся | Можно бесплатно проверить на вашем сервере до покупки!

50722 руб.

10.07.2018    67760    41    123    

46

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

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

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

48278 43450 руб.

03.12.2020    34428    81    58    

78

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

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

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

60000 руб.

05.10.2022    9304    9    8    

11
Оставьте свое сообщение