Имя: Пароль:
1C
1С v8
Конвертация данных: как заменить Контрагента (слить несколько в одного)
,
0 Минона
 
10.10.11
21:57
При обмене УТ - УТ нужно чтобы в одну сторону уходили Контрагенты "сливаясь" в одного.
Т.е. надо заменить Контрагента на определенного (по коду), но надо чтобы автоматом в документах тоже менялся.

Как правильней это настроить в КД ?
1 Конфигуратор1с
 
10.10.11
22:14
посмотрите пример демо версии по выгрузке в справочнике организации
2 Минона
 
10.10.11
22:24
а где посмотреть?
3 acsent
 
10.10.11
22:26
Сделать поиск по коду и в ПКС код написать
Значение = "Твой код"
4 Минона
 
10.10.11
22:30
вот мне надо понять, "Объект" или "Значение" - какие слова правильней использовать. Примерчик бы
5 MaxS
 
10.10.11
22:32
+(3) в ПКС кода контрагента в зависимости от источника устанавливать нужный код и всё.
6 MaxS
 
10.10.11
22:36
т.е. нужно это делать не при загрузке, а при выгрузке.
давно делал сводно по физлицам, пример далеко. ))
7 Минона
 
11.10.11
00:01
чего-та не получается


Сообщить( "Значение1="+Значение);
Если ЗначениеЗаполнено(Источник.Родитель)  И  НЕ (Источник.ЭтоГруппа) Тогда
   текПолныйКод = Источник.Родитель.полныйкод();
   текКодРодителя1 = Лев(текПолныйКод, Найти(текПолныйКод,"/")-1);
   Если текПолныйКод="000000004" ИЛИ текКодРодителя1 = "000000004" Тогда
       //заменяем всех контрагентов папки на фиктивного
       Значение = "000000006";
Сообщить( "Значение2="+Значение);
   КонецЕсли;
КонецЕсли;


реальный код=000000003
пишет в табло:
Значение1=
Значение2=000000006

в выгрузку выгружает документ и ставит
<Свойство Имя="Контрагент
...
<Свойство Имя="Код"> <Значение>000000003</Значение>
8 Минона
 
11.10.11
00:03
Может использовать не ЗНАЧЕНИЕ ?
9 ilpar
 
11.10.11
00:26
на самом деле при такой выгрузке есть неочевидные грабли.

Наименования и другие реквизиты могут стать как  у объекта, загруженного последним из 3.

Если ничего не придпринять
10 ilpar
 
11.10.11
00:26
если так и должно быть и можно проигнорировать, то можно на это не отвлекаться
11 ilpar
 
11.10.11
00:27
это к (0)
12 Минона
 
11.10.11
00:39
во 2-й базе вообще не нужны контрагенты из 1-й, они должны подменяться на фиктивного (одного) контрагента
13 Минона
 
11.10.11
00:45
блин, перепутались XML файлы, походу код работает
14 Минона
 
11.10.11
01:10
в выгрузке код нормальный, но при загрузке контрагент всетаки берется.
Искать объект по ID выключил, что ещё может быть?
15 Конфигуратор1с
 
11.10.11
01:15
(14) еще раз - что Вы делали?
16 Минона
 
11.10.11
01:17
В правила, в справочник Контрагенты,в ПКС "Код" добавлен код замены значения
В XML код нужный
Но при загрузке всё-равно Контрагент переносится (если нового завести) и в док-те проставляется Контрагент, который и был указан, а должен заменяться.
17 Минона
 
11.10.11
01:18
(16) к (15)
код замены в (7)
18 Конфигуратор1с
 
11.10.11
01:39
А вы указали правило выгрузки для контрагента  в документе?
19 Минона
 
11.10.11
01:43
За основу взято правило из обработки "ВыгрузкаДанныхВИдентичнуюКонфигурацию"
Там для документа, для реквизита "Контрагент" указано правило "Контрагенты"
20 Конфигуратор1с
 
11.10.11
01:45
пришлите мне конвертацию я посмотрю
21 Минона
 
11.10.11
01:52
Все контрагенты из папки "000000004" долждны меняться на контрагента с кодом "000000006"

правила:
http://ifolder.ru/26266812
22 Конфигуратор1с
 
11.10.11
02:12
(21) а почему Вы не хотите перегружать данные напрямую?
23 Минона
 
11.10.11
02:14
а потом зачищать после загрузки?
не хочется чтобы данные вообще выгружались
24 Конфигуратор1с
 
11.10.11
02:30
вроде правило работает - я на тестовой базе выгрузил и загрузил подставил нормально
25 Минона
 
11.10.11
02:49
странно.
у меня автообменом гоняет,а не обработкой
может в этом дело?
26 Конфигуратор1с
 
11.10.11
03:08
так естественно. если вы через кд то обработкой и нужно выгружать. А если вы меняете план обмена так то совсем другая история
27 Минона
 
11.10.11
03:16
Расскажите мне другую историю, пожалуйста.

Через КД настроены правила, подсовываю Настройки обмена.
При выгрузке ок, а при загрузке не работает :(
28 MaxS
 
11.10.11
09:21
в ПКО Контрагента отключить все поля кроме Код, поиск по коду, не перезаполнять если найден, отключить поиск по уид.

Да, ещё в типовых есть регистр сведений, в котором хранятся соответствия для объектов разных баз.
Поискать ссылки на контрагента и почистить этот РС от них.

Но если при выгрузке в xml файле ничего кроме кода у контрагента нет, то как при загрузке 1С догадается о других вариантах поиска кроме как по коду?
29 Конфигуратор1с
 
11.10.11
11:40
(27) так а при чем кд к плану обмена?
(
30 Конфигуратор1с
 
11.10.11
11:42
Если Вам нужно просто при обмене заменить контрагента, то в процедуре при записи напишите -    Если ОбменДанными.Загрузка Тогда
       //тут напишите свой код и все
   КонецЕсли;
31 Минона
 
11.10.11
13:34
2(29) План обмена загружается в НастройкиОбмена. По нему и происходит выгрузка. К сожалению при загрузке он не ищет по коду.
2(30) Уже писалось выше - не хочется чтобы данные вообще выгружались. Ну и типовую с поддержки снимать не хочется.

(28) попробуем рыть в этом направлении

Обидно что нет ни одного примера, неужели никтоне сталкивался?
32 Минона
 
11.10.11
14:37
(28) в регистре пусто
33 Рэйв
 
11.10.11
14:39
поиск по коду, все остальный ПКС отключить
+в ПКС кода
ПередВыгрузкой

Значение=<код элемента на который заменить>
34 Минона
 
13.10.11
03:42
Вопрос решился настройкой ПКО "Перед выгрузкой"

Если ЗначениеЗаполнено(Источник.Родитель)  И  НЕ (Источник.ЭтоГруппа) Тогда
   текПолныйКод = Источник.полныйкод();
   текКодРодителя1 = Лев(текПолныйКод, Найти(текПолныйКод,"/")-1);
   Если (текКодРодителя1 = "кодПапки") И (Источник.Код<>"кодПодставляемого") Тогда
       //заменяем всех контрагентов папки База на фиктивного
       Источник = Справочники.Контрагенты.НайтиПоКоду("кодПодставляемого").ПолучитьОбъект();
   КонецЕсли;


ну и Договора также
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший