Имя: Пароль:
1C
1С v8
УТ 11: Заполнение табличной части ДополнительныеРеквизиты для Партнеров
0 PiotrLoginov
 
06.11.12
07:51
Здравствуйте всем. Всю голову уже сломал. Переношу данные с помощью КД в справочник Партнеры УТ 11. Закончив настройку основных реквизитов, принялся за дополнительное сведение Представитель (оно уже создано вручную для Партнеров) с типом значения Физ. лицо.

Сначала как положено внутри ПКО для справочника Партнеры создал ПКГС для табличной части ДополнительныеРеквизиты с двумя ПКС, ссылающимися на ПКО для справочника ФизическиеЛица и для Плана видов характеристик ДополнительныеРеквизитыИСведения. Написал обработчик для этого ПКГС:

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

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

.....

Тогда удалил из ПКО созданное ПКГС и написал в ПКО в обработчике После выгрузки:

   ДР = Объект.ДополнительныеРеквизиты.Добавить();
   ДР.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Представитель");
   ДР.Значение = Справочники.ФизическиеЛица.НайтиПоНаименованию("Пупкин Вася");

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

Очень хочется довести заполнение справочника Партнеры до ума. И заодно научиться программно заполнять дополнительные сведения.  В пособиях по КД инфу об этом не нашел. В сети информация не помогла. Уверен, уважаемые гуру мисты помогут. Заранее Большое спасибо всем неравнодушным.
1 PiotrLoginov
 
06.11.12
08:24
и сразу ап :)
2 PiotrLoginov
 
06.11.12
09:42
еще один :(
3 Defender aka LINN
 
06.11.12
09:43
КоллекцияОбъектов.Свойство = "Представитель";
КоллекцияОбъектов.Значение = "Пупкин Вася";

А они в УТ11 прямо оба строки, да?
4 PiotrLoginov
 
06.11.12
09:49
Ну на самом деле С помощью двух ПКО, в которые передается управление (см. выше), полученные строки преобразуются в ссылочные значения. На самом деле формату xml все равно, он в любом случае по каждому ссылочному значению передает лишь само значение и информацию о содержимом полей поиска. В данном случае это выглядит так:
5 Defender aka LINN
 
06.11.12
09:53
(4) Как следует из (0), "формату xml" может и все равно, но твоя теория не работает один хрен.
6 PiotrLoginov
 
06.11.12
10:01
(4) ... выглядит так:

...
<ТабличнаяЧасть Имя="ДополнительныеРеквизиты">
   <Запись>
       <Свойство Имя="Свойство" Тип="ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения">
           <Ссылка Нпп="3">
               <Свойство Имя="Наименование" Тип="Строка">
                   <Значение>Представитель</Значение>
               </Свойство>
           </Ссылка>
       </Свойство>
       <Свойство Имя="Значение" Тип="СправочникСсылка.ФизическиеЛица">
           <Ссылка>
               <Свойство Имя="Наименование" Тип="Строка">
                   <Значение>Василий Пупкин</Значение>
               </Свойство>
           </Ссылка>
       </Свойство>
   </Запись>
</ТабличнаяЧасть>
...
7 PiotrLoginov
 
06.11.12
10:42
(5) Какая уж там теория... На практике освоить бы диктуемые разработчиками правила.
8 hhhh
 
06.11.12
11:08
(1) ну может там у вас поиск по коду задан? Или по внутреннему идентификатору?
9 PiotrLoginov
 
06.11.12
11:22
(8) Никак нет.

Ну ладно, в первом варианте... Но во втором-то почему не прокатило? Прям руки опускаются... Должна же быть причина. Ведь во втором случае код заполнения табличной части с доп. сведением верный?
10 PiotrLoginov
 
06.11.12
12:19
Жду любые мысли и замечания. Особо приветствуется критика и тыканье носом.
11 hhhh
 
06.11.12
12:24
(9) потому что при выгрузке нет никаких планов видов характеристик. В 7.7 не бывает такого.
12 PiotrLoginov
 
06.11.12
12:28
Так. И как же заполнить доп. сведение в приемнике на основании данных в источнике?
13 PiotrLoginov
 
06.11.12
12:34
Была у меня мысль перекинуть исходные значения в маловажный реквизит элементов справочника Партнеры. А потом уже внутри базы приемника воспользоваться УниверсальныеПодборИОбработкаОбъектов.epf . То есть написать произвольный алгоритм: Если Значение в комментарии такое-то, то заполнить строку ТЧ ДополнительныеРеквизиты так-то. А если такое-то, то заполнить строку эдак-то.

Но ведь это опять же надо будет этим произвольным алгоритмом делать тоже самое - программно заполнять значения в табличной части. Почему хоть такая проблема? Вот уж не думал, где выйдет затык...
14 PiotrLoginov
 
06.11.12
12:43
Форумчане, будьте добры, помогите, пожалуйста, заполнить это ... нехорошее сведение. Не вручную же несколько сотен элементов перелопачивать :( Допустим, у меня будет вписана фамилия в реквизит элемента Комментарий. Значит, я пишу в универсальной обработке:

Если Объект.Комментарий = "Сидоров" Тогда
   ДР = Объект.ДополнительныеРеквизиты.Добавить();
   ДР.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Представитель");
   ДР.Значение = Справочники.ФизическиеЛица.НайтиПоНаименованию("Сидоров Иван");
ИначеЕсли Объект.Комментарий = "Пупкин" Тогда
   ДР = Объект.ДополнительныеРеквизиты.Добавить();
   ДР.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Представитель");
   ДР.Значение = Справочники.ФизическиеЛица.НайтиПоНаименованию("Пупкин Вася");
КонецЕсли;

Правильно?
15 hhhh
 
06.11.12
12:49
(14) справа сверху жмакаешь Быстрый старт. Там у них есть бесплатные уроки по КД. И как раз этот случай подробно разжевывается.
16 PiotrLoginov
 
06.11.12
12:54
Ищу... Есть у них раздел с бесплатными курсами, но КД там не присутствует.