Имя: Пароль:
1C
1С v8
Конвертация данных. Реквизит документа-источника в строку ТЧ приемника.
0 palm1c
 
25.08.11
11:33
Добрый день.
Есть документ в базе-источнике.
В зависимости от того, равен или нет нулю реквизит этого документа, в базе-приемнике нужно создать строку табличной части, и заполнить её значением этого реквизита.

Подскажите, пожалуйста, как это лучше сделать.
1 palm1c
 
25.08.11
11:36
Есть мысли делать это после загрузки, только вот как получить доступ к реквизиту источника в этом случае.
2 Aleksey
 
25.08.11
11:37
Перед выгрузкой заполняй колекциюОбъектов
3 Синий зуб
 
25.08.11
11:37
Выгружай твой реквизит в Параметр, он доступен в после загрузки
4 palm1c
 
25.08.11
11:40
(3) Пожалуйста, поподробнее, я не использовал никогда Параметр.
5 Поручик
 
25.08.11
11:48
(3) И что даст параметр? Заполнение КоллекцияОбъектов перед выгрузкой прекрасно решает задачу.
6 Синий зуб
 
25.08.11
11:49
Ставишь в ПКС галку - Передавать данные в параметр, задаешь его строковое имя, и получишь в После загрузки соответствие - "ПараметрыОбъекта - либо Неопределено либо Соответствие, в котором хранятся дополнительные параметры переденные для данного объекта из источника в приемник. Если параметров передано не было, то ПараметрыОбъекта = Неопределено."
7 Синий зуб
 
25.08.11
11:50
(5) ему 1 строка нужна из этого документа, параметром он получит то, что выгружает и чему нет соответствия в источнике.
8 palm1c
 
25.08.11
11:55
(6) Пробую...
9 palm1c
 
25.08.11
12:10
(7) Не получается что-то.
Передавать данные в параметр у меня недоступно для выбора. Что я не так делаю?
10 palm1c
 
25.08.11
12:12
Источник - ДопЗатраты. Тип - Число (12,2).
Приемник - не назначено.
11 Поручик
 
25.08.11
12:13
(9) А ты слушай больше.
12 palm1c
 
25.08.11
12:14
(11) Какие будут предложениея?
13 palm1c
 
25.08.11
12:16
Кто-нибудь ЗНАЕТ, как это нужно делать, или у всех только предположения? Помогите, плз.
14 Синий зуб
 
25.08.11
12:16
Ну передавай через коллекцию. Вот пример - не сложно разобраться, но если не сподобился разабраться с параметром - ну не знаю...
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
|    ТрудовойДоговорПерсональныеНадбавки.Надбавка КАК Надбавка,
|    ТрудовойДоговорПерсональныеНадбавки.Размер КАК Показатель1,
|    ТрудовойДоговорПерсональныеНадбавки.Валюта КАК Валюта1
|ИЗ
|    Документ.ТрудовойДоговор.ПерсональныеНадбавки КАК ТрудовойДоговорПерсональныеНадбавки
|        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации
|        ПО ПриемНаРаботуВОрганизациюРаботникиОрганизации.ТрудовойДоговор = ТрудовойДоговорПерсональныеНадбавки.Ссылка
|ГДЕ
|    ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка = &Документ
|    И ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо = &ФизЛицо";

Запрос.УстановитьПараметр("Документ", Источник);
Запрос.УстановитьПараметр("ФизЛицо", ОбъектКоллекции.ФизЛицо);

КоллекцияОбъектов = Запрос.Выполнить().Выгрузить();

ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("ПерсональныеНадбавки", КоллекцияОбъектов);
15 Синий зуб
 
25.08.11
12:18
В данном случае я заполнял ТЧ ПерсональныеНадбавки у СотрудникаОрганизации в новом УПП из ТЧ ПерсональныеНадбавки в документе ТрудовойДоговор в старом УПП. Прямого соответствия нет.
16 palm1c
 
25.08.11
12:19
То есть я просто делаю так:

ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("ДопЗатраты",ДопЗатраты);


Это всё, я понимаю, нужно делать в ПКО, в ПередВыгрузкой.

Так?
17 GenV
 
25.08.11
12:20
(13) Создать группу-табличную часть. Источник пусто, приемник ТЧ. Добавить в неё реквизит (источник пусто). Добавить в ПередВыгрузкой этой группы (ПКГС):

КоллекцияОбектов = Новый ТаблицаЗначений;
КоллекцияОбектов.Колонки.Добавить("ИмяРеквизитаПриемника");
КоллекцияОбектов.Добавить().ИмяРеквизитаПриемника = НужноеЗначение;
18 palm1c
 
25.08.11
12:34
(17) Это для выгрузки из 1с 8.

А если для выгрузки из 1с 7.7 ?
19 palm1c
 
25.08.11
12:47
бамп
20 palm1c
 
25.08.11
12:55
Я всё равно не понял ничего пока что.
21 palm1c
 
25.08.11
12:55
Предложите, пожалуйста, решение для выгрузки из 7-ки и загрузки в 8-ку.
22 palm1c
 
25.08.11
12:56
Какбе нужен пример.
23 palm1c
 
25.08.11
12:56
(14) Если структуру заменить ТаблицейЗначений будет всё гуд?
24 palm1c
 
25.08.11
13:03
Кто-нибудь может написать работающий пример?
25 Поручик
 
25.08.11
13:09
(18) Для выгрузки из 7.7.

Сначала см (17)

В ПКО Табличной части
Перед обработкой


Если ПустаяСтрока(Источник.КонтактныйТелефон) = 0 Тогда

   КоллекцияОбъектов = СоздатьОбъект("ТаблицаЗначений");
   КоллекцияОбъектов.НоваяКолонка("Тип");
   КоллекцияОбъектов.НоваяКолонка("Вид");
   КоллекцияОбъектов.НоваяКолонка("Представление");
   КоллекцияОбъектов.НоваяКолонка("ЗначенияПолей");
   КоллекцияОбъектов.НоваяКолонка("Страна");
   КоллекцияОбъектов.НоваяКолонка("Регион");
   КоллекцияОбъектов.НоваяКолонка("Город");
   КоллекцияОбъектов.НоваяКолонка("АдресЭП");
   КоллекцияОбъектов.НоваяКолонка("ДоменноеИмяСервера");
   КоллекцияОбъектов.НоваяКолонка("НомерТелефона");
   КоллекцияОбъектов.НоваяКолонка("НомерТелефонаБезКодов");

   КоллекцияОбъектов.НоваяСтрока();
   КоллекцияОбъектов.Тип = "Телефон";
   КоллекцияОбъектов.Вид = "ТелефонФизическогоЛица";
   КоллекцияОбъектов.Представление = Источник.КонтактныйТелефон;
   КоллекцияОбъектов.ЗначенияПолей = "НомерТелефона=" + Источник.КонтактныйТелефон;
   КоллекцияОбъектов.НомерТелефона = Источник.КонтактныйТелефон;
   КоллекцияОбъектов.НомерТелефона = СтрЗаменить(КоллекцияОбъектов.НомерТелефона, "-", "");
   КоллекцияОбъектов.НомерТелефона = СтрЗаменить(КоллекцияОбъектов.НомерТелефона, " ", "");
   КоллекцияОбъектов.НомерТелефона = СтрЗаменить(КоллекцияОбъектов.НомерТелефона, "+", "");
   КоллекцияОбъектов.НомерТелефонаБезКодов = КоллекцияОбъектов.НомерТелефона;
КонецЕсли;
26 Поручик
 
25.08.11
13:10
Если ничего не понял, дальше за деньги.
27 palm1c
 
25.08.11
13:48
(26) Я-то всё понял, что за деньги.

Только я просил рабочий пример.

После (17) У меня не выгружается из 1с 7, потому что:

"Значение = Объект.ПолучитьАтрибут(Имя);"

В отладчике смотрю, что за объект и что за имя, получаю:

Объект - мой объект-источник.
Имя - Имя моей табличной части - приемника.

В табличной чати-риемнике я указал, что источник отстутствует.

Что я делаю не так?
28 palm1c
 
25.08.11
13:56
бамп
29 Поручик
 
25.08.11
13:58
(27) Ой, мля. Это гептил с нае..упавшего Прогресса начал действовать.
30 Поручик
 
25.08.11
13:59
(27) Я тебе и дал рабочий код, сам вчера перенос из ТиС 7.7. в Розницу 2 делал.
31 GenV
 
25.08.11
14:14
(27) См. 25. Там пример для 7.7 и уточнение куда его надо поместить (перед обработкой).
32 palm1c
 
25.08.11
15:29
Нихрена не работает так, как вы говорите, да.
33 palm1c
 
25.08.11
15:31
(17) Не работает.
Попробуйте сами, я уверен, что у вас получится.
34 palm1c
 
25.08.11
15:35
Советуете то, что не работает. Где логика?
35 Поручик
 
25.08.11
15:53
(34) Дятел, именно так у меня и сделан перенос реквизита шапки в строку тч. Мы тебе дали рабочий способ, иди швырнись в стенку покрепче.
36 fisher
 
25.08.11
15:56
Для 7.7 код будет полностью аналогичен (17)
Просто с таблицей значений работай в синтаксисе 7.7
37 fisher
 
25.08.11
16:00
(33) Куча подобных правил работает, именно из 7.7
Где-то ты косячишь.
38 GenV
 
25.08.11
16:02
(33) См. (31) еще раз ...
39 Поручик
 
25.08.11
16:08
(38) Он стопудов тупо скопипастил себе мой код и теперь орёт, что у него не работает. А может ума не хватает на Code кликнуть.
40 fisher
 
25.08.11
16:08
Код нужно поместить в "Перед обработкой" именно для ПКГС нужной табличной части.
Может, ты в этом косячишь?
Чтобы получить доступ к обработчикам событий ПКГС, нужно тапнуть на ГРУППУ свойств табличной части и жмакнуть "Изменить".
41 GenV
 
25.08.11
16:10
(39) Нет он просто прочитал только код )
(40) В этом, в этом. Это еще в (27) стало ясно.
42 palm1c
 
25.08.11
16:21
Господа, не нужно инсинуаций в мой адрес.
Я повторяю вам: ТО, ЧТО ВЫ НАПИСАЛИ - НЕ РАБОТАЕТ.

Посмотрите, пожалуйста, на это. Всё сделано так, как нужно, не?

http://savepic.org/2104174.jpg
43 palm1c
 
25.08.11
16:26
А при выгрузке выдаёт ошибку (27). Что не так?
И кто дятел? И кому об стенку?
44 GenV
 
25.08.11
16:28
(42) Можно было и просто КоллекцияОбъектов.СуммаПлановая = ... написать.
(43) Правила обновить и модуль обработки.
45 palm1c
 
25.08.11
16:29
(44) Всё это делается. Модуль обработки у меня автоматом подгружается в V77EXP.ERT
46 GenV
 
25.08.11
16:32
(45) КоллекцияОб!Ъ!ектов
47 GenV
 
25.08.11
16:34
46+ такая ошибка !не может! возникнуть, если коллекция объектов заполнена в Перед обработкой, т.к. получение значения ТЧ пропускается и сразу идет обход коллекции.
48 palm1c
 
25.08.11
16:37
(46),(47) Спасибо, бро.
49 palm1c
 
25.08.11
16:41
Поручик, я всё равно уже нассал вам в карман.
50 palm1c
 
25.08.11
16:42
Всем спасибо.