| 
    
            
         
         | 
    
  | 
Конвертация данных: выгрузка документа "ОперацияБух" с проводками | ☑ | ||
|---|---|---|---|---|
| 
    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) дополнительно не настраивал ничего, только в ручную правило создал "ХозрасчетныйЗапись" и в ПКО ОперацияБух после выгрузки в файл это:
 
        Для Каждого Движение Из ЭтотОбъект.Движения.Хозрасчетный Цикл ВыгрузитьРегистр(Движение,,,,"ХозрасчетныйЗапись"); КонецЦикла Но оказалось, что бухгалтера создали счет в источнике (не предопределенный) и он перенесся пустой (субконто не заполнились). После заполнения субконто в приемнике все шикарно загрузилось :)  | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |