28.04.2013. Обновил обработку для обмена с Бухгалтерией предприятия 3.0.
По сравнению с прошлой версией в обработку добавлено:
- Отбор по организации — при выборе будут выгружаться только документы данной организации;
- Возможность просмотра зарегистрированных объектов плана обмена;
- Сохранение установленных отборов.
Нередко встречаются компании, в которых бухгалтерам требуется выгрузка не всех измененных данных из УТ, а лишь документов за определенный период.
Использование «левых», доработанных правил обмена усложняет поддержку обмена — при изменении конфигураций требуется переделка правил. В данной настройке используются типовые правила обмена.
Суть настройки заключается в том, что при выполнении обмена происходит корректировка регистрации изменений плана обмена.
Настройка фильтрует только документы, т.к. по практике выгрузка справочника проблем не вызывает. Если кому-то требуется фильтровать другие объекты базы — пишите в комментарии.
При обмене с БП 2.0. возможна настройка двумя способами: с доработками конфигурации УТ и без доработок.
При использовании БП 3.0 доработка конфигурации не предполагается.
Перед использованием обработки в УТ должен быть настроен обмен с БП стандартными средствами.
Использование настройки без доработок УТ.
В таком варианте используем приложенную обработку. В обработке фильтруем документы и выполняем обмен.
Необходимо помнить, что в таком случае обмен нужно делать только из обработки, иначе — фильтрация документов производиться не будет. При использовании обмена с БП 2.0 способов запустить обмен довольно-таки много — из справочника «Настройка обмена данными», из общей формы «Выполнение обмена данными», из монитора обмена — поэтому ниже предложен вариант доработки УТ.
С небольшими доработками конфигурации УТ (для обмена с БП 2.0).
1. В процедуру ПроцедурыОбменаДанными.ВыполнитьОбменДаннымиПоПроизвольнойНастройке()
добавляем кусок кода выделенный жирным (то, что между линиями):
Процедура ВыполнитьОбменДаннымиПоПроизвольнойНастройке(НастройкаОбменаДанными, РучнойЗапускОбменов = Истина,
ОбработкаАвтообменаНаКлиенте = Неопределено, Знач СоответствиеТекстовЭлектронныхПисем = Неопределено, ЗначОбменПриВходеВПрограмму = Ложь) Экспорт
Если ТипЗнч(НастройкаОбменаДанными) = Тип(«СправочникСсылка.НастройкиОбменаДанными») Тогда
Если НЕ ЗначениеЗаполнено(НастройкаОбменаДанными) Тогда
Возврат;
КонецЕсли;
//Фильтрация выгрузки
Если ТипЗнч(НастройкаОбменаДанными.УзелИнформационнойБазы) = Тип(«ПланОбменаСсылка.ОбменУправлениеТорговлейБухгалтерияКОРП») Тогда
ФормаВыбораПериода = ПолучитьОбщуюФорму(«ФормаВыбораПериодаВыгрузки»);
ФормаВыбораПериода.Узел = НастройкаОбменаДанными.УзелИнформационнойБазы;
ФормаВыбораПериода.НастройкаОбменаДанными = НастройкаОбменаДанными;
ФормаВыбораПериода.ФормаОткрытаИзПроцедурыОбмена= Истина;
Если ФормаВыбораПериода.ОткрытьМодально() <> КодВозвратаДиалога.ОК Тогда
Возврат;
КонецЕсли;
КонецЕсли;
//Фильтрация выгрузки
2. В конфигурацию добавляем общую форму «ФормаВыбораПериодаВыгрузки».
В приложенной обработке содержится форма, которую нужно перенести в общие формы.
Примечание:
Вы понимаете, что после непосредственного удаления объекта невозможно получить информацию о реквизитах объекта. Т.е. отфильтровать удаленные документы нельзя — в программе сохранена лишь ссылка на удаленный объект.
Т.о. после удаления документа в УТ, документ в БП будет помечен на удаление, несмотря на установленные фильтры перегрузки.
Не совсем понятно где это процедура находится…
Изменения вносятся в конфигурацию УТ.
Процедура находится в общем модуле ПроцедурыОбменаДанными.
Ага, и при каждом обновлении всё это будет слетать.
(3) aronskiy,
Ну… Обновления УТ 10.3 выходят, как бы по мягче сказать, не часто, можно это в расчет не брать.
Да и очень не многие организации оставили свою УТ типовой.
В целом, считаю статью автора полезной.
Единственный вопрос/предложение, почему бы не сделать это в чистом виде внешней обработкой?
Я согласен, статья автора полезна. Однозначно +.
Но также у многих типовые базы. И поэтому (соглашусь с CnupT) в чистом виде внешняя обработка гораздо удобней.
А как сделать возможность выбора либо штатный обмен, либо с фильтром?
Обработка хороша, особенно, если учесть что бухгалтерия каждый месяц обновляется и не нужно замарачиваться с внешней обработкой, каждый раз как изменились правила обмена.
(4)
Если делать через внешнюю обработку, то получается, что и вызов обмена должен осуществлять только из этой внешней обработки.
Это может быть не очень удобно и надежно.
Причина тому — в конфигурации много мест откуда можно вызвать обмен данными: из формы списка справочника «Настройки обмена данными», из формы элемента спр «Настройки обмена данными», из монитора обмена данными, из обработки обменов данными и прочее.
Пользователь может нажать где угодно. И получится, что обмен пройдет без фильтрации.
Поэтому и приходится изменять конфигурацию УТ.
Я исходил из того, что УТ настраивают под себя и она не является типовой.
(3)
Да, при обновлении конфигурации, конечно же, это нужно учесть.
Общая форма останется в любом случае, а общий модуль — обновить аккуратно.
(6) v_clim,
Простым видится такой вариант — на общей форме разместить еще одну кнопку типа «Штатный обмен».
При нажатии — просто закрывать форму с кодом:
Закрыть(КодВозвратаДиалога.ОК);
Т.е. в таком случае не выполнется процедура по изменению регистрации.
ВыполнитьРегистрациюИзмененийДокументовЗаПериодВыгрузки(ТаблицаДокументов, НачПериода, КонПериода);
В отношении взаимодействия торговли и бухгалтерии, такая реализация весьма полезна, а то что торговля будет изменена, это не так страшно, ведь обновления на торговлю выходят действительно реже чем на другие конфигурации
согласен с тем что измененние торговли не так страшно как конфигурации бухгалтерии тем более 10.3 у меня релиз 10.3.14.3 доработат во многих позициях поэтому считаю мысль настройки грамотного обмена документами за период правильной, смущает только настройка правильности выгрузки- загрузки документов типа Комплектация, при выгрузке постоянно что нибудь теряется, также болезно былобы добавить синхронизацию справочников исключая код, столкнулись с такой проблемой при переносе данных из 7 торговли в 8.2 редакции 10.3, количество символов в коде разное а до момента перехода данные выгружались из 7 автору спасибо за труд
Но также у многих типовые базы. И поэтому (соглашусь с CnupT) в чистом виде внешняя обработка гораздо удобней.
также +1
Небольшое уточнение: данную настройку можно в рабочую базу добавить, где уже есть куча документов или же необходимо сначала доработать чистую УТ, а потом в ней работать?
(14) DTimkin, настройку можно выполнить в рабочей базе с уже существующими документами. Фильтр будет срабатывать именно в момент выгрузки.
(15) Спасибо! )
ЭЭЭ… а объясните для тупых.
Мои действия в конфе УТ 10.3.14.3:
Дописал код в общие модули->ПроцедурыОбменаДанными->Процедура ВыполнитьОбменДаннымиПоПроизвольнойНастройке.
в конец указанной процедуры.
А что делать потом? Если » 3. В конфигурацию УТ добавляем общую форму «ФормаВыбораПериодаВыгрузки».» то что в нее писать и где? Не пустую же создавать, а то у меня она пустая)
И что делать со скачанным файлом, глянул его в конфиге — ничего интересного не обнаружил) Открыл в клиенте, там пишет «{ВнешняяОбработка.ФормаНастройкиВыгрузки.МодульОбъекта(45,4)}: Процедура или функция с указанным именем не определена (ВыполнитьОбменПоНастройке)
<<?>>ВыполнитьОбменПоНастройке(НастройкаОбменаДанными, РучнойЗапускОбменов,
«
(17) zbruy, из внешней обработки форму можно скопировать в буфер обмена и вставить из буфера обмена в ветку «Общие формы» конфигурации. Т.о. в конфигурацию будет добавлена форма со всеми элементами и текстом модуля.
В модуле обработки находится текст процедуры «общие модули->ПроцедурыОбменаДанными->Процедура ВыполнитьОбменДаннымиПоПроизвольнойНастройке». Текст процедуры приведен для того, чтобы понять куда именно вставлять кусок кода, приведенный в публикации.
Публикация однозначно полезная, очень часто бывают ситуации, когда нужно перегрузить документы из УТ в Бух только за определенный период. Автору спасибо!
(19) спасибо, когда возникнет производственная необходимость в очередной перегрузке — буду пробовать)
Автору статьи:
Добавь в статью, что кусок кода надо в начало процедуры добавить 🙂
А то сначала в конец всунул…
не очень удобно, что код править надо
(23) Ламия, совершенно согласен. Если бы была возможность сделать без правки кода — было бы без правки.
Ранее писал:
Если делать через внешнюю обработку, то получается, что и вызов обмена должен осуществлять только из этой внешней обработки.
Это может быть не очень удобно и надежно.
Причина тому — в конфигурации много мест откуда можно вызвать обмен данными: из формы списка справочника «Настройки обмена данными», из формы элемента спр «Настройки обмена данными», из монитора обмена данными, из обработки обменов данными и прочее.
Пользователь может нажать где угодно. И получится, что обмен пройдет без фильтрации.
Поэтому и приходится изменять конфигурацию УТ.
Я исходил из того, что УТ настраивают под себя и она не является типовой.
(22) pkv11, сделал 😉
Спасибо.
Выручила обработка. Для себя добавил отбор справочников и регистров сведений перед выгрузкой (тем самым удалось избежать полной выгрузки справочников при первом обмене в момент настройки плана ).
Интересный вариант доработки программы. Хотя конечно не хотелось бы дорабатывать программу и было бы намного удобнее через внешнюю обработку (например для базовой версии).
Но автору всё равно спасибо. В крайнем случае этот вариант можно использовать.
спасибо, попробуем
(26) alonzomozley, рад помочь 😉
Совсем не уверен стоит ли фильтровать первоначальную выгрузку…Там же происходить синхронизация…
Интересно узнать мнение коллег — нужно ли добавить фильтр по справочникам и РС…
Опрошу в публикации…
(29)
В моём случае как раз и хотелось избежать синхронизации — ну уж очень много лишней номенклатуры и контрагентов в УТ было. А так выгружается только по ссылкам из документов движения.
(27) krund, теперь возможно использовать фильтр без доработки конфигурации
(30) alonzomozley, я так понимаю — в базе бухгалтерии до настройки обмена нет данных для синхронизации.
Мне кажется — это частный случай. Думаю не стоит давать такой инструмент в общее пользование, т.к. уровень грамотности пользователей разный…
Спасибо автору! пригодилось.
+ однозначно! идея отличная.
Уточните, по механизму:
как конкретно корректируется регистрация для обмена?
1.на существующую регистрацию накладываем фильтры или
2.сняли всю регистрацию, и с учетом фильтров (в т.ч. и по п
megaalex, хороший вопрос! Как происходит процесс отбора данных? Что с регистрацией объектов в данном случае?
(34) megaalex, Существующая регистрация документов полностью очищается. Регистрация справочников остается без изменений
(35) DragonAgo, не понял твой вопрос.
Спасибо автору за публикацию!
Идея хороша. Автору +. Непонятно почему в 1с до этого не додумались. Хотя, возможно, потому что есть универсальный обмен данными в формате XML и можно правила выгрузить из конфы, подточить напильником и использовать. Но это как говориться «не то пальто».
(39) &rew, спасибо за оценку! Правила обмена напильником просто не переделаешь, они на план обмена подвязаны.
А по поводу фирмы 1С: если я не ошибаюсь подобный подход реализован в УНФ — т.е. 1С-ка двигается к этому )
Спасибо за обработку.
Но у меня при попытке выгрузить выдало ошибку:
{Форма.ФормаВыбораПериодаВыгрузки.Форма(55)}: Ошибка при вызове метода контекста (УдалитьРегистрациюИзменений)
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, ОбъектМетаданных);
по причине:
Несоответствие типов (параметр номер ‘1’)
Я сделала выборку по «поступление товаров», по одному поставщику и за определенное время.
Что я не так сделала?
Классная обработка — но есть нюанс про который автор не написал. При первоночальной выгрузке, необходимо сделать хотя бы один раз выгрузку документов штатными средствами. Иначе документы не будут выгружаться. Загружать их не обязательно.
И еще полезным бы было сохранение последних настроек.
(42) Alexei_fox, спасибо за оценку!
С какой версией бухгалтерии потребовался первоначальный обмен?