8.х ОБМЕН Вопрос по конвертации данных

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем Семен Сосницкий, 14 мар 2016.

  1. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Добрый день, уважаемые форумчане. Пришлось столкнуться с конфигурацией "конвертация данных", книжку вроде прочитал, даже курс глянул, но в голове каша. Подскажите пожалуйста выход из ситуации, точнее даже укажите в чем ошибка.

    Переношу данные из кривой сильно модифицированной ЗиК 7.7 в ЗУП 2.5. Имеется вопрос по банальному переносу справочника "физлица", точнее его табличной части. Так как со стороны источника (ЗиК 7.7) эти данные раскиданы по нескольким справочникам, то решил собрать их запросом и передать в ПКО "физлица" при помощи функции ВыгрузитьПоПравилу(). Итого: получаю все необходимые данные по физлицу, запихиваю их в список значений, получаю данные об образовании (они на стороне приемника как раз и хранятся в ТЧ), запихиваю эти данные в таблицу значений, а эту таблицу значений в список с данными о физлице. Передаю этот список значений как аргумент функции ВыгрузитьПоПравилу, все выгружается, а вот ТЧ - нет. Наименования полей в списке значений и наименование таблицы значений совпадают с именами свойств объекта и именем ТЧ соответственно. Флаги "получить из входящих данных" везде проставил. В xml-файле есть свойства, но значения пустые. Где я ошибся?
  2. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Код:
    Сообщить("Начало выгрузки за период с " + ДатаНачала + " по " + ДатаОкончания);
    Операция = СоздатьОбъект("Операция");
    Операция.ВыбратьОперации(ДатаНачала, ДатаОкончания);
    Пока Операция.ПолучитьОперацию() = 1 Цикл
        Если (Операция.Документ.ПометкаУдаления() = 1) Тогда
            Продолжить;
        КонецЕсли;
        Проводки_Основной = СоздатьОбъект("ТаблицаЗначений");
        Проводки_Основной.НоваяКолонка("Период");
        Проводки_Основной.НоваяКолонка("СубконтоДт");
        Проводки_Основной.НоваяКолонка("СубконтоКт");
        Проводки_Основной.НоваяКолонка("ВалютаДт");
        Проводки_Основной.НоваяКолонка("ВалютаКт");
        Проводки_Основной.НоваяКолонка("НомерЖурнала");
        Проводки_Основной.НоваяКолонка("НомерСтрокиТЧ");
        Проводки_Основной.НоваяКолонка("Содержание");
        Проводки_Основной.НоваяКолонка("ВалютнаяСуммаДт");
        Проводки_Основной.НоваяКолонка("ВалютнаяСуммаКт");
        Проводки_Основной.НоваяКолонка("КоличествоДт");
        Проводки_Основной.НоваяКолонка("КоличествоКт");
        Проводки_Основной.НоваяКолонка("Сумма");
        Проводки_Основной.НоваяКолонка("Активность");
        Проводки_Основной.НоваяКолонка("СчетДт");
        Проводки_Основной.НоваяКолонка("СчетКт");
       
        //организуем перебор проводок текущей операции
        Операция.ВыбратьПроводки();
        Пока Операция.ПолучитьПроводку()=1 Цикл
            //проверим на активную проводку
            Если Операция.ВключитьПроводки()=0 Тогда
                Продолжить;
            КонецЕсли;
            Если ((Параметры.СписокНеПереносящихсяСчетов.НайтиЗначение(Операция.Дебет.Счет)>0) ИЛИ (ПустоеЗначение(Операция.Дебет.Счет)=1)) ИЛИ
                ((Параметры.СписокНеПереносящихсяСчетов.НайтиЗначение(Операция.Кредит.Счет)>0) ИЛИ (ПустоеЗначение(Операция.Кредит.Счет)=1)) Тогда
                Продолжить;
            КонецЕсли;
            Проводки_Основной.НоваяСтрока();
            Проводки_Основной.Период     = ПолучитьДатуV8(Операция.ДатаОперации, Операция.ПолучитьВремя());
            Проводки_Основной.СчетДт     = Операция.Дебет.Счет;
            Проводки_Основной.СубконтоДт = СоздатьОбъект("ТаблицаЗначений");
            Проводки_Основной.СубконтоДт.НоваяКолонка("Ключ");
            Проводки_Основной.СубконтоДт.НоваяКолонка("Значение");
            Для НомерСубконто = 1 по Проводки_Основной.СчетДт.КоличествоСубконто() Цикл
                Проводки_Основной.СубконтоДт.НоваяСтрока();
                Проводки_Основной.СубконтоДт.Ключ     = Проводки_Основной.СчетДт.ВидСубконто(НомерСубконто);
                Проводки_Основной.СубконтоДт.Значение = Операция.Дебет.Субконто(НомерСубконто);
            КонецЦикла;
           
            Проводки_Основной.СчетКт = Операция.Кредит.Счет;
            Проводки_Основной.СубконтоКт = СоздатьОбъект("ТаблицаЗначений");
            Проводки_Основной.СубконтоКт.НоваяКолонка("Ключ");
            Проводки_Основной.СубконтоКт.НоваяКолонка("Значение");
            Для НомерСубконто = 1 по Проводки_Основной.СчетКт.КоличествоСубконто() Цикл
                Проводки_Основной.СубконтоКт.НоваяСтрока();
                Проводки_Основной.СубконтоКт.Ключ     = Проводки_Основной.СчетКт.ВидСубконто(НомерСубконто);
                Проводки_Основной.СубконтоКт.Значение = Операция.Кредит.Субконто(НомерСубконто);
            КонецЦикла;
           
            Проводки_Основной.Сумма           = Операция.Сумма;
            Проводки_Основной.ВалютаДт        = Операция.Валюта;
            Проводки_Основной.ВалютаКт        = Операция.Валюта;
            Проводки_Основной.ВалютнаяСуммаДт = Операция.ВалСумма;
            Проводки_Основной.ВалютнаяСуммаКт = Операция.ВалСумма;
            Проводки_Основной.КоличествоДт    = Операция.Количество;
            Проводки_Основной.КоличествоКт    = Операция.Количество;
            Проводки_Основной.Активность      = 1;
            Проводки_Основной.Содержание      = Операция.СодержаниеПроводки;
        КонецЦикла;
       
        ВходящиеДанные = СоздатьОбъект("СписокЗначений");
        ВходящиеДанные.Установить("Дата"         ,  ПолучитьДатуV8(Операция.ДатаОперации, Операция.ПолучитьВремя()));
        ВходящиеДанные.Установить("СуммаОперации", Операция.СуммаОперации);
        ВходящиеДанные.Установить("Содержание"   , "Операция №" + Операция.Документ.НомерДок + " от " + Операция.ДатаОперации + ". " + Операция.Документ);
        ВходящиеДанные.Установить("Основной"     , Проводки_Основной);
       
        Если ТипЗначения(Операция.Документ) = 12 Тогда //это документ
            Если Операция.Документ.Вид()="ПоступлениеТоваров" Тогда
                Если ПустоеЗначение(Операция.Документ.НомерДокВходящий) = 1 Тогда
                    НомерТТН = Операция.Документ.НомерДок;
                Иначе
                    НомерТТН = Операция.Документ.НомерДокВходящий;
                КонецЕсли;
                Если ПустоеЗначение(Операция.Документ.ДатаДокВходящий) = 1 Тогда
                    ДатаТТН = ПолучитьДатуV8(Операция.Документ.ДатаДок, Операция.ПолучитьВремя());
                Иначе
                    ДатаТТН = ПолучитьДатуV8(Операция.Документ.ДатаДокВходящий, Операция.ПолучитьВремя());
                КонецЕсли;
                ВходящиеДанные.Установить("НомерТТН", НомерТТН);
                ВходящиеДанные.Установить("ДатаТТН" , ДатаТТН);
            КонецЕсли;
        КонецЕсли;
       
        Если Проводки_Основной.КоличествоСтрок() = 0 Тогда
            Продолжить;
        КонецЕсли;
        ВыгрузитьПоПравилу(Операция.Документ, ,ВходящиеДанные, , "Операция");
    КонецЦикла;
    Вот мой код по выгрузке операций из 7.7. Думаю, Вам поможет.

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