|
Соответствия регистров | ☑ | ||
---|---|---|---|---|
0
anikulnikova
18.04.16
✎
21:05
|
Всем снова здравствуйте. За ранее прошу не нервничать по поводу недопонимания. Опыта мало.
Есть 2 базы УПП. В источнике заполняется Р.С. Работники организаций, данные этого регистра необходимо выгрузить, и создать движения по уже существующим документам в базе приемнике, но только с Р..С. Работники. В документах прием, увольнение, кадровое перемещение организаций добавлена возможность проведения по Р.С. Работники Обработка с ком соединением есть, ее необходимо доработать. В первой процедуре (ЗагрузитьВсеНажатие) создаю набор записей со всеми регистраторами из Р.С. Работники организаций. Во вторую процедуру (СравнитьИсточникПриемникТЗ) Необходимо прописать соответсвие некоторых реквизитов, которые отличаются в этих двух регистрах. Это Подразделения и Должности (в Работниках организаций используются справочники с окончанием "Организаций", а в Р.С. Работники, соответственно без данных окончаний). Данные в этих справочниках одинаковы по коду и наименованию. ВОПРОС: Как можно задать соответствия для этих двух реквизитов? И добавить в базу уже в другой регистр движения. (Вопрос объемный, за любую помощь заранее спасибо )))) Процедура ЗагрузитьВсеНажатие(Элемент) Сообщить("Обработка запущена: "+ТекущаяДата()+", пожалуйста, дождитесь окончания. " ); ТаблицаРегистраторовКОМ.Очистить(); ИндексТаблицаРегистраторовКОМ = 0; База = Неопределено; Соединение = Неопределено; Если Не ПроверкаПодключения(База, Соединение) Тогда Возврат; КонецЕсли; Попытка ЗапросКОМ = Соединение.NewObject("Запрос"); ЗапросКОМ.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | РаботникиОрганизаций.Регистратор.Ссылка КАК Регистратор |ИЗ | РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций |ГДЕ | РаботникиОрганизаций.Период МЕЖДУ &нПериода И &кПериода | |УПОРЯДОЧИТЬ ПО | РаботникиОрганизаций.Регистратор.Дата"; ЗапросКОМ.УстановитьПараметр("нПериода", ДатаНачало); ЗапросКОМ.УстановитьПараметр("кПериода",ДатаОкончание); ВыборкаКОМ = ЗапросКОМ.Выполнить().выбрать(); Пока ВыборкаКОМ.Следующий() Цикл НовыйРегистратор = ТаблицаРегистраторовКОМ.Добавить(); НовыйРегистратор.Ссылка = ВыборкаКОМ.Регистратор; КонецЦикла; Исключение ТекстОшибки = СформироватьТекстСообщения(ОписаниеОшибки()); Сообщить (ТекстОшибки); Предупреждение (ТекстОшибки); Отказ = Истина; Возврат КонецПопытки; //если регистраторов больше 0 Если ТаблицаРегистраторовКОМ.Количество() > 0 Тогда СравнитьИсточникПриемникТЗ(); Иначе Сообщить("Не обнаружено объектов для записи!"); КонецЕсли; Сообщить("Обработка завершена: "+ТекущаяДата()); КонецПроцедуры Процедура СравнитьИсточникПриемникТЗ() //Набор,Регистратор Регистратор = ТаблицаРегистраторовКОМ[ИндексТаблицаРегистраторовКОМ].Ссылка; Набор = Регистратор.Получитьобъект().Движения.РаботникиОрганизаций; Набор.Прочитать(); ТаблицаНаборовКОМ=ЗначениеИЗСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(Набор.Выгрузить())); // набор движений в базе приемнике //работает Запрос = Новый Запрос; Запрос.Текст = // текст запроса Запрос.УстановитьПараметр("кПериода", ДатаОкончание); Запрос.УстановитьПараметр("нПериода", ДатаНачало); Запрос.УстановитьПараметр("РегистраторКОМ", ЗначениеИзСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(Регистратор))); Выборка= Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл мДокумент=Выборка.Регистратор; Набор=Выборка.Регистратор.Получитьобъект().Движения.Налоговый; Набор.Прочитать(); ТаблицаНаборов=Набор.Выгрузить(); КонецЦикла; Если мДокумент = ЗначениеИЗСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(ТаблицаРегистраторовКОМ[ИндексТаблицаРегистраторовКОМ].Ссылка)) Тогда //проверка на идентичность, записываем наборы различных ПолностьюИдентичны = СравнитьТаблицыЗначений(ТаблицаНаборовКОМ,ТаблицаНаборов); Если ПолностьюИдентичны <> истина тогда Набор.Отбор.Регистратор.Установить(мДокумент); Набор.Загрузить(ТаблицаНаборовКОМ); Набор.Записать(); Сообщить("Обработан документ:"+""+мДокумент); иначе ПоместитьСледующийТЗ(); КонецЕсли; иначе Сообщить("Документ: "+" "+ мДокумент + " "+" "+" в текущей базе не обнаружен"); ПоместитьСледующийТЗ() ; КонецЕсли; ПоместитьСледующийТЗ() ; КонецПроцедуры |
|||
1
Чайник Рассела
18.04.16
✎
22:28
|
Зачем плодить миллион тем
Перенос данных по com соединению Получить регистратор в параметрах запроса |
|||
2
Fram
18.04.16
✎
22:38
|
(0) Написать функцию, которая будет заменять наименования регистров после преобразования ЗначениеВСтрокуВнутр и вызывать ее вместо ЗначениеВСтрокуВнутр
|
|||
3
anikulnikova
19.04.16
✎
06:40
|
(2) как это сделать, с учетом, что а регистрах есть различные реквизиты. Это я про Подразделения и Должности
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |