|
Перенос данных по com соединению | ☑ | ||
---|---|---|---|---|
0
anikulnikova
17.04.16
✎
10:18
|
Всем здравствуйте. Задача такая: Имеется 2 идентичные базы УПП. Необходимо перенести движения с Р.С.Работники организаций в Р.С.Работники (данный регистр не заполнялся, он пустой). Без создания документов. Есть аналогичная обработка, с переносом аналитики вроде.
Выгрузить набор регистраторов с базы источника вроде получилось. Загвоздка в том, чтоб загрузить теперь данные в приемник. Т.к. в данных регистрах есть такие реквизиты, как подразделения и должности. в которых используются 2 разных справочника: в первом Подразделения организаций и Должности организаций, во втором Подразделения и Должности. Данные справочники можно сравнить по коду и наименованию. Эти данные у них одинаковые. Только как можно это сделать??? Процедура по выгрузке регистраторов из исочника: Процедура ЗагрузитьДанныеВТаблицы(Кнопка) ТаблицаРегистраторовКОМ.Очистить();//загрузка наборов движений РСРаботникиОрганизации ИндексТаблицаРегистраторовКОМ = 0; База = Неопределено; Соединение = Неопределено; Если Не ПроверкаПодключения(База, Соединение) Тогда Возврат; КонецЕсли; Попытка ЗапросКОМ = Соединение.NewObject("Запрос"); ЗапросКОМ.Текст = "ВЫБРАТЬ | РаботникиОрганизаций.Регистратор.Ссылка КАК Регистратор, | РаботникиОрганизаций.Регистратор.Представление КАК Представление |ИЗ | РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций |ГДЕ | РаботникиОрганизаций.Период МЕЖДУ &ДатаНачала И &ДатаОкончания | |УПОРЯДОЧИТЬ ПО | РаботникиОрганизаций.Регистратор.Дата |АВТОУПОРЯДОЧИВАНИЕ"; ЗапросКОМ.УстановитьПараметр("ДатаНачала", ДатаНачало); ЗапросКОМ.УстановитьПараметр("ДатаОкончания", ДатаОкончание); ВыборкаКОМ = ЗапросКОМ.Выполнить().выбрать(); Пока ВыборкаКОМ.Следующий() Цикл НовыйРегистратор = ТаблицаРегистраторовКОМ.Добавить(); НовыйРегистратор.Ссылка = ВыборкаКОМ.Регистратор; КонецЦикла; Исключение ТекстОшибки = СформироватьТекстСообщения(ОписаниеОшибки()); Сообщить (ТекстОшибки); Предупреждение (ТекстОшибки); Отказ = Истина; Возврат КонецПопытки; Если ТаблицаРегистраторовКОМ.Количество() > 0 Тогда СравнитьИсточникПриемник(); ЭлементыФормы.Пропустить.Доступность = Истина; ЭлементыФормы.Записать.Доступность = Истина; Иначе Предупреждение ("Не обнаружено объектов для записи!"); ЭлементыФормы.Пропустить.Доступность = Ложь; ЭлементыФормы.Записать.Доступность = Ложь; КонецЕсли; КонецПроцедуры Остальные процедуры взяты из похожей обработки, они не изменены, если необходимы просто для примера и ознакомления: Процедура СравнитьИсточникПриемник() Регистратор = ТаблицаРегистраторовКОМ[ИндексТаблицаРегистраторовКОМ].Ссылка; Представление = ТаблицаРегистраторовКОМ[ИндексТаблицаРегистраторовКОМ].Представление; Набор = Регистратор.Получитьобъект().Движения.Налоговый; Набор.Прочитать(); ЭлементыФормы.ТаблицаДвиженийКОМ.Значение=ЗначениеИЗСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(Набор.Выгрузить())); ЭлементыФормы.ТаблицаДвиженийКОМ.СоздатьКолонки(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | НалоговыйДвиженияССубконто.СчетДт, | НалоговыйДвиженияССубконто.СчетКт, | НалоговыйДвиженияССубконто.Регистратор.Ссылка КАК Регистратор |ИЗ | РегистрБухгалтерии.Налоговый.ДвиженияССубконто(&нПериода, &кПериода, Регистратор = &РегистраторКОМ, , ) КАК НалоговыйДвиженияССубконто"; Запрос.УстановитьПараметр("кПериода", ДатаОкончание); Запрос.УстановитьПараметр("нПериода", ДатаНачало); Запрос.УстановитьПараметр("РегистраторКОМ", ЗначениеИзСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(Регистратор))); Выборка= Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл мДокумент=Выборка.Регистратор; мДокументКОМ= ЗначениеИзСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(Представление)); ДокументКОМ= ЗначениеИзСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(Представление)); Сообщить( Выборка.Регистратор); Сообщить( "в удален.базе"+мДокументКОМ) ; Набор = Выборка.Регистратор.Получитьобъект().Движения.Налоговый; Набор.Прочитать(); ЭлементыФормы.ТаблицаДвижений.Значение=Набор.Выгрузить(); ЭлементыФормы.ТаблицаДвижений.СоздатьКолонки(); КонецЦикла; ВизуальноеСравнение (); КонецПроцедурЫ Процедура загружает данные в приемник Процедура ЗагрузитьВсеНажатие(Элемент) Сообщить("Обработка запущена: "+ТекущаяДата()+", пожалуйста, дождитесь окончания. " ); ТаблицаРегистраторовКОМ.Очистить(); ИндексТаблицаРегистраторовКОМ = 0; База = Неопределено; Соединение = Неопределено; Если Не ПроверкаПодключения(База, Соединение) Тогда Возврат; КонецЕсли; Попытка ЗапросКОМ = Соединение.NewObject("Запрос"); ЗапросКОМ.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | НалоговыйДвиженияССубконто.Регистратор.Ссылка КАК Регистратор |ИЗ | РегистрБухгалтерии.Налоговый.ДвиженияССубконто( | &нПериода, | &кПериода, | СчетДт.Ссылка = &СчетОтбора | ИЛИ СчетКт.Ссылка = &СчетОтбора, | , | ) КАК НалоговыйДвиженияССубконто | |УПОРЯДОЧИТЬ ПО | НалоговыйДвиженияССубконто.Регистратор.Дата"; ЗапросКОМ.УстановитьПараметр("СчетОтбора",Соединение.ПланыСчетов.Налоговый.НайтиПоКоду(Счет.Код)); ЗапросКОМ.УстановитьПараметр("нПериода", ДатаНачало); ЗапросКОМ.УстановитьПараметр("кПериода",ДатаОкончание); ВыборкаКОМ = ЗапросКОМ.Выполнить().выбрать(); Пока ВыборкаКОМ.Следующий() Цикл НовыйРегистратор = ТаблицаРегистраторовКОМ.Добавить(); НовыйРегистратор.Ссылка = ВыборкаКОМ.Регистратор; КонецЦикла; Исключение ТекстОшибки = СформироватьТекстСообщения(ОписаниеОшибки()); Сообщить (ТекстОшибки); Предупреждение (ТекстОшибки); Отказ = Истина; Возврат КонецПопытки; //если регистраторов больше 0 Если ТаблицаРегистраторовКОМ.Количество() > 0 Тогда СравнитьИсточникПриемникТЗ(); Иначе Сообщить("Не обнаружено объектов для записи!"); КонецЕсли; Сообщить("Обработка завершена: "+ТекущаяДата()); КонецПроцедуры |
|||
1
Звездец
17.04.16
✎
10:21
|
А зачем все это? 2 базы идентичные- значит используй обработку обмена xml. В этом случае даже правила не нужны
|
|||
2
Tarzan_Pasha
17.04.16
✎
10:59
|
(1)+ адский труд заменяется 5 минутами )
|
|||
3
anikulnikova
17.04.16
✎
20:30
|
(1) как можно записи регистра перенести? при этом учесть, что есть разные реквизиты в этих регистрах, но данные можно сравнить по наименованию и коду. Я думаю, что этот обмен не очень подойдет
|
|||
4
hhhh
17.04.16
✎
20:51
|
(3) как разные реквизиты? Ты же написал: две идентичные базы УПП.
|
|||
5
Звездец
17.04.16
✎
21:05
|
И вообще движения лучше не переносить, их сделают перенесённые документы
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |