gifts2017

COM Connector

Опубликовал Юрий Сарычев (sarycheff) в раздел Программирование - Практика программирования

Обработка для установления COM-соединения с базами данных 1С на платформах 8.0, 8.1 и 8.2 с последующим выполнением введенного пользователем кода для использования COM-объекта в качестве источника данных.

Иногда возникает необходимость быстро перебросить объект конфигурации из одной базы в другую. При переносе метаданных проблем обычно не возникает, а вот для копирования данных из одной базы в другую можно воспользоваться этой обработкой (при условии, что есть навыки программирования на 1С). Часть кода и интерфейс взяты из типовой обработки "Обмен данными XML". Указанная обработка позволяет установить локальное или серверное COM-соединение и выполнить введенный (по правилам синтаксиса 1С) код, используя полученный результат соединения (COM-объект) в качестве источника данных.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
COM Connector v8.2 Управляемое приложение
.epf 9,75Kb
15.11.09
194
.epf 9,75Kb 194 Скачать
COMConnector
.1224523967 26,35Kb
15.11.09
524
.1224523967 26,35Kb 524 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Александр (ZZZ) 21.10.08 09:17
на такую лажу от силы 1Час потребуется опытному прогеру, тем более что пости весь код выложен в синтаксис-помощнику.....хотя для новичка наверное это достижение)))
2. Василий Демидов (Душелов) 21.10.08 09:30
(1) Подобное можно сказать и по поводу большинства разработок. Все разработки нужны, все разработки важны.
3. Андрей Скляров (coder1cv8) 21.10.08 09:45
(1) Напиши не лажу.
(0) А я-то подумал что это выполнение произвольного кода в контексте ком-соединения, без модификации конфигурации... ) Жаль! )
4. Александр (ZZZ) 21.10.08 10:21
(3) писал и не одну, а в этой обработке единственная изюменка в соединении выложена в синтаксис - помощнике, а всё остальное мелкие приписочки
5. Василий Демидов (Душелов) 21.10.08 10:24
(4) Так все, что в 1С-е в синтаксис помощнике есть :)
6. Александр (ZZZ) 21.10.08 10:25
(3) пусть автор попробует написать отчёт на 8.1 допустим по рентабильности продаж отдельной позиции анализируя её оборот в течении двух лет, но первый год контора работала на 7.7 а 1 января перешла на 8.1 ...должен получиться консолидирующий отчёт за 2 года с двух баз на разных платформах))
7. Василий Демидов (Душелов) 21.10.08 10:28
(6) Первое, что пишет народ, которые переводил базы с 7.7 на 8.0 - это отчеты по 2 базам. Либо после свертки - данные из архивной базы.
8. sarychev (sarycheff) 21.10.08 11:28
2 ZZZ: Мне понадобилось меньше получаса, и что, от этого она менее нужна начинающим или переходящим с 7.x на 8.x программерам?
2 Душелов: Спасибо за конструктивную поддержку!
2 coder1cv8: Всё в наших руках! ))
9. AlteZ (Altez) 14.11.08 17:06
Спасибо,помогло!
Код
   Дтут=ДОкументы.РегистрацияРазовыхНачисленийРаботниковОрганизаций; 
   дтам = ТекОбъектCOM.ДОкументы.РегистрацияРазовыхНачисленийРаботниковОрганизаций; 
   Выборка = дтам.Выбрать('20081030','20081101'); 
   Пока Выборка.Следующий() Цикл 
      сстут=Дтут.НайтиПоНомеру(Выборка.Номер,'20081030');
      если сстут.Пустая() тогда
         Сообщить("Не найдено"+Выборка.Номер+" "+Выборка.Дата); 
         тдок=Дтут.СоздатьДокумент();
      иначе
         Сообщить("найдено"+Выборка.Номер+" "+Выборка.Дата);
         тдок=сстут.ПолучитьОбъект();
      конецесли;   
      _док=выборка.Получитьобъект();
      тдок.Дата=_док.Дата;
      тдок.Номер=_док.Номер;
      тдок.ПериодРегистрации=_док.ПериодРегистрации;
      тдок.Организация=справочники.Организации.НайтиПоНаименованию(_док.Организация.Наименование);
      тдок.ОсновныеНачисления.Очистить();
      Для каждого строка  Из _док.ОсновныеНачисления Цикл
         нстрока=тдок.ОсновныеНачисления.Добавить();
         нстрока.Сотрудник=справочники.СотрудникиОрганизаций.НайтиПоНаименованию(строка.сотрудник.Наименование);
         нстрока.Физлицо=справочники.ФизическиеЛица.НайтиПоНаименованию(строка.Физлицо.наименование);
         нстрока.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию(строка.ВидРасчета.наименование);
         нстрока.ДатаНачала  = строка.ДатаНачала;
         нстрока.ДатаОкончания  = строка.ДатаОкончания;
         нстрока.Показатель1  = строка.Показатель1;
         нстрока.Показатель2  = строка.Показатель2;
         нстрока.Результат  = строка.Результат;
         нстрока.ПодразделениеОрганизации  = справочники.ПодразделенияОрганизаций.НайтиПоНаименованию(строка.ПодразделениеОрганизации.наименование);
         нстрока.ОтработаноДней  = строка.ОтработаноДней;
         нстрока.ОтработаноЧасов  = строка.ОтработаноЧасов;
         нстрока.ОплачиватьЧасов  = строка.ОплачиватьЧасов;
         нстрока.ОплаченоДнейЧасов  = строка.ОплаченоДнейЧасов;
         нстрока.Авторасчет = строка.Авторасчет;
         
      КонецЦикла; 
      тдок.ДополнительныеНачисления.Очистить();
      
      Для каждого строка  Из _док.ДополнительныеНачисления Цикл
         нстрока=тдок.ДополнительныеНачисления.Добавить();
         нстрока.Сотрудник=справочники.СотрудникиОрганизаций.НайтиПоНаименованию(строка.сотрудник.Наименование);
         нстрока.Физлицо=справочники.ФизическиеЛица.НайтиПоНаименованию(строка.Физлицо.наименование);
         нстрока.ВидРасчета = ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.НайтиПоНаименованию(строка.ВидРасчета.наименование);
         нстрока.ДатаНачала  = строка.ДатаНачала;
         нстрока.ДатаОкончания  = строка.ДатаОкончания;
         нстрока.Показатель1  = строка.Показатель1;
         нстрока.Показатель2  = строка.Показатель2;
         нстрока.Результат  = строка.Результат;
         нстрока.ПодразделениеОрганизации  = справочники.ПодразделенияОрганизаций.НайтиПоНаименованию(строка.ПодразделениеОрганизации.наименование);
         //нстрока.ОтработаноДней  = строка.ОтработаноДней;
         //нстрока.ОтработаноЧасов  = строка.ОтработаноЧасов;
         нстрока.Авторасчет = строка.Авторасчет;
         нстрока.ОплаченоДнейЧасов  = строка.ОплаченоДнейЧасов;
         
      КонецЦикла;

         тдок.Записать();
      сообщить("Записан "+тдок);
      продолжить
   КонецЦикла;
Показать полностью
10. AlteZ (Altez) 14.11.08 17:07
Есть идеи как ещё упростить выборочный межбазовый перенос объектов?
11. Андрей (andrewPt) 24.12.11 23:21
12. lees lees (lees) 01.06.12 11:03
Спасибо! отличная вещь. Скажу негативано настроенным: не нужна обработка - не скачивай, никто не заставляет, а мне помогла здорово!
13. Роман (srv7) 29.06.12 01:07
Спасибо, уже пальцы стал разминать, а тут все есть уже )
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа