Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/117: Рейтинг темы: голосов - 117, средняя оценка - 4.85
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533

Скачивание папки с FTP - сервера по актуальной дате

04.10.2018, 09:39. Показов 33584. Ответов 897
Метки ftp, tls (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Возможно ли реализовать скачку с фтп папки в которой находятся файлы, папок много, а скачать файлы нужно из той папки, которая названа сегодняшней датой
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.10.2018, 09:39
Ответы с готовыми решениями:

Скачивание папки с FTP - сервера по актуальной дате (2)
Продолжение темы https://www.cyberforum.ru/csharp-net/thread2329455.html var mStr = "20181206_20-15-30.txt"; var dtAr =...

Скачивание папок с FTP-сервера
всем приветик ! подскажите плиииз ! есть батник он подключается к фтп и копирует оттуда файлы все ! open 89.253.247.10 metko ...

Скачивание файла с FTP-сервера
Здравствуйте. Подскажите как загрузить файл с сервера по ftp?

897
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
12.12.2018, 09:47
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Damenikx Посмотреть сообщение
В них мы будем заносить нашу информацию из двух предыдущих свойств
не верно, это нужно что-бы проверить что в свойствах действительно находятся нужные пароль и имя пользователя!

Добавлено через 39 секунд
теперь вам понятен код?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
12.12.2018, 09:58  [ТС]
Да, понятен.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
12.12.2018, 10:04
ну что же тогда откорректируем тест:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
FTPSettings settings= new FTPSettings 
{
   UserFTP="Test",  
    PwdFTP="12345678" 
};
 
         [TestMethod]
        public void TestFolderNotExist() 
        {                 
            string FolderName = "Кейптаун"; 
            var fe =settings.DirectoryCheck(FolderName); 
            Assert.IsFalse(fe, "Не правильное значение проверки, ожидалось: ложь, пришло: истина");
            Console.WriteLine("TestFolderNotExist прошёл успешно {0}",fe); 
        }
откорректируем сам тестируемый метод:
C#
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
public bool DirectoryExists(string directory)
{
      try
        {
         
             var ftp = (FtpWebRequest)FtpWebRequest.Create(FTPAdress + directory);
           
             ftp.Credentials = new NetworkCredential(UserFTP, PwdFTP); ///логин, пароль
             ftp.KeepAlive = false;///не держим соединение после выполнения запроса
             ftp.UseBinary = true;///тип данных для передачи
             ftp.Method = WebRequestMethods.Ftp.PrintWorkingDirectory;
 
               using (FtpWebResponse response = ftp.GetResponse() as FtpWebResponse)
                {          
                    Console.WriteLine("{0}| {1}", response.StatusCode, response.StatusDescription );
                    Console.WriteLine("{0} {1}", "FTPAdress/" + directory, response.LastModified);
                    Console.WriteLine("{0} |{1}", response.StatusCode, response.StatusDescription );         
                   if(response.StatusCode == FtpStatusCode.PathnameCreated)
                     {
                           Console.WriteLine("{0} |{1}", "FTPAdress/" + directory, true);
                             return true;
                     }
                     else
                      {
                         Console.WriteLine("{0} |{1} |f", "FTPAdress/" + directory, false);
                        return false;
                      }
 
                }
               
        }catch(Exception ex)
         {
            Console.WriteLine("{0} |{1} |ex", "FTPAdress/" + directory, false);  
             Console.WriteLine("ex");
             Console.WriteLine();
            Console.WriteLine(ex.Message);          
          return false;
          }
И прогоним тест, ожидаем что тест не пройдет.
(выкладывайте результаты).
0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
12.12.2018, 11:15  [ТС]
Имя теста: TestFolderNotExist
Полное имя теста: UnitTestProject1.Test_FTPSettings_Direct oryCheck.TestFolderNotExist
Источник теста: c:\Users\admin\Documents\Visual Studio 2012\Projects\FTPFilesTaker\UnitTestProj ect1\UnitTest1.cs : строка 23
Выходные данные теста: Сбой
Продолжительность теста: 0:00:00,0592407

Результат Сообщение: Ошибка в Assert.IsFalse. Не правильное значение проверки, ожидалось: ложь, пришло: истина
Результат Трассировка стека: в UnitTestProject1.Test_FTPSettings_Direct oryCheck.TestFolderNotExist() в c:\Users\admin\Documents\Visual Studio 2012\Projects\FTPFilesTaker\UnitTestProj ect1\UnitTest1.cs:строка 30
Результат Стандартный вывод:
PathnameCreated| 257 "/" is current directory.

FTPAdress/Кейптаун 01/01/0001 00:00:00
PathnameCreated |257 "/" is current directory.

FTPAdress/Кейптаун |True
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
12.12.2018, 11:35
Замечательно, теперь снимаем Коментарии с метода TestFolderExist
Прогнать оба теста, в результате один тест пройдет второй нет.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
12.12.2018, 11:54  [ТС]
Имя теста: TestFolderNotExist
Полное имя теста: UnitTestProject1.Test_FTPSettings_Direct oryCheck.TestFolderNotExist
Источник теста: c:\Users\adn\Documents\Visual Studio 2012\Projects\FTPFilesTaker\UnitTestProj ect1\UnitTest1.cs : строка 28
Выходные данные теста: Сбой
Продолжительность теста: 0:00:00,030197

Результат Сообщение: Ошибка в Assert.IsFalse. Не правильное значение проверки, ожидалось: ложь, пришло: истина
Результат Трассировка стека: в UnitTestProject1.Test_FTPSettings_Direct oryCheck.TestFolderNotExist() в c:\Users\adn\Documents\Visual Studio 2012\Projects\FTPFilesTaker\UnitTestProj ect1\UnitTest1.cs:строка 31
Результат Стандартный вывод:
PathnameCreated| 257 "/" is current directory.

FTPAdress/Кейптаун 01/01/0001 00:00:00
PathnameCreated |257 "/" is current directory.

FTPAdress/Кейптаун |True

Прошёл:

Имя теста: TestFolderExist
Полное имя теста: UnitTestProject1.Test_FTPSettings_Direct oryCheck.TestFolderExist
Источник теста: c:\Users\adn\Documents\Visual Studio 2012\Projects\FTPFilesTaker\UnitTestProj ect1\UnitTest1.cs : строка 20
Выходные данные теста: Пройден
Продолжительность теста: 0:00:00,0618572

Результат Стандартный вывод:
PathnameCreated| 257 "/" is current directory.

FTPAdress/Москва 01/01/0001 00:00:00
PathnameCreated |257 "/" is current directory.

FTPAdress/Москва |True
PathnameCreated| 257 "/" is current directory.

FTPAdress/Москва 01/01/0001 00:00:00
PathnameCreated |257 "/" is current directory.

FTPAdress/Москва |True
Тест прошёл успешно
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
12.12.2018, 13:33
итак, нам надо справоцировать ошибку, либо смену кода в методе, который тестируем, ваши идеи?

Добавлено через 5 минут
попробуем переписать наш метод и прогнать тесты:
C#
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
public bool DirectoryExists(string directory)
{
      try
        {
         
             var ftp = (FtpWebRequest)FtpWebRequest.Create(FTPAdress + directory);
           
             ftp.Credentials = new NetworkCredential(UserFTP, PwdFTP); ///логин, пароль
             ftp.KeepAlive = false;///не держим соединение после выполнения запроса
             ftp.UseBinary = true;///тип данных для передачи
             ftp.Method = WebRequestMethods.Ftp.GetFileSize;//изменено здесь!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
               using (FtpWebResponse response = ftp.GetResponse() as FtpWebResponse)
                {          
                    Console.WriteLine("{0}| {1}", response.StatusCode, response.StatusDescription );
                    Console.WriteLine("{0} {1}", "FTPAdress/" + directory, response.LastModified);
                    Console.WriteLine("{0} |{1}", response.StatusCode, response.StatusDescription );         
                   if(response.StatusCode == FtpStatusCode.PathnameCreated)
                     {
                           Console.WriteLine("{0} |{1}", "FTPAdress/" + directory, true);
                             return true;
                     }
                     else
                      {
                         Console.WriteLine("{0} |{1} |f", "FTPAdress/" + directory, false);
                        return false;
                      }
 
                }
               
        }catch(Exception ex)
         {
            Console.WriteLine("{0} |{1} |ex", "FTPAdress/" + directory, false);  
             Console.WriteLine("ex");
             Console.WriteLine();
            Console.WriteLine(ex.Message);          
          return false;
          }
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
12.12.2018, 13:43  [ТС]
Я сделал, как вы написали (спровоцировал ошибку). Ошибка 550 Файл недоступен.

Добавлено через 1 минуту
Результат в студию:

Имя теста: TestFolderExist
Полное имя теста: UnitTestProject1.Test_FTPSettings_Direct oryCheck.TestFolderExist
Источник теста: c:\Users\adn\Documents\Visual Studio 2012\Projects\FTPFilesTaker\UnitTestProj ect1\UnitTest1.cs : строка 20
Выходные данные теста: Сбой
Продолжительность теста: 0:00:00,0962991

Результат Сообщение: Ошибка в Assert.IsTrue. Не правильное значение проверки, ожидалось: истина, пришло: ложь
Результат Трассировка стека: в UnitTestProject1.Test_FTPSettings_Direct oryCheck.TestFolderExist() в c:\Users\adn\Documents\Visual Studio 2012\Projects\FTPFilesTaker\UnitTestProj ect1\UnitTest1.cs:строка 23
Результат Стандартный вывод:
FTPAdress/Москва |False |ex
ex

Удаленный сервер возвратил ошибку: (550) Файл недоступен (например, не найден или к нему нет доступа).
FTPAdress/Москва |False |ex
ex

Удаленный сервер возвратил ошибку: (550) Файл недоступен (например, не найден или к нему нет доступа).




Имя теста: TestFolderNotExist
Полное имя теста: UnitTestProject1.Test_FTPSettings_Direct oryCheck.TestFolderNotExist
Источник теста: c:\Users\adn\Documents\Visual Studio 2012\Projects\FTPFilesTaker\UnitTestProj ect1\UnitTest1.cs : строка 28
Выходные данные теста: Пройден
Продолжительность теста: 0:00:00,0120117

Результат Стандартный вывод:
FTPAdress/Кейптаун |False |ex
ex

Удаленный сервер возвратил ошибку: (550) Файл недоступен (например, не найден или к нему нет доступа).
TestFolderNotExist прошёл успешно False
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
12.12.2018, 14:21
Цитата Сообщение от Damenikx Посмотреть сообщение
Я сделал, как вы написали (спровоцировал ошибку). Ошибка 550 Файл недоступен.
по подробнее, что вы сделали?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
12.12.2018, 16:24  [ТС]
Спровоцировал ошибку путём смены кода в методе, который мы тестируем.

Добавлено через 1 час 55 минут
Пока Вас не было, я вроде как сделал =)

Добавлено через 7 секунд
Но это не точно)
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
12.12.2018, 17:22
Цитата Сообщение от Damenikx Посмотреть сообщение
Пока Вас не было, я вроде как сделал =)
выкладывай код того что сделал!
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
13.12.2018, 08:16  [ТС]
Я не менял ни метод ни тест, я просто сделал вывод и ошибку.

Добавлено через 2 минуты
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
try
            {
                if (directoryCheck == false)
                    foreach (var css in new FtpFilesInfo().CurFolderDirectoryDetails(CurFolderPath, settings))
                    {
                        listBox1.Items.Add(css);
                    }
            }
            catch
            {
                string captionFoldeCheckError = "Ошибка ввода.";
                string bodyFolderCheckError = "Имя папки, которую вы ввели, не существует.";
                MessageBox.Show(bodyFolderCheckError, captionFoldeCheckError, MessageBoxButtons.OK, MessageBoxIcon.Error); 
            }
Добавлено через 10 минут
Мы же договорились, что я код не меняю. Я не менял
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
13.12.2018, 08:52
Цитата Сообщение от Damenikx Посмотреть сообщение
я просто сделал вывод и ошибку.
противоречит
Цитата Сообщение от Damenikx Посмотреть сообщение
Мы же договорились, что я код не меняю. Я не менял
ладно, но вы пошли не по тому пути, сейчас задача сделать так, что-бы тесты проходили.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
13.12.2018, 09:01  [ТС]
Я просто тот код который был раньше убрал с комментариев и слегка переписал, надо же было чем-то заниматься полка вы были заняты. Сейчас я его обратно закомментирую и всё Тесты же вроде бы вчера прошли?
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
13.12.2018, 09:36
Цитата Сообщение от Damenikx Посмотреть сообщение
Тесты же вроде бы вчера прошли?
да, а это:
Цитата Сообщение от Damenikx Посмотреть сообщение
Выходные данные теста: Сбой
Цитата Сообщение от Damenikx Посмотреть сообщение
Результат Сообщение: Ошибка в Assert.IsTrue. Не правильное значение проверки, ожидалось: истина, пришло: ложь
по вашему тест прошел???
Так что у нас пока тест не пройден, о дальнейшем развитии программы речи идтить не может!
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
13.12.2018, 11:01  [ТС]
Я понял, жду указаний, код вернул на место.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
13.12.2018, 13:32
проверяй имя пользователя и пароль! Ты делаешь не правильно! Смотри на тесты, у тебя должен тест проходить, а он не проходит, зато тест который не должен проходить, наоборот, где-то косяк, ищи!
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
13.12.2018, 14:37  [ТС]
Ошибка в тесте я так понимаю?

Добавлено через 3 минуты
Хотя нет, не в тесте. Буду искать.

Добавлено через 3 минуты
Хм, странно, но!
Я немного решил поэксперементировать и в во в этой части:

C#
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
public bool DirectoryExists(string directory)
{
      try
        {
         
             var ftp = (FtpWebRequest)FtpWebRequest.Create(FTPAdress + directory);// - - - ВОТ ТУТ!!! 
           
             ftp.Credentials = new NetworkCredential(UserFTP, PwdFTP); ///логин, пароль
             ftp.KeepAlive = false;///не держим соединение после выполнения запроса
             ftp.UseBinary = true;///тип данных для передачи
             ftp.Method = WebRequestMethods.Ftp.GetFileSize;//изменено здесь!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
               using (FtpWebResponse response = ftp.GetResponse() as FtpWebResponse)
                {          
                    Console.WriteLine("{0}| {1}", response.StatusCode, response.StatusDescription );
                    Console.WriteLine("{0} {1}", "FTPAdress/" + directory, response.LastModified);
                    Console.WriteLine("{0} |{1}", response.StatusCode, response.StatusDescription );         
                   if(response.StatusCode == FtpStatusCode.PathnameCreated)
                     {
                           Console.WriteLine("{0} |{1}", "FTPAdress/" + directory, true);
                             return true;
                     }
                     else
                      {
                         Console.WriteLine("{0} |{1} |f", "FTPAdress/" + directory, false);
                        return false;
                      }
 
                }
               
        }catch(Exception ex)
         {
            Console.WriteLine("{0} |{1} |ex", "FTPAdress/" + directory, false);  
             Console.WriteLine("ex");
             Console.WriteLine();
            Console.WriteLine(ex.Message);          
          return false;
          }
Убрал + directory. Ведь если мы оставим метод подключения с параметром (FTPAdress + directory) то получится адрес типа:

ftp://111.11.11.11:5577/directory

А ведь такого фтп пути у нас нет.

Я убрал и тест перестал ругаться на ошибку входа.

Добавлено через 20 минут
В общем ошибка теперь в тесте вот такая:

Запрашиваемый URI - адрес не допустим для этой команды фтп.

Хотя программа работает и всё выводит и выдаёт ошибку при отсутствии папки.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
13.12.2018, 14:45
Все правильно, по сути, проблема, о которой я не знал:
Несмотря на реализацию статус кодов, они по сути являются бесполезными
попробуйте переписать так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public bool DirectoryExists(string directory)
{
      try
        {
             var ftp = (FtpWebRequest)FtpWebRequest.Create(FTPAdress + directory);
             ftp.Credentials = new NetworkCredential(UserFTP, PwdFTP); ///логин, пароль
             ftp.KeepAlive = false;///не держим соединение после выполнения запроса
             ftp.UseBinary = true;///тип данных для передачи
             ftp.Method = WebRequestMethods.Ftp.GetFileSize;
 
               using (FtpWebResponse response = ftp.GetResponse() as FtpWebResponse)
                {          return true;  }
        }catch(Exception ex)
         {
            Console.WriteLine("{0} |{1} |ex", "FTPAdress/" + directory, false);  
             Console.WriteLine("ex");
             Console.WriteLine();
            Console.WriteLine(ex.Message);          
          return false;
          }
}
и после этого прогнать тесты.

Добавлено через 3 минуты
теперь задача сводится к тому, чтобы, найти такой
WebRequestMethods.Ftp
при котором для существующей папки, получалось подсоединится, а при не существующей вылетала ошибка
(пробуйте различные варианты, пока оба теста не пойдут).
Вот здесь я говорю поэксперементируйте с WebRequestMethods.Ftp!
Попробуйте все методы, если не получится, то тогда будем думать еще.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
13.12.2018, 15:04  [ТС]
Я поменял так, как вы сказали, но теперь ошибка входа.

Мы ведь опять добавили (FTPAdress + directory)

Добавлено через 15 минут
Если убрать directory, то всё равно ошибка URI-адреса.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.12.2018, 15:04

Скачивание файла с ftp сервера
Привет! Решил попробовать написать систему обновления для своей программы. Есть вот такая идея: создать сайт и вручную залить по ftp на...

Скачивание каталога с FTP сервера
Доброго времени суток. Работаю с FTP сервером в C# при помощи библиотеки BytesRoad.Net.Ftp. Появилась необходимость скачивать ВЕСЬ каталог...

Скачивание файлов с FTP сервера на локальный ЖД
Здравствуйте. Возникла проблема, возможно глупая и её решение должно быть элементарным, но всё же :) Добавлено через 9 минут ...

Скачивание файла с FTP-сервера с использованием Wget
Доброго времени суток! Задача - необходим батник чтобы он: 1. Скачивал необходимый файл с ftp(хранилище можем подобрать иное) 2....

Скачивание папки с удаленного сервера
WebClient wb = new WebClient(); wb.DownloadFile("https://cloud.mail.ru/public/46F4/Eqhw66Kb2", @"C:\test\sandbox"); Вот такой код...


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

Или воспользуйтесь поиском по форуму:
800
Закрытая тема Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru