DBF юзают неудачники?
(7) бред. CSV - можешь открыть в любом Экселе. Вставлять девочку в информационную структуру - еще больший бред. XML тоже легко визуализируется и редактируется. XML SPY & XML StyleSheets.
(5) я не умею врать. так нагло.
(6) XML. DBF плох тем, что в одном файле можно хранить только одну структуру и тем, что строковые поля ограничены по длине.
Что-то сильно похоже на бред. Где индексированная таблица, а где текст размеченный. Я вот выгружаю в ДБФ все накладные, выписанные отделом сбыта, а разные подразделения логистики просматривают файл по-разному, причем в части, их касающейся.
А так, развивая "мысль", можно сказать что и Екселем пользуются неудачники. Все ведь в Ворде делается.
(9) сколько строк в накладных, уважаемый Арчибальд?
Не проще ли индексировать их в ТЗ, а передавать в стандартном XML?
или, если размер данных большой, один раз загружать их в регистр сведений и использовать типовую механику запросов?
Имхо что-то не так в вашем DBF-обмене с накладными.
Ответили: (11)
Ввел в поисковике DBF первые строчки как бы символизируют
DBF — устаревающий формат хранения данных, используемый в качестве одного из стандартных способов хранения и передачи информации системами управления базами данных, электронными таблицами и т. д.
Из выпущенных продуктов формат впервые применялся в dBase II в качестве стандартного формата базы. Точно не известно, использовался ли он где-нибудь ранее.
В новых версиях — dBase III, dBase IV — формат модифицировался и расширялся. В связи с высокой популярностью этих программ были созданы их многочисленные клоны (обычно их называют общим термином xBase), некоторые из которых использовали модифицированные версии DBF. То же самое происходило и с целым рядом прикладных пакетов и библиотек, использовавших DBF в различных целях. Одни их авторы шли по пути добавления новых типов полей, другие — вносили серьёзные расширения. В связи с отсутствием какой-либо официальной стандартизации в настоящее время сложно гарантировать, что разрабатываемая прикладная программа будет писать и читать произвольный DBF-файл, но базовая совместимость всё-таки сохраняется.
Ответили: (14)
Это похоже на спор слепого с глухим. Лично мне глубоко фиолетово кому что , больше нравиться , есть задача , а каждый ее решает теми средствами и способами которые ему удобнее. А ставить ярлыки - это не наш метод. У меня есть организация , большой магазин торговый центр. В нем все автоматизировано на програме Бэст. Так головняков и проблем в разы меньше , чем в 1с. Это же не значит , что все работники лохи , потому что они 1с и близко видеть не хотят. каждый выбирает , что ему больше нравится.
Ответили: (14)
(11) Арчи, не уклоняйтесь от темы. Перечитайте мой вопрос. Сколько заданий на отпуск продукции в одном пакете? Если 100-1000, пусть даже 10 000, то быстрее загрузить данные из XML и отсортировать их в 1С. Смысл использовать DBF для индексации? Подумайте о тех, кто придет после вас.
(12) Вот вот, в то время как XML - это просто текст. Совместимо по определению.
(13) лично тебе может и все равно. А вот приходить в контору и разгребать гуано за такими "равнодушными" не очень приятно. Не нужно пользоваться DBF-костылями только потому, что лень изучить XML.
А то что аптечные конторы все поголовно пользуются форматом dbf при пересылке данных - так это точно неудачники, или у них стоит именно "это" устаревшее программное обеспечение. Бедные их поставщики и покупатели а так же весь штат "программистов" и 1C-ников у них работающих!
Ответили: (46)
(19) если что-то работает, ломать не стоит, почему бы и не поддерживать. Но писать сейчас обмены на DBF - это признак маразма. Допускаю, что аптеки привыкли пересылать в DBF, у них под это уже заточено, менять не надо.
(16) видимо у контрагентов программисты-маразматики. XML удобнее DBF, это факт.
(17) если он действительно свободен, он выберет XML. Но видимо он не умеет юзать XML, потому выбирает DBF, потому неудачник. Преимуществ у DBF для обмена нет перед XML.
(21) да. ибо XML лучше чем текст.
(20) скорее это мои эмоции. Смешит, когда программисты советуют писать обмены в DBF в эпоху XML. Проскочил такой совет в одной из веток.
А у меня была такая ситуацию, выгружал зарплатные ведомости для банков, и они требовали, чтобы выгружал именно в формате DBF, структуру и описание файла отправили даже. Считаю что DBF для переноса небольших объемов данных очень даже удобен. Или например в банк-клиентах до сих пор тоже используется текстовый форма и до сих пор успешно применяется. Дай бог конечно, чтобы XML стал повсеместно использоваться))
Ответили: (48)
Каждый формат файла удобен для определенных целей, сбербанк до сих пор не отказался от использования формата DBF, точно так же как 7.7 файловая идет тоже в DBF, возьмем тот же пенсионный фонд он тоже работает в этом формате. И потом формат удобен для определенных целей. Поэтому сколько программистов столько и мнений
Ответили: (52)
гы, прикольная тема )))
последний раз юзал дбф... эээ... лет 7 назад
Но только по той причине, что сейчас он не используется ни одним из клиентов, с которыми я пересекаюсь. И, кстати, xml у них тоже пока нет, к сожалению. Есть xls, txt.
Касательно устареваемости - прям за спиной сидит товарисч, который страдает работает с (, ). И вот людям по другую сторону базы ваще пофиг - работает и ладно.
Чаще всего причины использования тех или иных технологий лежат в плоскости клиентов.
Ответили: (52)
(50) не отказался только по причине сложившейся практики. преимуществ у DBF формата для обмена данными нет. Если есть, назовите. Для каких определенных целей?
(51) я уже говорил. Если DBF используется вынужденно, т.к. другая сторона его хочет, это одно. А если программист добровольно юзает DBF вместо XML, он лузер.
А чем это XML то удобней? попросите кого-то со стороны прочитать что там в 1056 строке данных?? DBF и в Экселе открывается, который стоит у 99% пользователей а XML SPY & XML StyleSheets у кого стоит? Поднимите руки. Или всем по почте отправлять еще и прогу и рассказывать как ее устанавливать, и как открывать.
XML новый формат, он только развивается и за ним будущее согласен, это как к примеру уже давно есть виндовс7 и виндовс виста, но вот пользователей на них не так-то и много, народ до сих пор на ХР сидит. Потому что НЕУДОБНО с этими новыми операционками, а переходят только по принуждению, так же и с XML хорошо но не удобно.
Неудачники кто дбф использует?
Мне доводилось писать обмены с иностранными компаниями среднего размера
Так вот почти все использовали для обмена txt
Даже если просили Excel - так присылали все равно csv что есть тот же самый txt
Так что - реальность ваши мысли никак не подтверждает.
Ответили: (59)
Наверное, автор темы не умеет работать в 1с с DBF, вот и пишет что кто пользуется DBF - неудачники. И вообще, если бы вы написали: "DBF-пережиток старого, пользуйтесь XML", а не "DBF юзают неудачники", то тема воспринималась бы по другом, а так просто кажется что у автора присутствует некое самолюбие, мол, я использую XML, а кто использует DBF - неудачники.
Ответили: (59)
(59) Ты действительно настолько глуп, или специально прикидываешься?
У меня несколько форматов обмена документами с клиентурой: эксель, ммо, дбф и твой любимый XML. Так вот неудачником считаю того, кто не может ни в одном УДОБНОМ ДЛЯ КЛИЕНТА формате скинуть документ. Все остальное - твои личные эмоции (при том весьма не здоровые...)
Ответили: (64)
возможно вы и правы, возможно XML - лучше использовать чем DBF. Меня больше всего смущает "если программист сам выбирает DBF, то он НЕУДАЧНИК". у меня к вам вопрос, почему неудачник? разница ведь в использовании не так и велика.
Ответили: (64)
(59) fixin,
иногда программист может сам выбирать
а очень часто не может
мы же не сферического программиста в вакууме обсуждаем, правда?
Считать ли неудачником программиста, работающего в солидной и большой и уважаемой компании и поднимающего хорошие деньги??
Ответили: (64)
Считаю, что в эпоху XML человек, который использует DBF для задач обмена, хранения данных или еще по каким-либо причинам, не связанным непосредственно с тем, что данные ему поставляются только в DBF - неудачник.
Пора выбросить этот формат на свалку истории в теме обмена.
Я понимаю, что в 1С есть функции для работы с DBF, но использовать этот формат для обменов - маразм.
я вот лично использую дбф на 2 5 гиговых базах в терминале, потому что оно в моем случае быстрей работает чем СКЛ.
Ответили: (64)
(60) Вася, я уже объяснял 10 раз, если Клиент диктует формат, тогда ноу проблем - хоть Луну с неба. Но если вы по своей инициативе юзаете ДБФ, простите...
(61) Неудачник - потому что использует старое, неудобное, но привычное и не стремится познать новое, удобное, но непривычное. Это уже черта характера. Потом на его место приходит продвинутый программист и вынужден страдать над DBF только потому, что старому было тяжело изучить XML.
(62) Вот о том и речь. Если может и выбирает XML - неудачник. Даже если бабло загребает лопатой, ибо ленив.
(63) Пардон, вы не поняли о чем речь. Вы используете DBF как платформу базы данных 1с77? Тема не об этом.
Ответили: (65)
(64) Чем лучше xml по сравнению с dbf для однородных данных? Чем он удобнее в 7-ке? - это в 8-ке он штатно включен, а в 7-ке либо ручками (что я и сделал), либо через опу с помощью ВК. Я уже не говорю об удобстве просмотра и , при необходимости, редактирования итогового файла ДБФ редакторов/вьюверов хоть опой жри. А если нет винды 7-й? Да на нее у меня аллергия, как и на их сранный ИЕ.
Ответили: (66)
(65) вы ретроград батенька. Потому и Win 7 не перевариваете. В 7-ке v7plus замечательно юзает XML. В крайнем случае можно юзать парсер от винды, доступный как ком-объект, если объемы не большие. Можно ручками и не писать.
К тому же 7-ка - это программа пятилетней давности, речь идет о тех, кто на острие прогресса. Вы с ней в предмет обсуждения ветки не вписываетесь. Могу уточнить название ветки - те восьмерочники, которые юзают DBF, вместо XML - неудачники, чтобы семерочникам не было обидно.
а насчет преимуществ XML я уже писал, повторю спецом для вас. В DBF нужно фиксировать набор полей, только одна структура на файл, формат не текстовый, а двоичный, строки ограниченной длины.
И потом даже для однородных данных XML легко позволяет включить в пакет его описание - типо метаданных - время выгрузки, автора, контрольную сумму пакета и т.п. вкусности, которые в DBF будут занимать лишнюю колонку или потребуют отдельного файла.
Ответили: (83)
fixin, а что по поводу производительности, что лучше XML или DBF и примерно во сколько раз?
Ответили: (69)
| Цитата |
|---|
| Синтаксис XML избыточен.[8]
Размер XML-документа существенно больше бинарного представления тех же данных. В грубых оценках величину этого фактора принимают за 1 порядок (в 10 раз). Размер XML-документа существенно больше, чем документа в альтернативных текстовых форматах передачи данных (например JSON[4], YAML, Protocol Buffers) и особенно в форматах данных, оптимизированных для конкретного случая использования. Избыточность XML может повлиять на эффективность приложения. Возрастает стоимость хранения, обработки и передачи данных. XML содержит метаданные (об именах полей, классов, вложенности структур), и одновременно XML позиционируется как язык взаимодействия открытых систем. При передаче между системами большого количества объектов одного типа (одной структуры), передавать метаданные повторно нет смысла, хотя они содержатся в каждом экземпляре XML описания. Для большого количества задач не нужна вся мощь синтаксиса XML и можно использовать значительно более простые и производительные решения.[9] Неоднозначность моделирования. Нет общепринятой методологии для моделирования данных в XML, в то время как для реляционной модели и объектно-ориентированной такие средства разработаны и базируются на реляционной алгебре, системном подходе и системном анализе. В природе есть множество объектов и явлений, для описания которых разные структуры данных (сетевая, реляционная, иерархическая) являются естественными, и отображение объекта в неестественную для него модель является болезненным для его сути. В случае с реляционной и иерархической моделями определены процедуры декомпозиции, обеспечивающие относительную однозначность, чего нельзя сказать о сетевой модели.[10] В результате большой гибкости языка и отсутствия строгих ограничений, одна и та же структура может быть представлена множеством способов (различными разработчиками), например, значение может быть записано как атрибут тега или как тело тега и т. д. Например: <a b="1" c="1"/> <a>1<c>1</c></a> <a><b value="1"/><c value="1"/></a> <a><fields b="1" c="1"/></a> и т. д.[11] Поддержка многих языков в именовании тегов дает возможность назвать, например вес русским словом, в таком случае компьютер никак не сможет установить соответствия этого поля с полем weight в англоязычной версии программы и с полями в версиях модели объекта на множестве других языков. XML не содержит встроенной в язык поддержки типов данных. В нём нет строгой типизации, то есть понятий «целых чисел», «строк», «дат», «булевых значений» и т. д. Иерархическая модель данных, предлагаемая XML, ограничена по сравнению с реляционной моделью и объектно-ориентированными графами и сетевой моделью данных. Выражение неиерархических данных (например графов) требует дополнительных усилий Кристофер Дейт, специалист в области реляционных баз данных, автор классического учебника «An Introduction to Database Systems», отмечал, что «…XML является попыткой заново изобрести иерархические базы данных…»[12] (в 1980-е года иерархические базы данных были вытеснены реляционными базами данных). Пространства имён XML сложно использовать и их сложно реализовывать в XML-парсерах. Существуют другие, обладающие сходными с XML возможностями, текстовые форматы данных, которые обладают более высоким удобством чтения человеком (YAML, JSON, SweetXML[13], XF[14]). |
Вопрос: как назвать человека, работающего с форматом с ТАКИМ количеством недостатков?
(67) производительность чего, простите? Если данные используются для обмена, то не суть какой объем. Сжатие убивает излишнюю раздутость, а чтение из DBF и XML одинаково по скорости на одинаковых объемах (примерно одинаково).
DBF можно использовать для чтения по индексам, но это уже из оперы прикручивания к 1С маленькой СУБД, и явно есть решения лучше чем DBF, тот же MYSQL
(68) я вам из пальца понавысасываю столько же недостатков у DBF. Размер легко решается через сжатие в ZIP. Неоднозначность моделирования - это не из нашей песни, вы бы хоть читали что пишете. Вы сами создаете модель обмена. Тут нет неоднозначности. Нам естественный язык не нужен.
(71) не правильно. Исходя из избыточности xml (хотя dbf тоже не оптимален) нужно сравнивать 1 гиг dbf и 7-8 гиг xml.
Хотя еще лучше взять общедоступную базу данных (КЛАДР?) и сделать выгрузку/загрузку данных в разных форматах. Потом определяйте "неудачников".
ЗЫ Время написания кода для выгрузки/загрузки на языке 1С тоже можно сравнить :)
Ответили: (74)
(73) ну вот это уже разговор не мальчиков, а мужей))) Добавьте еще к вопросу о производительности - вопрос о выборке данных.
ЗЫ. fixin ты путаешь СУБД - dbf и кусок данных (а по факту просто разметка)- xml. Чтобы сделать из xml - СУБД нужно быть довольно знатным прогером, - посмотри Sedna (ребята из РАН делают)
(72) fixin, нет уж, давайте будем использовать DOM, ведь по вашим условиям задачи у нас может быть любая структура в одном файле и нам же необходимо сразу проверять правильность входящих данных. (В dbf я не рассматриваю данный вариант, т.к. там этого сделать нельзя).
Хотя давайте рассмотрим и такой вариант: xml по структуре похож на dbf, берем простые типы Дата, Число, Строка (ограниченной естиственно длины), используем ЧтениеXML каким образом вы гарантируете что будут значения типа число, дата, это строка и сколько времени это займет по сравнению с чтениием с банального и устаревшего dbf.
Ответили: (84)
Думаю, только истинный неудачник может поднимать подобную тему для обсуждения. Т.е. пытаться распознать в других людях ЭТО качество по такому ничтожному признаку - как предпочтение формата файла для обмена информацией.
| Цитата |
|---|
| я вам из пальца понавысасываю столько же недостатков у DBF. |
Валяйте, сделайте это. По крайней мере, это будет убедительней, чем просто вешать ярлыки на всех, кто по работе встречается с dbf.
| Цитата |
|---|
| Размер легко решается через сжатие в ZIP. |
Это не преимущество. Программист, сумевший сжать xml в zip, точно так же легко разберется и с dbf, если приспичит.
| Цитата |
|---|
| Неоднозначность моделирования - это не из нашей песни, вы бы хоть читали что пишете. Вы сами создаете модель обмена. Тут нет неоднозначности. Нам естественный язык не нужен. |
Я правильно понимаю ваши слова, что все обмены данными, которые вы, как программист, обслуживаете - однозначного формата и вы этот формат
(66) 1. Я не ретроград , но переходить на прожорливую 7-ку только ради свистелок пердело я тоже не пацан и украшательства меня в последнюю очередь волнуют.
2. "В 7-ке v7plus замечательно юзает XML." такое только может заявлять человек не рабовший с v7plus - нихыра замечательного она не делает. Ну то что ты аж ни разу не практик - это я давно знаю.
(69) "я вам из пальца понавысасываю столько же недостатков у DBF" - теперь понятно откуда ты берешь аргументы. Сосать можешь что хочешь, но не надо с этим лазить в тематические форумы (здесь форум 1С если не знал).
Ответили: (84)
(83) ну за пять лет я успел поменять контору, где уже юзают восьмерку, а не продолжают сопровождать семерку. Ничего против семеры не имею, но она отмирает. Это факт.
Что именно у Вас не получилось в V7Plus.
По поводу остальных ваших сентенций - это форум по 1С, как вы выразились, поэтому комментировать ваши ассоциации не буду, оставлю Фрейду. ;-)
(80) Простите, а зачем его смотреть? В 1С в крайнем случае смотрите. В блокноте, в IE.
(76) Какая разница, DOM или последовательное чтение? Я и последовательным чтением могу получить нужные мне данные? Кто сказал что мне нужно выборочно читать? Я прочитаю все и извлеку все.
(73) Для таких баз, как KLADR лучше использовать CSV, или я что-то не понимаю?
И потом, 80% обменов идут с объемами данных меньше 10 Мб. Но тем не менее 50% дятлов пишут такие обмены на DBF.
Возможно, данные с объемами в несколько гигов имеет смысл передавать вообще в двоичном виде, а возможно достаточно банальной архивации.
По поводу производительности, чтобы начать отстрел дятлов, сообщу следующее - все обмены в РИБ 1C идут через XML, в том числе и изменения конфы (в двоичном виде внутри XML). Попробуйте написать это на DBF. Думаю, этим соображением вопрос по производительности закрыт. Т.к. РИБ в 1С работает и дышит на ура на тысячах предприятий.
Ответили: (85)
(84) Почитайте про разработки googl-а о замене простого текстового протокола http на бинарный, даже от такой простой замены предполагают выгоду на каждом коннекте и тут не 10 мб а меньше, но все равно выгода есть.
xml хорош, когда заранее неизвестно какие будут данные (попытки валидации, создания xsd схем, это как раз попытки).
Неудачником можно стать, когда летом на голову сосулька с крыши упадет, а использование или не использования DBF это не признак неудачи.
Тема холивар, fixin как истинная женщина доводов не видит, то что вбил себе в голову на том и стоит.
Есть в v7plus последовательное чтение, без DOM.
Большие объемы в XML - большое зло.
Для переноса БП 1.6->2.0 понадобилось унив. обработку XML на серверный(x64) вызов переделывать.
Ответили: (93)
| Цитата |
|---|
| Почитайте про разработки googl-а о замене простого текстового протокола http на бинарный |
(85) За суку ты очень тонко подметил. Не удержался от плюсика. ;-)
Ответили: (93)
| Цитата |
|---|
| Вопрос: как назвать человека, работающего с форматом с ТАКИМ количеством недостатков? |
Нормальному человеку свойственно использовать ровно ту структуру данных, которая требуется в конкретной ситуации. Скажем, формат ".НКХ" (НепришейКобылеХвост). Совсем новый. Ни разу не использованный.
(89) Отлично! А мне формат NKX определенно понравился. (Хотя более старый NPPR, он же сокращенно NPR, тоже прикольный ;-) )
Чтение файла DBF
В данном случае, мне кажется, что проще написать программу и прокомментировать ее, чем делать что-то еще. Вы уже такие продвинутые, раз добрались до этой главы! Я горжусь вами!
Файл = создатьОбъект("XBASE"); //создаем ссылку на файл DBF
Файл.ОткрытьФайл("catalog.dbf"); //открываем файл на диске
Файл.КодоваяСтраница(1); //задаем кодировку: 0 - windows, 1 - DOS
Если Файл.Открыта()=0 Тогда //проверяем, удалось ли открыть файл
........Сообщить("Не удалось открыть файл!");
КонецЕсли;
Файл.Первая(); //позиционируемся на первой записи
Пока Файл.ВКонце()=0 Цикл //пока не дошли до конца, крутим цикл
.......НомерЗаписи = Файл.НомерЗаписи(); //получаем номер текущей записи
.......НазвТовара = Файл.NAME; //получаем значение поля
.......Цена = Файл.ПолучитьЗначениеПоля("PRICE"); //так тоже можно, но чуть медленнее
.......Файл.Следующая(); //переходим на следующую запись
КонецЦикла;
Файл.Последняя(); //позиционируемся на первой записи
Пока Файл.ВНачале()=0 Цикл //пока не дошли до начала, крутим цикл
.......НазвТовара = Файл.NAME;
.......Цена = Файл.PRICE;
.......Файл. Предыдущая(); //переходим на предыдущую запись
КонецЦикла;
Для н = 1 По Файл.КоличествоЗаписей() Цикл //здесь все понятно, по-моему
......Файл.Перейти(н); //позиционируемся на определенной записи
.......НазвТовара = Файл.NAME;
.......Цена = Файл.PRICE;
КонецЦикла;
Файл.ЗакрытьФайл(); //не забывайте пожалуйста
Запись в файл DBF
Файл = создатьОбъект("XBASE"); //создаем ссылку на файл DBF
//определяем структуру файла
//Синтаксис: ДобавитьПоле(<Название>,<Тип>,<Длина>,<Точность>)
Файл.ДобавитьПоле("NAME","S",50,0);
Файл.ДобавитьПоле("PRICE","N",10,2);
Файл.СоздатьФайл("catalog.dbf"); //создаем файл физически
СпрТовары.ВыбратьЭлементы();
Пока СпрТовары.ПолучитьЭлемент()=1 Цикл
.......Файл.Добавить();
.......Файл.NAME = СпрТовары.Наименование;
.......Файл.УстановитьЗначениеПоля("PRICE",СпрТовары.Цена) //так тоже можно;
.......Файл.Записать();
КонецЦикла;
Файл.ЗакрытьФайл(); //не забывайте пожалуйста
Работа со структурой файла DBF
Например, создадим файл, идентичный по структуре исходному.
//При этом применяется метод ОписаниеПоля, который возвращает характеристики поля с указанным номером
//синтаксис: ОписаниеПоля(<НомерПоля>,<НазваниеПоля>,<Тип>,<Длина>,<Точность>)
Файл1 = СоздатьОбъект("XBASE");
Файл2 = СоздатьОбъект("XBASE");
Файл1 = ОткрытьФайл("file1.dbf");
Для н = 1 По Файл1.КоличествоПолей() Цикл
........НазвПоля = "";
........Тип = "";
........Длина = 0;
........Точность = 0;
........Файл1.ОписаниеПоля(н,назвПоля,Тип,Длина,Точность);
........Файл2.ДобавитьПоле(назвПоля,Тип,Длина,Точность);
КонецЦикла;
Для работы с файлом DBF неизвестной структуры часто применяются следующие методы:
ПолучитьЗначениеПоля(<ИмяПоля>);
УстановитьЗначениеПоля(<ИмяПоля>,<значение>);
Работа с удаленными записями
Файлы DBF устроены таким образом, что удаление записи не приводит к физическому удалению записи из файла. Запись просто помечается на удаление и пропускается при переборе. Таким образом размер файла остается прежним. Чтобы физически удалить все помеченные на удаление записи нужно применить метод Сжать. Средства встроенного языка позволяют работать с такими записями, перебирать их и даже отменять пометку на удаление.
Файл.ПоказыватьУдаленные(1);
Файл.Первая();
Пока Файл.ВКонце()=0 Цикл
......Если Файл.ЗаписьУдалена()=1 Тогда
............Файл.Восстановить();
......КонецЕсли;
......Файл.Следующая();
КонецЦикла;
Файл.Первая();
Пока Файл.ВКонце()=0 Цикл
......Если Файл.PRICE < 1000 Тогда
............Файл.Удалить();
......КонецЕсли;
......Файл.Следующая();
КонецЦикла;
Файл.Сжать(); //удалить записи физически
Можно удалить все записи в файле одним движением. При этом они физически удаляются и не могут быть восстановлены.
Файл.ОчиститьВсе();
Стоит еще отметить про метод Очистить(), что он очищает все поля текущей записи. Атрибуты, соответствующие полям типа "строковый" приобретают значение «пустая строка», числовой — 0, логический — 0, дата — «пустая дата».
Работа с индексами
Для организации упорядочивания содержимого файла БД и поиска в ней по значению одного или нескольких полей применяется механизм индексов. Его применение можно сравнить с сортировкой картотеки по определенному признаку (совокупности признаков). Однако, в отличие от картотеки, файл БД может иметь сразу несколько индексов, и, соответственно, являться упорядоченным одновременно по нескольким признакам. Индексы хранятся в индексном файле. Индексный файл может содержать информацию более чем об одном индексе. Рекомендуется для одного файла DBF иметь один индексный файл, в котором хранятся все индексы для этого файла.
Каждый индекс имеет наименование, признак уникальности, выражение индекса и фильтр. Наименование индекса используется для идентификации индекса. Выражение индекса и фильтр представляют собой написанные на специальном языке выражения, вычисление значения которых для каждой записи позволяет определить ее место при упорядочивании и необходимость помещения ее в упорядоченный список (индекс может содержать упоминание не обо всех записях таблицы, а только об удовлетворяющих выражению фильтра). Уникальный индекс (имеющий установленным признак уникальности) позволяет иметь в индексе ссылки на записи только с различным значением индексного выражения.
Основное правило: индекс нужен, чтобы быстро искать нужную запись. DBF-ФАЙЛ Индекс по фамилии
Физ. номер записи Фамилия
1 Иванов
2 Абдулов
3 Барабанов
4 Мирнов
5 Раскольников
6 Комаров
Фамилия Физ. номер записи
Абдулов 2
Барабанов 3
Иванов 1
Мирнов 4
Комаров 6
Раскольников 5
Нужно быстро найти Комаров. В неупорядоченном исходном файле искать его можно только последовательным перебором всех записей, что будет очень долго при большом числе записей. В индексе найти Комарова можно очень быстро, поскольку индекс отсортирован по полю Фамилия. При этом мы узнаем физический номер записи в файле DBF и производим прямое позиционирование на нужную запись.
После создания структуры базы данных можно добавить индексы следующим образом:
//Синтаксис: ДобавитьИндекс(<Название>, <Выражение>, <Уникальность>, <Убывание>, <Фильтр>)
Файл = СоздатьОбъект("XBase");
Файл.ДобавитьПоле("NAME", 1, 19, 3);
Файл.ДобавитьПоле("PRICE", 2, 25, 0);
Файл.ДобавитьИндекс("IDXCODE", "CODE", 1, 0, "");
Файл.ДобавитьИндекс("IDXNAME", "NAME", 0, 0, "");
Файл.ДобавитьИндекс("IDXNAMECODE", "NAME+CODE", 0, 0, "");
Файл.СоздатьФайл("mydb.dbf", "mydb.cdx");
//1-й вариант
Файл.ТекущийИндекс("IDXNAME");
Файл.Найти("Иванов",0); //передается значение и режим поиска
//2-й вариант
Файл.ТекущийИндекс("IDXNAMECODE");
Файл.Ключ.NAME = "Иванов";
Файл.Ключ.CODE = 123;
Файл.НайтиПоКлючу(0);
//после сбоя рекомендуется заново переформировать все индексы
Файл.Переиндексировать();
В 1С существует специальный язык для задания выражений и фильтра индекса. Подробнее о нем, смотрите в документации на встроенный язык.
Ответили: (93)
(91) это и ее минусы. Т.к. структура одна на файл, поэтому и читается легко. Опять же вопрос - кому надо читать ДБФ?
(92) не забудь еще описать создание файла ДБФ, если ты хочешь с нуля работать. Или ты шаблон везде такскать будешь? И еще раз - задача индексированного поиска - это уже к СУБД, а не к обменам. Читать научитесь когда?
(86) тем не менее РИБ в 1С работает с большими объемами и не парится. Все в XML. ПОчему-то не в DBF. Почему то не в бинарных, как гугл.
(87) 1С решает другие задачи, отличные от твиттера и гугла. Окститесь.
(88) а вшивый все о бане...
(89) Арчибальд, не юродствуй. Я привел доводы в пользу XML и никто не сказал, что я не прав. Я привел примеры решений, где используются XML большого объема - РИБ в 1С. Тоже прав. А теперь ты приходишь и говоришь, чо нужно юзать DBF... Бугога.
Ответили: (97)
(87) 1. Я не тебе отвечал. Но раз уж речь об этом тогда: 2. Какие такие другие задачи решал твиттер и гугль, когда применяли protobuf для обмена информацией между серверами? Ты не в курсе этого, - не знаем, но имеем мнение. 3. Да еще - я не крещенный. 4. Ты ни разу не привел никаких нормальных доводов. Просто в твоей задаче наверное лучше xml, но ты решил, что он круче во всех случаях. Тебе указывают эти случаи, а ты говоришь, а я ж не про это имел ввиду.
(95) Да какие доводы?! Демагогия в чистом виде, по примеру:
Сначала идет вброс:
на улице погода (и все! - никакой конкретики)
Потом на основе вброса "гениальное" утверждение:
Я прав! - ведь никто не опроверг моего утверждения. А вот вы говорите хорошая погода? - фигню несете! - я имел в виду совсем другое. А вы говорите плохая? - так вы вообще такой-рассякой - я о плохой ни слова не говорил.
Вот так он ведет все диспуты. Может хатит кормить троля? Честно говоря, не знаю зачем ресурсу такое...., изгнанное с позором отовсюду откуда только можно (дубовый форум не в счет - помойка редкая).
Ответили: (99)
(93) Если ограничиваться уровнем домохозяек и рыночных торговок, считающих венцом структурированной информации меню в макдоналдсе - это да... Собственно, для нужд обмена подобной информацией формат и создавался. Удачно, неудачно - вопрос другой. В 68 посте можно посмотреть.
А вообще, на физическом уровне любой файл обмена - это последовательность битов. Различие состоит в инструментах, которыми пользуется программист. А инструменты определяются (семантической) моделью данных. Эксимель неплох для небольшого дерева. Уже для двумерных массивов слишком расточителен. Ну, а когда появляются перекрестные ссылки он вполне может отдыхать.
(97) Вот так фиксин и обучается - сначала делает дебильное заявление, все дружно ведутся, начинают горячо доказывать, что это фигня, а правильно совсем не так, а вот так. И что интересно: дело поставлено так, что обучающих (заметим за бесплатно) он еще и какашками забросает, а сам в белом фраке. Шикарный вид!....(с)
Ответили: (99)
(95) не в моей задаче, а в 90% задач обмена
(96) софистика. Не нравится - не обсуждайте. я высказал эмоцию, что меня бесят программисты, которые юзают для обмена не в масштабах РосАтома DBF вместо XML. И объяснил почему. Возразить по факту нечего, но почему-то ДБФ защищуют.
(97) Мы не про вообще, а про задачи обмена. И в любом файле обмена по правилам обмена (Конвертация данных) есть до фига перекрестных ссылок. Курите в сторону тега НПП. Избыточность убирается архивацией. (как это делает 1с в РИБ).
(98) А давайте все же сабж обсуждать, а не приписывать мне то, чего у меня нет.
Резюмируя - DBF для большинства задач обмена - морально устарел. Кто его юзает - тот лодырь. А потом тем, кто придет на их место придется расхлебывать этот "антиквариат".
Ответили: (105)
Сразу после первого выхода "Конвертации данных" под 1С не представляю себе жизнь без нее и без XML в частности...
Автоматическое создание правил - облегчило жизнь спасло глаза, как вспомню написание обмена через DBF так вздрогну особенно с большими объемами переноса функциональных данных ...
Ответили: (106)
(99) "я высказал эмоцию, что меня бесят программисты," - это потому, что ты не программист. А "Не нравится - не обсуждайте" - тут ты не прав. Это не твой личный сайт. И своими дебильными на грани маразма ветками ты оскорбляешь как самих программистов на ИС так и само звание программиста.
"А давайте все же сабж обсуждать" - какой сабж? Что обсуждать - результат твоего психического обострения? Так тебе не на ИС надо, а в психушку - там не только Гении1С в огромном количестве, но и Наполеоны, Иисусики - в общем привычный для тебя контингент.
Ответили: (106)
(111) fixin,
Почему некоторые
" полны такого энтузиазма по поводу XML, если он настолько плох? Ниже представлено несколько предположений.
1. Незнание. Отделы маркетинга управляют разработкой продукта и очень хотят, чтобы он содержал какойнибудь модный термин. Незнание частью общества потребителей реального положения вещей позволяет маркетологам увлечь нас разговорами.
2. Глупость. Технические «эксперты» часто неграмотны, и, так как этому нет никаких оправданий, я назову это глупостью. Я провел несколько часов на последнем SQL PASS Summit, пытаясь найти хоть когото из команды SQL Server, кто мог бы предоставить хотя бы одну хорошую причину для использования XML. К концу диалога вокруг стола собралось как минимум пять «экспертов», и никто из них не мог привести разумных аргументов. Некоторые ответы были просто шокирующими. Один из них утверждал, что самое большое преимущество XML в том, что программисты могут легко подстраивать базу данных под изменяющиеся требования, «загружая» столбцы с множеством атрибутов, чего база данных сделать не может! Здесь я понял, что зря трачу время. Через два часа я покинул их с нарастающим чувством тревоги за будущее SQL Server. Уверен, что они были рады моему уходу, так как смогли вернуться в свою фантастическую XMLнирвану. Вместо того чтобы предпринять какиелибо шаги для более глубокой реализации реляционной модели, они гоняются за своими хвостами, пытаясь внедрить неудачную идею ушедших десятилетий.
3. Жадность. Недавно я прочитал статью, превозносящую возможности XML. По мнению автора, компании полагают, что «XML улучшит их информационные возможности, но также это приведет к необходимости обновления основных систем» (. Примечательно, что он не уточняет, как именно XML «улучшит» чьилибо возможности, кроме благосостояния поставщиков программного и аппаратного обеспечения.
Вы должны иметь в виду, что основные поставщики необязательно ставят именно ваши интересы во главу угла. Я уверен, что, когда XML признают плохой идеей, вам помогут все исправить… за дополнительную плату."
С полным текстом статьи "Является ли XML панацеей?" Дон Петерсона (Don Peterson)
можете ознакомться на
(113) Арчибальд,
Автор темы считает (он несколько раз это повторил) что для обмена лучше использовать XML.
Поэтому и возник этот "пост".
| Цитата |
|---|
| (9) сколько строк в накладных, уважаемый Арчибальд?
Не проще ли индексировать их в ТЗ, а передавать в стандартном XML? |
Ответили: (117)
(112) XML плох по сравнению с чем? Если сравнивать XML и DBF для целей обмена, то DBF в глубоком дауне. Это подтверждает также тот факт, что 1С для РИБ использует XML, а не DBF.
Ваша статья про XML-панацею - это статья не об использовании XML для целей обмена и уж никак не сравнение XML и DBF.
Статью просмотрел, автор недалекий практик-ретроград.
Полоса пропускания решается сжатием. Возможность передачи сложноструктурированных данных (типа файла обмена РИБ) легко искупает некоторую избыточность формата.
К тому же, если возникает вопрос об избыточности и производительности, могу вам схематически продемонстрировать такой XML, который намного удобнее чем CSV:
Контрагенты
Структура
Адрес, Телефон, ИНН
<Данные>
Иванов;333-33-33;34343434
Петров;344-55-66;8789
</Данные>
То бишь CSV, встроенный в XML.
С DBF такую фишку не провернешь...
Окститесь, неудачники!
(114) Нет, тема автора не об этом. Она вообще не относится к обмену данными/хранению данных. Если топик выразить человеческим языком, получится что-то вроде "Я тут с эксимелем познакомился, поэтому я крут, а кто умеет больше меня - лузер". Вместо эксимеля можно подставлять что угодно, это жизненное кредо автора: загадить все вокруг себя и покрасоваться на получившейся куче.
(117) Арчибальд, я бы даже привел другую аналогию - автор говорит нам: "Я научился пользоваться молотком. А все, кто используют в своей работе отвертки, киянки, и прочие инструменты - дурачки".
Лично я всегда был фанатом MS SQL, и к dbf относился настороженно. Но попался один из клиентов, где приходы от поставщиков поставлялись именно в dbf, и Боже мой! мне понравился этот формат. Плюс, скажем, в семерке, оперируя чисто файлами можно делать довольно смелые и варварские вещи - очищать справочники, например :) делая это на коленке и не тратя кучу времени.
Ответили: (122)
(117) Арчибальд,
А если строго по теме, то он прав.
DBF знают, в основном, старики.
И если они до сих пор "юзают" (то есть им приходиться этим зарабатывать себе на жизнь), то их можно назвать неудачниками.
p.s.
Угол зрения зависит от занимаемого места. Закон Майлса.
Ответили: (123) (124) (148) (341)
(121) старики==неудачники? да-м чего-то в жизни я не понимаю
Ответили: (148)
(121)
1. "DBF знают, в основном, старики." - если это Вы ставите в минус "старичкам", то это аж ни разу не в плюс молодым ;-)
2. "И если они до сих пор "юзают"..." - а если юзают не только дбф, а еще кучу форматов (том числе и озвученный в сабже) в зависимости от ситуаци? И главное - в зависимости от требований и пожеланий КЛИЕНТА, а он всегда прав (ну почти всегда).
3. Или такой пример (это если кто за только за скуль ратует): Программа написана лет 12 назад на Делфи, раздается клиентам, затем им периодически (хоть каждый день) скидывается Дбф-й плюс индексный файлы с остатками и другими атрибутами - практически говая база для формирования заявок покупателей. И что, мне теперь чтобы не быть неудачником извернуться наизнанку и переделать все на XML? Глупо... Работает - не трожь, перестанет работать (Закон Мерфи).
Считаю, что в эпоху XML человек, который использует DBF для задач обмена, хранения данных или еще по каким-либо причинам, не связанным непосредственно с тем, что данные ему поставляются только в DBF - неудачник.
Пора выбросить этот формат на свалку истории в теме обмена.
Я понимаю, что в 1С есть функции для работы с DBF, но использовать этот формат для обменов - маразм.
Ответили: (17) (92) (242) (274)