|
|
|
Конвертация данных и перенос движений документов | ☑ | ||
|---|---|---|---|---|
|
0
Terras
09.10.08
✎
17:44
|
Товарищи, подскажите кто знает...При выгрузке из источника (в обработчике ПКО конкретного документа) я определенным образом обрабатываю движения (документ двигается по регистрам накопления и расчета)... дальше выгружаю обработанные движения через ВыгрузитьПоПравилу(), правила формируются, из источника выгружается все правильно, НО при загрузке в приемник возникает ошибка: "Получение элемента по индексу для значения не определено". Ругается на перенос свойств регистра накопления. Если кто переносил движения конвертацией с предварительными их преобразованиями, поделитесь пожалуйста опытом, может я что не так делаю... заранее благодарна всем откликнувшемся:)...
|
|||
|
1
ТелепатБот
гуру
09.10.08
✎
17:44
|
||||
|
2
Defender aka LINN
09.10.08
✎
17:50
|
(0) "дальше выгружаю обработанные движения через ВыгрузитьПоПравилу()" - нафига?
|
|||
|
3
Terras
09.10.08
✎
17:56
|
(2) чтобы в файл выгрузки попали преобразованные движения а не те которые источнике.
|
|||
|
4
Defender aka LINN
09.10.08
✎
17:59
|
(3) Удалять гланды можно и через задний проход, но есть и более традиционные пути.
|
|||
|
5
Terras
09.10.08
✎
18:01
|
аммм... я буду очень тебе признательна если подскажешь как сделать лучше...:)
|
|||
|
6
bahmet
09.10.08
✎
18:07
|
(5)Сделай загрузку конф с движениями...добавишь новые группы свойств с названием регистров и внутри них нужные свойства...вот и усё
|
|||
|
7
Terras
09.10.08
✎
18:14
|
(6)Конфы загружены уже с движениями... Группы свойств с названиями регистров и нужные свойства тоже уже есть ...НО таким макаром переносятся все движения как они есть в базе источнике, а мне нужно их перенести в приемник измененными... если конкретней, то свернуть по определенному измерению кот есть в источнике, но которого нет в приемнике... из за этого вся и заморочка...
|
|||
|
8
Eriksson
09.10.08
✎
18:31
|
А конфа1 и конфа2 какие собственно?
одинаковые? |
|||
|
9
MRAK
09.10.08
✎
22:01
|
а если во 2-й коные кто-нить док перепроведет? будет здравствуй ж. Новый год?
|
|||
|
10
Barmaglot
09.10.08
✎
22:08
|
(0) Что за конфигурации?
|
|||
|
11
Terras
09.10.08
✎
22:13
|
(8) обе конфы - УПП, одна правленная, другая типовая...
|
|||
|
12
Terras
09.10.08
✎
22:15
|
(9) перепроводить никто не будет... т.к. этот обмен рассчитан на случай когда релиз меняется и чтобы каждый раз не обновлять правленную, делается перенос в типовую...
|
|||
|
13
Barmaglot
09.10.08
✎
22:44
|
(12) Ну и сворачивай в обработчике "Поле загрузки".
А если в исходной перепроведут? |
|||
|
14
Terras
09.10.08
✎
22:53
|
(13) после загрузки тоже пробовала... движения не видит... т.е. пишу допустим:
Для каждого Движение из Объект.Движения цикл Движение.Прочитать(); Сообщить(Движение.Количество()); КонецЦикла; Говорит что движений нет... хотя по факту есть... >А если в исходной перепроведут? Эта операция переноса рассчитана только на тот случай когда отчетность регламентированная сильно поменялась и типовой в новом релизе она есть а в старом в правленной соответственно старая отчетность, а сдать отчеты надо... |
|||
|
15
Barmaglot
09.10.08
✎
23:03
|
(14) В приемнике без проведения движений может не быть.
|
|||
|
16
Terras
09.10.08
✎
23:22
|
(15) вообще если ничего не писать в обработчиках то движения переносятся...НО все те которые в источнике, а нужно преобразованные...
|
|||
|
17
Eriksson
10.10.08
✎
10:27
|
Я переносил движения из УТ в ее же саму путем создания в первой базе-источнике документов "Корректировка записей регистра" (обработка движений производилась как раз в этот момент). Затем - перенос документов. Справочники загружались ранее отдельно.
|
|||
|
18
Eriksson
10.10.08
✎
10:28
|
Для взаиморасчетов вооюще отдельный документ "Ввод остатков по взаиморасчетам".
|
|||
|
19
Barmaglot
10.10.08
✎
10:32
|
(16) А что во что надо преобразовывать?
|
|||
|
20
Terras
10.10.08
✎
14:36
|
(19) К примеру есть документ "НачислениеЗарплатыОаботникамОрганизиций" одно из движений документа по регистру расчета "ОсновныеНачисленияРаботникамОрганизаций" в источнике в этом регистре есть доп измерение, в приемнике сообтветственно нет, нужно свернуть движения этого дока по этому измерению.
|
|||
|
21
Terras
10.10.08
✎
14:40
|
Все... доперло.. долгим путем проб и ошибок таки получилось свернуть.
В ПКО при выгрузке пишу: Объект = Источник.ПолучитьОбъект(); Для каждого Движение из Объект.Движения цикл ИмяРегистра = Параметры.ИменаРегистровДляЗаменыДвижений.НайтиПоЗначению(Движение.Метаданные().Имя); Если ИмяРегистра<>неопределено тогда Движение.Прочитать(); //Определим тип движения регистра ИмяРегистра = ""; Если Найти(Строка(ТипЗнч(Движение)),"Регистр накопления")>0 Тогда ИмяРегистра = "РегистрНакопления"; ИначеЕсли Найти(Строка(ТипЗнч(Движение)),"Регистр расчета")>0 Тогда ИмяРегистра = "РегистрРасчета"; ИначеЕсли Найти(Строка(ТипЗнч(Движение)),"Регистр сведений")>0 Тогда ИмяРегистра = "РегистрСведений"; ИначеЕсли Найти(Строка(ТипЗнч(Движение)),"Регистр бухгалтерии")>0 Тогда ИмяРегистра = "РегистрБухгалтерии"; КонецЕсли; //Переменная определяет признак подчиннености регистратору ЕстьРегистратор = Ложь; //Формируем строки группировки и ссуммирования ТаблицаДвижения = Движение.Выгрузить(); СтрокаГруппировки = ""; СтрокаСуммирования = ""; Для каждого колонка из ТаблицаДвижения.Колонки цикл ИскомаяКолонка = неопределено; ЕстьВИзмерениях = Движение.Метаданные().Измерения.Найти(Колонка.Имя); Если ЕстьВИзмерениях <> неопределено тогда ИскомаяКолонка = ЕстьВИзмерениях; КонецЕсли; ЕстьВРесурсах = Движение.Метаданные().Ресурсы.Найти(Колонка.Имя); Если ЕстьВРесурсах <> неопределено тогда ИскомаяКолонка = ЕстьВРесурсах; КонецЕсли; ЕстьВРеквизитах = Движение.Метаданные().Реквизиты.Найти(Колонка.Имя); Если ЕстьВРеквизитах <> неопределено тогда ИскомаяКолонка = ЕстьВРеквизитах; КонецЕсли; Если ИскомаяКолонка = неопределено тогда Если Колонка.Имя<>"НомерСтроки" тогда СтрокаГруппировки = СтрокаГруппировки+" |"+Движение.Метаданные().Имя+"."+Колонка.Имя+","; КонецЕсли; Если Колонка.Имя<>"Регистратор" тогда ЕстьРегистратор = Истина; КонецЕсли; КонецЕсли; КонецЦикла; Для каждого Измерение из Движение.Метаданные().Измерения цикл Если Измерение.Имя = "ТочкаРД" тогда Продолжить; КонецЕсли; СтрокаГруппировки = СтрокаГруппировки+" |"+Движение.Метаданные().Имя+"."+Измерение.Имя+","; КонецЦикла; Для каждого Реквизит из Движение.Метаданные().Реквизиты цикл СтрокаГруппировки = СтрокаГруппировки+" |"+Движение.Метаданные().Имя+"."+Реквизит.Имя+","; КонецЦикла; СтрокаГруппировки = Сред(СтрокаГруппировки,1,СтрДлина(СтрокаГруппировки)-1); Для каждого Ресурс из Движение.Метаданные().Ресурсы цикл СтрокаСуммирования = СтрокаСуммирования+" |СУММА("+Движение.Метаданные().Имя+"."+Ресурс.Имя+") КАК "+Ресурс.Имя+","; КонецЦикла; СтрокаСуммирования = Сред(СтрокаСуммирования,1,СтрДлина(СтрокаСуммирования)-1); //Сформируем текст запроса Текст = "ВЫБРАТЬ |"+СтрокаСуммирования+", |"+СтрокаГруппировки+" |ИЗ "+ИмяРегистра+"."+Движение.Метаданные().Имя+" как "+Движение.Метаданные().Имя+""; Если ЕстьРегистратор тогда Текст = Текст + " |ГДЕ "+Движение.Метаданные().Имя+".Регистратор = &Объект"; КонецЕсли; Если СтрокаГруппировки<>"" Тогда Текст = Текст + " |СГРУППИРОВАТЬ ПО |"+СтрокаГруппировки; КонецЕсли; Запрос = новый запрос; Запрос.Текст = Текст; Запрос.УстановитьПараметр("Объект",Объект.Ссылка); ТЗ = Запрос.Выполнить().Выгрузить(); Если ТЗ.Количество()>0 тогда Движение.Загрузить(ТЗ); Движение.Записать(); КонецЕсли; КонецЕсли; КонецЦикла; |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |