|
Конвертация данных - отказаться от загрузки, если не нашел по коду | ☑ | ||
---|---|---|---|---|
0
VladSt
02.09.15
✎
18:17
|
Добрый день
Есть ПКО уатЭкипажТС, в приемнике есть реквизиты Сотрудник, ТС, ЧленЭкипажа. Сотрудник - это уже новое ПКО Сотрудники. Так вот в Сотрудники я передаю код и там ищу по коду. Когда код, который я передал программа находит, то и возвращает/устанавливает в уатЭкипажТС новую строку и все реквизиты. Что - хорошо. А если не находит (так надо по условию), то создает строку в уатЭкипажТС и устанавливает сотра в пустое значение. ТС и Член экипажа устанавливает правильно. НО я хочу, чтобы если не нашла в ПКО Сотрудники сотра, то не создавала новую строку в уатЭкипажТС. А то сотрудник получается пустой, а запись есть. Подскажите |
|||
1
mikecool
02.09.15
✎
18:22
|
ПриВыгрузке строки
Отказ = Сотрудник.Пустая() наверное |
|||
2
VladSt
02.09.15
✎
18:28
|
(1) Переменная не определена Сотрудник
|
|||
3
VladSt
02.09.15
✎
18:33
|
А почему ПриВыгрузке?
В каком ПКО? |
|||
4
VladSt
02.09.15
✎
18:42
|
Дело в том, что в Источнике ЧленЭкипажа(Сотрудник) есть, а в Приемнике может и не быть. И тогда в первом ПКО вообще не надо загружать запись
|
|||
5
sonne666
02.09.15
✎
18:44
|
в ПКО уатЭкипажТС в обработчике ПослеЗагрузки удалите ненужные строчки. По-моему, просто так от создания строки ТЧ отказаться нельзя, только если вручную формировать КоллекциюОбъектов.
|
|||
6
mehfk
02.09.15
✎
18:48
|
(5)
Обработчики "Правила конвертации группы свойств" Перед обработкой Условия возникновения события Событие выполняется перед обработкой группы свойств, например, перед выгрузкой табличной части. Возможен отказ от выгрузки. Можно определить произвольную коллекцию, являющуюся источником данных. Параметры: Отказ - Булево - Если Истина, то группа свойств не обрабатывается |
|||
7
mehfk
02.09.15
✎
18:49
|
Обработчики "Правила конвертации группы свойств"
Перед выгрузкой Условия возникновения события Событие выполняется перед выгрузкой очередного объекта коллекции, например, строки табличной части. Возможен Отказ от выгрузки объекта коллекции (строки табличной части или движения регистра). УзелОбъектаКоллекции еще не создан. Допустимо добавление произвольных записей в УзелКоллекцииОбъектов, например, когда необходимо конвертировать одну строку табличной части в несколько. Параметры: Отказ - Булево - Если Истина, то подчиненный объект не выгружается |
|||
8
top_harley
02.09.15
✎
18:50
|
Если я правильно понял то решение "не загружать" строчку должно приниматься уже в базе приемнике когда становиться понятно что сотрудник не найден.
в обработчике ПКО "После загрузки" до записи объекта можешь добавить алгоритм поиска в ТЧ по пустому сотруднику и удалить найденные строки |
|||
9
VladSt
02.09.15
✎
18:51
|
(8) Да, причем в первом ПКО, когда обработано второе
|
|||
10
VladSt
02.09.15
✎
18:52
|
(8) не могу найти какие данные есть в обработчике ПриЗагрузке, ПослеЗагрузки
(( |
|||
11
VladSt
02.09.15
✎
18:53
|
Объект пустой ((
|
|||
12
top_harley
02.09.15
✎
18:53
|
(10) нажми "информация по обработчикам"
|
|||
13
VladSt
02.09.15
✎
18:56
|
(12) не помогло ((
Обработчики "Правила конвертации объектов" При загрузке Условия возникновения события Только для платформы V8. Событие выполняется после попытки идентификации. В случае успешной синхронизации доступен найденный объект. В противном случае его значение Неопределено. Можно произвести произвольную инициализацию, заполняемого данными объекта. Параметры: ОбъектНайден - Булево. Если значение параметра равно Ложь, то объект не идентифицирован, то есть не найден в информационной базе Объект - Произвольный. Загружаемый, модифицируемый объект, созданный по ссылке или найденный в информационной базе. Если способ идентификации объекта в файле не указан (т.е. отсутствует узел "Ссылка"), то параметр содержит значение Неопределено. В этом случае в обработчике возможна произвольная инициализация загружаемого объекта, в противном случае, объект будет создан автоматически. НеЗамещатьОбъект - Булево - Если установить значение Истина, то существующий объект информационной базы не будет изменен. ОбъектМодифицирован – Булево. Флажок указывает на то, что в обработчике объект был модифицирован. По умолчанию содержит значение Истина. То есть обработка загрузки считает, что если выполнялся какой-либо обработчик, то объект мог быть модифицирован, и его необходимо записать в информационную базу. Параметр относится только к текущему обработчику и только к найденным объектам. Если объект не был найден, то при любом значении он будет создан и записан. Только для платформы 1С:Предприятие 8. |
|||
14
sonne666
02.09.15
✎
19:01
|
(13) а что написали-то в обработчике, что не помогло?
|
|||
15
sonne666
02.09.15
✎
19:05
|
(13) нужен обработчик ПослеЗагрузки. Там будет определен и вновь созданный объект.
|
|||
16
top_harley
02.09.15
✎
19:07
|
(13) обработчик ПослеЗагрузки!!! не ПриЗагрузке
тогда объект будет заполнен, но не записан СтрокиКУдалению = Объект.ТвояТЧ.НайтиСтроки(Новый Структура("Сотрудник", Справочник.Сотрудники.ПустаяСсылка())); Для Каждого СтрокаДляУдаления Из СтрокиКУдалению Цикл Объект.ТвояТЧ.Удалить(СтрокаДляУдаления); КонецЦикла; не будет работать если выгружаешь по внутренним идентификаторам |
|||
17
VladSt
02.09.15
✎
19:13
|
(15), (16) Да, именно так я сейчас и пробовал ПослеЗагрузки
но Объект.Сотрудник.Пустая() Нет Дальше пробую с удалением |
|||
18
VladSt
02.09.15
✎
19:16
|
Вот сообщения обработчика:
Объект.Сотрудник Крупица Евгений Николаевич Объект.Сотрудник.Пустая() Нет Объект.Сотрудник <> Объект.Сотрудник.Пустая() Нет |
|||
19
VladSt
02.09.15
✎
19:22
|
Объект.Сотрудник <>
Объект.Сотрудник.Пустая() Нет ТипЗнч(Объект.Сотрудник) Сотрудник Хотя сотра такого нет, т.е. просто пустая ссылка |
|||
20
VladSt
02.09.15
✎
19:23
|
И что делать?
|
|||
21
VladSt
02.09.15
✎
19:29
|
В обычных формах можно было сравнить с ЗначениеЗаполнено, а УФ как?
|
|||
22
top_harley
02.09.15
✎
19:34
|
(18) не понятно о чем мы говорим
в приемнике реквизит "сотрудник" есть реквизитом чего? шапки или ТЧ? Объект.Сотрудник Крупица Евгений Николаевич Объект.Сотрудник.Пустая() Нет судя по тому что есть представление объекта "Крупица Евгений Николаевич" то объект в базе есть |
|||
23
VladSt
02.09.15
✎
19:42
|
(22) Да, спасибо, точно есть, пустой, но с кодом (после загрузок ранее остался)
Разбираюсь ) |
|||
24
GreyK
02.09.15
✎
19:44
|
(19) У тебя галка "Не создавать новый, если не найден" для сотрудников стоит?
|
|||
25
VladSt
02.09.15
✎
19:51
|
(24) уже да )
|
|||
26
VladSt
02.09.15
✎
20:03
|
Все, коллеги, спасибо, заработало
Короче, ошибка была и в том, что галку не поставил, Ну и что остались следы после предыдущих попыток загрузить, очищал не все данные, а при загрузке они были и находились в первом ПКО уатЭкипажТС ПослеЗагрузки сработал код: Отказ = Объект.Сотрудник.Пустая(); Спасибо всем большое!!! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |