Имя: Пароль:
1C
1С v8
КД 2.0
0 1c_nub
 
27.09.16
14:05
Добрый день.
Прошу подсказки от знающих людей.

Выгружаю справочник контрагентов. Поиск по ИД отключен. только поля поиска.
Следствие: группы контрагентов добавляются (видимо из-за отсутствия ИНН, КПП и т.д.)

Чтобы группы не задваивались, наверное нужно задать им другие поля поиска. Где и как прописать, чтобы группы искались по другим полям поиска, чем элементы?
1 Лефмихалыч
 
27.09.16
14:07
добавь в список полей поиска поле ЭтоГруппа
2 1c_nub
 
27.09.16
14:11
(1) добавлено, все равно создаются дубли групп.
3 ks_83
 
27.09.16
14:12
В таких случаях я обычно для группы делаю отдельное ПКО.
4 Alexor
 
27.09.16
14:13
В обработчике "поля поиска"

Если СвойстваПоиска.Получить("ЭтоГруппа") Тогда
    СтрокаИменСвойствПоиска="Наименование,ЭтоГруппа";
    
Иначе
    СтрокаИменСвойствПоиска="ИНН,КПП";
КонецЕсли;
5 Alexor
 
27.09.16
14:16
+4 Наименование, ЭтоГруппа включить в поиск.
6 ks_83
 
27.09.16
14:26
(4) Тоже сначала так морочился, но потом пришел к (3) Имхо, это удобнее, нагляднее и универсальнее.
7 1c_nub
 
27.09.16
14:42
Сделал как в (4) Вообще странно выгружаю одну только группу с кодом "00000016" (Поставщики), а при загрузке он ее подставляет в "00000004" (заказчики).

Что-то пошло не так...
8 hhhh
 
27.09.16
14:47
наверно поиск по ид всё-таки включен
9 DailyLookingOnA Sunse
 
27.09.16
14:56
Чистить регистр соответствий надо после неудачных переносов.
10 1sanekmaloi1
 
27.09.16
14:56
+(8) Или в регистре сопоставления объектов есть запись Поставщики->Заказчики
11 1c_nub
 
27.09.16
15:12
Регистр пуст. Обмен происходит не через план обмена, а просто через универсальный.
12 1c_nub
 
27.09.16
15:13
(8) УИДы у них разные.
13 1c_nub
 
27.09.16
15:16
в Файле выгрузки посмотрел, там именно группа которую я выгружал, именно  "00000016" (Поставщики).

А при загрузке он привязывается к "00000004" (заказчики).
14 DailyLookingOnA Sunse
 
27.09.16
15:19
А наименование в полях поиска есть? Флажок стоит?
15 1c_nub
 
27.09.16
15:23
(14) V НаименованиеПолное
Наверное у групп нет полного наименования, потому и ищет неправильно?
16 DailyLookingOnA Sunse
 
27.09.16
15:24
У групп конечно нет.
17 1c_nub
 
27.09.16
15:28
Ок. элементы нужно сопоставлять только по полномуНаименованию.
В ПКО создал правило "ГруппыКонтрагентов" Там вчего 4 поля переношу: код, наименование, родитель, ЭтоГруппа.
Поиск: Наименование.

В правило для контрагентов в конвертации свойств к родителю проставил это новое ПКО.

А в Самом правиле по контрагенту, отключить поиск в поле "ЭтоГруппа" или оставить?
18 DailyLookingOnA Sunse
 
27.09.16
15:29
конечно оставить
19 1sanekmaloi1
 
27.09.16
15:47
(18)Зачем?
20 ks_83
 
27.09.16
16:08
(17) Всегда в ПКО по иерархическим справочникам ставь поиск ЭтоГруппа, чтобы не было недоразумений вроде выгрузки групп как элементов и наоборот.
21 1c_nub
 
27.09.16
16:25
Сделал как описал выше. Теперь группы не задваиваются, теперь другая проблемка: контрагент (элемент) загружается нормально, но создается второй элемент с заполненным кодом и наименованием. Похоже, что он создается правилом для групп, но я там "При загрузке" прописал:

Если не Объект.ЭтоГруппа Тогда
Сообщить ("Это не Группа " +Объект);
Отказ = Истина;        
КонецЕсли;
22 1sanekmaloi1
 
27.09.16
16:25
(20)На каком основании ? Если правило используется только для элементов, то это поле нафик не упало. Как вы правильно написали для иерархического справочника это необходимо если ПКО одно, это ПКС служит для определения в базе приемнике какой конструктор использовать "Группа" или "Элемент" ну и поиск естественно.
23 1sanekmaloi1
 
27.09.16
16:27
(21)В ПВД для контров напиши Если Этогруппа то ИмяПКО=ИмяПКОГруппы иначе ИМяПКО=ИМяДЛЯэлемента
24 1c_nub
 
27.09.16
16:32
(23) в Перед выгрузкой?
25 1sanekmaloi1
 
27.09.16
16:35
(24)Да.
26 1sanekmaloi1
 
27.09.16
16:38
В ПКО для группыКонтров нужно обязательно ПКС ЭтоГруппа с флагом поиска, в параметрах ПКО включена галка поиск по уид и продолжить поиск по полям поиска
27 1c_nub
 
27.09.16
16:42
(26) Галку включать не могу, т.е. есть объекты с одинаковыми уидами, но совсем разными наименованиями и т.д. Если поставить галку, то начнут привязываться совсем не те контрагенты, чем в источнике.
28 1c_nub
 
27.09.16
16:47
А что, в ПКО ПриЗагрузке не работает Отказ = Истина?
29 1sanekmaloi1
 
27.09.16
16:48
(27)Ну если базы наполнены уже и похоже обе базы сделаны из одной копии и какоето время жили разными жизнями то может так выйти что уиды одинаковые у совершенно разных элементов, тогда без галки поиск по уид поля поиска помогут
30 1sanekmaloi1
 
27.09.16
16:50
(28) сейчас нет под рукой КД, на память не помню уже
31 1sanekmaloi1
 
27.09.16
16:51
+(28)Должен быть обработчик ПередЗагрузкой, там отказ точно был, вроде. :)
32 ks_83
 
27.09.16
16:53
(20) Есть, так сказать, неписаные правила хорошего тона при разработке по которым сразу можно определить быдлкодера. Игнорирвание поиска по ЭтоГруппа как раз является нарушением таких правил. Сегодня вы используете ПКО только для выгрузки элементов, а завтра может потребоваться для выгрузки всего справочника, а про то что там галка не стоит уже и забыли/не заметили и тут будет сюрприз.
33 1c_nub
 
27.09.16
16:57
(32) Галка там стоит, я уже понял, что без галки создаются лишние элементы.
34 1sanekmaloi1
 
27.09.16
17:02
(32)А для не иерархических справочников вы тоже поле  ЭтоГруппа заранее ставите?Ну мало ли вдруг справочник станет иерархическим когда либо а вы не предусмотрели этого.Не знаю вот таких правил которые говорили бы ставь галки на всякий случай.Если знаешь зачем нужны эти флаги, то проблем описанных вами не будет.И про правила тона можно подробнее основные огласить, а то может быдлокодю уже много лет?
35 1c_nub
 
27.09.16
17:12
Странно, что в ПКО ПриЗагрузке не работает Отказ = Истина.
И после загрузки тоже.
т.е. условие срабатывает Если ЭтоГруппа Тогда
Отказ = Истина

Но элемент все равно загружается
36 1sanekmaloi1
 
27.09.16
17:19
(35)У вас просто сейчас не понятно что и как выгружается/загружается.Скорее всего куча кода от старых попыток мешает.
37 1sanekmaloi1
 
27.09.16
17:24
нужно с самого начала определиться
1.Какие объекты нужно выгружать?Какие ПВД используете какие в них обработчики.
2.Какие ПКО есть, как настроены и какие ПКС для родителя контра.
3.Какие обработчики на стороне приемника т.д.

Очень тяжело по фотографии лечить.
38 1c_nub
 
27.09.16
17:33
(37) 1. Выгружаю справочник Контрагенты . ПВД для контрагентов имеет обработчик перед выгрузкой
Если  Объект.Этогруппа тогда
    ИмяПКО="КонтрагентыСвязанныеСОрганизациямиГруппы";
иначе
    ИМяПКО="Контрагенты";
КонецЕсли;
2. ПКО (Контрагенты)
обработчик ПослеЗагрузки:

Если Объект.ЭтоГруппа Тогда
Отказ = Истина;    
КонецЕсли;

ПКО (КонтрагентыСвязанныеСОрганизациямиГруппы)

обработчик ПослеЗагрузки:

Если не Объект.ЭтоГруппа Тогда
Отказ = Истина;    
КонецЕсли;

Поля поиска (Контрагенты) НаименованиеПолное, ИНН, КПП, ЭтоГруппа

Поля поиска (КонтрагентыСвязанныеСОрганизациямиГруппы) Наименование, ЭтоГруппа

Пример: Выгружаю контрагента у которого поля поиска совпадают, но наименование нет. Он его находит, но создает пустой элемент с наименованием источника.
39 1sanekmaloi1
 
27.09.16
17:38
файл выгрузки есть?
40 1sanekmaloi1
 
27.09.16
17:41
Обработчики ПослеЗагрузки не сработают никогда, т.к. По ПКО "Контрагенты" всегда выгружаются только элементы у них Объект.ЭтоГруппа = Ложь, ну и наоборот в групповом обработчике.
41 1sanekmaloi1
 
27.09.16
17:45
В ПВД Контрагенты напиши в ПередВыгрузкой
Отказ = Объект.Этогруппа остальное сотри, ПКО по умолчанию оставь "Контрагент", в контрагенте ПКО для родителя укажи КонтрагентыСвязанныеСОрганизациямиГруппы, обработчики ПослеЗагрузки в ПКО удали.
42 1sanekmaloi1
 
27.09.16
17:47
Смысл будет такой : группы выгружаться непосредственно не будут, но вместе с элементом по ПКС родитель будет выгружаться группа
43 1c_nub
 
27.09.16
17:59
(42) Спасибо за советы. Сделал. Все равно появился незаполненный элемент. в файле выгрузки кусок кода такой:

</ПравилаОбмена>
<Объект Нпп="2" Тип="СправочникСсылка.Контрагенты" ИмяПравила="КонтрагентыСвязанныеСОрганизациямиГруппы" НеЗамещать="true"><Ссылка Нпп="2">
    <Свойство Имя="Наименование" Тип="Строка">
        <Значение>Поставщики</Значение>
    </Свойство>
    <Свойство Имя="ЭтоГруппа" Тип="Булево">
        <Значение>true</Значение>
    </Свойство>
</Ссылка>
    <Свойство Имя="Код" Тип="Строка">
        <Значение>000000161</Значение>
    </Свойство><Свойство Имя="Родитель" Тип="СправочникСсылка.Контрагенты">
    <Пусто/>
</Свойство>
    <Свойство Имя="Комментарий" Тип="Строка">
        <Значение>1</Значение>
    </Свойство>
</Объект>
<Объект Нпп="4" Тип="СправочникСсылка.Контрагенты" ИмяПравила="КонтрагентыСвязанныеСОрганизациямиГруппы" НеЗамещать="true"><Ссылка Нпп="4">
    <Свойство Имя="Наименование" Тип="Строка">
        <Значение>ФПК АО</Значение>
    </Свойство>
    <Свойство Имя="ЭтоГруппа" Тип="Булево">
        <Значение>false</Значение>
    </Свойство>
</Ссылка>
    <Свойство Имя="Код" Тип="Строка">
        <Значение>У00001126</Значение>
    </Свойство><Свойство Имя="Родитель" Тип="СправочникСсылка.Контрагенты"><Ссылка Нпп="2">
    <Свойство Имя="Наименование" Тип="Строка">
        <Значение>Поставщики</Значение>
    </Свойство>
    <Свойство Имя="ЭтоГруппа" Тип="Булево">
        <Значение>true</Значение>
    </Свойство>
</Ссылка>
</Свойство>
    <Свойство Имя="Комментарий" Тип="Строка">
        <Значение>1</Значение>
    </Свойство>
44 1c_nub
 
27.09.16
18:00
ФПК АО Попало в правило КонтрагентыСвязанныеСОрганизациямиГруппы
45 1sanekmaloi1
 
27.09.16
18:09
Что то вы не договариваете

В ПВД какое стоит правило конвертации по умолчанию?

Кусок правил обмена тоже не помешал бы, там все обработчики видны.

Файл правил выгрузки давайте проще у себя посмотреть
46 1c_nub
 
27.09.16
18:14
47 1c_nub
 
27.09.16
18:19
От компа вынужден уйти. завтра продолжу. Спасибо за помощь
48 1sanekmaloi1
 
27.09.16
18:19
Какое пвд используете в обработке?
Галки напротив чего ставите?
49 1sanekmaloi1
 
27.09.16
19:00
Вобщем у вас 3 ПВД для контрагентов(причем наименования одинаковые, как вы их в обработке выгрузки отличаете?Переименуйте ПВД, на закладке дополнительно есть поле Наименование) и во всех стоит разное правило по умолчанию.
Вы используете неверное ПВД поэтому у вас выгружается все по правилу КонтрагентыСвязанныеСОрганизациямиГруппы, в обработчике ПередОбработкой код "Отказ = не Объект.Этогруппа;" работать не будет, в этом обработчике нет объекта.  

Что я бы сделал:
1.Нужно зайти в ПВД КонтрагентыСвязанныеСОрганизациямиГруппы на закладку Дополнительно и изменить наименование на Контрагенты_Группы, аналогично в ПВД КонтрагентыСвязанныеСОрганизациямиНеЗоздавать Наименование Контрагенты_НеСоздавать.
2.При выгрузке выбрать одно ПДВ КонтрагентыСвязанныеСОрганизациями00001 имя Контрагенты в ваших правилах (у остальных 2х Контрагенты_Группы,Контрагенты_НеСоздавать не ставить галки) в нем по умолчанию стоит ПКО  
КонтрагентыСвязанныеСОрганизациями00001 и в обработчике ПередВыгрузкой Отказ = Объект.Этогруппа;

Все должно отработать правильно.
50 1c_nub
 
28.09.16
09:27
Сделал все как и написано. Итог тот же. Правилом для групп создается пустой контрагент.
Прописал в ПКО (ПриЗагрузке):

Отказ = не Объект.Этогруппа;

Все равно. Как не срабатывает.
51 1c_nub
 
28.09.16
10:15
Понял куда копать. Похоже, если по ссылке загружается объект, то отказ на него не работает. Буду думать как обойти, по результату отпишусь