[РЕШЕНО] Перенос регистра сведений

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем Виктор13245234, 30 авг 2018.

  1. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    239
    Симпатии:
    6
    Баллы:
    29
    Коллеги, добрый день! Необходимо перенести регистр сведений но с таким условием:

    Если значение ресурса в наборе записей (который переносим) Истина, то в базе Приёмник дозаполнить некоторые поля в текущем наборе записей (которая переносится).


    В конвертации пытался через обработчики событий в ПКО для данного регистра, но ничего не получилось. Кто сталкивался? Отзовитесь! Заранее спасибо!
  2. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    7.886
    Симпатии:
    504
    Баллы:
    204
    В ПКО Записи регистра ПослеЗагрузки прописываете нужные условия.
  3. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    239
    Симпатии:
    6
    Баллы:
    29
    Есть несколько вопросов:
    1) Как обращаться к реквизитам приемника в этом обработчике? Так понимаю через параметры? Есть пример? Я делаю так:
    upload_2018-8-30_21-18-33.png


    2) А как обрабатывать записи? Я использую конструкцию:

    Код:
    НашПараметр = ПараметрыОбъекта["ОформленПоТрудовомуДоговору"];
    
    Сообщить(НашПараметр);
    
    Если Не НашПараметр  Тогда
        Объект[0].ТекущаяОрганизация = Организация;
        Объект[0].ДатаПриема         = Дата("19000101000000");
    КонецЕсли
    

    Скорее всего это не правильно(

    Хочу сделать так: если есть запись в приемнике - создавать, если нет - изменять. Как это сделать? Спасибо!
  4. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    7.886
    Симпатии:
    504
    Баллы:
    204
    Никак не обрабатываются. Здесь только источник. А параметр, это то, что передается из источника в приемник. ПриЗагрузке всего ПКО его уже можно инициализировать. Код инициализации правильный. Почему не попробуете мой вариант?
  5. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    239
    Симпатии:
    6
    Баллы:
    29
    Доброе утро! Я уже запутался. Есть вопросы:

    1) Обработка у меня должна идти обработчике "после загрузки" ПКО соответствующего регистра сведений? Правильно?
    2) А какой Ваш вариант? То, что я описал в 1 пункте?

    Я просто хочу так: при выгрузке набора записей из источника в приемник попадала эта запись и дозаполняла поля в наборе записей в соответствии с заполненностью ресурса в выгружаемом наборе записи РС.

    Если я делаю так, как описал в прошлом посте, то получаю ошибку при загрузке:

    upload_2018-8-31_8-31-23.png

    Так понимаю, что в событии "После выгрузки" у ПКО РС нужно анализировать найденную запись? Заранее спасибо!
  6. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    7.886
    Симпатии:
    504
    Баллы:
    204
    Дайте ваши правила.
  7. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    239
    Симпатии:
    6
    Баллы:
    29
    Кое что исправил. В ПКО "После выгрузки" следующий код:

    Код:
       
    ОформленПоТрудовомуДоговору = ПараметрыОбъекта["ОформленПоТрудовомуДоговору"]; // Вдовенко (обработка сотрудников по ГПХ) // получаю значение ресурса
    
    Для Каждого текЗапись Из Объект Цикл // Объект - это набор записей?
       
        Если Не ТекЗапись.ОформленПоТрудовомуДоговору Тогда
       
            ТекЗапись.ТекущаяОрганизация = ТекЗапись.ГоловнаяОрганизация;
            ТекЗапись.ДатаПриема         = Дата("19000101000000");
       
        КонецЕсли;
       
    КонецЦикла
    

    Получаю ошибку при загрузке, что и в прошлом посте
  8. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    7.886
    Симпатии:
    504
    Баллы:
    204
    Я не могу сказать, что у вас там, пока, хотя бы, не взгляну на правила.
  9. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    239
    Симпатии:
    6
    Баллы:
    29
    Хорошо. Прикрепил. РегистрСведений ТекущиеКадровыеДанные

    Вложения:

  10. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    7.886
    Симпатии:
    504
    Баллы:
    204
    ПослеЗагрузки попробуйте так:
    Код:
    ОформленПоТрудовомуДоговору = ПараметрыОбъекта["ОформленПоТрудовомуДоговору"]; // Вдовенко (обработка сотрудников по ГПХ)
    Если ОформленПоТрудовомуДоговору Тогда
        Объект.ТекущаяОрганизация = ?(ЗначениеЗаполнено(Объект.ТекущаяОрганизация), Объект.ТекущаяОрганизация, Объект.ГоловнаяОрганизация);
        Объект.ДатаПриема         = Дата("19000101000000");
    КонецЕсли;
    --- Объединение сообщений, 31 авг 2018 ---
    С отладкой Ваш вопрос решается за 10 минут.
  11. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    239
    Симпатии:
    6
    Баллы:
    29

    Спасибо, все равно не работает. ОШибка та же. дело в том, что "Текущая организация" - Это измерение
  12. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    239
    Симпатии:
    6
    Баллы:
    29
    Решил проблему следующим образом:

    Код:
    ТекущаяОрганизация = Справочники.Организации.ПустаяСсылка();
    Для Каждого ТекЗапись Из Объект Цикл
       
        ТекЗапись.ТекущаяОрганизация = ?(ЗначениеЗаполнено(текЗапись.ТекущаяОрганизация),ТекЗапись.ТекущаяОрганизация,ТекЗапись.ГоловнаяОрганизация);
        ТекЗапись.ДатаПриема         = Дата("19000101000000");
        ТекущаяОрганизация           = ТекЗапись.ТекущаяОрганизация;
       
    КонецЦикла;
    Объект.Отбор.ТекущаяОрганизация.Установить(ТекущаяОрганизация);
    Отборы не совпадали в источнике и приемнике.

Поделиться этой страницей