|   |   | 
| 
 | Конвертация данных - отказаться от загрузки, если не нашел по коду | ☑ | ||
|---|---|---|---|---|
| 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 | 
        Все, коллеги, спасибо, заработало
 Короче, ошибка была и в том, что галку не поставил, Ну и что остались следы после предыдущих попыток загрузить, очищал не все данные, а при загрузке они были и находились в первом ПКО уатЭкипажТС ПослеЗагрузки сработал код: Отказ = Объект.Сотрудник.Пустая(); Спасибо всем большое!!! | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |