Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/121: Рейтинг темы: голосов - 121, средняя оценка - 4.78
 Аватар для Goncharikkk
2 / 1 / 2
Регистрация: 21.08.2018
Сообщений: 26

Python ping true\false

14.12.2018, 15:37. Показов 25947. Ответов 36
Метки ping (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, хочу пинговать сервер, и в зависимости от доступности выполнять констуркцию if\else.

Нашел на просторах код:
Python
1
2
3
4
5
6
7
import os
hostname = "8.8.8.8"
response = os.system("ping -c 1 " + hostname)
if response == 0:
    print("True")
else:
    print("False")
Утверждают что ping шлет True\False, но я всегда получаю False в не зависимости от доступности сервера.


Я пробовал использовать модуль subprocess:


Python
1
2
3
4
5
6
7
8
9
10
11
12
import subprocess as sp
 
def ipcheck():
    status,result = sp.getstatusoutput("ping -c1 -w2 " + str(serv))
    if status == 0:
        print("True")
    else:
        print("False")
 
 
serv = '8.8.8.8'
ipcheck()
Результат тот же, постоянно False.

Подскажите, где я допускаю ошибку!? Спасибо !
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.12.2018, 15:37
Ответы с готовыми решениями:

Функция, возвращающая True и False
Помогите написать функцию, которая возвращает True, если число четное и False, если нечетное. Заранее спасибо)

Работа со списками. True и False
Нужно проверить элементы массива. Если при сложении элемента с переменной ex_candy значение больше наибольшего элемента массива(или равно...

Заменить вывод True и False на другие
А как заменить True на yes False на no в python3 ? Добавлено через 3 часа 2 минуты нужно что-то...

36
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
15.12.2018, 21:25
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Avazart Посмотреть сообщение
Можно посмотреть в сторону либы pyping и вообще искать по ключевым словам "ICMP ping"
Права админа нужны только, есть более простая либа:

pip install ping3

Python
1
2
from ping3 import ping, verbose_ping
print(ping('192.168.0.55')) # None
https://github.com/kyan001/ping3
1
 Аватар для leery_user
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
15.12.2018, 21:49
Цитата Сообщение от Avazart Посмотреть сообщение
pip install ping3
Ха, оказывается я правильно-то мыслил, что может по времени ответа мониторить, так и работает этот ping3 =))) Надо ради прикола наш код выше допилить и посравнивать с его сокетами) Впрочем и пинг тож ждет таймаут...
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
15.12.2018, 22:27
И близко нет.

Библиотеки работают на протоколе ICMP скорее всего, а не через системную утилиту, именно по этому и админ права просят.

Системная утилита делает 4 запроса, а тут один.
0
 Аватар для leery_user
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
15.12.2018, 23:15
Цитата Сообщение от Avazart Посмотреть сообщение
Библиотеки работают на протоколе ICMP скорее всего, а не через системную утилиту, именно по этому и админ права просят.
Ну как бы по коду ping3 открывается сокет и начинается обмен, если превышен таймаут, то возрашается None Причем так же делается 4 запроса, прям в коде прописано. Там импорт sysICMP_ECHO_REQUEST который наверное и отвечает за протокол, но системная утилита работает точно так же и по сути если получить время ее выполнения, то можно сделать вывод о доступности хоста.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#!/usr/bin/env python
 
import sysICMP_ECHO_REQUEST
import socket
import struct
import select
import time
import threading
 
__version__ = "1.4.1"
 
if sys.platform == "win32":
    # On Windows, the best timer is time.clock()
    default_timer = time.clock
else:
    # On most other platforms the best timer is time.time()
    default_timer = time.time
 
# From /usr/include/linux/icmp.h; your milage may vary.
ICMP_ECHO_REQUEST = 8  # Seems to be the same on Solaris.
 
 
def checksum(source_string):
    """
    I'm not too confident that this is right but testing seems
    to suggest that it gives the same answers as in_cksum in ping.c
    """
    sum = 0
    countTo = len(source_string)
    count = 0
    while count < countTo:
        thisVal = source_string[count + 1] * 256 + source_string[count]
        sum = sum + thisVal
        count = count + 2
 
    if countTo < len(source_string):
        sum = sum + ord(source_string[len(source_string) - 1])
 
    sum = (sum >> 16) + (sum & 0xffff)
    sum = sum + (sum >> 16)
    answer = ~sum
    answer = answer & 0xffff
 
    # Swap bytes. Bugger me if I know why.
    answer = answer >> 8 | (answer << 8 & 0xff00)
 
    return answer
 
 
def receive_one_ping(my_socket, ID, timeout):
    """
    receive the ping from the socket.
    """
    timeLeft = timeout
    while True:
        startedSelect = default_timer()
        whatReady = select.select([my_socket], [], [], timeLeft)
        howLongInSelect = (default_timer() - startedSelect)
        if whatReady[0] == []:  # Timeout
            return
 
        timeReceived = default_timer()
        recPacket, addr = my_socket.recvfrom(1024)
        icmpHeader = recPacket[20:28]
        type, code, checksum, packetID, sequence = struct.unpack(
            "bbHHh", icmpHeader
        )
        # Filters out the echo request itself.
        # This can be tested by pinging 127.0.0.1
        # You'll see your own request
        if type != 8 and packetID == ID:
            bytesInDouble = struct.calcsize("d")
            timeSent = struct.unpack("d", recPacket[28:28 + bytesInDouble])[0]
            return timeReceived - timeSent
 
        timeLeft = timeLeft - howLongInSelect
        if timeLeft <= 0:
            return
 
 
def send_one_ping(my_socket, dest_addr, ID):
    """
    Send one ping to the given >dest_addr<.
    """
    dest_addr = socket.gethostbyname(dest_addr)
 
    # Header is type (8), code (8), checksum (16), id (16), sequence (16)
    my_checksum = 0
 
    # Make a dummy header with a 0 checksum.
    # ID: Low-endian identifier, bbHHh: network byte order
    header = struct.pack("bbHHh", ICMP_ECHO_REQUEST, 0, my_checksum, ID, 1)
    bytesInDouble = struct.calcsize("d")
    data = (192 - bytesInDouble) * "Q"
    data = struct.pack("d", default_timer()) + data.encode()
 
    # Calculate the checksum on the data and the dummy header.
    my_checksum = checksum(header + data)
 
    # Now that we have the right checksum, we put that in. It's just easier
    # to make up a new header than to stuff it into the dummy.
    header = struct.pack("bbHHh", ICMP_ECHO_REQUEST, 0, socket.htons(my_checksum), ID, 1)
    packet = header + data
    my_socket.sendto(packet, (dest_addr, 1))  # Don't know about the 1
 
 
def ping(dest_addr, timeout=4, unit="s", src_addr=None, ttl=64):
    """
    Send one ping to destination address with the given timeout.
 
    Args:
        dest_addr: Str. The destination address. Ex. "192.168.1.1"/"example.com"
        timeout: Int. Timeout in seconds. Default is 4s, same as Windows CMD.
        unit: Str. The unit of returned value. Default is "s" for seconds, "ms" for milliseconds.
        src_addr: Str. The IP address to ping from. Ex. "192.168.1.20"
        ttl: Int. The Time-To-Live of the outgoing packet. Default is 64, same as in Linux and macOS.
 
    Returns:
        The delay in seconds/milliseconds or None on timeout.
    """
    my_socket = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP)
    my_socket.setsockopt(socket.SOL_IP, socket.IP_TTL, ttl)
    if src_addr:
        my_socket.bind((src_addr, 0))
    my_ID = threading.current_thread().ident & 0xFFFF
    send_one_ping(my_socket, dest_addr, my_ID)
    delay = receive_one_ping(my_socket, my_ID, timeout)  # in seconds
    my_socket.close()
    if delay is None:
        return None
    if unit == "ms":
        delay *= 1000  # in milliseconds
    return delay
 
 
def verbose_ping(dest_addr, count=4, *args, **kwargs):
    """
    Send pings to destination address with the given timeout and display the result.
 
    Args:
        dest_addr: Str. The destination address. Ex. "192.168.1.1"/"example.com"
        count: Int. How many pings should be sent. Default is 4, same as Windows CMD.
        *: And all the other arguments available in ping().
 
    Returns:
        Formatted ping results printed.
    """
    timeout = kwargs.get("timeout")
    src_addr = kwargs.get("src_addr")
    unit = kwargs.setdefault("unit", "ms")
    for i in range(count):
        output_text = "ping '{}'".format(dest_addr)
        output_text += " from '{}'".format(src_addr) if src_addr else ""
        output_text += " ... "
        print(output_text, end="")
        try:
            delay = ping(dest_addr, *args, **kwargs)
        except socket.gaierror as e:
            print("Failed. (socket error: '{}')".format(e))
            break
        if delay is None:
            print("Timeout > {}s".format(timeout) if timeout else "Timeout")
        else:
            print("{value}{unit}".format(value=int(delay), unit=unit))
    print
 
 
if __name__ == "__main__":
    verbose_ping("example.com")
    verbose_ping("8.8.8.8")
0
 Аватар для pazurs
33 / 26 / 8
Регистрация: 01.04.2017
Сообщений: 118
15.12.2018, 23:30
Полагаю, если третью строку заменить на response = os.system("ping "+hostname+" -n 1") то все заработает
не внимательно смотрим все работает

Добавлено через 2 минуты
Python
1
2
3
4
5
6
7
import os
hostname = "8.8.8.8"
response = os.system("ping "+hostname+" -n 1")
if response == 0:
    print("True")
else:
    print("False")
"8.8.8.8"- сервер гугл возвращает 0
без инета возвращает 1
строку неправильно сформировали

Добавлено через 2 минуты
Да и этот код вроде рабочий:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import os
import platform
 
 
def isUp(hostname):
 
    giveFeedback = False
 
    if platform.system() == "Windows":
        response = os.system("ping "+hostname+" -n 1")
    else:
        response = os.system("ping -c 1 " + hostname)
 
    isUpBool = False
    if response == 0:
        if giveFeedback:
            print (hostname, 'is up!')
        isUpBool = True
    else:
        if giveFeedback:
            print (hostname, 'is down!')
 
    return isUpBool
 
print(isUp("example.com")) #Example domain
print(isUp("localhost")) #Your computer
print(isUp("invalid.example.com")) #Unresolvable hostname: https://tools.ietf.org/html/rfc6761
print(isUp("192.168.1.1")) #Pings local router
print(isUp("192.168.1.135")) #Pings a local computer - will differ for your network
Добавлено через 3 минуты
Python
1
response = os.system("ping -n 1 " + hostname) #Ваша строка
Python
1
response = os.system("ping "+hostname+" -n 1") #Моя строка
Обратите внимание на отличие
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
15.12.2018, 23:51
Цитата Сообщение от necroslider Посмотреть сообщение
Ну как бы по коду ping3 открывается сокет и начинается обмен, если превышен таймаут, то возрашается None Причем так же делается 4 запроса, прям в коде прописано. Там импорт sysICMP_ECHO_REQUEST который наверное и отвечает за протокол, но системная утилита работает точно так же и по сути если получить время ее выполнения, то можно сделать вывод о доступности хоста.
И что удивляет? Очевидно что у всех сетевых протоколов фигурирует понятие таймаута.

4 запроса это у ф-ции verbose_ping() а там есть просто ping()
0
 Аватар для leery_user
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
15.12.2018, 23:59
Цитата Сообщение от pazurs Посмотреть сообщение
"8.8.8.8"- сервер гугл возвращает 0
без инета возвращает 1
строку неправильно сформировали
Попробуйте задать айпишник вашей подсети, но который не назначен хосту - получите True, что не верно. Следующий код абсолютно такой же - неверный.
Цитата Сообщение от pazurs Посмотреть сообщение

response = os.system("ping -n 1 " + hostname) #Ваша строка
response = os.system("ping "+hostname+" -n 1") #Моя строка
Обратите внимание на отличие
Перестановка местами роли не играет

Добавлено через 5 минут
Цитата Сообщение от Avazart Посмотреть сообщение
И что удивляет? Очевидно что у всех сетевых протоколов фигурирует понятие таймаута.
4 запроса это у ф-ции verbose_ping() а там есть просто ping()
Не удиляет, мне кажется что если засечь время системного пинга, то результат будет таким же (не доля секунды в долю секунды, а вобщем). Попробую провести сравнение на досуге, а за наводку на ping3 спасибо)
0
 Аватар для pazurs
33 / 26 / 8
Регистрация: 01.04.2017
Сообщений: 118
16.12.2018, 09:59
Цитата Сообщение от necroslider Посмотреть сообщение
Попробуйте задать айпишник вашей подсети, но который не назначен хосту - получите True, что не верно
Я признаюсь недостаточно компетентен в данной теме, но хотел высказать свое мнение, возможно неверное. Как я понимаю под определение "айпишник вашей подсети, но который не назначен хосту" отлично подходит соединение посредством виртуального роутера с каким-либо девайсом. Не согласный с утверждением, что код не работает провел кое какие исследования, ОС винда, пользовался программой Advnced IP Scanner, которая позволяет мониторить подсети, и замечательно пингует любой адрес. Использовал второй код, хотя мне кажется разницы нет. В 10 строке кода response принимает os.system, что определено как "исполняет системную команду, возвращает код её завершения (в случае успеха 0)".То есть если сокет(или хрен его знает что-там) принимает данные, переменная response становится равна нулю, далее isUpBool = True. Функция возвращает нам Тру, что значит путь активен( в коде is up!), правда я так и не понял, что там делают все giveFeedback(мне кажется их надо все убрать, позже сделаю).
Иначе return вернет False.Тут уже несколько вариантов:1 сервер не активен ( в коде is down!);2 Превышен интервал ожидания для запроса. Второй вариант иногда проскакивает и при активном подключении. Для улучшения оптимизации достаточно добавить в код последовательность из 3-5 запросов на каждый адрес, и при основном количестве положительных результатов считать, что isUpBool = True.
Проверка строки(#Example domain) при значении "yandex.ru" за все время тестирования около 3 ч. все время True. С целью проверки высказанного "Пинг вернет не 0, только если вместо IP вбить ерунду"- вбил,"аггнпdex.ru" вернул False. Но в данном коде и обозначено,- что False это "НЕТ СОЕДИНЕНИЯ". По поводу того, что функция os.system должна вернуть значение времени,- так мы же в коде не проверяем иное значение, достаточно нуля для результата.
Также на маил ру ответ на вопрос- "Как работает функция system("ping ..."); ? Язык Си"-от некто "Просветленный (26960)" -system() -- вызов внешней проги в конкретной реализации.
а что уж там вернёт ping - зависит от версии проги версии операционки версии пинга.. .
Принято что возвращает ноль если нет ошибки, а иначе код ошибки. но сбои в каждой ситуации разные.Поэтому мне не понятно, с его вы взяли, что ноль- это ошибка сервера. Лично я пингуя апи веб серверов получаю ответ- пустой список,и также ассоциирую его с нулем, зная что это хорошо,- сервер отвечает.
Проверка строки(#Your computer) при значении "83.149.46.206" (Мой IP в сети) все время False. Этому я конечно немного удивлен, но не лезу в дебри, и воспринимаю данное, как невозможность позвонить самому себе.
Проверка строки(#Unresolvable hostname) при значении "https://tools.ietf.org/html/rfc6761" все время False. Но так она и переводится как- "Неразрешимое имя хоста"
Остальные строки пинговали адреса подключенных к виртуальному роутеру девайсов, в 90% случаев возвращая Тру. Или временная ошибка - 10%
Был замечен неприятный момент, что при активном пинговании одного адреса много раз подряд, девайс отваливался от вайфая. Но к тому же у меня по всей видимости неправильно было что-то настроено, потому-что они и так сами по себе отваливались каждые 2-3 мин.При последующем подключении к вифи айпи девайсов изменялся, и приходилось постоянно корректировать тестовый код.
Еще был замечен момент, что при отключении девайсов в некоторых случаях в течение небольшого промежутка времени поток иногда возвращал Тру. Возможно, умная машина кампютер не сразу закрывает потоки.
Исходя из вышеперечисленных выводов для себя решил, что данный код, при небольшой доработке, вполне функционален, и в отношении "айпишник вашей подсети, но который не назначен хосту". И как мне кажется, что чтобы понять код, нужно просто принять, что True- это верно, и никак иначе, а False переводится как ложь.
Все вышенаписанное сугубо личное мнение, я не специалист, питон просто хобби, могу и ошибаться, буду рад выслушать контраргументы.
Выложить доработанный код не обещаю, так- как любой сможет это сделать, если лень не помешает сделаю. Также, возможно, кто либо из "Великих" сможет разъяснить непонятные моменты(например почему запрос на свой айпи-False?)
Миниатюры
Python ping true\false  
0
 Аватар для leery_user
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
16.12.2018, 11:03
Цитата Сообщение от pazurs Посмотреть сообщение
при активном пинговании одного адреса много раз подряд, девайс отваливался от вайфая
Это вобще никак не связано, что-то с системой или железом.
Цитата Сообщение от pazurs Посмотреть сообщение
воспринимаю данное, как невозможность позвонить самому себе
Возможно, я бы даже сказал что это само собой разумеющееся(для этого даже loopback придумали), однако если вы за Nat-ом то так просто это не прокатит, так как будет(или не будет если запрещено) пинговаться ваш маршрутизатор, если вы не настроили проброс icmp пакетов.

Поднимите сеть (не важно, виртуальную или прям с проводами и вайфаем) и потестируйте код на несуществующих IP адресах, пока вы пингуете адреса в своей подсети - всегда True. После этого попробуйте тоже самое через ping3, результат будет противоположный и верный. Прилагаю скриншоты.
Миниатюры
Python ping true\false   Python ping true\false  
0
 Аватар для Goncharikkk
2 / 1 / 2
Регистрация: 21.08.2018
Сообщений: 26
17.12.2018, 18:51  [ТС]
necroslider,
Попробуйте задать айпишник вашей подсети, но который не назначен хосту - получите True, что не верно.
Тут вы правы, я тестил с 8.8.8.8 и 8.8.8.1 казалось что все работает, а нет...

Возможно еще кто-то подскажешь варианты? Мне нужно решение без использования сторонних модулей.
0
 Аватар для leery_user
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
18.12.2018, 00:35
Цитата Сообщение от Goncharikkk Посмотреть сообщение
Мне нужно решение без использования сторонних модулей
В принципе ничто не мешает скопировать код ping3 в свой модуль, я его приводил выше и тем самым избавиться от установки его из репозитория.
0
 Аватар для Goncharikkk
2 / 1 / 2
Регистрация: 21.08.2018
Сообщений: 26
18.12.2018, 11:17  [ТС]
necroslider,
В принципе ничто не мешает скопировать код ping3 в свой модуль
У меня интерпретатор питон встроен в ПО, подгружать и редактировать нечего не могу, только стандартный набор библиотек Python 2.7
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.12.2018, 12:37
Ну тогда писать модуль на С/С++ и подгружать его.
0
 Аватар для Goncharikkk
2 / 1 / 2
Регистрация: 21.08.2018
Сообщений: 26
18.12.2018, 13:18  [ТС]
Avazart,
подгружать и редактировать нечего не могу
Ответ от разработчика ПО, можно использовать только стандартный набор модулей.
Миниатюры
Python ping true\false  
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.12.2018, 13:44
Та стандартно же можно ф-ции из dll вызывать так?
0
 Аватар для Goncharikkk
2 / 1 / 2
Регистрация: 21.08.2018
Сообщений: 26
18.12.2018, 14:13  [ТС]
Avazart, тут я не прав, спасибо разобрался.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.12.2018, 14:49
Но права админа все равно будут нужны.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.12.2018, 14:49

Как без оператора if вывести True or False?
Пользователь вводит трехзначное число, программа выводит true, если число делится на 4 без остатка , и False если не делится, как это можно...

Если подставить while is True или while is False - код не работает
n = int(input()) while n: print(n % 10, end='') n //= 10 Что здесь означает while n? Если подставить while is True или...

Логической переменной t присвоить значение true или false
Логической переменной t присвоить значение true или false в зависимости от того, есть ли натуральное число k степенью 3 или нет

Написать функцию def, возвращающую то значение (True или False)
Нужно написать функцию, возвращающую то значение (True или False), которое среди значений ее аргументов x, y, z встречается чаще. Формат...

Проверка упорядоченности элементов списка по возрастанию с возвратом True или False
Здравствуйте, У меня задача проверить по возрастанию ли находятся элементы в списке или нет. Если да то возврат True если нет то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru