powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / DataExpress - конструктор баз данных.
25 сообщений из 277, страница 7 из 12
DataExpress - конструктор баз данных.
    #39847719
Фотография vovka3003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>vovka3003, сегодня, 20:45 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1210740&msg=21945946][21945946]
>...Что дальше..? Когда оба решили сохраниться?

<Поступил согласно hVostt 3:
1. Сохраняется первый по времени
2. Второй получает отказ и выборку из полей текущего состояния редактируемого
3. Реализация
....

В чистом SQL увы не так силен, как вы, и понял лишь отдельные операторы. Можно пояснить на словах п.2 - я правильно понял, что первый открывший запись имеет приоритетное право на сохранение, а второй, при попытке сохраниться (после первого) - получает принудительное обновление своего набора данных тем набором, который только что проапдейтил первый? Так?
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39847734
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoНу дык предложи сирым и убогим, красивое решение. Где оно ?
О каком большем речь ? Раскрой тему.

Что у вас за маниакальная страсть от поста к посту клянчить готовые решения? :)

Тема раскрыта сто пицот раз, надо просто глаза раскрыть и научиться информацию добывать и усваивать, всё написано в интернетах, даже линков накидали выше.

Конкретно какие вопросы есть?
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39847735
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vovka3003Тут опять же - смотря с какой колокольни смотреть... Я долгое время щупал всякие аналогичные проги. В целом при комплексном анализе пока могу сделать вывод, что автору DX удалось сделать гораздо большее, чем во многих аналогичных конструкторах. Сложно сказать на какое г**но он должен изойтись чтобы реализовать "идеальное" во всех смыслах решение. Предлагать ему собрать мафию единомышленников "для ускорения" - смысла нет, ибо волк-одиночка.
Потому сам особо не сетую, ищем баги, льем хотелки, прога растет потихоньку...

Речь не про "идеальное". Речь про стоящее. Создавать сегодня велосипед, ровно такой же какие пилили 20 лет назад -- это ваще за гранью странного. Как бы вот и намекаю, что можно было бы крутого сделать.

Что вы там "большего" увидели тож непонятно. Но не суть, не будем слишком категоричны. Обсуждаем один конкретный вопрос.
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39847736
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vovka3003Все-таки не могу понять всей прелести такого "оптимизма": Редактировать могут все, ура! (оптимизм) , но сохранить запись в итоге может кто-то один [тут знак вопроса] - неважно, первый это папа или последний...
В чем же это "наиболее интересно для бизнеса"..? Можно привести реальный пример? .."на кошках": Берем кошку - ставим на землю, побежал - значит кот, побежала - значит кошка и т.п..

Есть некий большой документ -- какой-нибудь договор с кучей разных атрибутов. Агрегат. Над ним работает несколько отделов одновременно, при чём в основном вносят изменения в разные наборы характеристик, но иногда их изменения пересекаются.

Очень плохо: редактировать может только кто-то один. Ваще не нужно такое решение даже задаром.

Плохо (местами очень-очень плохо): кто-то может переписать чужие изменения, даже не узнав об этом.

Лучше: при конкурирующем сохранении пользователь увидит ошибку потенциальной перезаписи изменений, может посмотреть что там менялось и сравнить со своими правками.

Хорошо: система попытается слить изменения, предупредив пользователя, при конфликтах предложить пользователю разрешить коллизии.

Совсем хорошо: во время изменения пользователь видит потенциальные конфликты сразу до сохранения.

Ну и т.д. тут большой простор для различных решений, зависящий конечно же от задач.
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39847744
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слить изменения чаще всего нельзя. Во всяком случае в тех документах, применительно к которым вообще можно вести подобное обсуждение. Так как одно из полей это может быть Статус, изменение которого влечет за собой целый процесс, который может быть не совместим с изменениями другого пользователя. И платформа сама этого понять не может.

Конечно если это тупейший справочник, то можно и слить. Но часто ли их одновременно редактируют. Или точнее, часто ли от такого одновременного редактирования мы получаем негативные последствия.

В большинстве случаев нужно среднее между "Плохо" и "Лучше" - когда кто-то может переписать чужие изменения, но если надо, открыть историю и понять кто и что перезаписал.

А в критично важных документах - кастомная реализация "умного" слияния или отображения потенциальных конфликтов до сохранения или чего угодно другого.

Платформа должна избавлять от рутины, а не добавлять головной боли)
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39847746
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dma_caviarСлить изменения чаще всего нельзя. Во всяком случае в тех документах, применительно к которым вообще можно вести подобное обсуждение. Так как одно из полей это может быть Статус, изменение которого влечет за собой целый процесс, который может быть не совместим с изменениями другого пользователя. И платформа сама этого понять не может.

Бинго! Вот мы и подобрались наконец-то к _сложностям_.
Конечно слить изменения можно, даже в самых тяжёлых случаях, и конечно нужно учитывать целостность бизнес-процесса и всего остального.
Но сложно, это не значит невозможно.

dma_caviarВ большинстве случаев нужно среднее между "Плохо" и "Лучше" - когда кто-то может переписать чужие изменения, но если надо, открыть историю и понять кто и что перезаписал.

Да, лучше чем ничего. Но гордиться тут явно нечем.


dma_caviarПлатформа должна избавлять от рутины, а не добавлять головной боли)

Не-не-не... сделать простое -- сложно.
Сделать сложное -- просто.

Зачастую разрабы выбирают сделать просто, и пусть пользователи ***ться. Не наши проблемы, таксказать )))
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39847748
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне как раз чаще известны другие случаи, когда ***ться именно пользователи, от того что разрабы внушили себе что они сложное могут сделать простым.
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39847749
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И обратите внимание, мы тут говорим о платформенности этого решения. Частный случай слияния конечно можно сделать немного разобравшись в сути документа. Но мы говорим о механизме слияния тех документов, которые еще не придумали.
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39847753
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>vovka3003, вчера, 23:10 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1210740&msg=21945985][21945985]
>...Можно пояснить на словах п.2...
<Насчет силы опустим. Просто я знаю, что хочу. Ничего нового, по сравнению с тем, что сказал hVostt-3 не делаю. Чтение из базы допустимо в любой момент. Запись содержит timestamp и каждый локальный компьютер получает её значение при чтении. Хранить результаты редактирования может любой пользователь в любой момент, не зависимо каким по счету он читал. При записи меняется значение timestamp и соответственно другие изменения будут отклонены. Мне удобнее, если текущее измененное состояние записи передаётся пользователю. Крайнее поле полученной записи содержит код ошибки (точнее - код завершения операции). Что делать с двумя записями для одной сущности решать Вам. Я сообщаю пользователю об ошибке и показываю текущие атрибуты сущности.
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39847800
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dma_caviarМне как раз чаще известны другие случаи, когда ***ться именно пользователи, от того что разрабы внушили себе что они сложное могут сделать простым.

Это тот случай, когда люди занимаются не своим делом. Разработка UX и поведенческое проектирование это отдельный набор компетенций, который зачастую отсутствует как класс во многих проектах.

Поэтому не выдумывайте про какое-то там самовнушение.

dma_caviarИ обратите внимание, мы тут говорим о платформенности этого решения. Частный случай слияния конечно можно сделать немного разобравшись в сути документа. Но мы говорим о механизме слияния тех документов, которые еще не придумали.

Снова какие-то домыслы, видимо это основывается на весьма ограниченном опыте.
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39847880
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Примеры-то будут? Опытный вы наш)
Пару концепций-принципов, вкратце. С помощью которых система сможет понимать как сливать документы, которые разработчиком еще не сконфигурированы.
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39847910
Фотография vovka3003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят, я извиняюсь за то, что вклиниваюсь в полемику, но меряясь между собой пись... специализациями и знаниями технологий между этим поливая сабж-программу и ее автора-"велосипедиста" на чем свет стоит - таки плавно ушли от ответов на встречные вопросы. В частности на: "..Как называется программа(ы) в которой на сегодняшний день есть какая-нибудь из озвученных плюшек? Таких как "оптимистическая блокировка" например...
А то выходит - в теории мы все "Львы Толстые", а конкретики-то нет.
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39847963
Фотография vovka3003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...чур носом в википедию и всякие иносранные сайты с описанием мега-спецификаций не тыкать :). Нужен реальный живой пример в существующем решении...
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39848002
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>vovka3003, сегодня, 17:27 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1210740&msg=21946528][21946528]
> ...Нужен реальный живой пример в существующем решении…

<Попытаюсь ответить
Код: 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.
    //-- INSERT 
    //-- Обработка нажатия кнопки создания атрибутов новой сущности 
    //==============================================================================
    private void btc_Новая_Click(object sender, RoutedEventArgs e) {
      if (!bl_Разрешение) return; //-- Запрет обработки нажатия
      blInsSel = true;
      object[][] psp = new object[1][];
      //psp[0] = new object[2] { "@pk_Entity", Guid.NewGuid() };
      psp[0] = new object[2] { "@pk_Entity", бом.CreateGuid() };
      fun_InsUpd("Ins", psp);
    }
    //-- UPDATE  
    //-- Обработка нажатия кнопки сохранения изменений сущности в базу данных 
    //=========================================================================================================
    private void btc_Сохранить_Click(object sender, RoutedEventArgs e) {
      if (!bl_Разрешение) return; //-- Запрет обработки нажатия
      if (dgv_Entity.SelectedIndex == -1) return;  //-- Нет выбора
      //-- Получим индекс элемента коллекции
      xrow = (row_Entity)dgv_Entity.SelectedItem;
      iRow = oc_Entity.IndexOf(xrow);

      object[][] psp = new object[9][];
      psp[0] = new object[2] { "@pk_Entity", xrow.pk_Entity };
      psp[1] = new object[2] { "@fk_Группа", xrow.fk_Группа };
      psp[2] = new object[2] { "@str_кНазвание", xrow.str_кНазвание };
      psp[3] = new object[2] { "@str_дНазвание", xrow.str_дНазвание };
      psp[4] = new object[2] { "@int_Версия", xrow.int_Версия };
      psp[5] = new object[2] { "@str_Ключ", xrow.str_Ключ };
      psp[6] = new object[2] { "@fk_СерверДанных", xrow.fk_СерверДанных };
      psp[7] = new object[2] { "@fk_ФайлСервер", xrow.fk_ФайлСервер };
      psp[8] = new object[2] { "@ts_Entity", xrow.ts_Entity };
      fun_InsUpd("Upd", psp);
    }

    private async void fun_InsUpd(string spWsp, object[][] psp) { 
      bl_Разрешение = false; //-- Блокируем доступ пользователя к графическому интерфейсу

      xrow = null; lst_Entity = null; 
      dlg_sp sp = (spWsp != "Upd") ? (dlg_sp)wsp.sp_Ins : (dlg_sp)wsp.sp_Upd;
      string ИмяХП = "au_Приложения_" + spWsp;
      //-- Выполним хранимую процедуру
      //-- xrow будет содержать поля текущего состояния сущности
      при.tmrStart(); await wsp.Entity_SP(ИмяХП, sp, psp, RowToEntity); при.tmrStop();
      bl_Разрешение = true;     //-- Разрешение выполнения функционала компонент
      if (wsp.wspErr != null) { MessageBox.Show(wsp.wspErr, caption_Entity, MessageBoxButton.OK); }

      if (xrow == null) return;
      if (spWsp != "Upd") { //-- обработка новой сущности
        xrow.chb_Entity = true;
        oc_Entity.Add(xrow);
        iRow = oc_Entity.IndexOf(xrow);
        dgv_Entity.ScrollIntoView(xrow);
        dgv_Entity.SelectedIndex = iRow;
        DataGridCellInfo info = dgv_Entity.SelectedCells[1];
        dgv_Entity.CurrentCell = info;
        dgv_Entity.BeginEdit();
      }
      else { //-- "Upd". xrow содержит текущее значение сущности в базе данных
        dgv_Entity.CancelEdit();
        xrow.chb_Entity = false;
        oc_Entity.RemoveAt(iRow); //-- oc_Entity содержит список локальных представлений сущностей
        oc_Entity.Insert(iRow, xrow);
        dgv_Entity.SelectedIndex = iRow;
      }
    }
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39848027
Фотография vovka3003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

Я прошу прощения, видимо недостаточно четко задал вопрос. Исправляюсь...:

"..Как называется программа(ы) относительно массового применения, в которой на сегодняшний день есть какая-нибудь из озвученных плюшек? Таких как "оптимистическая блокировка" например..."

А то "давят" на нас тут :) а "посмотреть в лицо" какой-то такой программе или потыкать ей в кнопки - не дают... :)
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39848202
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dma_caviarhVostt,

Примеры-то будут? Опытный вы наш)
Пару концепций-принципов, вкратце. С помощью которых система сможет понимать как сливать документы, которые разработчиком еще не сконфигурированы.

Я пока не увидел конкретных вопросов.
Все концепции уже давно изучались, обсуждались и описывались, гугл даёт овердофига информации.
И краткое описание и линки тут уже давали.
Если чего непонятно, пишите.

Хотя очевидно, что вам не очень-то интересно тратить время на изучение этой темы.
Если вам неинтересно, с какого перепугу лично мне нужно для вас стараться?
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39848245
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vovka3003 "..Как называется программа(ы) в которой на сегодняшний день есть какая-нибудь из озвученных плюшек? Таких как "оптимистическая блокировка" например...
ms access
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39848292
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕсли чего непонятно, пишите.
А я и пишу. Мне понятно как в конкретном документе сделать слияние. Для этого надо вникнуть в смысл бизнес процесса. И станет очевидно в каких свойствах какие значения как мержить. Обсуждать это в этой теме не очень интересно.

Мне не понятно как платформа сама должна понимать это в отношении документов, которые разработчик еще не разработал. В отношении бизнес процессов, которые еще даже не придумали.
И я уверен что это сделать нельзя. Ну то есть технически можно конечно, но только покалечить документ. Например заказ такси одновременно редактирует оператор и клиент. В итоге заказ в статусе Заказано, а адрес пустой. Чтобы этого не случилось, нужно ведь как-то пописать все эти правила. Но это можно прописать только в конкретной разработке, в конкретном документе, в данном случае - "Заказ".
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39848321
Фотография vovka3003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилvovka3003 "..Как называется программа(ы) в которой на сегодняшний день есть какая-нибудь из озвученных плюшек? Таких как "оптимистическая блокировка" например...
ms access
Совсем другое дело... Не знал. Теперь хоть есть куда потыкать...
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39848360
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dma_caviarА я и пишу. Мне понятно как в конкретном документе сделать слияние. Для этого надо вникнуть в смысл бизнес процесса. И станет очевидно в каких свойствах какие значения как мержить. Обсуждать это в этой теме не очень интересно.

Слишком обобщённый вопрос. На который будет такой же обобщённый ответ.

dma_caviarМне не понятно как платформа сама должна понимать это в отношении документов, которые разработчик еще не разработал. В отношении бизнес процессов, которые еще даже не придумали.

Документы это не аморфная абстракция, всегда существует модель хранения, модель обработки, абстракции и концепции, в рамках которых реализуется система.

Вот в рамках конкретно выбранных решений и реализуется задуманное.

dma_caviarИ я уверен что это сделать нельзя.

Я был уверен, что это сделать можно до того, как сам это реализовал. А после того, как реализовали, протестировали и обкатали стало понятно, что можно, и что это решает задачи конкурентной работы над ресурсами. А то, что это на порядок лучше пессимистичной блокировки и тем более эксклюзивной блокировки мы выяснили собрав фидбек, и показатели эффективности работы.

dma_caviarНу то есть технически можно конечно, но только покалечить документ. Например заказ такси одновременно редактирует оператор и клиент. В итоге заказ в статусе Заказано, а адрес пустой. Чтобы этого не случилось, нужно ведь как-то пописать все эти правила. Но это можно прописать только в конкретной разработке, в конкретном документе, в данном случае - "Заказ".

Вы описываете отсутствие какой-либо модели блокировки. Грубо говоря, ваш метод "как фишка ляжет" естественно работать не будет :)
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39848569
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttСлишком обобщённый вопрос. На который будет такой же обобщённый ответ.
Ок, вопрос конкретный...
Вот вы на своем опыте, реализовали этот механизм.
Вы это сделали для какого-то конкретного документа? Например Заказ, Клиент.
Можно ли без внесения изменений в код этого механизма, применить его для другого документа? Например Накладная, Счет.
То есть реализовали один раз и пользуемся везде через CtrlC + CtrlV.

Наверняка вы скажете нет. Тогда следующий вопрос - можно это сделать без внесения изменений в код этого механизма, через не очень сложные настройки (без программирования)?
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39848666
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dma_caviarhVosttСлишком обобщённый вопрос. На который будет такой же обобщённый ответ.
Ок, вопрос конкретный...
Вот вы на своем опыте, реализовали этот механизм.
Вы это сделали для какого-то конкретного документа? Например Заказ, Клиент.
Можно ли без внесения изменений в код этого механизма, применить его для другого документа? Например Накладная, Счет.
То есть реализовали один раз и пользуемся везде через CtrlC + CtrlV.

Наверняка вы скажете нет. Тогда следующий вопрос - можно это сделать без внесения изменений в код этого механизма, через не очень сложные настройки (без программирования)?
Какие проблемы?
Для каждого типа (агрегата) введи метод блокировки в метаданных.
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39848703
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosКакие проблемы?
Для каждого типа (агрегата) введи метод блокировки в метаданных.
Так речь не про блокировку, а про метод слияния, если документ редактируется одновременно несколькими пользователями.
Например пользователь 1 изменил статус и это взывало автоматическое изменение еще нескольких полей.
Пользователь 2 в это же время изменил одно из тех полей, которое было автоматически изменено из-за смены статуса и еще одно из любых других полей типа Комментарий.
Как нам слить эти 2 редактирования, если в данном документе смысл бизнес процесса такой, что изменения пользователя №2 конфликтуют с новым статусом А вот комментарий пофиг, можно и слить.

При этом некоторые поля при слиянии нужно объединять, а не которые (например справочники) не объединять, а выбирать значение пользователя, которое наиболее приоритетное с учетом бизнес-логики (в данном примере - статуса).

При всем при этом этот автоматизм (который после изменения статуса, сменил еще пару полей) мог быть инициирован другой системой. Ну хз, например 1С-ом, если он интегрирован или сайтом или Астером. Или еще хз кем.

И все это нужно как-то прописать в метаданных. И никто из разработчиков заказчика не будет это делать. Потому что они и так прекрасно живут имея в наличии две вещи: 1 - принцип кто последний тот и папа и 2 - подробный лог редактирования. Если и возникнет Ситуация раз в год, то откроют лог и во всем разберутся.

А если никто из разработчиков заказчика не будет этого делать, то зачем нам усложнять платформу. Просто чтобы сказать, что у нас есть модная фича? Чем меньше подобных наворотов, тем надежнее механизм.
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39848709
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dma_caviar,

по верхам скачешь
если, например, метод блокировки "пессимизм", то второй юзер ничего не сможет даже прочитать или получить сообщение о занятости ресурса при попытке редактировать тухлый кеш
слияние изменений - при оптимизме, в момент слияния все равно надо переключиться на пессимизм
сливающий код - внешний, пользовательский, ты просто вызываешь методы слияния заданные пользователем
...
Рейтинг: 0 / 0
DataExpress - конструктор баз данных.
    #39848714
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosсливающий код - внешний, пользовательский, ты просто вызываешь методы слияния заданные пользователем
Тут вопросов нет.
Я просто к тому что пользователь в 99% не будет заморачиваться. И, как я понял, было предложено сделать все полностью автоматически.
...
Рейтинг: 0 / 0
25 сообщений из 277, страница 7 из 12
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / DataExpress - конструктор баз данных.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]