Вход | Регистрация


Конвертация данных: выгрузка документа "ОперацияБух" с проводками

Конвертация данных: выгрузка документа "ОперацияБух" с проводками
Я
   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
читать книжку по кд. там целая глава и код

в демобазе тоже вроде пример есть
   vicof
 
2 - 10.11.16 - 17:18
"Т.е. в запросе не хватает СубконтоДт, СубконтоКт"
"Вид субконто "Движения целевых средств" не доступен для данной записи!"
как-то не сочетается
   Cyberhawk
 
3 - 10.11.16 - 17:19
В ПКО должны быть ТЧ-движения
   Cyberhawk
 
4 - 10.11.16 - 17:19
А раз ты структуру метаданных загружал в КД без этих ТЧ-движений, то и обломись
   Mr_Best
 
5 - 10.11.16 - 17:21
(1) Спасибо за хороший совет.
(2) Выше запрос, выборка не из виртуальной таблицы регистра, в ней поля отсутствуют, а в конвертации присутствует. Не могу понять как конвертация их подтянула, ведь в метаданных этих поле нет !
   Mr_Best
 
6 - 10.11.16 - 17:23
(4) Структуру я загружал с движениями, но не для всех документов, а для тех которым проведение отключено в конфигурации (в метаданных). ОперацияБух относится как раз к такому документу.
   Mr_Best
 
7 - 10.11.16 - 17:25
(4) Но табличной части Хозрасчетный в ПКО ОперацияБух нет, значит она все равно не загрузилась ? (т.е. настройка в выгрузки метаданных не сработала)
   Cyberhawk
 
8 - 10.11.16 - 17:28
(7) Должна быть. В демке посмотри уже
   Господин ПЖ
 
9 - 10.11.16 - 17:29
для тех которым проведение отключено в конфигурации (в метаданных)

это с наличием движений не связано жестко
   Mr_Best
 
10 - 10.11.16 - 17:34
(7) есть, уже посмотрел. Спасибо что обратил на это внимание. Но движения все равно не переносятся, попробую выгрузить в регистр из ТЧ, отпишусь
(9) я ошибся, табличные части движений у этого документа создались ( я только что узнал, что движения оформляются в виде ТЧ объекта :) )
 
 Рекламное место пустует
   Mr_Best
 
11 - 10.11.16 - 17:42
В ПКО ОперацияБух "После выгрузки в файл" заменил код обработчика на:
Для Каждого Движение Из ЭтотОбъект.Движения.Хозрасчетный Цикл
    ВыгрузитьРегистр(Движение,,,,"ХозрасчетныйЗапись");    
КонецЦикла

Ошибка изменилась:

Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(5995)}: Ошибка записи объекта
    ТипОбъекта             =  Операция
    Объект                 =  Операция 00000000560 от 31.10.2016 10:58:16
    ОписаниеОшибки         =  Ошибка при вызове метода контекста (Записать): Запись не верна! Вид субконто "Движения целевых средств" не доступен для данной записи! (Регистр бухгалтерии: Журнал проводок (бухгалтерский и налоговый учет); Номер строки: 2)
    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(5988)
    КодСообщения           =  26

Вероятно, это уже связанно не с конвертацией, а с разницей настроек субконто в двух базах
   Mr_Best
 
12 - 10.11.16 - 17:53
Спасибо всем за помощь ! Все получилось.
Сами по себе движения не выгружались, но это помогло:

Для Каждого Движение Из ЭтотОбъект.Движения.Хозрасчетный Цикл
    ВыгрузитьРегистр(Движение,,,,"ХозрасчетныйЗапись");    
КонецЦикла 

А ошибка постом выше была связана не с конвертацией. Тему можно закрывать.
   h-sp
 
13 - 10.11.16 - 17:53
(11) а для видов субконто настроил правило? и есть там такое субконто в 3.0?
   Mr_Best
 
14 - 10.11.16 - 17:55
(13) дополнительно не настраивал ничего, только в ручную правило создал "ХозрасчетныйЗапись" и в ПКО ОперацияБух после выгрузки в файл это:
Для Каждого Движение Из ЭтотОбъект.Движения.Хозрасчетный Цикл
    ВыгрузитьРегистр(Движение,,,,"ХозрасчетныйЗапись");    
КонецЦикла 

Но оказалось, что бухгалтера создали счет в источнике (не предопределенный) и он перенесся пустой (субконто не заполнились). После заполнения субконто в приемнике все шикарно загрузилось :)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует