Конвертация данных. Поиск объектов, задание условия. #600635


#0 by Saruman
Добрый день. Передаю объект "документ" из УТ в объект "справочник" в БП. Ищу по полям поиска. Хочу, чтобы при соблюдении условия: Год(Источник.Дата) был равен Год(НайденныйОбъект.Дата) В ином случае создавал бы новый элемент. В каком обработчике можно задать такое условие, или как это осуществить.
#1 by Saruman
up
#2 by Defender aka LINN
Поля поиска тебе на что?
#3 by Saruman
Поля поиска я задал, а где мне условие это записать? Номера документов уникальны в пределах периода. У документа изменилась дата. Если она в том же году что и  Год(НайденныйОбъект.Дата), тогда мы 100 проц нашли тот самый элемент справочника.Если нет, то создаем новый объект.
#4 by Defender aka LINN
Есть специально обученный обработчик в ПКО
#5 by Лирик
Имхо ты не прав. По его задаче F(ДатаИсточника) = F(ДатаПриемника) , а поля поиска сравниваются на равенство ДатаИсточника = ДатаПриемника. Или я чего не знаю про КД?
#6 by Defender aka LINN
Не знаешь. Рекомендую справку по обработчику, там все написано.
#7 by acsent
поля поиска ничего не сравнивают
#8 by Лирик
открыта перед глазами, пример кода, если не сложно не придирайтесь к словам, сударь. Значение переданное из источника должно быть РАВНО значению приемника. По имени поля поиска. То есть если из источника в поле "ДатаСравнения" передана дата, например 13.01.2001, то в базе приемника совпадение по полю поиска "ДатаСравнения" будет Истинным если Реквизит "Датаприемника" объекта-приемника тоже равен 13.01.2001.
#9 by Saruman
Да, действительно в ПКО есть замечательный обработчик: "При загрузке" там параметры: вроде бы все что надо, только нет доступа к данным Источника, либо я просто не знаю как их получить. В том и вопрос ,что здесь имеется все параметры  нужные кроме Источник.Дата. ОбъектНайден - Булево. Если значение параметра равно Ложь, то объект не идентифицирован, то есть не найден в информационной базе Объект - Произвольный. Загружаемый, модифицируемый объект, созданный по ссылке или найденный в информационной базе. Если способ идентификации объекта в файле не указан (т.е. отсутствует узел "Ссылка"), то параметр содержит значение Неопределено. В этом случае в обработчике возможна произвольная инициализация загружаемого объекта, в противном случае, объект будет создан автоматически. НеЗамещатьОбъект - Булево - Если установить значение Истина, то существующий объект информационной базы не будет изменен. ОбъектМодифицирован – Булево. Флажок указывает на то, что в обработчике объект был модифицирован. По умолчанию содержит значение Истина. То есть обработка загрузки считает, что если выполнялся какой-либо обработчик, то объект мог быть модифицирован, и его необходимо записать в информационную базу. Параметр относится только к текущему обработчику и только к найденным объектам. Если объект не был найден, то при любом значении он будет создан и записан. Только для платформы 1С:Предприятие 8.
#10 by Defender aka LINN
В ПКО есть замечательный обработчик "Поля поиска". Понимаю, по названию довольно тяжело догадаться, что поиск происходит именно в нем, да...
#11 by Лирик
Поля поиска не решают его задачу.
#12 by Saruman
Параметры: НомерВариантаПоиска - число. Номер попытки поиска. Попыток поиска может быть не больше 10. СвойстваПоиска -соотвествие в котором хранятся текущие значения реквизитов поиска ПрекратитьПоиск - булево. Если Истина, то поиск объекта прекращается, в зависимости от того СсылкаНаОбъект заполнена или нет создается новый объект. СсылкаНаОбъект - ссылка на результирующий объект. Если в обработчике установить данную ссылку (не пустую) то программа ее запомнит и поиск на этом будет считать успешно завершенным УстанавливатьУОбъектаВсеСвойстваПоиска - булево. Определяет нужно ли после удачного завершения поиска установить объекту все реквизиты поиска. Объект может быть найден по части реквизитов. Этот флаг определяет нужно оставшиеся реквизиты, которые не участвовали в поиске (но по которым поиск возможен) установить объекту или нет. Значение по умолчанию: Истина. НастройкаПоиска - строка. Выбранный пользователем вариант сопоставления объектов. В ПКО есть таблица Варианты настроек полей поиска - с возможными вариантами настроек полей поиска для пользователя. Разработчик правил определяет возможные комбинации полей поиска, которые пользователь может выбирать при настройке обмена. Все настройки указанные разработчиком правил должны быть отработаны в коде обработчика "Поля поиска". Переменная НастройкаПоиска в обработчике определяет выбранный пользователем вариант сопоставления (ИмяНастройкиДляАлгоритма из соответствующей строки таблицы). Если пользователь не выбрал ни один вариант сопоставления, или ему ни один вариант не был предложен, то НастройкаПоиска - пустая строка. СтрокаИменСвойствПоиска – строка в которой задаются ключевые поля варианта поиска. Могут быть указаны только те свойства, для которых при настройке правил обмена был выставлен флаг поиска.
#13 by Saruman
Вот код моего обработчика: Здесь нельзя сравнить значение Источник.Дата с тем что он нашел, потому что мы здесь еще ничего не нашли, а только командуем по каким полям искать.
#14 by Defender aka LINN
В моих руках решают, что характерно.
#15 by Defender aka LINN
СсылкаНаОбъект - ссылка на результирующий объект. Если в обработчике установить данную ссылку (не пустую) то программа ее запомнит и поиск на этом будет считать успешно завершенным. Дальше продолжать?
#16 by Saruman
Как мне сравнить Год(СсылкаНаОбъект.Дата) с Год(Источник.Дата), если здесь нет параметра "Источник"
#17 by Defender aka LINN
Зато есть поля поиска. Или даже не так - Есть ПоляПоиска.
#18 by Лирик
Свой алгоритм и СвойстваПоиска согласен. Поля поиска нафиг не нужны.
#19 by Defender aka LINN
+ СвойстваПоиска, конечно же.
#20 by Defender aka LINN
Они тоже нужны. Иначе в обработчике их значений не будет
#21 by Лирик
Я про "СтрокаИменСвойствПоиска"
#22 by Defender aka LINN
Эти - да. Не нужны.
#23 by Saruman
#24 by Saruman
Что то типа того????
#25 by Saruman
up
#26 by Defender aka LINN
Ссылку ты должен сам найти
#27 by Saruman
Я немного не понимаю, как? Я должен найти ссылку на объект? Прямо здесь? То есть я должен уже здесь что-то начать искать? Я немного не понимаю...
#28 by Saruman
up
#29 by Лирик
В этом обработчике ты должен написать код на втроенном языке 1С 8 который в конечном итоге сводиться к получению искомой ссылки. Значения для поиска содержатся в соответствии "СвойстваПоиска". Заканчиваться твой поиск должен так:
#30 by Saruman
#31 by Saruman
Вот так получилось, большое спасибо за подсказку.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С