Имя: Пароль:
1C
1С v8
Конвертация данных 2. Выгрузка/загрузка док. Разные реквизиты.
,
0 dva1c
 
03.05.12
07:46
С помощью КД получается выгружать/загружать объекты с реквизитами одного типа.
Когда потребовалось выгрузить документ, то столкнулся с тем, что разные реквизиты и документа в источнике и приемнике.
Скрины:
http://s019.radikal.ru/i615/1205/7e/5a71b4634d25.jpg
http://s019.radikal.ru/i630/1205/c5/e4ccb76329c2.jpg
Подскажите: где и что написать, чтобы документы нормально выгрузились/загрузились?
PS Пытался использовать книжку Бояркина, Филатова. Пока не въехал. :(

Пытался писать После загрузки

Отказ = Истина;



   ПараметрНоменклатураОС = ПараметрыОбъекта["НомОС"];

   // КонецЕсли;

   //

   //НаименованиеГруппыОС    = "Производство КМГ";
   //СправОС                    = Справочники.ОсновныеСредства;
   //СпрВнеоборотныеАктивы    = Справочники.ВнеоборотныеАктивы;

Если ПараметрНоменклатураОС <> Неопределено Тогда
       
   //НужнаяГруппаОС = СправОС.НайтиПоНаименованию(НаименованиеГруппы);

   //Если ПараметрНоменклатураОС.ПринадлежитЭлементу(НужнаяГруппаОС) Тогда

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

Скрин: http://i016.radikal.ru/1205/7e/b342f6a324fa.jpg
Тоже бред получается.
1 dva1c
 
03.05.12
07:47
2 dva1c
 
03.05.12
07:58
Подскажите где глянуть аналогичные правила?
3 dva1c
 
03.05.12
08:00
Думал передавать через параметр:

       РезультатПоиска = СпрВнеоборотныеАктивы.НайтиПоНаименованию(ПараметрНоменклатураОС);
       Если РезультатПоиска.Пустая() Тогда
           
           Отказ = Ложь;
           
           НовыйЭлементВнеоборотныеАктивы = Справочники.ВнеоборотныеАктивы.СоздатьЭлемент();
           НовыйЭлементВнеоборотныеАктивы.Наименование = ПараметрНоменклатураОС.Наименование;
           
           НовыйЭлементВнеоборотныеАктивы.Записать();
           Сообщить("Элемент "+НовыйЭлементВнеоборотныеАктивы+" записан!", СтатусСообщения.Важное);
           
           Попытка
               Объект.ВнеоборотныйАктив = НовыйЭлементВнеоборотныеАктивы;
           Исключение
               Сообщить("Фиг тебе");
           КонецПопытки;
       КонецЕсли;
4 dva1c
 
03.05.12
08:01
Элементы в справочнике ВнеоборотныеАктивы создаются. Ссылку передать в документ не сумел.
ЧЯНТД?
5 Рэйв
 
03.05.12
08:04
Сделай отдельное ПКО для этих типов, где покажи как и что будет переходить из одного в другое. И вставь его для реквизита в поле "Правило" , которое вот тут

http://s019.radikal.ru/i630/1205/c5/e4ccb76329c2.jpg

у тебя пустое
6 dva1c
 
03.05.12
08:04
В поиске нашел v8: конвертация данных: пренос справочника в документ
Там что-то говорится о примере в демо-базе КД2.
Попробую поискать.
7 dva1c
 
03.05.12
08:06
(5) Спасибо за участие!
Скрин привел для того, чтобы показать: как я двигаюсь.
8 dva1c
 
03.05.12
08:11
(5) Имеешь ввиду то, что я обвел на скрине?
http://s017.radikal.ru/i409/1205/87/d3eb46d626ae.jpg
9 Рэйв
 
03.05.12
08:13
(8)Да.  Если реквизиты не простого типа(дата, число, строка), то вообще-то там положено быть ПКО, ко которому переносится реквизит-объект.В котором ты должен написать что и куда. Так что все велосипеды там давно изобретены.
10 dva1c
 
12.05.12
08:06
После перерыва, продолжаю осваивать КД2.
Созданы правила для переноса документов, но...

В источнике, в документе "ПринятиеКУчетуОС" есть реквизит Оборудование (СправочникСсылка.Номенклатура), а в приемнике такой же реквизит ВнеоборотныйАктив (СправочникСсылка.ВнеоборотныеАктивы).
В ПКО  ПринятиеКУчетуОС создано правило "ПринятиеКУчетуОС".
В нем я прописал ПослеЗагрузки следующее:

Попытка
   НовыйЭлемент = Справочники.ВнеоборотныеАктивы.СоздатьЭлемент;
   НовыйЭлемент.Наименование = Источник.Номенклатура.Наименование;
   НовыйЭлемент.Записать();
   Объект.ВнеоборотныйАктив = НовыйЭлемент.Ссылка;
   Сообщить("Записал!", СтатусСообщения.Информация);
Исключение
   Сообщить("Не получилось!", СтатусСообщения.Важное);
КонецПопытки;

Моя попытка не работает. Пишет:

Начало выгрузки:   12.05.2012 9:57:17

Ошибка получения значения свойства подчиненного объекта (по имени свойства источника)
   ПКО                    =  ПринятиеКУчетуОС  (Документ: Принятие к учету ОС)
   ПКС                    =  16  (Номенклатура --> ВнеоборотныйАктив)
   Объект                 =  Принятие к учету ОС 00000000039 от 01.02.2010 15:00:00  (Документ ссылка: Принятие к учету ОС)
   СвойствоПриемника      =  ВнеоборотныйАктив  (СправочникСсылка.ВнеоборотныеАктивы)
   ОписаниеОшибки         =  Поле объекта не обнаружено (Номенклатура)
   ПозицияМодуля          =  ВнешняяОбработка.УниверсальныйОбменДаннымиXML(6534)
   КодСообщения           =  16

Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML(1556)}: Ошибка получения значения свойства подчиненного объекта (по имени свойства источника)
   ПКО                    =  ПринятиеКУчетуОС  (Документ: Принятие к учету ОС)
   ПКС                    =  16  (Номенклатура --> ВнеоборотныйАктив)
   Объект                 =  Принятие к учету ОС 00000000039 от 01.02.2010 15:00:00  (Документ ссылка: Принятие к учету ОС)
   СвойствоПриемника      =  ВнеоборотныйАктив  (СправочникСсылка.ВнеоборотныеАктивы)
   ОписаниеОшибки         =  Поле объекта не обнаружено (Номенклатура)
   ПозицияМодуля          =  ВнешняяОбработка.УниверсальныйОбменДаннымиXML(6534)
   КодСообщения           =  16

ЧЯНТД? Подскажите, пожалуйста!
11 dva1c
 
12.05.12
08:07
Рэйв
если ты на форуме, направь мои стопы в нужном направлении.
12 dva1c
 
12.05.12
08:10
Объект источник и Объект приемник описываются одинаково:
ДокументСсылка.ПринятиеКУчетуОС
13 echo77
 
12.05.12
08:12
(10) Ни хера не понятно. Правила выложи
14 echo77
 
12.05.12
08:13
и скриншоты поменьше делай - слишком хорошо видно и читается даже
15 dva1c
 
12.05.12
08:15
Спасибо! Сча.
16 echo77
 
12.05.12
08:15
(10) На хера создавать элемент - он и так будет создан, если не найден.
СоздатьЭлемент() - это метод справочника-менеджера
17 dva1c
 
12.05.12
08:38
(16) Спасибо!
18 dva1c
 
12.05.12
08:49
Нет. Не получается.
Не получается потому, что в Источнике реквизит Объект (Справочники.Номенклатура), где Код длина 11, Строка
а в Приемнике реквизит ВнеоборотныеАктивы (Справочники.ВнеоборотныеАктивы)
19 dva1c
 
12.05.12
08:50
+(18) и все эти реквизиты в переносимом документе "ПринятиеКУчетуОС"
20 dva1c
 
12.05.12
08:55
21 echo77
 
12.05.12
09:01
(20) Чувак, если ты не понял - на скринах ни хера не видно
22 dva1c
 
12.05.12
09:01
Моя неудачная попытка http://zalil.ru/33221012
23 dva1c
 
12.05.12
09:01
(21) Крупнее надо?
24 dva1c
 
12.05.12
09:03
25 dva1c
 
12.05.12
09:06
26 echo77
 
12.05.12
09:06
Для ПКС ПринятиеКУчетуОС.ОсновныеСредства.Номенклатура => ВнеоборотныйАктив В обработчике ПослеВыгрузки вот так не надо делать:

Объект.ВнеоборотныйАктив.Наименование = Источник.Номенклатура.Наименование;

в добавок переменная Объект там неопределена
27 echo77
 
12.05.12
09:08
в ПКО Номенклатура не указаны приемники для кучи реквизитов. На хер их тогда выгружать? Отключай эти ПКС/удаляй
28 dva1c
 
12.05.12
09:08
(26) Спасибо! Я чувствую, что где-то близко )
А как правильно писать, чтобы Номенклатура вливалась во ВнеоборотныеАктивы?
29 dva1c
 
12.05.12
09:09
(27) попробую, но мне нудно Наименование этого справочника
30 dva1c
 
12.05.12
09:09
*(29) нужно
31 echo77
 
12.05.12
09:11
Нужно наименование - конвертируй Наименование=>Наименование. В чем проблема?
32 echo77
 
12.05.12
09:13
вот так это ПКО выглядит у меня: http://savepic.net/2755215.htm
33 dva1c
 
12.05.12
09:15
(32) Спасибо! Пробую сделать также.
34 dva1c
 
12.05.12
09:49
Спасибо, echo77 !
Все получилось, но надо еще сделать, чтобы в Приемнике, в документе щаполнялся еще один реквизит.
Этот реквизит "ПрочийОбъектУчета", который выбирается из предопределенных элементов справочника "ПрочиеОбъектыУчета".

Интересен элемент этого справочника "Приобретение ОС"
http://s019.radikal.ru/i601/1205/05/c8c0b73994b1.jpg
35 dva1c
 
12.05.12
09:50
*(34) заполнялся
36 dva1c
 
12.05.12
09:51
Я не останавливаю свои "исследования".
Но если подскажите, буду благодарен!
37 dva1c
 
12.05.12
10:06
Что-то не догоняю (
38 dva1c
 
12.05.12
10:19
Вверх
39 dva1c
 
12.05.12
10:58
Попытался в ПКО ПринятиеКУчетуОС написать в После загрузки:

Попытка
   Сообщить(Объект.ПрочийОбъектУчет);
   Объект.ПрочийОбъектУчета = Справочники.ПрочиеОбъектыУчета.ПриобретениеОС;
Исключение
   Сообщить(Объект.ПрочийОбъектУчет);
КонецПопытки;
40 dva1c
 
12.05.12
10:59
Не спасло (
41 dva1c
 
12.05.12
11:00
<Пока не поддерживаю ветку на плаву, усиленно думаю )>
42 dva1c
 
12.05.12
12:18
Вопрос из (34) решен. Уже лучше!
43 dva1c
 
12.05.12
12:19
Написал в обработчике событий После загрузки

Попытка
   Сообщить(Объект.ПрочийОбъектУчета);
   Объект.ПрочийОбъектУчета = Справочники.ПрочиеОбъектыУчета.ПриобретениеОС;
Исключение
   Сообщить(Объект.ПрочийОбъектУчета);
КонецПопытки;

...и прокатило.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.