Обмен данными

1. Intercititude 02.11.20 14:02 Сейчас в теме
Добрый день, коллеги!
Есть две базы 8.2 УТ нетиповая ОФ и 1с Финансист от wiseadvice типовая УФ.

Задача следующая:
В целях оптимизации бизнес-процессов управления денежными потоками надо настроить учет планируемых поступлений денежных средств на расчетные счета компании.

План поступлений будет формироваться на основании условий договора поставки каждого дебитора.

Условия должны быть корректно отражены в 1С.УТ(отсрочка + р/сч организации по договору).

В системе Финансист для отражения планируемых поступлений используется документ «Планируемое поступление ДС» с детализацией до определенных дат («Плановая дата» - по отсрочке, т.е. 10.09.2020 + 40 к/д = 20.10.2020).
Отсрочка указывается в УТ в каждом договоре контрагента ( количество дней).

Таким образом, требуется настроить обмен между базами УТ и Финансистом с выгрузкой определённых данных в документ "Планируемое поступление ДС".

Также необходимо предусмотреть ситуации с возвратом части товара, аннулированием заказа, корректировкой цен.

Собственно вопрос к специалистам, как правильнее и через что это корректнее реализовать ?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
14. Vitaly1C8 03.11.20 23:57 Сейчас в теме +0.77 $m
(1) Если располагаешь достаточным временем для решения задачи - скажем 1 - 1.5 мес
и собираешься работать в этой конторе долго, рекомендую всё сделать самому !
Регистрировать объект на выгрузку по подписке на события
Формировать файл выгрузки (можно xml, можно свой txt)
Загружать файл в целевую базу
Когда весь процесс отладишь, - вешаешь регламентное задание на выгрузку/загрузку в соответствующих базах;
Можно использовать упрощенную схему: Выгружать объект стандартным способом в XML, а загрузку - парсим сами полученный XML, синхронизируем сами.

Если хочешь "изучить" КД (Конвертация данных) да еще научиться пользоваться - потребуется ровно столько же времени; Но отладка будет значительно проще в первом случае; КД - вариант когда работу можно спихнуть на наемного 1с-ника, и не заботиться об оплате. А также не заботиться о криках при работе обмена с ошибками и полным отсутствием возможности разобраться почему это произошло.
2. malikov_pro 1293 02.11.20 14:16 Сейчас в теме +0.67 $m
Для решения задачи нужно выделить транспорт и формат.
Транспорт
1. общая папка с файлом обмена
2. подключени к базе по COM
3. подключение к базе по HTTP

формат
1. XML
2. JSON
3. CSV

Самый распространенный общая папка + XML, реализация через "Конвертация данных 2".
3. Intercititude 02.11.20 14:24 Сейчас в теме
(2) Общая папка ок, выгрузка/загрузка в xml ок.
Можно подробнее как это через конвертацию данных реализовывать ? К сожалению не работал с этим. Там возможно автоматическую выгрузку/загрузку реализовать через две базы?
4. malikov_pro 1293 02.11.20 14:27 Сейчас в теме
(3) "Можно подробнее" - https://infostart.ru/1c/articles/687433/
"автоматическую выгрузку/загрузку" автоматика работает за счет рег заданий, если клиент-серверный вариант то без проблем, если файловый, то нужно одно клиентское приложение оставлять открытым.
5. Intercititude 02.11.20 14:29 Сейчас в теме
(4) Обе базы клиент серверные. Буду разбираться спасибо.

А если конкретно по задаче. Необходимо же, чтобы данные договоров из УТ попадали в данные договоров в Финансит ? Или я не так понимаю суть задачи..
6. malikov_pro 1293 02.11.20 14:33 Сейчас в теме
(5) Выгружаете описание структур обеих баз в КД 2, состыковываете структуры, описываете поля поиска, допустимость добавления, алгоритмы доп обработки.
7. Intercititude 02.11.20 14:54 Сейчас в теме
(6) а как мои выгружаемые данные сгруппировать по контрагентам?
8. malikov_pro 1293 02.11.20 15:27 Сейчас в теме
(7) Выгрузка пообъектно идет, в договоре указан контрагент, его отдельным блоком правил передаст.
12. Intercititude 03.11.20 16:07 Сейчас в теме
(8) Подскажите пожалуйста. , в (11) вопрос.
9. eskor 98 03.11.20 13:00 Сейчас в теме
Вызовите программиста. Если правильно сразу распишете реквизитный состав - сделает быстро и недорого.
Без опыта в КД лучше не суйтесь, слишком много тонкостей.
10. Intercititude 03.11.20 13:25 Сейчас в теме
(9) Так я же программист. Видеокурсов и статей хватит думаю.
о каких тонкостях вы говорите,к примеру ?
11. Intercititude 03.11.20 15:02 Сейчас в теме
(9) Лучше подскажите по сути задаче..Надо же просто перекачку данных из справочника Договора? Где могут быть подводные камни ? хм
13. malikov_pro 1293 03.11.20 19:16 Сейчас в теме
(11) В (9) корректно ответили, есть границы ответов на форуме, Вы их превысили, дальше формируйте задачу в разделе "Фриланс".
15. Intercititude 05.11.20 16:10 Сейчас в теме
(13) Так у кд есть возможность автоматически выгружать/загружать данные ? Не нашёл инфо.
16. malikov_pro 1293 05.11.20 17:24 Сейчас в теме
(15) КД это организация формата данных, транспорт и автоматика настраиваются на уровне конфигурации.
Intercititude; +1 Ответить
17. Intercititude 05.11.20 17:27 Сейчас в теме
(16) То есть для типовой базы необходимо делать рег.задания через расширения? Хм
18. malikov_pro 1293 05.11.20 18:01 Сейчас в теме
19. Intercititude 08.11.20 19:18 Сейчас в теме
(18) Вы крутой! Но есть вопросы..
1)Как мне в процедуре "СинхронизацияПоРасписанию(ИдентификаторКоманды)" сделать, чтобы открывалась встроенная обработка "УниверсальныйОбменДаннымиXML",далее автоматически происходил выбор пути "Имя файла для загкузки на сервере" и выполнялось "Загрузить" ?

2) Как в первой нетиповой базе настроить выгрузку в конкретную папку ?
20. malikov_pro 1293 08.11.20 22:49 Сейчас в теме
(19)
1. Пример работы с УниверсальныйОбменДаннымиXML https://infostart.ru/1c/articles/542411/. Для типовой проще сдедать внешнюю обработку с серверной операцией и из нее вызывать.
2. указав параметры в боработке перед выполнением процедуры ОбработкаОбмена.ВыполнитьВыгрузку();
21. Intercititude 09.11.20 01:33 Сейчас в теме
(20) То есть схема выходит примерно такая:
Общая папка, в ней:
1) ИтоговыеДанныеДляПриемника
2) ПравилаОбменаДанными

БазаИсточник:
1) Автоматическое открытие по расписанию встроенной обработки "УниверсальныйОбменДаннымXML", заполнение поля "Имя файла правил"(указание пути на "ПравилаОбменаДанными) и "имя файла данных" ( Путь к общей папке/ "ИтоговыеДанныеДляПриемника").
2) После этого нажатие кнопки "Выгрузить данные".

БазаПриемник:
1) Автоматическое открытие по расписанию встроенной обработки "УниверсальныйОбменДаннымXML", ,далее автоматическии выбор пути "Имя файла для загрузки на сервере(путь к общей папке/ИтоговыеДанныеДляПриемника" и выполнялось "Загрузить" ?


На этом всё? Подкорректируйте пожалуйста, если что то не так.
23. Intercititude 09.11.20 16:57 Сейчас в теме
(20) По поводу этой статьи. Всё понятно и круто сделано.

Но не совсем понял последний пункт, эта процедура же вызывается когда подходит время по расписанию?: ДополнительныеОтчетыИОбработки.рс_ВыполнитьОбработкуПоРегламентномуЗаданию(..)
И смущает, что мы заменяем её полностью с типовой процедурой, разве это не создаст проблем ?

1) следуя Вашему совету в этой же процедуре надо вызывать внешнюю обработку, которую я заранее добавил в "дополнительные отчёта и обработки " ?
2) далее в этой внешней обработке в модуле объекта описываю все действия со встроенной обработкой "УниверсальныйОбменДаннымиXML" ?

Почему же не сделать просто регламентное задание в расширении, и в нём прописать вызов внешней обработки с последующей обработкой "УниверсальногОбменаДаннымиXML ?
22. malikov_pro 1293 09.11.20 01:46 Сейчас в теме
(21)
1. Автоматическое открытие по расписанию - далаю запуском через рег задания, обработка встроена в обе конфигурации.
2. Нужно смотреть по части блокировки файлов (пересечения расписаний)
2.1 Альтернативно использовать транспорт прямого подключения, COM или HTTP
3. передавать небольшими пакетами
4. Глубоко не разбирался потому что КД давно не пользуюсь, для меня проще обработки нормализации и денормализации описать кодом и подключить в виде HTTP сервиса и HTTP клиента соответственно.
24. malikov_pro 1293 09.11.20 19:43 Сейчас в теме
(23) "Почему же не сделать просто регламентное задание в расширении" - потому что рег задание в расширение не добавить. На режиме совместимости Версия 8.3.14 точно заблокировано.

"заменяем её полностью с типовой процедурой" - с условием и ПродолжитьВызов(ВнешняяОбработка, ИдентификаторКоманды);

"рс_ВыполнитьОбработкуПоРегламентномуЗаданию" - в комментарии описан принцип http://forum.infostart.ru/forum9/topic238622/message2458448/#message2458448
С именованием переменных путаница, но терпимо.


Процедура СинхронизацияПоРасписанию(НастройкаОбмена) Экспорт
	
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("НастройкаОбмена", НастройкаОбмена); 
	
обОбработка = Обработки.ос_ОбменДанными.Создать();
обОбработка.ВыполнитьКоманду("ВыгрузитьГруппыНоменклатуры", ПараметрыВыполнения);
25. Intercititude 10.11.20 13:43 Сейчас в теме
(24) спасибо за пояснения.

Единственное, не могу понять как мою внешнюю обработку передать сюда ? рс_ВыполнитьОбработкуПоРегламентномуЗаданию(вн обработка).


Либо в этом коде обратиться к обработке просто необходимо ?
26. malikov_pro 1293 10.11.20 14:33 Сейчас в теме
(25) Обработка не передается, передается ИдентификаторКоманды, по которому получаю объект обработки и вызываю в нем функцию.
Intercititude; +1 Ответить
27. Intercititude 10.11.20 14:49 Сейчас в теме
(26) А как Вы напрямую обратились к обработке в этой процедуре ?
28. malikov_pro 1293 10.11.20 15:08 Сейчас в теме
(27)
обОбработка = Обработки.ос_ОбменДанными.Создать();
обОбработка.ВыполнитьКоманду("ВыгрузитьГруппыНоменклатуры", ПараметрыВыполнения);
Intercititude; +1 Ответить
29. Intercititude 11.11.20 12:55 Сейчас в теме
(28) Этот код мы же выполняем в "рс_ВыполнитьОбработкуПоРегламентномуЗаданию", после :
	Если ТипЗнч(ВнешняяОбработка) = Тип("Строка") И ВнешняяОбработка = СтруктураРеглЗаданий.СинхронизацияДанных Тогда
обОбработка = Обработки.ос_ОбменДанными.Создать();
обОбработка.ВыполнитьКоманду("ВыгрузитьГруппыНоменклатуры", ПараметрыВыполнения);


Единственное не понимаю, где Вы взяли эту переменную?: "НастройкаОбмена" в
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("НастройкаОбмена", НастройкаОбмена); 

И СтруктураРеглЗаданий.СинхронизацияДанных это откуда?
30. Intercititude 11.11.20 15:07 Сейчас в теме
(28) И почему я не могу обратиться сразу напрямую к обработке :
обОбработка = Обработки.УниверсальныйОбменДаннымиXML.Создать();


Зачем добавлять отдельную внешнюю обработку ?
31. malikov_pro 1293 11.11.20 16:05 Сейчас в теме
(30) Можете, пример копировал из своих наработок, там контекст обмена с сайтом был.
Intercititude; +1 Ответить
32. Intercititude 11.11.20 16:07 Сейчас в теме
(31) А по поводу (28) ? Путаюсь в вашем коде (
33. malikov_pro 1293 11.11.20 16:45 Сейчас в теме
(32) Посмотрите как работает РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания);
Это используется для регистрации внешних обработок, в него "подсовываем" нужные параметры

ПараметрыЗапуска = Новый Массив();
ПараметрыЗапуска.Добавить(СтруктураРеглЗаданий.СинхронизацияДанных);
ПараметрыЗапуска.Добавить(Объект.Ссылка);


Которые перехватываем в рс_ВыполнитьОбработкуПоРегламентномуЗаданию() в которой создаю объект обработки и передаю в нее параметры и хотя переменная "ИдентификаторКоманды" в ней передается настройка обмена.
Intercititude; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот