Один из вариантов переноса данных из 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! 20%

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

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

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

45650 36520 руб.

04.08.2015    159689    363    267    

345

SALE! 15%

[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 22572 руб.

12.06.2017    134940    723    291    

388

SALE! 20%

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

Обмен между базами 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 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

34650 27720 руб.

15.04.2019    68420    178    138    

111

SALE! 20%

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

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

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

43450 34760 руб.

03.12.2020    34169    80    58    

78

SALE! 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 25200 руб.

23.07.2020    46301    196    64    

158

SALE! 10%

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

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

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

50722 45650 руб.

31.10.2014    231412    124    327    

296

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

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

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

60000 руб.

05.10.2022    9208    9    8    

10

SALE! 10%

Перенос данных из УПП 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 25200 руб.

15.12.2021    20252    132    38    

90
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Serj1C 483 30.11.09 13:46 Сейчас в теме
Может скорость доступа и выше, но после того как мы прочитали таблицы запросом, эти данные нужно обработать... а они сосвем в не нечитабельном виде... Непонятные имена колонок, непонятные ссылки... Дальше то что?
2. artbear 1448 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 1448 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 1448 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 1448 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. Если вы хотите стандартизировать объект и сделать его неизменным от времени и базы, то да. А если готовы подгонять запросы под, то нет.
Оставьте свое сообщение