Загрузка документов из УТ 10 в БП 3

Обмен - Перенос данных из 1C8 в 1C8

Внешняя обработка для загрузки документов из УТ 10 в БП 3. Создана на управляемых формах, выполняется на стороне приемника в БП 3. Позволяет загружать документы интерактивно и документы, справочники, записи регистров в фоновом режиме.

Сокращения

УТ – конфигурация «Управление торговлей» релиз 10

БП – конфигурация «Бухгалтерия предприятия» релиз 3.0

КД – конвертация данных

УИД – уникальный идентификатор объекта

Мотивация

После обновления БП на 3.0.44 релиз наш обмен между не обновляемой УТ и БП, построенный на типовом плане обмена, стал непригодным. Время на восстановление обмена стало не определяемым, поскольку типовой обмен построен так, что код обмена должен совпадать в двух базах, а изменения в типовом обмене были значительны.

Задумка и основа

Хотел сделать как в КД интерактивный ввод алгоритмов и сопоставление реквизитов. Все это можно было и сделать, но для простоты реализации, доработок и отладки решил отказаться. 

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

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

Это мой подарочек сообществу «Инфостарт» ИТ специалистам. За символическую плату).

Что удалось

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

В типовом обмене, чтобы поправить алгоритм обмена, надо было:

  • Выгрузить план обмена из БП
  • Загрузить план обмен в базу конвертации данных
  • Выгрузить новую структуру данных УТ
  • Выгрузить новую структуру данных БП
  • Загрузить новую структуру УТ в план обмена
  • Загрузить новую структуру БП в план обмена
  • Найти и поправить код
  • Выгрузить план обмена 
  • Загрузить новый план обмена в УТ
  • Загрузить новый план обмена в БП

Теперь:

  • Выгрузить обработку, если нет копии
  • Открыть и отредактировать в конфигураторе
  • Загрузить обратно в базу БП

Загрузка отдельных объектов упростилась в разы. 

Часть настроек осуществляется интерактивно.

Удалось значительно упростить код загрузки объектов, обобщить логику получения реквизитов и сопоставления объектов:

  • Для получения значения реквизита любого типа использовать вызов одной обобщенной функции. ОбъектДокумента.Реквизит = ПолучитьЗначениеРеквизита (СОМСсылкаНаДокумент.Реквизит).  Реквизит может иметь один из трех типов объектов: перечисление, справочник, документ. Типы объектов могут быть любых видов определенных в коде программы.
  • Для определения соответствия значений перечислений использовать одну функция.
  • Для определения соответствия типов объектов использовать одну функция.
  • Для загрузки нового объекта определить всего лишь 2- 5 функции, в зависимости от типа объекта. Для поиска, фильтра, загрузки и настройки объектов после загрузки:
  • Добавлять<Тип объекта><ВидОбъекта> - фильтр для добавления в таблицу загрузки в интерактивном режиме.
  • Загружать<Тип объекта><ВидОбъекта> - фильтр для загрузки как в интерактивном так и фоновом режиме
  • Найти<Тип объекта><ВидОбъекта> - поиск объекта при загрузки
  • Загрузить<Тип объекта><ВидОбъекта> - сама загрузка объекта
  • ПослеЗагрузки<Тип объекта><ВидОбъекта> - действия после загрузки объекта

Пример для документа «Авансовый отчет»:

  • ДобавлятьДокументАвансовыйОтчет
  • ЗагружатьДокументАвансовыйОтчет
  • НайтиДокументАвансовыйОтчет
  • ЗагрузитьДокументАвансовыйОтчет
  • ПослеЗагрузкиДокументАвансовыйОтчет

Пример для справочника «Банки»:

  • ДобавлятьСправочникБанки
  • ЗагружатьСправочникБанки
  • НайтиСправочникБанки
  • ЗагрузитьСправочникБанки
  • ПослеЗагрузкиСправочникБанки

Пример для регистра сведений «Ответственные лица организаций»:

  • ЗагружатьОтветственныеЛицаОрганизаций
  • ЗагрузитьОтветственныеЛицаОрганизаций

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

  • себестоимость не переносится;
  • сделки не загружаются;
  • аналитика по складам ведется.

Алгоритм загрузки. 

Поиск объектов

Соответствие объектов в БП объектам в УТ осуществляется по УИД, реквизитам и по регистру сведений «Соответствия объектов информационных баз».

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

Создание новых объектов

Новые объекты в БП создаются с УИД объекта в УТ, для последующего поиска объектов по УИД. В регистр сведений «Соответствия объектов информационных баз» соответствие не проставляются (восстановление типового обмена не предусмотрено).

Статус объектов

Соответствие статусов объектов (пометка удаления проведение) установляется с помощью параметров.

Два вида режима загрузки

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

  1. Загрузка в интерактивном режиме.

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

  1. «Заполнить зарегистрированными изменениями» - добавляются документы, которые зарегистрированы в плане обмена как измененные. Требует ввода доп. параметров: тип обмена (имя обмена в конфигураторе) и код узла обмена.
  2. «Заполнить различными» - добавляются документы, которых нет в приемнике или если есть различие по сумме документа.

Реквизиты документов в интерактивном режиме загружаются если отсутствуют и не обновляются.

Для открытия обработки, у пользователя должна быть роль «Администратор системы».

Ведется лог последней загрузки, который доступен для просмотра на закладке «Лог загрузки».

Реализована функция загрузки справочников "Номенклатура", "Контрагенты". 

  1. Загрузка в фоновом режиме регламентным заданием.

Загрузка в фоновом режиме регламентным заданием позволяет загружать три типа объектов: элементы справочников, документы и записи регистров сведений. Реквизиты документов и справочников загружаются если отсутствуют и не обновляются.

Загрузка регламентным заданием основана на планах обмена, для задействования механизма регистрации изменения объектов. Для определения узла обмена надо указать тип обмена (имя обмена в конфигураторе) и код узла обмена. Для периода выборки загружаемых документов надо ввести «Количество последних дней загрузки». Количество дней включает текущею дату и последний день загрузки (Пример: тек. дата 9 надо загрузить с 2, тогда кол-во дней равно 8). Для платежных банкоских документов прибавляется еще один день (прописано в коде).

Настройки загрузки в фоновом режиме сохраняются в интерактивном режиме. Для удобства все параметры настройки загрузки размещены в одной закладке.

Ведется лог последней загрузки, который записывается в хранилище и доступен для просмотра на закладке «Лог загрузки» после восстановления параметров настройки загрузки фонового задания.

Версия 1.1

Для тех, кто загрузил обработку ранее, пишите в личку email, вышлю новую версию.   

Список доработок:

  • Запрет на выполнение рег. задания при сохранении обработки в справочник внешних обработок.
  • Отмена регистрации объектов, для которых не предусмотрена загрузка
  • Отлажена загрузка справочников "Номенклатура", "Контрагенты", добавлены средства для отбора элементов.
  • Добавлены кнопка для инверсии пометок и кнопка пометки различающихся объектов.
  • Для загрузки реквизитов документов, имеющих тип "Документ" введено ограничение по дате загружаемого документа (для предотвращения разрушения бух отчетности, при открытом периоде на изменение). Если дата документа значения реквизита больше или ровно даты загружаемого документа, то документ создается.
  • Для справочников, для которых предусмотрен ввод элементов в БП, отменен поиск по реквизитам и установки кода по источнику.
  • Для справочников определил обработку процедуры «ПослеЗагрузки»
  • Исправлены ошибки:
    • Не загружались записи регистра "Отвественные лица организаций" 
    • Не загрузался реквизит "Банк" в справочнике "Банковские счета"
    • Не загрузался реквизит "Вид контрагента" в справочнике "Контрагенты"
    • Не верно загружался справочник «Контрагенты» - зацикливание создания, еще не созданного элемента (добавил обработку процедуры «ПослеЗагрузки»).  

       Версия 1.2

Список доработок:

  • Отправка файла лога загрузки на электронную почту по нескольким адресам.
  • Исправлены не значительные ошибки. 

       Версия 1.3

Список доработок:

1)      Добавлен контроль соответствия документов УТ в БП.

Для допуска бухгалтеров к функциям контроля соответствия документов УТ в БП с ограничением доступа к настройкам регламентного задания, добавлен  механизм разграничения доступа пользователей к реквизитам обработки по ролям.

Как настроить права доступа (делал в цейтноте, может кто сделает и лучше):

1.       В режиме конфигуратора в модуле объекта настроить:

1.1.     Определить реквизиты, которые могут быть доступны всем пользователям обработки, т.е. те реквизиты значения, которых могут изменять и сохранять в своих настройках ВСЕ пользователи (переменная мРеквизитыПользователей).

1.2.     Определить роли и доступные им реквизиты из множества реквизитов п.1) (переменная тзПраваРолей).

1.3.     При необходимости в процедуре формы УстановитьДоступностьПользователя() более тонко настроить доступность реквизитов для ролей.

2.       В режиме предприятия ввести пользователей с ролями прав доступа и сохранить список пользователей.

3.       В режиме предприятия для каждого пользователя настроить реквизиты, которые ему не доступны и сохранить настройку пользователя (пользователь может сохранять свои настройки).

 

2)      По просьбе гл. бух., для документов «Реализация товаров и услуг» введена константа «Номенклатурная группа реализаций». Если константа не заполнена, то загружается из УТ.

3)     Исправлены ошибки:

·        При выгрузке набора в реализации, рвало на копейки.

·        В некоторых реализациях разбивало позицию номенклатуры на две.

       Версия 1.4

Список доработок:
  1. Расширен алгоритм для загрузки одного документа несколькими
  2. Добавлена загрузка документа «Оприходование товара»  -> «Поступление из переработки»
  3. Добавлена загрузка документа «Комплектация номенклатуры» ->  «Отчет производства за смену» + «Требование накладная». В комментарии документа «Комплектация номенклатуры» надо проставит строку «#Производство», иначе загрузиться просто «Комплектация номенклатуры».
  4. Добавлен контроль соответствия суммы НДС
  5. Настроена загрузка групп справочников 

Скачать файлы

Наименование Файл Версия Размер
Внешняя обработка для загрузки документов из УТ 10 в БП 3 1.4
.epf 120,85Kb
16.05.17
6
.epf 1.4 120,85Kb 6 Скачать

См. также

Комментарии
1. Вадим Никонов (V.Nikonov) 115 16.11.16 12:02 Сейчас в теме
Несколько уточнений: Как решена проблема перегрузки Закрытых периодов? Поддерживаются Закрытие периода в Приемнике?
2. Виктор Ким (victorkim64) 71 17.11.16 05:01 Сейчас в теме
(1) V.Nikonov, Конечно поддерживается. Сперва грузите, потом закрываете.

Для пользователя выполняющему загрузку, как в интерактивном режиме так и фоновом режиме должна быть установлена дата запрета изменения данных.

Период выборки документов:

Для фонового режима период выборки загружаемых документов определяется реквизитом «Количество последних дней загрузки». Количество дней включает текущею дату и последний день загрузки (Пример: тек. дата 9 надо загрузить с 2, тогда кол-во дней равно 8). У нас стоит 2, при выполнении регламентного задания ночью, у нас грузиться последний день. Для платежных документов два последних дня (в коде добавляется еще один день).

Для интерактивного режима период выборки осуществляется двумя реквизитами начало периода и конец периода.

Для загрузки реквизитов документов, имеющих тип "Документ" (сделки, предоплаты) введено ограничение по дате загружаемого документа (для предотвращения разрушения бух отчетности, при открытом периоде на изменение). Если дата документа значения реквизита больше или ровно даты загружаемого документа, то документ реквизита создается, иначе только ссылка.

Регулируйте этими параметрами, чтобы не разрушить закрытые периоды. При загрузки документов в закрытый период, весь типовой функционал в БП по закрытию месяцев становится актуальным.
3. Виктор Ким (victorkim64) 71 21.11.16 14:51 Сейчас в теме
Не понятно всего 393 просмотров, за месяц 33 а публикация существует меньше месяца... уже сомнения может и скачиваний больше, о которых я не знаю
Прикрепленные файлы:
4. Kida Kida (kida1) 91 27.01.17 22:48 Сейчас в теме
Цена высоковата. Видно что обработку делали тщательно и аккуратно, но 10sm не каждый отдаст.
5. Kida Kida (kida1) 91 27.01.17 22:51 Сейчас в теме
Для типовых УТ 10.3.37.5 и БП 3.0.46.16 взлетит?
6. Виктор Ким (victorkim64) 71 28.01.17 03:47 Сейчас в теме
(5) Должна взлететь, у нас на последней версии БП 3.0 (обновления автоматом) работает и УТ правда доработана, но там только основные типовые реквизиты используются.

Можете что и свое допилить. В отличие от типового обмена на КД, алгоритм устойчив к обновлениям БП. Единственно если только какой ни будь реквизит переименуют или удалят. В этом случае, в отличие от КД, все намного проще поправляется, заходишь в обработку и меняешь в одном месте.
7. Виктор Ким (victorkim64) 71 04.02.17 07:02 Сейчас в теме
(4) Не думаю, что 150 рубликов дороговато... скоро более отлаженную версию выложу на деньги, рубликов так за 700 и наложу защиту... а данные выкладки конечно же удалю...
8. Kida Kida (kida1) 91 04.02.17 11:01 Сейчас в теме
Ж) учитывая количество скачиваний (1076 просмотров из них 5 скачали) обработка будет пользоваться популярностью. ИМХО я не сторонник коммерцонализации помощи соратникам по 1С. Конечно это ваша обработка, ваш интеллектуальный труд и вы устанавливаете цену...
9. Виктор Ким (victorkim64) 71 04.02.17 14:32 Сейчас в теме
(8) Вас лично я не агитирую покупать... :) Это видать уже халявную распространили... нечего, добавить защиту, чуть универсальной сделать и чуть рекламы и покатит...
10. lefthander lefthander (lefthander) 04.02.17 14:59 Сейчас в теме
(7) 150? А разве 10 см стоит 150? Нет, я не обсуждаю дорого или нет, я уточняю, что не 150.
11. Виктор Ким (victorkim64) 71 04.02.17 17:58 Сейчас в теме
(10) По внутреннему курсу на бирже 1см = 14.7, 147 р, я грубо округлил... не знаю для под пищиков оно может и дороже будет...
12. lefthander lefthander (lefthander) 04.02.17 23:19 Сейчас в теме
(11)я в 2016 году приобрел 10 см за 1200 руб. Сейчас вроде дороже. Так что на счет "вроде не дорого" весьма спорное утверждение. Что касается меня, я подобные перегрузки пишу за 4-5 часов в зависимости от конфигураций и состава документов. Моим клиентам не нужна универсальность. ;)
13. Виктор Ким (victorkim64) 71 05.02.17 03:49 Сейчас в теме
(12) Вы гений тогда, или Космос... :) А я см ни когда не покупал...
14. Ирина (Shico) 20 09.03.17 15:40 Сейчас в теме
Документ "Отчет о розничных продажах" отсутствует. Его можно добавить?
15. Виктор Ким (victorkim64) 71 09.03.17 17:23 Сейчас в теме
(14) Если малость спонсируете то возможно... знаете за 10$ (8.60) = 140 р. не хочется тратить пару дней, примерно 10 часов чистой работы, ну может чуточку быстрее с напрягом... И то что не в архиве это больше демо... напишите email в личку вышлю последнею версию...
16. Ирина (Shico) 20 13.03.17 16:01 Сейчас в теме
Спасибо, сама добавила. Времени ушло гораздо меньше.
17. Виктор Ким (victorkim64) 71 13.03.17 18:01 Сейчас в теме
(16) Я рад, что у вас все получилось и вы быстро разобрались с кодом. :)
18. Ирина (Shico) 20 15.03.17 14:58 Сейчас в теме
Обнаружила следующее обстоятельство: если в УТ кто-то есть, то обмен не происходит. Это нормально?
19. Виктор Ким (victorkim64) 71 15.03.17 20:22 Сейчас в теме
(18) Нет, от этого не зависит. Я постоянно, в течении рабочего дня, делаю загрузку по требованию бухов. В двух базах как минимум по пять человек сидит. Может кто-то монопольно сидит. У нас базы серверные, да и файловой базе не должно быть проблем.
Оставьте свое сообщение