powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Соответствия регистров
7 сообщений из 7, страница 1 из 1
Соответствия регистров
    #39218620
nastena_r_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем снова здравствуйте. За ранее прошу не нервничать по поводу недопонимания. Опыта мало.
Есть 2 базы УПП. В источнике заполняется Р.С. Работники организаций, данные этого регистра необходимо выгрузить, и создать движения по уже существующим документам в базе приемнике, но только с Р..С. Работники. В документах прием, увольнение, кадровое перемещение организаций добавлена возможность проведения по Р.С. Работники
Обработка с ком соединением есть, ее необходимо доработать. В первой процедуре (ЗагрузитьВсеНажатие) создаю набор записей со всеми регистраторами из Р.С. Работники организаций. Во вторую процедуру (СравнитьИсточникПриемникТЗ) Необходимо прописать соответсвие некоторых реквизитов, которые отличаются в этих двух регистрах. Это Подразделения и Должности (в Работниках организаций используются справочники с окончанием "Организаций", а в Р.С. Работники, соответственно без данных окончаний). Данные в этих справочниках одинаковы по коду и наименованию. ВОПРОС: Как можно задать соответствия для этих двух реквизитов? И добавить в базу уже в другой регистр движения. (Вопрос объемный, за любую помощь заранее спасибо ))))


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
Процедура  ЗагрузитьВсеНажатие(Элемент)
   
    Сообщить("Обработка запущена: "+ТекущаяДата()+", пожалуйста, дождитесь окончания. " );
                
   
    ТаблицаРегистраторовКОМ.Очистить();
    ИндексТаблицаРегистраторовКОМ = 0;
   
    База = Неопределено;
    Соединение = Неопределено;
   
    Если Не ПроверкаПодключения(База, Соединение) Тогда
        Возврат;
    КонецЕсли;
   
    Попытка
        ЗапросКОМ = Соединение.NewObject("Запрос");
        ЗапросКОМ.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    РаботникиОрганизаций.Регистратор.Ссылка КАК Регистратор
        |ИЗ
        |    РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
        |ГДЕ
        |    РаботникиОрганизаций.Период МЕЖДУ &нПериода И &кПериода
        |
        |УПОРЯДОЧИТЬ ПО
        |    РаботникиОрганизаций.Регистратор.Дата";
       
        ЗапросКОМ.УстановитьПараметр("нПериода", ДатаНачало);
        ЗапросКОМ.УстановитьПараметр("кПериода",ДатаОкончание);
       
        ВыборкаКОМ = ЗапросКОМ.Выполнить().выбрать();        
            
        Пока ВыборкаКОМ.Следующий() Цикл
            НовыйРегистратор = ТаблицаРегистраторовКОМ.Добавить();
            НовыйРегистратор.Ссылка = ВыборкаКОМ.Регистратор;
        КонецЦикла;
       
    Исключение
        ТекстОшибки = СформироватьТекстСообщения(ОписаниеОшибки());
        Сообщить (ТекстОшибки);
        Предупреждение (ТекстОшибки);
        Отказ = Истина;
        Возврат
    КонецПопытки;   
   
    //если регистраторов больше 0
    Если ТаблицаРегистраторовКОМ.Количество() > 0 Тогда
       
        СравнитьИсточникПриемникТЗ();
    Иначе
        Сообщить("Не обнаружено объектов для записи!");
    КонецЕсли;
    Сообщить("Обработка завершена:  "+ТекущаяДата());   
   
   
КонецПроцедуры

Процедура  СравнитьИсточникПриемникТЗ()  //Набор,Регистратор
   
    Регистратор = ТаблицаРегистраторовКОМ[ИндексТаблицаРегистраторовКОМ].Ссылка;       
   
    Набор = Регистратор.Получитьобъект().Движения.РаботникиОрганизаций;
    Набор.Прочитать();
                
    ТаблицаНаборовКОМ=ЗначениеИЗСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(Набор.Выгрузить()));
   
    // набор движений в базе приемнике //работает
    Запрос = Новый Запрос;
    Запрос.Текст =
   
// текст запроса

    Запрос.УстановитьПараметр("кПериода", ДатаОкончание);
    Запрос.УстановитьПараметр("нПериода", ДатаНачало);
    Запрос.УстановитьПараметр("РегистраторКОМ", ЗначениеИзСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(Регистратор)));
   
    Выборка= Запрос.Выполнить().Выбрать();
   
    Пока Выборка.Следующий() Цикл
        мДокумент=Выборка.Регистратор;
        Набор=Выборка.Регистратор.Получитьобъект().Движения.Налоговый;      
        Набор.Прочитать();
        ТаблицаНаборов=Набор.Выгрузить();
    КонецЦикла;   
   
   
    Если мДокумент = ЗначениеИЗСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(ТаблицаРегистраторовКОМ[ИндексТаблицаРегистраторовКОМ].Ссылка)) Тогда
        //проверка на идентичность, записываем наборы различных
        ПолностьюИдентичны = СравнитьТаблицыЗначений(ТаблицаНаборовКОМ,ТаблицаНаборов);
        Если ПолностьюИдентичны <> истина  тогда
            Набор.Отбор.Регистратор.Установить(мДокумент);
            Набор.Загрузить(ТаблицаНаборовКОМ);        
            Набор.Записать();
            Сообщить("Обработан документ:"+""+мДокумент);
        иначе
            ПоместитьСледующийТЗ();
        КонецЕсли;    
    иначе  Сообщить("Документ: "+" "+ мДокумент + " "+" "+" в текущей базе не обнаружен");
        ПоместитьСледующийТЗ() ;
    КонецЕсли;
    ПоместитьСледующийТЗ() ;
   
КонецПроцедуры
...
Рейтинг: 0 / 0
Соответствия регистров
    #39218872
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если подобные задачи возникают часто лучше изучить инструмент "Конвертация данных 2.0"
...
Рейтинг: 0 / 0
Соответствия регистров
    #39218923
nastena_r_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При конвертации можно будет сопоставить реквизиты ПодразделенияОрганизаций, ДолжностиОрганизаций с Подразделениями и должностями
...
Рейтинг: 0 / 0
Соответствия регистров
    #39218937
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если у них одинаковые реквизиты есть для поиска или вообще id одинаковые
...
Рейтинг: 0 / 0
Соответствия регистров
    #39218938
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если ни того ни другого - нужна третья табличка где будет сопоставление объектов обмена - подразделение организации = подразделение
...
Рейтинг: 0 / 0
Соответствия регистров
    #39219068
nastena_r_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Последний выдох ГПЖ,
Есть одинаковые реквизиты. Код и наименование.
Я же про это и спрашиваю, как их можно программно сопоставить? ))
...
Рейтинг: 0 / 0
Соответствия регистров
    #39219306
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nastena_r_vПоследний выдох ГПЖ,
Есть одинаковые реквизиты. Код и наименование.
Я же про это и спрашиваю, как их можно программно сопоставить? ))

НайтиПоКоду(), НайтиПоНаименованию()

купите или скачайте http://www.labirint.ru/books/285228/
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Соответствия регистров
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]