Имя: Пароль:
1C
1С v8
Конвертация данных из БП 2 в УТ 11
,
0 Reorun
 
15.07.14
09:26
Настраиваю обмен из БП 2 в УТ 11 и возникла следующая задача.
В документах товародвижения, например "Поступление товаров и услуг", в БП есть реквизит СчетУчета который нужно в УТ перенести в реквизит ХарактеристикаНоменклатуры. Который  может принимать одно из двух значений "Баланс" и "Забаланс" в зависимости от соответствующего параметра счета. Каким образом это лучше реализовать? Если можно поподробнее, для тупых.
1 Поpyчик-4
 
15.07.14
09:33
(0) Если тупой, то лучше к специалисту за деньги.
2 Reorun
 
15.07.14
09:40
(1) Ну я не совсем тупой, просто первый раз с Конвертацией данных работаю.
3 Azverin
 
15.07.14
09:43
(1)(2) значит жадный)))))
4 Reorun
 
15.07.14
09:49
(3) И не жадный, это моя работа, я должен это сам реализовать, но мне нужна помощь.
И хватит уже оффтопить.
5 Azverin
 
15.07.14
09:53
(4) какие у тебя варианты есть? что нарыл в инете? или ждёшь на блюдечке?
6 Reorun
 
15.07.14
10:04
(5) Говорю, перепробовал, все на что хватило фантазии. Решений подходящих под эту задачу не нашел.
Что пробовал:
1. Сделать 2 отдельных ПКС. В первом выгружать в параметр "Баланс" или "Забаланс"(это получилось). Во втором хотел из параметра взять параметр и по наименованию найти, тут пробовал несколько различных вариантов, ничего не сработало. Вероятно я просто не понял как это нужно правильно делать.
2. Пробовал сделать одно ПКС и в нем самом Перед выгрузкой переопределять "Значение". В информаци по обработчикам написано что можно. При попытке выгрузить данные в базе выпадала ошибка связанная с Уникальным идентификатором.
В общем все это делалось методом тыка и с помощью обрывочной информации из интернета.
7 Naumov
 
15.07.14
10:08
(6) 1. ну нормальное направление. читаешь параметр и ищешь нужное.
2. можно на этапе выгрузке сделать ПКС для ТЧ из пустого реквизита в характеристику.
в событии Перед выгрузкой для ПКС, определяй значение как Соответствие с подходящими полями (определенными в ПКО для характеристики)
8 Armin
 
15.07.14
10:10
(6) реквизит ХарактеристикаНоменклатуры какого типа? ПВХ? Тогда нужно выгружать через "ВыгрузитьПоПравилу()" и указывать правило переноса данного ПВХ, а в качестве ИсходящихДанных наполнить структуру со значениями выгружаемых полей.
9 Reorun
 
15.07.14
10:11
(6) Еще делал просто в тупую, без настроек и изучал файл обмена, там он вроде все нормально прописывает, но выгружает он наименование счета и по нему видимо ищет и очевидно не находит. Просто подменить выгружаемое значение и все должно заработать. Но у меня это сделать не получилось.
10 Reorun
 
15.07.14
10:13
(8) ХарактеристикаНоменклатуры - справочник ХарактеристикиНоменклатуры.
11 Armin
 
15.07.14
10:17
(10) ну тогда все просто - должно все работать через "Значение" в "ПослеВыгрузки" свойства "СчетУчета".
А вообще лучше делать через новое ПКО как я описывал в (8)
12 Armin
 
15.07.14
10:18
(11) тьфу "ПередВыгрузкой"
13 Reorun
 
15.07.14
10:32
(12) Вот провел тест.
ПКС
Источник: СчетУчета
Приемник: Характеристика
Перед выгрузкой:
Если ОбъектКоллекции.СчетУчета.Забалансовый Тогда
    Значение = "Забаланс";
Иначе
    Значение = "Баланс";
КонецЕсли;
(При выгрузке в параметр это код отрабатывает правильно).
ПКО - все стандартно, только поменял поле поиска на наименование(по умолчанию было код).

Результат: ошибка при выгрузке.
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(10939)}: Значение не является значением объектного типа (УникальныйИдентификатор)
            УникальныйИдентификатор = СсылкаНаИсточник.УникальныйИдентификатор();

Если убрать код из ПКС ошибка пропадает, но соответственно не достигается необходимый результат.
14 Reorun
 
15.07.14
10:33
(7) А как правильно искать? В ПКО? Судя по информации по обработчикам "ПараметрыОбъекта" доступны только в обработчике "ПослеЗагрузки". Как я понимаю там уже искать поздно, хотя пробовал там пытаться переопределять "Объект" или "Ссылка" - ноль результата.
15 mikecool
 
15.07.14
10:38
в передвыгрузкой присваивать значению "Баланс" или "Забаланс"
пкс строка в пвх, если значения предопределенные в приемнике - вообще все мышью кликается
16 Armin
 
15.07.14
10:43
(13) Не юзал данную обработину. "УниверсальныйОбменВФорматеXML" нормально скармливает. Пробуй через ПКО, раз твоя обработка не поддерживает простую выгрузку.
17 Reorun
 
15.07.14
10:49
(15) Это все понятно. В параметр выгружается вполне успешно. Там не ПВХ а справочник, я писал выше. Тут вопрос в каком обработчике и как конкретно искать? "При загрузке" "Объект" вроде можно переопределить, но там нет доступа к "ПараметрыОбъекта". "После загрузки" есть "ПараметрыОбъекта", но уже нельзя переопределять "Объект".
18 Reorun
 
15.07.14
10:49
(16) А как в ПКО выгрузить нужное значение?
19 Armin
 
15.07.14
11:03
(18) ИсходящиеДанные = Новый Стрктрура("Наименование,если есть еще какие то поля приемника, то тоже описываем тут");
ИсходящиеДанные.Наименование = ?(Объект.СчетУчета.Забалансовый(), "Забаланс", "Баланс");
// Заполняем доп поля если они есть

// Выгружаем:
ВыгрузитьПоПравилу(ИсходящиеДанные,,,,"<ИмяПКОХарактеристикаНомеклатуры>");

С замятыми мог напутать, не помню какой параметр по счету исходящие данные в функции
20 Armin
 
15.07.14
11:07
(19) + В ПКО можно поставить галку "Получить из входящих данных" что бы не описывать левую часть.
21 Reorun
 
15.07.14
12:30
(19) Явно где-то протупливаюсь.
ПКС
Источник: СчетУчета
Приемник: Характеристика

ПКО
ПриВыгрузке:
ИсходящиеДанные = Новый Структура("Наименование");
ИсходящиеДанные.Наименование = ?(Источник.Забалансовый, "Забаланс", "Баланс");

ВыгрузитьПоПравилу(ИсходящиеДанные,,,, ИмяПКО);

Результат. Да никакого, в файл просто выгружается СчетУчета.
Я же просил поподробнее, как для тупых.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой