1С 8.3 Выгружаем данные из Таблицы значений в DBF - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Выгружаем данные из Таблицы значений в DBF

Данные > Примеры кода 1С > 1С 8.3 Таблица значений
Перейти в основной раздел:
Выгружаем данные из Таблицы значений в DBF (&НаСервере) в 1С 8.3:
    ПутьКПапкеФайлов="D:\";
   
КаталогНаДиске = Новый Файл(ПутьКПапкеФайлов);
    Если
КаталогНаДиске.Существует()=Ложь Тогда
       
СоздатьКаталог(ПутьКПапкеФайлов);
    КонецЕсли;

   
ТаблицаDBF = Новый XBase; ТаблицаDBF.Кодировка = КодировкаXBase.ANSI;

   
ПутьКФайлуDBF=ПутьКПапкеФайлов+"Sync.dbf";
   
НовФайлуDBF = Новый Файл(ПутьКФайлуDBF);
    Если
НовФайлуDBF.Существует()=Ложь Тогда // Такого файла не существует - создадим новый файл DBF с нужной структурой
        // - аналогичной структуре ТЗ на форме

        // Описываем колонки таблицы. Типы бывают:
        // N - число
        // S - строка
        // D - дата
        // L - булево
        // F - число
       
ТаблицаDBF.Поля.Добавить("KodSpr","S",10,); // имя колонки Код в справочнике(как в 1С8=10симв),   тип,   длина
       
ТаблицаDBF.Поля.Добавить("NameSpr","S",100,); // имя колонки Наименование в справочнике,   тип,   длина
       
ТаблицаDBF.Поля.Добавить("Scht","S",8,); // имя колонки Счет,   тип,   длина
       
ТаблицаDBF.Поля.Добавить("Sub1K","S",25,); // имя колонки код Субконто1,   тип,   длина
       
ТаблицаDBF.Поля.Добавить("SRod1K","S",25,); // имя колонки код Родитель Субконто1,   тип,   длина
       
ТаблицаDBF.Поля.Добавить("Sub2K","S",25,); // имя колонки код Субконто2,   тип,   длина
       
ТаблицаDBF.Поля.Добавить("SRod2K","S",25,); // имя колонки код Родитель Субконто2,   тип,   длина
       
ТаблицаDBF.Поля.Добавить("Sub3K","S",25,); // имя колонки код Субконто3,   тип,   длина
       
ТаблицаDBF.Поля.Добавить("SRod3K","S",25,); // имя колонки код Родитель Субконто3,   тип,   длина

       
ТаблицаDBF.Поля.Добавить("Urov","N",1,0); // имя колонки Уровень иерархии,   тип,   длина

       
ТаблицаDBF.СоздатьФайл(ПутьКФайлуDBF,  ); // путь к базе,   путь к индексу
       
ТаблицаDBF.ЗакрытьФайл();

    КонецЕсли;

   
ТаблицаDBF.ОткрытьФайл(ПутьКФайлуDBF,,Ложь);  // путь к базе,   путь к индексу - необязателен,   только чтение

   
ТЗсФормы = Новый("ТаблицаЗначений");

    Для каждого
СтрокаТЗ из ТЗсФормы цикл

       
ЗаписьDBFУжеСуществует=Ложь;

       
ТаблицаDBF.Первая(); // перешли к первой записи
       
Пока Не ТаблицаDBF.ВКонце() Цикл//не последняя запись
           
Если Не ТаблицаDBF.ЗаписьУдалена() Тогда //нет пометки на удаление
               
Если (СокрЛП(ТаблицаDBF.KodSpr) = СокрЛП(СтрокаТЗ.КодВидаОбъекта))
                    и (
СокрЛП(ТаблицаDBF.NameSpr) =  СокрЛП(СтрокаТЗ.ВидОбъекта)) Тогда
                   
ЗаписьDBFУжеСуществует=Истина;

                   
// Обновим нужные данные
                   
ТаблицаDBF.Scht = СтрокаТЗ.Счет;
                   
ТаблицаDBF.Sub1K = СтрокаТЗ.Субконто1.Код;
                   
ТаблицаDBF.SRod1K = СтрокаТЗ.Субконто1.Родитель.Код;
                   
ТаблицаDBF.Sub2K = СтрокаТЗ.Субконто2.Код;
                   
ТаблицаDBF.SRod2K = СтрокаТЗ.Субконто2.Родитель.Код;
                   
ТаблицаDBF.Sub3K = СтрокаТЗ.Субконто3.Код;
                   
ТаблицаDBF.SRod3K = СтрокаТЗ.Субконто3.Родитель.Код;
                   
ТаблицаDBF.Urov = СтрокаТЗ.Субконто1.Уровень();

                   
ТаблицаDBF.Записать();

                КонецЕсли;
            КонецЕсли;

           
ТаблицаDBF.Следующая(); // переходим к следующей записи
       
КонецЦикла;

        Если
ЗаписьDBFУжеСуществует=Ложь Тогда //Создадим новую запись и добавим нужные данные

           
ТаблицаDBF.Добавить();
           
ТаблицаDBF.KodSpr = СокрЛП(СтрокаТЗ.КодВидаОбъекта);
           
ТаблицаDBF.NameSpr = СокрЛП(СтрокаТЗ.ВидОбъекта);

           
ТаблицаDBF.Scht = СтрокаТЗ.Счет;
           
ТаблицаDBF.Sub1K = СтрокаТЗ.Субконто1.Код;
           
ТаблицаDBF.SRod1K = СтрокаТЗ.Субконто1.Родитель.Код;
           
ТаблицаDBF.Sub2K = СтрокаТЗ.Субконто2.Код;
           
ТаблицаDBF.SRod2K = СтрокаТЗ.Субконто2.Родитель.Код;
           
ТаблицаDBF.Sub3K = СтрокаТЗ.Субконто3.Код;
           
ТаблицаDBF.SRod3K = СтрокаТЗ.Субконто3.Родитель.Код;
           
ТаблицаDBF.Urov = СтрокаТЗ.Субконто1.Уровень();

           
ТаблицаDBF.Записать();

        КонецЕсли;

    КонецЦикла;

   
ТаблицаDBF.ЗакрытьФайл();
   
//Сообщить("Файл записан. В таблице " + ТаблицаDBF.КоличествоЗаписей() + " записей.");
Выгружаем данные из Таблицы значений в DBF (&НаСервере) в 1С 8.3:
&НаСервере
Процедура Пример2(ТЗсФормы, Файл, Кодировка = Неопределено)

   ТаблицаDBF = Новый XBase;
   Если Кодировка = Неопределено Тогда
       Кодировка = КодировкаXBase.OEM;
   КонецЕсли;
   ТаблицаDBF.Кодировка = Кодировка;

   Для Каждого Колонка Из ТЗсФормы.Колонки Цикл
       Если Колонка.ТипЗначения.СодержитТип(Тип("Строка")) Тогда
           ТипТаблицы = "S";
           ДлинаТаб = Колонка.ТипЗначения.КвалификаторыСтроки.Длина;
           Если ДлинаТаб = 0 Тогда
               ДлинаТаб = 100;
           КонецЕсли;
           ТочностьТаб = 0;
       ИначеЕсли Колонка.ТипЗначения.СодержитТип(Тип("Число")) Тогда
           ТипТаблицы = "N";
           ДлинаТаб = Колонка.ТипЗначения.КвалификаторыЧисла.Разрядность;
           ТочностьТаб = Колонка.ТипЗначения.КвалификаторыЧисла.РазрядностьДробнойЧасти;
           Если ДлинаТаб = 0 Тогда
               ДлинаТаб = 15;
               ТочностьТаб = 3;
           КонецЕсли;
       ИначеЕсли Колонка.ТипЗначения.СодержитТип(Тип("Дата")) Тогда
           ТипТаблицы = "D";
           ДлинаТаб = 0;
           ТочностьТаб = 0;
       ИначеЕсли Колонка.ТипЗначения.СодержитТип(Тип("Булево")) Тогда
           ТипТаблицы = "L";
           ДлинаТаб = 0;
           ТочностьТаб = 0;
       Иначе
           ТипТаблицы = "S";
           ДлинаТаб = 100;
           ТочностьТаб = 0;
       КонецЕсли;

       ТаблицаDBF.Поля.Добавить(Колонка.Имя, ТипТаблицы, ДлинаТаб, ТочностьТаб);
   КонецЦикла;
   ТаблицаDBF.СоздатьФайл(Файл);

   Для Каждого СтрокаТЗ Из ТЗсФормы Цикл
       ТаблицаDBF.Добавить();
       ЗаполнитьЗначенияСвойств(ТаблицаDBF, СтрокаТЗ);
       ТаблицаDBF.Записать();
   КонецЦикла;
   //Сообщить("Файл записан. В таблице " + ТаблицаDBF.КоличествоЗаписей() + " записей.");

КонецПроцедуры
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 01.03.2020
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому