Перенос реквизитов в дополнительные реквизиты

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Алексей Великий

Дата регистрации: 24.07.2012
Сообщений: 226

«Добрый день. Помогите, пожалуйста, разобраться в следующей проблеме. <br><br>У меня есть самописная конфигурация — источник, из справочника «Контрагенты» которой необходимо выгрузить данные в аналогичный справочник конфигурации «Управление торговлей ред. 11». Все бы ничего, но часть данных должна выгружаться в дополнительные реквизиты конфигурации-приемника (т.е. используется стандартный типовой механизм дополнительных реквизитов и сведений). <br><br>Как я пишу правила конвертации для переноса данных в дополнительные реквизиты: <br><br>Т.к. доп. реквизиты в конфигурации УТ 11 хранятся в табличных частях справочников, то для ПКО «Контрагенты» я делаю сначала ПКГС (Правило конвертации группы свойств) без указания источника, но с указанием приемника — ДополнительныеРеквизиты. В событии ПКГС «ПередОбработкой» пишу следующий код: <br><br>КоллекцияОбъектов = Новый ТаблицаЗначений;<br>КоллекцияОбъектов.Колонки.Добавить(«Свойство»);<br>КоллекцияОбъектов.Колонки.Добавить(«Значение»);<br>Строка = КоллекцияОбъектов.Добавить(); <br><br>Далее в самих ПКГС для кадого реквизитов «Свойство» и «Значение» табличной части «ДополнительныеРеквизиты» делаю соответствующие ПКС (правила конвертации свойств) без указания источника, но с указанием приемника и для каждого приемника программно указываю, какие значения они должны принимать. Значения реквизитов указываю правильно. <br><br>После выгрузки-загрузки проверяю, все ли загрузилось в конфигурацию-приемник и вижу, что в форме элемента справочника «Контрагенты» дополнительные реквизиты не заполнены, хотя в табличную часть «ДополнительныеРеквизиты» этого справочника они добавились (посмотрел с помощью консоли запросов). В чем моя ошибка?»

ZhAmAn

Дата регистрации: 23.12.2010
Сообщений: 1333

А в УТ включены доп.реквизиты?Состав настроен?

Алексей Великий

Дата регистрации: 24.07.2012
Сообщений: 226

Доп. реквизиты включены, состав настроен — на форме элемента справочника «Контрагенты» элементы форм для заполнения доп. реквизитов есть, но они ничем не заполнены, хотя в табличной части «ДополнительныеРеквизиты» они заполнены.

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

«Копайте» в направлении заполнения поля «Свойство» доп.реквизитов — возможно определены для справочника «Контрагенты» одни свойства, а в ТЧ заполняются другие. Во вложении пример заполнения доп.сведений и доп.реквизитов для справочника «Номенклатура» (я делал выгрузку из «самописки» 7.7 в УТ 11 версии 1.4). Там обработчиках для «Правил конвертации» выполняется алгоритм, который корректирует какие-либо ошибки если произошла путаница при заполнении (как подстраховка).

Показывать по
10
20
40
сообщений

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

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

Задача: с помощью правил обмена перенести Дополнительные реквизиты номенклатуры из «старой торговой программы» в УНФ. В обеих конфигурациях дополнительные реквизиты хранятся в табличной части справочника «Номенклатура» и используется план видов характеристик «ДополнительныеРеквизитыИСведения» и справочник «НаборыДополнительныхРеквизитовИСведений». В принципе это все, что для нас важно.

     Шаг 1. Создаем правило обмена для справочника «НаборыДополнительныхРеквизитовИСведений». Он нам понадобится, чтобы потом создать правило обмена для ПВХ.

(скрин 1)

    Шаг 2. Создаем правило обмена для ПВХ «ДополнительныеРеквизитыИСведения». Для каждого элемента пвх нужно указать тип значения. ТипЗначения — это стандартный реквизит ПВХ, но в конвертации он не отображается как реквизит и его нельзя выбрать в качестве приемника. Так что для передачи типа значения будем использовать параметры объекта. Создаем для плана видов характеристик новый ПКС: указываем «Передать данные в параметр», источник — пустой, приемник — «Типы». 

(скрин 2)

Дальше есть два способа — для обмена между идентичными конфигурациями (попроще) и для всех остальных.

Шаг 2 способ №1. Если у вас обмен между двумя одинаковыми конфигурациями, то вы можете использовать функцию ЗначениеВСтрокуВнутр /ЗначениеИзСтрокиВнутр. В созданном ПКС добавляем следующий код «перед загрузкой»:

ТипыСвойства = Источник.ТипЗначения.Типы();
Значение = ЗначениеВСтрокуВнутр(ТипыСвойства);

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

Типы = ЗначениеИзСтрокиВнутр(ПараметрыОбъекта.Получить("Типы"));
Объект.ТипЗначения = Новый ОписаниеТипов(Типы );

Готово.

Шаг 2 способ №2. Если конфигурации не одинаковые, то предыдущий способ работать не будет. При вызове функции ЗначениеИзСтрокиВнутр тип значения не будет определен (будет Неопределено). Мой вариант — записать типы значений в строку, а затем расшифровать ее на стороне приемника.

ПКС «Типы» «перед загрузкой»:

ТипыСвойства = Источник.ТипЗначения.Типы();

МассивТиповСтроками = "";

Для Каждого ТипСвойства Из ТипыСвойства Цикл
МассивТиповСтроками = МассивТиповСтроками+ нрег(СтрЗаменить(Строка(ТипСвойства)," ","")) + ";";
КонецЦикла;

Значение = МассивТиповСтроками;

ПКО плана видов характеристик «после выгрузки»:

ТипыСтрокой = ПараметрыОбъекта.Получить("Типы");

МассивТиповСтрокой = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТипыСтрокой, ";");
МассивТипов = Новый Массив;

Для Каждого ТипСтрокой Из МассивТиповСтрокой Цикл

Если ТипСтрокой = "дополнительноезначение" Тогда
МассивТипов.Добавить(Тип("СправочникСсылка.ЗначенияСвойствОбъектов"));
ИначеЕсли ТипСтрокой = "контрагент" Тогда
МассивТипов.Добавить(Тип("СправочникСсылка.Контрагенты"));
//ИначеЕсли ...
КонецЕсли;
КонецЦикла;

Объект.ТипЗначения = Новый ОписаниеТипов(МассивТипов);

Готово.

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

Для ПКС реквизита «Значение» пишем в «перед выгрузкой»:

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

Теперь все готово. Можно пробовать выгружать.

Конвертация данных. Перенос дополнительных реквизитов.

Я
   yegorka

19.02.14 — 22:10

Здравствуйте,

Перенос элементов справочника Номенклатура между БД одинаковой конфигурации (БП 2). Необходимо для выгружаемой Номенклатуры перенести дополнительные реквизиты (значения из РС ЗначенияСвойствОбъектов).

Реквизиты переносятся, но в БД приемнике оказываются не типизированными.

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

  

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

   Aleksey

1 — 19.02.14 — 22:37

это же обычный РС, что там переносить то?

   yegorka

2 — 19.02.14 — 22:41

Ну вот бьюсь сегодня весь день. Не могу корректно перенести.

Учитывай, что мне весь РС не нужен, а только по той номенклатуре, которая выгружается (по ссылкам).

   ЧашкаЧая

3 — 19.02.14 — 22:55

((1) Не скажите. Там значения составного типа и более того планы видов характеристик. Для правильного создания последних нужно передавать типы значений.

   Aleksey

4 — 19.02.14 — 22:56

(2) ВыгрузитьПоПравилу() после выгрузки

   yegorka

5 — 19.02.14 — 22:58

(3) Да, такое ощущение, что нужно, но куда не понятно.

(4) Так и делаю, выборкой получаю значения и в цикле их выгружаюпоправилу.

   yegorka

6 — 19.02.14 — 22:58

(3) Самое интересное, что даже простые типы Дата, Строка не проходят.

   ЧашкаЧая

7 — 19.02.14 — 23:04

(6) Для ПВХ в параметрах нужно передавать типы значений этого ПВХ. Завтра с работы кину пример, если будет необходимость.

   yegorka

8 — 19.02.14 — 23:06

(7) Да есть необходимость, даже острая :-)

Очень буду благодарен.

   ilyavorobyev

9 — 19.02.14 — 23:07

Делал так, в ПКС добавил табличную часть дополнительные реквизиты и для нее получить из входящих данных, и написал такое в пко в перед выгрузкой

СтрокаВходДанных = ВходящиеДанные.ДополнительныеРеквизиты.Добавить();

СтрокаВходДанных.Значение = Источник.КорпоративныйКлиент;

СтрокаВходДанных.ТекстоваяСтрока = «»;

   yegorka

10 — 19.02.14 — 23:13

Я делаю вот так:

            Запрос = Новый Запрос;

            Запрос.Текст =

                «ВЫБРАТЬ

                |    ЗначенияСвойствОбъектов.Объект,

                |   ЗначенияСвойствОбъектов.Свойство,

                |    ЗначенияСвойствОбъектов.Значение

                |ИЗ

                |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов

                |ГДЕ

                |    ЗначенияСвойствОбъектов.Объект = &Объект»;

            Запрос.УстановитьПараметр(«Объект», Объект.Ссылка);

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

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

            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

                Данные = Новый Структура;

                Данные.Вставить («Объект», ВыборкаДетальныеЗаписи.Объект);

                Данные.Вставить («Свойство», ВыборкаДетальныеЗаписи.Свойство);

                Данные.Вставить («Значение», ВыборкаДетальныеЗаписи.Значение);

                ВыгрузитьПоПравилу(,,Данные,, «ЗначенияСвойствОбъектов»);

            КонецЦикла;

ПКО ЗначенияСвойствОбъектов получает данные из входящих данных. Его и руками создавал и конструктором, результат одни в БД приемнике значения реквизитов НЕ ТИПИЗИРОВАНЫ

Не знаю на сколько корректно, вот здесь сегодня обсуждал эту проблему http://1c-pro.ru/threads/perenos-dopolnitelnyx-svojstv-dokumenta-mezhdu-odinakovymi-bd.74/

Там есть и картинки и правила обмена, можно лучше понять суть проблемы

   ilyavorobyev

11 — 19.02.14 — 23:59

(10) а что в пко?табличная часть доп реквизиты?

   ЧашкаЧая

12 — 20.02.14 — 09:57

В продолжении (7)

1. Для ПКО плана видов характеристик добавить параметр в котором передаются типы значений ПВХ

http://screencast.com/t/bLSycOR8pObV

2. В самом ПКО плана видов характеристик

http://screencast.com/t/STwohHaSrH

   yegorka

13 — 20.02.14 — 11:21

(12) по картинкам не совсем понятно, может сбросите кусок правил на почту?

  

yegorka

14 — 20.02.14 — 12:08

(12) Разобрался, спасибо огромное, все работает!!!

Всем здрасте. Пишу правило обмена для переноса некоторых данных из УПП 1.2 в УТ 11.1. Проблема возникла при написании правила конвертации справочника Контрагенты (УПП) в справочник Партнеры (УТ). Нужно один реквизит из справочника Контрагенты сконвертировать в дополнительный реквизит справочника Партнеры. Не могу разобраться, как это сделать? Подскажите плиз. Может у кого есть рабочий пример?

Что такое «дополнительный реквизит»?

Это такой реквизит, только дополнительный…

Наверное имеется ввиду дополнительные свойства…

а смысл это при обменах? оно долго не живёт, доп свойство то

что то у меня сегодня модуль телепат отключен

Ты прав, я думаю уже пора домой идти…

нефиг вообще из дома выходить ) Эх, поработать что ли?

хватит уже хвастаться ) в отпуске ремонт делаешь?

Дополнительные реквизиты в УТ — это табличная часть, в данном случае у спр. «Партнеры», с реквизитами Свойство, Значение. А в чем проблема? У тебя есть ПКО в нем ПГКС «ДополнительныеРеквизиты», в нем ПКС «Свойство», ПКС «Значение». Для свойство нужно создать ПКО, которое ищет в ПланеВидовХарактеристик ДопРевизитыИСведения элемент (по наименованию например) источник не указываешь. Для «значения» тоже создаешь ПКО, а в качестве источника будет реквизит справочника Контрагенты (УПП)

удаленка. Н работе появлюсь, только когда начальство очень скучать начинает )

Сделал немного по другому, но подсказка помогла. Спасибо!

Тэги: 1С 8

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

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

    У меня есть самописная конфигурация — источник, из справочника «Контрагенты» которой необходимо выгрузить данные в аналогичный справочник конфигурации «Управление торговлей ред. 11». Все бы ничего, но часть данных должна выгружаться в дополнительные реквизиты конфигурации-приемника (т.е. используется стандартный типовой механизм дополнительных реквизитов и сведений).

    Как я пишу правила конвертации для переноса данных в дополнительные реквизиты:

    Т.к. доп. реквизиты в конфигурации УТ 11 хранятся в табличных частях справочников, то для ПКО «Контрагенты» я делаю сначала ПКГС (Правило конвертации группы свойств) без указания источника, но с указанием приемника — ДополнительныеРеквизиты. В событии ПКГС «ПередОбработкой» пишу следующий код:

    КоллекцияОбъектов = Новый ТаблицаЗначений;
    КоллекцияОбъектов.Колонки.Добавить(«Свойство»);
    КоллекцияОбъектов.Колонки.Добавить(«Значение»);
    Строка = КоллекцияОбъектов.Добавить();

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

    После выгрузки-загрузки проверяю, все ли загрузилось в конфигурацию-приемник и вижу, что в форме элемента справочника «Контрагенты» дополнительные реквизиты не заполнены, хотя в табличную часть «ДополнительныеРеквизиты» этого справочника они добавились (посмотрел с помощью консоли запросов). В чем моя ошибка?


  2. nbIpKuH_BaH9I

    Offline

    nbIpKuH_BaH9I
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    7.874
    Симпатии:
    503
    Баллы:
    204

    Посмотрите при открытии формы с доп реквизитами, может там какое условие есть…

Поделиться этой страницей


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

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