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

Показывать по
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
сообщений

  Маркет42 - Место для твоих разработок  

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

Я
   Nikitvol

02.07.13 — 15:13

Всем здрасте.

Пишу правило обмена для переноса некоторых данных из УПП 1.2 в УТ 11.1.

Проблема возникла при написании правила конвертации справочника Контрагенты (УПП) в справочник Партнеры (УТ). Нужно один реквизит из справочника Контрагенты сконвертировать в дополнительный реквизит справочника Партнеры.

Не могу разобраться, как это сделать? Подскажите плиз.

Может у кого есть рабочий пример?

  

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

   Amra

1 — 02.07.13 — 15:14

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

   ДенисЧ

2 — 02.07.13 — 15:14

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

   Aprobator

3 — 02.07.13 — 15:20

бггг.

   kosts

4 — 02.07.13 — 15:25

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

   Maxus43

5 — 02.07.13 — 15:26

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

   mikecool

6 — 02.07.13 — 15:26

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

   mikecool

7 — 02.07.13 — 15:27

(4) (5) вы не о том думаете )

   kosts

8 — 02.07.13 — 15:29

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

   Aprobator

9 — 02.07.13 — 15:30

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

   mikecool

10 — 02.07.13 — 15:32

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

   DexterMorgan

11 — 02.07.13 — 15:41

(1) Дополнительные реквизиты в УТ — это табличная часть, в данном случае у спр. «Партнеры», с реквизитами Свойство, Значение.

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

   Aprobator

12 — 02.07.13 — 15:43

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

  

Nikitvol

13 — 04.07.13 — 07:45

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

TurboConf — расширение возможностей Конфигуратора 1С

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

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

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

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

(скрин 1)

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

(скрин 2)

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

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

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

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

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

Готово.

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

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

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

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

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

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

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

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

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

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

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

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

Готово.

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

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

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

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

Рекомендовать в новости

Настройка правил конвертации полей в дополнительные реквизиты

Гость

0

06.03.2012 — 18:45


Есть конфигурация Конвертация данных, редакция 2.1 (2.1.5.1) В ней база источник 8.1 база приемник 8.2
у источника- Справочник Контрагент поле «Торговый представитель»
у приемника Справочник Контрагент дополнительный реквизит «Торговый представитель».
Как Настроить правило конвертации объектов?
У источника доступно поле ТорговыйПредставитель а у приемника такого поля нет а есть поля: Значение,Свойство, Текстовая Строка.
Пробовал подставить поле- Значение в приемнике- результата никакого.

Гость

1

07.03.2012 — 15:16

ап

bma1

2

07.03.2012 — 16:58

2(2) купи или скачай книжку по КД. там такой пример описан.

Гость

3

07.03.2012 — 19:26

автора и название книги можно услышать? в книге Ольги узнецовой «Конвертация данных» такоо примера нет.

Гость

4

08.03.2012 — 08:36

ап

bma1

5

08.03.2012 — 13:44

2(4) Бояркин и Филатов «Конвертация данных» начинать читать со страницы 135…

Гость

6

08.03.2012 — 16:12

Создал у приемника группу «Дополнительные реквизиты» она является табличной частью, добавляю в нее поля Свойство и Значение. В источнике перед выгрузкой пишу Значение=1. При выгрузке данных из источника вываливается ошибка «Поле объекта не обнаружено (ДополнительныеРеквизиты)». В чем может быть Дело? тоже самое с табличной частью Контактная информация.
Приемник УТ 11.0.7.13

bma1

7

08.03.2012 — 16:48

2(7) ты обращаешся к доп. табличной части как к реквизиту и вот результат… проверь табличную часть на наличие такого доп.реквизита, и если нет — создай новую строку.

Гость

8

08.03.2012 — 17:33

как это будет выглядеть в виде кода? можно посмотреть?

bma1

9

08.03.2012 — 17:41

2(9) Что-то типа: НоваяСтрока = Приемник.ДополнительныеРеквизиты.Добавить() и далее заполняешь ее значения.

Гость

10

09.03.2012 — 17:28

1-prohor32 >у приемника Справочник Контрагент дополнительный реквизит «Торговый представитель». Дополнительный реквизит — это как?

В данной заметке хотелось бы рассмотреть вопрос: Как загрузить дополнительные реквизиты номенклатуры при помощи обработки с диска ИТС «Загрузка данных из табличного документа (управляемые формы)»?

В качестве примера, будем использовать конфигурацию 1С:ERP Управление предприятием 2, аналогичным смособом можно будет загрузить в Управление торговлей 11 или любую другую, подобную конфигурацию.

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

Позиция номенклатуры

Но такой способ нам не подходит, т.к. мы будем загружать дополнительные реквизиты для списка номенклатуры. Для примера загрузим одну номенклатуру и два ее дополнительных реквизита: «Формат» и «Толщина».

Загрузка из табличного документа

Настроим поиск номенклатуры по наименованию из колонки с номером один.

Настройка загрузки реквизитов

Теперь немного займемся программированием. Откроем событие «При записи объекта» и добавим туда следующий программный код:

Объект.ДополнительныеРеквизиты.Очистить(); // Предварительно удаляем все доп. реквизиты. Если не нужно — закомментировать.ДопСвойства = Новый Соответствие;
ДопСвойства.Вставить(«11», 91); // Наименование свойства, номер ячейки
ДопСвойства.Вставить(«АКЦИЯ», 92);
ДопСвойства.Вставить(«Размер,мм», 93);
ДопСвойства.Вставить(«Формат», 94);
ДопСвойства.Вставить(«Номер цвета», 95);
ДопСвойства.Вставить(«Цвет», 96);
ДопСвойства.Вставить(«шт./м2», 97);
ДопСвойства.Вставить(«шт. / палетта», 98);
ДопСвойства.Вставить(«вес, кг/шт.», 99);

Для Каждого

ЭлементДопСвойства Из ДопСвойства ЦиклТекСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(ЭлементДопСвойства.Ключ + » (» + Объект.ВидНоменклатуры + «)», Ложь);
   
ТекЗначение = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ТекстыЯчеек[ЭлементДопСвойства.Значение], Ложь);
    Если Не
ЗначениеЗаполнено(ТекСвойство) Тогда
       
Сообщить(«Не удалось найти свойство: «»» + ЭлементДопСвойства.Ключ + » (» + Объект.ВидНоменклатуры + «)»»»);
        Продолжить;
    КонецЕсли;
    Если Не
ЗначениеЗаполнено(ТекЗначение) Тогда
       
Сообщить(«Создаем новое значение «»» + ТекстыЯчеек[ЭлементДопСвойства.Значение] + «»» для свойства «»» + ТекСвойство + «»»»);
       
НовоеЗначение = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
       
НовоеЗначение.Владелец = ТекСвойство;
       
НовоеЗначение.Наименование = ТекстыЯчеек[ЭлементДопСвойства.Значение];
       
НовоеЗначение.Записать();
       
ТекЗначение = НовоеЗначение.Ссылка;
    КонецЕсли;
МассивСтрок = Объект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура(«Свойство», ТекСвойство));
    Если
МассивСтрок.Количество() = 0 Тогда
       
ДопРеквизит = Объект.ДополнительныеРеквизиты.Добавить();
    Иначе
       
ДопРеквизит = МассивСтрок[0];
    КонецЕсли;
   
ДопРеквизит.Свойство = ТекСвойство;
   
ДопРеквизит.Значение = ТекЗначение;

КонецЦикла;

Объект.Записать();

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

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