Прием конвертации, который позволит решить много задач

16.01.13

Интеграция - Перенос данных 1C

Описанный в данной публикации прием позволяет инициировать выгрузку информации из источника, когда нет прямого сопоставления объектов источника и приемника что можно использовать для решения широкого круга прикладных задач.

Данный прием широко использовался для переноса информации из конфигурации «Бухгалтерский учет»  в  конфигурацию «Зарплата и управление персоналом 2.5».

Конфигурация, из которой предполагалось перенести данные, некогда была типовой конфигурацией бухгалтерского учета. За длительное время эксплуатации она  непрерывно дорабатывалась под нужды предприятия.  На момент переноса  ее структура метаданных  существенно отличалась от типовой. Было принято решение не искать готовые обработки по переносу,  а воспользоваться  конфигурацией конвертации данных и разработать правила переноса самостоятельно.

Сложность задачи состояла в том, что база данных источника и приемника сильно отличаются по структуре. Во многих случаях простое сопоставление объектов и их реквизитов не подходило. 

 Вот несколько примеров правил конвертации, которые пришлось разработать:

Отмечу, что предварительно были разработаны простые правила конвертации, для объектов которые можно было сопоставить в источнике и приемнике.

Пример1: Генерация документа «ПриемНаРаботуВОрганизацию»

В источнике присутствует документ «ПриказОПриемеНаРаботу» но ни одного документа не заполнено. В приемнике документ «ПриемНаРаботуВОрганизацию» имеет несколько табличных частей, которые надо заполнить информацией по работникам и основным начислениям. Необходимо было извлечь информацию из справочника «Сотрудники» исходной конфигурации и поместить  в соответствующие табличные части документа «ПриемНаРаботуВОрганизацию» конфигурации приемника. Т.е. на выходе у нас должен сформироваться один документ «ПриемНаРаботуВОрганизацию» содержащий информацию о всех сотрудниках.  Как инициировать создание одного документа в приемнике? Применили искусственный прием: в событии «Перед обработкой» правила выгрузки данных разместили код:

Данный код, размещенный в правиле выгрузки данных, спровоцирует выгрузку одного объекта, которого на самом деле нет в источнике.

Правило конвертации объектов настроили следующим образом:

В правилах конвертации свойств добавили две группы в соответствии с количеством табличных частей приемника, которые мы хотели заполнить.

В обработчике события «ПередВыгрузкой» правила конвертации группы свойств создали таблицу значений со структурой соответствующей структуре информации, которую необходимо передать в приемник. Циклом по справочнику «Сотрудники» заполнили эту таблицу и передали ее параметру «КоллекцияОбъектов».

Внутри группы для каждого передаваемого реквизита создали правило конвертации свойств  и в обработчике «Перед выгрузкой» разместили код:

Значение = ОбъектКоллекции.ИмяКолонкиТаблицыЗначений

Где ИмяКолонкиТаблицыЗначений – имя колонки таблицы, которую мы создали в ПКГС.

После того как мы сопоставили все передаваемые реквизиты правила конвертации свойств выглядели так:

Далее разработали правила для заполнения табличной части «ОсновныеНачисления» в приемнике.  Напомню, что видов расчета и исходной конфигурации нет. В справочнике «Сотрудники» конфигурации-источника есть информация об окладе, ставке и надбавках. 

Чтобы выполнить сопоставление - нашли в конфигурации-приемнике виды расчета соответствующие окладу и видам надбавок, добавили недостающие. Запомнили их коды.  Далее в обработчике «Перед обработкой» правила конвертации группы свойств, для табличной части «Основные начисления» разместили код:

Далее по аналогии создали правила конвертации свойств, для нужных реквизитов.

 

Пример 2: Перенос информации о лицевых счетах сотрудников в банке

 Организация перечисляет зарплату сотрудникам в банк для последующего зачисления на пластиковые карточки. Сотрудники имеют лицевые счета в различных банках. Сведения о лицевых счетах в источнике содержаться в справочнике «Сотрудники» в виде нескольких реквизитов.

В конфигурации-приемнике есть документ «ЗаявкаНаОткрытиеСчетов» в реквизитах которого указан банк а в табличной части список сотрудников,  которые имеют счет в этом банке.  Задача состоит в том, чтобы взять информацию из справочника в источнике и разложить ее в несколько (по количеству банков) документов в приемнике. Порядок действий:

1)    Создаем правило выгрузки данных в котором описываем таблицу значений с одной колонкой. Добавляем в таблицу значений количество строк равное количеству банков.  И присваиваем таблицу значений параметру «ВыборкаДанных».

2)  Создаем правило конвертации объектов, правила конвертации свойств и правила конвертации группы свойств:

3)    В обработчике события  «Перед выгрузкой» правила конвертации группы свойств формируем таблицу значений со структурой аналогичной структуре табличной части приемника:

4) Далее аналогично примеру 1.

Пример 3: Перенос информации об изменении окладов

Данная информация необходима для расчета среднего заработка. В источнике данная информация представлена периодическим  реквизитом «Оклад» справочника «Сотрудники».  В приемник ее можно перенести через документ «Кадровое перемещение организации» в котором есть табличная часть «ОсновныеНачисления», содержащая информацию о составе и размере начислений для каждого работника. Обычно изменение окладов в организации происходит одновременно для всех работников. Просматривая реквизит Сотрудники.Оклад можно получить даты изменения окладов за интересующий период. Далее технология работы аналогичная предыдущему примеру.

1)    Создаем правило выгрузке данных где в соответствующем обработчике определяем таблицу значений с реквизитом «Дт». Добавляем в таблицу значений количество строк равное количеству событий изменения оклада.

В реквизит «Дт» добавляем даты изменения оклада.

2)    Правило конвертации свойств выглядит так:

3)    Содержание обработчиков правил конвертации группы свойств :

- для табличной части «РаботникиОрганизации»:

тз=СоздатьОбъект("ТаблицаЗначений");
тз.НоваяКолонка("Сотрудник");
тз.НоваяКолонка("ДатаПриема");
тз.НоваяКолонка("ПодразделениеОрганизации");
тз.НоваяКолонка("Должность");
тз.НоваяКолонка("ЗанимаемыхСтавок");
тз.НоваяКолонка("МесячнаяТарифнаяСтавка");
сп=СоздатьОбъект("Справочник.Сотрудники");
сп.ВыбратьЭлементы();
Пока сп.ПолучитьЭлемент()=1 Цикл
    Если сп.ПометкаУдаления()=1 Тогда
        Продолжить;
    КонецЕсли;
    Если сп.ЭтоГруппа()=1 Тогда
        Продолжить;
    КонецЕсли;
    Если Источник.Дт
        Продолжить;
    КонецЕсли;
    тз.НоваяСтрока();
    тз.Сотрудник   = сп.ТекущийЭлемент();
    тз.ДатаНачала = Источник.Дт;
    тз.ПодразделениеОрганизации = сп.Подразделение.Получить(Источник.Дт);
    тз.Должность  = сп.Должность;
    Ставка = сп.Ставка.Получить(Источник.Дт);
    тз.ЗанимаемыхСтавок = ?(Ставка=0,1,Ставка);
    тз.МесячнаяТарифнаяСтавка = сп.Оклад.Получить(Источник.Дт);
КонецЦикла;
КоллекцияОбъектов = тз;

- для табличной части «ОсновныеНачисления»:

тз=СоздатьОбъект("ТаблицаЗначений");
тз.НоваяКолонка("Сотрудник");
тз.НоваяКолонка("ФизЛицо");
тз.НоваяКолонка("ВидРасчета");
тз.НоваяКолонка("Показатель1");
тз.НоваяКолонка("Валюта");

сп=СоздатьОбъект("Справочник.Сотрудники");
сп.ВыбратьЭлементы();
Пока сп.ПолучитьЭлемент()=1 Цикл
    Если сп.ПометкаУдаления()=1 Тогда
        Продолжить;
    КонецЕсли;
    Если сп.ЭтоГруппа()=1 Тогда
        Продолжить;
    КонецЕсли;
    Если Источник.Дт
        Продолжить;
    КонецЕсли;
    //***
    ОкладПоЧасам  =  сп.Оклад.Получить(Источник.Дт);
    Если ОкладПоЧасам > 0 Тогда
        тз.НоваяСтрока();
        тз.Сотрудник = сп.ТекущийЭлемент();
        тз.ФизЛицо    = сп.ТекущийЭлемент();
        тз.ВидРасчета= "00002";
        тз.Показатель1 = ОкладПоЧасам;
        тз.Валюта         = "BYR";
    КонецЕсли;
КонецЦикла;  
КоллекцияОбъектов = тз;

Надеюсь, данная публикация будет полезна специалистам, делающим первые шаги в разработке правил конвертации.

См. также

SALE! 20%

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

12.06.2017    141467    798    297    

419

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 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

55778 50200 руб.

04.08.2015    166427    332    277    

373

SALE! 10%

Перенос данных 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). Правила подходят для версии ПРОФ и КОРП.

35000 31500 руб.

15.12.2021    23985    169    51    

127

SALE! 10%

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

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

35000 31500 руб.

23.07.2020    51189    228    69    

185

SALE! 10%

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

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

53111 47800 руб.

03.12.2020    36568    94    66    

89

SALE! 10%

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    171155    303    257    

378

SALE! 15%

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

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

15300 13005 руб.

18.02.2016    186855    589    509    

526

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12000 руб.

25.09.2016    80634    312    250    

264
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Филин 370 16.01.13 21:47 Сейчас в теме
Со всеми примерами еще подробно не разобрался, но по первому есть вопросы.

Прием с выгрузкой "фальшивого" объекта -- крутой и иногда очень сильно спасает, но тут, кажется, можно было сделать проще. Я в похожей ситуации создавал "СписокЗначений", заполнял его значениями с представлениями, имена которых совпадают с именами полей приемника, а потом передавал в ПКО как "ВходящиеДанные". Табличные части передаются как ТаблицыЗначений. При этом получается, что не надо определять в каждом ПКС переменную "Значение", она сама из входящих данных подтянется. ПКО и ПКС выглядят более аккуратно что-ли, ну и по полной используются механизмы, заложенные в КД

Получается что-то вроде такого:

ПВД:
 ..тут может быть какой-то цикл...

данныеДокумента = создатьОбъект("СписокЗначений");
данныеДокумента.добавитьЗначение(1,"НомерДок");
данныеДокумента.добавитьЗначение("Перенос данных","Комментарий");

тчДокумента = создатьОбъект("ТаблицаЗначений");
тчДокумента.новаяКолонка("Сумма");
тчДокумента.новаяСтрока();
тчДокумента.сумма = 100;

данныеДокумента.добавитьЗначение(тчДокумента, "Платежи");

выгрузитьПоПравилу("заглушка",,данныеДокумента,,"Платежка");

...конец цикла...
Показать


В ПКО у реквизитов шапки и у ПКГС табличной части ставим флаг "получить из входящих данных". Бонус: в ПКС полей табличной части не надо ничего писать или ставить какие-то галки, все само схватится
Spacer; echo77; wowik; JinAir7460; GreenEye; alon; xavi; servs; fancy; +9 Ответить
2. LexSeIch 211 17.01.13 05:56 Сейчас в теме
Мир этому дому!
Конвертация - как шаманство - есть инструмент и правила, а все остальное свобода творчества. Судя по статье - это результат практического использования. Это всегда плюс.
3. Азбука Морзе 106 17.01.13 09:56 Сейчас в теме
После того как познакомился с XDTO-серилизацией конфигурацию "Конвертация данных" вспоминаю как страшный сон. Автор молодец. На конкретном примере показал убогость и неестественность правил и приемов КД при обмене данными между разнородными системами. За это и плюсую.
avz_1C; JinAir7460; servs; +3 2 Ответить
4. stanru1 91 17.01.13 12:02 Сейчас в теме
(3) особенно в 7.7 XDTO сериализация рулит :)
на практике перенос (планирование - разработка - тестирование - эксплуатация) из конфигурации 77 в 82 с помощью КД выполняется в несколько раз быстрее, чем альтернативные варианты.
user1027191; echo77; avz_1C; the1c; RomanBor; 1vasia1; gavrikprog; Spacer; dimas103; +9 Ответить
5. Istur 1474 17.01.13 13:15 Сейчас в теме
(3) xotr, раз такой крутой механизм для тебя, то почему нет ни одной твоей статьи про XDTO-сериализацию?
avz_1C; JinAir7460; Ish_2; +3 Ответить
6. AlexO 135 17.01.13 13:49 Сейчас в теме
(5) Istur,
так одно в страшном сне, другое - видимо, в прекрасном сне :)
7. Азбука Морзе 106 17.01.13 14:17 Сейчас в теме
(5) xotr не писатель, xotr читатель:)

п.с. В соседней ветке про XDTO целый цикл статей замутили, желающие могут ознакомится.
9. ARL 316 17.01.13 16:02 Сейчас в теме
Автор заслуживает громадное уважение за то, что самостоятельно разобрался с системой КД, т.к описание КД оставляет желать лучшего (мягко говоря). Но сейчас для программистов появился громадный помощник - курсы Гилева. Все подобные задачи на курсах выполняются в качестве домашнего задания, от "шаманства" ничего не остается.

(3) xotr, "На конкретном примере показал убогость и неестественность правил и приемов КД при обмене данными между разнородными системами."
На самом деле, это вопрос компетенции. Если разобраться с КД - то никакой убогости, вполне достойная и работоспособная система.
fomix; Bukaska; +2 Ответить
15. fomix 33 18.01.13 11:36 Сейчас в теме
(3) xotr, Интересно как в XDTO можно решить задачи по конвертации одного объекта в другой, получения из одного объекта двух и более, а также наоборот, настроить поиск и прочие фичи. Сдается мне у вас есть опыт тривиального обмена через XDTO между типовыми конфами в общем виде. Не помню, чтобы при использовании XDTO, можно было бы вмешаться в процесс формирования итогового файла выгрузки.
18. Азбука Морзе 106 18.01.13 13:11 Сейчас в теме
(15)formix
Синтаксис-помощник:
Механизм XDTO позволяет создать модель представления данных (модель типов и значений), которая, с одной стороны, обеспечивает возможность просто и естественно манипулировать данными в среде 1С:Предприятия 8, а с другой стороны, данная модель хорошо приспособлена для прозрачного преобразования данных в другие форматы, главным образом XML.

На практике достаточно:
1.создать модель документа "Ляляля" в базе приемнике

2.создадать и описать файл для записи данных в xlm-формате
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
НоваяЗаписьXML = Новый ЗаписьXML;
ФайлXML = ОсновныеПараметры.ФайлВыгрузки;
НоваяЗаписьXML.ОткрытьФайл(ФайлXML, ПараметрыЗаписиXML);
ЗаписьСообщения.НачатьЗапись(НоваяЗаписьXML, СтрокаТаблицыИнформации.УзелИнформационнойБазы);

// из описания типов фабрики XDTO выберем нужные для создания объектов
Фабрика = ФабрикаXDTO;
документыТип = Фабрика.Тип("http://www.lalala.ru", "Документы");
// дальше объектные реквизиты и табличные части
ЛяляляТип = ДокументыТип.Свойства.Получить("ляляля").Тип;
ТЧляляТип =ЛяляляТип .Свойства.Получить("ТЧляля").Тип;
ЭлементТЧляляТип =ТЧляляТип.Свойства.Получить("ЭлементТЧляля").Тип;

3.запросом получить все необходимые данные для заполнения ляляля-объекта

4. обработать выборку:
Документы = Фабрика.Создать(документыТип);
Пока Выборка.Следующий() Цикл
//создадим объект XDTO и заполним его
ЛяляляОбъект = Фабрика.Создать(ЛяляляТип);
ЗаполнитьЗначенияСвойств(ЛяляляОбъект, Выборка)
документыТип.ляляля.Добавить(ЛяляляОбъект);
КонецЦикла;
5. закончить формирование XML-файла

Фабрика.ЗаписатьXML(НоваяЗаписьXML, Документы);
ЗаписьСообщения.ЗакончитьЗапись();
НоваяЗаписьXML.Закрыть();
8. Yashazz 4790 17.01.13 15:53 Сейчас в теме
Да, это идея, полезная на практике. Ещё в 2008-м пользовался точно таким подходом, разве что между двумя восьмёрочными конфами. Спасибо автору, что подробно всё разжевали и показал, мне в своё время недосуг было.
10. Stepan_1c 17.01.13 16:07 Сейчас в теме
спасибо за статью) на пару дней пораньше бы еще лучше было) эээх)
11. DoctorRoza 17.01.13 19:55 Сейчас в теме
Хорошая статья, очень нужная информация! Плюс однозначно! :)
12. KliMich 18.01.13 01:54 Сейчас в теме
Спасибо! Наглядные и показательные примеры, когда надо "приготовить из ничего..."
13. IgorXml 730 18.01.13 09:36 Сейчас в теме
Спасибо. Наглядно сделал.
14. OVladius 32 18.01.13 11:30 Сейчас в теме
Где вы раньше были? Всех сотрудников с 7-ки руками фигачили :(
16. Boroda 90 18.01.13 12:28 Сейчас в теме
Отличная статья! Помогла разобраться в некоторых вопросах, где раньше тупил. Спасибо автору!
17. sa1m0nn 28 18.01.13 12:49 Сейчас в теме
Спасибо за статью, нормально написано, хоть и не ново.
Видать, стал я матёрым конвертатором, ничего не удивило)
20. AlexO 135 18.01.13 14:14 Сейчас в теме
(17) sa1m0nn,
нет, просто тут затронута сугубо узкая специфика.
И все делается кодом - все преимущества КД сведены только к выгрузке в XML.
19. AlexO 135 18.01.13 14:12 Сейчас в теме
Курсы - это когда дают знания, которые потом народ не знает, куда применить.
Все это делается более наглядным и быстрым способом - через DBF.
23. saiten 246 21.01.13 15:36 Сейчас в теме
(19)
Все это делается более наглядным и быстрым способом - через DBF.

Кому-то каменным топором удобнее, кому-то - станком с ЧПУ... Каждому своё.
26. AlexO 135 24.01.13 10:05 Сейчас в теме
(23) saiten,
ну конечно, чем непонятнее и замуторнее - тем лучше: и сам не понимаешь, что там делается, и коллеги ничего не разберут, но зато сколько таинственности и значимости... :)
А вот и слушатели под стать:
Человек, победивший КД, уже достоин уважения
28. saiten 246 24.01.13 16:39 Сейчас в теме
(26) Думаю, эта тема мусолилась уже достаточно, чтобы не поднимать её ещё раз. А непонятность, собственно, - вещь относительная.
31. vkr 29.01.13 08:10 Сейчас в теме
(19) AlexO
Да, Вы правы...
Через DBF все получается гораздо быстрее, прозрачнее и более управляемо.
Можно из одного большого выгруженного файла с кучей информации брать
по необходимости то, что сейчас нужно, а также делать преобразования
объектов "на лету". Причем, для совершенно разных, иногда очень слабо
совместимых конфигураций ( даже и не 1С-овских иногда :) )
Но, все равно, автору большое спасибо за подробное описание процесса !
21. Tishu 3 21.01.13 04:42 Сейчас в теме
Из всей неисчерпаемой как атом КД можно зазубрить один приём - в ПВД создается таблица значений по структуре совпадающей с объектом из Приемника и вызывается ПКО - и можно быстро решать массу одноразовых задач. Достаточно посмотреть примеры конвертаций из КД.
22. AlexO 135 21.01.13 10:42 Сейчас в теме
(21) Tishu,
"одноразовых" - это только создание в приемнике тех объектов, которых нет с источнике.
24. INSh 22 22.01.13 11:38 Сейчас в теме
Человек, победивший КД, уже достоин уважения :)
А еще этот человек не поленился и поделился своими достижениями!
Молодец! Плюс.
25. karakozov 24.01.13 09:50 Сейчас в теме
XDTO Конечно отличный механизм, и не буду защищать КД, но тем не менее очень часто нужно сделать обмен и очень быстро, правильно описать большие объемы по средствам XDTO это то же серьезная работа, особенно если меняешься между разными структурами метаданных или вообще между 77 -> 8.2 . Или еще усложним, из 8.2 в иные реляционные структуры с извесной нам структурой но не свойственной 1С источнику вообще по структуре МД.Имеет место быть в общмею
27. DieseL_OFF 24.01.13 10:33 Сейчас в теме
Эххх мне бы лучше другое
29. Sasha255n 25.01.13 15:48 Сейчас в теме
Спасибо очент необходимое и интересное ренение
30. Sasha255n 25.01.13 15:48 Сейчас в теме
Как алтернатива КД имеет место на существование спасибо
32. kurvik 29.01.13 15:08 Сейчас в теме
Очень интересное решение.В практических делах пригодиться,особенно если работаешь с разными структурами метаданных или вообще между 77 -> 8.2 надо делать переброску.
33. fnv 10.02.13 19:16 Сейчас в теме
Спасибо за информацию) Оч. сложные приемы конвертации, я бы через OLE, наверное, делала, если бы мне пришлось делать такой перенос)
34. Franchiser 47 04.04.13 14:16 Сейчас в теме
Нового ничего не узнал, но статья заслуживает уважения. Рекомендую прочитать методичку О. Кузнецовой, все эти моменты там есть.
Недостаток использования переменной ВыборкаДанных с моей точки зрения - слишком много написанного кода, не всегда наглядного. То есть чтобы понять как какой объект или свойство трансформируется нужно читать весь код в обрабочике "передобработкой" ПВД. Кроме того фильтры при выгрузке из 7.7 работать не будут.
В КД есть более эффективные и наглядные механизмы: использование переменных ВходящиеДанные и Исходящиеданные, а также КлючВыгружаемыхДанных, функции ВыгрузитьПоПравилу(). Возможно в этой задаче разница особенно и не заметна, но в основной массе задач, использование указанных мной переменных более оправдано.
38. Romany 02.03.15 20:08 Сейчас в теме
(34) Franchiser, Здравствуйте. Как раз разбираюсь с этими переменными, есть много вопросов. Так например задача такая - Для простоты будем считать, что конфигурации самописные, и разные по структуре. В источнике есть документ, в приемнике надо из этого документа создать два объекта 1) справочник. 2) РегистрСведенийЗапись. Пытаюсь сделать так. 1) ПКО - Документ ->Справочник,
2) ПКО Источника нет -> РегистрСведенийЗапись, ПКС - В приемнике - структура регистра (3 поля), стоит флаг "Получить из входящих данных". Далее в ПВД Документ. В обработчике "ПослеВыгрузки" запросом получаю таблицу движений документа, для переноса их в регистр сведений в приемнике. Тут же надо вызвать функцию "ВыгрузитьПоПравилу()", но вот сложности. В какие параметры, чего пихать, и как это вообще должно работать. То есть, можно ли в параметр ИсходящиеДанные записать таблицу значений (Выгрузку запроса) или создать выборку, и в цикле формировать структуру, и вызывать выгрузить по правилу. Скажу сразу, в моем случае, ни так ни эдак не работает. Обмен происходит по средствам типовой обработки обмена. Если не сложно расскажите в двух словах, как правильно с этим работать, и использовать.
35. &rew 52 26.06.13 07:19 Сейчас в теме
Да, статья полезная. Подобный способ сам использовал при переносе из самописной 7.7 в типовую УТ 10.3, кстати методичка Кузнецовой мне помогла.
Вообще КД интересная штука, иногда осознание того, как работает правило приходит только после создания этого правила.
36. &rew 52 26.06.13 07:20 Сейчас в теме
Кстати белый серого сейчас через бедро на иппон бросит.
Зеленоград; 1vasia1; +2 Ответить
37. echo77 1906 17.07.13 16:59 Сейчас в теме
(0) ИМХО, для каждого ПКС в ПГКС создавать обработчик:

Значение = ОбъектКоллекции.ИмяКолонкиТаблицыЗначений


не надо
vermouth; +1 Ответить
39. ultrannge89 24.06.15 14:58 Сейчас в теме
Добрый день. А есть ли возможность отследить в событии после загрузки, попал ли определенный документ в выгрузку? Мне важно знать есть ли в файле, другой документ по такому же договору как мой, только с другим видом... Не могу нигде найти(
40. Pirat-37 5 06.07.15 16:03 Сейчас в теме
(39) ultrannge89, через [Сообщить()] выводите, в событии [При загрузке].
41. nems 22.09.15 17:29 Сейчас в теме
Здраствуйте! Подскажите, плиз, как перенести справочник Номенклатура по отбору
ВходящиеДанные = Новый Структура;

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ТоварыОрганизацийОстатки.Номенклатура
		|ИЗ
		|	РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТоварыОрганизацийОстатки
		|ГДЕ
		|	ТоварыОрганизацийОстатки.КоличествоОстаток > 0";

	Результат = Запрос.Выполнить();

	Выборка = Запрос.Выполнить().Выгрузить();
	
	
	ВходящиеДанные.Вставить("НоменклатураТабл", Выборка);
	
	ВыгрузитьПоПравилу(,,ВходящиеДанные,,"Номенклатура1")
Показать


Выгрузка проходит успешно.

Но есть проблема: Как правильно задать ПКО и ПКС ?
Прикрепленные файлы:
42. Kvitka_ru 14.06.17 12:30 Сейчас в теме
Спасибушки! безценная консультация!!
43. echo77 1906 30.04.19 08:59 Сейчас в теме
Обычно весь выгружаемый объект формируют в ПВД, а не в ПКГС и разных местах.
44. SergeMalikov 572 03.05.19 12:38 Сейчас в теме
(43) Да. Можно было бы сформировать в ПВД структуру соответствующую объекту в приемнике и передать нужному ПКО. Это был бы более наглядный вариант.
Оставьте свое сообщение