Имя: Пароль:
1C
1С v8
Вопрос по конвертации. Поиск не по полям поиска,а по другим критериям.
0 Босечка
 
02.05.17
18:35
Можно ли делать поиск не по полям поиска, а по другим критериям и где это прописать?
1 Босечка
 
02.05.17
18:38
в частности справочник Номенклатура
2 Aleksey
 
02.05.17
18:42
нет нельзя. В обработки поиска доступны только те реквизиты по которым стоит галка поиск
3 Aleksey
 
02.05.17
18:42
другое дело что во время поиска необязательно использовать все реквизиты, можно комбинировать из использование. Или искать самомтоятельно
4 Aleksey
 
02.05.17
18:43
Обработчики "Правила конвертации объектов"
Поля поиска
Условия возникновения события
Только для платформы V8.
Событие выполняется при поиске элемента ссылочного типа. Если установлен поиск по уникальнму идентификатору и программа нашла элемент, то поиск прекращается. Если поиск по уникальному идентификатору не дал положительного результата и указано, что нужно продолжить поиск в этом случае или поиск по уникальному идентификатору не проводился, то программа пытается найти элементы по свойствам поиска. В обработчике нужно установить список полей через запятую по которым нужно проводить поиск. Если очередная попытка дала положительный результат, то поиск прекращается.
Поиск возможен только по тем полям у которых на этапе выгрузка был установлен флаг поиска данных.

Параметры:
НомерВариантаПоиска - число. Номер попытки поиска. Попыток поиска может быть не больше 10.

СвойстваПоиска – соответствие, в котором хранятся текущие значения реквизитов поиска. Эти значения можно использовать в произвольных алгоритмах для идентификации объектов ИБ при загрузке данных. Следует иметь в виду, что при создании нового объекта, значения из соответствия СвойстваПоиска используются для заполнения свойств нового объекта.

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

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

СсылкаНаОбъект - ссылка на результирующий объект. Если в обработчике установить данную ссылку (не пустую) то программа ее запомнит и поиск на этом будет считать успешно завершенным

УстанавливатьУОбъектаВсеСвойстваПоиска - булево. Определяет нужно ли после удачного завершения поиска установить объекту все реквизиты поиска. Объект может быть найден по части реквизитов. Этот флаг определяет нужно оставшиеся реквизиты, которые не участвовали в поиске (но по которым поиск возможен) установить объекту или нет. Значение по умолчанию: Истина.

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

СтрокаИменСвойствПоиска – строка в которой задаются ключевые поля варианта поиска. Могут быть указаны только те свойства, для которых при настройке правил обмена был выставлен флаг поиска.

Пример:
Если НомерВариантаПоиска = 1 тогда

СтрокаИменСвойствПоиска = "Код, Наименование";

ИначеЕсли НомерВариантаПоиска = 2 тогда

СтрокаИменСвойствПоиска = "Код";

Иначе

СтрокаИменСвойствПоиска = "Наименование";

КонецЕсли;
5 Босечка
 
02.05.17
18:53
в инете нашла пример

Если СвойстваПоиска["ЭтоГруппа"]=Истина Тогда
    СтрокаИменСвойствПоиска="Наименование, Родитель, ЭтоГруппа"
Иначе
    Выполнить(Алгоритмы.ПолучитьСоответствиеОбъектов);
    ПрекратитьПоиск = Истина;
КонецЕсли;

Как это тогда работает?
6 Aleksey
 
02.05.17
18:54
(5) Прекрасно работает. Вопрос в чём?
7 Aleksey
 
02.05.17
18:55
В чем вы видите противоречия вашего примера и моего утверждения?
8 Босечка
 
02.05.17
19:01
Вы сказали что нельзя никак кроме как по полям поиска. Значит можно как то сделать? Как это прописать, можно в алгоритме найти код из регистра сведений. ТОлько как синтаксически это прописать?
9 Aleksey
 
02.05.17
19:11
(8) Все правильно в Обработчики Поля поиска доступны только те поля у которых стоит галка поиск, т.е. в твоем примере у реквизита "ЭтоГруппа","Наименование", "Родитель" стоит галка "поиск".

Т.е. ты можешь написать свой обработчик (в твоем примере это Выполнить(Алгоритмы.ПолучитьСоответствиеОбъектов);) но там будут доступны только те реквизиты у которых стоит галка поиск.

Так что никаких противоречий. Или ты в своем алгоритме как искать будешь? По каким полям
10 Босечка
 
02.05.17
19:19
У меня вообще все хитро. Буду искать в регистре сведений
СоответствиеНоменклатурыЕГАИС  номенклатуру и Алкогольную продукцию. Мне нужен код этой алкогольной продукции. Если у номенклатуры код есть то берем эту номенклатуру, если этой номенклатуры в РС нет, то создается новая.
11 Ёпрст
 
гуру
02.05.17
19:22
(10)
в поля поиска ищи по чему хочешь, делов то.
12 Ёпрст
 
гуру
02.05.17
19:23
в параметр поиска передавай свой код продукции и ищи по нему в Полях Поиска.
13 Босечка
 
02.05.17
19:31
(12)Это как? Можно примерчик? Я только так могу

Если  (ЗначениеЗаполнено(СвойстваПоиска["КПП"])) или (ЗначениеЗаполнено(СвойстваПоиска["ИНН"]))  Тогда

СтрокаИменСвойствПоиска = "ИНН, КПП";
Конецесли;
14 Босечка
 
02.05.17
19:34
ап
15 Босечка
 
02.05.17
19:35
и еще вопросик где можно достать типовые правила обмена РозницаБазовая ->Розница ПРОФ?
16 Ёпрст
 
гуру
02.05.17
19:36
(13)

Ну так, например:

Если НомерВариантаПоиска = 1 тогда
    Запрос = Запросы.НайтиНоменклатуруПоПолямПоиска;
    Запрос.УстановитьПараметр("ИдЕГАИС",ПараметрыОбъекта["ИдЕГАИС"]);
    Запрос.УстановитьПараметр("УИД",ПараметрыОбъекта["УИД"]);
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
        ССылкаНаОбъект =  Выборка.Номенклатура;
        ПрекратитьПоиск  = Истина;
        УстанавливатьУОбъектаВсеСвойстваПоиска =Ложь;
    КонецЕсли;
Иначе
    Если СвойстваПоиска["АлкогольнаяПродукция"] Тогда //если алкоголь
        СтрокаИменСвойствПоиска = "Наименование, ЭтоГруппа, Емкость, Крепость, КодПоГНИ";
    Иначе
        СтрокаИменСвойствПоиска = "Наименование, ЭтоГруппа ,Емкость";
    КонецЕсли;
КонецЕсли;
17 Ёпрст
 
гуру
02.05.17
19:37
В данном случае, при выгрузке, в параметр записывается нечто.
Можно и через СвойстваПоиска["Вася"] искать..
18 Aleksey
 
02.05.17
19:38
(15) Так конфигурации полностью идентичный. Тупо автоматическое создание правил
19 Aleksey
 
02.05.17
19:42
Если это разово, то я вообще бы взял бы и натянул сверху CF от проф версии и не заморачивался бы
20 Босечка
 
02.05.17
19:45
(17) Хорошо. Попробую сделать.  А НайтиНоменклатуруПоПолямПоиска в запросах прописывать?
В полях поиска галочек никаких не ставить?
21 Босечка
 
02.05.17
19:46
(19) Это нереально много точек. И не все дают базы, говорят обработки будут запускать а базы не дадут.
22 Aleksey
 
02.05.17
19:51
(21) ты же понимаешь что ниодна обработка тут не поможет. Ибо как не старайся, а все равно вылезут косяки. Или с валютой (задвоится к примеру рубль) или с контактной информацией (аналогично создаст 2 предопределенных)
23 Aleksey
 
02.05.17
19:52
(20) Кому я тут второй час распинаюсь, пишу что будут доступны только те реквизиты по которым стоит галка "поиск"?
24 Ёпрст
 
гуру
02.05.17
19:55
(20) как хочешь, можешь и в ПКС написать, только это моветон - каждый раз новый объект создавать
25 Ёпрст
 
гуру
02.05.17
19:57
(20) галочки нужно ставить и отключить синхронизацию по внутреннемму идентификатору источника.
26 Ёпрст
 
гуру
02.05.17
19:58
(23) ну, не только они, там доступны и данные, которые в параметр передаешь и во всякие служебные структуры.
27 Босечка
 
02.05.17
20:04
(25) Мне вообще галки не нужны, мне нужен поиск по другим критериям. Это - не поля номенклатуры, а регистра сведений.
28 Йохохо
 
02.05.17
20:15
(27) ответили же минимум два раза
ищи по чему хочешь, но чтобы в обработчике были доступны данные для параметров запроса эти поля должны быть с галкой поиск. объект еще не прочитан
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший