Имя: Пароль:
1C
 
прочитать MXL и записать данные вТЗ
0 Dimarik_1
 
25.04.16
17:57
мне нужно прочитать MXL и сохранить данные в таблицу значений. первый mxl файл получен сохранением отчета "Книга продаж" в бухгалтерии 3.0, а второй - в торговле 10.3.
Задача - получить и из того и из другого таблицу значений.
С данными из бухгалтерии все более-менее нормально, и с торговлей какой-то шлак получается.
Полагаю что здесь не совсем правильно сделано
ТабДок = Новый ТабличныйДокумент;
    ТабДок.Прочитать(ИмяФайла);
    ПЗ = Новый ПостроительЗапроса;
    ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());
    ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
    ПЗ.ЗаполнитьНастройки();
    ПЗ.Выполнить();

Вот весь код

//загрузить файл с данными из БП 3.0
&НаКлиенте
Процедура ЗагрузитьБП(Команда)
    // Вставить содержимое обработчика.
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Заголовок = "выберите файл";
    Диалог.ПолноеИмяФайла = "";
    Если Диалог.Выбрать() Тогда
        Массив =ПолучитьДанные(Диалог.ПолноеИмяФайла);
        
        Для Каждого Строка Из Массив Цикл
            НоваяСтрока = Бухгалтерия.Добавить();
            НоваяСтрока.Документ = Строка;
        КонецЦикла;
        
    КонецЕсли;
    
КонецПроцедуры

Процедура ПрочитатьMXL(ИмяФайла)
    
    //Бухгалтерия = ПолучитьТЗ(ИмяФайла);
    
КонецПроцедуры

Функция ПолучитьДанные(имяФайла)
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Прочитать(ИмяФайла);
    ПЗ = Новый ПостроительЗапроса;
    ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());
    ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
    ПЗ.ЗаполнитьНастройки();
    ПЗ.Выполнить();
    ТЗ =  ПЗ.Результат.Выгрузить();
    Массив = ПолучитьСписокНомеров(ТЗ);
    Возврат Массив;
КонецФункции

Функция ПолучитьСписокномеров(ТЗ)
    Массив = Новый Массив;
    
    Для Каждого Строка ИЗ ТЗ Цикл
        НоваяСтрока = Строка.ПомощникПоУчетуНДС;
        Индекс2016 = Найти(НоваяСтрока,"2016");
        
        Если Индекс2016 > 0 Тогда
            Индекс = Найти(НоваяСтрока, ";")-1;
            СтрокаСНомером = Лев(НоваяСтрока, Индекс);
            Массив.Добавить(СтрокаСНомером);
        КонецЕсли;
        
    КонецЦикла;
    возврат Массив;
    
КонецФункции

//загрузить файл с данными из УТ 10.3
&НаКлиенте
Процедура ЗагрузитьУТ(Команда)
    // Вставить содержимое обработчика.
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Заголовок = "выберите файл";
    Диалог.ПолноеИмяФайла = "";
    Если Диалог.Выбрать() Тогда
        Массив =ПолучитьДанные(Диалог.ПолноеИмяФайла);
        
        Для Каждого Строка Из Массив Цикл
            НоваяСтрока = Торговля.Добавить();
            НоваяСтрока.Документ = Строка;
        КонецЦикла;
        
    КонецЕсли;

КонецПроцедуры

Проблема в том, что не видны все нужные столбцы
http://i79.fastpic.ru/big/2016/0425/c6/1ea07f280252a22900e739d03bc70fc6.jpg
Вот исходные MXL с УТ
http://rghost.ru/7HMvmL2kS
1 aleks_default
 
25.04.16
18:00
Какой идиот сохраняет отчеты в mxl?
2 Dimarik_1
 
25.04.16
18:01
а в чем дело?
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс