вторник, 7 апреля 2009 г.

4ФСС, заполнение из внешних данных.

Формы регламентированных отчетов могут заполнятся на основе внешних данных.
Однако внешними данными для УПП могут является только файлы xml выгруженные их ЗуП и как говорится пользователям ЗиК просьба не беспокоить.

Следующая кнопка позволяет быстро заполнить регламентированный отчет, данными импортируемыми из ЗиК

//Осуществляет ипорт данных из файлов 7.7 prb
//
Процедура КоманднаяПанельФормыИмпорт77(Кнопка)
   Длг = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Длг.Заголовок = "Выберите файлы данных регламентированной отчетности";
   Длг.Фильтр = "Файлы данных 7.7 (*.prb)|*.prb|Все файлы (*.*)|*.*";
   Длг.Расширение = ".prb";
   Длг.МножественныйВыбор=Истина;
   Если Длг.Выбрать() Тогда
     Текст="";
     Для каждого ИмяФайла из Длг.ВыбранныеФайлы Цикл
        ТекстДок=Новый ТекстовыйДокумент;
        ТекстДок.Прочитать(ИмяФайла);
        Текст=Текст+ТекстДок.ПолучитьТекст();
     КонецЦикла;
     //теперь формируем таблицу с значениями
     RegExp = Новый COMОбъект("VBScript.RegExp");
     RegExp.IgnoreCase = Истина;
     RegExp.MultiLine = Истина;
     RegExp.Global = Истина;
     RegExp.Pattern = "{""(N|S)"",""0"",""0"",""0"",""0"",""0"",""((?:.|\s)*?)""},""(П\d*)""}"; //ШАБЛОН РЕГУЛЯНОГО ВЫРАЖЕНИЯ
     Вхождения = RegExp.Execute(Текст);
     Результат=Неопределено;
     Для Каждого Вхождение из Вхождения Цикл
         Если Результат=Неопределено Тогда
             Результат=Новый ТаблицаЗначений;
             Для Колонка=1 по Вхождение.SubMatches.Count Цикл
               Результат.Колонки.Добавить("Колонка"+(Колонка-1),Новый ОписаниеТипов("Строка"));
             КонецЦикла;
         КонецЕсли;
         НоваяСтрока=Результат.Добавить();
         Для каждого Колонка из Результат.Колонки Цикл
         НоваяСтрока[Результат.Колонки.Индекс(Колонка)]=Вхождение.SubMatches(Результат.Колонки.Индекс(Колонка));
         КонецЦикла;
         Состояние(Результат.Количество());
         Попытка
            НоваяСтрока.Колонка1=Число(СокрЛП(НоваяСтрока.Колонка1));
         Исключение
         КонецПопытки;
    КонецЦикла;
    //заполняем печ формы
    Если Не Результат=Неопределено Тогда
        Для Каждого СтрокаОписанияТД из мСвойстваРазделовДекларации.Строки Цикл
            ТабПоле=ЭлементыФормы["ПолеТабличногоДокумента"+СтрокаОписанияТД.ИмяСтраницы];
            Для каждого Строка из Результат Цикл
                Попытка
               ТабПоле.Области[Строка.Колонка2].Значение=Строка.Колонка1;
                    Состояние(Строка.Колонка2+" - "+Строка.Колонка1);
                Исключение
                Конецпопытки;
            КонецЦикла;
            Расчет(СтрокаОписанияТД.ИмяСтраницы);
        КонецЦикла;
    КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Комментариев нет:

Отправить комментарий