Просмотрщик файлов DBF (DBFViewer), переделанный для управляемых форм

15.12.14

Разработка - Разработка внешних компонент

Просмотр содержимого DBF файла с возможностью печати его структуры.
Поддержка как DOS, так и Windows кодировки.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
DBFViewer8_3
.erf 10,55Kb
42 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

По роду своей деятельности часто приходится иметь дело с форматом "DBF". Причем работа ведется на управляемых формах.

Т.к. для модального режима внешний отчет уже написан, то чтобы каждый раз не менять режим, я переделал его для управляемых форм.

Надеюсь, кому - либо пригодится.

Отчет в прикреплении.

Исходный код:

&НаКлиенте
Перем База;

&НаКлиенте
Функция ДиалогОткрытияФайлаDBF()
	СтандартнаяОбработка = Ложь;
	ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогОткрытияФайла.Фильтр = "Файлы DBF(*.dbf)|*.dbf|";
	ДиалогОткрытияФайла.ПроверятьСуществованиеФайла = Истина;
	ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
	ДиалогОткрытияФайла.Заголовок = "Выберите файл dbf (Формат - Data Base III)";
 
	Если ДиалогОткрытияФайла.Выбрать() Тогда
		Возврат ДиалогОткрытияФайла.ПолноеИмяФайла;
	Иначе
		Возврат Неопределено;
	КонецЕсли;
КонецФункции

&НаКлиенте
Процедура ДиалогСВопросом(ТекстВопроса, ЗаголовокВопроса, РежимДиалога)
    Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса", ЭтотОбъект);
 
    ПоказатьВопрос(Оповещение,
        ТекстВопроса,
        РежимДиалога,
        0,
        КодВозвратаДиалога.Да,
        ЗаголовокВопроса
    );
КонецПроцедуры
 
&НаКлиенте
Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт		
    Если Результат = КодВозвратаДиалога.Да Тогда
        ЗагрузкаДанных();
    КонецЕсли;	
КонецПроцедуры

&НаСервере
Процедура ДобавитьПоляВТЗ(МассивСтруктур)
	/////////////////////////////////////////////////////////
	//Преобразуем массив структур в исходную таблицу значений	
	ИсхТЗ = Новый ТаблицаЗначений;
	Для Каждого ЭлементМассива Из МассивСтруктур Цикл
	    //Если еще не добавили, добавляем колонки
	    Если ИсхТЗ.Колонки.Количество() = 0 Тогда
	        Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл
	            ИсхТЗ.Колонки.Добавить(ЗначениеСтруктуры.Ключ);
	        КонецЦикла;
	    КонецЕсли;
	    //Добавляем данные в таблицу
	    НоваяСтрока = ИсхТЗ.Добавить();
	    Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл
	        НоваяСтрока[ЗначениеСтруктуры.Ключ] = ЗначениеСтруктуры.Значение;
	    КонецЦикла;
	КонецЦикла;
	/////////////////////////////////////////////////////////
	
	/////////////////////////////////////////////////////////
	//Почистим таблицу на форме
	ТЗНаФорме.Очистить();
	МассивУдаляемыхРеквизитов = Новый Массив;
    РеквизитыТЗ = ПолучитьРеквизиты("ТЗНаФорме");
	Если РеквизитыТЗ.Количество() > 0 Тогда
		Для Каждого Реквизит Из РеквизитыТЗ Цикл
	 		МассивУдаляемыхРеквизитов.Добавить("ТЗНаФорме." + Реквизит.Имя);
		КонецЦикла;
		ЭтаФорма.ИзменитьРеквизиты(,МассивУдаляемыхРеквизитов);
		
		Для Каждого Реквизит Из РеквизитыТЗ Цикл
			УдаляемыйЭлемент = Элементы.Найти("ТЗНаФорме_" + Реквизит.Имя);
			Если УдаляемыйЭлемент <> Неопределено Тогда
				Элементы.Удалить(УдаляемыйЭлемент);
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	/////////////////////////////////////////////////////////
	
	/////////////////////////////////////////////////////////
	//Создаем массив реквизитов - колонок для таблицы значений на форме
	МассивРеквизитов = Новый Массив;
	Для Каждого Колонка Из ИсхТЗ.Колонки Цикл
    	МассивРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "ТЗНаФорме", Колонка.Заголовок)); 
	КонецЦикла;
	/////////////////////////////////////////////////////////
	
	/////////////////////////////////////////////////////////
	//Выводим добавленные колонки на форму
	ЭтаФорма.ИзменитьРеквизиты(МассивРеквизитов);
    ЗначениеВРеквизитФормы(ИсхТЗ, "ТЗНаФорме");
	Таблица = Элементы.ТЗНаФорме;
	Таблица.Отображение = ОтображениеТаблицы.Список;
    Для Каждого Колонка Из ИсхТЗ.Колонки Цикл
       НовыйЭлемент = Элементы.Добавить("ТЗНаФорме_" + Колонка.Имя, Тип("ПолеФормы"), Таблица); 
       НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; 
       НовыйЭлемент.ПутьКДанным = "ТЗНаФорме." + Колонка.Имя;
   КонецЦикла;
   /////////////////////////////////////////////////////////
КонецПроцедуры

&НаКлиенте
Процедура ОсновныеДействияФормыОткрыть(Кнопка)	
	ИмяФайла = ДиалогОткрытияФайлаDBF();
	Если ИмяФайла = Неопределено Тогда
		Возврат;
	КонецЕсли;
	База = Новый XBase;
	Попытка
    	База.ОткрытьФайл(ИмяФайла);
    Исключение
        Сообщить("Произошла ошибка при обращение к файлу dbf:" + Символы.ПС + ОписаниеОшибки());
        Возврат;
	КонецПопытки;
		
	Если ФДОС=Истина Тогда
		База.Кодировка=КодировкаXBase.OEM;
	Иначе
		База.Кодировка=КодировкаXBase.ANSI;
	КонецЕсли;
		
	База.ОтображатьУдаленные = Истина;	
	Записей = База.КоличествоЗаписей();
	
	Если (Записей > 10000) И (Ф100 = Ложь) Тогда
		Режим = РежимДиалогаВопрос.ДаНет;
		ТекстВопроса = "Количество записей в файле " + Записей + ". Продолжить?";
		ДиалогСВопросом(ТекстВопроса, "Длительная загрузка данных!", РежимДиалогаВопрос.ДаНет);
	Иначе
		ЗагрузкаДанных();
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузкаДанных()
	Записей = База.КоличествоЗаписей();
	МассивСтруктур = Новый Массив;
	Для А=1 По Записей Цикл		
		Состояние("Выводится запись "+А+" из "+Записей, Цел(А/Записей*100));
		Если Ф100 И (А>100) Тогда
			Прервать;
		КонецЕсли;
		База.Перейти(А); 
		
		СтруктураКолонок = Новый Структура;
		
		Если База.ЗаписьУдалена()=Истина Тогда
			СтруктураКолонок.Вставить("Удален","•");
		Иначе
			СтруктураКолонок.Вставить("Удален"," ");
		КонецЕсли;
		СтруктураКолонок.Вставить("N", А);
		Для Каждого Поле из База.Поля Цикл
			СтруктураКолонок.Вставить(Поле.Имя, База.ПолучитьЗначениеПоля(Поле.Имя));
		КонецЦикла;
		МассивСтруктур.Добавить(СтруктураКолонок);
	КонецЦикла;
	ДобавитьПоляВТЗ(МассивСтруктур);
	База.ЗакрытьФайл();
КонецПроцедуры

&НаСервере
Функция ПолучитьМакетНаСервере(ИмяМакета)
	ТекОбъект = РеквизитФормыВЗначение("Отчет");
	Возврат ТекОбъект.ПолучитьМакет(ИмяМакета);
КонецФункции

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

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

&НаКлиенте
Процедура ЗакрытьФорму(Команда)
	ЭтаФорма.Закрыть();
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ИмяФайла="";
	ФДОС = Истина;
КонецПроцедуры

Вступайте в нашу телеграмм-группу Инфостарт

DBF

См. также

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27660 руб.

12.06.2017    151667    880    302    

458

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

55778 50200 руб.

15.04.2019    78334    210    161    

149

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    177576    325    273    

394

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Пользователь 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 24.08.2025, версия 9.12 - 10.3)

18000 руб.

20.11.2015    166512    416    386    

538

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С v8.3 1C v8.2 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

16260 руб.

18.02.2016    194452    633    540    

548

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

53111 47800 руб.

03.12.2020    41286    116    74    

110

SALE! 10%

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам.

55778 50200 руб.

24.04.2015    202590    167    248    

292

Операции по ВЭД Файловый обмен (TXT, XML, DBF), FTP Программист Бухгалтер 1С v8.3 Бухгалтерский учет 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бухгалтерский учет Платные (руб)

Федеральная таможенная служба России давно поддерживает унифицированный формат электронных документов для обмена с информационными системами предприятий. xmlns="urn:customs.ru:Information:ExchangeDocuments:". Структура, утвержденная комиссией Таможенного союза. Осталось только сделать загрузку в 1С из этого формата. На выходе - два документа ГТД по импорту и Поступление (акты, накладные) Обработка актуализирована на начало 2025 года

4800 руб.

09.08.2016    88119    325    378    

86
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. AleksSF 229 17.12.14 08:12 Сейчас в теме
Было бы хорошо, чтобы можно было редактировать и сохранять. Просто смотреть можно и в Excel.
2. cheiser1982 244 17.12.14 12:40 Сейчас в теме
(1) AleksSF, спасибо за совет, я думаю в ближайшее время добавлю и сохранение. Просто пока со временем туго.
3. ufedor 58 23.12.14 13:50 Сейчас в теме
Есть несколько комментариев:

1. Загрузка всего файла в память не всегда может быть нужна (и не всегда возможна). Особенно для отображения в управляемой форме. Нужно копать в сторону загрузки частями.
2. Всю обработку можно (и нужно) выполнять на клиенте. Зачем нужна передача на сервер, зачем массив структур?
3. Почему табличный документ? Вывод в виде таблицы на форму был бы логичнее.
4. Не проверяли скорость работы через ADO?
4. cheiser1982 244 24.12.14 06:14 Сейчас в теме
(3) ufedor, вся проблема в использовании таблицы значений - ее создание и редактирование полей на клиенте не поддерживается, так-же из-за этого я использую передачу массива структур. Насчет способов вывода (в качестве табличного документа или в виде таблицы), признаюсь, особо не заморачивался - что первым пришло в голову, то и применил.
По поводу загрузки частями полностью с Вами согласен.
Скорость не проверял.
Для отправки сообщения требуется регистрация/авторизация