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

12.03.12

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?]
Парсер DD и DDS файлов (внешняя обработка дл 8.2)
.epf 7,83Kb
279
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%

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

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

50722 45650 руб.

04.08.2015    165298    386    276    

370

SALE! 10%

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 23652 руб.

12.06.2017    140283    784    295    

410

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

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

28000 руб.

15.12.2021    23218    161    48    

118

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

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

84000 руб.

19.08.2020    24494    23    1    

25

SALE! 10%

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

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

50722 45650 руб.

15.04.2019    71604    180    149    

121

SALE! 10%

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

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

50722 45650 руб.

24.04.2015    194276    149    242    

279

SALE! 10%

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

Правила переноса данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных) Воспользовались более 122 предприятий! |

50722 45650 руб.

31.10.2014    236155    99    334    

305

SALE! 10%

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

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

48278 43450 руб.

03.12.2020    36085    90    63    

87
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Serj1C 483 30.11.09 13:46 Сейчас в теме
Может скорость доступа и выше, но после того как мы прочитали таблицы запросом, эти данные нужно обработать... а они сосвем в не нечитабельном виде... Непонятные имена колонок, непонятные ссылки... Дальше то что?
2. artbear 1562 30.11.09 14:06 Сейчас в теме
Пока минусую, т.к. публикация не показывает проблемы, указанные, например, в (1)
3. awk 744 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 744 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 744 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 1562 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 744 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 1562 01.12.09 11:47 Сейчас в теме
(12) Так я тебе и намекал, а сейчас прямо говорю:
добавь в описание ссылки на скрипт-кодинг, которые раскрывают то, что ты не указал.
И будет замечательная, законченная публикация :)

(11) Цифры вполне реальные
15. awk 744 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 744 01.12.09 18:08 Сейчас в теме
Парсеров этих... Много, если одним словом. У меня на C# мной написаный где-то дома валяется... Этот сегодня написал, как внешний отчет для 8.2. Если кто подскажет как формируется _IDRRef можно и простенькую конвертацию написать...
18. Oleg70 02.12.09 12:14 Сейчас в теме
А зачем вот так-то, через ...опу ?
Выбрать данные из 7.7 стандартными средствами - не проблема, гораздо больше времени уйдет на создание объектов в базе-приемнике и проведении документов в ней.
19. awk 744 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 744 04.12.09 17:10 Сейчас в теме
(20) Сто рублей валяется на дороге. Ты шел мимо, нагнулся, поднял - это воровство или находка?
22. artbear 1562 07.12.09 16:23 Сейчас в теме
23. Ветер в поле 3 13.01.10 09:38 Сейчас в теме
Подумав, решил, не писать :)
24. nicxxx 255 11.03.12 06:27 Сейчас в теме
побуду некропостером :)
(0) если ADO совместить с УРБД (v8), то 40 минут легко превращаются в 5 даже для DBF-базы. смысл в том, чтобы сформировать xml-файл обмена для 1С 8 по данным из 1С 7.7
25. awk 744 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 744 26.03.15 10:57 Сейчас в теме
(27) Jogeedae,
1. _IDRRef имеет тип binary(16), то есть двоичные данные. Его для начала надо бы в строку 36 преобразовать. Под рукой скрипта нет, но гугль помнить должен.
2. "binary base64 --использую эту директиву чтобы не ругалось" что бы не ругалось, надо понять на что ругается, а не ставить заглушки.
3. Если вы хотите стандартизировать объект и сделать его неизменным от времени и базы, то да. А если готовы подгонять запросы под, то нет.
Оставьте свое сообщение