Как передать реквизит источника если реквизита приемника нет

   Быдло замкадное

07.10.20 — 12:53

Как передать строку в исходящие данные?!

Есть живой пример?

Пишу в ПКО документа:

Перед выгрузкой:

ВходящиеДанные = Новый Структура;

ВходящиеДанные.Вставить(«КодБК», «АХАХАХАХА»);

ИЛИ:

ИсходящиеДанные = Новый Структура;

ИсходящиеДанные .Вставить(«КодБК», «АХАХАХАХА»);

и в формируемом файле нет это строки «АХАХАХАХА» вообще. Каааак сделать то, что только не пробовал уже

  

Партнерская программа EFSOL Oblako

   fisher

1 — 07.10.20 — 13:06

Данные передаются по следующим правилам:

1.      ПВД.ИсходящиеДанные -> ПКО.ВходящиеДанные

2.      ПКО.ВходящиеДанные -> ПКС.ВходящиеДанные

3.      ПКС.ИсходящиеДанные -> ПКО.ВходящиеДанные

   fisher

2 — 07.10.20 — 13:07

Оно и не должно попадать в файл. Это для передачи между обработчиками при конвертации в источнике.

   fisher

3 — 07.10.20 — 13:10

Вообще в типовой ситуации вся конвертация производится в источнике. В файл пишется только результат конвертации — готовый образ объектов-приемника для загрузки.

   Быдло замкадное

4 — 07.10.20 — 13:12

(2) «Оно и не должно попадать в файл.» ппц а как мне передать произвольную инфу?

В приемнике есть реквизит, которого нет в источнике. Но заполнить надо.

Для понимания например: Если в источнике в поле комментарий написано «Васька дурак» то в приемнике надо Реквизит1 = Справочники.Контрагенты.ВаськаДурак;

В источнике нет справочника контрагенты, в приемнике нет реквизита Комментарий.

Можно реализовать?

   Быдло замкадное

5 — 07.10.20 — 13:13

вот хочу куда то записать «Васька дурак», а потом уже ПРИ ЗАГРУЗКЕ это анализировать.

ПОтому что при выгрузке я даже не могу написать СПравочники.Контрагенты. Нет такого…

   Жан Пердежон

6 — 07.10.20 — 13:15

в ПКС «Передавать данные в параметр»

   fisher

7 — 07.10.20 — 13:16

(4) С предопределенными вообще просто. ЕМНИП, оно при загрузке хавает текстовые значения для предопределенных. Для непредопределенных можно создать ПКО, которое будет искать нужные по коду.

Т.е. в ПКС для Реквизит1 пишешь в ПередВыгрузкой

Если Источник.Комментарий = «Васька дурак» Тогда

    Значение = «ВаськаДурак»;

КонецЕсли;

   Быдло замкадное

8 — 07.10.20 — 13:21

(7) с Васькой это пример. Мне на самом деле в базе источнике надо искать справочник по реквизиту.

Т.е.

Справочники.ВидыНалоговИПлатежейВБюджет.НайтиПоРеквизиту(«КодБК», «Васька дурак»);

Это уже детали.

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

(6) попробовал так, в файле все равно нет «Васька дурак» :(

   fisher

9 — 07.10.20 — 13:21

Если (4) системный пример и надо кучу разных комментариев конвертить в контрагентов, то можно создать ПКО для контрагентов у которого на входе будет строка и просто назначить это ПКО в ПКС «Комментарий». КД очень гибкая, нужно только один раз разобраться и «вхрустнуть» мозги в ее логику.

   Быдло замкадное

10 — 07.10.20 — 13:22

(6) а нет вру, через параметр выгрузилось.. щас буду думать как прочитать этот параметр при загрузке

   fisher

11 — 07.10.20 — 13:24

(8) > Я хочу хоть как-то передать текстовую строку, что бы ее анализировать при загрузке можно было.

Я понял, что ты хочешь. Но КД реализует другую логику — конвертация в источнике. Переть супротив — быть ССЗБ.

   fisher

12 — 07.10.20 — 13:27

(8) >  в базе источнике надо искать справочник по реквизиту

Просто создаешь ПКО для этого справочника, где нужный реквизит отмечаешь как поле поиска, на вход — строка, а в ПКС для этого реквизита пишешь Значение=Источник;

После этого просто назначаешь это ПКО во всех ПКС где надо и в этих ПКС пишешь Значение=<нужное значение>;

В итоге КД будет находить их сама штатно при загрузке плюс это будет переиспользуемое ПКО.

  

Быдло замкадное

13 — 07.10.20 — 13:28

Получилось через параметр, спасибо (6)

после загрузки объекта:

Объект.Налог = Справочники.ВидыНалоговИПлатежейВБюджет.НайтиПоРеквизиту(«КодБК», ПараметрыОбъекта.Получить(«КодБК»));

09.11.2015

Рассмотрим на примере обмена ЗУП 2.5 — Бухгалтерия 3.0.
В Источнике и в Приемнике есть справочник «Резервы», но в Приемнике есть элемент «Резерв на взносы в Федеральный ФОМС» с кодом «000000004», а в Источнике такого элемента нет.

Суть задачи: Нужно, чтобы при переносе документа «Отражение зарплаты в регламентированном учете» СубконтоДт1 (тип СправочникСсылка.Резервы) имело другое Значение, то есть значение не из Источника.

Рассмотрим картинку:

Нужно, чтобы при условии, когда СчетДт=»96″ и СчетКт = «69.03.1» тогда СубконтоДт было равно «Резерв на взносы в Федеральный ФОМС». (А не «На оплату предстоящих отпусков», как видно на картинке).

Уточнение: этого не видно на картинке, но на самом деле под СубконтоДт подразумевается СубконтоДт1, а значение «Резерв на взносы в Федеральный ФОМС» — это значение элемента из Приемника.

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

Надеюсь, что пояснила понятно.

Теперь в Конвертации данных:

Итог выгрузки:

Добавлено 09.11.15:

От обилия красного прямо рябит в глазах. Извините, я не специально!

Вариант 2:

Еще один способ. Код останется со значением из источника, если у вас подобная ситуация, обработку правила можно просто отключить.

 

—————————————————————————————————————————————————————

Запрет выгрузки «Групп» справочников в конвертации данных.

 

Правила конвертации объектов    оглавление    Обработчики событий

Автор учебника: Фирма «1С»

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

Правила конвертации свойств

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

Поиск объекта при загрузке по данному свойству — флаг определяющий нужно ли по данному свойству производить поиск объектов в информационной базе приемнике. Если сразу у нескольких реквизитов установлено свойство поиска данных, то условия поиска объединяются по «И». В этом случае правило поиска звучит следующим образом: Найти объект у которых все реквизиты поиска совпадают с источником. (ВНИМАНИЕ!!!! Поиск по уникальному идентификатору, который может быть установлен у правила конвертации объектов более приоритетный, то есть если он установлен то поиск будет выполнен по этому идентификатору).

Отключить обработку данного правила — флаг, позволяет отключить обработку данного свойства, не удаляя его из правил конвертации объектов.

Не замещать значение данного свойства у существующих объектов ИБ — флаг, позволяет отключить обработку данного для объектов информационной базы приемника, которые были найдены по уникальному идентификатору или по полям поиска.

Автоматически приводить значение к длине приемника — флаг, позволяет включить автоматическое приведение Номера или Кода справочника соответствующему значению в приемнике по длине. При этом префиксы сохраняются, а числовые части преобразуются под длину поля в приемнике.

ТОЛЬКО ДЛЯ ОБМЕНА V8 — V8

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

Передавать данные в приемник — флаг определяет куда будут помещены данные при загрузке. Непосредственно в найденный для изменения объект.

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

Доступ к этим данным возможен в событии правила конвертации объекта «После загрузки». Например, так:

Если ПараметрыОбъекта <> Неопределено тогда
    ИмяКонтрагента = ПараметрыОбъекта["ИмяКонтрагента"];
КонецЕсли;
// Например, если нужен доступ к параметрам табличной части с именем "Товары"
Если ПараметрыОбъекта <> Неопределено тогда
    ТаблицаПараметровТовары = ПараметрыОбъекта["ТоварыТабличнаяЧасть"];
    Если ТаблицаПараметровТовары <> Неопределено Тогда
        Для Каждого СтрокаПараметров Из ТаблицаПараметровТовары Цикл
            ИмяНоменклатуры = СтрокаПараметров.ИмяНоменклатуры;
        КонецЦикла;
    КонецЕсли;
КонецЕсли;

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

На закладке «Дополнительно» можно редактировать вхождение правила в определенную группу, а так же его описание. Наименование правила формируется автоматически и недоступно для изменения.

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Владимир Милькин

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

Правила конвертации объектов    оглавление    Обработчики событий

Перенести реквизит ТЧ источника в реквизит приемника.

Автор VladimirMelnychenko, 04 ноя 2016, 14:02

0 Пользователей и 1 гость просматривают эту тему.

Добрый день.

Прошу помочь с решением одной проблемы.
Необходимо перенести платежные поручения (входящие/исходящие) из базы БУ в УНФ. Столкнулся с одной проблемой, в базе УНФ есть реквизит «СтатьяДДС» и в БУ есть данный реквизит, но вот проблема в том что в БУ данный реквизит («СтатьяДДС») присутствует еще и в табличной части «Расшифровка платежа», а в УНФ он один на весь документ. Нужно заполнить реквизит УНФ значением данного реквизита в первой строке табличной части «Расшифровка платежа».
Написал в модуле ПКО при выгрузке (код ниже), выдает ошибку «Значение не является значением объектного типа (Статья)», скажите пожалуйста как можно решить данную проблему?

Если Источник.СтатьяДвиженияДенежныхСредств.Пустая() = Истина Тогда

        Приемник.Статья = Источник.РасшифровкаПлатежа[0].СтатьяДвиженияДенежныхСредств;

    КонецЕсли;



Приемник: ДокументСсылка.ПоступлениеНаСчет

Добавлено: 04 ноя 2016, 17:26


Если Источник.СтатьяДвиженияДенежныхСредств.Пустая() Тогда

        Значение = Источник.РасшифровкаПлатежа[0].СтатьяДвиженияДенежныхСредств;

    КонецЕсли;

Так работает.


Если Источник.СтатьяДвиженияДенежныхСредств.Пустая() Тогда

        Если Источник.РасшифровкаПлатежа.Количество() > 0 Тогда
        Значение = Источник.РасшифровкаПлатежа[0].СтатьяДвиженияДенежныхСредств;
    КонецЕсли;

    Иначе

    Значение = Источник.СтатьяДвиженияДенежныхСредств;

КонецЕсли;

Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.


Доброе утро. Не сталкивался серьезно с конвертацией данных. Встретилась незнакомая задача: Конвертация производится между базами на платформе 1С 7.7. В объекте-приемнике у меня есть ряд реквизитов, которых нет в объекте-источнике (например, подразделение организации). При переносе эти данные, соответственно, не заполняются, что мешает проведению документа. Вопрос: как мне заполнить эти реквизиты? Какое событие сработает в 1С 7.7? Мне достаточно, если в приемнике сработает код типа:

вот и размести этот код в обработчике после загрузки объекта в приемник

Не срабатывает, даже «Сообщить(«!»);» не срабатывает. Вот как выглядит событие В справке написано, что это событие работает только для платформы 8.х

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

для 7.7 необходимо включить флажок «Выгружать модуль обработки выгрузки для платформы 7.7» и указать в какой файл выгружать этот модуль. после сохранения правил надо код этого файла вставить в обработку выгрузки данных их 7.7

этот код в 7.7 не скомпилируется. тогда уж Спр = создатьОбъект(«Справочник.Подразделения»); Спр.НайтиПоКоду(«00000001»); Объект.Подразделение = Спр.ТекущийЭлемент; но чтобы это работало, надо опять же выгрузить модуль обработки _загрузки_

(3, 4, 5) Большое вам спасибо. Получилось. Создал процедуру «после загрузки объекта», выгрузил тексты модулей, заменил модуль в обработке импорта. Работает.

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

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

//запишем в файл обмена

ДопИнформация = СоздатьУзел(«ДопИнформация»);

УстановитьАтрибут(ДопИнформация, «Металл»,Металл);

УстановитьАтрибут(ДопИнформация, «Наполнение»,Наполнение);

ДобавитьПодчиненный(Приемник, ДопИнформация);

В файле обмена при выгрузке появится соответствующий узел

Теперь для того чтобы эти данные использовать, в ПКО того же самого объекта, в любом из обработчков:

  • Поля поиска;
  • Перед загрузкой;
  • При загрузке;

пропишем примерно следующий код:

//проверим наличие доп свойств, если они
есть это продукция

Пока ФайлОбмена.Прочитать() Цикл

    ИмяУзла = ФайлОбмена.ЛокальноеИмя;

    ТипУзла = ФайлОбмена.ТипУзла;

    Если ИмяУзла =
«ДопИнформация»
И (ТипУзла = одТипУзлаXML_НачалоЭлемента) Тогда

        Металл     = одАтрибут(ФайлОбмена, одТипСтрока, «Металл»);

        Наполнение = одАтрибут(ФайлОбмена, одТипСтрока,
«Наполнение»
);

        Харка   = ОбрСоздания.вПолучитьПродукцию(Наименование,Металл,Наполнение);

        Если ЗначениеЗаполнено(Харка) Тогда

            СсылкаНаОбъект = Харка[ИмяСвойства];

        КонецЕсли;

        Прервать;

    КонецЕсли;

КонецЦикла;

На этом все. 

Важно обратить внимание на процедуру одАтрибут. 

Читает значение атрибута по имени из указанного объекта, приводит значение к указанному примитивному типу
Параметры: 

  1. Объект — объект типа XMLЧтение, спозиционированный на начале элемента, атрибут которого требуется получить
  2. Тип — Значение типа Тип. Тип атрибута
  3. Имя — Строка. Имя атрибута

На чтение 5 мин. Просмотров 714 Опубликовано 15.12.2019

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

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

Поиск объекта при загрузке по данному свойству — флаг определяющий нужно ли по данному свойству производить поиск объектов в информационной базе приемнике. Если сразу у нескольких реквизитов установлено свойство поиска данных, то условия поиска объединяются по «И». В этом случае правило поиска звучит следующим образом: Найти объект у которых все реквизиты поиска совпадают с источником. (ВНИМАНИЕ. Поиск по уникальному идентификатору, который может быть установлен у правила конвертации объектов более приоритетный, то есть если он установлен то поиск будет выполнен по этому идентификатору).

Отключить обработку данного правила — флаг, позволяет отключить обработку данного свойства, не удаляя его из правил конвертации объектов.

Не замещать значение данного свойства у существующих объектов ИБ — флаг, позволяет отключить обработку данного для объектов информационной базы приемника, которые были найдены по уникальному идентификатору или по полям поиска.

Автоматически приводить значение к длине приемника — флаг, позволяет включить автоматическое приведение Номера или Кода справочника соответствующему значению в приемнике по длине. При этом префиксы сохраняются, а числовые части преобразуются под длину поля в приемнике.

ТОЛЬКО ДЛЯ ОБМЕНА V8 — V8

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

Передавать данные в приемник — флаг определяет куда будут помещены данные при загрузке. Непосредственно в найденный для изменения объект.

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

Доступ к этим данным возможен в событии правила конвертации объекта «После загрузки». Например, так:

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

На закладке «Дополнительно» можно редактировать вхождение правила в определенную группу, а так же его описание. Наименование правила формируется автоматически и недоступно для изменения.

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

Если установлен флажок При загрузке, то к параметру можно обращаться на стороне загрузки в приемник. Однако такая настройка не означает, что значение параметра будет передано из источника в приемник. Для передачи значения установим флажок Передавать при выгрузке и, при необходимости, укажем правило конвертации значения параметра. Запись в файл обмена передаваемого значения параметра происходит в начале пронесса выгрузки. Поэтому передать из источника в приемник можно только параметры, значение которых установлено в диалоге обработки выгрузки. Передача параметра из источника в приемник доступна ТОЛЬКО при обмене между информационными базами на платформе 1С2Предприятия 8.

При помощи флажка «Передавать параметр при выгрузке» можно передавать только те параметры, которые редактируются в диалоге при выгрузке данных. Если же нужно передать параметр, которые в этом диалоге не присутствует, то нужно вызвать процедуру:

Процедура ПередатьОдинПараметрВПриемник(Имя, ИсходноеЗначениеПараметра, ПравилоКонвертации = «») Экспорт

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

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

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

В табличной части «Товары» ПКО «Отчет о розничных продажах» создаем новый параметр:

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

Понравилась статья? Поделить с друзьями:
  • Как писать бизнес план для малого бизнеса образец заполнения
  • Имеет ли право страховая компания отказать в страховке каско
  • Как пишется есть также идеи насчет новых направлений бизнеса
  • Имеет ли право управляющая компания сдавать в аренду подвалы
  • Как пишется заявление в страховую компанию в свободной форме