![]() |
|
Вопрос по конвертации. Поиск не по полям поиска,а по другим критериям. | ☑ | ||
---|---|---|---|---|
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) ответили же минимум два раза
ищи по чему хочешь, но чтобы в обработчике были доступны данные для параметров запроса эти поля должны быть с галкой поиск. объект еще не прочитан |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |