Отбор документов при выгрузке из УТ 10.3 в БП 2.0 и БП 3.0 по типовым механизмам обмена (Без доработок конфигурации)


Обработка позволяет выполнять отбор документов при выгрузке данных из УТ 10.3 в БП 3.0 и в БП 2.0.

28.04.2013. Обновил обработку для обмена с Бухгалтерией предприятия 3.0.

 По сравнению с прошлой версией в обработку добавлено:

  1. Отбор по организации — при выборе будут выгружаться только документы данной организации;
  2. Возможность просмотра зарегистрированных объектов плана обмена;
  3. Сохранение установленных отборов.
 

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

Использование «левых», доработанных правил обмена усложняет поддержку обмена — при изменении конфигураций требуется переделка правил. В данной настройке используются типовые правила обмена.

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

Настройка фильтрует только документы, т.к. по практике выгрузка справочника проблем не вызывает. Если кому-то требуется фильтровать другие объекты базы — пишите в комментарии.

При обмене с БП 2.0. возможна настройка двумя способами: с доработками конфигурации УТ и без доработок.

При использовании БП 3.0 доработка конфигурации не предполагается.

 

Перед использованием обработки в УТ должен быть настроен обмен с БП стандартными средствами.

Использование настройки без доработок УТ.

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

Необходимо помнить, что в таком случае обмен нужно делать только из обработки, иначе — фильтрация документов производиться не будет. При использовании обмена с БП 2.0 способов запустить обмен довольно-таки много — из справочника «Настройка обмена данными», из общей формы «Выполнение обмена данными», из монитора обмена — поэтому ниже предложен вариант доработки УТ.

 

С небольшими доработками конфигурации УТ (для обмена с БП 2.0).

1. В процедуру ПроцедурыОбменаДанными.ВыполнитьОбменДаннымиПоПроизвольнойНастройке() 

добавляем кусок кода выделенный жирным (то, что между линиями):

Процедура ВыполнитьОбменДаннымиПоПроизвольнойНастройке(НастройкаОбменаДанными, РучнойЗапускОбменов = Истина,
                 ОбработкаАвтообменаНаКлиенте = Неопределено, Знач СоответствиеТекстовЭлектронныхПисем = Неопределено,                   ЗначОбменПриВходеВПрограмму = Ложь) Экспорт

Если ТипЗнч(НастройкаОбменаДанными) = Тип(«СправочникСсылка.НастройкиОбменаДанными») Тогда

         Если НЕ ЗначениеЗаполнено(НастройкаОбменаДанными) Тогда
              Возврат;
         КонецЕсли;


//Фильтрация выгрузки
Если ТипЗнч(НастройкаОбменаДанными.УзелИнформационнойБазы) =  Тип(«ПланОбменаСсылка.ОбменУправлениеТорговлейБухгалтерияКОРП») Тогда

          ФормаВыбораПериода = ПолучитьОбщуюФорму(«ФормаВыбораПериодаВыгрузки»);
          ФормаВыбораПериода.Узел = НастройкаОбменаДанными.УзелИнформационнойБазы;
          ФормаВыбораПериода.НастройкаОбменаДанными = НастройкаОбменаДанными; 

          ФормаВыбораПериода.ФормаОткрытаИзПроцедурыОбмена= Истина; 

           Если ФормаВыбораПериода.ОткрытьМодально() <> КодВозвратаДиалога.ОК Тогда
                  Возврат;
           КонецЕсли;

КонецЕсли;
//Фильтрация выгрузки



2. В конфигурацию добавляем общую форму «ФормаВыбораПериодаВыгрузки».

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

 

Примечание:

Вы понимаете, что после непосредственного удаления объекта невозможно получить информацию о реквизитах объекта. Т.е. отфильтровать удаленные документы нельзя — в программе сохранена лишь ссылка на удаленный объект.

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

 

42 Comments

  1. artspeed
    2. В процедуру ПроцедурыОбменаДанными.ВыполнитьОбменДаннымиПоПроизвольнойНастройке()

    Не совсем понятно где это процедура находится…

    Reply
  2. Wrols

    Изменения вносятся в конфигурацию УТ.

    Процедура находится в общем модуле ПроцедурыОбменаДанными.

    Reply
  3. aronskiy

    Ага, и при каждом обновлении всё это будет слетать.

    Reply
  4. CnupT

    (3) aronskiy,

    Ну… Обновления УТ 10.3 выходят, как бы по мягче сказать, не часто, можно это в расчет не брать.

    Да и очень не многие организации оставили свою УТ типовой.

    В целом, считаю статью автора полезной.

    Единственный вопрос/предложение, почему бы не сделать это в чистом виде внешней обработкой?

    Reply
  5. aronskiy

    Я согласен, статья автора полезна. Однозначно +.

    Но также у многих типовые базы. И поэтому (соглашусь с CnupT) в чистом виде внешняя обработка гораздо удобней.

    Reply
  6. v_clim

    А как сделать возможность выбора либо штатный обмен, либо с фильтром?

    Reply
  7. Performer

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

    Reply
  8. Wrols

    (4)

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

    Это может быть не очень удобно и надежно.

    Причина тому — в конфигурации много мест откуда можно вызвать обмен данными: из формы списка справочника «Настройки обмена данными», из формы элемента спр «Настройки обмена данными», из монитора обмена данными, из обработки обменов данными и прочее.

    Пользователь может нажать где угодно. И получится, что обмен пройдет без фильтрации.

    Поэтому и приходится изменять конфигурацию УТ.

    Я исходил из того, что УТ настраивают под себя и она не является типовой.

    (3)

    Да, при обновлении конфигурации, конечно же, это нужно учесть.

    Общая форма останется в любом случае, а общий модуль — обновить аккуратно.

    Reply
  9. Wrols

    (6) v_clim,

    Простым видится такой вариант — на общей форме разместить еще одну кнопку типа «Штатный обмен».

    При нажатии — просто закрывать форму с кодом:

    Закрыть(КодВозвратаДиалога.ОК);

    Т.е. в таком случае не выполнется процедура по изменению регистрации.

    ВыполнитьРегистрациюИзмененийДокументовЗаПериодВыгрузки(ТаблицаДокументов, НачПериода, КонПериода);

    Reply
  10. antares_of

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

    Reply
  11. alma-soft

    согласен с тем что измененние торговли не так страшно как конфигурации бухгалтерии тем более 10.3 у меня релиз 10.3.14.3 доработат во многих позициях поэтому считаю мысль настройки грамотного обмена документами за период правильной, смущает только настройка правильности выгрузки- загрузки документов типа Комплектация, при выгрузке постоянно что нибудь теряется, также болезно былобы добавить синхронизацию справочников исключая код, столкнулись с такой проблемой при переносе данных из 7 торговли в 8.2 редакции 10.3, количество символов в коде разное а до момента перехода данные выгружались из 7 автору спасибо за труд

    Reply
  12. Zas1402
    Я согласен, статья автора полезна. Однозначно +.

    Но также у многих типовые базы. И поэтому (соглашусь с CnupT) в чистом виде внешняя обработка гораздо удобней.

    также +1

    Reply
  13. DTimkin

    Небольшое уточнение: данную настройку можно в рабочую базу добавить, где уже есть куча документов или же необходимо сначала доработать чистую УТ, а потом в ней работать?

    Reply
  14. Wrols

    (14) DTimkin, настройку можно выполнить в рабочей базе с уже существующими документами. Фильтр будет срабатывать именно в момент выгрузки.

    Reply
  15. DTimkin

    (15) Спасибо! )

    Reply
  16. zbruy

    ЭЭЭ… а объясните для тупых.

    Мои действия в конфе УТ 10.3.14.3:

    Дописал код в общие модули->ПроцедурыОбменаДанными->Процедура ВыполнитьОбменДаннымиПоПроизвольнойНастройке.

    в конец указанной процедуры.

    А что делать потом? Если » 3. В конфигурацию УТ добавляем общую форму «ФормаВыбораПериодаВыгрузки».» то что в нее писать и где? Не пустую же создавать, а то у меня она пустая)

    И что делать со скачанным файлом, глянул его в конфиге — ничего интересного не обнаружил) Открыл в клиенте, там пишет «{ВнешняяОбработка.ФормаНастройкиВыгрузки.МодульОбъекта(45,4)}: Процедура или функция с указанным именем не определена (ВыполнитьОбменПоНастройке)

    <<?>>ВыполнитьОбменПоНастройке(НастройкаОбменаДанными, РучнойЗапускОбменов,


    «

    Reply
  17. Wrols

    (17) zbruy, из внешней обработки форму можно скопировать в буфер обмена и вставить из буфера обмена в ветку «Общие формы» конфигурации. Т.о. в конфигурацию будет добавлена форма со всеми элементами и текстом модуля.

    В модуле обработки находится текст процедуры «общие модули->ПроцедурыОбменаДанными->Процедура ВыполнитьОбменДаннымиПоПроизвольнойНастройке». Текст процедуры приведен для того, чтобы понять куда именно вставлять кусок кода, приведенный в публикации.

    Reply
  18. kit

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

    Reply
  19. zbruy

    (19) спасибо, когда возникнет производственная необходимость в очередной перегрузке — буду пробовать)

    Reply
  20. pkv11

    Автору статьи:

    Добавь в статью, что кусок кода надо в начало процедуры добавить 🙂

    А то сначала в конец всунул…

    Reply
  21. Ламия

    не очень удобно, что код править надо

    Reply
  22. Wrols

    (23) Ламия, совершенно согласен. Если бы была возможность сделать без правки кода — было бы без правки.

    Ранее писал:

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

    Это может быть не очень удобно и надежно.

    Причина тому — в конфигурации много мест откуда можно вызвать обмен данными: из формы списка справочника «Настройки обмена данными», из формы элемента спр «Настройки обмена данными», из монитора обмена данными, из обработки обменов данными и прочее.

    Пользователь может нажать где угодно. И получится, что обмен пройдет без фильтрации.

    Поэтому и приходится изменять конфигурацию УТ.

    Я исходил из того, что УТ настраивают под себя и она не является типовой.

    Reply
  23. Wrols

    (22) pkv11, сделал 😉

    Reply
  24. alonzomozley

    Спасибо.

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

    Reply
  25. krund

    Интересный вариант доработки программы. Хотя конечно не хотелось бы дорабатывать программу и было бы намного удобнее через внешнюю обработку (например для базовой версии).

    Но автору всё равно спасибо. В крайнем случае этот вариант можно использовать.

    Reply
  26. alex1077

    спасибо, попробуем

    Reply
  27. Wrols

    (26) alonzomozley, рад помочь 😉

    Совсем не уверен стоит ли фильтровать первоначальную выгрузку…Там же происходить синхронизация…

    Интересно узнать мнение коллег — нужно ли добавить фильтр по справочникам и РС…

    Опрошу в публикации…

    Reply
  28. alonzomozley

    (29)

    В моём случае как раз и хотелось избежать синхронизации — ну уж очень много лишней номенклатуры и контрагентов в УТ было. А так выгружается только по ссылкам из документов движения.

    Reply
  29. Wrols

    (27) krund, теперь возможно использовать фильтр без доработки конфигурации

    Reply
  30. Wrols

    (30) alonzomozley, я так понимаю — в базе бухгалтерии до настройки обмена нет данных для синхронизации.

    Мне кажется — это частный случай. Думаю не стоит давать такой инструмент в общее пользование, т.к. уровень грамотности пользователей разный…

    Reply
  31. kit

    Спасибо автору! пригодилось.

    Reply
  32. megaalex

    + однозначно! идея отличная.

    Уточните, по механизму:

    как конкретно корректируется регистрация для обмена?

    1.на существующую регистрацию накладываем фильтры или

    2.сняли всю регистрацию, и с учетом фильтров (в т.ч. и по п

    Reply
  33. DragonAgo

    megaalex, хороший вопрос! Как происходит процесс отбора данных? Что с регистрацией объектов в данном случае?

    Reply
  34. Wrols

    (34) megaalex, Существующая регистрация документов полностью очищается. Регистрация справочников остается без изменений

    Reply
  35. Wrols

    (35) DragonAgo, не понял твой вопрос.

    Reply
  36. BTRVODKA

    Спасибо автору за публикацию!

    Reply
  37. &rew

    Идея хороша. Автору +. Непонятно почему в 1с до этого не додумались. Хотя, возможно, потому что есть универсальный обмен данными в формате XML и можно правила выгрузить из конфы, подточить напильником и использовать. Но это как говориться «не то пальто».

    Reply
  38. Wrols

    (39) &rew, спасибо за оценку! Правила обмена напильником просто не переделаешь, они на план обмена подвязаны.

    А по поводу фирмы 1С: если я не ошибаюсь подобный подход реализован в УНФ — т.е. 1С-ка двигается к этому )

    Reply
  39. verano

    Спасибо за обработку.

    Но у меня при попытке выгрузить выдало ошибку:

    {Форма.ФормаВыбораПериодаВыгрузки.Форма(55)}: Ошибка при вызове метода контекста (УдалитьРегистрациюИзменений)

    ПланыОбмена.УдалитьРегистрациюИзменений(Узел, ОбъектМетаданных);

    по причине:

    Несоответствие типов (параметр номер ‘1’)

    Я сделала выборку по «поступление товаров», по одному поставщику и за определенное время.

    Что я не так сделала?

    Reply
  40. Alexei_fox

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

    Reply
  41. Alexei_fox

    И еще полезным бы было сохранение последних настроек.

    Reply
  42. Wrols

    (42) Alexei_fox, спасибо за оценку!

    С какой версией бухгалтерии потребовался первоначальный обмен?

    Reply

Leave a Comment

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