Сокращения
УТ – конфигурация «Управление торговлей» релиз 10
БП – конфигурация «Бухгалтерия предприятия» релиз 3.0
КД – конвертация данных
УИД – уникальный идентификатор объекта
Мотивация
После обновления БП на 3.0.44 релиз наш обмен между не обновляемой УТ и БП, построенный на типовом плане обмена, стал непригодным. Время на восстановление обмена стало не определяемым, поскольку типовой обмен построен так, что код обмена должен совпадать в двух базах, а изменения в типовом обмене были значительны.
Задумка и основа
Хотел сделать как в КД интерактивный ввод алгоритмов и сопоставление реквизитов. Все это можно было и сделать, но для простоты реализации, доработок и отладки решил отказаться.
Так как предыдущий обмен осуществлялся и был настроен с помощью типового плана обмена КД, то пришлось часть алгоритма и часть настроек заимствовать из типового плана обмена.
Обработка рабочая, используется для загрузки документов в нескольких базах. Обработка ориентирована для ИТ специалистов. Поддержку для пользователей не планирую, т.к. у всех свои нюансы. Код открыт, скачивайте, настраивайте под свои нужды.
Это мой подарочек сообществу «Инфостарт» ИТ специалистам. За символическую плату). Обработка относится к разряду тех обработок, которые поставил и забыл. Не чувствительна к обновлениям в БП. Вот уже, как полгода в неё не залазил, если не считать дополнений в функционал.
Что удалось
В целом удалось упростить настройку обмена (загрузку данных в БП).
В типовом обмене, чтобы поправить алгоритм обмена, надо было:
- Выгрузить план обмена из БП
- Загрузить план обмен в базу конвертации данных
- Выгрузить новую структуру данных УТ
- Выгрузить новую структуру данных БП
- Загрузить новую структуру УТ в план обмена
- Загрузить новую структуру БП в план обмена
- Найти и поправить код
- Выгрузить план обмена
- Загрузить новый план обмена в УТ
- Загрузить новый план обмена в БП
Теперь:
- Выгрузить обработку, если нет копии
- Открыть и отредактировать в конфигураторе
- Загрузить обратно в базу БП
Загрузка отдельных объектов упростилась в разы.
Часть настроек осуществляется интерактивно.
Удалось значительно упростить код загрузки объектов, обобщить логику получения реквизитов и сопоставления объектов:
- Для получения значения реквизита любого типа использовать вызов одной обобщенной функции. ОбъектДокумента.Реквизит = ПолучитьЗначениеРеквизита (СОМСсылкаНаДокумент.Реквизит). Реквизит может иметь один из трех типов объектов: перечисление, справочник, документ. Типы объектов могут быть любых видов определенных в коде программы.
- Для определения соответствия значений перечислений использовать одну функция.
- Для определения соответствия типов объектов использовать одну функция.
- Для загрузки нового объекта определить всего лишь 2- 5 функции, в зависимости от типа объекта. Для поиска, фильтра, загрузки и настройки объектов после загрузки:
- Добавлять<Тип объекта><ВидОбъекта> - фильтр для добавления в таблицу загрузки в интерактивном режиме.
- Загружать<Тип объекта><ВидОбъекта> - фильтр для загрузки как в интерактивном так и фоновом режиме
- Найти<Тип объекта><ВидОбъекта> - поиск объекта при загрузки
- Загрузить<Тип объекта><ВидОбъекта> - сама загрузка объекта
- ПослеЗагрузки<Тип объекта><ВидОбъекта> - действия после загрузки объекта
Пример для документа «Авансовый отчет»:
- ДобавлятьДокументАвансовыйОтчет
- ЗагружатьДокументАвансовыйОтчет
- НайтиДокументАвансовыйОтчет
- ЗагрузитьДокументАвансовыйОтчет
- ПослеЗагрузкиДокументАвансовыйОтчет
Пример для справочника «Банки»:
- ДобавлятьСправочникБанки
- ЗагружатьСправочникБанки
- НайтиСправочникБанки
- ЗагрузитьСправочникБанки
- ПослеЗагрузкиСправочникБанки
Пример для регистра сведений «Ответственные лица организаций»:
- ЗагружатьОтветственныеЛицаОрганизаций
- ЗагрузитьОтветственныеЛицаОрганизаций
В отличие от типового обмена следующие параметры настройки не настраиваются и заданы по умолчанию:
- себестоимость не переносится;
- сделки не загружаются;
- аналитика по складам ведется.
Как внедрить.
Если ранее обмен между базами был настроен штатными средствами с использованием плана обмена, то достаточно в параметрах указать план обмена.
Если загрузка будет осуществляться в пустую базу БП, то для загрузки в интерактивном режиме ни каких дополнительных настроек делать не надо, а для загрузки в фоновом режиме регламентным заданием придется, либо ввести план обмена, либо переделать процедуру загрузки регламентным заданием.
Если ранее обмен между базами был настроен не штатными средствами с использованием обработок, то для исключения дубликатов элементов справочников и документов придется для всех видов справочников и документов прописать функции поиска НайтиСправочник<Вид справочника>, НайтиДокумент<Вид документа>. Например для справочника "Банки" - НайтиСправочникБанки. В коде, шаблоны этих функций присутствуют. И для загрузки в фоновом режиме регламентным заданием придется, либо ввести план обмена, либо переделать процедуру загрузки регламентным заданием.
Какие коллизии могут возникнут и как их устранить.
За все время использования, была единственная проблема, это изменение соответствия объектов в базах обмена, которая появлялась после перегрузки в БП за двоенных контрагентов из УТ. Необходимо было сделать перегрузку на одного из контрагентов в БП.
Устранение коллизии:
- Если соответствие «правильных» контрагентов в УТ и БП есть (проверяется просто, этой же обработкой, если при заполнении объект найден в БП), то перенести данные с одного контрагента на «правильный» штатной обработкой 1С
- Если соответствие «правильных» контрагентов в УТ и БП нет, то проставить соответствие в регистре сведений «Соответствия объектов информационных бах» в базе БП (код для определения УИД можно найти в этой же обработке) и перенести данные с одного контрагента на «правильный» штатной обработкой 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.5
-
Добавлена загрузка документа «Списание товаров»
-
Добавлена роль "Кассир"
-
Добавлена загрузка док. "Заказ покупателя" -> "Счет на оплату покупателю", при загрузки док. "ПКО", для печати номенклатуры в чеке.