0. starik-2005 1400 10.05.16 21:38 Сейчас в теме

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

Не знаю, все ли внешние источники, изображенные на картинке, можно использовать в 1С, но многие из них точно можно прикрутить к 1С, в том числе и установленном на сервере под управлением замечательной свободной ОС LINUX.

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

Комментарии
Сортировка: Древо
1. lustin 975 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. starik-2005 1400 11.05.16 09:07 Сейчас в теме
(1) lustin, спасибо за коммент. Материал в принципе расчитан на тех, кто интересуется использованием внешних источников на linux. По поводу юниксодбц, то для строки подключения это не нужно особо знать, а по поводу отображения источника из постгри, то если не выбирать колонки с типом byte - все отображается в новых релизах, если не забыть про ключ и представление.

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

CLIENT_LOCALE=
DB_LOCALE=
3. EmpireSer 11.05.16 13:08 Сейчас в теме
(0) Интересно.
Но поправте русский, пожалуйста. Например у вас: "демонического списка", "то Вем нужно".
6. starik-2005 1400 11.05.16 13:26 Сейчас в теме
(3) EmpireSer, по поводу "Демонический" - то так и есть правильно))) По остальным поводам поправлю.
(4) konikamif, подскажите, как передать SET NAMES ... при обращении к источнику внешних данных из 1С?
(5) konikamif, у меня так не работает. А Вы пробовали или по ссылочке прочитали?
9. konikamif 11.05.16 13:59 Сейчас в теме
(6)Не пробовал. Но у вас точно проблема с кодировками.
Можно результаты запроса SHOW VARIABLES LIKE 'character%'; и SHOW VARIABLES LIKE 'collation%';
10. starik-2005 1400 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 993 11.05.16 13:55 Сейчас в теме
Круто. а будет ли работать с таблицами ms access?
8. starik-2005 1400 11.05.16 13:59 Сейчас в теме
(7) Ibrogim, http://www.easysoft.com/products/data_access/odbc-access-driver/ - тут есть драйвер, но он пропиетарный с пробным периодом 14 дней. Попробуйте.
11. Ibrogim 993 11.05.16 15:46 Сейчас в теме
(8) за 600 баксов меня ваш аватар задушит
12. starik-2005 1400 11.05.16 16:12 Сейчас в теме
(11) Ibrogim, ну Вам за две недели надоест с аксессом мучиться и перетащите базу в аксессе на какой-нить скул (там есть подключение тех же внешних источников хранения) вместо внутреннего хранилища. И уже в тот скул через ODBC будете обращаться.
16. Ibrogim 993 13.05.16 07:33 Сейчас в теме
(12)
ну Вам за две недели надоест с аксессом мучиться и перетащите базу в аксессе на какой-нить скул (

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

Сейчас есть файловые базы 1с играющие роль конструктора отчётов через внешние источники и разных EDI шлюзов, но беда в их файловости (нет нормальных регламентных заданий)
17. starik-2005 1400 13.05.16 10:37 Сейчас в теме
(16) Ibrogim, а не думали о мелкософтовском конструкторе отчетов M$ BI (или как его там?) - он умеет собирать из внешних источников данные и рисовать красивые графики и таблички? Или, как вариант, экспорт данных из аксесса в SQL (тот же MS, express), а потом подключение к нему 1С-ок.
18. Ibrogim 993 13.05.16 12:28 Сейчас в теме
(17) У меня и так 1С (в рамках данной задачи) это прокладка. если ещё предварительно выгружать в sql то их уже становится две. тем более придётся придумывать что то чтоб данные были актуальны в этой промежуточной SQL.
А на счёт отчётов конечно можно и в эксель подрубить таблицы акцеса (я и 1С подключал) но не только отчётами едиными жива эта "база прокладка" . Говорю же там всякие ЕДИ и т.д. т.е. различный функционал прикручен внешний.
19. starik-2005 1400 13.05.16 16:15 Сейчас в теме
13. aximo 670 11.05.16 18:00 Сейчас в теме
хотелось бы пояснений об sqlite
14. starik-2005 1400 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. starik-2005 1400 12.05.16 00:06 Сейчас в теме
(14) кстати, под Linux не стала работать sqlite3. Т.е. она работает, но строки получаются без четных букв. Т.е. вместо "Новый объект" выходит "Нвйоък". Не смог забороть - хоть драйвер переписывай.
20. Serginio 725 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. starik-2005 1400 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 725 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. starik-2005 1400 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. starik-2005 1400 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 базы эффект тот же... Помогите пожалуйста разобраться что я не так делаю.
Прикрепленные файлы:
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии



Ведущий программист 1С
Москва
зарплата от 150 000 руб. до 180 000 руб.
Полный день

Руководитель проектов 1С
Москва
Полный день

Консультант-аналитик 1С: ЗУП
Санкт-Петербург
Полный день