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










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

Сокращения

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

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

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

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

Мотивация

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

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

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

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

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

Это мой подарочек сообществу «Инфостарт» ИТ специалистам. За символическую плату). Обработка относится к разряду тех обработок, которые поставил и забыл. Не чувствительна к обновлениям в БП.  Вот уже, как полгода в неё не залазил, если не считать дополнений в функционал.

Что удалось

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

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

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

Теперь:

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

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

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

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

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

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

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

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

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

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

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

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

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

Как внедрить. 

Если ранее обмен между базами был настроен штатными средствами с использованием плана обмена, то достаточно в параметрах указать план обмена.

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

Если ранее обмен между базами был настроен не штатными средствами с использованием обработок, то для исключения дубликатов элементов справочников и документов придется для всех видов справочников и документов прописать функции поиска НайтиСправочник<Вид справочника>, НайтиДокумент<Вид документа>. Например для справочника "Банки" — НайтиСправочникБанки. В коде, шаблоны этих функций присутствуют. И для загрузки в фоновом режиме регламентным заданием придется, либо ввести план обмена, либо переделать процедуру загрузки регламентным заданием.

Какие коллизии могут возникнут и как их устранить.

За все время использования, была единственная проблема, это изменение соответствия объектов в базах обмена, которая появлялась после перегрузки в БП за двоенных контрагентов из УТ. Необходимо было сделать перегрузку на одного из контрагентов в БП.  

Устранение коллизии:

  • Если соответствие «правильных» контрагентов в УТ и БП есть (проверяется просто, этой же обработкой, если при заполнении объект найден в БП), то перенести данные с одного контрагента на «правильный» штатной обработкой 1С
  • Если соответствие «правильных» контрагентов в УТ и БП нет, то проставить соответствие в регистре сведений «Соответствия объектов информационных бах» в базе БП (код для определения УИД можно найти в этой же обработке) и перенести данные с одного контрагента на «правильный» штатной обработкой 1С. Эти действия можно так же применить для устранения битых ссылок.

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

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

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

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

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

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

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

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

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

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

  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. Настроена загрузка групп справочников 

 Версия 1.5

Список доработок:
  1. Добавлена загрузка документа «Списание товаров»
  2. Добавлена роль "Кассир"
  3. Добавлена загрузка док. "Заказ покупателя" -> "Счет на оплату покупателю", при загрузки док. "ПКО", для печати номенклатуры в чеке.

31 Comments

  1. V.Nikonov

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

    Reply
  2. victor_k

    (1) V.Nikonov, Конечно поддерживается. Сперва грузите, потом закрываете.

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

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

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

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

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

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

    Reply
  3. victor_k

    Не понятно всего 393 просмотров, за месяц 33 а публикация существует меньше месяца… уже сомнения может и скачиваний больше, о которых я не знаю

    Reply
  4. kida1

    Цена высоковата. Видно что обработку делали тщательно и аккуратно, но 10sm не каждый отдаст.

    Reply
  5. kida1

    Для типовых УТ 10.3.37.5 и БП 3.0.46.16 взлетит?

    Reply
  6. victor_k

    (5) Должна взлететь, у нас на последней версии БП 3.0 (обновления автоматом) работает и УТ правда доработана, но там только основные типовые реквизиты используются.

    Можете что и свое допилить. В отличие от типового обмена на КД, алгоритм устойчив к обновлениям БП. Единственно если только какой ни будь реквизит переименуют или удалят. В этом случае, в отличие от КД, все намного проще поправляется, заходишь в обработку и меняешь в одном месте.

    Reply
  7. victor_k

    (4) Не думаю, что 150 рубликов дороговато… скоро более отлаженную версию выложу на деньги, рубликов так за 700 и наложу защиту… а данные выкладки конечно же удалю…

    Reply
  8. kida1

    Ж) учитывая количество скачиваний (1076 просмотров из них 5 скачали) обработка будет пользоваться популярностью. ИМХО я не сторонник коммерцонализации помощи соратникам по 1С. Конечно это ваша обработка, ваш интеллектуальный труд и вы устанавливаете цену…

    Reply
  9. victor_k

    (8) Вас лично я не агитирую покупать… 🙂 Это видать уже халявную распространили… нечего, добавить защиту, чуть универсальной сделать и чуть рекламы и покатит…

    Reply
  10. lefthander

    (7) 150? А разве 10 см стоит 150? Нет, я не обсуждаю дорого или нет, я уточняю, что не 150.

    Reply
  11. victor_k

    (10) По внутреннему курсу на бирже 1см = 14.7, 147 р, я грубо округлил… не знаю для под пищиков оно может и дороже будет…

    Reply
  12. lefthander

    (11)я в 2016 году приобрел 10 см за 1200 руб. Сейчас вроде дороже. Так что на счет «вроде не дорого» весьма спорное утверждение. Что касается меня, я подобные перегрузки пишу за 4-5 часов в зависимости от конфигураций и состава документов. Моим клиентам не нужна универсальность. 😉

    Reply
  13. victor_k

    (12) Вы гений тогда, или Космос… 🙂 А я см ни когда не покупал…

    Reply
  14. Shico

    Документ «Отчет о розничных продажах» отсутствует. Его можно добавить?

    Reply
  15. victor_k

    (14) Если малость спонсируете то возможно… знаете за 10$ (8.60) = 140 р. не хочется тратить пару дней, примерно 10 часов чистой работы, ну может чуточку быстрее с напрягом… И то что не в архиве это больше демо… напишите email в личку вышлю последнею версию…

    Reply
  16. Shico

    Спасибо, сама добавила. Времени ушло гораздо меньше.

    Reply
  17. victor_k

    (16) Я рад, что у вас все получилось и вы быстро разобрались с кодом. 🙂

    Reply
  18. Shico

    Обнаружила следующее обстоятельство: если в УТ кто-то есть, то обмен не происходит. Это нормально?

    Reply
  19. victor_k

    (18) Нет, от этого не зависит. Я постоянно, в течении рабочего дня, делаю загрузку по требованию бухов. В двух базах как минимум по пять человек сидит. Может кто-то монопольно сидит. У нас базы серверные, да и файловой базе не должно быть проблем.

    Reply
  20. yxo

    Не открывается. Тупо ничего не происходит при открытии обработки. Может что-то не так делаю?

    Reply
  21. yxo

    У вас нет прав использовать эту обработку! пишет

    Reply
  22. yxo

    Вообщем, если пользователя НЕ зовут Администратор — не запускается. Копаю дальше.

    Reply
  23. victor_k

    (22) В этой обработке введена система ограничений на её использование (дабы случайно не попортили отчетность в бухгалтерии) надо зайти под пользователем «Администратор» и определить пользователей с определенной ролью «Касса» или «Полные права»… Сперва надо ввести и сохранить пользователя, потом установить все настройки, которые ему будут недоступны (настройка соединения… ) и сохранить его настройки… при сохранении настройки пользователя строка пользователя должна быть выделена

    Reply
  24. yxo

    (23) Понял. Спасибо!

    Reply
  25. cmpros78

    Доброго времени суток. Разработчику — на БП 3.0.49.27 обработка не запускается.

    Reply
  26. cmpros78

    Вопрос снят.

    Reply
  27. cmpros78

    Неплохо бы добавить инструкцию. Подключиться к Торговле так и не получилось.

    Reply
  28. victor_k

    ок, завтра отвечу детально

    Reply
  29. victor_k

    (27) Базы УТ и БП должны быть установлены на одном сервере (обмен с установкой баз на разных серверах не тестировался). На закладке соединение вводите: имя сервера, имя базы (то что заполняется в окне запуска 1С при регистрации базы 1С), имя пользователя базы 1С и его пароль. Если торговля файловая, то вместо имени сервера и имени базы вводится каталог базы торговли.

    Reply
  30. lordguard

    Ошибка СОМ подключения!{ВнешняяОбработка.Обмен_УТ_Бух30.МодульОбъекта(469)}: Ошибка при вызове конструктора (COMОбъект): -2147221164(0x80040154): Класс не зарегистрирован

    Заполнение завершено! Время: 0/0:0:0

    не подскажите в чем прчина?

    Reply
  31. victor_k

    (30) Зарегистрируйте dll COM объекта… (инструкций в интернете полно) вообще, при установки платформы 1С при выборе соответствующих галочек, COM объект устанавливается автоматом…

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *