Отбор документов при выгрузке из УТ 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 не будет опубликован. Обязательные поля помечены *