Запрос. Нарастающий итог. Как «я» его НЕ понимаю (вторая часть).




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

74 Comments

  1. Ish_2

    Прочитал с опаской . Опять юмор ?

    А существовала бы данная тема (проблема) «Подведем итоги. Нарастающие.» при наличии циклов в 8.х версии 1С ?

    Ничего не понял. Если бы автор простым текстом объяснил (пошутил) ,как он видит решение таких задач , было бы неплохо.

    Reply
  2. anig99

    (0) Мдя… Вот я не знаю кто поленился… Шепот, что нормально ссылки не расписал и проблему не поставил, или автор данного ОПУССА…

    Если бы он прочитал хотя бы статью мою или Ish_2 ВНИМАТЕЛЬНО, то увидел бы там сферу применения данного решения. А негодование только потому что Вы не в теме и ваша статья выпадает из контекста, более того, она даже с учетом только статьи Шепота не имеет смысла. О чём Вам намекнули в комментах ссылками на генератор псевдонаучного бреда.

    Reply
  3. Ish_2

    Я догадался в чём дело .

    Автору нужно помочь с выражением того , что он хочет сказать.

    В таких случаях лучше не использовать длинных сложносочиненных предложений, а только простые. Примерный план поста :

    » В статье такой-то говорится о том -то и том-то»

    «Я считаю , что это правильно (неправильно, смешно, грустно и .д.)»

    «Я предлагаю правильное (неправильное,смешное, грустное) решение (взгляд, подход ,вопрос).

    В дальнейшем текст можно усложнить.

    Reply
  4. hogik

    (1)

    Заменой СУБД для «1С 8.х». И через ВК предоставление проблемному программисту «циклов». Цикл — Ваш термин. На самом деле не в «цикле» дело…

    (2)

    Читал внимательно и задавал Вам вопросы. Получал от Вас ответы… Да, Ваш алгоритм имеет «широкую сферу применения». И остается, при этом, не эффективным и сложным. Я об этом Вам сказал в комментариях к Вашей статье.

    (3)

    А попробуйте прочесть не отдельные буковки, а целые слова, предложения, абзацы и т.д. Еще, для понимания текста, помогает — задать вопрос автору.

    Reply
  5. anig99

    (4) слова «широкий» у меня нет. Более того, я упоминал, что проблема специфическая. И именно в этом вся проблема… Контролируемая ядерная реакция — тоже очень сложная и затратная. Гораздо легче сразу бабахнуть, но это уже неэффективною Гораздо легче и удобнее топить углём. Что и делается много где. Тем не менее есть АЭС, есть специалисты-ядерщики. Хотя можно было и дальше не напрягаясь строить простые ЭС на угле сотнями и тысячами. Где-то это оправдано, а где-то и АЭС удобнее и выгоднее, несмотря на дикосложные процедуры управления реакцией. Так и здесь. Несмотря на сложность и неэффективность применения метода «в лоб» при определенных условиях и сложной оптимизации — результат превзойдет «уголь» простого кода на машине пользователя.

    P.S. Сорри, я не всегда помню кто конкретно отписывался у меня в комментах.

    Reply
  6. hogik

    (5)

    В апострофы текст заключают не только для цитирования. 😉

    Если «проблема специфичная», то «не в теме» не я, а — Вы.

    Я, то написал в первой части «подобных задач (алгоритмов) возникает очень много при разработке АСУп-а». Вы с этим не согласны? Тогда это не Ваша тема…

    Reply
  7. artbear

    Плюсую.

    Автор хорошо знает, о чем говорит.

    Жаль, что первой части не видел, также поставил бы плюс 🙂

    Reply
  8. anig99

    (6) Туплю. Ещё раз прочитал первый пост. Понял. Минуса там не ставил, сейчас бы плюс поставил. Поставлю его здесь. Но всё-таки сделать 2 вещи: 1. убрать из юмора 2. Сделать вступление в статье или поменять название. А то я смотрю название, смотрю текст — а мозг уже пошел работать по названию статьи и сам текст статьи воспринимаются совсем иначе.

    Reply
  9. Шёпот теней

    … тяжелейший случай переОсмысления …

    … однако …

    … вот …

    п.с. подможет мне кто-нибудь … что такое: «СУБД должна иметь два способа манипулирования данными — «навигационный» и «запросный» через общий «Handle».» .. ? …

    … спрашиваю … спрашиваю … ВСЕ меня игнорируют … вот …

    Reply
  10. hogik

    (8)

    Цель этой и прошлой «публикации»:

    1) Мне осознать потребность (востребованности) в такой разработке (подмена СУБД).

    2) Найти человека, который сможет «проверить» юридическую чистоту такого (моего) деяния. До начала моей работы.

    3) Найти человека, который хорошо знает «1С 8.х» и поможет мне в тестировании разработки. Если она состоится.

    И мне хотелось эти вопросы решить не навязчивым способом для сообщества. 😉

    Но найти людей, понимающих, зачем и почему это надо (или не надо) делать.

    Посмотрим, чего у меня из этого получится…

    Reply
  11. hogik

    (9)

    В DBF-ной версии «1С 7.7» запросы в 1SQLite — общий «Handle», а прямые запросы из FoxPro — разные.

    Reply
  12. Ish_2

    (9)

    подможет мне кто-нибудь … что такое:СУБД должна иметь два способа манипулирования данными — «навигационный» и «запросный» через общий «Handle».» .. ? …

    К автору !

    Как же ты плюс прошлый раз поставил ? Просто так ? Не понимая главного его шутливого тезиса ?

    Даже интересно , послушать «тяжелейший» диалог двух любителей обрывков мыслей и недосказанностей.

    (7) Автор не понимает о чем пишет.

    И пытается шутить на теме своего глубокого непонимания.

    (8) Ага , тупишь. Ничего ты не понял. Зато вежливый..

    (4) Нет , правда. Нужно попробовать написать что-нибудь, не отталкиваясь от других статей, а только своё. Тогда посмотрим. А пока просто не о чем говорить.

    Reply
  13. hogik

    (12)

    Игорь.

    Посмотрите, пожалуйста, мои разработки.

    Не понимаю.

    Если я написал бред, то чего Вы так много уделяете этому бреду внимание?

    Что Вас задевает, тревожит, беспокоит и т.д. ?

    Ставьте минус, и проходите мимо.

    И зачем «нападать» на других участников данной темы.

    Мы же не под Вашими разработками болтаем.

    Ваши разработки не ругаем. И, даже, не обсуждаем.

    Рубрика публикации — «Юмор», а вы такой печальный… 😉

    Еще я не понял.

    Вы чего, действительно считаете, что я собираюсь писать еще один «Подведем итоги. Нарастающие.» ?

    Типа, очередной нумератор документов…

    Reply
  14. Шёпот теней

    … хм … дааа … видно я тАААк и не узнаю что такое «СУБД должна иметь два способа манипулирования данными — «навигационный» и «запросный» через общий «Handle». «…

    … жаль … очень жаль … вот …

    Reply
  15. hogik

    (14)

    Ну, почему?

    Какое из этих трех слов Вас больше интересует?

    С него и начнем. Простым, житейским языком…

    Reply
  16. Ish_2

    Владимир.

    Меня задевает,тревожит, беспокоит то , что у этой темы могут быть неожиданные повороты. Как и в теме нумераторов, кстати.

    Во мне и хотелось узнать , что же автор хочет предложить.

    В статье «Подведем итоги…» указаны при способа решения задачи просроченных долгов.

    1. Если Вы приведете способ решения задачи просроченных долгов, который кажется Вам наиболее симпатичным — будет хорошо.

    2. Если Вы приведете общий подход к решению такого класса задач , пусть и в несуществующей среде , будет просто отлично.

    Степень внятности ответа на 1. или 2. определит отношение к остальным буквам в теме Вашей статьи.

    Reply
  17. Шёпот теней

    (15)

    1. запросный …

    2. навигационный ….

    … вот …

    Reply
  18. Gilev.Vyacheslav

    (0) приведи Конкретный пример

    Reply
  19. Gilev.Vyacheslav

    (9) автор хочет сделать «мир лучше», это понятно

    но как это сделать, он думает что знает, но выразить простым и понятным языком пока не получилось

    по поводу надуманных терминов, можешь заменить на «лучше чем сейчас, но точно не знаю как конкретно» 🙂

    Reply
  20. Шёпот теней

    (16) …

    1. … если ТЫ ещЁ не составил своего мнения по поводу «буковок» — то зачем тогда «минус» …

    2. … сам то ТЫ никогда не отвечаешь на вопросы как есть — только очень сложно …

    3. … чего это ты свои вопросы перекладываешь на чужие плечи …

    4. … да ещё берЁшься судить … как экспЕртЪ прЯмь … крутыми бывают только яйца …

    5. … просто так … потому, что не придумал …

    … вот …

    Reply
  21. Ish_2

    (9)

    «В DBF-ной версии «1С 7.7» запросы в 1SQLite — общий «Handle», а прямые запросы из FoxPro — разные.»

    Это ответ ? Первая часть ответа — для меня абракадабра.

    Вторая часть ответа порождает вопросы :

    1. FoxPro какой версии имеется ввиду 2.6, 3.0-5.0 ?

    2. ЧТо такое прямые запросы в FoxPro ? Про какие обращения к БД речь ?

    Лучше привести примеры команд.

    Reply
  22. hogik

    (16)

    Игорь.

    Заверяю Вас, что никаких гнусностей в Ваш адрес и по поводу Ваших разработок я не замышлял и, как мне кажется, не делал. Чего я хотел обсудить (предложить) это написано в первом пункте (4) сообщения. Цель двух моих заметок написана в (10) сообщении. Как мне представляется это и будет общий подход к решению такого класса задач в, пока несуществующей, среде. А будет ли эта среда реализована мной для ВАС (проблемных программистов) зависит от конструктивного обсуждения и высказывания своих мнений друг-другу.

    Reply
  23. Шёпот теней

    (19) … хороший пиаровский ход у автора …. мне нравится …

    … к тому же мы все его тАААк просим … знАчит удАчный ход … !!!

    … к тому же есть хорошая поговорка — скажи половину и замолчи … остальное всЁ скажут за тебя …

    … к тому же автор настойчив и это делает ему комлеме … и наделяет его определЁнными кАчествами в которые хочется верить … хотя бы и на всякий случай … устали мы без веры, без печали, без надежды …

    … хи — ха -хо …

    .. вот …

    Reply
  24. marsohod

    Напомню старое как мир высказывание: «Кто ясно мыслит — тот ясно излагает»…

    … якОсьтАкось …

    Reply
  25. Ish_2

    (22) Не-а. Не про гнусности речь. В моей статье есть одно умолчание.

    Дело в том , что 15 лет назад я решал в FoxPro подобные задачи одной агрегатной команды «Replace» при правильной установке отношений (Set relation и Set Skip on) между таблицами.

    Вот я и подумал , что , возможно, Владимир предлагает нечто подобное (хорошо забытое старое).

    Reply
  26. Шёпот теней

    (24) … хм …

    1. … вопрос КТО излагает …

    2. … для КОГО излагает …

    3. … КТО его слушает …

    4. … КАК его слушают …

    5. … хотят ли его понять …

    … слишкомМногоЕслиИвсёТакНеОднозначНО …

    Reply
  27. hogik

    (19)(gilv)

    Если мне не изменяет память, то я Вам уже высказывал следующую мысль Повторю, корявым языком: «В беседе (споре) не стоит переходить на обсуждение собеседника. Обсуждайте саму тему.» Что касается моего желания сделать «мир лучше» не совсем верно. В данной теме я пытаюсь спросить окружающих людей — а хотят ли они этого? Если говорить о конкретном решения — оно изложено в первом пункте (4) сообщения. И я знаю как это сделать (делать), получиться или нет это можно выяснить только на некотором этапе разработки (изготовления).

    По поводу надуманных терминов. Думаю, не надо это принимать близко к сердцу (голове). По жизни случилось так, что у нашего поколения не было возможности читать большое количество книг. Многих терминов и понятий не существовало вообще. Т.е. нам приходилось их придумывать и иногда писать книжки, которые (образно говоря) читает Ваше поколение. А многие термины изменились (не по смыслу, а по форме). Я стараюсь использовать «бытовые» термины. Уж не судите строго…

    Reply
  28. KapasMordorov

    Общий хэндл и навигация нагрузят СУБД транзакциями?

    Если да, то какая разница?

    Reply
  29. hogik

    (25)

    Нет. Ничего подобного и не думал предлагать. Т.е. я в этом направлении вообще не думаю… Т.е. мы разобрались в причинах нашего «непонимания» друг-друга? И поводов для «ссор» больше нету… Ага?

    Reply
  30. Шёпот теней

    …. кто-нибудь расскажет про:

    «СУБД должна иметь два способа манипулирования данными — «навигационный» и «запросный» через общий «Handle». !…

    … уффф …

    Reply
  31. hogik

    (28)

    Если производится доступ к данным по разным (например, двум) Handle в одной задаче, то это равнозначно выполнению двух задач. Т.е. если, например, производится обновление БД в транзакции, то чтение данных по другому Handle не увидит информации этой транзакции. Еще и проблемы с блокировками возникнут. Классический пример. Осуществление в модуле проведения обновление данных штатным языком 1Са и одновременный доступ (по алгоритму) к данным через ODBC. Эта проблема (для 1С 7.7) решена в 1С++ для SQL-ной версии, в 1SQLIte для DBF-ной версии, в моих разработках. И НЕ решена при использовании FoxPro для выполнения прямых запросом (с или без применения моей разработки доступа к данным в монопольном режиме запуска 1Са).

    Reply
  32. hogik

    (30)

    Пытаюсь в (31).

    Reply
  33. hogik

    (30)

    «Навигационным» способом я называю старый добрый доступ к данным в системах Clipper, FoxPro и т.д. Т.е. это «найти по ключу», «продвинутся на N записей вперед/назад», «встать на начало/конец таблицы». «Запросным» способом я называю, например SQL.

    Во многих «старых» системах был добавлен «запросный» метод обработки информации. Но через, например, ODBC. Т.е. «навигационный» доступ и «запросный» обеспечивался через разные Handle. И смешивать в алгоритмах оба доступа было сложно (в строгом определении — невозможно). На данный момент, мне известна только одна СУБД, в которой можно, по алгоритму, смешивать обращения к данным обоими способами.

    Reply
  34. marsohod

    (26) Пардон, Вы зря приняли на свой счет…

    Замечание по поводу ясности адресовано к статье…

    Смахивает на предсказания Нострадамуса… или я уже отупел…

    Буду ставить (0) в начале комментария…

    Reply
  35. Ish_2

    (31) Данные БД обновляются в транзакции и в это же время осуществляется чтение этих данных другим запросом.

    Что будет ? — на такой вопрос пытается ответить Ваша разработка . Так ?

    Тема классическая . Можно , конечно, порассуждать о видах блокировок .

    Но я скромно спрошу : а при чём тут задача просроченных долгов ?

    Reply
  36. Ish_2

    (33) Наконец-то.

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

    Я не знаю приблизится ли Ваше понимание и моё от следующего предложения :

    «Представьте , что у Вас в Foxpro нет оператора цикла и Вы не можете использовать сканирование таблицы Scan ….EndScan. Но у Вас есть агрегатная команда Replace !»

    Reply
  37. Gilev.Vyacheslav

    (27)

    >В данной теме я пытаюсь спросить окружающих людей — а хотят ли они этого?

    кто хочет? чего хочет? зачем? брр

    >Если говорить о конкретном решения — оно изложено в первом пункте (4) сообщения

    а я то дурак думал, оно изложено в статье 😮

    ну да ладно, посмотрел (4) понятней не стало

    >По жизни случилось так, что у нашего поколения не было возможности читать большое количество книг. Многих терминов и понятий не существовало вообще. Т.е. нам приходилось их придумывать..

    звучить как оправдание фантазий

    >>> писать книжки, которые (образно говоря) читает Ваше поколение.

    тут вообще не понятна дележка на поколения

    >стараюсь использовать «бытовые» термины.

    чем дальше в лес…

    лучше в общепринятых терминах, пожалуйста

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

    Reply
  38. hogik

    (35)

    Нет. Моя (возможная) разработка позволить работать с данными не только запросом, но и навигационными методами. Что демонстрируется (в моем изложении) на примере «задача просроченных долгов» Вашей фразой «Отступление для «семерочников»…». При этом не путем моделирования «навигационных» методов запросами (как это сделано в 1С 7.7 SQL) . А непосредственным отображением операторов приложения на команды манипулирования данными СУБД.

    Думаю, по сути, повторил тоже самое, что и писал выше по теме… 🙁

    Reply
  39. Шёпот теней

    (37) … хм … по-поводу … «… у нашего поколения не было возможности читать большое количество книг … »

    … так для прикола расскажу интресную историю — как создавался первичный язык программистов ….

    … в те далЁкие времена когда я ешЁ был молод, увлекался электроникой и мы сами собирали ЭВэМы: игровые приставки, Микроши, эРКашки Синклера … литература небыло вообще а та что была была перепечатка хелп-ов на английском языке … и языка естественно никто не знал (почему-то) …

    так вот там часто встречалось слово «type» … и мы все, как читали так и говорили — «тупэ», да «тупэ» …

    как оказалось потом «тип» … вОООт … мы долго смеялись … и чуть, что, при очередной глупости говорили друг-другу : «ТЫ — ту-пэ»…

    … ещё было «ентер» … а «ксерокс» стало именем нарицательным для всЕх поколений копировальных аппаратов … а ксерокопирование стало российскимЕВРОстандартом …

    самое смешное… что даже сейчас читая литературу в переводе — понимаешь «ту-пэ» ..

    … вотТАКАЯисторияOFFтоп …

    Reply
  40. Шёпот теней

    … любое быстродействие БД это критичность операций запись/чтение жестких дисков …

    … уменьшая ИнформационныйКвант уменьшаем времяЗахвата … НО … увеличиваем описание доступа … это опять запись/чтение ЖД …

    … современное развитие БД мало шло развитием алгоритмов и принципов минимизации взаимодействия внутри БД … в основном за счЁт развития Железа …

    … даже «поточное» программирование, на которое стОлько возлагалось надежд, оказалось провальным компонентом развития … слишком всЁ сложно — создание надСистемы сложнее чем сама система …

    … любая БД это прежде всего файл … или файл в файле … современная релятивизация итак достигла совершенства как математическая модель … а вот взаимодействие с ней меняется пока только количественно но не качественно …

    … вотТАКОЕмнение …

    Reply
  41. Ish_2

    (38) Очень хорошо.

    Решение таких задач действительно выглядит изящнее( не значит — эффективнее) при использовании «навигационных методов».

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

    Т.е. Вы предлагаете повторить по функционалу Субд начала 90-х годов.

    Так ?

    Или Вы хотите создать некую среду каким-то хитрым , не таким как в FoxPro образом, сочетающую «запросные» и «навигационные» доступы к данным.

    Тогда Вопрос : зачем ? для каких задач ? приведите примеры.

    Я извиняюсь.

    Честное слово , впечатление , что из Вас тянут жилы как из партизана :

    Ну скажи что-нибудь связное .. Сформулируй хоть что-нибудь.

    Reply
  42. Шёпот теней

    … «старые» методы да на «новом» железе не работают а летают …

    … и просто и быстро и понятно и легко … И дёшево … вот …

    п.с.

    … новые программы внедряются под напором тех же желаний что и покупаются новые телефоны … «форма» в наше время — важнее «содержания» …

    … вот …

    Reply
  43. hogik

    (36)

    (37)

    По поводу терминологии и её непонимания. Вот цитата из описания достоинств ADS:

    «Отметим, что ADS представляет собой СУБД, использующую ISAM -доступ к данным. Это означает, что данный сервер обладает примерно равной производительностью при навигационном способе доступа и при получении результатов SQL-запросов.»

    Ну, а мои вольности по поводу слова «запросный» заключенная в апострофы, вроде не вызывало у нас разночтения.

    (36)

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

    — Обращаю Ваше внимание, что в первом пункте (4) сообщения я, специально для Вас, написал: «предоставление … программисту «циклов». Цикл — Ваш термин. На самом деле не в «цикле» дело…». Кроме этого утверждение «могут и должны решаться…модификации данных» явно не стыкуется с упрощенной (в хорошем смысле этого слова) постановкой задачи в Вашей статье. И сама категоричность, типа — «должны» меня сильно удивляет. Если Вы так считаете, то и решайте задачи таким способом. Это правило, требование, разумность… или что?

    «Я не знаю приблизится ли Ваше понимание и моё от следующего предложения»

    — Нет. Не приблизит. Т.к. не имеет отношения к теме разговора.

    (37)

    «а я то дурак думал, оно изложено в статье»

    — А оно и в статье изложено. А в (4) сообщении уточнены детали.

    «звучить как оправдание фантазий»

    — А это и есть фантазии. Никаких оправданий. Фантазировали, мечтали, придумывали…

    «тут вообще не понятна дележка на поколения»

    — Поясняю. Младшее поколение (разумная его часть) пользуется плодами труда старших поколений. И это естественно… А понятие «дележка» — это Ваш термин. Я стараюсь людей не делить по признаком возраста, пола, цвета и т.д.

    «чем дальше в лес…лучше в общепринятых терминах, пожалуйста»

    — См. первый абзац этого сообщения.

    «резюмирую: нужно еще раз оформить буквально несколькими предложениями решаемую задачу и способ, дающий преимущества над существующими»

    — Чувствуется рука опытного преподавателя. 😉 Я выбрал другой способ «достучаться» до сообщества. О чем написано в (8) сообщении. Наберу еще раз «-5» и напишу третью часть. Или пожелаю всем успехов и пойду заниматься своими делами… Это авторский прием такой. В Ваших статья — «вибратор c шипами», а у меня многосерийное занудство 😉

    Reply
  44. Ish_2

    (43) Ладно.

    Подождем Вашей позитивной третьей части с примерами и предложениями.

    Reply
  45. hogik

    (41)

    Игорь.

    Пожалуйста, перечитайте обе части моих заметок еще раз.

    Т.к. в сообщении (41) вы спрашиваете:

    «…создать … среду … сочетающую «запросные» и «навигационные» доступы к данным.»

    А у меня в заметках написано:

    «для … решения задач … СУБД должна иметь два способа манипулирования данными — «навигационный» и «запросный»»

    «…возможность … реализации такой возможности в «1С 8.х»… проблемным программистам…»

    Далее следует от Вас вопрос:

    «… для каких задач ? приведите примеры …»

    А у меня в заметках приведен пример из Вашей статьи с моим обобщение:

    «….подобных задач (алгоритмов) возникает очень много при разработке…»

    Мне кажется, что я ответил на Ваш вопрос еще до того, как Вы его задали.

    Можно, лишь, обсуждать много или не много таких задач. Но, думаю, можно посмотреть на ЛЮБОЙ алгоритм наших задач. И сказать — каким способом его проще и эффективней решать. И выбрать лучший. Если Вы считаете, что такого выбора не существует — всегда «запросный». То и нет темы для нашего разговора. Лично я использую «запросный» метод только для очень простых выходных форм….

    Reply
  46. Ish_2

    (45) Владимир.

    Перечитал на всякий случай еще раз.

    Начнем все сначала.

    1. Вначале была статья Anig99, в которой обосновывался «чисто запросный» метод решения задачи получения просроченных долгов.

    2. Затем была статья Ish_2 , в которой подтверждался этот подход и лишь текст запроса приводился другой.

    3.Затем появилась Ваша текущая статья в Life (!) — «Запрос.Нарастающий итог. Как «я» его не понимаю.»

    Читатель вправе ожидать в Вашей статье какой -то обозначенной альтернативы , другого подхода. Т.е. статьи , в которой автор не оппонирует , не играет «вторым номером» , а нечто предлагает .

    Что же мы видим вместо этого :

    «… для каких задач ? приведите примеры …»

    А у меня в заметках приведен пример из Вашей статьи с моим обобщение:

    «….подобных задач (алгоритмов) возникает очень много при разработке…»


    Это что ? Такой ответ Вам представляется — обозначением другого подхода ? Пример альтернативы ?

    Вся статья и комментарии есть уклонение от сути , увертки.

    «Дескать ,а можно и не так …» — КАК ? — «А не так …!»

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

    Reply
  47. Арчибальд

    Поток сознания ❓ 😮

    Reply
  48. marsohod

    Заинтриговали по самые помидоры… Ждем третью часть…

    Reply
  49. hogik

    (46)

    Игорь.

    Еще раз.

    Я не собирался и не собираюсь приводить конкретное решение задачи «Подведем итоги. Нарастающие.» (далее по тексту — ПИН). В моем понимании задачи просмотра таблиц тем или иным способом для тех или иных задач — это типовая задача. 😉 При решении наших задач АСУп-а мы, программисты, это (просмотр) «выражаем» различными алгоритмами с применением различных инструментов. В том числе и в ПИН.

    === Врезка. Для «gilv».

    АСУп — автоматизированная система управления предприятием. Теперь это обозначается другим термином (терминами). 😉

    === Конец врезки.

    На примере цикла статей «Подведем итоги. Нарастающие.», я вижу, что эта конкретная задача проще реализуется при применении НЕ «запросных» инструментов. В предыдущей статье на эту тему я спросил автора: «Решать данную задачу запросами — это самоцель?». Типа, задачи «разделить яблоки по складам запросом». Автора той статьи, как мне показалось, обидел мой вопрос. Я «замял» (прекратил) это обсуждение под той статьёй.

    Потом появилась Ваша статья. В ней «явно» написано, что решать данную задачу запросами это решать задачу через «за…». И «сказано», что в «современной системе» нет других инструментов для решения данной задачи — только запросами. Так?

    Я в своих заметках высказал мнение — хорошо было бы иметь и в «современной системе» инструменты, позволяющие решать подобные ПИНу задачи не через «за…».

    И показал — ГДЕ, на мой взгляд, надо снимать «ограничения» системы в целом.

    Примерами таких решений является СУБД Advantage.

    Применительно к нашим темам (1С-ам всяким) для «1С 7.7» уже есть решения.

    Например, 1SQLite + «DBEng32 для …». Есть и решение с «другого» конца — прямые запросы в 1С++. Хотя, лично я считаю, что второе решение — это «полумер» обусловленный реальной жизнью. 🙁

    Путей решения, уже МНОЙ поставленной задачи — два.

    1) Добиваться решения от изготовителей программного обеспечения уровня 1С и СУБД. Лично мой опыт показывает, что этот путь не совсем бредовый.

    2) Делать доработки аналогичные разработкам в 1С 7.7.

    Но!

    Перед тем как что-либо делать (думать) в этом направлении, думаю, имеет смысл выяснить — а это будет использоваться другими людьми? Или, даже, при наличии «расширенных» инструментов пользователи (для меня это — проблемные программисты) будут продолжать решать задачи подобные ПИН через «запрос».

    «… вот …»(с) 😉

    Reply
  50. Ish_2

    Владимир.

    Решать такие задачи как ПИН только одним «запросом» — не самоцель.

    В статье «ПИН» приводился взгляд автора на оптимальное решение этой задачи. Что понимается под оптимальностью ?

    1. Для больших и малых баз в среднем такой способ дает лучшее быстродействие. Это значит , много на малый базах не проиграет , на больших базах (120Гб) выиграет у альтернативного решения задачи при помощи кодинга.

    2. Мы отвязываемся от «слабости клиента» и передаем обработку на сервер БД.

    3. Запрос составляется конструктором интерактивно , без кодинга.

    Вы пишете , что «я вижу , что эта конкретная задача проще реализуется при применении НЕ «запросных» инструментов». Пусть так.

    Но где же аргументы ? Хотя бы основные подходы ..

    Не использовать запросы вовсе ?

    Позиционироваться «навигационным методом» на каждую конретную запись таблицы оборотов (сканировать таблицу ) ?

    И как насчет разделения кода на «клиенте» и «сервере» ?

    ЧТо даёт Вам основание думать , что это будет лучше ?

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

    Странно , не находите ?

    Затем , цитата :

    «И «сказано», что в «современной системе» нет других инструментов для решения данной задачи — только запросами. Так? »

    Отвечаю , НЕ ТАК. Таких утверждений в статье нет.

    В статье приводится сравнение трех разных подходов к решению этой задачи и Выбирается , на взгляд автора, самый оптимальный — «запросный».

    Очень может быть , что Вас в последнюю очередь волнует задача просроченнных долгов, а волнует прежде всего задача :

    «Делать доработки аналогичные разработкам в 1С 7.7. «.

    И задача «просроченных долгов» лишь повод поговорить о совершенно других вещах.

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

    «1SQLite + «DBEng32 » — К сожалению ,я в этом ничего не понимаю.

    Reply
  51. Ish_2

    «И показал — ГДЕ, на мой взгляд, надо снимать «ограничения» системы в целом.

    Примерами таких решений является СУБД Advantage.»

    Если Вы собираетесь прирутить 1с к Субд , допускающую навигационный доступ к данным , то не кажется ли Вам , что встроенный язык 1с должен быть расширен как минимум командами установки отношений между таблицами ? Иначе зачем тогда нам навигационный доступ ?

    Если это так, то фирма 1с будет вынуждена создавать спец. язык — 1с Advantage. Это реально ?

    Может быть Ваш взгляд на бредовость или небредовость этой идеи несколько изменится.

    Reply
  52. hogik
    Reply
  53. Ish_2

    Я не согласен с каждым абзацем поста (52) . С каждым.

    Бывает..

    Но ,возможно , Ваша статья с четко обозначенной темой была бы интересна.

    Бесполезными статьи , начинающиеся словами «Вот если бы …», не считаю.

    Всегда полезна хоть и умозрительная , но альтернатива.

    Reply
  54. hogik

    (53)

    Игорь.

    Если Вы не согласны с каждым абзацем сообщения (52), то, думаю для Вас и «статья» бесполезна. Я уже на это Вам дал ответ, выше по теме, типа — «ставьте минус и проходите мимо». Но Вы нашли время написать свое мнение по «трудам» моим. И за это Вам говорю — большое спасибо!

    Единственно, что хочу попросить Вас.

    1) Вспомнить свой опыт 15 летней давности работы на системе типа FoxPro.

    2) Себе сформулировать — а что Вам «мешало» в ней работать (программировать и эксплуатировать).

    3) Далее — поверить мне, что файловая версия «1С 8.х» это DBF-ная реализация (внутри 1Са) новых средств программирования. Средств программирования для проблемного программиста. Т.е. для Вас.

    4) И посмотретьТОЛЬКО на название разработки для «1С 7.7» по ссылке: http://infostart.ru/public/15211/

    Ответа от Вас, на это моё сообщение, я не ожидаю. Не тратьте, пожалуйста, своё время на бесполезную «работу» (обсуждение моей «статьи»).

    Желаю успехов.

    Еще раз — спасибо…

    Reply
  55. artbear

    (55) Минус за «рекламу» и оофтоп 🙁

    будь в теме или вообще не пиши.

    Reply
  56. anig99

    (56) согласен, но статья тоже не совсем удачно названа…. Она навеяна запросами о нарастающих итогах, но не более.

    Reply
  57. ZLENKO

    Я высказался в тему — цитата автора темы: «И, как мне показалось, негодование. Т.е. я сделал вывод, что НАС интересует «интересный» способ решения таких задач, а не получение конечного результата.»

    Можно сколько угодно теоретизировать чей способ решения задачи «круче», но пока нет самого отчета использующего тот или иной способ решения задачи — спор беспредметный. Я, в отличие от спорящих, сделал отличный отчет и по большому счету неважно на какой технологии. Главное что он работает правильно и ним удобно пользоваться и куча функций. А что пользы от теоретических измышлений ?

    Reply
  58. anig99

    (58) Ошибаетесь… Без теории практика быстро доходит до предела…

    А отчет написан мною. Так что не надо обобщать…(:

    А по поводу конкретно этой статьи — так она собственно и не о нарастающих итогах. А задел под другую разработку в области работы с данными.

    Reply
  59. Altez

    (54)если понял..

    Контора покупает «Сервер 1С-Пр.64бит»,

    этим избавляется от шаткой файловой модели БД.

    При наличии Волшебной Компоненты+АДС эта проблема уходит

    и 72 кило остаются у знатоков?

    ещё беспокоит мнение юристов 1с по поводу таких разработок

    Reply
  60. hogik

    (60)

    «и 72 кило остаются у знатоков?»

    — Кто такие знатоки? Может быть Вы об этом говорите — сообщение (52), абзац #7, со слов «Меня вообще не волнует».

    «ещё беспокоит мнение юристов 1с »

    — См. сообщение (10) данной темы.

    Смысл сообщения (54) данной темы другой:

    1) Для обеспечения надежной и производительной системы необходим клиент-серверный режим СУБД.

    2) Суть многих алгоритмов обработки информации в АСУп-ных задачах успешно (проще) реализуется навигационным ЯМД.

    3) Клиент-серверные СУБД предлагают ЯМД только «запросного» типа (SQL).

    4) Трехуровневая архитектура решает задачу по «переводу» алгоритмов с навигационного ЯМД, на «запросный» язык.

    5) Существует СУБД клиент-серверного типа с обоими видами ЯМД.

    6) При применении этой СУБД отпадает необходимость в использовании трехуровневой архитектуры.

    Reply
  61. Ish_2

    (61) Владимир.

    В п.5 утверждается что рассматриваемая СУБД — «клиент — серверная».

    В п.6 говорится , что при применении этой СУБД «клиент-серверная» архитектура НЕ НУЖНА ( а иначе что такое тогда — «трехзвенка» ?).

    Было бы любопытно получить от Вас пример решения задачи «НИ» на языке такой СУБД. Как-нибудь разберусь.

    Reply
  62. Ish_2

    (55) В отличие от Artbear , не осуждаю.

    В этой жизни нужно как-то крутиться.

    Допускаю даже , что есть люди , которым интересно как сделан Ваш отчет или его многочисленные «собратья» .

    Просто Вы нетуда попали — здесь не продают и не покупают.

    Здесь речь идет о другом : о технологиях и альтернативах .

    А тривиальная задача о просроченном долге лишь фон для беседы.

    Reply
  63. artbear

    (63) Осуждение именно за «не туда попал», но все равно пишет свою рекламу 🙁

    Совесть-то нужно иметь!

    Reply
  64. hogik

    (62)

    Игорь.

    1) В сообщении (61) утверждается, что предлагаемая мной СУБД является клиент-серверной.

    2) И «трехзвенка» реализуется в рамках клиент-серверной СУБД.

    3) Вопрос поднятый мной в сообщении (61) другой. Я утверждаю, что основная задача среднего звена в «трехзвенке» — это «преобразование» алгоритмов с «некого языка» в «запросный» язык. И делает это не потому, что это «хорошо», а потому что предлагаемые на рынке клиент-серверные СУБД имеют только «запросный» ЯМД.

    И это моё утверждение легко подтверждается самим фактом существования файловой версии «1С 8.х». Для, например, системы http://www.omega.ru/ это доказывать очень сложно…

    4) Продолжаем шутить. 😉

    Пример решения «НИ» на языке такой СУБД:

    use Table

    set order Index

    seek Client+dtos(Date)

    do while (!eof())

    if …

    exit

    endif



    skip 1

    enddo

    Reply
  65. Ish_2

    set order to — припоминается мне ,что у Вас пропущено to для назначения главного индекса (или тэга в составном индексе).

    Подход знакомый — вытер слезу. Ну, примерно понятно , что Вы предлагаете. Скорее всего, Вам ближе «клиппер Лето 87».

    Так вот . Даже используя навигационные методы , на мой взгляд, таких конструкций лучше избегать, если Вы делаете вычисления для не для одного «контрагента» , я для таблицы «контрагентов».

    Остальное до меня доходит с большим трудом.

    Reply
  66. hogik

    (66)

    Игорь

    1) Мной пропущено «to» специально. Я, действительно, хотел чтобы Вы вспомнили ЭТО и «вытерли слезу». 😉

    2) А избегать таких конструкций не надо. Надо, просто, добавить еще один цикл по клиентам. И именно такие (аналогичные) конструкции надо использовать в задачах подобных «НИ».

    3) «Остальное до меня доходит с большим трудом»

    — А чего — остальное? Снимаем свой минус на моей «публикации» и продолжаем дальше писать запросы… 😉

    Reply
  67. Ish_2

    Разве в минусе дело ?

    Дело в моральном осуждении :

    в своей статье «вторым номером» не выступают и не заставляют публику допытываться : что же автор хочет предложить ?

    Reply
  68. hogik

    (68)

    «что же автор хочет предложить ?»

    — Думать… :-(((

    Reply
  69. natarezn

    что я белка что ли бегать по ссылкам??? уже философ уже!

    Reply
  70. natarezn

    я в программировании тоже так бегаю — курсор

    Reply
  71. nickkey

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

    Reply
  72. hogik

    (72)

    Александр (nickkey).

    🙁

    Но, тема не об «оптимизации запросов»(с), а об целесообразности (эффективности) их использования в некоторых (часто используемых) алгоритмах. И, самое главное, о том — какими затратами достигается эффективность использование запросов и «реляционной модели БД» в наших задачах. И, что — без «запросов» многие задачи решаются проще и дешевле. Об этом «в мире» говорят давно и много…

    Reply
  73. AlexO

    (0)

    связываются с вменяемым разработчиком более или менее зрелой СУБД

    Никогда такого не будет.

    У 1С совершенно другие цели и подходы.

    (33)

    «Навигационным» способом я называю старый добрый доступ к данным в системах Clipper, FoxPro и т.д. Т.е. это «найти по ключу», «продвинутся на N записей вперед/назад», «встать на начало/конец таблицы». «Запросным» способом я называю, например SQL.

    В SQL (MS, Oracle) реализован как «запросный», так и «навигационный» подход. Другое дело — что «навигационный» не соответствует сегодняшним системам хранения, и поэтому вынесен разработчиками исключительно как сервисная надстройка ядра СУБД.

    Reply
  74. hogik

    (74)

    Про цели 1С не берусь обсуждать. 😉

    Про надстройку, мне встречалась информация в рекламных обзорах. Но, я не смог найти подробного описания на их сайте. Но, в любом случае, я «агитирую» 😉 не за надстройку, а за открытие интерфейса «нижнего» уровня. Например, так как это сделано в MySQL. Или как это рекламируют, и реально работает (соответствует) этому тексту:

    «Advantage Database Server is a full-featured, easily embedded, client-server, relational database management system that provides you with Indexed Sequential Access Method (ISAM) table-based and SQL-based data access».(с)

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *