Имя: Пароль:
1C
1С v8
Подскажите пару вопросов по конвертации данных.
0 Magnetic
 
25.11.13
23:38
В общем это связано с моментом когда в источнике нет реквизита который обязателен в приемнике.
Для реквизита шапки я просто указываю Значение =
Но вот если значение реквизита зависит от вида документа ну допустим 2 варианта. Как тут определится какой вид документа...
Ну и еще такой момент когда дело касается реквизита табличной части если в источнике нет такого а в приемнике обязателен...
Эххх... ну да ладно может кто подскажет...
1 mikecool
 
25.11.13
23:39
я ни.уя не понял
2 mikecool
 
25.11.13
23:40
нет реквизита ТЧ - поступаешь как с реквизитом шапки, для кд эквипенисуально, что за реквизит
3 Magnetic
 
25.11.13
23:43
(2) пробовал ошибка
4 mikecool
 
25.11.13
23:44
(3) тогда не пробуй, ошибки не будет
5 Magnetic
 
25.11.13
23:44
(1) Имею документ делает либо приход либо расход если приход то отсутствующий реквит в приемнике одно значение иначе второе так понятнее ну это грубый пример но по сути
6 Magnetic
 
25.11.13
23:45
(4) я подумаю над этим советом
7 Magnetic
 
25.11.13
23:46
(5) *отсутствующий в источнике блин
8 GreyK
 
25.11.13
23:55
(7) Можно сделать два правила конвертации и если моядумаечтоненадо тогда основному правилу отказ и отрабатываем альтернативное ПКО..
9 Magnetic
 
26.11.13
00:02
(8) я сопоставил присутствующему только в приемнике реквизиту другой определяющий приходный или расходный док и условие написал:

Если источник = "Значение для прихода" тогда
   Значение = "то что нужно при приходе"
Иначе
   Значение = "то что нужно при расходе"
КонецЕсли;

Сча проверю прокатит или нет
10 Magnetic
 
26.11.13
00:06
(9) Проверил прокатило а вот с табличной частью только через оппу справился
11 Magnetic
 
26.11.13
00:09
(8) (9) Но некрасиво это мне так кажется вот и спрашиваю как бы это лучше сделать хотя это работает
12 mikecool
 
26.11.13
00:11
для тч надо или выборкуданных формировать
или рисовать исходящиеданные в пко, а у свойства ставить признак получать из входящих данных
13 Magnetic
 
26.11.13
00:15
(12) наверное второе подойдет потому как там только 1 значение для всех доков воткнуть надо иначе не проводятся... типа бухам оно нафик не надо но для проведения дока обязательно ...
я добавил реквизит в источнике создал новую конвертацию обьединил правила и в этом местте уже стало с чем сопостовлять я и написал значение = "лишь бы документ провелся" правда через оппу?
14 Magnetic
 
26.11.13
00:17
хотя (9) наводит на мысль что зря я гемороем страдал
15 Magnetic
 
26.11.13
00:18
ошибка то была что в источнике не найдено ... а так абы что сопоставил а значение явно указал
16 Aleksey
 
26.11.13
00:21
(12) несовсем

Для ТЧ есть свои предопределенные параметры

Во первых это кончено

КоллекцияОбъектов - Неопределено. Если в теле обработчика определить коллекцию (присвоив данной переменной значение, например, описывающее табличную часть или набор движений, например, типа ТаблицаЗначений), то стандартное получение коллекции выполняться не будет.

Доступ к выгружаемой строке доступен через

ОбъектКоллекции - ссылка на выгружаемый объект коллекции. Например, строка табличной части или запись регистра или строка таблицы значений или строка результата запроса и т.д.
17 Steel_Wheel
 
26.11.13
00:23
(9) не прокатит
надо Если Источник.Вид() =....

ты не забывай, что Источник -- это ссылка на объект, которую сравнивать со строкой просто не надо. Сравнивать со строкой надо результат вызова метода объекта
18 mikecool
 
26.11.13
00:23
(16) вариантов не один, какой выбрать - всегда вопрос
19 Magnetic
 
26.11.13
00:23
(17) там перчисление прокатило текстом
20 Aleksey
 
26.11.13
00:23
Так что если нужно рисовать свою ТЧ, то это к "КоллекцияОбъектов"

Если нужно заменить конкретное значение в ТЧ, то это "Значение"
21 Steel_Wheel
 
26.11.13
00:26
(19) Ок. Ну, круто тогда, одним головняком меньше.
(20) Тогда проще вообще перегрузить. Дело в том, что в КД табличная часть -- это обычная таблица значений. Можно просто сказать Приемник.Товары = СоздатьТаблицуЗначений("СписокКолонокЧерезЗапятую");
И в Приемник.Товары зафигачить ТЗ такой же структуры. Иногда это проще, чем городить огород с условиями
22 Aleksey
 
26.11.13
00:28
не приемник.Товары, а КоллекцияОбъектов
23 Steel_Wheel
 
26.11.13
00:29
Вообще, результат работы КД -- это ТЗ. В качестве колонок выступают реквизиты шапки и ТЧ. Причем ТЧ также представляют из себя ТЗ со структурой, идентичной Данным ТЧ (включая колонки, которые добавляет сама 1с). Поэтому, можно зафигачить запрос и вообще не перебирать документы, а сгенерить "суррогатную" выборку

(22) Я уже плоховато помню, но была разница между
а) когда мы перебираем объекты по условию
б) генерим свою собственную выборку.

КоллекцияОбъектов -- это случай б). Хотя, я могу ошибаться
24 hhhh
 
26.11.13
00:30
(21) это если в ТЗ числа и строки. А представьте ситуацию, когда в ТЗ элементы справочника или перечисления.
25 GreyK
 
26.11.13
00:32
(18) Если сам пишешь ПВО, то можешь в выборке определить все варианты для ПКО. Приемник как я понял один и набор реквизитов не меняется.
26 Steel_Wheel
 
26.11.13
00:32
(24) Piece of Cake
а) перечисления. Просто пишем строковое значения перечисления, как в конфигураторе. Не забываем, что у нас настроены правильно соответствия
б) справочники -- смотрим, как мы настроили политику поиска элементов справочника и пишем Код или Наименование.

(22) насчет КоллекцииОбъеков -- ты прав. Применик -- это конкретный реквизит.
27 Aleksey
 
26.11.13
00:37
(23) КоллекцииОбъеков - это как раз параметр ПКС

А в выборке (в ПВД)- ВыборкаДанных

ВыборкаДанных - Запрос, Результат запроса, Выборка из результата запроса или произвольная коллекция выгружаемых объектов. Используется, когда способ выгрузки данных - Произвольный алгоритм. Если определить данную переменную, то обход коллекции и выгрузка объектов будет осуществляться автоматически

Т.е. ВыборкаДанных = Виртуальный документ (ТЗ)
28 Aleksey
 
26.11.13
00:38
(24) а какая разница что там? Ссылочный или примитивный тип? Разница лишь в том что для ссылочного типа нужно описывать ПКО, примитивный сам конвертируется
29 Steel_Wheel
 
26.11.13
00:57
(27) Все правильно написал. Я просто уже давно не 1с-ник, но с этой штукой сталкиваться приходилось, а хелпа, как такового не было.

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