Прошу обратить внимание, что данная версия расширения больше не будет поддерживаться. Опубликована новейшая версия, в ней добавлено много новых функциональных возможностей. Переработан и оптимизирован весь функционал. Обратной совместимости в новой версии нет, файл настроек не подойдет от предыдущей версии.
Расширение доступно по ссылке: Универсальный обмен данными через Com-соединение
Задача. Создать универсальный рабочий инструмент переноса документов (и справочников), не привязанный к конкретной конфигурации, как источника, так и приемника. Постараться максимально упростить настройку связей объектов и их реквизитов. Сама процедура выгрузки документа должна быть ограничена одной кнопкой «Выгрузить» в базе-источнике. Документ должен создаваться в приемнике, записываться, но не проводиться. Предполагается, что база-приемник пустая, поэтому все связки будут завязаны на УИДы объектов.
Представленное расширение работает в режиме совместимости 8.3.14, но работает также и в режиме 8.3.12, правда придется поиграться с ролями.
Разрабатывал и проверял на платформе версии 8.3.17.1549, но, думаю, что и на более ранних версиях работать будет. Тестировал на конфигурациях УТ11.4, КА2.4 – это источники, приемник БП базовая 3.0 и БП 3.0 Обычная. Также протестировал на всех клиентах: толстом, тонком и веб-клиенте.
Объем расширения 91,7 КБ.
Итак, поехали.
Рис. Состав расширения.
Общий модуль «СвойСервер», содержит основные процедуры и функции подключения к базе приемнику, поиска и создания объектов, а также заполнения реквизитов. Роль «КомСинхронизация», с полным доступом к функциям и объектам расширения. Общая форма «Ком_формаРеквизитов», в которой осуществляется настройка соответствия реквизитов объектов и табличных частей. Общая команда «КомВыгрузить», предназначенная для формы списка документов, интегрирована в командную панель списка документов, а также в контекстное меню списка. В данном примере я использую только реализации, поступления и счета-фактуры выданные и полученные. Справочник «Ком_НастройкиСинхронизации», содержит настройки соединения с базой-приемником, а также настройки связей объектов, реквизитов и табличных частей.
Теперь немного о работе с расширением.
Рис. Элемент справочника настройки синхронизации.
Вся настройка осуществляется в форме элемента справочника. Здесь необходимо указать тип базы, путь или сервер подключения Логин и пароль. Кнопка «Тест» проверяет доступность базы приемника. Кнопки «Сохранить» и «Загрузить» позволяют сохранить все настройки в файл на диске и загрузить из файла в справочник. Тумблер «По умолчанию» должен быть включен только в одной настройке. Именно по этому значению и будет происходить выбор настройки для выгрузки. ИНН организации в приемнике можно не заполнять, ниже объясню почему. Тумблер «Перезаполнять объекты» обозначает, что любой объект, который найден в базе приемнике, при условии, что он существовал, будет полностью перезаполнен реквизитами объекта источника.
Переходим к табличной части.
При открытии формы табличная часть не доступна для редактирования. Чтобы включить возможность редактирования табличной части необходимо нажать кнопку «Изменить» в командной панели формы. Установится com-соединение с базой-приемником, считаются метаданные обеих конфигураций. Заполнятся списки выбора «Приемник» и «Источник». В текущей версии пока доступны только документы, справочники и перечисления.
На следующем этапе нам необходимо настроить соответствие объектов двух баз, для этого необходимо добавить новую строку и выбрать нужные объекты в приемнике и источнике. Можно ввести название документа.
Рис. Добавление нового объект метаданных.
Необходимо настроить соответствие всех объектов, которые будут использованы при выгрузке. То есть, если Вы собираетесь настроить выгрузку документа «Реализация товаров и услуг», то необходимо указать также соответствие справочников, таких как Организации, Номенклатура, Контрагенты, Договоры контрагентов и т.д.
Когда объекты метаданных будут сопоставлены, можно приступать к настройке соответствия реквизитов объектов. Рассмотрим настройку соответствия реквизитов на примере документа «РеализацияТоваровУслуг». Для этого, выберем нужную строку и нажмем кнопку «Редактировать реквизиты» . Откроется «Форма соответствия реквизитов»
Рис. Форма настройки соответствия реквизитов.
Здесь также есть таблица с колонками «Приемник» и «Источник» а также колонка «заполнить как», указывающая на режим заполнения реквизита объекта.
Всего есть 6 вариантов режима заполнения:
Рис. Режимы заполнения реквизитов
- Вернуть значение (Return), указывает, что при выгрузке необходимо взять значение из реквизита «Источника», найти это значение в приемнике и установить в соответствующий реквизит приемника. Например, в документе «Реализация товаров и услуг» есть реквизит «Контрагент», в этом режиме при выгрузке будет осуществлен поиск по УИД элемента справочника-источника «Контрагенты» в приемнике, если он не будет найден, то он создастся и заполнится, а затем ссылка на объект вернется в реквизит приемника. Этот режим подходит для любых типов значений - справочников, документов, перечислений и простых: дата, булево, число, строка и т.д.
- Установить значение (Set). В этом режиме в реквизит приемника записывается значение, которое указано в «приемнике». Например, «комментарий» установить в значение «Создан автоматически», «Дата» установить в значение ТекущаяДата() или «организация» установить в значение ПараметрыПодключения.Соединение.Справочники.НайтиПоНаименованию(«ООО Ромашка», Истина) (о параметрах подключения подробнее ниже).
- Найти по реквизиту (Find). Подходит в том случае, когда нет необходимости создавать новые объекты, а нужно только найти существующий объект по определенному реквизиту. Например, справочник «Контрагенты», уже заполнен в приемнике и необходимо только найти нужного по ИНН. Для этого указываем «Find» в приемнике выбираем Контрагент, а в источнике выбираем Контрагент и добавляем «.ИНН» ( получится «Контрагент.ИНН»).
- Пропустить (Skip), просто реквизит игнорируется. Все настройки сохраняются.
- Выполнить код (Execute). В этом режиме доступно для редактирования только поле источника. Позволяет выполнить произвольный код. Пример. При выгрузке документа «Реализация товаров и услуг» в бухгалтерию предприятия, в документе приемника необходимо установить счета учета, для это можно выполнить следующий код : Приемник.ДополнительныеСвойства.Вставить("ЗаполнитьСчетаУчетаПередЗаписью", Истина);
- Заполнить табличную часть (Table). Указывает, что выбранный реквизит является табличной частью, для которой также необходимо указать соответствие реквизитов. Для этого указываем имена табличных частей приемника и источника и нажимаем кнопку «изменить» из командной панели табличной части. Откроется такая же форма настройки соответствия реквизитов, в которой необходимо указать нужные соответствия реквизитов табличных частей.
Рис. Настройка соответствия реквизитов табличных частей.
При выполнении произвольного кода доступны следующие свойства:
Приемник – Текущий объект приемника.
Источник – Текущий объект источника.
ПараметрыПодключения - Структура настроек и дополнительных свойств, а также самого com-соединения.
ПараметрыПодключения. Ком - COMObject("V83.COMConnector").
ПараметрыПодключения.Соединение – Соединение с базой (например доступ к какому либо справочнику приемника можно получить используя следующий код: ПараметрыПодключения.Соединение.Справочники.Организации.НайтиПоРеквизиту…).
ПараметрыПодключения.Результат – Результат подключения (Истина / Ложь).
ПараметрыПодключения.Подключено – Текущее состояние подключения (Истина / Ложь).
ПараметрыПодключения.ОписаниеРезультата – Результат подключения к базе или описание ошибки при подключении.
ПараметрыПодключения.НастройкаСинхронизации – Ссылка на текущую настройку синхронизации.
ПараметрыПодключения.СоответствиеТипов – Табличная часть текущей настройки с соответствием реквизитов приемника и источника.
ПараметрыПодключения.ПерезаполнятьОбъекты – Значение тумблера «ПерезаполнятьОбъекты» из текущей настройки.
ПараметрыПодключения.Организация – ИНН организации из текущей настройки. (Если у Вас организации одинаковые в источнике и приемнике, то не имеет смысла указывать, так как устанавливать значение реквизита «организация» какого-либо объекта лучше через режим заполнения «Find» и значением «Организация.ИНН». Нужно в том случае, когда организации разные или из нескольких организаций источника данные сливается в одну организацию приемника).
При заполнении реквизитов объекта соблюдается очередность реквизитов в настройках соответствия.
Для перечислений соответствие реквизитов устанавливать не нужно.
В архиве расширение и файл настройки выгрузки документов Реализации, Приобретения и Счетов-Фактур выданных и полученных. +Справочники.
Ну, вроде все. Надеюсь, кому-нибудь пригодится. Обновления и новые версии будут. Жду ваших предложений.
Теперь можно кидать помидорами.
Обновление 01/11/2021
Новое в версии расширения 1.3.1
1. Поменялся внешний вид основного окна элемента справочника. Все настройки разнесены на три вкладки:
Рис. Обновленное окно элемента справочника
2. Добавлена возможность автоматического сопоставления реквизитов объекта метаданных на форме соответствия реквизитов.
Рис. Автоматическое сопоставление реквизитов объекта метаданных.
3. После завершения сопоставления реквизитов объекта метаданных проверяется, указаны ли все объекты метаданных и, если есть несопоставленные, добавятся автоматически в соответствие объектов.
Рис. Добавление объектов метаданных в соответствие.
4. Добавлена форма выгрузки документов.
Теперь нет необходимости менять расширение и добавлять общую команду на форму списка. Выгрузка документов за период доступна и соответствующей формы.
Рис. Форма выгрузки документов.
Особенности: при заполнении табличной части попадут только те документы для которых установлено соответствие реквизитов. Если соответствие реквизитов не задано документы не попадут в тч.
Рис. Особенности выборки для выгрузки.
5. Добавлена форма выбора настройки синхронизации. Если у вас несколько настроек синхронизации, и несколько помечены как "основная", при выгрузке документов из формы списка документов будет выведена форма выбора нужной настройки.
6. Добавлена возможность установки реквизита через точку. Например, при заполнении ТЧ "товары" документа, есть колонка "номенклатура" и "НДС", так вот НДС в этом случае можно установить из колонки источника режим "return", приемник "НДС", но если колонки "НДС" в источнике нет, а в приемнике есть то можно установить значение в режиме "return", а в приемнике прописать "Номенклатура.СтавкаНДС"
Рис. Установка реквизита объекта метаданных через точку.