php и 1С предприятие v8

DiMA

php.spb.ru
Команда форума
> никто на лету из 1С8 никаких данных не получает

Что значит никто? Я получаю. Быстро работает. Удобно. Половину функционала сайта пишут 1С-программисты в пхп файлах. Так же через него к MSSQL доступ дается (может это и через другу обертку и быстрее, но можно забить).

А выгрузка данных куда-то... это позапрошлый век. Зачем так напрягаться с конвертациями и выгрузками, когда можно юзать все на лету? Не понимаю.
 

slach

Новичок
=)) Дима привет
рад видеть

> никто на лету из 1С8 никаких данных не получает
Что значит никто? Я получаю. Быстро работает. Удобно. Половину функционала сайта пишут 1С-программисты в пхп файлах. Так же через него к MSSQL доступ дается (может это и через другу обертку и быстрее, но можно забить).
мое сообщение датировано 2007м годом =)
COM соединение на 1С8.1 устанавливает connect от 10 до 15 секунд... для 8.2 не проверял =)
тогда еще если ты помнишь НЕ БЫЛО вменяемого способа через libevent писать на php демоны, которые могли бы обслуживать ПУЛ постоянных 1Сных COM соединений

НАПРЯМУЮ имелось ввиду "из MSSQL базы" в обход 1С сервера приложений... не имея конвертора словаря метаданных в ту генерированную структуру таблиц MSSQL
потому что тогда в 2007 еще не было вменяемых и общеизвестных способов конвертировать словарь метаданных
 

DiMA

php.spb.ru
Команда форума
привет :)

COM соединение на 1С8.1 устанавливает connect от 10 до 15 секунд...
конечно, решение в том, чтобы пользоваться уже готовым соединением (вернее, сразу пулом в 3-5 штук)... когда я эту фигню в 2006м писал, про libevent вообще не знал, что не мешало демонов делать
 

slach

Новичок
привет :)
конечно, решение в том, чтобы пользоваться уже готовым соединением (вернее, сразу пулом в 3-5 штук)... когда я эту фигню в 2006м писал, про libevent вообще не знал, что не мешало демонов делать
замечательно
show me code для такого демона ;)
который работал бы на каком нибудь php5.1\php4.2

http://www.php.net/manual/en/intro.pcntl.php
до сих пор в доке написано недоступно для windows ;)

ну как минимум socket_select уже был :)
ок. убедили =)
ничего невозможного нет

socket_select это здорово конечно забыл я про него
но обслуживать такой демон будет ОДИН входящий запрос за один раз =)
можно конечно поиграться с балансировкой через nginx поскольку "демон" будет юзать com под win32 и биндить listen сокеты на разные порты =)
 

DiMA

php.spb.ru
Команда форума
socket_select тоже не использовал.. так, местные костыльки
 

zoon

Новичок
а еще вопрос: если попытаться соединиться с файловой БД и в пути будут русские символы, то connect не пройдет
пишет что-то вроде:
Ошибка установки соединения: exception 'com_exception' with message '<b>Source:</b> V82.COMConnector.1<br/><b>Description:</b> Информационная база не обнаружена
Отсутствует файл базы данных 'C:\СРСС\InfoBase/1Cv8.1CD'
хотя путь к БД C:\тест\InfoBase

как быть?
 

slach

Новичок
в какой кодировке русские символы то? cp1251? utf8? cp866??

var_dump(is_file('C:\СРСС\InfoBase/1Cv8.1CD'));

что говорит?
 

zoon

Новичок
файл в utf8, но это второй уже эксперимент с кодировкой, потому как файл работы с 1С ANSI и все работает до тех пор пока в пути латиница
var_dump(is_file('C:\СРСС\InfoBase/1Cv8.1CD')); вот что говорит bool(false)
 

slach

Новичок
ну и ? че тут непонятного???
меняем кодировку имени файла, до тех пор пока is_file не начнет говорить true
потому что есть шанс что у вас там ко всему прочему еще и опечатка

потом в этой же кодировке пытаемся все подсунуть в COM объект в строку соединения

по моему cp1251 кодировка нужна
 

zoon

Новичок
с этим разобрался, но остался вопрос с пробелами в путях
по описанию параметры строки коннекта надо брать в пару двойных кавычек, но как бы не пытался это сделать то 1с ругается, то сам пхп
можно пример как это сделать?
примерно как это: $connect_str = "File=""путь к БД"";Usr=""имя"";Pwd=""пароль""';";
 
Сверху