Имя: Пароль:
1C
1С v8
КД "Не замещать существующие объекты ..." можно по условию?
0 Mikhail Volkov
 
11.02.12
12:41
В ПКО есть галочка "Не замещать существующие объекты в приемнике при загрузке...". Обычно я ее использую при загрузки из периферийных баз (из УТ в УПП), но это не всегда правильно. Бывает вечером объявился новый клиент, в УТ заполнили только основные реквизиты, а утром все остальные. Но обмен ночью прошел, и дозаполненные реквизиты уже не попадают в УПП. Самое неприятное, что в УПП ничего по нему не заполняли, переложили в другую папку. И при обмене этот полупустой клиент вернулся в УТ, и затер все, что там дозаполнили!?
Есть ли возможность, чтобы объект замещался по условию?
1 Рэйв
 
11.02.12
12:42
По какому условию?
2 Mikhail Volkov
 
11.02.12
12:43
А еще лучше, чтобы в ПКС "Не замещать значение свойства у существующих объектов в приемнике" работало по условию, чтобы перезаписывались только не заполненные реквизиты приемника? (или хотя бы не пустыми?)
3 Mikhail Volkov
 
11.02.12
12:46
(1) Источник заполнен, а приемник пустой.
4 Рэйв
 
11.02.12
12:48
(3)в ПКО ПослеЗагрузки  Сравнивай  Объект и Объект.Ссылка  Соотвественно если не надо замещать - отказ= истина
5 Mikhail Volkov
 
11.02.12
13:08
(4) "После загрузки" поздно - Объект уже записан.
6 Mikhail Volkov
 
11.02.12
13:17
А "При загрузки", например, для одного реквизита:
Если ЗначениеЗаполнено(Объект.Реквизит1)
И Не ЗначениеЗаполнено(Источник.Реквизит1) Тогда
   Отказ = истина;
КонецЕсли
Правильно будет?
7 Mikhail Volkov
 
11.02.12
13:19
Или надо "Перед загрузкой"? Где пример посмотреть?
8 Aleksey
 
11.02.12
13:34
Совсем народ ленивый стал, даже справку лень почитать
9 Aleksey
 
11.02.12
13:35
Обработчики "Правила конвертации объектов"
Перед загрузкой
Условия возникновения события
Только для платформы V8.
Событие выполняется перед загрузкой объекта. Возможен отказ от загрузки, например, в случае невыполнения каких-либо условий. Загружаемый в БД объект еще не инициализирован.

Параметры:
НеЗамещатьОбъект - Если для данного параметра установить значение Истина, то объект идентифицированный при загрузке (т.е. найденный в информационной базе приемнике по значению синхронизирующих полей) не будет изменен/замещен.
10 Aleksey
 
11.02.12
13:35
Обработчики "Правила конвертации объектов"
При загрузке
Условия возникновения события
Только для платформы V8.
Событие выполняется после попытки идентификации. В случае успешной синхронизации доступен найденный объект. В противном случае его значение Неопределено. Можно произвести произвольную инициализацию, заполняемого данными объекта.

Параметры:
НеЗамещатьОбъект - Булево - Если установить значение Истина, то существующий объект информационной базы не будет изменен.
11 Aleksey
 
11.02.12
13:36
Обработчики "Правила конвертации объектов"
После загрузки
Условия возникновения события
Только для платформы V8.
Событие выполняется после прочтения и установки атрабутов объекта из файла, но до его записи в информационную базу. Возможна модификация загруженного объекта.

Параметры:
Отказ - Булево - Если Истина, то объект загружен не будет.
12 Aleksey
 
11.02.12
13:36
Неужели так трудно нажать большую кнопку информация по обработчикам?
13 Aleksey
 
11.02.12
13:37
(5) Твоя фантазия?
14 Aleksey
 
11.02.12
13:38
(6) НЕТ, не правильно, потому что при загрузки нет такого параметра ОТКАЗ
15 Рэйв
 
11.02.12
14:11
(5)Почитай внимательно мануалы.

Объект готов к записи но еще не записан.
16 Mikhail Volkov
 
11.02.12
14:29
(14) Хорошо: НеЗамещатьОбъект = Истина;
Объект.Реквизит1 при загрузке доступен, а Источник.Реквизит1 – уже нет, из ФайлОбмена выковыривать надо?
17 Mikhail Volkov
 
11.02.12
14:33
(15) "Объект готов к записи но еще не записан" - как его сравнить с тем что в базе?
18 Рэйв
 
11.02.12
14:42
(17)Читай(4)
Объект содержит то что пришло.
Объект.Ссылка - то что в базе лежит
19 Рэйв
 
11.02.12
14:44
+(18)
Естественно проверку

Если Объект.Ссылка.Пустая()  Тогда
...записывать без условий .Это новый
20 Aleksey
 
11.02.12
14:48
(19) т.е.

ОбъектНайден - Булево. Если значение параметра равно Ложь, то объект не идентифицирован, то есть не найден в информационной базе

ОбъектМодифицирован – Булево. Флажок указывает на то, что в обработчике объект был изменен. По умолчанию содержит значение Истина. То есть обработка загрузки считает, что если выполнялся какой-либо обработчик, то объект мог быть модифицирован, и его необходимо записать в информационную базу. Параметр относится только к текущему обработчику. Если объект был изменен ранее, то при любом значении переменной ОбъектМодифицирован он будет записан. Только для платформы 1С:Предприятие 8.

Не для нас?
21 Рэйв
 
11.02.12
14:49
(20)Нах такие сложности?  Когда простая стандартная проверка на пустую ссылку дат требуемую инфу.
22 Рэйв
 
11.02.12
14:50
дат = дает
23 Aleksey
 
11.02.12
15:05
(21) А зачем лишний раз дергать базу? когда можно просто написать
Если ОбъектНайден тогда
//проверяем
24 Aleksey
 
11.02.12
15:06
А вообще автор не с той стороны пошел
25 Aleksey
 
11.02.12
15:08
У реквизитов при выгрузки можно прописать

Отказ - Булево - Если Истина, то конвертация свойства не производится, обработка правила конвертации свойств прекращается

Т.е.
Если не ЗначениеЗаполнено(Источник.ТвойРеквизит) тогда
 Отказ = истина;
КонецЕсли;

Это гарантированно не будет выгружать пустые (незаполненые) реквизиты, а значит не будет затирать то, что уже внесли в приемник ручками
26 Рэйв
 
11.02.12
15:10
(23)Я тебя умоляю:-))Почитай модуль загрузчика.
База в процессе загрузки дергается столько, что один раз просто потонет в этом океане.:-)
27 Рэйв
 
11.02.12
15:12
+(23)И не доверяю я этим ОбъектНайден.
Косяков видел достаточно со стороны этих "прославленных" разработчиков...Лучше ужя я сам железобетонно буду уверен.
28 Aleksey
 
11.02.12
15:14
(27) А зачем тогда КД юзать? Не проще ли написать свое, ну что бы железобетонно
29 Рэйв
 
11.02.12
15:25
(28)Ну зачем же изобретать изобретенный вертолет.
Просто , по моему опыту, не стоит безоглядно верить его приборам.
а если хватает сообразительности то лучше эти приборы немного улучшить под себя.
30 Mikhail Volkov
 
11.02.12
16:06
(25) Это мне нравится, но если объект выгрузится с пустым реквизитом, то где гарантия, что в приемнике он не затрет этот реквизит?
31 Aleksey
 
11.02.12
21:58
(30) Реквизиты не выгрузятся в этом случае, его не будет в файле, а значит и ничего не загрузится
32 байт
 
11.02.12
22:02
после загрузки отрабатывает я проводил подобное
33 Mikhail Volkov
 
29.02.12
04:13
(25) А единый обработчик для всех ПКС справочников есть? Как-то накладно прописывать это условие во всех ПКС... или групповой обработкой?
34 Агент Инфостарта
 
29.02.12
09:27
(33)
Глобальные обработчики "Конвертация"
Перед конвертацией объекта
Условия возникновения события
Событие выполняется перед началом конвертации объекта по правилу конвертации. Вызов осуществляется до вызова обработчика "Перед выгрузкой" правила конвертации объектов.