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 = Новый 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.КоличествоЗаписей() + " записей.");
0
отзывы
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник