|
КД: Поля поиска | ☑ | ||
---|---|---|---|---|
0
Mikhail Volkov
24.06.13
✎
14:30
|
Кроме гуид синхронизация документов осуществлялась по реквизитам: Номер, Дата. Теперь решили, что даты в базах могут быть разные, но в пределах года. Оставил только Номер - засинхронизировался с прошлогодними документами... Как бы сделать, чтобы синхронизация шла по Номеру в пределах текущего года?
|
|||
1
sanja26
24.06.13
✎
14:32
|
Добавь параметр отбора ДатаГода и выгружай отдельно по каждому году
|
|||
2
Defender aka LINN
24.06.13
✎
14:39
|
(0) В заголовке темы содержится ответ
|
|||
3
Mikhail Volkov
24.06.13
✎
14:41
|
(2) Как это прописать в ПКО?
|
|||
4
Defender aka LINN
24.06.13
✎
14:43
|
(3) Если его ни разу не открывать и не смотреть, какие у ПКО бывают события, то похоже, что никак, да...
|
|||
5
Mikhail Volkov
24.06.13
✎
14:46
|
Например, для ФизЛиц:
Если СвойстваПоиска["ЭтоГруппа"] = Истина Тогда СтрокаИменСвойствПоиска = "Наименование, ЭтоГруппа, Родитель"; Иначе Если ЗначениеЗаполнено(СвойстваПоиска["ДатаРождения"]) Тогда СтрокаИменСвойствПоиска = "Наименование, ЭтоГруппа, ДатаРождения"; Иначе СтрокаИменСвойствПоиска = "Наименование, ЭтоГруппа"; КонецЕсли; КонецЕсли; А в моем случае как прописать? |
|||
6
Mikhail Volkov
24.06.13
✎
14:48
|
(4) Так, что-ли?
СтрокаИменСвойствПоиска = "Номер, Год(Дата)"; |
|||
7
Defender aka LINN
24.06.13
✎
14:49
|
(5) Мне сейчас лениво открывать КД. Поэтому я и не буду. А раз уж ты нашел в себе силы открыть ПКО, то сделай еще одно усилие и прочитай, ять, справку по обработчикам.
|
|||
8
Defender aka LINN
24.06.13
✎
14:51
|
+(7) Хотя, если мне не изменяет память, если задавать поиск по дате и номеру для документа, КД и так использует штатный метод НайтиПоНомеру, которому дата нужна только для определения периода. Достаточно сказать КД, чтобы не меняла дату у существующих жокументов
|
|||
9
Mikhail Volkov
24.06.13
✎
15:00
|
(8) Т.е. по СтрокаИменСвойствПоиска = "Номер, Дата"; найдет нужный документ, даже если даты не равны, но они в приделах года?
|
|||
10
Mikhail Volkov
24.06.13
✎
15:16
|
(8) Похоже так и есть!? Если бы в процессе обмена создался дубль документа, то было бы предутреждение, что номер не уникальный... Пока этого нет!
|
|||
11
Сияющий Асинхраль
24.06.13
✎
15:29
|
(10) Увы, это не так. При записи с помощью КД уникальность номеров не проверяется, и проверки на вхождение номера в год в КД помнится встроенной нет, надо делать самому...
|
|||
12
Mikhail Volkov
24.06.13
✎
15:41
|
(11) Какой выход?
|
|||
13
Сияющий Асинхраль
24.06.13
✎
15:46
|
(12) В (5) тебе показали пример кода для полей поиска, вот тебе туда надо написать кусок кода, включающий НайтиПоКоду(), куда ты передаешь Номер дока СвойстваПоиска["Номер"] и дату для определения периода СвойстваПоиска["Дата"] (ну, или не найти по коду, а маленький запрос, как душе угодно) и если объект найден, то получаем документ со своей датой в этом периоде. Других вариантов мне в свое время найти не удалось, если просто включить поиск по Номер-Дата и в приемнике поменять дату или даже время дока, документы благополучно будут двоиться...
|
|||
14
Defender aka LINN
24.06.13
✎
16:40
|
(12) Значит, изменяет. Читай помощь по обработчику, там есть волшебная переменная
|
|||
15
Mikhail Volkov
25.06.13
✎
08:14
|
(11) В ПКО ПослеЗагрузки вставил проверку на дубли:
Если Не ОбъектНайден Тогда Дубль = НайтиПоНомеру(Объект.Номер, Объект.Дата); Если Не Дубль = Неопределено Тогда Сообщить("Документ " + СокрЛП(Объект) + " не создан (не загружен), найден дублирующий " + СокрЛП(Дубль), СтатусСообщения.Важно); Отказ = Истина; КонецЕсли; КонецЕсли; Пока дублей не обнаружено. Возможно мне повезло, в базе приемнике вручную не создают документов!? Но все же, если такая ситуация обнаружется, как указать, что найденый дубль и есть загружаемый документ? Объект = Дубль; (вместо Отказ = Истина) - так? |
|||
16
Mikhail Volkov
25.06.13
✎
08:16
|
(13) Можно пример кода с НайтиПоКоду()?
|
|||
17
Mikhail Volkov
25.06.13
✎
11:43
|
Такую хрень пробовал сунуть
СсылкаНаОбъект = НайтиПоНомеру(Объект.Номер, Объект.Дата); Если Не СсылкаНаОбъект = Неопределено Тогда Сообщить("Документ " + СокрЛП(Объект) + " найден по номеру " + СокрЛП(СсылкаНаОбъект), СтатусСообщения.Важно); ПрекратитьПоиск = Истина; КонецЕсли; Выдало: Ошибка в обработчике события ПоследовательностьПолейПоиска ИмяПКО = ТипОбъекта = Поступление товаров и услуг Обработчик = Последовательность полей поиска ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,32)}: Переменная не определена (Объект) ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(6114) КодСообщения = 73 Как правильно писать? |
|||
18
hhhh
25.06.13
✎
11:48
|
(17) ты (5) читал?
СсылкаНаОбъект = НайтиПоНомеру(СвойстваПоиска["Номер"], СвойстваПоиска["Дата"]); |
|||
19
Darky
25.06.13
✎
11:48
|
в ПКС Дата - Искать по дате на равенство
|
|||
20
Mikhail Volkov
25.06.13
✎
12:07
|
(18) Теперь:
Ошибка в обработчике события ПоследовательностьПолейПоиска ИмяПКО = ТипОбъекта = Поступление товаров и услуг Обработчик = Последовательность полей поиска ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,18)}: Процедура или функция с указанным именем не определена (НайтиПоНомеру) ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(6114) КодСообщения = 73 |
|||
21
hhhh
25.06.13
✎
12:08
|
(20) ну почитай в синтакс-помощнике про функцию НайтиПоНомеру. Что ты детские вопросы задаешь?
|
|||
22
Mikhail Volkov
25.06.13
✎
12:13
|
(19) В этом и беда, что решили так, что даты в базах могут отличаться, но в пределах года.
|
|||
23
Mikhail Volkov
25.06.13
✎
12:15
|
(21) А что ни так?
Описание: Осуществляет поиск документа по номеру. Доступность: Сервер, толстый клиент, внешнее соединение. |
|||
24
Mikhail Volkov
25.06.13
✎
12:54
|
(19) А правда, для чего в ПКС галачка "Поиск по дате на равество"? Если она снята, то Дата в поиске воспринимается как период? И все работает как надо, в обработчике события ПоследовательностьПолейПоиска ничего писать не надо?
|
|||
25
Mikhail Volkov
26.06.13
✎
05:57
|
Вроде проблема снята, но все же интересно, что не так с командой: СсылкаНаОбъект = НайтиПоНомеру(СвойстваПоиска["Номер"], СвойстваПоиска["Дата"]); ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |