|   |   | 
| 
 | TCP Soсket из 1С | ☑ | ||
|---|---|---|---|---|
| 0
    
        Gsof 24.07.25✎ 13:08 | 
        Добрый день, не подскажите где можно посмотреть пример кода как работать из 1с с TCP Soсket (не путать с WebSocket)     | |||
| 1
    
        arsik гуру 24.07.25✎ 13:22 | ||||
| 2
    
        craxx 24.07.25✎ 13:22 | 
        (0) кроме как через ВК - никак.     | |||
| 3
    
        Asmody 24.07.25✎ 13:23 | 
        Платформа не поддерживает работу с TCP socket.
 Искать внешнюю компоненту, которая умеют. Или написать самому | |||
| 4
    
        craxx 24.07.25✎ 13:25 | 
        (3) А еще лучше написать внешний сервис (хоть на чем, хоть на том же питоне) - и обмениваться штатно по http-сервису.     | |||
| 5
    
        Dzenn гуру 24.07.25✎ 16:28 | 
        я развернул на апаче локальный адрес и обращался к нему из 1С по хттп. А там, моё обращение подхватывал пхп, и содержимое тела запроса отправлял уже через сокет:
 
<?php
if($_SERVER['REQUEST_METHOD'] == 'GET') {
    include 'help.html';
}
if($_SERVER['REQUEST_METHOD'] == 'POST') {
	$entityBody = file_get_contents('php://input');
	$fp = fsockopen("192.168.1.89", 9100, $errno, $errstr, 30);
	if (!$fp) {
        echo "$errstr ($errno)<br />\n";
    } else {
        fwrite($fp, $entityBody);
        fclose($fp); // To close the connection
    }	
}
?>
а вообще, задачу вида "напиши на пхп код отправки хттп запроса через сокет" тебе сейчас любой ии решит: https://chat.qwen.ai/s/dacf4709-2164-403f-a722-02a9d23f6039?fev=0.0.166 | |||
| 6
    
        Dzenn гуру 24.07.25✎ 16:30 | 
        а вот содержимое help.html:
 <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Сервер печати</title> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body> <h1> PHP-скрипт для печати на принтеры Zebra </h1> <div class="info"> <p> Привет, это php-скрипт, посредством которого из 1С происходит печать на складские принтеры Zebra. Я нужен потому, что 1С-ка не умеет отправлять запросы на сокеты, но умеет отправлять HTTP-запросы. Та справка, которую ты сейчас видишь, выдаётся при методе GET. Для отправки на печать необходимо использовать метод POST, а также приложить ZPL-команду в тело запроса и IP-адрес принтера в заголовок 'Zebra' запроса. Удачки тебе. Закиров Дамир, май 2024, <a href="https://t.me/zakirovdamir">t.me/zakirovdamir</a></p> </div> </body> </html> | |||
| 7
    
        Asmody 24.07.25✎ 16:30 | 
        (5) неспортивно.
 Пусть ИИ ВК напишет. На rust'е | |||
| 8
    
        Dzenn гуру 24.07.25✎ 16:33 | 
        (8) тогда уж пусть напишет новый бинарник 1С, поддерживающий сокеты 😎     | |||
| 9
    
        Il19 25.07.25✎ 04:02 | 
        Прокладку тру ванэсник должен так: https://oscript.io/syntax/TCPConnection     | |||
| 10
    
        Gsof 25.07.25✎ 14:13 | 
        всем спасибо за участите , если кому интересно
 то вот пример кода (необходимо установить Winsock) // Создаем COM-объект Winsock Сокет = Новый COMОбъект("MSWinsock.Winsock"); // Настраиваем параметры подключения УдаленныйХост = "192.168.1.1"; // IP или доменное имя сервера УдаленныйПорт = 5000; // Порт сервера Попытка // Устанавливаем параметры подключения Сокет.RemoteHost = УдаленныйХост; Сокет.RemotePort = УдаленныйПорт; // Подключаемся к серверу Сокет.Connect(); // Ждем завершения подключения (асинхронный режим) Пока Сокет.State = 6 Цикл // sckConnecting Ожидание(1); // Пауза 100 мс КонецЦикла; // Проверяем статус подключения Если Сокет.State = 7 Тогда // sckConnected Сообщить("Подключение успешно!"); // Отправляем данные на сервер ДанныеДляОтправки = "привет мир"; Сокет.SendData(ДанныеДляОтправки); Сообщить("Отправлено: " + ДанныеДляОтправки); // Ждем ответа (можно использовать событие DataArrival, но в 1С проще поллинг) Пока НЕ Сокет.BytesReceived > 0 Цикл Ожидание(1); // Даем серверу время на ответ КонецЦикла; // Проверяем, есть ли данные в буфере Если Сокет.BytesReceived > 0 Тогда ПринятыеДанные = ""; Сокет.GetData(ПринятыеДанные); Сообщить("Получено от сервера: " + ПринятыеДанные) Иначе Сообщить("Сервер не ответил."); КонецЕсли; ИначеЕсли Сокет.State = 9 Тогда // sckError ОшибкаТекста = Сокет.Error; Сообщить("Ошибка подключения: " + ОшибкаТекста); Иначе Сообщить("Неизвестный статус: " + Сокет.State); КонецЕсли; Исключение Сообщить("Ошибка: " + ОписаниеОшибки()); КонецПопытки; // Закрываем соединение Сокет.Close(); | |||
| 11
    
        Злопчинский 25.07.25✎ 17:58 | 
        (10) И как это будет работать под линуксом?     | |||
| 12
    
        Dzenn гуру 26.07.25✎ 23:33 | 
        (10) всё, имеющее приставку "COM", попахивает экскрементами мамонтов и осуждается при попытках использования     | |||
| 13
    
        Волшебник 27.07.25✎ 16:45 | 
        (12) Кем, кем осуждается?!     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |