|
Как из DBFзагрузить строки в табличную часть обработки? | ☑ | ||
---|---|---|---|---|
0
Бестия
08.01.12
✎
19:26
|
Подскажите пожалуйста новичку в 1с 8.2 как из DBF загрузить строки в табличную часть обработки?
&НаКлиенте Процедура КнопкаВыполнитьНажатие(Кнопка) хб = Новый XBase(); ФайлДБФ = Новый Файл("D:\dBase.dbf"); хб.ОткрытьФайл("D:\dBase.dbf"); хб.Первая(); Пока НЕ хб.ВКонце() Цикл Сообщить(СокрЛП(хб.NAMEKL)); //ЗаполнитьТЧ(); Приход.Добавить(); //Приход - Это имя Табл.части ЭлементыФормы.Приход.Колонки.ИмяКлиента=СокрЛП(хб.NAMEKL); хб.Следующая(); КонецЦикла; хб.ЗакрытьФайл(); КонецПроцедуры |
|||
1
Бестия
08.01.12
✎
19:28
|
Получается только так: возможно можно как то по другому?
&НаКлиенте Процедура КнопкаВыполнитьНажатие(Кнопка) хб = Новый XBase(); ФайлДБФ = Новый Файл("D:\dBase.dbf"); хб.ОткрытьФайл("D:\dBase.dbf"); хб.Первая(); Пока НЕ хб.ВКонце() Цикл Сообщить(СокрЛП(хб.NAMEKL)); Приход.Добавить().ИмяКлиента=СокрЛП(хб.NAMEKL); хб.Следующая(); КонецЦикла; хб.ЗакрытьФайл(); КонецПроцедуры |
|||
2
Живой Ископаемый
08.01.12
✎
19:36
|
НоваяСтрока =Приход.Добавить(); //Приход - Это имя Табл.части
НоваяСтрока .ИмяКлиента=СокрЛП(хб.NAMEKL); |
|||
3
rema85
08.01.12
✎
19:37
|
Вот Вам функция. Пользуйтесь на здоровья.
Функция ЗагрузитьТаблицуЗначенийИзDBF(ТаблицаЗначений, ИмяФайла, Кодировка = "OEM", СтрокаНачало = Неопределено, СтрокаКонец = Неопределено) Экспорт ВыбФайл = Новый Файл(ИмяФайла); Если НЕ ВыбФайл.Существует() Тогда Сообщить("Файл """ + ИмяФайла + """ не существует!", СтатусСообщения.Внимание); Возврат Ложь; КонецЕсли; XBase = Новый XBase; Попытка XBase.ОткрытьФайл(ИмяФайла, , Истина); XBase.Кодировка = КодировкаXBase[Кодировка]; Исключение Сообщить("Ошибка открытия файла """ + ИмяФайла + """!", СтатусСообщения.Внимание); Возврат Ложь; КонецПопытки; ТаблицаЗначений.Очистить(); ТаблицаЗначений.Колонки.Очистить(); ТекущаяКолонка = 0; Для Каждого Поле Из XBase.Поля Цикл ТекущаяКолонка = ТекущаяКолонка + 1; ТаблицаЗначений.Колонки.Добавить(Поле.Имя, тфТип(Поле.Тип), Поле.Имя, Поле.Длина); КонецЦикла; Если ТипЗнч(СтрокаНачало) = Тип("Число") И СтрокаНачало > 0 Тогда Рез = XBase.Перейти(СтрокаНачало); Иначе Рез = XBase.Первая(); КонецЕсли; Пока Не XBase.ВКонце() Цикл лСтрокаТабЗначений = ТаблицаЗначений.Добавить(); ТекущаяКолонка = 0; Для Каждого Поле Из XBase.Поля Цикл ТекущаяКолонка = ТекущаяКолонка + 1; лСтрокаТабЗначений[Поле.Имя] = XBase.ПолучитьЗначениеПоля(ТекущаяКолонка - 1); КонецЦикла; Если ТипЗнч(СтрокаКонец) = Тип("Число") И СтрокаКонец > 0 И XBase.НомерЗаписи() >= СтрокаКонец Тогда Прервать; КонецЕсли; XBase.Следующая(); #Если Клиент Тогда ОбработкаПрерыванияПользователя(); Состояние(XBase.НомерЗаписи()); #КонецЕсли КонецЦикла; Возврат Истина; КонецФункции |
|||
4
Бестия
08.01.12
✎
19:37
|
(2) Спасибочки!!!
|
|||
5
Бестия
08.01.12
✎
19:38
|
(3) СПАСИБО ОГРОМНОЕ!!!
|
|||
6
aleks-id
08.01.12
✎
19:42
|
XBase - зло! запрос наше все.
|
|||
7
Бестия
08.01.12
✎
22:59
|
А подскажите как программно открыть файл DBF, чтобы не прописывать его, а выбирать любой?
|
|||
8
Бестия
08.01.12
✎
23:02
|
&НаКлиенте
Процедура ИмяФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Фильтр = "*.xml|*.xml"; Если Диалог.Выбрать() Тогда Объект.ИмяФайла = Диалог.ПолноеИмяФайла; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ИмяФайлаОткрытие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ЗапуститьПриложение(Объект.ИмяФайла); КонецПроцедуры {Обработка.ИмпортПриходов.Форма.Форма.Форма(29,29)}: Процедура не может возвращать значение Возврат Неопределено<<?>>; (Проверка: Толстый клиент (обычное приложение)) |
|||
9
Бестия
09.01.12
✎
00:01
|
Вопрос снимается, разобралась.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |