[РЕШЕНО] Конвертация Данных: перенос набора записей РС в документ

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем Dragnir, 16 апр 2015.

  1. TopicStarter Overlay
    Dragnir
    Offline

    Dragnir Новичок в 1С

    Регистрация:
    22 окт 2014
    Сообщения:
    39
    Симпатии:
    8
    Баллы:
    4
    Доброго дня господа и дамы форумчане.
    Очень нужна Ваша помощь, надеюсь и уповаю, т.к. сам уже не могу раскурить...

    Задача в общем следующая.
    Исходные данные:
    Есть конвертация данных, редакция 2.1 (2.1.5.1), есть два дампа одной и той же ИБ (бух. учет на 8.2) с разницей в три месяца.

    Требуется:
    Сделать перенос состояния на 31.12.2014 двух регистров сведений, подчиненных регистратору из одного развернутого дампа ИБ в другой.

    Выбранное решение:
    Решаю переносить срез последних и записывать в документ "Корректировка записей регистров". Тем более, что ранее уже не раз писал такие правила для переноса данных из 7.7 в 8.2. Тем более в поставке конвертации данных уже есть такой готовый пример, набранный разработчиками (правда для регистра накоплений).

    Реализация:
    Делаю все как в примере. Создаю Правило Выгрузки Данных как произвольный алгоритм. В нем запросом дергаю срез последних. Формирую Таблицу Значений "Входящие данные" и вызываю Правило Конвертации Объектов кодом
    Код:
    ВыгрузитьПоПравилу( , , ВходящиеДанные, , "КорректировкаЗаписейРегистров"); 
    Сразу забегаю вперед: при таком вызове в ПКО для всех свойств у меня установлен флаг "Получать из входящих параметров". Так же я пробовал вариант, когда ТЗ у меня передается первым параметром, как ссылка на объект. В данном случае естественно я снимал у всех свойств флаг "Получать из входящих параметров".

    Результат:
    В обоих реализованных случаях, описанных ранее, результат всегда один и тот же: формируется файл выгрузки, в котором содержатся все объекты, используемые в измерениях РС, и полностью описывается документ "Корректировка записей регистров" (дата, комментарий, табличная часть с данными о РС и наборы записей для всех РС). Однако при загрузке наборы записей в РС не создаются.
    Документ "Корректировка записей регистров" создается, дата, комментарий и состав РС заполняются. В итоге я вижу документ, вижу добавленные в него РС, но в них нет записей. Никаких сообщений об ошибке не выдается.

    Вопрос:
    Какого??? -Banghead- В РС в качестве документа-регистратора установлен в том числе и документ "Корректировка записей регистров", объекты идентифицируются по ГУИД-у, т.к. быза то одинаковая. Почему???
    Раньше, при переносе из 7.7 я такие вещи уже проделывал и проблем не возникало. И самое интересное, что мой код ПВД, ПКО и все флаги на объектах полностью совпадают с примером из конфы...
  2. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.981
    Симпатии:
    398
    Баллы:
    104
    Правила в студию.
  3. TopicStarter Overlay
    Dragnir
    Offline

    Dragnir Новичок в 1С

    Регистрация:
    22 окт 2014
    Сообщения:
    39
    Симпатии:
    8
    Баллы:
    4
    Ну, если это поможет, то вот они:

    1. Правило Выгрузки Данных "ПараметрыАмортизацииОС"

    Код:
    // Заполним таблицу со списком регистров сведений
    ТабРС = Новый ТаблицаЗначений;
    ТабРС.Колонки.Добавить("Имя",           Новый ОписаниеТипов("Строка"));
    ТабРС.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
    //
    СтрокаТаб = ТабРС.Добавить();
    СтрокаТаб.Имя           = "ПервоначальныеСведенияОСБухгалтерскийУчет";
    СтрокаТаб.Представление = "ПервоначальныеСведенияОСБухгалтерскийУчет";
    СтрокаТаб = ТабРС.Добавить();
    СтрокаТаб.Имя           = "ПервоначальныеСведенияОСНалоговыйУчет";
    СтрокаТаб.Представление = "ПервоначальныеСведенияОСНалоговыйУчет";
    
    // Заполним входящие данные для выгрузки значений
    ВходящиеДанные                          = Новый Структура("Дата, Комментарий, ТаблицаРегистровСведений, ПараметрыАмортизацииОСБухгалтерскийУчет, ПараметрыАмортизацииОСНалоговыйУчет");
    ВходящиеДанные.Дата                     = Дата(2014, 12, 31, 23, 59, 59);
    ВходящиеДанные.Комментарий              = "Введено автоматически. Загрузка параметров амортизации ОС";
    ВходящиеДанные.ТаблицаРегистровСведений = ТабРС;
    // Запрос на получение параметров амортизации ОС по бухгалтерскому учету
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ДатаОтчета", Дата(2014, 12, 31, 23, 59, 59));
    Запрос.Текст = "
    | ВЫБРАТЬ
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство КАК ОсновноеСредство,
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.Организация КАК Организация,
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.СрокПолезногоИспользования КАК СрокПолезногоИспользования,
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.ОбъемПродукцииРабот КАК ОбъемПродукцииРабот,
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.СрокИспользованияДляВычисленияАмортизации КАК СрокИспользованияДляВычисленияАмортизации,
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.СтоимостьДляВычисленияАмортизации КАК СтоимостьДляВычисленияАмортизации,
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.ОбъемПродукцииРаботДляВычисленияАмортизации КАК ОбъемПродукцииРаботДляВычисленияАмортизации,
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.КоэффициентАмортизации КАК КоэффициентАмортизации,
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.КоэффициентУскорения КАК КоэффициентУскорения
    | ИЗ
    |     РегистрСведений.ПараметрыАмортизацииОСБухгалтерскийУчет.СрезПоследних(&ДатаОтчета, ) КАК ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних";
    ТабОСБУ = Новый ТаблицаЗначений;
    ТабОСБУ.Колонки.Добавить("ОсновноеСредство");
    ТабОСБУ.Колонки.Добавить("Организация");
    ТабОСБУ.Колонки.Добавить("СрокПолезногоИспользования");
    ТабОСБУ.Колонки.Добавить("ОбъемПродукцииРабот");
    ТабОСБУ.Колонки.Добавить("СрокИспользованияДляВычисленияАмортизации");
    ТабОСБУ.Колонки.Добавить("СтоимостьДляВычисленияАмортизации");
    ТабОСБУ.Колонки.Добавить("ОбъемПродукцииРаботДляВычисленияАмортизации");
    ТабОСБУ.Колонки.Добавить("КоэффициентАмортизации");
    ТабОСБУ.Колонки.Добавить("КоэффициентУскорения");
    ТабОСБУ.Колонки.Добавить("Период");
    ТабОСБУ.Колонки.Добавить("Активность");
    
    Выборка = запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        СтрокаОС = ТабОСБУ.Добавить();
        ЗаполнитьЗначенияСвойств(СтрокаОС, Выборка);  
        СтрокаОС.Период     = Дата(2014, 12, 31, 23, 59, 59);
        СтрокаОС.Активность = ИСТИНА;
    КонецЦикла;
    
    // Запрос на получение параметров амортизации ОС по налоговому учету
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ДатаОтчета", Дата(2014, 12, 31, 23, 59, 59));
    Запрос.Текст = "
    | ВЫБРАТЬ
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство КАК ОсновноеСредство,
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.Организация КАК Организация,
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.СрокПолезногоИспользования КАК СрокПолезногоИспользования,
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.ОбъемПродукцииРабот КАК ОбъемПродукцииРабот,
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.СрокИспользованияДляВычисленияАмортизации КАК СрокИспользованияДляВычисленияАмортизации,
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.СтоимостьДляВычисленияАмортизации КАК СтоимостьДляВычисленияАмортизации,
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.ОбъемПродукцииРаботДляВычисленияАмортизации КАК ОбъемПродукцииРаботДляВычисленияАмортизации,
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.КоэффициентАмортизации КАК КоэффициентАмортизации,
    |     ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.КоэффициентУскорения КАК КоэффициентУскорения
    | ИЗ
    |     РегистрСведений.ПараметрыАмортизацииОСНалоговыйУчет.СрезПоследних(&ДатаОтчета, ) КАК ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних";
    ТабОСНУ = Новый ТаблицаЗначений;
    ТабОСНУ.Колонки.Добавить("ОсновноеСредство");
    ТабОСНУ.Колонки.Добавить("Организация");
    ТабОСНУ.Колонки.Добавить("СрокПолезногоИспользования");
    ТабОСНУ.Колонки.Добавить("ОбъемПродукцииРабот");
    ТабОСНУ.Колонки.Добавить("СрокИспользованияДляВычисленияАмортизации");
    ТабОСНУ.Колонки.Добавить("СтоимостьДляВычисленияАмортизации");
    ТабОСНУ.Колонки.Добавить("ОбъемПродукцииРаботДляВычисленияАмортизации");
    ТабОСНУ.Колонки.Добавить("КоэффициентАмортизации");
    ТабОСНУ.Колонки.Добавить("КоэффициентУскорения");
    ТабОСНУ.Колонки.Добавить("Период");
    ТабОСНУ.Колонки.Добавить("Активность");
    
    Выборка = запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        СтрокаОС = ТабОСНУ.Добавить();
        ЗаполнитьЗначенияСвойств(СтрокаОС, Выборка);  
        СтрокаОС.Период     = Дата(2014, 12, 31, 23, 59, 59);
        СтрокаОС.Активность = ИСТИНА;
    КонецЦикла;
    //
    ВходящиеДанные.ПараметрыАмортизацииОСБухгалтерскийУчет  = ТабОСБУ;
    ВходящиеДанные.ПараметрыАмортизацииОСНалоговыйУчет      = ТабОСНУ;
    
    // Собственно выгрузка по описанному правилу
    ВыгрузитьПоПравилу( , , ВходящиеДанные, , "КорректировкаЗаписейРегистров"); 

    2. Правило Конвертации Объектов "КорректировкаЗаписейРегистров"
    upload_2015-4-16_11-13-10.png

    3. Результат выгрузки данных. Все данные присутствуют:

    upload_2015-4-16_11-16-2.png

    4. Вот результат загрузки данных:

    upload_2015-4-16_11-18-36.png
  4. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.981
    Симпатии:
    398
    Баллы:
    104
    Сложно сказать по вашим картинкам. Попробуйте отладить, сразу все поймете.
  5. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    А записи РС активны ?
  6. TopicStarter Overlay
    Dragnir
    Offline

    Dragnir Новичок в 1С

    Регистрация:
    22 окт 2014
    Сообщения:
    39
    Симпатии:
    8
    Баллы:
    4
    Да, в коде я даже "руками" "Активность" ставлю.
    --- Объединение сообщений, 16 апр 2015 ---
    Это конечно да, но вот подумалось, что может кто-то с такой ситуацией уже сталкивался... Мысль какую-то умную подкинет...
  7. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.981
    Симпатии:
    398
    Баллы:
    104
    Я сталкивался. И могу только подкинуть мысль воспользоваться отладкой. Визуально я не нашел ошибки. Отладчик найдет.
  8. TopicStarter Overlay
    Dragnir
    Offline

    Dragnir Новичок в 1С

    Регистрация:
    22 окт 2014
    Сообщения:
    39
    Симпатии:
    8
    Баллы:
    4
    Разобрался.
    Руки что называется кривые...

    Я в документ писал названия одних регистров, а движения делал совсем по другим... В итоге движения на самом деле были, но в документе я их просто не видел, т.к. в таблицу регистров записало названия совсем других РС.

    Лошара.

    Приношу извинения за беспокойство.
  9. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.981
    Симпатии:
    398
    Баллы:
    104
    Жесткая критика. :) Если получилось самому разобраться, то я бы сказал молодец, а не лошара. :)

Поделиться этой страницей