Добрый день, коллеги!
Есть две базы 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
132402.11.20 14:16 Сейчас в теме+0.67 $m
Для решения задачи нужно выделить транспорт и формат.
Транспорт
1. общая папка с файлом обмена
2. подключени к базе по COM
3. подключение к базе по HTTP
формат
1. XML
2. JSON
3. CSV
Самый распространенный общая папка + XML, реализация через "Конвертация данных 2".
(2) Общая папка ок, выгрузка/загрузка в xml ок.
Можно подробнее как это через конвертацию данных реализовывать ? К сожалению не работал с этим. Там возможно автоматическую выгрузку/загрузку реализовать через две базы?
(3) "Можно подробнее" - https://infostart.ru/1c/articles/687433/ "автоматическую выгрузку/загрузку" автоматика работает за счет рег заданий, если клиент-серверный вариант то без проблем, если файловый, то нужно одно клиентское приложение оставлять открытым.
Вызовите программиста. Если правильно сразу распишете реквизитный состав - сделает быстро и недорого.
Без опыта в КД лучше не суйтесь, слишком много тонкостей.
(18) Вы крутой! Но есть вопросы..
1)Как мне в процедуре "СинхронизацияПоРасписанию(ИдентификаторКоманды)" сделать, чтобы открывалась встроенная обработка "УниверсальныйОбменДаннымиXML",далее автоматически происходил выбор пути "Имя файла для загкузки на сервере" и выполнялось "Загрузить" ?
2) Как в первой нетиповой базе настроить выгрузку в конкретную папку ?
(19)
1. Пример работы с УниверсальныйОбменДаннымиXML https://infostart.ru/1c/articles/542411/. Для типовой проще сдедать внешнюю обработку с серверной операцией и из нее вызывать.
2. указав параметры в боработке перед выполнением процедуры ОбработкаОбмена.ВыполнитьВыгрузку();
(20) То есть схема выходит примерно такая:
Общая папка, в ней:
1) ИтоговыеДанныеДляПриемника
2) ПравилаОбменаДанными
БазаИсточник:
1) Автоматическое открытие по расписанию встроенной обработки "УниверсальныйОбменДаннымXML", заполнение поля "Имя файла правил"(указание пути на "ПравилаОбменаДанными) и "имя файла данных" ( Путь к общей папке/ "ИтоговыеДанныеДляПриемника").
2) После этого нажатие кнопки "Выгрузить данные".
БазаПриемник:
1) Автоматическое открытие по расписанию встроенной обработки "УниверсальныйОбменДаннымXML", ,далее автоматическии выбор пути "Имя файла для загрузки на сервере(путь к общей папке/ИтоговыеДанныеДляПриемника" и выполнялось "Загрузить" ?
На этом всё? Подкорректируйте пожалуйста, если что то не так.
(20) По поводу этой статьи. Всё понятно и круто сделано.
Но не совсем понял последний пункт, эта процедура же вызывается когда подходит время по расписанию?: ДополнительныеОтчетыИОбработки.рс_ВыполнитьОбработкуПоРегламентномуЗаданию(..)
И смущает, что мы заменяем её полностью с типовой процедурой, разве это не создаст проблем ?
1) следуя Вашему совету в этой же процедуре надо вызывать внешнюю обработку, которую я заранее добавил в "дополнительные отчёта и обработки " ?
2) далее в этой внешней обработке в модуле объекта описываю все действия со встроенной обработкой "УниверсальныйОбменДаннымиXML" ?
Почему же не сделать просто регламентное задание в расширении, и в нём прописать вызов внешней обработки с последующей обработкой "УниверсальногОбменаДаннымиXML ?
(21)
1. Автоматическое открытие по расписанию - далаю запуском через рег задания, обработка встроена в обе конфигурации.
2. Нужно смотреть по части блокировки файлов (пересечения расписаний)
2.1 Альтернативно использовать транспорт прямого подключения, COM или HTTP
3. передавать небольшими пакетами
4. Глубоко не разбирался потому что КД давно не пользуюсь, для меня проще обработки нормализации и денормализации описать кодом и подключить в виде HTTP сервиса и HTTP клиента соответственно.
(23) "Почему же не сделать просто регламентное задание в расширении" - потому что рег задание в расширение не добавить. На режиме совместимости Версия 8.3.14 точно заблокировано.
"заменяем её полностью с типовой процедурой" - с условием и ПродолжитьВызов(ВнешняяОбработка, ИдентификаторКоманды);
(28) Этот код мы же выполняем в "рс_ВыполнитьОбработкуПоРегламентномуЗаданию", после :
Если ТипЗнч(ВнешняяОбработка) = Тип("Строка") И ВнешняяОбработка = СтруктураРеглЗаданий.СинхронизацияДанных Тогда
обОбработка = Обработки.ос_ОбменДанными.Создать();
обОбработка.ВыполнитьКоманду("ВыгрузитьГруппыНоменклатуры", ПараметрыВыполнения);
Единственное не понимаю, где Вы взяли эту переменную?: "НастройкаОбмена" в
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("НастройкаОбмена", НастройкаОбмена);
И СтруктураРеглЗаданий.СинхронизацияДанных это откуда?
(32) Посмотрите как работает РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания);
Это используется для регистрации внешних обработок, в него "подсовываем" нужные параметры
ПараметрыЗапуска = Новый Массив();
ПараметрыЗапуска.Добавить(СтруктураРеглЗаданий.СинхронизацияДанных);
ПараметрыЗапуска.Добавить(Объект.Ссылка);
Которые перехватываем в рс_ВыполнитьОбработкуПоРегламентномуЗаданию() в которой создаю объект обработки и передаю в нее параметры и хотя переменная "ИдентификаторКоманды" в ней передается настройка обмена.