|
Конвертация, как сравнить значение реквизита источника со значением приемника | ☑ | ||
---|---|---|---|---|
0
Soul771
02.10.14
✎
10:34
|
Добрый день.
В ПКО документа в "При загрузке" пишу такой код: Если ОбъектНайден И ИмяТипаОбъекта = "Документ" И Объект.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить И Объект.Ссылка.Проведен И Объект.Ссылка.ДатаПоследнегоИзменения> Источник.ДатаПоследнегоИзменения Тогда НеЗамещатьОбъект = Истина; КонецЕсли; Ругается на Источник.ДатаПоследнегоИзменения, что "значение не является значением объектного типа". Подскажите, пожалуйста, как мне перед загрузкой сравнить значение реквизита найденного документа со значением реквизита в источнике. Т.е по сути я хочу сделать проверку при повторной загрузке одних и тех же документов: если документ в базе-приемнике уже есть, если он проведен и если значение его реквизита ДатаПоследнегоИзменения больше, чем значение того же реквизита того же документа в базе-источнике, то не переписывать документ. |
|||
1
hhhh
02.10.14
✎
10:37
|
И Объект.Ссылка.ДатаПоследнегоИзменения> Объект.ДатаПоследнегоИзменения
|
|||
2
dimm7310
02.10.14
✎
10:38
|
давно уже не трогал КД, на сколько я помню в "ПриЗагрузке" ты уже не можешь обращаться к источнику. Может стоит попробовать передавать через параметр
|
|||
3
Soul771
02.10.14
✎
10:42
|
hhhh, спасибо большое :-)
|
|||
4
GreatOne
02.10.14
✎
10:42
|
А чем не устраивает вкладка настроек в ПКО? Не замещать, не загружать?..
|
|||
5
Godofsin
02.10.14
✎
10:48
|
(4) Условие на ДатаПоследнегоИзменения
|
|||
6
Soul771
02.10.14
✎
10:56
|
после того, как написала
И Объект.Ссылка.ДатаПоследнегоИзменения> Объект.ДатаПоследнегоИзменения ошибка ушла, но почему-то документы все равно замещаются... мож даты нужно сравнивать как-то по-другому?.. |
|||
7
Naumov
02.10.14
✎
10:59
|
>=
|
|||
8
Soul771
02.10.14
✎
11:08
|
Dimm7310,с параметры пока мне плохо поддаются) Если в параметр что-то передовать, то в ПКО при выгрузке надо прописать что-то вроде:
ТаблицаДокументов = Новый ТаблицаЗначений; ТаблицаДокументов.Колонки.Добавить("Ссылка"); ТаблицаДокументов.Колонки.Добавить("Дата"); Параметры.Вставить("ТаблицаДокументов",ТаблицаДокументов); Параметры.ТаблицаДокументов.Добавить("Дата",Источник.ДатаПосленегоИзменения); Параметры.ТаблицаДокументов.Добавить("Ссылка",Источник.Ссылка); Не знаю, как передать ссылку источника... И как потом сравнивать в "Перед загрузкой"? Через Отбор = Новый Структура(); Отбор.Вставить("Ссылка",Объект.ссылка); ТаблицаДокументов.НайтиСтроки(Отбор)? Если не трудно, напишите пример, пожалуйста.. хочется уже понять раз и применять в дальнейшем.. |
|||
9
GreatOne
02.10.14
✎
11:16
|
Может так сработает?
И НачалоДня(Объект.Ссылка.ДатаПоследнегоИзменения) > НачалоДня(Источник.ДатаПоследнегоИзменения) |
|||
10
GreatOne
02.10.14
✎
11:22
|
А вообще будь брутальней:
и выбрать парочку документов. Быть по локоть в коде куда интереснее! |
|||
11
prosto-nik
02.10.14
✎
11:47
|
(8) а вот это:
" И ИмяТипаОбъекта = "Документ" " в (0) точно соблюдается? откуда берется "ИмяТипаОбъекта"? |
|||
12
Soul771
02.10.14
✎
12:14
|
GreatOne, спасибо!! Вывела через сообщить, что меняется, что нет, получается, что
Объект.Ссылка.ДатаПоследнегоИзменения выдает такое же значение, что и Объект.ДатаПоследнегоИзменения, хотя в приемнике и в источнике значения разные.. Наверно, надо как-то по-другому обращаться?... |
|||
13
Soul771
02.10.14
✎
12:24
|
выдает вот такую строку:
Документ Разрешить Да НО000000305 20.09.2014 0:00:00 20.09.2014 0:00:00 хотя в базе - источнике 20.09.2014, а в базе-приемнике 23.09.2014 |
|||
14
prosto-nik
02.10.14
✎
12:27
|
(12) переставь код из (0) в другой обработчик:
http://clip2net.com/s/j0SUXs и сделай Если ..... И Ссылка.ДатаПоследнегоИзменения>Объект.ДатаПоследнегоИзменения Тогда Отказ = Истина; |
|||
15
GreatOne
02.10.14
✎
12:33
|
(14) +1. Всегда "После загрузки" был роднее, можно сравнить ссылку с объектом.
(13) ну если просто скопирован мой код,то все правильно. Он отрабатывает если "НЕ Объект.Ссылка.ДатаПоследнегоИзменения> Источник.ДатаПоследнегоИзменения")) |
|||
16
Soul771
02.10.14
✎
12:43
|
prosto-nik, спасибо за ссылку, дааааавно искала такой прекрасный иссточник по конверташке! пробую с "после загрузки".
GreatOne, код чуток изменила, писала вот так: Если ОбъектНайден И ИмяТипаОбъекта = "Документ" И Объект.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить И Объект.Ссылка.Проведен И Объект.Ссылка.ДатаВходящегоДокумента>=Объект.ДатаВходящегоДокумента Тогда Сообщить(ИмяТипаОбъекта + " " + Объект.Метаданные().Проведение +" " +Объект.Ссылка.Проведен +" "+" "+ Объект.Ссылка.Номер+ " "+ Объект.Ссылка.ДатаВходящегоДокумента +" "+ Объект.ДатаВходящегоДокумента); НеЗамещатьОбъект = Истина; КонецЕсли; |
|||
17
prosto-nik
02.10.14
✎
12:51
|
(16) так в самой конвертации внутри события вверху кнопка "Информация по обработчикам..."
|
|||
18
Soul771
02.10.14
✎
13:09
|
(17) - елки-моталки..... а я столько перерыла в инете... :-)
|
|||
19
prosto-nik
02.10.14
✎
13:10
|
(18) бывает)))
|
|||
20
Soul771
02.10.14
✎
13:12
|
че-то я совсем в тупике.... впихала в ПКО документа в "после загрузки" :
Если ОбъектНайден //И ИмяТипаОбъекта = "Документ" //И Объект.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить И Ссылка.Проведен И Ссылка.ДатаВходящегоДокумента>=Объект.ДатаВходящегоДокумента Тогда Сообщить(Ссылка.Проведен +" "+ Ссылка.Номер+ " "+ Ссылка.ДатаВходящегоДокумента +" "+ Объект.ДатаВходящегоДокумента); ОТказ = Истина; КонецЕсли; ругается, как я понимаю, на строку с Сообщить: Преобразование к типу Число не может быть выполнено... Какое тут еще преобразование к Число?.... P.S.: в начале поста писала, что реквизит называется ДатаПоследнегоИзменения, а тут ДатаВходящегоДокумента)) эт он же, я пока новый реквизит не добавила просто, использую тот что есть - ДатаВходящегоДокумента) |
|||
21
prosto-nik
02.10.14
✎
13:17
|
(20) ну напиши
Сообщить("" + Ссылка.Проведен +" "......... |
|||
22
Soul771
02.10.14
✎
13:30
|
(21)- случилось чудо))) не представляю, зачем нужны "", но ошибка ушла)))
правда, условие все равно не срабатывает... выдает Да НО000000305 20.09.2014 0:00:00 20.09.2014 0:00:00 как будто бы считывает только из приемника.... |
|||
23
prosto-nik
02.10.14
✎
13:32
|
(22) посмотри документ в базе приемнике и в выгруженной XMLке
|
|||
24
prosto-nik
02.10.14
✎
13:36
|
(22) он у тебя кстати в приемнике не перезаписался после (13)? а то может он и в самом деле в приемнике он уже 20.09.2014 0:00:00
|
|||
25
Soul771
02.10.14
✎
13:52
|
Нашла косяк криворукости))))) В ПКС перенос реквизита ДатаВходящегоДокумента был отключен, с какого ... уже не помню)))
Спасибо огромное, Prosto-nik!!! И всем, кто откликнулся!! :-) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |