Выгрузка/загрузка справочника "Внешние обработки".

Переброска справочника "Внешние обработки" между ИБ 1С.
Преимущества ее проявляются только тогда, когда необходимо поддерживать одинаковые печатные формы, обработки, отчеты или… в нескольких ИБ 1С. Данная обработка позволяет экономить время и нервы, избавляя от нудной и рутинной работы, заходить в каждую базу и заполнять справочник, ведь можно еще и что то забыть добавить.

Данная обработка не претендует на звание шедевра, но я буду рад, если она кому ни будь, облегчит рабочие будни 🙂

Она позволяет перебросить данные из справочника «Внешние обработки»  из одной ИБ 1С, в другие базы. Преимущества ее проявляются только тогда, когда необходимо поддерживать одинаковые печатные формы, обработки, отчеты или… в нескольких ИБ. В одной базе 1С фиксируем необходимые элементы справочника «Внешние обработки» и перекидываем в другие с помощью данной обработки. 

  • Плюсы:
  • — экономия времени, ведь нам всем оно дорого;
  • — стандартизация, мы к этому стремимся;
  • — автоматизация, мне очень нравится это слово;
  • — можно по «тролить» мой код 🙂 .
  • Минусы:
  • — бесполезна, если у Вас всего пару ИБ,… или абсолютно плевать на справочник «Внешние обработки»;
  • — можно по «тролить» мой код 🙁 .

У меня на поддержке находится порядка 20 ИБ ЗУП и т.п. баз. И иногда приходится редактировать внешние отчеты или обработки по нескольку раз за день. Хочу так же заметить, что оригинальная обработка берет даннае по подключениям к другим ИБ 1С из специального справочника («Информационные базы»), что значительно облегчает работу.

Данный механиз ипользует планы обмена и обработку УниверсальныйОбменДаннымиXML. Почему реализовал именно так? Просто мне было интересно попробовать Программное обращение к обработке «Универсальный обмен данными в формате xml».

12 Comments

  1. ArtemiFD

    В планах обмена, я заменил стандартное заполнение реквизита «СсылкаОбъекта» табличной части «Принадлежность» на код описанный ниже. Это связано с тем, что помимо тех баз 1с, где планируются использоваться выгружаемые печатные формы или… я складирую их в управленческой базе.

    Для Каждого СтрокаТЧ Из Объект.Принадлежность Цикл
    
    СтрокаТЧ.СсылкаОбъекта = Неопределено;
    
    ПредставлениеОбъекта_ = СокрЛП(СтрокаТЧ.ПредставлениеОбъекта);
    
    Если Найти(ПредставлениеОбъекта_, «Документ») <> 0 Тогда
    ПредставлениеОбъекта_ = СокрЛП(СтрЗаменить(ПредставлениеОбъекта_, «Документ», «»));
    ПредставлениеОбъекта_ = СокрЛП(СтрЗаменить(ПредставлениеОбъекта_, «»»», «»));
    
    Если Метаданные.Документы.Найти(ПредставлениеОбъекта_) <> Неопределено Тогда
    СтрокаТЧ.СсылкаОбъекта = Документы[ПредставлениеОбъекта_].ПустаяСсылка();
    Иначе
    Для Каждого СтрДокумент Из Метаданные.Документы Цикл
    Если СтрДокумент.Синоним = ПредставлениеОбъекта_ Тогда
    СтрокаТЧ.СсылкаОбъекта = Документы[СтрДокумент.Имя].ПустаяСсылка();
    Прервать;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    
    ИначеЕсли Найти(ПредставлениеОбъекта_, «Справочник») <> 0 Тогда
    ПредставлениеОбъекта_ = СокрЛП(СтрЗаменить(ПредставлениеОбъекта_, «Справочник», «»));
    ПредставлениеОбъекта_ = СокрЛП(СтрЗаменить(ПредставлениеОбъекта_, «»»», «»));
    
    Если Метаданные.Справочники.Найти(ПредставлениеОбъекта_) <> Неопределено Тогда
    СтрокаТЧ.СсылкаОбъекта = Справочники[ПредставлениеОбъекта_].ПустаяСсылка();
    Иначе
    Для Каждого СтрСправочник Из Метаданные.Справочники Цикл
    Если СтрСправочник.Синоним = ПредставлениеОбъекта_ Тогда
    СтрокаТЧ.СсылкаОбъекта = Справочники[СтрСправочник.Имя].ПустаяСсылка();
    Прервать;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    
    КонецЕсли;
    
    КонецЦикла;

    Показать

    Reply
  2. makas

    Спсибо, пригодится!

    Reply
  3. yuraos

    Плюс за стремление сделать этот мир лутше.

    Хотя я стремлюсь по возможности все включать в конфигурацию.

    Так для поддержки лутше.

    Меняешь какой-нибудь регистр…

    …и думаешь гадаешь,

    в каком из внешних отчетов с обработками

    это может аукнуться.

    Reply
  4. ArtemiFD

    (3) yuraos, не совсем понял, прошу пояснить.

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

    Reply
  5. sanches

    Буквально на днях думал о такой обработке…

    Тоже приходится периодически в 10-ки баз подключать один и тот же отчет.

    Reply
  6. ArtemiFD

    (5) sanches, Если все таки надумаешь, то принимаю пожелания по доработке 🙂

    Reply
  7. sanches

    (6)

    Теперь думать не надо, уже скачал ))

    Reply
  8. spa07

    хорошая обработка, как раз много баз, сейчас опробую

    Reply
  9. ArtemiFD

    Начиная с платформы 8.2.17, обработка стала ругаться на неизвестную ошибку. Исправляем ее следующим образом:

    берем внешнюю обработку «УниверсальныйОбменДаннымиXML» и исправляем в ней процедуру СообщитьПользователю, либо комментируем ее содержимое. После это, в моей обработке исправляем вызов «УниверсальныйОбменДаннымиXML» с внутренней на внешнюю.

    Процедура СообщитьПользователю(ТекстСообщенияПользователю) Экспорт
    
    #Если Клиент Тогда
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = ТекстСообщенияПользователю;
    Сообщение.Сообщить();
    #КонецЕсли
    
    КонецПроцедуры

    Показать

    и

    Процедура ВыгрузитьДанные(…)
    //Обработка = ИБ_подключение.Обработки.УниверсальныйОбменДаннымиXML.Создать();
    Обработка = ИБ_подключение.ВнешниеОбработки.Создать(УниверсальныйОбменДаннымиXML_Внешняя);
    …
    КонецПроцедуры
    
    Процедура ЗагрузитьДанныеВ_ИБ_Приемник(…)
    //ОбработкаОбмена = ИБ_Приемник.Обработки.УниверсальныйОбменДаннымиXML.Создать();
    ОбработкаОбмена = ИБ_Приемник.ВнешниеОбработки.Создать(УниверсальныйОбменДаннымиXML_Внешняя);
    …
    КонецПроцедуры
    
    УниверсальныйОбменДаннымиXML_Внешняя = «\ОбменУниверсальныйОбменДаннымиXML.epf»;
    КэшируемоеПодключение = Ложь;
    …
    
    

    Показать

    Reply
  10. LexSeIch

    Мир этому дому!

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

    Reply
  11. ArtemiFD

    (10) LexSeIch, Рад что еще одному человеку пригодилась «идея» 🙂

    Не забудьте сделать изменения по сообщению №9 .

    Reply
  12. RodinMax

    платформа 8.2.19.80 конфа БП 54.13

    в файловом не работает пишет

    Не удалось произвести подключение к информационной базе: D:Documents1C_v8XBase_8.28.2_БП_5

    {ВнешняяОбработка.ВыгрузкаЗагрузкаСправочникаВнешниеОбработки.МодульОбъекта(52)}: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V82.COMConnector.1): Неверные или отсутствующие параметры соединения с информационной базой

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

    разобрался: в файловом варианте путь должен выглядеть File=»D:База1С»

    Reply

Leave a Comment

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