Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
 Аватар для Serj190492
160 / 159 / 59
Регистрация: 19.02.2015
Сообщений: 830

Насколько можно оптимизировать?

22.08.2016, 21:39. Показов 1669. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Написал контроллер, который выводит данные из БД с возможностью удалить любые данные.
Интересует, можно ли написать подобный код короче и что можно изменить в текущем в сторону его улучшения...

PHP
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
parent::OnInput();
        $this->title = $this->title . ' :: Просмотр сведений';
 
        //Сохраняем все внешние данные ($_GET) в массив "data"
        $this->data = input();
 
        if (!(int)$this->data['id_contragent']) {
            header("Location: /"); // если не передан ид или он не числовой - на главную!
            die();
        }
 
        // Если просто зашли на страницу - получаем и выводим данные из БД
        $this->contragent = M_Contragents::Instance()->get_one($this->data['id_contragent']);
        $this->contracts = M_Contracts::Instance()->get_contracts($this->data['id_contragent']);
        $this->programms = M_Programms::Instance()->get_programms($this->data['id_contragent']);
 
        // Если нужно удалить что-либо
         if ($this->data['del']) {
             switch ($this->data['del']) {
                 case 'contragent':
                     C_Delete::DeleteContragent($this->data['id_contragent']);
                     break;
                 case 'contract':
                     C_Delete::DeleteContract($this->data['id_contract']);
                     break;
                 case 'product':
                     C_Delete::DeleteProduct($this->data['id_product']);
                     break;
             }
         }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.08.2016, 21:39
Ответы с готовыми решениями:

Как можно оптимизировать этот код?
Всем привет! Специалисты, подскажите пожалуйста, как это можно оптимизировать. Нам нужно плучить несколько переменных. Каждая из них...

Насколько можно оптимизировать этот программный код?
static void Main(string args) { int massiv1 = new int; Random rand = new Random(); int...

Насколько можно разогнать камень?
Biostar A780LB (ver.6.2), phemom 960t, насколько можно разогнать камень на такой слабой материнке?

20
 Аватар для Serj190492
160 / 159 / 59
Регистрация: 19.02.2015
Сообщений: 830
23.08.2016, 06:58  [ТС]
и вот такая структура пойдет?)
Миниатюры
Насколько можно оптимизировать?  
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
23.08.2016, 19:20
Не стоит данные записывать в свойство $this->data, если Вы их устанавливаете только для текущего метода.
Достаточно локальной переменной в методе. То есть:
PHP
1
$data = input();
Почему столько одиночек (Singleton)? Это точно необходимо?

Далее, эта конструкция switch не добавляет качества. Сдаётся мне, что можно выполнить лучше. В чём различия вызываемых методов в switch?

Добавлено через 6 минут
Цитата Сообщение от Serj190492 Посмотреть сообщение
и вот такая структура пойдет?
Вполне. Только лучше добавить папку "bootstrap", например, и перенести в неё файл "autoload.php". Не место ему среди контроллеров.
Файл "functions.php", что в папке с моделями, обычно принято называть "helpers.php". Ну это чтобы совсем красиво. И в папке с моделями ему тоже не место, я думаю. Только куда её перенести, я ещё не придумал.
1
 Аватар для Serj190492
160 / 159 / 59
Регистрация: 19.02.2015
Сообщений: 830
23.08.2016, 19:23  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
если Вы их устанавливаете только для текущего метода
Точно... Знал, но машинально добавил $this.

Цитата Сообщение от Para bellum Посмотреть сообщение
Почему столько одиночек (Singleton)? Это точно необходимо?
это 3 класса, которые вызываются из разных контроллеров. Подумал, что неудобно каждый раз создавать новый экземпляр, поэтому сделал их Singleton'ами

Цитата Сообщение от Para bellum Посмотреть сообщение
В чём различия вызываемых методов в switch?
Вот:
PHP
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
class C_Delete
{
 
    function __construct()
    {
    }
 
    static function DeleteContragent($id_contragent){
 
        if(!is_int($id_contragent)) exit ("Нет такого контрагента!");
 
        $db = M_MSQL::Instace();
        $where = "id_contragent = ".$id_contragent;
 
        $db->Delete('contragents', $where);
        $db->Delete('contracts', $where);
        $db->Delete('products', $where);
    }
 
    static function DeleteContract($id_contract){
 
        if(!is_int($id_contract)) exit ("Нет такого договора!");
 
        $db = M_MSQL::Instace();
        $where = "id_contract = ".$id_contract;
 
        $db->Delete('contracts', $where);
    }
 
    static function DeleteProduct($id_product){
 
        if(!is_int($id_product)) exit ("Нет такого договора!");
 
        $db = M_MSQL::Instace();
        $where = "id_product = ".$id_product;
 
        $db->Delete('products', $where);
    }
 
}
Про свой класс у MSQLi знаю, но для "набивания руки" написал свой)

Добавлено через 1 минуту
Цитата Сообщение от Para bellum Посмотреть сообщение
Вполне. Только лучше добавить папку "bootstrap", например, и перенести в неё файл "autoload.php". Не место ему среди контроллеров.
Файл "functions.php", что в папке с моделями, обычно принято называть "helpers.php". Ну это чтобы совсем красиво. И в папке с моделями ему тоже не место, я думаю. Только куда её перенести, я ещё не придумал.
Спасибо! Учту!
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
23.08.2016, 19:35
Цитата Сообщение от Serj190492 Посмотреть сообщение
Подумал, что неудобно каждый раз создавать новый экземпляр, поэтому сделал их Singleton'ами
Не лучший вариант, я думаю. Тут было бы достаточно статичных методов, что-то вроде:
PHP
1
M_Contragents::get_one($data['id_contragent']);
А одиночки для других задач.

Добавлено через 5 минут
Switch пока не трогаю -- боюсь, за ним потянется куча других изменений.

Добавлено через 1 минуту
Почему у Вас для удаления разных сущностей используется флаг в $this->data['del']?
1
 Аватар для Serj190492
160 / 159 / 59
Регистрация: 19.02.2015
Сообщений: 830
23.08.2016, 19:42  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
А одиночки для других задач.
Можно в 2х словах - для каких?
Цитата Сообщение от Para bellum Посмотреть сообщение
используется флаг в $this->data['del']?
Потому что на одну страницу выводится: контрагент, его договора, его продукты.
А рядом с каждым из этих элементов - ссылка "Удалить".
Я не придумал другого метода формирования ссылки, кроме как в GET del передавать
"что_удаляем"&"по_какому_параметру(id)". .. Можно конечно к каждому элементу добавить форму с чекбоксом, но это по сути то же самое, только через POST...
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
23.08.2016, 20:00
Цитата Сообщение от Serj190492 Посмотреть сообщение
Можно в 2х словах - для каких?
Когда в процессе работы скрипта нам нужно быть уверенными, что имеем дело с одним объектом, а не с несколькими подобными, тогда нужно использовать Singleton. В других случаях он не нужен.
Цитата Сообщение от Serj190492 Посмотреть сообщение
Потому что на одну страницу выводится: контрагент, его договора, его продукты.
А рядом с каждым из этих элементов - ссылка "Удалить".
У Вас эти сущности удаляются только через этот запрос? Или в других контроллерах копии кода для удаления есть?
Цитата Сообщение от Serj190492 Посмотреть сообщение
Можно конечно к каждому элементу добавить форму с чекбоксом, но это по сути то же самое, только через POST...
К switch отношения не имеет, но на будущее скажу: удаление нужно делать только через POST/DELETE запрос.
Потому что некоторые обозреватели имеют функцию предварительной загрузки страниц и могут перейти по этим ссылкам, совершив таким образом запрос на удаление. С POST такого не произойдёт.
1
 Аватар для Serj190492
160 / 159 / 59
Регистрация: 19.02.2015
Сообщений: 830
23.08.2016, 20:14  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
нужно быть уверенными, что имеем дело с одним объектом, а не с несколькими подобными,
Это, например, объект "пользователь"?
Цитата Сообщение от Para bellum Посмотреть сообщение
только через этот запрос? Или в других контроллерах копии кода для удаления есть?
только в этом контроллере. В других если и придётся сделать - там будет только 1 объект 1 сущность для удаления, поэтому в контроллере будет достаточно $db->Delete(***)
Цитата Сообщение от Para bellum Посмотреть сообщение
удаление нужно делать только через POST/DELETE запрос.
Ок. Тоже учту.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
23.08.2016, 20:26
Цитата Сообщение от Serj190492 Посмотреть сообщение
Это, например, объект "пользователь"?
Да нет. Например, хранилище какое-нибудь (Registry) или объект подключения к базе.
Цитата Сообщение от Serj190492 Посмотреть сообщение
только в этом контроллере
Хорошо. А что в методе контроллера содержится, помимо приведённого Вами кода в первом сообщении?
1
 Аватар для Serj190492
160 / 159 / 59
Регистрация: 19.02.2015
Сообщений: 830
23.08.2016, 20:30  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
Да нет
Ладно, буду разбираться...
Цитата Сообщение от Para bellum Посмотреть сообщение
или объект подключения к базе
О, это я у себя удачно M_MSQL singleton'ом сделал)
Цитата Сообщение от Para bellum Посмотреть сообщение
А что в методе контроллера содержится, помимо приведённого Вами кода в первом сообщении?
Поля, конструктор и передача данных в шаблон...
Кликните здесь для просмотра всего текста
PHP
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
class C_Info extends C_Base
{
    protected $db;
    private $data;
    private $contragent;
    private $contracts;
    private $programms;
 
    function __construct()
    {
        $this->db = M_MSQL::Instace();
        $this->menu = true;
    }
 
    protected function OnInput()
    {
        parent::OnInput();
        $this->title = $this->title . ' :: Просмотр сведений';
 
        //Сохраняем все внешние данные ($_GET) в массив "data"
        $this->data = input();
 
        if (!(int)$this->data['id_contragent']) {
            header("Location: /"); // если не передан ид или он не числовой - на главную!
            die();
        }
 
        // Если просто зашли на страницу - получаем и выводим данные из БД
        $this->contragent = M_Contragents::Instance()->get_one($this->data['id_contragent']);
        $this->contracts = M_Contracts::Instance()->get_contracts($this->data['id_contragent']);
        $this->programms = M_Programms::Instance()->get_programms($this->data['id_contragent']);
 
        // Если нужно удалить что-либо
         if ($this->data['del']) {
             switch ($this->data['del']) {
                 case 'contragent':
                     C_Delete::DeleteContragent($this->data['id_contragent']);
                     break;
                 case 'contract':
                     C_Delete::DeleteContract($this->data['id_contract']);
                     break;
                 case 'product':
                     C_Delete::DeleteProduct($this->data['id_product']);
                     break;
             }
         }
    }
 
    // Виртуальный генератор HTML.
    protected function OnOutput()
    {
        $vars = array('contragent'=>$this->contragent, 'contracts'=>$this->contracts, 'programms' => $this->programms);
        $this->content = $this->Template('templates/v_info.php', $vars);
        parent::OnOutput();
    }
}
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
23.08.2016, 20:32
Вот я думаю, почему бы этот switch не разложить по разным методам контроллера? Если маршрутизатор позволяет это сделать. Иначе и его поменять можно.
1
 Аватар для Serj190492
160 / 159 / 59
Регистрация: 19.02.2015
Сообщений: 830
23.08.2016, 20:44  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
маршрутизатор
слышал слово, но не знаю, что это такое)

Я уже вам как-то раз скидывал логику работы этого проекта.

В индекс вызываем нужный контроллер, а затем метод request (он в C_Controller).
На примере C_Info:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
switch ($_GET['c']){
    case 'new':
        $class = new C_New();
        break;
    case 'editor':
        $class = new C_Editor();
        break;
    case 'edit':
        $class = new C_Edit();
        break;
    case 'info':
        $class = new C_Info();
        break;
    default:
        $class = new C_Index();
        break;
}
 
$class->Request();
C_Controller:
Кликните здесь для просмотра всего текста
PHP
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
<?php
//
// Базовый класс контроллера.
//
abstract class C_Controller
{
    //
    // Конструктор.
    //
    function __construct()
    {
    }
 
    //
    // Полная обработка HTTP запроса.
    //
    public function Request()
    {
        $this->OnInput();
        $this->OnOutput();
    }
 
    //
    // Виртуальный обработчик запроса.
    //
    protected function OnInput()
    {
    }
 
    //
    // Виртуальный генератор HTML.
    //
    protected function OnOutput()
    {
    }
 
    //
    // Запрос произведен методом GET?
    //
    protected function IsGet()
    {
        return $_SERVER['REQUEST_METHOD'] == 'GET';
    }
 
    //
    // Запрос произведен методом POST?
    //
    protected function IsPost()
    {
        return $_SERVER['REQUEST_METHOD'] == 'POST';
    }
 
    //
    // Генерация HTML шаблона в строку.
    //
    protected function Template($fileName, $vars = array())
    {
        // Установка переменных для шаблона.
        foreach ($vars as $k => $v)
        {
            $$k = $v;
        }
 
        // Генерация HTML в строку.
        ob_start();
        include $fileName;
        return ob_get_clean();
    }
}


C_Base:
Кликните здесь для просмотра всего текста
PHP
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
<?php
//
// Базовый контроллер сайта.
//
abstract class C_Base extends C_Controller
{
    protected $title;   // заголовок страницы
    protected $content; // содержание страницы
    protected $add;     // кнопка "Добавить"
    protected $db;      // Экземпляр класса БД
    protected $id;      // ИД контрагента для вывода кнопки
    protected $menu;
 
    //
    // Конструктор.
    //
    function __construct()
    {
        $this->db = M_MSQL::Instace();
    }
 
    //
    // Виртуальный обработчик запроса.
    //
    protected function OnInput()
    {
        $this->title = 'Алгоритм';
        $this->content = '';
        if(isset($_GET['id_contragent'])) $this->id = $_GET['id_contragent'];
    }
 
    //
    // Виртуальный генератор HTML.
    //
    protected function OnOutput()
    {
        $vars = array('title' => $this->title, 'content' => $this->content,
            'add' => $this->add, 'id'=>$this->id, 'menu' => $this->menu);
        $page = $this->Template('templates/v_main.php', $vars);
        echo $page;
    }
}


C_Info:
Кликните здесь для просмотра всего текста
PHP
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
<?php
/**
 * контроллер для просмотра полных сведений о контрагенте
 * и изменения этих данных
 */
 
require_once 'models/functions.php';
 
class C_Info extends C_Base
{
    protected $db;
    private $data;
    private $contragent;
    private $contracts;
    private $programms;
 
    function __construct()
    {
        $this->db = M_MSQL::Instace();
        $this->menu = true;
    }
 
    protected function OnInput()
    {
        parent::OnInput();
        $this->title = $this->title . ' :: Просмотр сведений';
 
        //Сохраняем все внешние данные ($_GET) в массив "data"
        $this->data = input();
 
        if (!(int)$this->data['id_contragent']) {
            header("Location: /"); // если не передан ид или он не числовой - на главную!
            die();
        }
 
        // Если просто зашли на страницу - получаем и выводим данные из БД
        $this->contragent = M_Contragents::Instance()->get_one($this->data['id_contragent']);
        $this->contracts = M_Contracts::Instance()->get_contracts($this->data['id_contragent']);
        $this->programms = M_Programms::Instance()->get_programms($this->data['id_contragent']);
 
        // Если нужно удалить что-либо
         if ($this->data['del']) {
             switch ($this->data['del']) {
                 case 'contragent':
                     C_Delete::DeleteContragent($this->data['id_contragent']);
                     break;
                 case 'contract':
                     C_Delete::DeleteContract($this->data['id_contract']);
                     break;
                 case 'product':
                     C_Delete::DeleteProduct($this->data['id_product']);
                     break;
             }
         }
    }
 
    // Виртуальный генератор HTML.
    protected function OnOutput()
    {
        $vars = array('contragent'=>$this->contragent, 'contracts'=>$this->contracts, 'programms' => $this->programms);
        $this->content = $this->Template('templates/v_info.php', $vars);
        parent::OnOutput();
    }
}


Добавлено через 2 минуты
Цитата Сообщение от Para bellum Посмотреть сообщение
Если маршрутизатор позволяет это сделать. Иначе и его поменять можно.
Это, наверное, про это говорили?
PHP
1
2
3
4
5
public function Request()
    {
        $this->OnInput();
        $this->OnOutput();
    }
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
23.08.2016, 20:58
Лучший ответ Сообщение было отмечено Serj190492 как решение

Решение

Сейчас разбираться времени особо нет. Положим, если сделать такой контроллер:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
Example {
    public function deleteProduct(){
 
    }
 
    public function deleteContract(){
 
    }
 
    public function deleteContragent){
 
    }
}
Есть возможность вызвать каждый метод контроллера по отдельности? Или только OnInput() допустим?
Если можно вызвать -- хорошо. Если нет -- придётся оставить, как есть.

Добавлено через 1 минуту
Цитата Сообщение от Serj190492 Посмотреть сообщение
В индекс вызываем нужный контроллер, а затем метод request (он в C_Controller).
Это и есть по сути маршрутизатор, но не гибкий.
1
 Аватар для Serj190492
160 / 159 / 59
Регистрация: 19.02.2015
Сообщений: 830
23.08.2016, 21:00  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
Есть возможность вызвать каждый метод контроллера по отдельности?
Нет. Сейчас - только инпут - аутпут...
Цитата Сообщение от Para bellum Посмотреть сообщение
Это и есть по сути маршрутизатор, но не гибкий.
Хорошо, значит пока что оставляю и буду разбираться с "гибким" маршрутизатором
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
23.08.2016, 21:08
Можно вот такой, хотя бы:
https://habrahabr.ru/post/31270/
Там докрутите до раздела "Класс Router".
1
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
23.08.2016, 22:23
Цитата Сообщение от Para bellum Посмотреть сообщение
Можно вот такой, хотя бы:
https://habrahabr.ru/post/31270/
Наверное лучше не показывать тот говнокод

Роутеров в сети масса и есть достаточно хорошие решения
Стоит подумать и ответить на ряд вопросов
1. По какому принципу будет построена система роутинга, как будут отрабатываться ссылки (это будет подписка или установленная система правил)
2. Где будут хранится правила роутинга( массив, ini, yaml, база данных)
3. Будут ли отличатся роутинг для (API и для страниц) в таком случае система могла быть смешанной включая несколько типов роутинга
4. Где будет происходить и нужна-ли валидация параметров роутинга. Пример использования reflection и проверка, подстановка параметров функцию обработчик
5. Обработчик ошибок роутера и вывод сообщения когда не найдено правил для роутера
И пусть не будет вам это слово(роутер) страшным
приведу пример микро роутинга на php7
PHP
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
# Author - Fedor Vlasenko, vlasenkofedor@mail.ru php 7
define('METHOD', $_SERVER['REQUEST_METHOD']);
define('URI', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
/**
 * @param string $url
 * @param array  ...$args, METHOD, callback
 */
function router($url, ...$args)
{
        (empty($args[1]) || false !== strpos(METHOD, $args[0]))
        && (URI === $url || preg_match('#^' . $url . '$#iu', URI, $match))
        && die(call_user_func_array(end($args), $match ?? []));
}
 
router('/', function ()
{
        echo 'Main Micro';
});
//article/myslug
router('/article/(.*[^/])', 'GET', function (...$args)
{
        echo 'Article: ', $args[1];
});
 
header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
echo '404';
1
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
24.08.2016, 06:45
Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
Наверное лучше не показывать тот говнокод
Да, действительно. Встречал как-то там статью с примером маршрутизации, опять же, не с самым лучшим кодом, но зато суть ясна. Сейчас не ту статью нашёл -- не просмотрел толком, сразу ссылку скопировал.
1
 Аватар для Serj190492
160 / 159 / 59
Регистрация: 19.02.2015
Сообщений: 830
24.08.2016, 10:13  [ТС]
Цитата Сообщение от Serj190492 Посмотреть сообщение
helpers.php
А я правильно понимаю - при такой структуре можно файл с функциями подключить только в index.php, а контроллеры будут его видеть, потому что вызываются там же?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
24.08.2016, 10:29
Цитата Сообщение от Serj190492 Посмотреть сообщение
А я правильно понимаю
Совершенно правильно.
1
 Аватар для Serj190492
160 / 159 / 59
Регистрация: 19.02.2015
Сообщений: 830
24.08.2016, 10:34  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
Совершенно правильно
Тогда еще такой вопрос: а как сделать, чтобы создать только 1 экземпляр класса для работы с БД (M_Msql), чтобы не вызывать его в каждом контроллере по новой?

Сначала пробовал $db = new M_MSQL в index.php прописать, но тогда его не видят методы классов и все равно приходится в каждом классе снова создавать $db и пользоваться $this->db
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.08.2016, 10:34
Помогаю со студенческими работами здесь

Ценообразование в Seopult насколько можно верить?
Приветствую :) Вопрос в самой теме.

Насколько быстро можно перейти с VB,C++,PHP на VB.Net?
Насколько быстро можно перейти с VB,C++,PHP на VB.Net

Как можно оптимизировать?
Подскажите пожалуйста. Имеется форма на которой находятся 20 edit'ов, как можно через цикл записать из них данные в массив.

Можно ли оптимизировать код
Доброго вечера. Есть небольшой кусок кода, можно ли как-то его упростить? (потому что идет дубляж кода, а это не очень правильно, но в то...

Можно ли оптимизировать код?
День добрый! Задача: есть полубайтовые значения - машина выдает данные от 1 до 15. Хранятся и передаются они в упакованном виде, по два...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru