8.х Соответствия регистров

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем 19yellow92, 18 апр 2016.

  1. TopicStarter Overlay
    19yellow92
    Offline

    19yellow92

    Регистрация:
    29 мар 2016
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    1
    Всем снова здравствуйте. За ранее прошу не нервничать по поводу недопонимания. Опыта мало.
    Есть 2 базы УПП. В источнике заполняется Р.С. Работники организаций, данные этого регистра необходимо выгрузить, и создать движения по уже существующим документам в базе приемнике, но только с Р..С. Работники. В документах прием, увольнение, кадровое перемещение организаций добавлена возможность проведения по Р.С. Работники
    Обработка с ком соединением есть, ее необходимо доработать. В первой процедуре (ЗагрузитьВсеНажатие) создаю набор записей со всеми регистраторами из Р.С. Работники организаций. Во вторую процедуру (СравнитьИсточникПриемникТЗ) Необходимо прописать соответсвие некоторых реквизитов, которые отличаются в этих двух регистрах. Это Подразделения и Должности (в Работниках организаций используются справочники с окончанием "Организаций", а в Р.С. Работники, соответственно без данных окончаний). Данные в этих справочниках одинаковы по коду и наименованию. ВОПРОС: Как можно задать соответствия для этих двух реквизитов? И добавить в базу уже в другой регистр движения. (Вопрос объемный, за любую помощь заранее спасибо ))))

    Код:
    Процедура  ЗагрузитьВсеНажатие(Элемент)
       
        Сообщить("Обработка запущена: "+ТекущаяДата()+", пожалуйста, дождитесь окончания. " );
                    
       
        ТаблицаРегистраторовКОМ.Очистить();
        ИндексТаблицаРегистраторовКОМ = 0;
       
        База = Неопределено;
        Соединение = Неопределено;
       
        Если Не ПроверкаПодключения(База, Соединение) Тогда
            Возврат;
        КонецЕсли;
       
        Попытка
            ЗапросКОМ = Соединение.NewObject("Запрос");
            ЗапросКОМ.Текст =
            "ВЫБРАТЬ РАЗЛИЧНЫЕ
            |    РаботникиОрганизаций.Регистратор.Ссылка КАК Регистратор
            |ИЗ
            |    РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
            |ГДЕ
            |    РаботникиОрганизаций.Период МЕЖДУ &нПериода И &кПериода
            |
            |УПОРЯДОЧИТЬ ПО
            |    РаботникиОрганизаций.Регистратор.Дата";
           
            ЗапросКОМ.УстановитьПараметр("нПериода", ДатаНачало);
            ЗапросКОМ.УстановитьПараметр("кПериода",ДатаОкончание);
           
            ВыборкаКОМ = ЗапросКОМ.Выполнить().выбрать();        
                
            Пока ВыборкаКОМ.Следующий() Цикл
                НовыйРегистратор = ТаблицаРегистраторовКОМ.Добавить();
                НовыйРегистратор.Ссылка = ВыборкаКОМ.Регистратор;
            КонецЦикла;
           
        Исключение
            ТекстОшибки = СформироватьТекстСообщения(ОписаниеОшибки());
            Сообщить (ТекстОшибки);
            Предупреждение (ТекстОшибки);
            Отказ = Истина;
            Возврат
        КонецПопытки;   
       
        //если регистраторов больше 0
        Если ТаблицаРегистраторовКОМ.Количество() > 0 Тогда
           
            СравнитьИсточникПриемникТЗ();
        Иначе
            Сообщить("Не обнаружено объектов для записи!");
        КонецЕсли;
        Сообщить("Обработка завершена:  "+ТекущаяДата());   
       
       
    КонецПроцедуры
    
    Процедура  СравнитьИсточникПриемникТЗ()  //Набор,Регистратор
       
        Регистратор = ТаблицаРегистраторовКОМ[ИндексТаблицаРегистраторовКОМ].Ссылка;       
       
        Набор = Регистратор.Получитьобъект().Движения.РаботникиОрганизаций;
        Набор.Прочитать();
                    
        ТаблицаНаборовКОМ=ЗначениеИЗСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(Набор.Выгрузить()));
       
        // набор движений в базе приемнике //работает
        Запрос = Новый Запрос;
        Запрос.Текст =
       
    // текст запроса
    
        Запрос.УстановитьПараметр("кПериода", ДатаОкончание);
        Запрос.УстановитьПараметр("нПериода", ДатаНачало);
        Запрос.УстановитьПараметр("РегистраторКОМ", ЗначениеИзСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(Регистратор)));
       
        Выборка= Запрос.Выполнить().Выбрать();
       
        Пока Выборка.Следующий() Цикл
            мДокумент=Выборка.Регистратор;
            Набор=Выборка.Регистратор.Получитьобъект().Движения.Налоговый;      
            Набор.Прочитать();
            ТаблицаНаборов=Набор.Выгрузить();
        КонецЦикла;   
       
       
        Если мДокумент = ЗначениеИЗСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(ТаблицаРегистраторовКОМ[ИндексТаблицаРегистраторовКОМ].Ссылка)) Тогда
            //проверка на идентичность, записываем наборы различных
            ПолностьюИдентичны = СравнитьТаблицыЗначений(ТаблицаНаборовКОМ,ТаблицаНаборов);
            Если ПолностьюИдентичны <> истина  тогда
                Набор.Отбор.Регистратор.Установить(мДокумент);
                Набор.Загрузить(ТаблицаНаборовКОМ);        
                Набор.Записать();
                Сообщить("Обработан документ:"+""+мДокумент);
            иначе
                ПоместитьСледующийТЗ();
            КонецЕсли;    
        иначе  Сообщить("Документ: "+" "+ мДокумент + " "+" "+" в текущей базе не обнаружен");
            ПоместитьСледующийТЗ() ;
        КонецЕсли;
        ПоместитьСледующийТЗ() ;
       
    КонецПроцедуры
    
  2. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Вообще в УПП есть регистр сведений Соответвие подразделений и подразделений организаций.
    он у вас должен быть заполнен и на основании его уже тогда пихайте.
    А у справочника ДолжностиОрганизаций есть реквизит Должность - которая ссылается на справочник Должности.

    Таки образом в УПП Подразделения соответвуют подразделениям организации - должности - должностям организаций
    19yellow92 нравится это.
  3. TopicStarter Overlay
    19yellow92
    Offline

    19yellow92

    Регистрация:
    29 мар 2016
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    1
    Да, регистр сведений заполнен.
    А у справочника должности организаций я, реквизита должность, не нашла.
    что Вы предлагаете с этим регистром сделать? )
  4. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    А вы где реквизит смотрели в конфигураторе или в пользоватлеьском режиме. В пользовательском - он как Описание должности при наборе персонала.

    Перенести этот регистр во вторую базу. у вас же в источнике есть - переностие в приемник. а уже в коде ищите соотвевия по этим регистрам и справочникам.
    19yellow92 нравится это.
  5. TopicStarter Overlay
    19yellow92
    Offline

    19yellow92

    Регистрация:
    29 мар 2016
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    1
    Не нашла я этот реквизит ни в каком режиме.
    Этот регистр есть и в базе приемнике. Я и спрашиваю про то, как можно в коде прописать соответствия?
  6. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Рисунок смотрите

    Смотрите все эти регистры и ссылки в справочниках если решать задачу глобально.

    Если решать е тольк в рамках вашей задачи то я проблемы то не вижу
    Выгрузили у себя Работников Организации беретет примения для каждого работниа организации поиском по коду в приемнике в справочниках и в одном и другом находите нужные элементы по коду то они везде совпадают и все

    Вложения:

    • 1111.jpg
      1111.jpg
      Размер файла:
      40,1 КБ
      Просмотров:
      2
    19yellow92 нравится это.
  7. TopicStarter Overlay
    19yellow92
    Offline

    19yellow92

    Регистрация:
    29 мар 2016
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    1
    У меня база для Казахстана. Там такого нет. Я это не учла.
    "беретет примения для каждого работниа организации" - как это понять?
  8. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Вы получили набор записей РС Работники организаций из источника у Вас там ДолжностьОрганизации И(приемник) и Подразделение организации И

    В чем проблема в цикле пробежаться и по коду найти Должнсти ОрганизацииП(приемник) и Должность П по коду ДолжностиОрганизацииИ раз Вы говорите что все совпадает

    Аналогично для подразделений
    19yellow92 нравится это.
  9. TopicStarter Overlay
    19yellow92
    Offline

    19yellow92

    Регистрация:
    29 мар 2016
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    1
    :) я запуталась в Ваших "П" "И" "приемник"
    )))) да, опыта мало
  10. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    И -"Источник" база
    П-"Приемник" база

    Соответвенно ДолжностиОрганизацийИ- это поле из базы источника
    Соответвенно ДолжностиОрганизацийП- это поле из базы приемника


    Если образно то

    Для каждого стр из НаборЗаписейИсточник Цикл

    стрНабораДобавления=НаборЗаписейПриемник.Добавить();

    ////заполняем записи
    стрНабораДобавления.ДолжностьОрганизацииП=СомСоединение.Справочники.ДолжностиОрганизаций.НайтипоКоду(стр.ДолжностиОрганизацийИ.Код);

    КонецЦикла
    19yellow92 нравится это.
  11. TopicStarter Overlay
    19yellow92
    Offline

    19yellow92

    Регистрация:
    29 мар 2016
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    1
    ПОдскажите, пожалуйста. А что подразумевается под стрНабораДобавления? Тоже не понятно...
  12. TopicStarter Overlay
    19yellow92
    Offline

    19yellow92

    Регистрация:
    29 мар 2016
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    1
    ПОдскажите, пожалуйста. А что подразумевается под стрНабораДобавления? Тоже не понятно.
  13. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Ну Вы же когда будете добавлять движения к документу Вы же набор записей будете создавать и у записей этого набора будет регистратор нужный документ

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