Внешние источники данных на Linux-серверах 1С

0. Sergey Andreev (starik-2005) 1347 10.05.16 21:38 Сейчас в теме
Не знаю, все ли внешние источники, изображенные на картинке, можно использовать в 1С, но многие из них точно можно прикрутить к 1С, в том числе и установленном на сервере под управлением замечательной свободной ОС LINUX.

Перейти к публикации

Комментарии
1. Алексей Лустин (lustin) 902 11.05.16 08:55 Сейчас в теме
(0) все хорошо для начала - но не хватает двух вещей

1. упоминания http://www.unixodbc.org/ - потому как любые проблемные сиутаций придется разруливать гугля/яндекся именно это словосочетание. На русском я обычно даю вот такую ссылку http://www.rldp.ru/mysql/myodbc/unixodbc.htm

2. отображение наименования в режиме динамического списка, а не в режиме прямого просмотра, связано c типом mchar который сделан в виде расширения к PG, на самом деле это баг и по моему он зарегистрирован даже на bugboard.
alevnev; maximklementiev; zinal; +3 Ответить
2. Sergey Andreev (starik-2005) 1347 11.05.16 09:07 Сейчас в теме
(1) lustin, спасибо за коммент. Материал в принципе расчитан на тех, кто интересуется использованием внешних источников на linux. По поводу юниксодбц, то для строки подключения это не нужно особо знать, а по поводу отображения источника из постгри, то если не выбирать колонки с типом byte - все отображается в новых релизах, если не забыть про ключ и представление.

А вот при добавлении записей с русскими буквами, то при их сохранении в mysql источниках имеется проблеика. Не знаете, как решить?
4. AleX gRey (konikamif) 11.05.16 13:17 Сейчас в теме
(2) Нужно при подключении указать локаль. либо в настройках клиента, либо первый запрос должен быть SET NAMES [локаль]
локаль - cp1251 или utf8.
попробуйте подобрать. нет под рукой на чем попробовать
5. AleX gRey (konikamif) 11.05.16 13:23 Сейчас в теме
(2) по ссылочке которую дал lustin.
есть пример для настройки кодировки в файле /etc/odbcinst.ini

CLIENT_LOCALE=
DB_LOCALE=
3. Сергей Вн (EmpireSer) 11.05.16 13:08 Сейчас в теме
(0) Интересно.
Но поправте русский, пожалуйста. Например у вас: "демонического списка", "то Вем нужно".
6. Sergey Andreev (starik-2005) 1347 11.05.16 13:26 Сейчас в теме
(3) EmpireSer, по поводу "Демонический" - то так и есть правильно))) По остальным поводам поправлю.
(4) konikamif, подскажите, как передать SET NAMES ... при обращении к источнику внешних данных из 1С?
(5) konikamif, у меня так не работает. А Вы пробовали или по ссылочке прочитали?
9. AleX gRey (konikamif) 11.05.16 13:59 Сейчас в теме
(6)Не пробовал. Но у вас точно проблема с кодировками.
Можно результаты запроса SHOW VARIABLES LIKE 'character%'; и SHOW VARIABLES LIKE 'collation%';
10. Sergey Andreev (starik-2005) 1347 11.05.16 14:04 Сейчас в теме
(9) konikamif, доберусь до дома - проверю. Но т.к. русские буквы отображаются в динамическом списке внешнего источника и проблема проявляется только при попытке записи, то предположу, что узкое место - это передача из 1С данных в ODBC. Таблица была создана через "CREATE TABLE tabletbl (ID INT(10) UNIQUE AUTO_INCRIMENT, name VARCHAR(100) CHARACTER SET utf8);"
7. Иван Титов (Ibrogim) 971 11.05.16 13:55 Сейчас в теме
Круто. а будет ли работать с таблицами ms access?
8. Sergey Andreev (starik-2005) 1347 11.05.16 13:59 Сейчас в теме
(7) Ibrogim, http://www.easysoft.com/products/data_access/odbc-access-driver/ - тут есть драйвер, но он пропиетарный с пробным периодом 14 дней. Попробуйте.
11. Иван Титов (Ibrogim) 971 11.05.16 15:46 Сейчас в теме
(8) за 600 баксов меня ваш аватар задушит
12. Sergey Andreev (starik-2005) 1347 11.05.16 16:12 Сейчас в теме
(11) Ibrogim, ну Вам за две недели надоест с аксессом мучиться и перетащите базу в аксессе на какой-нить скул (там есть подключение тех же внешних источников хранения) вместо внутреннего хранилища. И уже в тот скул через ODBC будете обращаться.
16. Иван Титов (Ibrogim) 971 13.05.16 07:33 Сейчас в теме
(12)
ну Вам за две недели надоест с аксессом мучиться и перетащите базу в аксессе на какой-нить скул (

к сожалению это невозможно, баз очень много и в разных городах (связь по openVPN).

Сейчас есть файловые базы 1с играющие роль конструктора отчётов через внешние источники и разных EDI шлюзов, но беда в их файловости (нет нормальных регламентных заданий)
17. Sergey Andreev (starik-2005) 1347 13.05.16 10:37 Сейчас в теме
(16) Ibrogim, а не думали о мелкософтовском конструкторе отчетов M$ BI (или как его там?) - он умеет собирать из внешних источников данные и рисовать красивые графики и таблички? Или, как вариант, экспорт данных из аксесса в SQL (тот же MS, express), а потом подключение к нему 1С-ок.
18. Иван Титов (Ibrogim) 971 13.05.16 12:28 Сейчас в теме
(17) У меня и так 1С (в рамках данной задачи) это прокладка. если ещё предварительно выгружать в sql то их уже становится две. тем более придётся придумывать что то чтоб данные были актуальны в этой промежуточной SQL.
А на счёт отчётов конечно можно и в эксель подрубить таблицы акцеса (я и 1С подключал) но не только отчётами едиными жива эта "база прокладка" . Говорю же там всякие ЕДИ и т.д. т.е. различный функционал прикручен внешний.
19. Sergey Andreev (starik-2005) 1347 13.05.16 16:15 Сейчас в теме
13. Дмитрий Никс (aximo) 670 11.05.16 18:00 Сейчас в теме
хотелось бы пояснений об sqlite
14. Sergey Andreev (starik-2005) 1347 11.05.16 21:40 Сейчас в теме
(13) aximo, а инструкция на что?
sergey@sergey-K53SC:~$ apt-cache search sqlite | grep odbc
libghc-hsql-odbc-dev - UnixODBC driver of the HSQL library for GHC
libghc-hsql-odbc-doc - API documentation of the hsql-odbc library for Haskell
libghc-hsql-odbc-prof - UnixODBC driver of the HSQL profiling library for GHC
libgnadeodbc-dbg - GNat Ada Database Environment - ODBC debugging symbols
libgnadeodbc2 - GNat Ada Database Environment - ODBC interface
libgnadeodbc2-dev - GNat Ada Database Environment - ODBC programming interface
libsqliteodbc - ODBC driver for SQLite embedded database
sergey@sergey-K53SC:~$ sudo apt-get install libsqliteodbc
$ cat /etc/odbcinst.ini
[SQLite]
Description		= SQLite ODBC Driver
Driver		= libsqliteodbc.so
Setup		= libsqliteodbc.so
UsageCount		= 1

[SQLite3]
Description		= SQLite3 ODBC Driver
Driver		= libsqlite3odbc.so
Setup		= libsqlite3odbc.so
UsageCount		= 1
Показать
Прикрепленные файлы:
15. Sergey Andreev (starik-2005) 1347 12.05.16 00:06 Сейчас в теме
(14) кстати, под Linux не стала работать sqlite3. Т.е. она работает, но строки получаются без четных букв. Т.е. вместо "Новый объект" выходит "Нвйоък". Не смог забороть - хоть драйвер переписывай.
20. Сергей Смирнов (Serginio) 693 26.08.16 23:28 Сейчас в теме
Добавлю про альтернативу
1С, Linux, Excel, Word, OpenXML, Net Core

Кроме того есть множество провайдеров к различным базам данных, как MS SQL так и другим, в том числе NoSQL

Приведу пример доступа к MS SQL
СборкаSqlClient=ъ(Врап.Сборка("System.Data.SqlClient.dll"));
    SqlConnection=ъ(СборкаSqlClient.GetType("System.Data.SqlClient.SqlConnection"));
    SqlCommand=ъ(СборкаSqlClient.GetType("System.Data.SqlClient.SqlCommand")); 
    
    connection =ъ(Врап.Новый(SqlConnection.ПолучитьСсылку(),ConnectionString));
    connection.Open();
    
    ТекстЗапроса = "Select Номенклатура.DESCR Наименование  From sc84 Номенклатура where DESCR Like '%'+@Строка+'%'
    |order by Номенклатура.DESCR";
    
    
    command = ъ(Врап.Новый(SqlCommand.ПолучитьСсылку(),ТекстЗапроса,connection.ПолучитьСсылку()));
    
    Parameters=ъ(command.Parameters);
    Parameters.AddWithValue("@Строка", "ДСП");
    dr = ъ(command.ExecuteReader());
    
    Пока dr.Read() Цикл
        Сообщить(dr.get_Item("Наименование"));
    КонецЦикла;
Показать

При этом можно сделать обертку DynamicObject над SqlDataReader и использовать так
Пока dr.Read() Цикл
        Сообщить(dr.Наименование);
    КонецЦикла;
21. Sergey Andreev (starik-2005) 1347 28.08.16 10:33 Сейчас в теме
(20) Serginio, по поводу Excel, то, полагаю, для 8.3 это уже не нужно - платформа умеет читать оный формат в табличный документ. А 8.2 на Linux-сервере некоторым образом работает не очень хорошо, да и с Postgres'ом она не на столько хорошо дружит, как 8.3.

Ну и правильно бы было сразу привести функцию ъ()
Функция Ъ(Ссылка)
    // Создаем объект по ссылке полученной из методов .Net классов
    //Физически это строка ёЁ<Ьъ>№_%)Э?&2 содержащее 12 символов для отделения их от других строк
    //и индекс в спике исполуемых объектов на стороне .Net

    рез = Новый("AddIn.NetObjectToNative.NetObjectToNative");
    // И установим ссылку
    рез.УстановитьСсылку(Ссылка);    
    возврат  рез
КонецФункции // СоздатьОбъектПоСсылке()
Показать


А раз нам нужна какая-то внешняя компонента, то данный механизм уже может быть приведен лишь как альтернатива базовым механизмам платформы, которые приведены в статье.
22. Сергей Смирнов (Serginio) 693 28.08.16 11:27 Сейчас в теме
(21)
Я же т напмсал >> Добавлю про альтернативу

Я задал вопрос 1С Linux. Что не хватает по сравнению с Windows?
http://forum.infostart.ru/forum26/topic157263/message1610545/#message1610545
http://www.forum.mista.ru/topic.php?id=779135

Ответов очень мало. Суть то в том, что бы избавиться от ъ, нужна поддержка 1С.
Но по сути то это 60 мегабайт .Net Core на разрядность. Но можно использовать все стандартные классы .Net Core и плюс огромную кучу сторонних библиотек.

И если ввести наряду с ComОбъект и Вэб Сервисам то можно писать

connection = new Net.System.Data.SqlClient.SqlConnection(ConnectionString);

     command = new Net.System.Data.SqlClient.SqlCommand(ТекстЗапроса,connection);


Кроме того можно добавлять русскоязычные синонимы для свойств и методов классов.

Для меня является загадкой чем использование .Net Классов отличается от использования COM объектов или вэб сервисов?
23. Игорь Нешик (ineshyk) 18.12.16 05:21 Сейчас в теме
А под Ubunu 16.04 есть инструкция для 32 битной 1с на 64х машине
24. Sergey Andreev (starik-2005) 1347 18.12.16 12:26 Сейчас в теме
(23) а с какой целью Вы в 2017-м почти году хотите 32-битную систему поставить? В Linux есть возможность использовать мультиархитектуру https://wiki.debian.org/Multiarch/HOWTO
25. Игорь Нешик (ineshyk) 18.12.16 18:59 Сейчас в теме
(24) Так исторически сложилось, что сервер 1с 32битный. Работать с х64 драйвером он не будет.



26. Игорь Нешик (ineshyk) 18.01.18 16:29 Сейчас в теме
подключаюсь в Firebird базе
такой конфиг odbc

[baseName]
Description = Firebird
Driver = Firebird
Dbname = dbname
User = SYSDBA
Password = masterkey
Role = 
CharacterSet =
ReadOnly = No
NoWait = No
Показать


Почему-то не отображаетя кириллица.
Что нужно еще указать в конфиге, чтобы все было ок?
27. Sergey Andreev (starik-2005) 1347 19.01.18 10:45 Сейчас в теме
(26)
Что нужно еще указать в конфиге, чтобы все было ок?
Сложно сказать без возможности проверить, но мысль о "CharacterSet = [Кодировка в базе, например, UTF-8]". Но предположу, что вдоску виндузятники, создавая базу файрберда, указали там cp1251...
28. Игорь Нешик (ineshyk) 22.01.18 09:57 Сейчас в теме
(26) указываю в строке подключения CharacterSet=win1251, не помогло.
База в win1251, но при подключении все равно не читает кириллицу. В чем еще может быть проблема?
29. log777 13.03.18 17:12 Сейчас в теме
У меня на 32х разрядной 1с заработало с версией драйвера Firebird ODBC 2.0.0 с CharacterSet=UNICODE_FSS. База в кодировке Win1251. Локаль Linux UTF8.
30. Василий Лебединский (ivoryblade) 02.04.18 10:49 Сейчас в теме
Добрый день! Столкнулся со схожей проблемой. Сервер Предприятия на Ubuntu необходимо подключаться к базе Firebird на удаленном компе с Windows. До этого стоял старый сервер на Windows Server и обработка работала нормально. Сейчас же ни в какую из 1С подключаться не хочет, хотя в консоли сервера isql подключается нормально к нужной базе. Сервер 1С х64 ОС соответственно тоже.

/etc/odbc.ini
[Firebird]
Description		= Firebird/InterBase® driver
Driver		= /usr/lib/x86_64-linux-gnu/odbc/libOdbcFb.so
Setup		= /usr/lib/x86_64-linux-gnu/odbc/libOdbcFb.so
FileUsage		= 1
UsageCount		= 5



/etc/odbcinst.ini
[Terra]
Description		= Firebird/InterBase® driver
Driver		= Firebird
Dbname		= xx.xx.xx.xx/3050:C:\Windows\System32\vesterm.fdb
User		= SYSDBA
Password		= ********
Role		= 
CharacterSet		= WIN1251
ReadOnly		= No
NoWait		= No
Dialect		= 3
QuotedIdentifier		= Yes
SensitiveIdentifier		= No
AutoQuotedIdentifier		= No
Показать


Строка соединения которую я использую в 1C

DRIVER={Firebird};UID=SYSDBA;PWD=******;DATABASE=xx.xx.xx.xx/3050:C:\Windows\System32\vesterm.fdb


Пробовал использовать alias базы эффект тот же... Помогите пожалуйста разобраться что я не так делаю.
Прикрепленные файлы:
Оставьте свое сообщение