Переключение на Главную Страницу Страницы: 1 ... 68 69 [70] 71 72 ... 79 ОтправитьПечать
Очень популярная тема (более 25 ответов) 1sqlite (число прочтений - 459510 )
OlegY
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 21. Августа 2022
Re: 1sqlite
Ответ #1035 - 22. Августа 2022 :: 17:43
Печать  
Djelf писал(а) 22. Августа 2022 :: 11:23:
OlegY писал(а) 21. Августа 2022 :: 20:09:
[quote author=183639303A5C0 link=1214205575/841#841 date=1478683162][quote author=25212623480 link=1214205575/840#840 date=1478673522]Djelf, а есть возможность прикрутить чтение произвольнольного dbf?

  Скажите пожалуйста, а не осталось у вас расширения 'libspatialite-2.dll'? А то на сайте только последние версии и библиотека теперь называется mod-spatialite.dll и в 1sqlite она как расширение не загружается.   


А у меня загрузилась сборка /* х86 разумеется
SELECT load_extension("mod_spatialite") as mod;
PRAGMA module_list; -- пишет что модули загружены
   Спасибо вам большое за подсказку. Я пытался грузить без указания as mod, как описано на их сайте.
  
Наверх
 
IP записан
 
OlegY
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 21. Августа 2022
Re: 1sqlite
Ответ #1036 - 22. Августа 2022 :: 18:00
Печать  
Djelf писал(а) 22. Августа 2022 :: 11:23:
OlegY писал(а) 21. Августа 2022 :: 20:09:
Djelf писал(а) 09. Ноября 2016 :: 09:19:
[quote author=25212623480 link=1214205575/840#840 date=1478673522]Djelf, а есть возможность прикрутить чтение произвольнольного dbf?

  Скажите пожалуйста, а не осталось у вас расширения 'libspatialite-2.dll'? А то на сайте только последние версии и библиотека теперь называется mod-spatialite.dll и в 1sqlite она как расширение не загружается.   


Почему не фокспро? Он очень быстр.
   
    Хотелось чтобы грузилось в виртуальную таблицу Sqlite, т.к. это временные наборы данных из кучи не очень больших  файлов(до 10000 строк). Скорость загрузки меня и со стандартным 1с xBase устраивает. Но там поиск текстовых данных очень примитивен, а в режиме встроенных сравнений на < или > так и вовсе выдаёт непредсказуемые результаты,    
 
С mod_spatialite необходимо копровать в 1с/bin почти все что содержится в сборке, зависимостей очень много стало...

    Спасибо и за эту подсказку. Я это уже увидел когда пытался собрать из исходников библиотеку(в исходниках есть старые версии). А до момента с 1с/bin я не дошёл т.к. собрать не получилось даже версию 2.4. Всё время чего-то не хватало для сборки. Попробовал 4.0.0 версию, а там ещё больше зависимостей.
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #1037 - 23. Августа 2022 :: 07:40
Печать  
OlegY писал(а) 22. Августа 2022 :: 18:00:
    Спасибо и за эту подсказку. Я это уже увидел когда пытался собрать из исходников библиотеку(в исходниках есть старые версии). А до момента с 1с/bin я не дошёл т.к. собрать не получилось даже версию 2.4. Всё время чего-то не хватало для сборки. Попробовал 4.0.0 версию, а там ещё больше зависимостей. 

Еще одна подсказка:
ФС.УстТекКаталог("d:\1C\BIN\mod_spatialite");
SELECT load_extension('mod_spatialite');
Загрузит mod_spatialite из каталога d:\1C\BIN\mod_spatialite
Чтобы не сильно мусорить в каталоге bin
« Последняя редакция: 23. Августа 2022 :: 10:29 - Djelf »  
Наверх
www  
IP записан
 
OlegY
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 21. Августа 2022
Re: 1sqlite
Ответ #1038 - 23. Августа 2022 :: 11:21
Печать  
Djelf писал(а) 23. Августа 2022 :: 07:40:
[quote author=243C2F36322B6B651D303C3431732F285D0 link=1214205575/1036#1036 date=1661191216]
Еще одна подсказка:
ФС.УстТекКаталог("d:\1C\BIN\mod_spatialite");
SELECT load_extension('mod_spatialite');
Загрузит mod_spatialite из каталога d:\1C\BIN\mod_spatialite
Чтобы не сильно мусорить в каталоге bin


Спасибо большое. Было время сегодня попробовать эти подсказки(правда на домашнем компе с Вин10).
Каталог установился только в следующей редакции:
ФС.УстТекКаталог(КаталогПрограммы());
т.е. если его указывать вручную, то так:
ФС.УстТекКаталог("d:\1C\BIN\");
А вот дальше не пошло. Всё равно, после команды
SELECT load_extension('mod_spatialite');
выскакивает сообщение:
{Обработка.ИмпортНакладных.Форма.Модуль(429)}: Не найден указанный модуль.
  Попробую ещё сегодня эти хинты на работе, там компы все с XP.
  
Наверх
 
IP записан
 
OlegY
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 21. Августа 2022
Re: 1sqlite
Ответ #1039 - 23. Августа 2022 :: 17:52
Печать  
Заработало наконец-то. Я обратил внимание, что вы используете каталог отличный от установки 1с по умолчанию. Попробовал создать такой каталог на диске D. Никаких ошибок не выскочило. После этого в каталоге BIN(программы 1с) создал подкаталог SPATIALITE и в него поместил все библиотеки, которые шли вместе с mod_spatialite.dll.
Вызов получился следующий:
ФС.УстТекКаталог(КаталогПрограммы()+"SPATIALITE");   
SELECT load_extension('mod_spatialite');
  Так всё заработало без проблем.

  Странно то, что когда я пытался помещать эти библиотеки в родной каталог BIN 1с, ничего не работало. Я так и не понял в чём причина. 
    В любом случае без ваших подсказок я бы не разобрался.
  Спасибо Вам большое за помощь.
« Последняя редакция: 23. Августа 2022 :: 23:02 - OlegY »  
Наверх
 
IP записан
 
OlegY
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 21. Августа 2022
Re: 1sqlite
Ответ #1040 - 27. Августа 2022 :: 12:16
Печать  
    Здравствуйте, Djelf!

  Я похоже рано обрадовался. На win10 всё работает прекрасно, а на XP вываливается следующее сообщение:
Запрос.ВыполнитьЗапрос("SELECT load_extension('mod_spatialite');");
{Обработка.ИмпортНакладных.Форма.Модуль(398)}: Не найдена указанная процедура. 
  Для проверки работоспособности загрузки расширений на XP, я загрузил strmatch.dll. Загрузка прошла штатно, без вылета. Похоже новая версия  mod_spatialite для XP слишком новая. Поэтому у меня к вам тот же вопрос: "Не осталось ли у вас где-нибудь в архивах старой версии libspatialite?"
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #1041 - 28. Августа 2022 :: 12:58
Печать  
OlegY писал(а) 27. Августа 2022 :: 12:16:
    Здравствуйте, Djelf!

  Я похоже рано обрадовался. На win10 всё работает прекрасно, а на XP вываливается следующее сообщение:
Запрос.ВыполнитьЗапрос("SELECT load_extension('mod_spatialite');");
{Обработка.ИмпортНакладных.Форма.Модуль(398)}: Не найдена указанная процедура. 
  Для проверки работоспособности загрузки расширений на XP, я загрузил strmatch.dll. Загрузка прошла штатно, без вылета. Похоже новая версия  mod_spatialite для XP слишком новая. Поэтому у меня к вам тот же вопрос: "Не осталось ли у вас где-нибудь в архивах старой версии libspatialite?"


Нет, я ее не использовал, поэтому старых и не было
Зато у меня платиновая медаль по гуглению Подмигивание
Тут лежит https://cloud.mail.ru/public/9znr/ZJ6ULE9aR в mod_spatialite.7z
Это 4я версия билиотеки. Проверил в VirtualBox - в Хрюше грузится.
На Хрюше ФС.УстТекКаталог не работает, придется мусорить в 1с/bin или в system32.

P.S. "ИмпортНакладных" из какого источника то? Если Excel то лучше Йокселя ничего нет, а если из dbf то и сама 1С нормально справляется.
« Последняя редакция: 28. Августа 2022 :: 15:12 - Djelf »  
Наверх
www  
IP записан
 
OlegY
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 21. Августа 2022
Re: 1sqlite
Ответ #1042 - 28. Августа 2022 :: 17:12
Печать  
Djelf писал(а) 28. Августа 2022 :: 12:58:
[quote author=475F4C55514808067E535F5752104C4B3E0 link=1214205575/1040#1040 date=1661602614]    
 
Зато у меня платиновая медаль по гуглению Подмигивание
   Подтверждаю! Я гуглил всю последнюю неделю, но так и не нашёл данной ссылки.))

Это 4я версия билиотеки. Проверил в VirtualBox - в Хрюше грузится.
На Хрюше ФС.УстТекКаталог не работает, придется мусорить в 1с/bin или в system32.

  Спасибо большое. Буду пробовать.

P.S. "ИмпортНакладных" из какого источника то? Если Excel то лучше Йокселя ничего нет, а если из dbf то и сама 1С нормально справляется.


    У меня сам импорт идёт из .odt(Создаётся Файнридером .odt потому что Файнридер у меня хотя и купленный в .doc временами сохраняет криво. Вместо букв краказябры). Хотя конечно-же работает импорт из dbf, из xls и doc и их современных вариантов.  Но не в этом дело. Товар приходит от множества поставщиков и у каждого из них один и тот же товар называется по разному. Причём иногда это название различно до неузнаваемости.
Поэтому приходиться держать множество внешних файлов соответствия формата dbf(по одному на поставщика) для занесения туда информации о соответствии моих наименований с конкретными наименованиями поставщика. 
  Что мне требуется читать сейчас? Когда приходит например новая палитра лаков для ногтей из 150 тонов. Название всех этих 150 наименований отличается только номером тона(иногда к нему добавляют название цвета), то вводить вручную 150 новых соответствий не очень удобно.
Я внутренними средствами 1с сделал, что в этом случае система после ввода первого соответствия(по моей команде) остальные соответствия во внешнюю таблицу dbf заносит сама автоматически находя похожее соответствие. Точно также и во внутренний справочник Номенклатура(у меня все эти 150 тонов это одно наименование. Номер тона, название тона и штрихкод(если есть) загружаются в подчиненный справочник).  Но внутренние средства 1с работают, когда номер тона находится в конце названия. Однако в последнее время многие поставщики стали практиковать то что номер тона находится в середине названия. И тут xBase приходит в ступор и либо вообще не находит ничего в таблице соответствия либо выдаёт непредсказуемые результаты. Поэтому я и попробовал spatialite. Гружу файл соответствия в виртуальную таблицу. А дальше нужный результат ищу SQL запросом. Попробовал. Результат превзошёл все ожидания. Правда пока на win10. Завтра буду пробовать на XP spatialite 4 версию. Спасибо.
PS Конечно проще всего было бы если бы можно было таблицу значений 1с загружать в виртуальную таблицу. Тогда и spatilite был бы не нужен. Тогда всё это выглядело бы так xBase в ТЗ. ТЗ в Виртуальную. Но я мало знаком с 1sqlite и не знаю есть ли такая возможность.
« Последняя редакция: 28. Августа 2022 :: 18:14 - OlegY »  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #1043 - 28. Августа 2022 :: 19:05
Печать  
OlegY писал(а) 28. Августа 2022 :: 17:12:
PS Конечно проще всего было бы если бы можно было таблицу значений 1с загружать в виртуальную таблицу. Тогда и spatilite был бы не нужен. Тогда всё это выглядело бы так xBase в ТЗ. ТЗ в Виртуальную. Но я мало знаком с 1sqlite и не знаю есть ли такая возможность. 


Становится понятнее зачем это...

1. тз/сз легко перегонятся в базу sqlite, мануаль от Орефкова на преждем месте: https://snegopat.ru/downloads/1sqlite/ файл doc_1023.zip там все хорошо описано.
Это метод SQLiteBase: УложитьТЗ(ТЗ, ИмяТаблицы, [КакПостоянную]).
Моих изменений не так много и оригинальнеые методы не сломаны.

2. "Поэтому приходиться держать множество внешних файлов соответствия формата dbf(по одному на поставщика)"
Все это можно засунуть либо в одну таблицу 1С, либо в базу sqlite.
Вот так у меня это выглядит, на табличном поле 1с++ с поставщиком данных от 1sqlite. Импорт заказов из xls с помощью йоксель аналогичен.
https://gyazo.com/321ed8267bfb37f8d60ff2b6ab0dd187
https://gyazo.com/046e7292ffad3c7e039e3507e20ae602
Может натолкнет на некоторые идеи.

3. Можно делать микс из базы 1С и баз sqlite на диске вот так: https://www.sqlitetutorial.net/sqlite-attach-database/

4. Strmatch не использую. Сборку реанимировал, да.
Но перевел на шаблон Орефкова, чтобы она работала как ВК без регистрации в реестре и обеспечил гибридное использование, т.е. она раотает одновлеменно и как ВК для 1С и как плагин для sqlite.
Она работает, вот только объяснять каждому юзверю почему сортировка немного странная мне как то не охота  Смех
Обычно использую like, ну можно и pcre, модуль тоже есть.
  
Наверх
www  
IP записан
 
OlegY
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 21. Августа 2022
Re: 1sqlite
Ответ #1044 - 28. Августа 2022 :: 19:43
Печать  
     Спасибо большое за подсказки. Буду изучать. Т.к. мой импорт(в существующем виде) мне ещё 20 лет назад написала программист под заказ, а тогда ещё не было ни 1cpp ни 1sqlite.  Год назад у меня появилось время привести его реализацию к современным требованиям. Так как делаю это в свободное от работы время, то этот год ушёл на реализацию автоопределениея полной структуры импортируемой накладной(в том числе номера колонок, положения колонок и разделителей колонок в таблице, строк шапки и дна). Особенно это необходимо после фанридера, когда на ней стоят птички при приёмке товара и фанридер выборочно(не в каждой строке) добавляет на птичках новую колонку, либо может добавить колонки если принтер поставщика полосатит, либо если колонки сфомированы не сплошной вертикальной линией, символами типа | или I(здесь фанридер тоже может колонки создать по разному) а также успел сделать автоопределение Наименования поставщика даже если его реквизитов нет в накладной(это нужно также для доступа к соответствующей таблице соответствия) Сейчас уже могу двигаться дальше. Поэтому с большим интересом прочитал форум в этой ветке. Спасибо вам за ваш труд. И своевременные подсказки))
  
Наверх
 
IP записан
 
OlegY
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 21. Августа 2022
Re: 1sqlite
Ответ #1045 - 28. Августа 2022 :: 21:14
Печать  
[quote author=123C333A30560 link=1214205575/1043#1043 date=1661713559][quote author=776F7C65617838364E636F6762207C7B0E0 link=1214205575/1042#1042 date=1661706767]
Все это можно засунуть либо в одну таблицу 1С, либо в базу sqlite.
Вот так у меня это выглядит, на табличном поле 1с++ с поставщиком данных от 1sqlite. Импорт заказов из xls с помощью йоксель аналогичен.
https://gyazo.com/321ed8267bfb37f8d60ff2b6ab0dd187
https://gyazo.com/046e7292ffad3c7e039e3507e20ae602
Может натолкнет на некоторые идеи.
   Уже натолкнула. Поставщиков много и много времени занимает просмотр их огромных прайсов с целью сравнения цен. Всё думал, как это автоматизировать. Табличное поле + 1sqlite + Йоксель - это именно то что нужно. Так прайсы присылаются обычно в Екселе, то их можно грузить Йокселем в базу sqlite, а дальше сравнивать их цены находя в разных прайсах подобные наименования. Естественно сюда же можно задействовать и таблицы соответствия.
  
Наверх
 
IP записан
 
OlegY
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 21. Августа 2022
Re: 1sqlite
Ответ #1046 - 29. Августа 2022 :: 16:43
Печать  
Это 4я версия билиотеки. Проверил в VirtualBox - в Хрюше грузится.
На Хрюше ФС.УстТекКаталог не работает, придется мусорить в 1с/bin или в system32.

         Попробовал на реальной XP: ФС.УстТекКаталог - работает. Все интерфейсы грузятся без проблем. Однако столкнулся с другим глюком - перестала работать функция LIKE в запросе. На вин 10 работает, а на XP ничего не находит и выдаёт пустую тз на выходе. Сама виртуальная таблица dbf заполняется полностью всем товаром из файла, т.к. запрос со звездочкой выдаёт все записи из файла dbf. Для успокоения совести попробовал вариант без ФС.УстТекКаталог и с замусориванием BIN 1с содержимым папки mod_spatialite. Ничего не поменялось. Самое интересное, что с внутренними dbf 1c(без спатиалайт) LIKE на XP работает прекрасно.   

тз/сз легко перегонятся в базу sqlite, мануаль от Орефкова на преждем месте: https://snegopat.ru/downloads/1sqlite/ файл doc_1023.zip там все хорошо описано.
Это метод SQLiteBase: УложитьТЗ(ТЗ, ИмяТаблицы, [КакПостоянную]).
 
      Попробовал. Этот вариант работает и на 10 и на XP. Пробовал с xBase, но сюда прямо так и просится драйвер fox. В общем остановился на этом варианте. Спасибо за помощь!      
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #1047 - 30. Августа 2022 :: 05:48
Печать  
OlegY писал(а) 29. Августа 2022 :: 16:43:
Самое интересное, что с внутренними dbf 1c(без спатиалайт) LIKE на XP работает прекрасно.

Таблицы 1С видимо прогоняются через движок sqlite встроенный в ВК, а в нем пропатчены like и glob для поддержки русского языка и регистронезависимости.
Остальные запросы видимо каким то образом перехватывает spatialite, она имеет зависимоть от непропатченой libsqlite3-0.dll
Так быть не должно, потому что у них еще подключается libiconv-2.dll т.е. поддержка русского языка есть, но наверное регистрозависимая.
Но судя по исходниткам spatialite, like в ней не перехватывается.

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

« Последняя редакция: 30. Августа 2022 :: 07:04 - Djelf »  
Наверх
www  
IP записан
 
OlegY
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 21. Августа 2022
Re: 1sqlite
Ответ #1048 - 31. Августа 2022 :: 20:53
Печать  
Djelf писал(а) 28. Августа 2022 :: 19:05:
[quote author=776F7C65617838364E636F6762207C7B0E0 link=1214205575/1042#1042 date=1661706767]
2. "Поэтому приходиться держать множество внешних файлов соответствия формата dbf(по одному на поставщика)"
Все это можно засунуть либо в одну таблицу 1С, либо в базу sqlite.


      Попробовал засунуть dbf файлы в базу sqlite как постоянную(в виде файла) Сделал запрос, поиск конкретного наименования во всех таблицах в базе sqlite. Результат в ТЗ отобразился почти мгновенно. Сделал похожий запрос с файлами dbf - перебор всех dbf файлов, импорт каждого во временную таблицу sqlite c помощью xBase, Запрос конкретного значения из временной таблицы sqlite. Дальше заполнение ТЗ с помощью встроенной в 1с функции Заполнить. Итоговый результат в ТЗ отображается через 6сек.  Не знаю может я во втором случае намудрил. Наверное проще было все файлы уложить в одну временную базу sqlite и затем одним запросом. Но не думаю, что было бы быстрее.   В общем Ваше предложение понравилось. Ещё раз спасибо.      
« Последняя редакция: 31. Августа 2022 :: 22:18 - OlegY »  
Наверх
 
IP записан
 
OlegY
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 21. Августа 2022
Re: 1sqlite
Ответ #1049 - 03. Сентября 2022 :: 08:31
Печать  
Здравствуйте, Djelf!

А скажите пожалуйста в 1sqlite работает запрос такого вида:

INSERT INTO T_Flg(kod_new,kod_old,naim_o,naim_n,kol_up)
VALUES('17310','8801046898277','Dental Clinic 2080 з/паста 125г Мягкая защита 1/36','ЗП Дентал клиник 125',1);      ?

У меня такой запрос с помощью ВыполнитьЗапрос() вываливается с ошибкой, но ошибку никакую в ОписаниеОшибки() не выводит и в таблицу ничего не добавляет.
Глянул структуру таблицы в которую пытаюсь добавить строку. Это таблица базы SQLITE. Она создавалась методом УложитьТЗ().  В ней тип значения во всех колонках пустой. Может в этом дело?
Использую 1sqlite.dll от 10.06.2022г.
« Последняя редакция: 03. Сентября 2022 :: 19:07 - OlegY »  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 68 69 [70] 71 72 ... 79
ОтправитьПечать