Один из вариантов переноса данных из 1С 7.7 в 1С 8.Х

12.03.12

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Перенос данных — это почти всегда индивидуальный подход. И крайне важно выбрать наиболее подходящий инструмент из множества доступных. Я в этой статье опишу один из вариантов.

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

Наименование Файл Версия Размер
Парсер DD и DDS файлов (внешняя обработка дл 8.2)
.epf 7,83Kb
279
.epf 7,83Kb 279 Скачать бесплатно

Итак, речь пойдет о ADODB. Какие же преимущества мы можем получить используя данный вариант обмена? Во-первых — это скорость работы. Ни OLE, ни файловый обмен не дадут той скорости доступа к базам 1С 7.7, как ADODB. Во вторых — универсальность, то есть его можно применять как в 1С 7.7 (там, правда, есть более удобные механизмы 1С++), так и в 1С 8.Х, да и в принципе везде где поддерживается работа с ADODB.

Первое что нам понадобится — это создать подключение к базе 1С (я буду рассматривать вариант dbf).

Соединение = Новый COMObject("ADODB.Connection"); // Создаем соединение
Соединение.ConnectionString = "Provider=VFPOLEDB.1;Data Source="+СокрЛП(Каталог)+";Extended Properties=dBASE IV;CODEPAGE=cp1251;"; //Внимание! CODEPAGE=cp1251; работает почему-то не везде.
Попытка
     Соединение.Open();
Исключение
     Сообщить(ОписаниеОшибки());
     Возврат;
КонецПопытки;
Соединение.Close();

Дальше нам надо создать команду.

Команда = Новый COMObject("ADODB.Command");
Команда.ActiveConnection = Соединение;

И получить данные.

Команда.CommandText = ТекстЗапроса;
РекордСет = Команда.Execute();

Обход полученных данных можно сделать как:

Пока РекордСет.Eof() = 0 Цикл
    РекордСет.MoveNext();
КонецЦикла;

Но в любой бочке мёда, есть ложка дёгтя. Если в цикле Выполнить запрос, то наш «рекордсет» заполнится новыми данными. Поэтому я бы рекомендовал после запроса переносить данные в «Таблицу значений». Сделать это можно так:

Функция СоздатьТаблицу(РекордСет)
    ТаблицаРезультатаЗапроса = Новый ТаблицаЗначений();
    Если РекордСет.Eof() = 0 Тогда
        Для ит = 0 по РекордСет.Fields.Count - 1 Цикл
            ТаблицаРезультатаЗапроса.Колонки.Добавить(РекордСет.Fields(ит).Name);
        КонецЦикла;
        Пока РекордСет.Eof() = 0 Цикл
            СтрокаТаблицы = ТаблицаРезультатаЗапроса.Добавить();
            Для ит = 0 по РекордСет.Fields.Count - 1 Цикл
                СтрокаТаблицы.Установить(ит, РекордСет.Fields(ит).Value);
            КонецЦикла;
            РекордСет.MoveNext();
        КонецЦикла;
    КонецЕсли;
    Возврат ТаблицаРезультатаЗапроса;
КонецФункции

Сложим все вместе и посмотрим, что у нас получилось.

Функция СоздатьТаблицу(РекордСет)
    ТаблицаРезультатаЗапроса = Новый ТаблицаЗначений();
    Если РекордСет.Eof() = 0 Тогда
        Для ит = 0 по РекордСет.Fields.Count - 1 Цикл
            ТаблицаРезультатаЗапроса.Колонки.Добавить(РекордСет.Fields(ит).Name);
        КонецЦикла;
        Пока РекордСет.Eof() = 0 Цикл
            СтрокаТаблицы = ТаблицаРезультатаЗапроса.Добавить();
            Для ит = 0 по РекордСет.Fields.Count - 1 Цикл
                СтрокаТаблицы.Установить(ит, РекордСет.Fields(ит).Value);
            КонецЦикла;
            РекордСет.MoveNext();
        КонецЦикла;
    КонецЕсли;
    Возврат ТаблицаРезультатаЗапроса;
КонецФункции

Функция ВыполнитьЗапрос(Соединение, ТекстЗапроса)
    Команда = Новый COMObject("ADODB.Command");
    Команда.ActiveConnection = Соединение;
    Команда.CommandText = ТекстЗапроса;
    РекордСет = Команда.Execute();
    Возврат РекордСет;
КонецФункции

Процедура ЗагрузитьСправочник()
    Соединение = Новый COMObject("ADODB.Connection"); // Создаем соединение

    Соединение.ConnectionString = "Provider=VFPOLEDB.1;Data Source="+СокрЛП(Каталог)+";Extended Properties=dBASE IV;CODEPAGE=cp1251;"; // Внимание! CODEPAGE=cp1251; работает почему-то не везде.

    Попытка
        Соединение.Open();
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;

    ТекстЗапроса = "SELECT SC192.CODE AS Код
    |      , SC192.ID AS ID
    |      , SC192.PARENTID AS ГруппаНаименование
    |      , SC192.ISFOLDER AS ЭтоГруппа
    |      , SC192.DESCR AS Наименование
    |      , SC192.SP1817 AS МодельАвто
    |      , SC192.SP194 AS ПолноеНаименовани
    |      , SC192.SP195 AS ЮридическийАдрес
    |      , SC192.SP196 AS ПочтовыйАдрес
    |      , SC192.SP197 AS Телефоны
    |      , SC192.SP198 AS ИНН
    |      , SC192.SP199 AS ДокументСерия
    |      , SC192.SP200 AS ДокументНомер
    |      , SC192.SP201 AS ДокументДатаВыдач
    |      , SC192.SP202 AS ДокументКемВыдан
    |      , V1.CODE AS ВалютаВзаиморасче
    |      , SC192.SP210 AS НомерКарты
    |      , SC192.SP211 AS ГосНомер
    |      , SC192.SP1796 AS Скидка
    |      , SC192.SP1829 AS КПП
    | FROM SC192
    | LEFT JOIN
    | SC95 AS V1 ON
    | SC192.SP203 = V1.ID
    | "+?(ЧастичнаяЗагрузка,"RIGHT JOIN exchange ON SC192.ID = exchange.ID AND exchange.VID = 'Контрагенты'","")+"
    |";

    ТаблицаРезультатаЗапроса = СоздатьТаблицу (ВыполнитьЗапрос(Соединение, ТекстЗапроса));

    Для Каждого СтрокаТЧ ИЗ ТаблицаРезультатаЗапроса Цикл
        ...
        Объект.Наименование = СтрокаТЧ.Наименование;
        Объект.Код = СтрокаТЧ.ID;
        ...
    КонецЦикла;
    Соединение.Close();
КонецПроцедуры

P.S. Данный метод дает и ещё одно преимущество над остальными — это уникальный идентификатор объекта в базе 1С 7.7 («ИмяТаблицы.ID»).

 

P.P.S. Данная статья не ставила целью провести обзор T-SQL или структуры данных 1С. Все это можно найти здесь:

http://www.sql.ru/docs/mssql/tsql_ref/index.shtml

http://www.script-coding.info/v77tables.html

и т.д.

Эпилог.  В 2005 MS SQL появилась прекрасное дополнение - возможность в предложении FOR XML использовать директиву TYPE. Давайте перепишем запрос, что бы убрать лишние действия.

ТекстЗапроса = "
   | SELECT (SELECT SC192.CODE AS Код
   |      , SC192.ID AS ID
   |      , SC192.PARENTID AS ГруппаНаименование
   |      , SC192.ISFOLDER AS ЭтоГруппа
   |      , SC192.DESCR AS Наименование
   |      , SC192.SP1817 AS МодельАвто
   |      , SC192.SP194 AS ПолноеНаименовани
   |      , SC192.SP195 AS ЮридическийАдрес
   |      , SC192.SP196 AS ПочтовыйАдрес
   |      , SC192.SP197 AS Телефоны
   |      , SC192.SP198 AS ИНН
   |      , SC192.SP199 AS ДокументСерия
   |      , SC192.SP200 AS ДокументНомер
   |      , SC192.SP201 AS ДокументДатаВыдач
   |      , SC192.SP202 AS ДокументКемВыдан
   |      , V1.CODE AS ВалютаВзаиморасче
   |      , SC192.SP210 AS НомерКарты
   |      , SC192.SP211 AS ГосНомер
   |      , SC192.SP1796 AS Скидка
   |      , SC192.SP1829 AS КПП
   | FOR XML TYPE, PATCH('CatalogeObject.Номенклатура') ) AS A
   | FROM SC192
   | LEFT JOIN
   | SC95 AS V1 ON
   | SC192.SP203 = V1.ID
   | "+?(ЧастичнаяЗагрузка,"RIGHT JOIN exchange ON SC192.ID = exchange.ID AND exchange.VID = 'Контрагенты'","")+"
   |";

Теперь в 1С достаточно будет следующего кода:

Пока РекордСет.Eof() = 0 Цикл
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку(РекордСет.Fields(0).Value);
    ЗаписьXML.ПерейтиКСодержимому();
    Объект = ПрочитатьXML(ЗаписьXML);
    Объект.Записать();
    ЧтениеXML.Закрыть();
    РекордСет.MoveNext();
КонецЦикла

См. также

SALE! 10%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Обработка позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию. Переносятся документы, а также начальные остатки и справочная информация. Есть фильтр по организации и множество других опциональных параметров выгрузки. Наши правила переноса в продаже с 2015 года, постоянно работаем над их развитием. Более 360 предприятий выполнили переход с использованием этого продукта. Оказываем техническую поддержку по всем вопросам проекта переноса данных из УПП 1.3.

50722 45650 руб.

04.08.2015    159270    363    266    

345

SALE! 10%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    134603    718    291    

387

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20089    132    38    

90

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Переносятся документы за выбранный период, нормативно-справочная информация и остатки по счетам бухгалтерского учета из программы "1С:БП 3.0" в "1С:УТ 11" или "1С:КА. 2" или "1С:ERP Управление предприятием, ред. 2".

50722 45650 руб.

31.10.2014    231093    124    326    

295

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Обработка позволяет не только перенести все документы, справочную информацию и начальные остатки из ERP 2 или КА 2 в ЗУП 3, но и организовать регулярный перенос данных между программами 1С:ERP 2 / КА 2 и 1С:ЗУП 3. Вы можете выбрать период отбора данных и установить фильтр по организациям, чтобы выгружать только необходимую информацию. Более того, перенос оперативно обновляется при выходе новых релизов программы 1С, так что вы всегда будете иметь самую актуальную версию обработки.

48278 43450 руб.

03.12.2020    34034    80    57    

78

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос позволяет настроить собственный обмен данными между указанными программами, альтернативный предлагаемому фирмой 1С. Перенос данных осуществляется из 1С:ERP 2 / 1С:КА 2 / 1С:УТ 11 в 1С:БП 3.0. Правила обмена оперативно обновляются при выходе новых релизов программы 1С, так что вы всегда будете иметь самую актуальную версию обработки.

38500 34650 руб.

15.04.2019    68194    176    136    

108

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9155    9    8    

10

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 руб.

23.07.2020    46020    194    64    

153
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Serj1C 483 30.11.09 13:46 Сейчас в теме
Может скорость доступа и выше, но после того как мы прочитали таблицы запросом, эти данные нужно обработать... а они сосвем в не нечитабельном виде... Непонятные имена колонок, непонятные ссылки... Дальше то что?
2. artbear 1447 30.11.09 14:06 Сейчас в теме
Пока минусую, т.к. публикация не показывает проблемы, указанные, например, в (1)
3. awk 741 30.11.09 14:46 Сейчас в теме
Serj1C - правда? У меня читабельны...
	ТекстЗапроса = "SELECT SC192.CODE AS Код
	|		, SC192.ID AS ID 
	|		, SC192.PARENTID AS ГруппаНаименование 
	|		, SC192.ISFOLDER AS ЭтоГруппа 
	|		, SC192.DESCR AS Наименование 
	|		, SC192.SP1817 AS МодельАвто 
	|		, SC192.SP194 AS ПолноеНаименовани 
	|		, SC192.SP195 AS ЮридическийАдрес 
	|		, SC192.SP196 AS ПочтовыйАдрес 
	|		, SC192.SP197 AS Телефоны 
	|		, SC192.SP198 AS ИНН 
	|		, SC192.SP199 AS ДокументСерия 
	|		, SC192.SP200 AS ДокументНомер 
	|		, SC192.SP201 AS ДокументДатаВыдач 
	|		, SC192.SP202 AS ДокументКемВыдан 
	|		, V1.CODE AS ВалютаВзаиморасче 
	|		, SC192.SP210 AS НомерКарты 
	|		, SC192.SP211 AS ГосНомер 
	|		, SC192.SP1796 AS Скидка 
	|		, SC192.SP1829 AS КПП 
	| FROM SC192
	| LEFT JOIN
	| SC95 AS V1 ON
	| SC192.SP203 = V1.ID
	| "+?(ЧастичнаяЗагрузка,"RIGHT JOIN exchange ON SC192.ID = exchange.ID AND exchange.VID = 'Контрагенты'","")+"
	|";
        ТаблицаРезультатаЗапроса = СоздатьТаблицу (ВыполнитьЗапрос(Соединение, ТекстЗапроса));
	Для Каждого СтрокаТЧ ИЗ ТаблицаРезультатаЗапроса Цикл
     ...
		Объект.Наименование = СтрокаТЧ.Наименование;
		Объект.Код = СтрокаТЧ.ID;
     ...
	КонецЦикла;
Показать
xpym-xpym; +1 Ответить
4. Serj1C 483 30.11.09 15:30 Сейчас в теме
(3) > Перенос данных — это почти всегда индивидуальный подход

Иммет ли смысл ради одного переноса на столько глубоко ковырятся в физической структуре ИБ? Я бы предпочел использовать типовую КД.
Разработка быстрее, отладка проще.
По-моему время выгрузки стоит дешевле, чем время разработки.
5. awk 741 30.11.09 17:16 Сейчас в теме
Я не настаиваю.. Просто, когда позиций номенклатуры 38 000, а аналогов 108 000. Выгрузка худо-бедно идёт за часа два. А загрузка - восемь. И того 10 часов (при режиме работы 24/7 - это не приемлемая цена). ADODB - 40 минут (без оптимизации на dbf, с оптимизацией, да на MSSQL минут десять будет работать). При этом встает вопрос о реквизите синхронизации. Код? Наименование? И то и другое пользователи легко могут изменить. А поскольку я привык смотреть на структуру баз 1с 7.7 - то сложности особо не вижу (скорость написания запроса аля в статье ну раза в два в три дольше чем КД). А отладка в моём варианте проще, так как происходит в конфигураторе..
6. Serj1C 483 01.12.09 07:19 Сейчас в теме
(5) Я тоже не настаиваю.
Допустим, на выгрузке экономия 1 час 50 минут.
Теперь загрузка. 8 часов. Как ее оптимизировать?
7. awk 741 01.12.09 07:51 Сейчас в теме
40 минут это вместе с загрузкой...
11. Serj1C 483 01.12.09 10:53 Сейчас в теме
(7) Поясните за счет чего.
8 часов и 40 минут... Нас кто-то вводит в заблуждение
8. ACE$ 47 01.12.09 08:41 Сейчас в теме
интересно, да... структуру можно посмотреть в соответствующих файлах. Хотя разбираться в ней придется довольно долго. За идею +
9. artbear 1447 01.12.09 09:32 Сейчас в теме
(0) Тема все-таки до конца не раскрыта.
Например, не указал, где брать названия таблиц, полей, индексов? Понятно, что в дд-файле, но не все это знают :)
Периодические реквизиты и длинные строки так не выгрузишь :(
и т.д. и т.п.
10. afanasko 35 01.12.09 10:28 Сейчас в теме
Объясняю ситуацию:
вот есть реквизит "ВалютаВзаиморасчетов". Это ссылка на элемент справочника. У неё может быть родитель, у родителя может быть свой родитель, владелец или реквизит также ссылающийся на элемент какого-то справочника. А если тип реквизита - перечисление?
Как с помощью данного варианта можно рекурсивно обработать все ссылки загружаемых элементов?

Второй вопрос: а для каждой базы необходимо переписывать имена таблиц и столбцов? Или есть какой-то способ абстрагироваться от физического хранения?

Такой способ можно использовать для единичной загрузки из 1С в стороннюю учетную систему, но для обмена между двумя 1С ничего лучше чем ОЛЕ, при всех его недостатках, еще не придумали. Поэтому не изобретайте велосипеды, ИМХО.
Минус.
14. xpym-xpym 01.12.09 13:14 Сейчас в теме
по поводу (10) (12) и (3)
Второй вопрос: а для каждой базы необходимо переписывать имена таблиц и столбцов? Или есть какой-то способ абстрагироваться от физического хранения?

Без знания структуры данных - не отвечу.

интересно сколько времени займет именно подготовка для не типовой или правленой конфы для приведения в читабельный вид

з.ы. автор статью дополнит я надеюсь
12. awk 741 01.12.09 11:12 Сейчас в теме
Re: Тема все-таки до конца не раскрыта.
Для того кто не знает где взять структуру - надо читать не эту статью, а статьи на сайте http://script-coding.info/. Переодические реквизиты и длинные строки выгрузить вполне реально, это то же тема отдельной статьи

Re: 8
Не долго поверьте...

Re: 10
Первый вопрос - http://script-coding.info/. Без знания структуры данных - не отвечу. Нужна конкретная задача.
Второй вопрос - переписывать не надо, а дать псевдонимы полей, для удобства себя любимого, можно.

Re: 11
К сожалению не ввожу.. XML вещь прекрасная, но для хранения больших объемов данных не подходящая. Не восемь, а 10 часов против сорока минут. 1С бездарно использует хранилища информации - это не секрет. Для DBF варианта - это ещё терпимо, но когда она перебирается на SQL сервера... Скорость достигается, за счет отсутствия поиска и конвертации объектов методами 1С (кроме НайтиПо...).

P.S. Ругаетесь, но никто не написал неинтиресно - это приятно.
13. artbear 1447 01.12.09 11:47 Сейчас в теме
(12) Так я тебе и намекал, а сейчас прямо говорю:
добавь в описание ссылки на скрипт-кодинг, которые раскрывают то, что ты не указал.
И будет замечательная, законченная публикация :)

(11) Цифры вполне реальные
15. awk 741 01.12.09 14:23 Сейчас в теме
1. Не дополню. Статья закончена. Могу только новую написать вопрос какая тема.

2.
Первый вопрос - http://script-coding.info/. Без знания структуры данных - не отвечу. Нужна конкретная задача.


А ответ на второй вопрос:
Второй вопрос - переписывать не надо, а дать псевдонимы полей, для удобства себя любимого, можно.


Читабельность определяется квалификацией. F = m*a - читабельно? А :
Д | K
_____
50|62

16. Serj1C 483 01.12.09 17:55 Сейчас в теме
Парсер DD ))
Уже прикольно
17. awk 741 01.12.09 18:08 Сейчас в теме
Парсеров этих... Много, если одним словом. У меня на C# мной написаный где-то дома валяется... Этот сегодня написал, как внешний отчет для 8.2. Если кто подскажет как формируется _IDRRef можно и простенькую конвертацию написать...
18. osokolov 02.12.09 12:14 Сейчас в теме
А зачем вот так-то, через ...опу ?
Выбрать данные из 7.7 стандартными средствами - не проблема, гораздо больше времени уйдет на создание объектов в базе-приемнике и проведении документов в ней.
19. awk 741 02.12.09 13:27 Сейчас в теме
1. Обмен через OLE не плохой вариант.

Плюсы:
Простота реализации.

Минусы:
Долго подключается (версия 7.7).
Проблемы с передачей параметров.
Нужно иметь учетную запись и пароль (если не ломать).
Базы должны быть связаны сетью хотя бы 10 Мб/с.

Итог: Очень хорошо подходит для обмена внутри локальной сети.

2. Файловый обмен.

Плюсы:
Не зависит от расположения баз.

Минусы:
Обмен состоит из двух частей (выгрузка, загрузка). Для каждой надо писать обработку, с помощью конвертации данных или без нее.
Парсеры файлов не блещут скоростью работы.

Итого: Подходит для обмена если базы разделены медленным каналом или таковой отсутствует.

3. Так называемые "прямые запросы".

Плюсы:
Скорость работы не сравнима с первыми двумя (выше на порядок).
При должном опыте реализация достаточно проста. Не сложнее конвертации или OLE.
Доступна на медленных каналах (требует настройки доступа если происходит через интернет).

Минусы:
Требует знания T-SQL, структуры базы 1С.

Итого: Если не уверены в своих силах то: НИКОГДА НЕ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ НЕ ИСПОЛЬЗОВАТЬ!!! В противном случае идеальный вариант во многих случаях.

Общие итоги: Что нужно в конкретном случае определяется конкретной задачей. Где-то выгоден OLE, где-то файловый обмен. А где-то без "прямых запросов" не обойтись (если не отказываться от решения задачи).
20. Bosma 69 04.12.09 13:07 Сейчас в теме
(19)....Нужно иметь учетную запись и пароль (если не ломать).

странное замечание...
что за обмен, если и учетных данных не знаем? похоже на воровство
21. awk 741 04.12.09 17:10 Сейчас в теме
(20) Сто рублей валяется на дороге. Ты шел мимо, нагнулся, поднял - это воровство или находка?
22. artbear 1447 07.12.09 16:23 Сейчас в теме
23. Ветер в поле 3 13.01.10 09:38 Сейчас в теме
Подумав, решил, не писать :)
24. nicxxx 254 11.03.12 06:27 Сейчас в теме
побуду некропостером :)
(0) если ADO совместить с УРБД (v8), то 40 минут легко превращаются в 5 даже для DBF-базы. смысл в том, чтобы сформировать xml-файл обмена для 1С 8 по данным из 1С 7.7
25. awk 741 12.03.12 13:32 Сейчас в теме
(24) nicxxx, Я немного развил и использовал SELECT ... FOR XML ... в итоге получил готовый XML для загрузки.
26. shoy 19 03.05.12 11:11 Сейчас в теме
опробовал и обрадовался ;)
такой подход понравился! плюсую
27. PlatonStepan 38 26.03.15 05:29 Сейчас в теме
Добрый день! у меня чего-то не взлетело :(

Вот запрос:

SELECT
_IDRRef AS ID,
_Code AS Код,
_Description AS Наименование
FROM _Reference34
FOR XML AUTO,
binary base64 --использую эту директиву чтобы не ругалось


Получаю результат:

<_Reference34 ID="mHw/dfd7diZIb99hmH6Fqw==" Код="00000" Наименование="Федеральный" />
<_Reference34 ID="pnWd7NphzC1DPrBdYHGRGQ==" Код="00000" Наименование="Муниципальный" />
<_Reference34 ID="vkwlYLrOXuNJjUN1w8XLkg==" Код="00000" Наименование="Региональный" />


это нормально: ID="mHw/dfd7diZIb99hmH6Fqw==" или можно было получить ссылку в виде "0x..." или в каком-либо более удобном виде?

Десериализация этих ссылок как должна происходить? Совсем непонятно.
Нужно описание объектов в XDTO готовить?

Надеюсь на помощь! Заранее спасибо!
28. awk 741 26.03.15 10:57 Сейчас в теме
(27) Jogeedae,
1. _IDRRef имеет тип binary(16), то есть двоичные данные. Его для начала надо бы в строку 36 преобразовать. Под рукой скрипта нет, но гугль помнить должен.
2. "binary base64 --использую эту директиву чтобы не ругалось" что бы не ругалось, надо понять на что ругается, а не ставить заглушки.
3. Если вы хотите стандартизировать объект и сделать его неизменным от времени и базы, то да. А если готовы подгонять запросы под, то нет.
Оставьте свое сообщение