Найти в Дзене
Вадим Борисов О.

Некоторые аспекты обмена 1С с сайтом

Часто так случается, что нет возможности обратиться к программисту 1С или к владельцу базы. Поэтому разбирать буду параллельно: и части скрипта на bash и части скрипта на PHP. Если вы не знаете немного на bash, то, в некотором смысле, плохие новости. Не умея в Линукс, вы зависимы от настроения Билли или господ из Купертино. Как показали события, Запад легко отрубает что-угодно. Не обращает внимания на права собственности. 1С -- продукт российский, а зеркала Линукс есть везде. По моему опыту, переход на Линукс на работе прошел совершенно безболезненно. Чего и вам желаю, мои маленькие любители окошек.
Итак, обмен всегда начинает 1С, так как обмен идет по протоколу http.
Для анализа версии обмена советую положить такой скрипт в папку со скриптом обмена:
function logit($var = '', $var1 = '') { $artm_log = dirname(__FILE__) . '/' . 'obmen.log'; $stroka = print_r($var, true) . "\n"; $stroka .= print_r($var1, true) . "\n"; file_put_contents($artm_log, $stroka, FILE_APPEND | LO

Часто так случается, что нет возможности обратиться к программисту 1С или к владельцу базы. Поэтому разбирать буду параллельно: и части скрипта на bash и части скрипта на PHP. Если вы не знаете немного на bash, то, в некотором смысле, плохие новости. Не умея в Линукс, вы зависимы от настроения Билли или господ из Купертино. Как показали события, Запад легко отрубает что-угодно. Не обращает внимания на права собственности. 1С -- продукт российский, а зеркала Линукс есть везде. По моему опыту, переход на Линукс на работе прошел совершенно безболезненно. Чего и вам желаю, мои маленькие любители окошек.
Итак, обмен всегда начинает 1С, так как обмен идет по протоколу http.
Для анализа версии обмена советую положить такой скрипт в папку со скриптом обмена:
function logit($var = '', $var1 = '') {

$artm_log = dirname(__FILE__) . '/' . 'obmen.log';

$stroka = print_r($var, true) . "\n";

$stroka .= print_r($var1, true) . "\n";

file_put_contents($artm_log, $stroka, FILE_APPEND | LOCK_EX);

}
logit($_REQUEST);

Провести полную выгрузку. Проанализировать протокол.
1С меняет варианты без предупреждения. Обновили 1С -- обновляйте и модуль обмена(или свой скрипт).
Первый запрос --
?type=catalog&mode=checkauth
На баше так:
baseurl="http://ваш сайт/obmen.php"
login="логин"
password='пароль'
header1='--header=User-Agent:1C+Enterprise/8.3'
ret=`wget "$header1" --user=${login} --password=${password} --auth-no-challenge -O - -q "${baseurl}?type=catalog&mode=checkauth"`
Сайт отвечает так:
success PHPSESSID 36c770875803b64113212cf94f60156f sessid=h9j4e8c4uk10grsg0hphoq63au timestamp=1652699757
На PHP так:
if(isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])){
$username = trim($_SERVER['PHP_AUTH_USER']);
$password = trim($_SERVER['PHP_AUTH_PW']);
Дальше ваш механизм аутентификации, и, если успешно, то:
echo "success\n";
echo session_name()."\n";
echo md5(time()) . "\n";
echo "sessid=" . session_id() . "\n";
echo "timestamp=".time()."\n";

Продолжу, если кто-то заинтересуется. Подписывайтесь и комментируйте.