- от автора admin
Содержание
- Работа с конвертацией данных
- Конвертация перечисления.
- Секреты конфигурации «1С Конвертация данных»
- Теперь подробнее по шагам, как выполнить конвертацию данных из 8.3 в 7.7 (версия КД 2.1).
- Конфигурация «Конвертация данных 2.0» для 1С:Предприятия v8.0
- Создание правил обмена
- Учебник по 1С Конвертации данных (редакция 2) Правила конвертации объектов
Работа с конвертацией данных
Передача программным путём Массива (Таблицы значений, Списка значений) в параметры.
На примере ЗУП 2.5: в обработке «Выгрузка данных в бухгалтерскую программу» на форме размещен реквизит, в котором пользователь подбирает нужные счета дебета, далее требуется передать выбранные пользователем счета в правила выгрузки.
В типовых конфигурациях есть удобный механизм «СериализоватьОбъектXDTO», саму функцию легко найти в интернете, а мне достаточно в процедуре «ВыгрузитьПоПравиламБух30» формы вписать вот это:
МассивСчетовДТ = ТиповыеОтчеты.СериализоватьОбъектXDTO(МассивСчетовВыбранныхПользователем);
И далее там же:
НовыйПараметр = мУниверсальнаяВыгрузкаДанных.ТаблицаНастройкиПараметров.Добавить(); НовыйПараметр.Значение = МассивСчетовДТ; НовыйПараметр.Имя = «МассивСчетовДТ»; НовыйПараметр.Наименование = «МассивСчетовДТ»; НовыйПараметр.ПередаватьПараметрПриВыгрузке = Истина;
Далее в Конвертации данных добавляем параметр.
Перед выгрузкой данных выполняем проверку:
Если ЗначениеЗаполнено(Параметры.МассивСчетовДТ) Тогда МассивСчетовДТ = ТиповыеОтчеты.ПрочитатьОбъектXDTO(Параметры.МассивСчетовДТ); КонецЕсли;
И используем десериализованный массив, например вот так:
Если МассивСчетовДТ<>Неопределено Тогда //ваш код КонецЕсли;
Использование произвольного алгоритма для создания объекта без источника.
В ПВД (правило выгрузки данных):
ТекстЗапроса = Запросы.Прием.Текст; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр(«ПустаяДата», Дата(1,1,1)); Запрос.УстановитьПараметр(«ДатаОкончания», КонецДня(ДатаОкончания)); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Отказ = Истина КонецЕсли; ВыборкаДанных = РезультатЗапроса.Выгрузить();
Запросы размещаются на закладке «Алгоритмы\Запросы» без кавычек.
Установка своего Значения (Вариант 1).
В описанном выше документе в табличной части есть реквизит «ВидРасчета» для которого правилом конвертации является ПКО «ОсновныеНачисленияОрганизаций».
Создавать новые ВидыРасчетов в базе загрузки из базы выгрузки я не хочу (отключаю поиск по «Коду», «Пометка на удаление» мне тоже не интересна), пытаюсь найти объекты по Наименованию
и в случае, если Наименование определенное, то присваиваю ему другое значение (другими словами. устанавливаю соответствие).
Если Источник.Наименование = «Оклад по среднечасовой за год учетный период 2014» Тогда Значение = «Оклад по часам»; КонецЕсли; Если Источник.Наименование = «Оклад по среднечасовой за год учетный период 2017» Тогда Значение = «Оклад по часам»; КонецЕсли; Если Источник.Наименование = «Оклад по среднечасовой за год учетный период 2016» Тогда Значение = «Оклад по часам»; КонецЕсли;
Установка своего Значения (Вариант 2).
Ситуация вторая, мне не интересно что было в источнике, я хочу просто задать своё конкретное значение.
Наименование у нас имеет тип «Строка», так что Значение задано строкой.
Особенности выгрузки документов (Задать своё значение реквизита в произвольном запросе).
Рассмотрим вариант произвольного запроса.
Как видно из картинки выше, в запросе выводим и реквизиты и табличную часть (и) документа (обведено голубым квадратом).
В ПВД:
ТекстЗапроса = Запросы.ОтражениеЗарплатыВРеглУчете.Текст; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр(«Организация», Данные.Организация); ТаблицаДанных = Запрос.Выполнить().Выгрузить(); Для каждого СтрокаТД Из ТаблицаДанных Цикл ТаблицаПроводок = СтрокаТД.ОтражениеВУчете; //1 Для каждого СтрокаТП Из ТаблицаПроводок Цикл Если МассивСчетовДТ<>Неопределено И МассивСчетовДТ.Найти(СтрокаТП.СчетДт) <> Неопределено И НЕ СтрокаТП.ПодразделениеДт.Родитель.Пустая() Тогда //2 Запрос = Новый Запрос; Запрос.Текст = Запросы.ПодразделениеОрганизацииРодитель.Текст; Запрос.УстановитьПараметр(«Ссылка», СтрокаТП.ПодразделениеДт); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Если Выборка.Следующий() Тогда СтрокаТП.ПодразделениеДт = Выборка.Ссылка; //3 КонецЕсли; КонецЕсли; КонецЦикла; ТаблицаПроводок.Свернуть(«СчетДт,СчетКТ,СубконтоДт1,СубконтоДт2,СубконтоДт3,СубконтоКт1,СубконтоКт2,СубконтоКт3,ОтражениеВУСН,ВидНачисленияУдержания,ПодразделениеДт,ПодразделениеКт,КодПоОКАТО,КодПоОКТМО,КПП,РегистрацияПоОКТМО»,»Сумма,СуммаНУ,СуммаВР,СуммаПР»); СтрокаТД.ОтражениеВУчете = ТаблицаПроводок.Скопировать(); КонецЦикла; ВыборкаДанных = ТаблицаДанных.Скопировать(); ТаблицаДанных = Неопределено;
//1 — табличная часть документа
//2 — не суть, просто какое-то условие (завист от задачи)
//3 — задаём другое значение
Задать своё значение реквизиту табличной части в ПКС, использование Алгоритма, задать другое ПКО.
«Источник» содержит в себе ссылку.
Обратиться к строке табличной части можно с помощью переменной «ОбъектКоллекции».
Если ОбъектКоллекции.СчетДт.ПринадлежитЭлементу(ПланыСчетов.Хозрасчетный.РасчетыПоСоциальномуСтрахованию) Тогда ИмяПКО = «РегистрацииВНалоговомОргане»; Иначе Источник = ОбъектКоллекции.СубконтоДт2; Выполнить(Алгоритмы.ПолучитьПКОСубконтоПоТипуЗначения); Если ИмяПКО = «» Тогда Отказ = Истина; КонецЕсли; КонецЕсли;
Далее всё просто.
Алгоритм выглядит вот так:
Если в результате получаем ИмяПКО = «», отключаем ПКС (Отказ = Истина;), удобно для случаев, когда в одном документе есть реквизит, а в другом — нет. Например, подобная ситуация возникает, если в одной системе ЗУП 2.5 установлена программа Бухучета 7.7, а в другой — Бухгалтерия 3.0
Несколько часто используемых строчек кода в ПКО.
Перед выгрузкой:
РежимЗаписи = «Проведение»;
При загрузке:
Отказ = ОбъектНайден;
После загрузки:
Объект.Ответственный = Пользователи.ТекущийПользователь();
Несколько часто используемых строчек кода в ПВД.
Перед выгрузкой (подойдет для варианта стандартной выгрузки, когда при обмене выгружаются зарегистрированные объекты):
Отказ = Не Объект.Проведен;
Разное.
Значение = ПривестиНомерКДлине(Источник.НомерДок,8);
Найти ссылку в приёмнике, которой нет в источнике.
Пример приведён, чтобы показать все возможности конвертации.
Предположим, в источнике есть информация о табельном номере сотрудника, мне необходимо определить сотрудника.
Вариант 1 приведен с целью, чтобы показать идею. Но, поскольку запрос в цикле — это зло, смотри Вариант 2 🙂
В запросе установите галочку:
Еще одна проблема, с которой мне пришлось давным-давно столкнуться и по неопытности было потрачено какое-то время —
Конвертация документа «Перенос данных», или, например «Операция» (Перенос движений документа).
В выгрузке описания структуры установите галочку, как показано на рис. ниже.
Далее в конвертации данных:
Галочками отметьте необходимые регистры, по которым хотите перенести движения, они будут добавлены так же, как и табличные части документа. Менять стандартные правила выгрузки не нужно (то есть не нужно писать никаких запросов), движения будут выгружены автоматически.
Конвертация перечисления.
Если исходного значения перечисления в базе источнике нет, то нам не нужно ПКО для перечисления.
Рассмотрим простейший пример:
ПКС такого перечисления:
Использование параметра в табличной части.
В табличной части «ОтражениеВУчете» добавим параметр «ВидРезерва» и зададим ему нужное нам значение.
Далее после загрузки объекта можем обратиться к параметрам любым способом.
Я привела два примера:
ТаблицаПараметровТовары = ПараметрыОбъекта; 1. МассивПараметровИзТЧ = ТаблицаПараметровТовары.ВыгрузитьКолонку(«ВидРезерва»); ИЛИ 2. ТЗОтражениеВУчете = Объект.ОтражениеВУчете.Выгрузить(); ТЗОтражениеВУчете.Колонки.Добавить(«ВидРезерва»,Новый ОписаниеТипов(«Строка»,,,,Новый КвалификаторыСтроки(6))); ТЗОтражениеВУчете.ЗагрузитьКолонку(ТаблицаПараметровТовары.ВыгрузитьКолонку(«ВидРезерва»),»ВидРезерва»);
Модули платформы 1С:Предприятие | оглавление | Этапы обучения в школе программирования (как стать программистом 1С с нуля) |
Секреты конфигурации «1С Конвертация данных»
Инструкция создания одностороннего обмена данными между конфигурациями «Источник» и «Приемник» с нуля:
- Скачиваем последнюю версию конфигурации «Конвертация данных». Сейчас на сайте ИТС перестали почему-то публиковать полные дистрибутивы, поэтому находим где-нибудь изначальный релиз и накатываем обновления с сайта.
- В процессе установки обновлений у вас в папке с шаблонами конфигураций (смотрите её расположение в настройках окна запуска 1С) появится папка Conversion с вложенными папками версий конвертации данных. Заходите в последнюю версию на которую обновились и берите оттуда следующие файлы:
MD80Exp.epf, MD81Exp.epf, MD82Exp.epf, V8Exchan.epf,
V8Exchan81.epf, V8Exchan82.epf. - Отдельно обращаю ваше внимание. Для успеха операции крайне важно использовать эти файлы из той версии конфигурации «Конвертация данных» в которой вы создаете правила обмена.
- Следующий этап: выгрузка метаданных Источника и Приемника в xml файлы. Для этого предназначена обработка MD**Exp.epf. Галки выгружать регистры и прочее снимаете. Используйте нужную в зависимости от платформы. Опять же, повторюсь, — из одного и того же комплекта конвертации данных. Иначе ничего не получится.
- Теперь открывайте базу «Конвертация данных».
- Заходите в «Справочники»-«Конфигурации». Добавить новый элемент. В качестве файла загрузки указываете выгруженные метаданные. Выбираете «Загрузить в новую конфигурацию». Таким образом создаете две конфигурации с именами, например, Источник и Приемник.
- Теперь заходите в «Справочники»->»Конвертации». Добавить новый элемент. Указываете в качестве конфигураций источника и приемника наши созданные конфигурации.
- Конвертация данных предложит вам создать правила конвертации объектов и выгрузки автоматически. Соглашайтесь. Тут я подробностей писать не буду. Об этом в интернете много уже есть.
- Теперь выгрузите созданный файл правил обмена на диск.
- И, наконец, крайне важно для выгрузки и загрузки данных по созданным нами правилам обмена использовать не встроенный универсальный обмен в формате XML из самих конфигураций, а использовать наши V8Exchan**.epf, упомянутые выше.
Итак, главное правило: MD**Exp.epf и V8Exchan**.epf должны быть из одного комплекта, прилагающегося к версии Конвертация данных. Причем той же версии, в которой создавались правила обмена. И никаких встроенных обработок для универсального обмена в формате XML, только V8Exchan**.epf.
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Модули платформы 1С:Предприятие | оглавление | Этапы обучения в школе программирования (как стать программистом 1С с нуля) |
Конвертация данных из 1С 8.3 в 7.7 (версия КД 2.1). Перенос данных из 8.3 в 7.7. Создание в современной 1С 8.3 XML в формате КД2. Инструкции и примеры переноса данных из любой современной 1С 8.3 в устаревшую конфигурацию 1С 7.7, через Конвертацию данных 2
У Вас получится обычный файл обмена КД2 в формате XML для загрузки в 7.7 и модуль обмена, который нужно вcтавить в пустую обработку «V77Imp.ert». Краткий графический экскурс вместо вступления. Результат сохраненный файл обмена данными «ПравилаОбменаДанными.xml»:
<ПравилаОбмена> <ВерсияФормата РежимСовместимости=»РежимСовместимостиСБСП20″>2.01</ВерсияФормата> <Ид>294df6d9-6dfe-4e6c-aeef-a0af04fc89cc </Ид> <Наименование>УправлениеПредприятием —> Комплексная</Наименование> <ДатаВремяСоздания>2019-10-17T08:32:25</ДатаВремяСоздания> <Источник ВерсияПлатформы=»8.0″ ВерсияКонфигурации=»2.4.8.63″ СинонимКонфигурации=»УправлениеПредприятием»>Управление предприятием</Источник> <Приемник ВерсияПлатформы=»7.7″ ВерсияКонфигурации=»7.70.424″ СинонимКонфигурации=»Комплексная»>Комплексная конфигурация, редакция 4.2</Приемник> <ПередЗагрузкойДанных>Параметры = СоздатьОбъект(«СписокЗначений»);</ПередЗагрузкойДанных> <ПослеЗагрузкиДанных>Для Сч = 1 По Параметры.РазмерСписка() Цикл Док = Параметры.ПолучитьЗначение(Сч); Док.Провести(); КонецЦикла; </ПослеЗагрузкиДанных> <Параметры/> <Обработки/> <ПравилаКонвертацииОбъектов> <Группа> <Код>Документы</Код> <Наименование>Документы</Наименование> <Порядок>50</Порядок> <Правило> <Код>ПКО</Код> <Наименование>Документ: Приходный кассовый ордер</Наименование> <Порядок>50</Порядок> <ПослеЗагрузки>Объект.ЮрЛицо = Объект.Фирма.ЮрЛицо; Объект.Автор = глПользователь; Объект.Валюта = глРубли; СпрДвиженияДенежныхСредств = СоздатьОбъект(«Справочник.ДвиженияДенежныхСредств»); СпрДвиженияДенежныхСредств.НайтиПоКоду(«00010»); Объект.ДвижениеДенежныхСредств = СпрДвиженияДенежныхСредств.ТекущийЭлемент(); Объект.НазначитьТип(«Счет», «Счет.Основной»); Объект.Счет = СчетПоКоду(«90.1.2″); Параметры.ДобавитьЗначение(Объект); </ПослеЗагрузки> <Источник>ДокументСсылка.ПриходныйКассовыйОрдер</Источник> <Приемник>ДокументСсылка.ПКО</Приемник> <Свойства> <Свойство Поиск=»true»> <Код>7</Код> <Наименование>Дата —> ДатаДок</Наименование> <Порядок>50</Порядок> <Источник Имя=»Дата» Вид=»Свойство» Тип=»Дата»/> <Приемник Имя=»ДатаДок» Вид=»Свойство» Тип=»Дата»/> </Свойство> …
Пример файла модуля загрузки:
Теперь подробнее по шагам, как выполнить конвертацию данных из 8.3 в 7.7 (версия КД 2.1).
1) Заходим в справочник конвертаций.
2) Создаем группу правил конвертации (очень полезно в конвертации пользоваться группами).
3) Заходим в эту группу и создаем новый элемент справочника конвертаций, в качестве источника указываем конфигурацию 8.3 и в качестве применика — конфигурацию 7.7.
4) При создании обработчиков код модулей пишем на встроенном языке 1С: Предприятие 7.7.
5) Выгрузка правил и модуля обмена данными для загрузки в 1С 7.7. В последней версии конвертации есть ошибка, приводящая к неработоспособности модуля обработки загрузки данных на платформе 7.7 (ошибка есть в конвертации 2.1.8.2, обработка ВыгрузкаКонвертации, макет ПроцедурыИФункцииМодуляЗагрузки, строка 2714 «Если ИдРеквизита <> «ДатаДок» ИЛИ ИдРеквизита <> «ПометкаУдаления» Тогда»), она исправлена в //infostart.ru/public/267853/
При нажатии на кнопку «Сохранить правила» надо указать путь для выгрузки правил обмена и текстового файла модуля загрузки в 7.7
6) Модуль загрузки нужно вcтавить в пустую обработку «V77Imp.ert» из комплекта поставки «Конвертации данных 2.1», которая затем открывается в 1С 7.7 приемнике и загружает данные по нашим правилам.
У меня есть еще статья о том, как облегчить отладку правил конвертации на стороне 1С 7.7 «Доработка конвертации данных КД2 (версии 2.1). Расширенная диагностическая информация при выгрузке по правилам из 1С 7.7 и при загрузке в 1С 7.7» //xn—1-6kca8bgsjrjhe.xn--p1ai/public/1137213/
Здесь, на Инфостарт, есть примеры переносов данных из 8.3 в 7.7
Прилагаю краткую ознакомительную информацию по конфигурации «Конвертация Данных 2» относящуюся к тем временам, когда переносы из 8.3 в 7.7 еще не были забыты и часто использовались, на сайте «Скрипт-кодинг», автор обзора Людоговский Александр https://www.script-coding.com/v8/v8_Convert.html
Конфигурация «Конвертация данных 2.0» для 1С:Предприятия v8.0
Конфигурация «Конвертация данных 2.0» для 1С:Предприятия v8.0, поставляемая на дисках ИТС, является средством для организации конвертации данных между любыми конфигурациями, функционирующими как на платформе «1С:Предприятие 7.7», так и на платформе «1С:Предприятии 8.0». Конфигурация обеспечивает очень высокую скорость разработки средств обмена данными в сочетании с большой гибкостью настройки таких средств.
Порядок использования конфигурации:
- С помощью специальных внешних обработок, поставляемых вместе с конфигурацией, осуществляется создание XML-файлов описания структуры метаданных как конфигурации-источника, так и конфигурации-приёмника. Обработки запускаются непосредственно в базах источника и приёмника. После установки конфигурации «Конвертация данных» внешние обработки MD77Exp.ert (для 7.7) и MD80Exp.epf (для 8.0) располагаются в каталоге шаблонов, например: C:\Program Files\1cv8\tmplts\1c\Conversion\2_0_13_1\
- XML-файлы описания структуры метаданных конфигурации-источника и конфигурации-приёмника загружаются средствами конфигурации в информационную базу «Конвертации данных», где затем настраиваются правила обмена. После этого правила обмена выгружаются средствами конфигурации в XML-файл правил.
- С помощью специальных внешних обработок, поставляемых вместе с конфигурацией, осуществляется выгрузка данных из конфигурации-источника и их загрузка в конфигурацию-приёмник. Обработки запускаются непосредственно в базах источника и приёмника. После установки конфигурации «Конвертация данных» внешние обработки V77Exp.ert, V77Imp.ert (для 7.7) и V8Exchan.epf (для 8.0) располагаются в уже упомянутом каталоге шаблонов. При выгрузке данных используется XML-файл правил обмена. При загрузке используется XML-файл данных, сформированный при выгрузке (он будет содержать и данные, и правила). Если при настройке правил обмена создавались обработчики событий для тех или иных объектов/реквизитов, возможно, придётся заменить код обработок V77Exp.ert и/или V77Imp.ert на код, сгенерированный конфигурацией «Конвертация данных» в момент выгрузки в XML-файл правил (такой код выгружается в указанный текстовый файл).
Второй этап (создание правил обмена в конфигурации «Конвертация данных») рассмотрим подробнее.
Создание правил обмена
Для хранения описаний структуры метаданных используются справочник Конфигурации, а также подчинённые справочники Объекты (описания объектов метаданных), Свойства (реквизиты объектов) и Значения (значения перечислений и предопределенных элементов объектов метаданных), которые не предусматривают редактирования вручную.
С помощью обработки «Загрузка структуры метаданных» загружаются XML-файлы описания структуры метаданных как конфигурации-источника, так и конфигурации-приёмника. Флажок «Новая конфигурация» позволяет произвести обновление уже загруженного описания метаданных (если он снят). Если флажок «Новая конфигурация» установлен, создаётся новый элемент справочника «Конфигурации».
Просмотреть загруженную структуру метаданных той или иной конфигурации можно в справочнике «Объекты метаданных», открыв его кнопкой «Описание конфигурации» на панели инструментов, и выбрав для просмотра нужную конфигурацию.
После загрузки структуры метаданных источника и приёмника необходимо зарегистрировать в информационной базе новый элемент справочника «Конвертации», открыв его с помощью меню «Справочники». Выбрав источник и приёмник, можно определить наименование конвертации с помощью кнопки «Сформировать». В поле «Имя файла правил обмена» надо указать путь к XML-файлу для выгрузки правил обмена.
Примечание: для одной и той же пары конфигураций можно создавать и редактировать несколько правил обмена данными, предназначенных для разных целей.
Настройка правил осуществляется в форме «Настройка правил обмена». Она вызывается из панели инструментов одноименной кнопкой. Необходимо выбрать для редактирования нужную конвертацию.
С помощью пункта меню «Обработки» — «Синхронизация объектов» в форме «Настройка правил обмена» можно запустить обработку «Автонастройка правил конвертации объектов». Обработка проводит автоматическую синхронизацию всех объектов, предлагая воспользоваться результатом, включая или отключая флажки. По кнопке «Записать» будут созданы новые правила конвертации объектов, которые будут отображены в форме «Настройка правил обмена». Создать правило конвертации можно и «вручную».
С помощью пункта меню «Обработки» — «Синхронизация свойств объектов» в форме «Настройка правил обмена» можно запустить обработку автонастройки свойств, которая работает аналогично обработке «Автонастройка правил конвертации объектов».
В форме «Настройка правил обмена» часть правил конвертации свойств может быть отключена с помощью флажка в колонке «Отключить» табличной части на закладке «Конвертация свойств». При отключении правила оно не будет исполняться, а реквизиты источника, указанные в нём, выгружены не будут.
Необходимо задать принцип, по которому будет устанавливаться соответствие объектов. Для этого можно воспользоваться флажками в колонке «Поиск» табличной части на закладке «Конвертация свойств». Если флажок установлен, то перед обработкой объекта алгоритм загрузки будет искать объект по значению реквизита приемника, указанного в правиле. Если в колонке «Поиск» не будет включенных флажков, то элементы при каждой загрузке будут создаваться заново. Примечание: для иерархических справочников поле «ЭтоГруппа» в колонке «Поиск» должно быть отмечено.
Если при выгрузке справочника синхронизация происходит не по коду, и при этом нужно присвоить новому объекту новый код, придётся воспользоваться скриптом. Следует открыть правило конвертации объекта и задать код скрипта на вкладке «После загрузки» (это алгоритм, выполняемый перед записью загруженного объекта). Код может быть наподобие следующего:
Если Объект.Код = 0 Тогда Объект.УстановитьНовыйКод(); КонецЕсли;
Далее на форме «Настройка правил обмена» необходимо перейти к закладке «Правила выгрузки данных» и создать правило(а) выгрузки.
Следует заметить, что различные обработчики событий могут задаваться для правил конвертации объектов, правил конвертации свойств, правил выгрузки данных и прочих правил, что обеспечивает очень большую гибкость. Обработчики событий пишутся на том языке, на котором они должны исполняться в момент выгрузки или загрузки (имеются в виду встроенные языки v7.7 и v8.0).
Когда открыта форма конкретного правила конвертации объектов, конвертации свойств, выгрузки данных и т.п., вы можете получить довольно подробную справку по обработчикам событий, нажав клавишу F1. В справочной статье будут описаны предопределённые переменные, доступные в обработчиках различных событий. Следует заметить, что набор доступных предопределённых переменных отличается для правил конвертации объектов, конвертации свойств, выгрузки данных и т.д. (для каждого случая открывается своя справочная статья).
Например, предопределённая переменная Значение в обработчике события «Перед выгрузкой» для правила конвертации свойств позволит непосредственно задать идентификатор перечисления в виде строки (если свойство имеет тип какого-то перечисления). Ещё один пример: предопределённая переменная ИмяПКО там же позволит задать имя правила конвертации объектов, по которому производится преобразование значения этого свойства (т.е. правило конвертации объектов, используемое для этого правила конвертации свойств, можно поменять в скрипте «на лету» по каким-то условиям в зависимости от данных источника). Такую смену правила конвертации объектов можно использовать для случая, когда, например, значение одного справочника-источника должно преобразовываться к значениям нескольких различных справочников-приёмников в зависимости от каких-то условий. Предопределённая переменная Источник в обработчиках событий для правил конвертации свойств является ссылкой на выгружаемый объект, которому принадлежит текущее свойство. Эта переменная позволит обратиться в скрипте ко всем свойствам объекта-источника через точку, и т.д., и т.п.
Для выполнения генерации файла правил обмена нужно вызвать обработку «Выгрузка правил обмена» по кнопке «Сохранить правила». Необходимо указать XML-файл для сохранения правил (по умолчанию это поле будет заполнено из элемента справочника «Конвертации»). Правила сохраняются в файл с помощью кнопки «Выполнить». Здесь же можно указать путь к текстовым файлам модулей выгрузки/загрузки, если в обмене участвовали конфигурации v7.7 и задавался код обработчиков событий, который должен выполниться на v7.7 при загрузке и/или выгрузке данных. Заменить код обработок V77Exp.ert и/или V77Imp.ert на код, сгенерированный конфигурацией «Конвертация данных», можно в Конфигураторе v7.7 простым копированием/вставкой всего текста модуля.
В ЗУП в справочнике ФизЛиц нет поля даты регистрации по месту жительства. Это поле засунуто в регистр сведений ПаспортныеДанныеФизЛиц
Для того, чтобы вытащить сведения о дата регистрации нужно в ПКО ДатаРегистрации в обработчике «Перед выгрузкой» сделать запрос к регистру сведений ПаспортныеДанныеФизЛиц
Источник пустой, т.к. в ЗУП в справочнике нет такого поля. Нюанс в том, что
1. в запросе Источник- это элемент справочника ЗУП ФизЛица.
2. Данные в Дату Регистрации передаются через переменную Значение.
Теперь адреса в ЗУП они хранятся в регистре КонтактнаяИнформация, а в БП в табличной части элемента справочника.
Добавляем через синхронизацию свойств табличную часть КонтактнаяИнформация. Источник оставляем пустым. На папке КонтактнаяИнформация выставляем флажок Получить из входящих данных.
Переходим на вкладку «Правило выгрузки данных» , открываем правило ФизическиеЛица
В обработчике «Перед обработкой» способ выгрузки выбираем Произвольный запрос. И пишем запрос.
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| КонтактнаяИнформация.Объект КАК ФизическоеЛицо,
| КонтактнаяИнформация.Тип КАК Тип,
| КонтактнаяИнформация.Вид КАК Вид,
| КонтактнаяИнформация.Представление КАК Представление
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
| ПО КонтактнаяИнформация.Объект = ФизическиеЛица.Ссылка
|ГДЕ
| КонтактнаяИнформация.Тип = &Тип
| И КонтактнаяИнформация.Вид В (&СписокВидов)»;
СписокВидов = Новый СписокЗначений;
СписокВидов.Добавить(Справочники.ВидыКонтактнойИнформации.ФактАдресФизЛица);//проживание
СписокВидов.Добавить(Справочники.ВидыКонтактнойИнформации.ЮрАдресФизЛица);//прописка
ФизЛица = РезультатЗапроса.Скопировать();
ФизЛица.Свернуть(«ФизическоеЛицо»);
Для Каждого СтрФз Из ФизЛица Цикл
Отбор = Новый Структура;
Отбор.Вставить(«ФизическоеЛицо»,СтрФз.ФизическоеЛицо);
Для Каждого СтрРез Из НайденныеСтроки Цикл
КонецЦикла;
Заполняем структуру ИсходящиеДанные, где «КонтактнаяИнформация» это название табличной части приемника, т.е. справочника физлица в БП
И выгружаем по правилу.
В обработчике «Перед выгрузкой» пишем, что к группам наша выгрузка не относится.
Еще в ПКО ФизическиеЛица напишем, что уволенных и удаленных выгружать не будем.
Ну и в правиле справочника ВидыКонтактнойИнформации нужно синхронизировать пару свойств.
Подробное знакомство с правилами обмена | оглавление | Правила конвертации свойств |
Учебник по 1С Конвертации данных (редакция 2) Правила конвертации объектов
Автор учебника: Фирма «1С»
Как мы уже знаем, правила конвертации объектов используются для сопоставления объектов в конфигурациях источнике и приемнике. Естественно, что в правиле задается объект источник данных (то есть откуда брать данные) и объект — приемник данных (то есть куда переносить или записывать данные).
Кроме них имеется еще ряд свойств смысл которых постараемся раскрыть.
Искать объект приемника по внутреннему идентификатору объекта источника — флаг определяющий поиск объектов в приемнике для версии платформы V8. Если этот флажок взведен, то поиск объекта для модификации в базе приемнике осуществляется по внутреннему (уникальному) идентификатору объекта. Этот идентификатор не виден пользователю а средствами программы поддерживается уникальность идентификаторов в информационной базе, так что никакие два объекта информационной базы не имеют одинаковых идентификаторов.
Продолжить поиск по полям поиска, если по идентификатору объект приемник не найден — флаг определяет продолжать поиск объекта в информационной базе приемнике, если поиск по уникальному идентификатору не привел к положительному результату.
Не замещать существующие объекты в приемнике при загрузке, а только создавать новые и заполнять их * — флаг определяет нужно ли выполнять изменение реквизитов объекта в информационной базе приемнике, если объект был успешно найден по уникальному идентификатору или по полям поиска.
Не создавать новый объект в приемнике, если он НЕ найден * — флаг определяет нужно ли создавать новый объект в информационной базе — приемнике, если он не был найден по уникальному идентификатору или по полям поиска.
При переносе объекта по ссылке НЕ создавать новый объект, а только переносить ссылку — флаг определяет нужно ли создавать новый объект в информационной базе — приемнике, если он не был найден по уникальному идентификатору или по полям поиска в том случае если объект переносится по ссылке. Если объект не находится и у него установлен поиск по уникальносу идентификатору то будет перенесена только ссылка на объект (без полей поиска — одна ссылка). Если же объект выгружается непосредственно (то есть выгружается не только ссылка на объект, но и все его реквизиты), то флаг ни на что не влияет.
Не выгружать объекты свойств источника по ссылкам — флаг определяет нужно ли выгружать все объекты на которые есть ссылки у объекта источника или достаточно выгрузить только информацию о ссылках на эти объекты. Допустим вы выгружаете справочник номенклатура. Если у соответствующего ПКО не взведен этот флажок, то кроме номенклатуры будут выгружены все объекты на которые она ссылается. Если же флаг взведен, то объекты на которые ссылается номенклатура выгружены не будут. Попробуйте поставить этот флажок и посмотреть результирующий файл выгрузки данных, а затем убрать его и сравнить результаты. Вам быстро станет понятен его смысл.
Не запоминать выгруженные объекты — флаг определяет нужно ли системе при выгрузке КЭШировать последние выгруженные объекты. КЭШирование позволяет ускорить процесс выгрузки и загрузки данных.
Использовать быстрый поиск объекта при выгрузке и загрузке — флаг определяет использовать ли быстрый поиск объектов для выгрузки. Имеет смысл применять для небольших по количеству записей справочников (Количество записей не более 1000 элементов). Эффект достигается в том случае, если у многих объектов установлен флаг Не выгружать объекты свойств по ссылкам. При такой схеме выгрузки и загрузке данных скорость возрастает в несколько раз.
Автоматически генерировать номер или код, если он не задан — флаг определяет нужно ли системе автоматически генерировать новый код или номер объекта, если перед записью он не заполнен.
On-line обмен
Выгружать объект (полностью), только при наличии на него ссылки — настройка определяет при каких обстоятельствах необходимо выгружать объект. В том случае, если флажок установлен, то выгрузка объекта будет выполнена по следующим правилам:
- По правилам выгрузки если объект уже выгружался, то выгружаем его как есть
- По правилам выгрузки если объект не выгружался, то не выгружаем
- При выгрузке по ссылке на объект выгружаем целиком
Например, если нужно переносить не всю номенклатуру из одной ИБ в другую, а только ту, на которую есть ссылки, то флажок подойдет.
Не замещать объект созданный в информационной базе приемнике при загрузке — настройка определяет нужно ли (обратно) переносить объект, который был создан в информационной базе, с которой организован обмен. То есть, если документ создан в информационной базе 1, при помощи обмена поступил в информационную базу 2, то стоит ли его при изменении в базе 2 переносить в базу 1. Настройка позволяет указать приоритет объекта при обмене по месту его создания. То есть изменения в информационной базе, где был создан объект распространяются везде, а изменения в других базах не влияют на этот объект в базе 1.
Приоритет объекта загрузки — настройка определяет приоритет объекта при загрузке в случае коллизии изменений. Значение по умолчанию и в случае незаполненного значения — Выше. Если произошла коллизия, программа анализирует приоритет объекта загрузки. Только в том случае, если приоритет объекта загрузки равен Выше он будет записан в информационную базу приемника. В случае если приоритет Совпадает или Ниже программа зафиксирует соответствующую информацию о коллизии в информационной базе, но объект менять при этом не будет.
Варианты настроек полей поиска — таблица с возможными вариантами настроек полей поиска для пользователя. Разработчик правил определяет возможные комбинации полей поиска, которые пользователь может выбирать при настройке обмена. Все настройки указанные разработчиком правил должны быть отработаны в коде обработчика «Поля поиска». Переменная НастройкаПоиска в обработчике определяет выбранный пользователем вариант сопоставления (ИмяНастройкиДляАлгоритма из соответствующей строки таблицы). Если пользователь не выбрал ни один вариант сопоставления, или ему ни один вариант не был предложен, то НастройкаПоиска — пустая строка.
На закладке «Дополнительно» можно редактировать наименование правила, вхождение его в определенную группу а так же описание правила.
Примечания:
* Не рекомендуется для использования при настройке on-line обмена
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Подробное знакомство с правилами обмена | оглавление | Правила конвертации свойств |
Интересные материалы:
- Договор между Россией и Германией
СОВЕТСКО-ГЕРМАНСКИЕ ДОГОВОРЫ 1939 г.Так именуют: 1) договор о ненападении между СССР и Германией от 23…
- Больничный лист в административном отпуске
В административном отпуске оплачивается больничныйОплачивается ли больничный во время отпуска за свой счет?Сумма выплат зависит…
- Расчет потребности в оборотных средствах по балансу
Как рассчитать потребность в оборотных средствах Костюченко Н.С.Все чаще у банков возникает вопрос – как…
- Коворкинг центры в России
Коворкинг: что это такое, и как на нём заработать Вопросы, рассмотренные в материале: Коворкинг –…
- ЗАО челябкрансбыт
ЗАО «ЧелябКранСбыт» ЗАО "ЧелябКранСбыт" - эксклюзивный дистрибьютор ОАО "Челябинский механический завод" предлагает автокраны Челябинец со…