|
Конвертация данных: выгрузка документа "ОперацияБух" с проводками | ☑ | ||
---|---|---|---|---|
0
Mr_Best
10.11.16
✎
17:16
|
Доброго дня Коллеги!
Задача: перенести документ "ОперацияБух" из БП 2.0.65.45 в БП 3.0.44.140 Имеем: Конвертация данных, редакция 2.1 (2.1.8.1) и <ВерсияФормата>2.01</ВерсияФормата> Что сделал: выгрузил метаданные с установленным флагом "Не выгружать движения документов" и снятым флагом "Не выгружать регистры бухгалтерии" в обоих базах. Создал правила, включил один документ "ОперацияБух", конвертация предложила по ссылкам создать правила автоматически, я согласился. Создал единственное правило выгрузки для документа "ОперацияБух". Выгрузил, проверил, движения не выгрузились. Логично, подумал я и повторил операцию, но на этот раз я установил дополнительно флаг "Выгружать движения только у документов без проведения", а точнее с запрещенным проведением. Посмотрел в конфигурацию, у документа "ОперацияБух" режим проведения установлен в: Запретить. Наверное мой случай (?) снова подумал я и создал правила, и повторил выгрузку, и снова болт. В поисках дальнейшего пути, я выбрал три направления: 1. Найти причину, из-за которой не выгружаются движения автоматически (так как описано выше) 2. Передать данные в параметр 3. Записать данные непосредственно в узел 4. Использовать функции ВыгрузитьПоПравилу или ВыгрузитьРегистр Так как мне необходимо не сломать механизм регистрации изменений, я решил воспользоваться функцией ВыгрузитьРегистр. Логика работы функции проста, если ошибся, поправьте. Мы в некотором произвольном алгоритме формируем данные и выгружаем их по правилу, например "ХозрасчетныйЗапись". Автоматически правило не создалось, поэтому я его создал в ручную с именем "ХозрасчетныйЗапись". Конвертация предложила автоматически создать правила для свойств и значений, я согласился. Правило выгрузки я не делал. Теперь есть правило, осталось только отобрать записи по нужным мне регистраторам и по очереди передать в функцию "ВыгрузитьРегистр". Я выбрал событие ПКО ОперацияБух "После выгрузки в файл" и вставил: Запрос = Новый Запрос; Запрос.УстановитьПараметр("Регистратор", Объект.Ссылка); Запрос.Текст = "ВЫБРАТЬ | Хозрасчетный.Период, | Хозрасчетный.Регистратор, | Хозрасчетный.Активность, | Хозрасчетный.СчетДт, | Хозрасчетный.СчетКт, | Хозрасчетный.Организация, | Хозрасчетный.ВалютаДт, | Хозрасчетный.ВалютаКт, | Хозрасчетный.ПодразделениеДт, | Хозрасчетный.ПодразделениеКт, | Хозрасчетный.Сумма, | Хозрасчетный.ВалютнаяСуммаДт, | Хозрасчетный.ВалютнаяСуммаКт, | Хозрасчетный.КоличествоДт, | Хозрасчетный.КоличествоКт, | Хозрасчетный.СуммаНУДт, | Хозрасчетный.СуммаНУКт, | Хозрасчетный.СуммаПРДт, | Хозрасчетный.СуммаПРКт, | Хозрасчетный.СуммаВРДт, | Хозрасчетный.СуммаВРКт, | Хозрасчетный.Содержание, | Хозрасчетный.НеКорректироватьСтоимостьАвтоматически |ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный |ГДЕ | Хозрасчетный.Регистратор = &Регистратор"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ВыгрузитьРегистр(Выборка,,,,"ХозрасчетныйЗапись"); КонецЦикла; А в ПКО "ХозрасчетныйЗапись" вот такие поля: Активность ВалютаДт ВалютаКт ВалютнаяСуммаДт ВалютнаяСуммаКт КоличествоДт КоличествоКт НеКорректироватьСтоимостьАвтоматически Организация Период ПодразделениеДт ПодразделениеКт Регистратор Содержание СубконтоДт СубконтоКт Сумма СуммаВРДт СуммаВРКт СуммаНУДт СуммаНУКт СуммаПРДт СуммаПРКт СчетДт СчетКт Конечно же я получил ошибку, и конечно же связанную с субконто: Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(5995)}: Ошибка записи объекта ТипОбъекта = Операция Объект = Операция 00000000560 от 31.10.2016 10:58:16 ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Запись не верна! Вид субконто "Движения целевых средств" не доступен для данной записи! (Регистр бухгалтерии: Журнал проводок (бухгалтерский и налоговый учет); Номер строки: 2) ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(5988) КодСообщения = 26 Т.е. в запросе не хватает СубконтоДт, СубконтоКт. Вот тут я и завис. Как хранятся данные в регистре бухгалтерии? Субконто в отдельной таблице? Тогда как в правилах их перенести ? |
|||
1
Господин ПЖ
10.11.16
✎
17:17
|
читать книжку по кд. там целая глава и код
в демобазе тоже вроде пример есть |
|||
2
vicof
10.11.16
✎
17:18
|
"Т.е. в запросе не хватает СубконтоДт, СубконтоКт"
"Вид субконто "Движения целевых средств" не доступен для данной записи!" как-то не сочетается |
|||
3
Cyberhawk
10.11.16
✎
17:19
|
В ПКО должны быть ТЧ-движения
|
|||
4
Cyberhawk
10.11.16
✎
17:19
|
А раз ты структуру метаданных загружал в КД без этих ТЧ-движений, то и обломись
|
|||
5
Mr_Best
10.11.16
✎
17:21
|
(1) Спасибо за хороший совет.
(2) Выше запрос, выборка не из виртуальной таблицы регистра, в ней поля отсутствуют, а в конвертации присутствует. Не могу понять как конвертация их подтянула, ведь в метаданных этих поле нет ! |
|||
6
Mr_Best
10.11.16
✎
17:23
|
(4) Структуру я загружал с движениями, но не для всех документов, а для тех которым проведение отключено в конфигурации (в метаданных). ОперацияБух относится как раз к такому документу.
|
|||
7
Mr_Best
10.11.16
✎
17:25
|
(4) Но табличной части Хозрасчетный в ПКО ОперацияБух нет, значит она все равно не загрузилась ? (т.е. настройка в выгрузки метаданных не сработала)
|
|||
8
Cyberhawk
10.11.16
✎
17:28
|
(7) Должна быть. В демке посмотри уже
|
|||
9
Господин ПЖ
10.11.16
✎
17:29
|
>а для тех которым проведение отключено в конфигурации (в метаданных)
это с наличием движений не связано жестко |
|||
10
Mr_Best
10.11.16
✎
17:34
|
(7) есть, уже посмотрел. Спасибо что обратил на это внимание. Но движения все равно не переносятся, попробую выгрузить в регистр из ТЧ, отпишусь
(9) я ошибся, табличные части движений у этого документа создались ( я только что узнал, что движения оформляются в виде ТЧ объекта :) ) |
|||
11
Mr_Best
10.11.16
✎
17:42
|
В ПКО ОперацияБух "После выгрузки в файл" заменил код обработчика на:
Для Каждого Движение Из ЭтотОбъект.Движения.Хозрасчетный Цикл ВыгрузитьРегистр(Движение,,,,"ХозрасчетныйЗапись"); КонецЦикла Ошибка изменилась: Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(5995)}: Ошибка записи объекта ТипОбъекта = Операция Объект = Операция 00000000560 от 31.10.2016 10:58:16 ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Запись не верна! Вид субконто "Движения целевых средств" не доступен для данной записи! (Регистр бухгалтерии: Журнал проводок (бухгалтерский и налоговый учет); Номер строки: 2) ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(5988) КодСообщения = 26 Вероятно, это уже связанно не с конвертацией, а с разницей настроек субконто в двух базах |
|||
12
Mr_Best
10.11.16
✎
17:53
|
Спасибо всем за помощь ! Все получилось.
Сами по себе движения не выгружались, но это помогло: Для Каждого Движение Из ЭтотОбъект.Движения.Хозрасчетный Цикл ВыгрузитьРегистр(Движение,,,,"ХозрасчетныйЗапись"); КонецЦикла А ошибка постом выше была связана не с конвертацией. Тему можно закрывать. |
|||
13
h-sp
10.11.16
✎
17:53
|
(11) а для видов субконто настроил правило? и есть там такое субконто в 3.0?
|
|||
14
Mr_Best
10.11.16
✎
17:55
|
(13) дополнительно не настраивал ничего, только в ручную правило создал "ХозрасчетныйЗапись" и в ПКО ОперацияБух после выгрузки в файл это:
Для Каждого Движение Из ЭтотОбъект.Движения.Хозрасчетный Цикл ВыгрузитьРегистр(Движение,,,,"ХозрасчетныйЗапись"); КонецЦикла Но оказалось, что бухгалтера создали счет в источнике (не предопределенный) и он перенесся пустой (субконто не заполнились). После заполнения субконто в приемнике все шикарно загрузилось :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |