1с конвертация провести документ после загрузки

Обновлено: 07.07.2024

Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.

Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.

Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.

Комментарии / обсуждение (243):

Добрый день!
Попытался решить задачу из главы 6 урок 2 с помощью произвольного алгоритма. При передачи свойства «АВСкласс» в параметр и обращении к этому параметру в ПКО «После загрузки» возвращается «Неопределено». Причем все отрабатывает корректно при передачи данных в приемник. Подскажите пожалуйста в чем может быть причина?

Если НЕ Источник.ЭтоГруппа Тогда
Если Источник.АВСкласс = Перечисления.КлассыКонтрагентов.Акласс Тогда
Значение = "Акласс";
ИначеЕсли Источник.АВСкласс = Перечисления.КлассыКонтрагентов.Вкласс Тогда
Значение = "Вкласс";
ИначеЕсли Источник.АВСкласс = Перечисления.КлассыКонтрагентов.Скласс Тогда
Значение = "Скласс";
КонецЕсли;
КонецЕсли;

Если Константы.ИспользоватьКлассификациюКонтрагентов.Получить() Тогда

Если НЕ Объект.ЭтоГруппа И ПараметрыОбъекта <> Неопределено Тогда

Объект.АВСкласс = ПараметрыОбъекта["АВСкласс"];
Объект.Записать();
ОбъектМодифицирован = Ложь;
Сообщить(ПараметрыОбъекта["АВСкласс"]);
КонецЕсли;
КонецЕсли;

Большое спасибо, Ольга! Все заработало!



ВыборкаДанных = Новый ТаблицаЗначений;
ВыборкаДанных.Колонки.Добавить("Дата");
ВыборкаДанных.Колонки.Добавить("ОстаткиНоменклатуры");

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| &Период КАК Период,
| ОстаткиТМЦОстатки.ТМЦ КАК Номенклатура,
| Организация.Значение КАК Организация,
| ОстаткиТМЦОстатки.КоличествоОстаток КАК Количество,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения
|ИЗ
| РегистрНакопления.ОстаткиТМЦ.Остатки(&Период, ) КАК ОстаткиТМЦОстатки,
| Константа.Организация КАК Организация
|ИТОГИ ПО
| Период";

Пока ВыборкаПериод.Следующий() Цикл
// Вставить обработку выборки ВыборкаПериод
СтрокаДата = ВыборкаДанных.Добавить();
СтрокаДата.Дата = ВыборкаПериод.Период;
ОстаткиНоменклатуры = Новый ТаблицаЗначений;
СтрокаДата.ОстаткиНоменклатуры = ОстаткиНоменклатуры;
ОстаткиНоменклатуры.Колонки.Добавить("Период");
ОстаткиНоменклатуры.Колонки.Добавить("ВидДвижения");
ОстаткиНоменклатуры.Колонки.Добавить("Организация");
ОстаткиНоменклатуры.Колонки.Добавить("Номенклатура");
ОстаткиНоменклатуры.Колонки.Добавить("Количество");

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СтрокаНабор = ОстаткиНоменклатуры.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаНабор, ВыборкаДетальныеЗаписи);
КонецЦикла;
КонецЦикла;

Объект.Движения.ОстаткиНоменклатуры.Записывать = Истина;

В ПКС Номенклатура написал код

Если ТипЗнч(ОбъектКоллекции.Номенклатура) = Тип("СправочникСсылка.Материалы") Тогда
ИмяПКО = "Номенклатура";
ПКО = НайтиПравило(Источник, ИмяПКО);
ИначеЕсли ТипЗнч(ОбъектКоллекции.Номенклатура) = Тип("СправочникСсылка.Продукция") Тогда
ИмяПКО = "МатериалНоменклатура";
ПКО = НайтиПравило(Источник, ИмяПКО);
КонецЕсли;



Вопрос закрыт, причина была в отриц остатках


Здравствуйте.
подскажите как быть с ошибкой: метод Добавить при загрузке в ДЗ 1.5.2

Перенесла, ошибка не изменилась.

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

С этой ошибкой разобралась

Уже писал свой вопрос меня отправили на страницу соответствующего занятия. В моём случае это перенос табличной части документа поэтому пишу здесь.

Разьясните пожалуйста 1 момент в решении преподавателя:
В обработчике конвертации После загрузки данных он присваивает ДокументОбъект = Неопределено; А затем и в 1 и во 2 условии все равно получает ДокументОбъект от Ссылки. Ссылка у нас существует всегда (он заполнятеся в ПКО). Не логичнее вынести это в общий код перед условиями? Или я чего-то не понял?

Здравствуйте, подскажите, почему возникает такая ошибка при загрузке?
Ошибка при загрузке данных: : Поле объекта не обнаружено. А какой объект непонятно

К сожалению, не особо стало понятнее..


подскажите как перенести контактную информацию из регистра сведеней КИ в тч КИ объекта (конфигурации из бп2 в бп3). Проблема в том что в бп3 надо у поля значениеполей представить в виде xml.


При переносе данных между базами часто возникает ситуация, когда движения документов переносить не требуется, а перенесенные документы следует проводить в базе-приёмнике. Например, в базе-источнике ведется управленческий учет, а в базе-приемнике регламентированный. Если при переносе не учитывать свойство «Проведен» документа, то можно получить в приемнике проведенные документы, у которых данные в движениях и в объекте не соответствуют друг другу.

Несколько основных моментов:

I. Первый, более простой, случай: требуется оставлять в базе-приемнике документы непроведенными.

2. В обработчике «После загрузки объекта» конвертации, определяем найден ли объект, является ли объект документом, проводится ли он, и если в приемнике он проведен, то только тогда помещаем ссылку на него в наш параметр ТаблицаДокументов.

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

II. Требуется обеспечить проведение документов в базе-приемнике при переносе.

В этом случае необходимо помимо пометки удаления передавать значение свойства «Проведен» в параметр «Проведен» и данный параметр анализировать в обработчике «После загрузки объекта» (Рис.2).

1. « Перед загрузкой данных » Повторяем создание параметра конвертации, как в первом примере

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

Если Не ОбъектНайден Тогда
Объект . Записать ();
ОбъектМодифицирован = Ложь;
КонецЕсли;

НоваяСтрока = Параметры . ТаблицаДокументов . Добавить ();
НоваяСтрока . Ссылка = Объект . Ссылка ;

3. «После загрузки данных » После загрузки мы должны пропустить запись документа, если он не проведен в базе-источнике и в базе приемника. Также необходимо проследить за пометкой удаления.

Для каждого СтрокаТч Из Параметры . ТаблицаДокументов Цикл

Чтобы выгрузить один объект источника в несколько объектов приемника, можно использовать мощный инструмент расширения возможностей правил конвертации – «ВыгрузитьПоПравилу».

Синтаксис функции:

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

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


2. Выгрузка иерархического справочника (элементы и папки)

Если необходимо выгрузить иерархический справочник (элементы и папки) с учетом иерархии и поиск в базе приемника будет осуществляться по внутреннему идентификатору объекта источника (по полям поиска не будет продолжен поиск), то для корректной выгрузки иерархии необходимо установить галочку – «Поиск» у реквизита «ЭтоГруппа» (см. рисунок 1).


Рисунок 1 – Выгрузка иерархического справочника.

Если не установить галочку «Поиск» у реквизита «ЭтоГруппа», то папки объекта будут выгружаться как элементы.

3. Реквизиты объекта для правил регистрации объектов

Объекты регистрируются по правилам регистрации объектов к выгрузке только при изменении реквизитов объекта, которые указаны в правилах конвертации свойств (далее-ПКС) объекта (правила обмена данными). При необходимости регистрировать объект к выгрузке и при изменении реквизитов, которые не указаны в ПКС, достаточно данные реквизиты добавить в ПКС и установить галочку – «отключить» (см. рисунок 2).


Рисунок 2 – Реквизиты объекта для правил регистрации объекта.

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

4. Зарегистрировать объект к выгрузке другим объектом (объектами)

Когда стоит задача выгружать вместо регистрируемого объекта другой объект, то при регистрации исходного объекта в правилах регистрации объектов в обработчике «ПослеОбработки» через метод «ЗарегистрироватьИзменения» плана обмена можно зарегистрировать необходимый объект на узлах плана обмена.

Синтаксис метода:

ЗарегистрироватьИзменения (Узлы, Данные)


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

В продолжение пункта 4. При выгрузке любого объекта происходит проверка, соответствует ли он существующим правилам регистрации. Если при регистрации вместо исходного объекта регистрируется к выгрузке другой объект, то новый объект также будет проходить проверку по своему типу правил регистрации объектов. В случае несоответствия правилам регистрации, объект будет выгружать, как «УдалениеОбъекта».

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

Описание параметра Выгрузка:

Выгрузка (только чтение) – Булево – параметр определяет контекст выполнения правила регистрации. Истина – правило регистрации выполняется в контексте выгрузки объекта. Ложь – правило регистрации выполняется в контексте перед записью объекта.


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

6. Выбор правила конвертации объектов по умолчанию

Если по одному объекту источнику в правилах конвертации объектов присутствуют несколько правил, то система будет использовать по умолчанию правило, которое совпадает по наименованию с наименованием объекта источника (см. рисунок 3).


Рисунок 3 – Выбор правила конвертации объекта по умолчанию.

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

7. Создание документов (справочников) через ПКО на стороне приемника

При необходимости создавать на стороне приемника новые элементы документов (справочников) и подставлять их в исходный объект, можно применить следующий подход:

- определить правило заполнения нового документа (справочника) на стороне приемника (например, через входящие данные);
- описать заполнение реквизита нового документа (справочника) в исходном объекте (например, через исходящие данные);
- заполнять при выгрузке на стороне источника новый документ (справочник) уникальным значением (например, числом).

Пример реальной задачи. Необходимо на стороне приемника создавать новые документы «ДокументРасчетовСКонтрагентом» в документе ввод начальных остатков по счетам взаиморасчетов. На стороне источника заполняем реквизит «ДокументРасчетовСКонтрагентом» при выгрузке начальных остатков по счетам взаиморасчетов уникальным значением (числом):


В исходном объекте («ВводНачальныхОстатков») описываем правила выгрузки реквизита «ДокументРасчетовСКонтрагентом»:


Определяем правило заполнения «ДокументаРасчетовСКонтрагентом» на стороне приемника (см. рисунок 4).


Рисунок 4 – Правили выгрузки «ДокументРасчетовСКонтрагентов».

В конвертации данных нельзя создать параметр с типом «ТаблицаЗначений» на вкладке «Параметры» (см. рисунок 5).


Рисунок 5 – Допустимые типы для параметров конвертации данных.

Возможность создать параметр с типом «ТаблицаЗначений» при необходимости присутствует в системе, необходимо в общем обработчике «ПередЗагрузкойДанных» определить параметр.


Также необходимо в общем обработчике «ПослеЗагрузкиДанных» удалить данный параметр.


9. Выгрузка реквизитов со значением перечисления или предопределенного значения справочника

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

Пример реальной задачи. В базе приемника присутствует реквизит – «ТипПлатежа» с типом «Перечисление». При выгрузке реквизита (обработчик: «Перед выгрузкой») можно указать текстовое значение равное наименованию элемента перечисления на стороне базы приемника (см. рисунок 6). Данный подход может ускорить процесс разработки в конвертации данных.


Рисунок 6 – Заполнение реквизита с типом «Перечисление».

10. Ускорение процесса выгрузки с помощью параметра «ВыгрузитьОбъект» («ВыгрузитьТолькоСсылку»)

Когда необходимо выгрузить большой объем данных и нет необходимости выгружать полностью ссылочные данные, то можно сократить объем выгружаемых данных с помощью параметров «ВыгрузитьОбъект» («ВыгрузитьТолькоСсылку») в обработчике «ПриВыгрузке» правил конвертации свойств (ПКС):


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

Рассмотренные приемы работы позволят повысить производительность и эффективность работы с программой конвертацией данных 2.1.

Статью подготовил Аналитик-эксперт по информационным системам "ИнфоСофт" Ретунский Александр.

В октябре 2014 года фирма «1С» выпустила первую версию конфигурации Конвертация данных, редакция 3.0.

Рассмотрим, как же работает обмен с помощью КД 3.0.

Принципы обмена с помощью Конвертации данных 3.0

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

Формат EnterpriseData предоставляется в виде двух xsd-схем:

ExchangeMessage
EnterpriseData

Это основная схема, в которой описаны все объекты нового формата, их свойства и типы значений.

Объекты в этой схеме по структуре и наименованию аналогичны объектам метаданных типовых конфигураций. Это сделано для упрощения трансформации объектов типовых конфигураций в универсальный формат и обратно.

Схема содержит объекты для переноса информации трех основных типов: нормативно-справочная информация, документы и остатки на заданную дату.

XDTO-пакет EnterpriseData

Эти xsd-схемы в виде XDTO-пакетов входят в подсистему «Обмен данными» БСП начиная с версии 2.2.5.

Для разработки обмена с использованием универсального формата эти схемы должны быть выгружены во внешние файлы и загружены в конфигурацию Конвертация данных 3.0.

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

Конвертация данных 3.0. Настройка правил обмена

На основании настроенной таким образом логики конфигурация Конвертация данных 3.0 формирует код, реализующий эту логику.

Он должен быть помещен в общий модуль МенеджерОбменаЧерезУниверсальныйФормат соответствующей базы. В нем содержится механизм преобразования объектов базы данных в универсальный формат и обратно, а также все обработчики событий.

После того, как модуль сформирован, разработчик обмена имеет возможность корректировать все механизмы непосредственно в этом модуле, не используя конфигурацию Конвертация данных. А также он получает возможность простой отладки в случае возникновения ошибок. Можно также загрузить правила из модуля МенеджерОбменаЧерезУниверсальныйФормат обратно в базу Конвертация данных 3.0, чтобы иметь возможность настраивать их в интерфейсе.

Когда настройка преобразования объектов одной базы завершена, разработчик может перейти к настройке обмена для следующей базы.

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

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

Читайте также: