Имя: Пароль:
1C
1С v8
конвертация данных: чудеса с группами ... Кто победил ?
0 Aleks73
 
13.12.12
11:45
КД 2.1
Делаю перенос только документов из УПП 1.2 В Бух 2.0
Есть правило для номенклатуры, она переносится с документами, самостоятельно - нет.

Папки в УПП и Бух по номенклатуре отличаются : в УПП Подгруппа ААА в корневой папке ВВВ, а в бухгалтерии - в корневой ССС.

После любого переноса подгруппа в бухгалтерии переставляется как в УПП.
Как сделать так, чтобы она не переставлялась ? Ведь она не переносится физически так как групп в документах быть не может....
1 Aleks73
 
13.12.12
11:49
первый ап...быстро уходит...
2 ICWiner
 
13.12.12
11:52
Мб реквизит родитель не передавать?
3 Aleks73
 
13.12.12
11:53
(2) дык а как новая номенклатура станет ?
4 Дейл
 
13.12.12
11:56
то есть и там и там подгруппа ААА есть?
5 Дейл
 
13.12.12
11:57
поиск по родителю ставил?
6 Aleks73
 
13.12.12
11:59
(4) да
7 Aleks73
 
13.12.12
11:59
(5) сейчас посмотрю
8 Aleks73
 
13.12.12
12:00
(5) нет поиска по родителю
9 ICWiner
 
13.12.12
12:01
А, совсем новая в смысле? Дак они в разных местах всеравно должны находиться. Переместить раз и все.
10 Aleks73
 
13.12.12
12:05
(9) Номенклатуры создаются в УПП только. Поэтому новая должна создаваться так что родителя передавать надо по-любому, если бы не это, вопроса бы не возникало, просто отключил бы передачу.

Переместить можно но сам факт изменения позиции нескольких групп вызывает глубокий шок у буха опасаюсь за её здоровье.
Обмен делает она.
11 Aleks73
 
13.12.12
12:09
второй ап, предпоследний .
12 Aleks73
 
13.12.12
12:19
последний ап
13 Defender aka LINN
 
13.12.12
12:20
(12) Та хоть самый последний. Первод на русский давай
14 Aleks73
 
13.12.12
12:23
(13)  Вы ставите меня в филологический тупик своими авангардистскими идиомами. (С)
15 Defender aka LINN
 
13.12.12
12:25
(14) Дело в том, что тема интересная, и я, возможно, что-нибудь и подсказал. Но (0) написано на каком-то другом языке, на русском я бы его понял.
16 Дейл
 
13.12.12
12:26
слушай,а если попробовать группы не выгружать
типа ПриВыгрузке
Если Источник.ЭтоГруппа Тогда
Отказ = истина;
КонецЕСли;
17 Defender aka LINN
 
13.12.12
12:27
(16) Кэп говорит, что тогда все новые элементы начнут в корень ложиться.
18 Aleks73
 
13.12.12
12:28
(15) Вопрос понял, отвечаю. (С)
КД - Конвертация данных
УПП - управление производственным предприятием.
Бух - Бухгалтерия Предприятия.
ААА, ВВВ, ССС - условные названия папок. В реале могут быть любими, на содержание вопроса не влияет.
19 MaxS
 
13.12.12
12:29
>После любого переноса подгруппа в бухгалтерии переставляется как в УПП.
А зачем перезаписывать номенклатуру? Поставить соответствующий флаг, чтобы только создавала новую и всё.
20 Aleks73
 
13.12.12
12:29
(16) см (3), (10)
21 Aleks73
 
13.12.12
12:29
(19) Где поставить такой флаг ? уточни место пожалуйста
22 Дейл
 
13.12.12
12:31
(19)точно
23 Дейл
 
13.12.12
12:31
в ПКО в настройках
24 Defender aka LINN
 
13.12.12
12:31
(18) Спасибо, кэп. Главное ведь - подольше не признаваться, что и как должно быть. Или написать как в (0). Рекомендую группы условно называть как "ААА", "ААА" и "ААА", но пояснить, что речь про разные. Для интересу.
25 MaxS
 
13.12.12
12:32
(21) КД, ПКО, вкладка настройки
Не замещать существующие объекты в приемнике при загрузке, а только создавать новые и заполнять их
26 Aleks73
 
13.12.12
12:32
(22), (23) видимо имеется в виду настройка...не замещать.

а если создали номенклатуру с ошибочным намиенованием или без нужных реквизитов, она так и останется ?!
мне надо, чтобы не исправлялись только группы
27 Aleks73
 
13.12.12
12:33
(25) см (26)
28 kosts
 
13.12.12
12:33
В событии "После загрузки" в справочнике

Если Объект.ЭтоГруппа и Не Объект.Ссылка.Пустая() Тогда
   Отказ = Истина;
   Возврат;
КонецЕсли;
29 Aleks73
 
13.12.12
12:35
(28) может быть.... А новые группы ?
30 Aleks73
 
13.12.12
12:36
(28) Не Объект.Ссылка.Пустая() = это не новый ?
никогда не встречат такую конструкцию....
31 DrShad
 
13.12.12
12:36
В событии "После загрузки" в справочнике

объект - загруженный объект
Ссылка - найденная ссылка - копать здесь!
32 Aleks73
 
13.12.12
12:38
(31), (28) это - то что ты имеешь в виду?
33 DrShad
 
13.12.12
12:38
+(31) то бишь
Если Ссылка <> Неопределено Тогда
  Объект.Родитель = Ссылка.Родитель;

Профит!
34 Aleks73
 
13.12.12
12:41
(33) как интересный вариант типа (28)...
в КД такой код проканает ? пробовал ?
35 DrShad
 
13.12.12
12:42
(34) ептить, конечно пробовал
36 DrShad
 
13.12.12
12:43
+(35) правда мог напутать с типом Ссылка, т.е. возможно ее нужно проверить на Пустая(), но замена Родителя 146% канает
37 Aleks73
 
13.12.12
12:45
(35) спасибо, DrShad попробую.
в идеале конечно кинул бы в меня куском из кд, но и так можно что-то сделать.

(28) kosts, спасибо.
38 MadJhey
 
13.12.12
12:46
(25) не поможет. Новый элемент справочника при переносе все равно создаст папку (родитель).
(28) в корень все улетит
Если базы не на поддержке, можешь предопределенные элементы спр-ка создать и их состыковать.
иначе
при выгрузке подменяй группы на те что тебе нужны
39 DrShad
 
13.12.12
12:47
(37) да не вопрос, лови!

Обработчики "Правила конвертации объектов"
После загрузки
Условия возникновения события
Только для платформы V8.
Событие выполняется после прочтения и установки атрабутов объекта из файла, но до его записи в информационную базу. Возможна модификация загруженного объекта.

Параметры:
Отказ - Булево - Если Истина, то объект загружен не будет.

Объект - Произвольный - загруженный объект.

Ссылка – Произвольный – ссылка на найденный объект в информационной базе.

ОбъектНайден - Булево. Если значение параметра равно Ложь, то объект не идентифицирован, то есть не найден в информационной базе

ПараметрыОбъекта - либо Неопределено либо Соответствие, в котором хранятся дополнительные параметры переденные для данного объекта из источника в приемник. Если параметров передано не было, то ПараметрыОбъекта = Неопределено.

ОбъектМодифицирован – Булево. Флажок указывает на то, что в обработчике объект был изменен. По умолчанию содержит значение Истина. То есть обработка загрузки считает, что если выполнялся какой-либо обработчик, то объект мог быть модифицирован, и его необходимо записать в информационную базу. Параметр относится только к текущему обработчику. Если объект был изменен ранее, то при любом значении переменной ОбъектМодифицирован он будет записан. Только для платформы 1С:Предприятие 8.

ИмяТипаОбъекта – Строка. Имя типа загруженного объекта, например, «СправочникСсылка.Номенклатура».

Пример:
Объект.БазоваяЕдиницаИзмерения = Параметры.ЕдИзмеренияШтуки;
Объект.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
Если Объект.Услуга Тогда
Объект.ВидНоменклатуры = Параметры.ВидНомУслуга;
Иначе
Объект.ВидНоменклатуры = Параметры.ВидНомТовар;
КонецЕсли;
40 DrShad
 
13.12.12
12:48
+(39) даже вот так выходит

Если ОбъектНайден Тогда
  Объект.Родитель = Ссылка.Родитель;

Профит!
41 DrShad
 
13.12.12
12:50
(38) лажа!
42 Aleks73
 
13.12.12
12:50
(39) эээ...мммм...я имел в виду не хелп а кусок написанного тобой н  эту тему кода в кд.
(40) Чо такое объектнайден ?
43 Aleks73
 
13.12.12
12:51
(38) подменять по списку что ли ?
44 DrShad
 
13.12.12
12:52
(42) ты видимо совсем не читатель
ОбъектНайден - Булево. Если значение параметра равно Ложь, то объект не идентифицирован, то есть не найден в информационной базе
45 Aleks73
 
13.12.12
12:53
(44) не встречал такого оператора, тут
http://dev.mista.ru/topic.php?id=605491

пишут что не работает
46 Рэйв
 
13.12.12
12:56
(0)В ПослеЗагрузки

Если НЕ Объект.Ссылка.Пустая() Тогда
  Объект.Родитель=Объект.Ссылка.Родитель;
КонецЕсли;
//---------
Если не новая, оно так должно взять старого родителя.
47 DrShad
 
13.12.12
13:00
(45) врут
48 Aleks73
 
13.12.12
13:01
(46) этот кусок кажется самый подходящий, спасибо, Рейв.
49 DrShad
 
13.12.12
13:02
(48) окуеть, такой же код как я писал, только с избыточным вызовом ссылок :))) и подходит, а нормальный код тебе не подошел, удачи!
50 Aleks73
 
13.12.12
13:04
(49) спасибо было в (37) сказано.
мне сомнительно что там будет неопределено.
51 DrShad
 
13.12.12
13:05
Если Ссылка <> Неопределено Тогда
   Объект.Номер = Ссылка.Номер;
КонецЕсли;

Объект.Записать();

Нов = РегистрыСведений.WA_СоответствияДокументовПоНомеруИТипу.СоздатьМенеджерЗаписи();
//Нов = НЗ.Добавить();
Нов.ТипИсточника = "ДокументСсылка.ПередачаТоваровМеждуОрганизациями";
Нов.ТипПриемника = "ДокументСсылка.ВозвратТоваровПоставщику";
Нов.НомерИсточника = ПараметрыОбъекта["ИсточникНомер"];
Нов.УникальныйИдентификаторИсточника = ПараметрыОбъекта["GUID"];
Нов.УзелИнформационнойБазы = УзелОбменаЗагрузкаДанных;
Нов.СобственнаяСсылка = Объект.Ссылка;
Нов.ХозяйственнаяОперация = "Передача товара между филиалами (Выбытие)";
//НЗ.ОбменДанными.Загрузка = Истина;
Нов.Записать();
52 DrShad
 
13.12.12
13:05
+(51) вот тебе рабочий код из правил
53 Aleks73
 
13.12.12
13:07
(52) понятно. спасибо!
54 Darly
 
13.12.12
13:19
(0)сохранить Родителя у существующего:
для св-ва Родитель "Не замещать значение свойства у существующих объектов в приемнике"
для проверки нового элемента:
ПриЗагрузке Если НЕ ОбъектНайден Тогда
   ....
КонецЕсли;
(P.S.:из рабочих правил)
55 Aleks73
 
13.12.12
14:28
(54) свойство Родитель - очень любопытно, а зачем тогда проверять новый ?
56 Darly
 
13.12.12
14:36
(55)незачем. просто вопрос был про определение нового
57 Aleks73
 
13.12.12
14:39
(56) Ясно. Спасибо, Darly!
58 kabanoff
 
13.12.12
14:47
(54) В этом случае если объект был найден, в обработчике надо обязательно написать, что объект не модифицирован, иначе он будет перезаписываться.

(0) Я бы вообще отключил ПКС "Родитель", ибо передавать его не нужно. Установку родителя поставил бы только для новых элементов в обработчике при загрузке в ПКО.


Если Не ОбъектНайден Тогда
   //Нужный родитель
   Объект.Родитель = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("1e1408eb-7472-11db-bbb9-000c6e95f47b"));
Иначе
   ОбъектМодифицирован = Ложь;
КонецЕсли;