Обработка создана для организации обмена между базами, используя Automation-сервер, с претензией на универсальность!!!
Пока это BETA-версия, которая проверялась на обмен БГУ-УТ11, БГУ-УП. Но по идее должна работать из любой конфы 8.2 и выше, неуправляемый интерфейс.
Правила работы с обработкой:
1.Теоретически запуск подключаемой конфигурации возможен начиная с платформы 8.1.
2. Обработка использует некоторые стандартные процедуры, функции и формы (в частности «ОбщаяФорма.ВыборОбъектовМетаданных» и др), но в минимальном количестве.
3. Сохранение и восстановление настроек производится с использованием «Справочники.СохраненныеНастройки» и соответственно доступны другим пользователям при предоставлении им такого права.
4. Таблицы настроек доступны пользователям с полными правами.
5. Имя пользователя удаленной базы и пароль хранятся только последние, введённые в соответствующие поля, и только для локального пользомателя.
6. Для записи соответствий используется «РегистрыСведений.СоответствиеОбъектовДляОбмена».
7. Если хотите вести обмены с множеством баз, то необходимо в конфигураторе создать План обмена «РТК_Обмен»(не обязательно), но тогда запись в «РегистрыСведений.СоответствиеОбъектовДляОбмена» будет производиться раздельной записи(будет куча соответствий не известно к какой базе(узлу) относится). Страдает визуализация.
8. Если решили вести по плану обмена «РТК_Обмен», от можно создать множество узлов для подключения. Важно чтобы имя Узла совпадало с Путем подключения к соответствующей базе.
9. Все поля являются текстовыми и следовательно можно не использовать кнопки выбора, а набивать текст в ручную.
10. Загруженные документы всегда сохраняются в «РегистрыСведений.СоответствиеОбъектовДляОбмена» с узлом = неопределено, для того чтобы видеть все загруженные документы не важно из какой они базы, а хранение соответствий справочников и перечислений осуществляется с именем узла = путю подключения к базе (если ведётся по плану обмена «РТК_Обмен») или в одной куче с документами с именем узла = неопределено (если не ведётся по плану обмена «РТК_Обмен»).
11. Просмотр и создание настроек соответствий объектов баз в разрезе узла (если ведётся по плану обмена «РТК_Обмен») можно увидеть установив на вкладке «Обслуживание» флаг «Cоздание соответствий для конкретных объектов(перечислений,справочников) узела обмена».
12. Создание соответствий конкретных объектов баз производится в табличной части вкладки «Обслуживание»:
Нажав «Добавить»(«Скопировать»):
в поле «СобственнаяСсылка» выбераете сначала тип обекта приемника, а потом и конкретный объект базы приемника;
в поле «СсылкаВДругойИБ» выбераете сначала тип обекта источника, а потом и конкретный объект базы источника;
Так же можно заполнить соответствия «перечислений» двух баз автоматически нажав кнопку «АвтоНастройка соответствий перечислений» (заполнение производится по полному соответствию имен перечислений).
13. Создание соответствий типов объектов баз производится в табличной части «Параметры загрузки в приёмник (в эту базу)» вкладки «Настройка»:
Поиск по настройке осуществляется в следующем порядке:
-значение по умолчанию;
-по соответствию ИД в «РегистрыСведений.СоответствиеОбъектовДляОбмена»;
-по реквизитам из поля «1 вариант поиска»;
-по реквизитам из поля «2 вариант поиска»;
Нажав «Добавить»
в поле «Тип источника» выбераете сначала тип обекта источника;
в поле «Вид пиемника» выбераете сначала тип обекта приемника;
в поле «Значение по умолчанию» выбераете значение обекта приемника, если ничего не найдено и если не установлены флаги «Добавлять если не существует» и «Переписывать если существует»;
флаг «Добавлять если не существует» устанавливается если хотите создать новый объект в базе приёмнике по данным реквизитов из базы источника;
флаг «Переписывать если существует» устанавливается если хотите переписывать найденный объект в базе приёмнике по данным реквизитов из базы источника;
флаг «Не искать по ИД» устанавливается если не хотите осуществлять поиск по соответствию ИД в «РегистрыСведений.СоответствиеОбъектовДляОбмена;
флаг «Всегда по умолчанию» устанавливается если хотите при любом поиске для данного типа источника устанавливалось значение из поля «Значение по умолчанию»;
в поле «запрос» указывается текст запроса для выполнения перед заполнением объекта приемника. Результат можно использовать в алгоритме по имени «Результат».
в поле «алгоритм» указывается текст кода для выполнения перед записью объекта приемника. В алгоритме можно использовать вновь созданный объект по имени «Объект» и для отказа от записи «Отказ».
ПРИМЕР:
Если Объект.ЭтоНовый() Тогда
Отказ = РаботаСДиалогами.ЕстьДубльПоИНН(Объект);//использование процедур общего модуля
КонецЕсли;Нажав кнопку «Показать(скрыть) соответствия» отображается вторая таблица соответствия реквизитов обекта источика и приемника (активной строки таблицы «Параметры загрузки в приёмник (в эту базу)» )
в поле «Источник» можно указать:
имя реквизита объекта источника (например «Наименование»);
имя реквизита табличной части объекта источника (например «Товары.Номенклатура»);
пустое значение.
в поле «Приемник» (обязательно для заполнения) нужно указать:
имя реквизита объекта приёмника(например «Наименование»);
имя реквизита табличной части объекта приёмника(например «Товары.Номенклатура»);
в поле «Алгоритм» указывается текст кода для выполнения после записи реквизита из поля «Приемник». В алгоритме можно использовать для чтения и записи данные создаваемого объекта по имени «Объект» и если поле «Приемник» содержит имя реквизита табличной части объекта источника (например «Товары.Номенклатура»), то в алгоритме можно использовать для чтения и записи данные создаваемой строки, обращаясь по имени «СтрокаТаблицыПриемника». Также доступны данные для чтения объекта(ссылки) источника по имени «СсылкаУБ» и если поле «Источник» содержит имя реквизита табличной части объекта «Источника»(например «Товары.Номенклатура»), то в алгоритме можно использовать для чтения данные считываемой строки из табличной части источника, обращаясь по имени «СтрокаТЧ».
НО ДАННЫЕ ИСТОЧНИКА ЭТО «COM-объекты» И ПО ЭТОМУ ИХ ИСПОЛЬЗОВАНИЕ ТРЕБУЕТ БОЛЬШОГО ВНИМАНИЯ!!!
ТАКЖЕ ДЛЯ ПРОФИ ИМЯ «Коннект» ЭТО «COM-объект» ПОДКЛЮЧЁННОЙ БАЗЫ.
При использовании алгоритма обратите внимание когда он должен запуститься, для этого указывайте текст алгоритма в строке после заполнения которой он должен запуститься. Можно использовать в алгоритме при создании строки приёмника параметр «Отказ» с типом булево. Если указать «Отказ=истина;», то строка не запишется.
ПРИМЕР АЛГОРИТМА:
СтруктураРеквизитов = Новый Структура;
СтруктураРеквизитов.Вставить(«ЕдиницаИзмерения»,»ЕдиницаИзмерения»);
СтруктураРеквизитов.Вставить(«СтавкаНДС»,»СтавкаНДС»);
ПолучениеНСИ.ПолучитьЗначенияРеквизитовСправочника(СтрокаТаблицыПриемника.Номенклатура, СтруктураРеквизитов);
СтрокаТаблицыПриемника.ЕдиницаИзмерения = СтруктураРеквизитов.ЕдиницаИзмерения;
Если СтрокаТаблицыПриемника.КоличествоМест = 0 Тогда
СтрокаТаблицыПриемника.КоличествоМест = 1;
КонецЕсли;
Если СтрокаТаблицыПриемника.Коэффициент = 0 Тогда
СтрокаТаблицыПриемника.Коэффициент = 1;
КонецЕсли;
ОбработкаТабличныхЧастей.РассчитатьВсегоТабЧасти(СтрокаТаблицыПриемника, Объект); //обращение к общей процедуре
Объект.СуммаДокумента =Объект.СуммаДокумента + СтрокаТаблицыПриемника.всего;Если СтрокаТаблицыПриемника.всего = 0 тогда отказ=Истина; КонецЕсли;
14. Для переноса документов используется вкладка «Документы».
ОБЯЗАТЕЛЬНО в таблице «Документы источника» должны быть добавлены имена объектов (документов) например «АктПриемкиНФА» (есть в БГУ).
Флаг определяет какие виды документов будут переноситься.
Период определяет интервал дат считываемых документов (по умолчанию весь период по текущую дату).
15. Для переноса элементов справочника используется вкладка «Справочники».
ОБЯЗАТЕЛЬНО в поле «Справочник» укажите данные какого справочника источника вы хотите перенести.
В нижней таблице указавается (если необходимо) отбор (только «Код» и «Наименование»), вид сравнения и значение(тип строка);
Данный раздел пока экспериментальный!!!
16. Если все настройки сделаны, то действия пользователя просты.
Кнопка «Подключить базу», далее находясь на нужной вкладке(«Документы» или «Справочники») нажать кнопку «Прочитать данные» и на соответствующей вкладке появится список (в соответствии с отбором) предлагаемых к загрузке данных. Указываете ( устанавливая, снимая) флаг в Колонке «Переносить» и далее нажав кнопку «Перенос данных (согласно настройкам)» осуществляется перенос данных.
Возможен просмотр данных источника и приёмника из табличной части нажав «лупу».
Обработка в стадии развития, есть идеи. Также жду ваши замечания и предложения!!!
Обновленная версия практически отлажена на многих типовых конфигурациях. Важные условия работы обработки указаны выше(наличие РегистрыСведений.СоответствиеОбъектовДляОбмена, РегистрыСведений.СоответствиеОбъектовДляОбмена и т.д.)
В чем отличие от типового инструмента для обмена «Конвертации данных» (КД)?
Для тех, кто тоже искал и не нашел — попробуйте КД…
(1) Yimaida, Практически небо и земля! Здесь вы работаете напрямую с другой базой, без промежуточных файлов выгрузок-загрузок. Открываете выгружаемый документ в другой базе (источнике, приемнике) просматриваете и сравниваете. Да есть схожие принципы построения обмена и не более.
В типовом ЗУПе, например, такой формы нет. Лучше вынести весь типовой функционал непосредственно в обработку, в противном случае обмен получается не очень «универсальный».
(3) mikhailovaew, жалко, придется со временем переделать. Это же из стандартных подсистем, получается ЗУП ущемлен. А регистр «СоответствиеОбъектовДляОбмена», и справочник «СохраненныеНастройки» хоть есть.
(2) онлайн-обмен тоже позволяет напрямую подключаться к базе. Скажем так, при наличии уже существующих механизмов обмена, надо хотя бы выделить явные преимущества и отличия Вашей обработки (при условии что известны возможности той же КД). Написав статью, Вы же хотите поделиться опытом, помочь другим, но может получиться наоборот. Если есть похожие инструменты о которых известно, то как минимум о них надо обмолвится и хотя бы провести небольшое сравнение.
при открытии ругнулось
{ВнешняяОбработка.ПереносДокументовИзУТВБП20.МодульОбъекта}: Переменная не определена (СохранениеНастроек)
при запуске из розницы то же ругнулось но
{Форма.Форма.Форма(102)}: Поле объекта не обнаружено (ВалютаРегламентированногоУчета)
Если Не ЗначениеЗаполнено(Константы.ВалютаРегламентированногоУчета.Получить().ВерсияДанных) Тогда
(7) Tarlich, Интереса никто особо не проявлял поэтому я не выкладывал более новые версии, обновил файл, можно скачать. Про «Розницу» не знаю нет конфы чтобы проверить. Мин. требования к конф. указаны выше по тексту.
[0]
Показать
а можно глянуть, что в файле win_act.vbs ?
Пичалька — хотел посмотреть:
{Форма.Форма.Форма(748)}: Поле объекта не обнаружено (РТК_Обмен)
ПутьКУБ = Строка(ПланыОбмена.РТК_Обмен.ПолучитьФормуВыбора().ОткрытьМодально());
Вопрос, подключение только к серверной базе, хотел файловую открыть:
ВнешняяОбработка.ПереносДокументов.МодульОбъекта(37)}: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (1C:Enterprise 8.3.5.1517): Неверные или отсутствующие параметры соединения с информационной базой
Ошибка соединения
Модуль запаролен, даже не попробовать и не исправить….
P.S. Пробовал в БП 2.0
(10) Alex_E, по первой проблеме читайте выше текст:
8. Если решили вести по плану обмена «РТК_Обмен», от можно создать множество узлов для подключения. Важно чтобы имя Узла совпадало с Путем подключения к соответствующей базе.
9. Все поля являются текстовыми и следовательно можно не использовать кнопки выбора, а набивать текст в ручную.
Набивайте путь вручную.
По второй, я работаю с 8.3, проблем нет. проверте настройки (пароль, логин, путь, № платформы).
(0)(8) спасибо за скрипт и за обработку
мне понравилось — хорошее начало, развивайте ее дальше и может получиться, по-моему, очень и очень не плохой продукт.
(0) что за реквизит «СоздаватьДажеЕслиЭлемент»?…
не понятен его смысл, не закончено имя: ЕслиЭлемент… что?…
тем более, что уже есть реквизиты:
ПереписыватьЕслиСуществует
ДобавлятьЕслиНеСуществует
что же имелось в виду: СоздаватьДажеЕслиЭлемент «существует»? — нет смысла.
Не могли бы Вы прояснить этот момент: каким же должно быть имя этого реквизита, чтобы понятно стало для чего он служит?
Спасибо.
(13) Збянтэжаны Саўка,
Принцип переноса данных в обработке почти бесконечный вложенный перенос, т.е. переносим документ в нем ссыкка на справочник которого нет,то переносим(создаем). В справочнике ссылка на справочник которого нет,то переносим(создаем) и т.д. Так получилось, в строках документа есть партия(ссылка на документ) и без галочки СоздаватьДажеЕслиЭлемент, если его нет начинает его создавать. А в начале работы и чтобы не насоздавать кучу новых документов, которые забыли выставить соответствия, добавили это поле.
По развитию, постепенно появляется необходимость в управляемых формах, если и будет(время) то развивать будем на них.
(14) спасибо
а новые изменения выкладывать не планируете?