Конвертация данных - отказаться от загрузки, если не нашел по коду #752290


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

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