Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676

VirtualMode DatagridView как проверить

14.05.2020, 17:00. Показов 1583. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня!

в диспетчере зедач для каждой программы в поле (Ядро GPU) написан какой проц работает с той или иной программой!

у меня грид с виртуализацией но при запуске программы у меня не указан ГПУ как проверить работает ли виртуализация или нет?

(грид то работает быстро но я боюс что это связано с тем что я включил у него буферизацию)

отсюда и вопрос работает ли вообще VirtualMode или нет

вот код заполнения грида

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
39
using System.Collections.Generic;
using System.Windows.Forms;
 
namespace DataGridViewVIrtualModeExample
{
    public partial class Form1 : Form
    {
        List<string[]> m_data = new List<string[]>();
 
        public Form1()
        {
            InitializeComponent();
 
            for (int i = 0; i < 1000000; i++)
            {
                m_data.Add(new string[]
                {
                    $"Row {i} Col 2",
                    $"Row {i} Col 3"
                });
            }
 
            dataGridView1.CellValueNeeded += DataGridView1_CellValueNeeded;
            dataGridView1.VirtualMode = true;
            dataGridView1.Columns.Add("Col1", "ColHeader1");
            dataGridView1.Columns.Add("Col2", "ColHeader2");
            dataGridView1.Columns.Add("Col3", "ColHeader3");
            dataGridView1.RowCount = m_data.Count;
        }
 
        private void DataGridView1_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
        {
            if (e.ColumnIndex == 0)
                e.Value = e.RowIndex + 1;
            else
                e.Value = m_data[e.RowIndex][e.ColumnIndex - 1];
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.05.2020, 17:00
Ответы с готовыми решениями:

Вопрос по DataGridView и VirtualMode
Работаю с DataGridView в виртуальном режиме, подскажите как добавлять строки в обработчике события: ...

DataContext Организовать VirtualMode в своем dataGridView
Всем привет! подскажите пожалуйста хочу оргинизовать VirtualMode в своем dataGridView но есть одно но из просторов интерната...

Как проверить строку DataGridView на четность
Добрый день. Нужна помощь господа. Есть функция, которая заполняет DataGridView строковыми данными: public void FillDataGrid(ref...

24
Эксперт .NET
 Аватар для Usaga
14311 / 9392 / 1355
Регистрация: 21.01.2016
Сообщений: 35,421
15.05.2020, 06:09
Цитата Сообщение от Sanya2019 Посмотреть сообщение
у меня грид с виртуализацией но при запуске программы у меня не указан ГПУ как проверить работает ли виртуализация или нет?
Как связаны GPU и виртуализация?

Цитата Сообщение от Sanya2019 Посмотреть сообщение
работает ли вообще VirtualMode или нет
Вы её включили:

C#
1
2
dataGridView1.CellValueNeeded += DataGridView1_CellValueNeeded;
dataGridView1.VirtualMode = true;
Значит работает. Поставьте точку останова на первой же строке в методе DataGridView1_CellValueNeeded и сами увидите.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
15.05.2020, 06:49  [ТС]
Как связаны GPU и виртуализация?

А разве нет? Я вот где то читал что они связаны
0
Эксперт .NET
 Аватар для Usaga
14311 / 9392 / 1355
Регистрация: 21.01.2016
Сообщений: 35,421
15.05.2020, 06:57
Цитата Сообщение от Sanya2019 Посмотреть сообщение
А разве нет?
А разве да? Виртуализация - запрос данных по мере отрисовки грида. Какая связь с GPU?
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
15.05.2020, 09:33  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
А разве нет?
А разве да? Виртуализация - запрос данных по мере отрисовки грида. Какая связь с GPU?
а какого тогда у меня в DataGridView1_CellValueNeeded ровно столько входов в отладке сколько строк?

данных скажем 1000 строк

и вот эту 1000 я и получаю хотя на экране только порядка 50 влазит

где же тут запрос данных по мере отрисовки грида?
0
Эксперт .NET
 Аватар для Usaga
14311 / 9392 / 1355
Регистрация: 21.01.2016
Сообщений: 35,421
15.05.2020, 09:44
Sanya2019, задайте в DataGridView.RowCount общее количество строк. Видимо без указания этого количества DGV и пытается всё отрисовать.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
15.05.2020, 09:51  [ТС]
Цитата Сообщение от Sanya2019 Посмотреть сообщение
m_data.Add(new string[]
                {
                    $"Row {i} Col 2",
                    $"Row {i} Col 3"
                });
            }
dataGridView1.CellValueNeeded += DataGridView1_CellValueNeeded;
            dataGridView1.VirtualMode = true;
            dataGridView1.Columns.Add("Col1", "ColHeader1");
            dataGridView1.Columns.Add("Col2", "ColHeader2");
            dataGridView1.Columns.Add("Col3", "ColHeader3");
            dataGridView1.RowCount = m_data.Count;
        }
private void DataGridView1_CellValueNeeded
dataGridView1.RowCount = m_data.Count; задется же здесь!

Добавлено через 2 минуты
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
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
Вот мой класс грида
 
 public class MyDataGridView : DataGridView
    {
        public DataTable dt = new DataTable();
        public MyDataGridView()
        {
            // и устанавливаем значение true при создании экземпляра класса
            this.CellValueNeeded += ТабличныйДокумент_CellValueNeeded;
            this.CellValuePushed += ТабличныйДокумент_CellValuePushed;
            DoubleBuffered = true;
            VirtualMode = true;
            RowHeadersVisible = true;//для всех гридов показываем столбец
            RowHeadersDefaultCellStyle.Padding = new Padding(3);
            RowHeadersWidth = 4;//задаем ширину 
            TopLeftHeaderCell.Value = "№";
            // или с помощью метода SetStyle
            SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
            UpdateStyles();
 
            this.AllowUserToAddRows = false;
            this.AllowUserToOrderColumns = true;
            this.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
            | System.Windows.Forms.AnchorStyles.Left)
            | System.Windows.Forms.AnchorStyles.Right)));
            this.BackgroundColor = System.Drawing.SystemColors.Window;
            this.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            this.RowHeadersWidth = 20;
            this.Size = new System.Drawing.Size(883, 232);
            this.TabIndex = 3;
 
            if (this.Columns.Count == 0 && this.Rows.Count == 0)
            {
                for (int Columns_ = 0; Columns_ < 50; ++Columns_)
                {
                    DataColumn col_0 = new DataColumn();
                    col_0.DataType = Type.GetType("System.String");
                    col_0.ColumnName = (Columns_ + 1).ToString();
                    dt.Columns.Add(col_0);
                    this.Columns.Add(new DataGridViewTextBoxColumn() { Name = (Columns_ + 1).ToString(), HeaderText = (Columns_ + 1).ToString() });
                }
                for (int Rows_ = 0; Rows_ < 100; ++Rows_)
                {
                    dt.Rows.Add();
                }
                this.RowCount = dt.Rows.Count;
                Numerik();
            }
        }
 
        private void ТабличныйДокумент_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
        {
     
            e.Value = dt.Rows[e.RowIndex][e.ColumnIndex];
       
            if (this.Rows[e.RowIndex].HeaderCell.Value == null)
            {
                this.Rows[e.RowIndex].HeaderCell.Value = string.Format((e.RowIndex + 1).ToString(), "0");
                if (e.RowIndex == this.Rows.Count)
                {
 
                }
            }
   
        }
 
        private void ТабличныйДокумент_CellValuePushed(object sender, DataGridViewCellValueEventArgs e)
        {
            if (dt.Rows.Count != 0)
            {
                if (e.RowIndex > dt.Rows.Count)
                {
                    dt.Rows.Add(e.RowIndex);
                }
                else
                    dt.Rows[e.RowIndex][e.ColumnIndex] = e.Value;
            }
            else
                dt.Rows.Add(e.RowIndex);
 
        }
 
        public void Clear_CheckBoks()
        {
            Columns.Clear();
            DataGridViewCheckBoxColumn col = new DataGridViewCheckBoxColumn();
            col.HeaderText = " ";
            col.Width = 20;
            Columns.Add(col);
        }
 
        public void Numerik()
        {
            if(string.Format((this.Rows.Count).ToString(), "0").Length < 3)
            {
                this.RowHeadersWidth = 20;
                RowHeadersWidth = RowHeadersWidth + (11 * string.Format((this.Rows.Count).ToString(), "0").Length);
            }else if(string.Format((this.Rows.Count).ToString(), "0").Length < 4)
            {
                this.RowHeadersWidth = 10;
                RowHeadersWidth = RowHeadersWidth + (11 * string.Format((this.Rows.Count).ToString(), "0").Length);
            } else
            {
                this.RowHeadersWidth = 8;
                RowHeadersWidth = RowHeadersWidth + (11 * string.Format((this.Rows.Count).ToString(), "0").Length);
            }
        }
    }
а вот как одновляются данные в нем

напрмиер это код обработки загрузки данных из Экселя

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
DataColumn col_0 = new DataColumn();
            col_0.DataType = Type.GetType("System.Boolean");
            col_0.ColumnName = "Check";
            col_0.Caption = " ";
            col_0.DefaultValue = true;
            ТаблицаСодержанияФайлаExcel.dt.Columns.Add(col_0);
            string ConnectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Mode=ReadWrite;Extended Properties=\"Excel 8.0;HDR=No\"; Data Source={0}", ДиаловВыбораФайла.PathToTheExcelFile.Text.ToString());
            string ConnectionString_ = String.Format("provider=microsoft.jet.oledb.4.0;extended properties=\"excel 8.0;hdr=no\";data source={0}", ДиаловВыбораФайла.PathToTheExcelFile.Text.ToString());
 
            //Забираем данные из одтелного задания
            var aaa = await ЗапросСпискаТоваров(ConnectionString, ТаблицаСодержанияФайлаExcel.dt, ConnectionString_);
            if (aaa == true)
            {
                ТаблицаСодержанияФайлаExcel.Clear_CheckBoks();
    
 
                //Выводим DataTable в таблицу на форму (если нужно)
                int ii = 0;
                foreach (DataColumn row in ТаблицаСодержанияФайлаExcel.dt.Columns)
                {
                    if (ii != 0)
                    {
                        ТаблицаСодержанияФайлаExcel.Columns.Add(new DataGridViewTextBoxColumn() { Name = ii.ToString(), HeaderText = ii.ToString() });
                    }
 
                    ii++;
                }
 
                ТаблицаСодержанияФайлаExcel.RowCount = ТаблицаСодержанияФайлаExcel.dt.Rows.Count;
                ТаблицаСодержанияФайлаExcel.Numerik();// запускаю нумерацию строк
            }
            progressBar1.Value = 0;
            progressBar1.Visible = false;
            timer1.Stop();
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 DataRow schemaRow = schemaTable.Rows[0];
                //Получаеи имя таблицы
                string sheet = schemaRow["TABLE_NAME"].ToString();
                //Объявляем команду
                OleDbCommand com = conn.CreateCommand();
                //Создаем SQL запрос
                com.CommandText = "SELECT * FROM [" + sheet + "]";
                //Выполняем SQL запрос
                OleDbDataReader reader = com.ExecuteReader();
                //Записываем результат в DataTable
                dt.Load(reader);
                conn.Close();
                return true;
0
Эксперт .NET
 Аватар для Usaga
14311 / 9392 / 1355
Регистрация: 21.01.2016
Сообщений: 35,421
15.05.2020, 09:52
Да, точно. Значит всё настроен. Вы посчитали, сколько раз метод дёргается? У вас миллион строк. Он миллион раз дёргается? DGV имеет право запросить больше строк, чем можно отрисовать. Это нормально.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
15.05.2020, 09:57  [ТС]
может я не верно поступил что события

this.CellValueNeeded += ТабличныйДокумент_CellValueNeeded;
this.CellValuePushed += ТабличныйДокумент_CellValuePushed;

и

public DataTable dt = new DataTable();

сразу в датагриде?

Добавлено через 10 секунд
мне прост отак удобнее работать

Добавлено через 1 минуту
Цитата Сообщение от Usaga Посмотреть сообщение
Да, точно. Значит всё настроен. Вы посчитали, сколько раз метод дёргается? У вас миллион строк. Он миллион раз дёргается? DGV имеет право запросить больше строк, чем можно отрисовать. Это нормально.
видимо нолик лишкний я говорил об одной тысячи )

но в любом случае как я понял он дергается на строку и на колонку а следовательно 1 строка + кол Во колонок где то так? или я ошибаюс?

Добавлено через 3 минуты
есть еще одна проблемка что то я затупил здесь с кодом (

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
async Task<dynamic> ОбновитьТабличнуюЧастьExcel_Key_(decimal НомерСтрокиС_, decimal НомерСтрокиПо, DataTable dt)
        {
            return await Task.Run(() =>
            {
                for (int i = 0; i < dt.Rows.Count; ++i)
                {
                    dt.Rows[i][0] = false;
 
                    if ((i + 1) >= НомерСтрокиС_ && (i + 1) <= НомерСтрокиПо)
                    {
                        dt.Rows[i][0] = true;
                    }
                }
                return true;
            });
        }
эта функция устанавливает флажки по строчкам в гриде

но проблема в том что если в гриде менее до 30 000 строк то вс еотлично

а вот когда 60 000 строк то отваливается по ошибке нафиг

я вот думаю как можно в ДТ изменить записи без цикла

он ругаетс яна то что типа индекса такого нету

хотя в отладчике показывает что все ок все есть 1162 индекс из 60 000
0
15.05.2020, 09:58

Не по теме:

Цитата Сообщение от Sanya2019 Посмотреть сообщение
мне прост отак удобнее работать
поэтому у вас все через ж.....Только не обижайтесь, но это так

0
Эксперт .NET
 Аватар для Usaga
14311 / 9392 / 1355
Регистрация: 21.01.2016
Сообщений: 35,421
15.05.2020, 10:01
Цитата Сообщение от Sanya2019 Посмотреть сообщение
но в любом случае как я понял он дергается на строку и на колонку а следовательно 1 строка + кол Во колонок где то так? или я ошибаюс?
Метод дёргается на одну строку. Я сейчас проверил: так и есть. Если у вас иначе, значит вы что-то наворотили в коде. Можете сами проверить на новом проекте:

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
using System;
using System.Windows.Forms;
 
namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        private int counter = 0;
 
        public Form1()
        {
            InitializeComponent();
 
            dataGridView1.VirtualMode = true;
            dataGridView1.RowCount = 50000;
        }
 
        private void dataGridView1_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
        {
            counter++;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            this.label1.Text = counter.ToString();
        }
    }
}
Подписка на событие сделана в дизайнере.

При запуске приложения у меня 8 строк отрисовано. И по нажатию кнопки я получаю число 8. Если прокрутить немногно грид, то счётчик увеличивается, но не до конца. Значит всё работает корректно.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
15.05.2020, 10:02  [ТС]
Цитата Сообщение от Почтальон Посмотреть сообщение
поэтому у вас все через ж.....Только не обижайтесь, но это так
да я не обижаюсь!

подскажите как правильно

получается что я не правильно поступил

но почему нельзя сразу сделать свой контрол со своими событиями и Datatable?
0
Эксперт .NET
 Аватар для Usaga
14311 / 9392 / 1355
Регистрация: 21.01.2016
Сообщений: 35,421
15.05.2020, 10:03
Цитата Сообщение от Sanya2019 Посмотреть сообщение
но почему нельзя сразу сделать свой контрол со своими событиями и Datatable?
Можно конечно. Только зачем DataTable?
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
15.05.2020, 10:03  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Подписка на событие сделана в дизайнере.
При запуске приложения у меня 8
все верно у Вас 1 колонка?

получает на одну строку а добавьте 10 колонок )
0
Эксперт .NET
 Аватар для Usaga
14311 / 9392 / 1355
Регистрация: 21.01.2016
Сообщений: 35,421
15.05.2020, 10:05
Sanya2019, какая разница сколько колонок? В коде я указал 50К строк. А вызовов метода - десятки. Т.е. уже видно, что метод корректно вызывается, для какого-то множества строк.
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
15.05.2020, 10:06
Цитата Сообщение от Sanya2019 Посмотреть сообщение
подскажите как правильно
Начать с архитектурных решений, ну и хотя бы почитать про то, как оформлять код, а то пол-функции на русском, другая половина на инглише, это писец какая жуть
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
15.05.2020, 10:09  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Можно конечно. Только зачем DataTable?
Что бы просто повесить грид на форму и польззоваться тупо его методами а не объявлять постоянно DataTable и т д

где то же данные хранить нужно )

грид то для отображения данных

это прост оеще не доделанный контрол после ка кдоделаю выложу там будет понятнее

но попробую описать

я пытаюс сделать контролы так что бы у них были события похожие на 1С то есть

мне не нужно создавать что то другое что бы заполнить Таблицу я тупо буду использовать ее метод

МойГрид.Загрузить(<Источник>) например

Добавлено через 33 секунды
Цитата Сообщение от Usaga Посмотреть сообщение
какая разница сколько колонок? В коде я указал 50К строк. А вызовов метода - десятки. Т.е. уже видно, что метод корректно вызывается, для какого-то множества строк.
ну так Ваш код ничем не отличается от моего!

Добавлено через 2 минуты
Цитата Сообщение от Почтальон Посмотреть сообщение
Начать с архитектурных решений, ну и хотя бы почитать про то, как оформлять код, а то пол-функции на русском, другая половина на инглише, это писец какая жуть
он позже будет весь на русском это я еще только начал делать ))))

я просто пишу как положенно на Англ тестирую если все работает ка кнадо переписываю на то как надо ))))
0
Эксперт .NET
 Аватар для Usaga
14311 / 9392 / 1355
Регистрация: 21.01.2016
Сообщений: 35,421
15.05.2020, 10:11
Цитата Сообщение от Sanya2019 Посмотреть сообщение
где то же данные хранить нужно )
Так коллекция собственных классов чем не устраивает? Каждой строке - свой элемент в коллекции, каждой колонке - своё свойство в классе.

Цитата Сообщение от Sanya2019 Посмотреть сообщение
ну так Ваш код ничем не отличается от моего!
И у меня DGV себя ведёт правильно.
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
15.05.2020, 10:12
Цитата Сообщение от Sanya2019 Посмотреть сообщение
я пытаюс сделать контролы так что бы у них были события похожие на 1С то есть
В корне не верное решение, это для программиста 1С сделано, а то, как оно работает внутри, только разрабы знают, и 1С написана на плюсах. Вы же пытаетесь натянуть сову на глобус, но т.к. обладаете скромными знаниями в C#, это занятие получается весьма смешное
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
15.05.2020, 10:17  [ТС]
где то же данные хранить нужно )
Так коллекция собственных классов чем не устраивает? Каждой строке - свой элемент в коллекции, каждой колонке - своё свойство в классе.

это код Табличного документа где не ясно какие колонки будут или что в них вообще будет!

Добавлено через 2 минуты
Цитата Сообщение от Почтальон Посмотреть сообщение
В корне не верное решение, это для программиста 1С сделано, а то, как оно работает внутри, только разрабы знают, и 1С написана на плюсах. Вы же пытаетесь натянуть сову на глобус, но т.к. обладаете скромными знаниями в C#, это занятие получается весьма смешное
ну что получается то и получается ))) (это ж мое дело мне так нравится делать и оно же работает)

грид с 60 000 строка работает довольно быстро но все же я задаюс вопросом может можно еще стото сделать ))) или может что то сделано не совсем верно!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.05.2020, 10:17
Помогаю со студенческими работами здесь

Как проверить существование строк в datagridview
Добрый день! Как проверить есть ли первая строка в datagrid? Спасибо!

DataGridView: как проверить равенство двух ячеек в событии RowEnter
private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e) { foreach...

ListView в режиме VirtualMode, не отображаются значки
Здравствуйте. Первоначально я работал с ListView в обычном режиме, и у элементов списка значки отображались. Сейчас включил виртуальный...

Нужен пример работы с ListView в VirtualMode
Здравствуйте. Покажите неразумному пример работы с listView'ом в VirtualMod'e. Наполнение будет проходить с List'a. Заранее спасибо.

Подергивание ListView в режиме VirtualMode при добавлении элемента
Здравствуйте. Для начала стоит заметить, что более забагованного контрола в винформах встречать не приходилось. Причем одни и те же...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru