<?php // Полная загрузка сервисных книжек, создан 2025-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='\
Прочитал с опаской . Опять юмор ?
Ничего не понял. Если бы автор простым текстом объяснил (пошутил) ,как он видит решение таких задач , было бы неплохо.
(0) Мдя… Вот я не знаю кто поленился… Шепот, что нормально ссылки не расписал и проблему не поставил, или автор данного ОПУССА…
Если бы он прочитал хотя бы статью мою или Ish_2 ВНИМАТЕЛЬНО, то увидел бы там сферу применения данного решения. А негодование только потому что Вы не в теме и ваша статья выпадает из контекста, более того, она даже с учетом только статьи Шепота не имеет смысла. О чём Вам намекнули в комментах ссылками на генератор псевдонаучного бреда.
Я догадался в чём дело .
Автору нужно помочь с выражением того , что он хочет сказать.
В таких случаях лучше не использовать длинных сложносочиненных предложений, а только простые. Примерный план поста :
» В статье такой-то говорится о том -то и том-то»
«Я считаю , что это правильно (неправильно, смешно, грустно и .д.)»
«Я предлагаю правильное (неправильное,смешное, грустное) решение (взгляд, подход ,вопрос).
В дальнейшем текст можно усложнить.
(1)
Заменой СУБД для «1С 8.х». И через ВК предоставление проблемному программисту «циклов». Цикл — Ваш термин. На самом деле не в «цикле» дело…
(2)
Читал внимательно и задавал Вам вопросы. Получал от Вас ответы… Да, Ваш алгоритм имеет «широкую сферу применения». И остается, при этом, не эффективным и сложным. Я об этом Вам сказал в комментариях к Вашей статье.
(3)
А попробуйте прочесть не отдельные буковки, а целые слова, предложения, абзацы и т.д. Еще, для понимания текста, помогает — задать вопрос автору.
(4) слова «широкий» у меня нет. Более того, я упоминал, что проблема специфическая. И именно в этом вся проблема… Контролируемая ядерная реакция — тоже очень сложная и затратная. Гораздо легче сразу бабахнуть, но это уже неэффективною Гораздо легче и удобнее топить углём. Что и делается много где. Тем не менее есть АЭС, есть специалисты-ядерщики. Хотя можно было и дальше не напрягаясь строить простые ЭС на угле сотнями и тысячами. Где-то это оправдано, а где-то и АЭС удобнее и выгоднее, несмотря на дикосложные процедуры управления реакцией. Так и здесь. Несмотря на сложность и неэффективность применения метода «в лоб» при определенных условиях и сложной оптимизации — результат превзойдет «уголь» простого кода на машине пользователя.
P.S. Сорри, я не всегда помню кто конкретно отписывался у меня в комментах.
(5)
В апострофы текст заключают не только для цитирования. 😉
Если «проблема специфичная», то «не в теме» не я, а — Вы.
Я, то написал в первой части «подобных задач (алгоритмов) возникает очень много при разработке АСУп-а». Вы с этим не согласны? Тогда это не Ваша тема…
Плюсую.
Автор хорошо знает, о чем говорит.
Жаль, что первой части не видел, также поставил бы плюс 🙂
(6) Туплю. Ещё раз прочитал первый пост. Понял. Минуса там не ставил, сейчас бы плюс поставил. Поставлю его здесь. Но всё-таки сделать 2 вещи: 1. убрать из юмора 2. Сделать вступление в статье или поменять название. А то я смотрю название, смотрю текст — а мозг уже пошел работать по названию статьи и сам текст статьи воспринимаются совсем иначе.
… тяжелейший случай переОсмысления …
… однако …
… вот …
п.с. подможет мне кто-нибудь … что такое: «СУБД должна иметь два способа манипулирования данными — «навигационный» и «запросный» через общий «Handle».» .. ? …
… спрашиваю … спрашиваю … ВСЕ меня игнорируют … вот …
(8)
Цель этой и прошлой «публикации»:
1) Мне осознать потребность (востребованности) в такой разработке (подмена СУБД).
2) Найти человека, который сможет «проверить» юридическую чистоту такого (моего) деяния. До начала моей работы.
3) Найти человека, который хорошо знает «1С 8.х» и поможет мне в тестировании разработки. Если она состоится.
И мне хотелось эти вопросы решить не навязчивым способом для сообщества. 😉
Но найти людей, понимающих, зачем и почему это надо (или не надо) делать.
Посмотрим, чего у меня из этого получится…
(9)
В DBF-ной версии «1С 7.7» запросы в 1SQLite — общий «Handle», а прямые запросы из FoxPro — разные.
(9)
К автору !
Как же ты плюс прошлый раз поставил ? Просто так ? Не понимая главного его шутливого тезиса ?
Даже интересно , послушать «тяжелейший» диалог двух любителей обрывков мыслей и недосказанностей.
(7) Автор не понимает о чем пишет.
И пытается шутить на теме своего глубокого непонимания.
(8) Ага , тупишь. Ничего ты не понял. Зато вежливый..
(4) Нет , правда. Нужно попробовать написать что-нибудь, не отталкиваясь от других статей, а только своё. Тогда посмотрим. А пока просто не о чем говорить.
(12)
Игорь.
Посмотрите, пожалуйста, мои разработки.
Не понимаю.
Если я написал бред, то чего Вы так много уделяете этому бреду внимание?
Что Вас задевает, тревожит, беспокоит и т.д. ?
Ставьте минус, и проходите мимо.
И зачем «нападать» на других участников данной темы.
Мы же не под Вашими разработками болтаем.
Ваши разработки не ругаем. И, даже, не обсуждаем.
Рубрика публикации — «Юмор», а вы такой печальный… 😉
Еще я не понял.
Вы чего, действительно считаете, что я собираюсь писать еще один «Подведем итоги. Нарастающие.» ?
Типа, очередной нумератор документов…
… хм … дааа … видно я тАААк и не узнаю что такое «СУБД должна иметь два способа манипулирования данными — «навигационный» и «запросный» через общий «Handle». «…
… жаль … очень жаль … вот …
(14)
Ну, почему?
Какое из этих трех слов Вас больше интересует?
С него и начнем. Простым, житейским языком…
Владимир.
Меня задевает,тревожит, беспокоит то , что у этой темы могут быть неожиданные повороты. Как и в теме нумераторов, кстати.
Во мне и хотелось узнать , что же автор хочет предложить.
В статье «Подведем итоги…» указаны при способа решения задачи просроченных долгов.
1. Если Вы приведете способ решения задачи просроченных долгов, который кажется Вам наиболее симпатичным — будет хорошо.
2. Если Вы приведете общий подход к решению такого класса задач , пусть и в несуществующей среде , будет просто отлично.
Степень внятности ответа на 1. или 2. определит отношение к остальным буквам в теме Вашей статьи.
(15)
1. запросный …
2. навигационный ….
… вот …
(0) приведи Конкретный пример
(9) автор хочет сделать «мир лучше», это понятно
но как это сделать, он думает что знает, но выразить простым и понятным языком пока не получилось
по поводу надуманных терминов, можешь заменить на «лучше чем сейчас, но точно не знаю как конкретно» 🙂
(16) …
1. … если ТЫ ещЁ не составил своего мнения по поводу «буковок» — то зачем тогда «минус» …
2. … сам то ТЫ никогда не отвечаешь на вопросы как есть — только очень сложно …
3. … чего это ты свои вопросы перекладываешь на чужие плечи …
4. … да ещё берЁшься судить … как экспЕртЪ прЯмь … крутыми бывают только яйца …
5. … просто так … потому, что не придумал …
… вот …
(9)
«В DBF-ной версии «1С 7.7» запросы в 1SQLite — общий «Handle», а прямые запросы из FoxPro — разные.»
Это ответ ? Первая часть ответа — для меня абракадабра.
Вторая часть ответа порождает вопросы :
1. FoxPro какой версии имеется ввиду 2.6, 3.0-5.0 ?
2. ЧТо такое прямые запросы в FoxPro ? Про какие обращения к БД речь ?
Лучше привести примеры команд.
(16)
Игорь.
Заверяю Вас, что никаких гнусностей в Ваш адрес и по поводу Ваших разработок я не замышлял и, как мне кажется, не делал. Чего я хотел обсудить (предложить) это написано в первом пункте (4) сообщения. Цель двух моих заметок написана в (10) сообщении. Как мне представляется это и будет общий подход к решению такого класса задач в, пока несуществующей, среде. А будет ли эта среда реализована мной для ВАС (проблемных программистов) зависит от конструктивного обсуждения и высказывания своих мнений друг-другу.
(19) … хороший пиаровский ход у автора …. мне нравится …
… к тому же мы все его тАААк просим … знАчит удАчный ход … !!!
… к тому же есть хорошая поговорка — скажи половину и замолчи … остальное всЁ скажут за тебя …
… к тому же автор настойчив и это делает ему комлеме … и наделяет его определЁнными кАчествами в которые хочется верить … хотя бы и на всякий случай … устали мы без веры, без печали, без надежды …
… хи — ха -хо …
.. вот …
Напомню старое как мир высказывание: «Кто ясно мыслит — тот ясно излагает»…
… якОсьтАкось …
(22) Не-а. Не про гнусности речь. В моей статье есть одно умолчание.
Дело в том , что 15 лет назад я решал в FoxPro подобные задачи одной агрегатной команды «Replace» при правильной установке отношений (Set relation и Set Skip on) между таблицами.
Вот я и подумал , что , возможно, Владимир предлагает нечто подобное (хорошо забытое старое).
(24) … хм …
1. … вопрос КТО излагает …
2. … для КОГО излагает …
3. … КТО его слушает …
4. … КАК его слушают …
5. … хотят ли его понять …
… слишкомМногоЕслиИвсёТакНеОднозначНО …
(19)(gilv)
Если мне не изменяет память, то я Вам уже высказывал следующую мысль Повторю, корявым языком: «В беседе (споре) не стоит переходить на обсуждение собеседника. Обсуждайте саму тему.» Что касается моего желания сделать «мир лучше» не совсем верно. В данной теме я пытаюсь спросить окружающих людей — а хотят ли они этого? Если говорить о конкретном решения — оно изложено в первом пункте (4) сообщения. И я знаю как это сделать (делать), получиться или нет это можно выяснить только на некотором этапе разработки (изготовления).
По поводу надуманных терминов. Думаю, не надо это принимать близко к сердцу (голове). По жизни случилось так, что у нашего поколения не было возможности читать большое количество книг. Многих терминов и понятий не существовало вообще. Т.е. нам приходилось их придумывать и иногда писать книжки, которые (образно говоря) читает Ваше поколение. А многие термины изменились (не по смыслу, а по форме). Я стараюсь использовать «бытовые» термины. Уж не судите строго…
Общий хэндл и навигация нагрузят СУБД транзакциями?
Если да, то какая разница?
(25)
Нет. Ничего подобного и не думал предлагать. Т.е. я в этом направлении вообще не думаю… Т.е. мы разобрались в причинах нашего «непонимания» друг-друга? И поводов для «ссор» больше нету… Ага?
…. кто-нибудь расскажет про:
«СУБД должна иметь два способа манипулирования данными — «навигационный» и «запросный» через общий «Handle». !…
… уффф …
(28)
Если производится доступ к данным по разным (например, двум) Handle в одной задаче, то это равнозначно выполнению двух задач. Т.е. если, например, производится обновление БД в транзакции, то чтение данных по другому Handle не увидит информации этой транзакции. Еще и проблемы с блокировками возникнут. Классический пример. Осуществление в модуле проведения обновление данных штатным языком 1Са и одновременный доступ (по алгоритму) к данным через ODBC. Эта проблема (для 1С 7.7) решена в 1С++ для SQL-ной версии, в 1SQLIte для DBF-ной версии, в моих разработках. И НЕ решена при использовании FoxPro для выполнения прямых запросом (с или без применения моей разработки доступа к данным в монопольном режиме запуска 1Са).
(30)
Пытаюсь в (31).
(30)
«Навигационным» способом я называю старый добрый доступ к данным в системах Clipper, FoxPro и т.д. Т.е. это «найти по ключу», «продвинутся на N записей вперед/назад», «встать на начало/конец таблицы». «Запросным» способом я называю, например SQL.
Во многих «старых» системах был добавлен «запросный» метод обработки информации. Но через, например, ODBC. Т.е. «навигационный» доступ и «запросный» обеспечивался через разные Handle. И смешивать в алгоритмах оба доступа было сложно (в строгом определении — невозможно). На данный момент, мне известна только одна СУБД, в которой можно, по алгоритму, смешивать обращения к данным обоими способами.
(26) Пардон, Вы зря приняли на свой счет…
Замечание по поводу ясности адресовано к статье…
Смахивает на предсказания Нострадамуса… или я уже отупел…
Буду ставить (0) в начале комментария…
(31) Данные БД обновляются в транзакции и в это же время осуществляется чтение этих данных другим запросом.
Что будет ? — на такой вопрос пытается ответить Ваша разработка . Так ?
Тема классическая . Можно , конечно, порассуждать о видах блокировок .
Но я скромно спрошу : а при чём тут задача просроченных долгов ?
(33) Наконец-то.
Так вот , при «навигационном» способе ( пусть так ) задачи просроченного долга , списания по партиям и др. могут и должны решаться без использования циклов (с помощью агрегатных команд модификации данных ).
Я не знаю приблизится ли Ваше понимание и моё от следующего предложения :
«Представьте , что у Вас в Foxpro нет оператора цикла и Вы не можете использовать сканирование таблицы Scan ….EndScan. Но у Вас есть агрегатная команда Replace !»
(27)
>В данной теме я пытаюсь спросить окружающих людей — а хотят ли они этого?
кто хочет? чего хочет? зачем? брр
>Если говорить о конкретном решения — оно изложено в первом пункте (4) сообщения
а я то дурак думал, оно изложено в статье 😮
ну да ладно, посмотрел (4) понятней не стало
>По жизни случилось так, что у нашего поколения не было возможности читать большое количество книг. Многих терминов и понятий не существовало вообще. Т.е. нам приходилось их придумывать..
звучить как оправдание фантазий
>>> писать книжки, которые (образно говоря) читает Ваше поколение.
тут вообще не понятна дележка на поколения
>стараюсь использовать «бытовые» термины.
чем дальше в лес…
лучше в общепринятых терминах, пожалуйста
резюмирую: нужно еще раз оформить буквально несколькими предложениями решаемую задачу и способ, дающий преимущества над существующими
(35)
Нет. Моя (возможная) разработка позволить работать с данными не только запросом, но и навигационными методами. Что демонстрируется (в моем изложении) на примере «задача просроченных долгов» Вашей фразой «Отступление для «семерочников»…». При этом не путем моделирования «навигационных» методов запросами (как это сделано в 1С 7.7 SQL) . А непосредственным отображением операторов приложения на команды манипулирования данными СУБД.
Думаю, по сути, повторил тоже самое, что и писал выше по теме… 🙁
(37) … хм … по-поводу … «… у нашего поколения не было возможности читать большое количество книг … »
… так для прикола расскажу интресную историю — как создавался первичный язык программистов ….
… в те далЁкие времена когда я ешЁ был молод, увлекался электроникой и мы сами собирали ЭВэМы: игровые приставки, Микроши, эРКашки Синклера … литература небыло вообще а та что была была перепечатка хелп-ов на английском языке … и языка естественно никто не знал (почему-то) …
так вот там часто встречалось слово «type» … и мы все, как читали так и говорили — «тупэ», да «тупэ» …
как оказалось потом «тип» … вОООт … мы долго смеялись … и чуть, что, при очередной глупости говорили друг-другу : «ТЫ — ту-пэ»…
… ещё было «ентер» … а «ксерокс» стало именем нарицательным для всЕх поколений копировальных аппаратов … а ксерокопирование стало российскимЕВРОстандартом …
…
самое смешное… что даже сейчас читая литературу в переводе — понимаешь «ту-пэ» ..
… вотТАКАЯисторияOFFтоп …
… любое быстродействие БД это критичность операций запись/чтение жестких дисков …
… уменьшая ИнформационныйКвант уменьшаем времяЗахвата … НО … увеличиваем описание доступа … это опять запись/чтение ЖД …
… современное развитие БД мало шло развитием алгоритмов и принципов минимизации взаимодействия внутри БД … в основном за счЁт развития Железа …
… даже «поточное» программирование, на которое стОлько возлагалось надежд, оказалось провальным компонентом развития … слишком всЁ сложно — создание надСистемы сложнее чем сама система …
… любая БД это прежде всего файл … или файл в файле … современная релятивизация итак достигла совершенства как математическая модель … а вот взаимодействие с ней меняется пока только количественно но не качественно …
… вотТАКОЕмнение …
(38) Очень хорошо.
Решение таких задач действительно выглядит изящнее( не значит — эффективнее) при использовании «навигационных методов».
Субд Foxpro с помощью агрегатных команд позволял это делать без использования циклов.
Т.е. Вы предлагаете повторить по функционалу Субд начала 90-х годов.
Так ?
Или Вы хотите создать некую среду каким-то хитрым , не таким как в FoxPro образом, сочетающую «запросные» и «навигационные» доступы к данным.
Тогда Вопрос : зачем ? для каких задач ? приведите примеры.
Я извиняюсь.
Честное слово , впечатление , что из Вас тянут жилы как из партизана :
Ну скажи что-нибудь связное .. Сформулируй хоть что-нибудь.
… «старые» методы да на «новом» железе не работают а летают …
… и просто и быстро и понятно и легко … И дёшево … вот …
п.с.
… новые программы внедряются под напором тех же желаний что и покупаются новые телефоны … «форма» в наше время — важнее «содержания» …
… вот …
(36)
(37)
По поводу терминологии и её непонимания. Вот цитата из описания достоинств ADS:
«Отметим, что ADS представляет собой СУБД, использующую ISAM -доступ к данным. Это означает, что данный сервер обладает примерно равной производительностью при навигационном способе доступа и при получении результатов SQL-запросов.»
Ну, а мои вольности по поводу слова «запросный» заключенная в апострофы, вроде не вызывало у нас разночтения.
(36)
«при «навигационном» способе ( пусть так ) задачи просроченного долга , списания по партиям и др. могут и должны решаться без использования циклов (с помощью агрегатных команд модификации данных )»
— Обращаю Ваше внимание, что в первом пункте (4) сообщения я, специально для Вас, написал: «предоставление … программисту «циклов». Цикл — Ваш термин. На самом деле не в «цикле» дело…». Кроме этого утверждение «могут и должны решаться…модификации данных» явно не стыкуется с упрощенной (в хорошем смысле этого слова) постановкой задачи в Вашей статье. И сама категоричность, типа — «должны» меня сильно удивляет. Если Вы так считаете, то и решайте задачи таким способом. Это правило, требование, разумность… или что?
«Я не знаю приблизится ли Ваше понимание и моё от следующего предложения»
— Нет. Не приблизит. Т.к. не имеет отношения к теме разговора.
(37)
«а я то дурак думал, оно изложено в статье»
— А оно и в статье изложено. А в (4) сообщении уточнены детали.
«звучить как оправдание фантазий»
— А это и есть фантазии. Никаких оправданий. Фантазировали, мечтали, придумывали…
«тут вообще не понятна дележка на поколения»
— Поясняю. Младшее поколение (разумная его часть) пользуется плодами труда старших поколений. И это естественно… А понятие «дележка» — это Ваш термин. Я стараюсь людей не делить по признаком возраста, пола, цвета и т.д.
«чем дальше в лес…лучше в общепринятых терминах, пожалуйста»
— См. первый абзац этого сообщения.
«резюмирую: нужно еще раз оформить буквально несколькими предложениями решаемую задачу и способ, дающий преимущества над существующими»
— Чувствуется рука опытного преподавателя. 😉 Я выбрал другой способ «достучаться» до сообщества. О чем написано в (8) сообщении. Наберу еще раз «-5» и напишу третью часть. Или пожелаю всем успехов и пойду заниматься своими делами… Это авторский прием такой. В Ваших статья — «вибратор c шипами», а у меня многосерийное занудство 😉
(43) Ладно.
Подождем Вашей позитивной третьей части с примерами и предложениями.
(41)
Игорь.
Пожалуйста, перечитайте обе части моих заметок еще раз.
Т.к. в сообщении (41) вы спрашиваете:
«…создать … среду … сочетающую «запросные» и «навигационные» доступы к данным.»
А у меня в заметках написано:
«для … решения задач … СУБД должна иметь два способа манипулирования данными — «навигационный» и «запросный»»
«…возможность … реализации такой возможности в «1С 8.х»… проблемным программистам…»
Далее следует от Вас вопрос:
«… для каких задач ? приведите примеры …»
А у меня в заметках приведен пример из Вашей статьи с моим обобщение:
«….подобных задач (алгоритмов) возникает очень много при разработке…»
Мне кажется, что я ответил на Ваш вопрос еще до того, как Вы его задали.
Можно, лишь, обсуждать много или не много таких задач. Но, думаю, можно посмотреть на ЛЮБОЙ алгоритм наших задач. И сказать — каким способом его проще и эффективней решать. И выбрать лучший. Если Вы считаете, что такого выбора не существует — всегда «запросный». То и нет темы для нашего разговора. Лично я использую «запросный» метод только для очень простых выходных форм….
(45) Владимир.
Перечитал на всякий случай еще раз.
Начнем все сначала.
1. Вначале была статья Anig99, в которой обосновывался «чисто запросный» метод решения задачи получения просроченных долгов.
2. Затем была статья Ish_2 , в которой подтверждался этот подход и лишь текст запроса приводился другой.
3.Затем появилась Ваша текущая статья в Life (!) — «Запрос.Нарастающий итог. Как «я» его не понимаю.»
Читатель вправе ожидать в Вашей статье какой -то обозначенной альтернативы , другого подхода. Т.е. статьи , в которой автор не оппонирует , не играет «вторым номером» , а нечто предлагает .
Что же мы видим вместо этого :
«… для каких задач ? приведите примеры …»
А у меня в заметках приведен пример из Вашей статьи с моим обобщение:
«….подобных задач (алгоритмов) возникает очень много при разработке…»
Это что ? Такой ответ Вам представляется — обозначением другого подхода ? Пример альтернативы ?
Вся статья и комментарии есть уклонение от сути , увертки.
«Дескать ,а можно и не так …» — КАК ? — «А не так …!»
Другими словами , для опубликования статьи совершенно не достаточно с чем-то не согласиться. Нужно и самому что-то утверждать.
Поток сознания ❓ 😮
Заинтриговали по самые помидоры… Ждем третью часть…
(46)
Игорь.
Еще раз.
Я не собирался и не собираюсь приводить конкретное решение задачи «Подведем итоги. Нарастающие.» (далее по тексту — ПИН). В моем понимании задачи просмотра таблиц тем или иным способом для тех или иных задач — это типовая задача. 😉 При решении наших задач АСУп-а мы, программисты, это (просмотр) «выражаем» различными алгоритмами с применением различных инструментов. В том числе и в ПИН.
=== Врезка. Для «gilv».
АСУп — автоматизированная система управления предприятием. Теперь это обозначается другим термином (терминами). 😉
=== Конец врезки.
На примере цикла статей «Подведем итоги. Нарастающие.», я вижу, что эта конкретная задача проще реализуется при применении НЕ «запросных» инструментов. В предыдущей статье на эту тему я спросил автора: «Решать данную задачу запросами — это самоцель?». Типа, задачи «разделить яблоки по складам запросом». Автора той статьи, как мне показалось, обидел мой вопрос. Я «замял» (прекратил) это обсуждение под той статьёй.
Потом появилась Ваша статья. В ней «явно» написано, что решать данную задачу запросами это решать задачу через «за…». И «сказано», что в «современной системе» нет других инструментов для решения данной задачи — только запросами. Так?
Я в своих заметках высказал мнение — хорошо было бы иметь и в «современной системе» инструменты, позволяющие решать подобные ПИНу задачи не через «за…».
И показал — ГДЕ, на мой взгляд, надо снимать «ограничения» системы в целом.
Примерами таких решений является СУБД Advantage.
Применительно к нашим темам (1С-ам всяким) для «1С 7.7» уже есть решения.
Например, 1SQLite + «DBEng32 для …». Есть и решение с «другого» конца — прямые запросы в 1С++. Хотя, лично я считаю, что второе решение — это «полумер» обусловленный реальной жизнью. 🙁
Путей решения, уже МНОЙ поставленной задачи — два.
1) Добиваться решения от изготовителей программного обеспечения уровня 1С и СУБД. Лично мой опыт показывает, что этот путь не совсем бредовый.
2) Делать доработки аналогичные разработкам в 1С 7.7.
Но!
Перед тем как что-либо делать (думать) в этом направлении, думаю, имеет смысл выяснить — а это будет использоваться другими людьми? Или, даже, при наличии «расширенных» инструментов пользователи (для меня это — проблемные программисты) будут продолжать решать задачи подобные ПИН через «запрос».
«… вот …»(с) 😉
Владимир.
Решать такие задачи как ПИН только одним «запросом» — не самоцель.
В статье «ПИН» приводился взгляд автора на оптимальное решение этой задачи. Что понимается под оптимальностью ?
1. Для больших и малых баз в среднем такой способ дает лучшее быстродействие. Это значит , много на малый базах не проиграет , на больших базах (120Гб) выиграет у альтернативного решения задачи при помощи кодинга.
2. Мы отвязываемся от «слабости клиента» и передаем обработку на сервер БД.
3. Запрос составляется конструктором интерактивно , без кодинга.
Вы пишете , что «я вижу , что эта конкретная задача проще реализуется при применении НЕ «запросных» инструментов». Пусть так.
Но где же аргументы ? Хотя бы основные подходы ..
Не использовать запросы вовсе ?
Позиционироваться «навигационным методом» на каждую конретную запись таблицы оборотов (сканировать таблицу ) ?
И как насчет разделения кода на «клиенте» и «сервере» ?
ЧТо даёт Вам основание думать , что это будет лучше ?
Вместо этого я за Вас привожу пример на упомянутом Вами же FoxPro , как могла решаться эта задача при навигационном способе доступа к данным.
Странно , не находите ?
Затем , цитата :
«И «сказано», что в «современной системе» нет других инструментов для решения данной задачи — только запросами. Так? »
Отвечаю , НЕ ТАК. Таких утверждений в статье нет.
В статье приводится сравнение трех разных подходов к решению этой задачи и Выбирается , на взгляд автора, самый оптимальный — «запросный».
Очень может быть , что Вас в последнюю очередь волнует задача просроченнных долгов, а волнует прежде всего задача :
«Делать доработки аналогичные разработкам в 1С 7.7. «.
И задача «просроченных долгов» лишь повод поговорить о совершенно других вещах.
Но тогда и название статьи Вашей и сама статья мне кажутся смазанными и неудачными , сбивающими с толку, из-за нечетко поставленной темы.
«1SQLite + «DBEng32 » — К сожалению ,я в этом ничего не понимаю.
«И показал — ГДЕ, на мой взгляд, надо снимать «ограничения» системы в целом.
Примерами таких решений является СУБД Advantage.»
Если Вы собираетесь прирутить 1с к Субд , допускающую навигационный доступ к данным , то не кажется ли Вам , что встроенный язык 1с должен быть расширен как минимум командами установки отношений между таблицами ? Иначе зачем тогда нам навигационный доступ ?
Если это так, то фирма 1с будет вынуждена создавать спец. язык — 1с Advantage. Это реально ?
Может быть Ваш взгляд на бредовость или небредовость этой идеи несколько изменится.
Я не согласен с каждым абзацем поста (52) . С каждым.
Бывает..
Но ,возможно , Ваша статья с четко обозначенной темой была бы интересна.
Бесполезными статьи , начинающиеся словами «Вот если бы …», не считаю.
Всегда полезна хоть и умозрительная , но альтернатива.
(53)
http://infostart.ru/public/15211/
Игорь.
Если Вы не согласны с каждым абзацем сообщения (52), то, думаю для Вас и «статья» бесполезна. Я уже на это Вам дал ответ, выше по теме, типа — «ставьте минус и проходите мимо». Но Вы нашли время написать свое мнение по «трудам» моим. И за это Вам говорю — большое спасибо!
Единственно, что хочу попросить Вас.
1) Вспомнить свой опыт 15 летней давности работы на системе типа FoxPro.
2) Себе сформулировать — а что Вам «мешало» в ней работать (программировать и эксплуатировать).
3) Далее — поверить мне, что файловая версия «1С 8.х» это DBF-ная реализация (внутри 1Са) новых средств программирования. Средств программирования для проблемного программиста. Т.е. для Вас.
4) И посмотретьТОЛЬКО на название разработки для «1С 7.7» по ссылке:
Ответа от Вас, на это моё сообщение, я не ожидаю. Не тратьте, пожалуйста, своё время на бесполезную «работу» (обсуждение моей «статьи»).
Желаю успехов.
Еще раз — спасибо…
(55) Минус за «рекламу» и оофтоп 🙁
будь в теме или вообще не пиши.
(56) согласен, но статья тоже не совсем удачно названа…. Она навеяна запросами о нарастающих итогах, но не более.
Я высказался в тему — цитата автора темы: «И, как мне показалось, негодование. Т.е. я сделал вывод, что НАС интересует «интересный» способ решения таких задач, а не получение конечного результата.»
Можно сколько угодно теоретизировать чей способ решения задачи «круче», но пока нет самого отчета использующего тот или иной способ решения задачи — спор беспредметный. Я, в отличие от спорящих, сделал отличный отчет и по большому счету неважно на какой технологии. Главное что он работает правильно и ним удобно пользоваться и куча функций. А что пользы от теоретических измышлений ?
(58) Ошибаетесь… Без теории практика быстро доходит до предела…
А отчет написан мною. Так что не надо обобщать…(:
А по поводу конкретно этой статьи — так она собственно и не о нарастающих итогах. А задел под другую разработку в области работы с данными.
(54)если понял..
Контора покупает «Сервер 1С-Пр.64бит»,
этим избавляется от шаткой файловой модели БД.
При наличии Волшебной Компоненты+АДС эта проблема уходит
и 72 кило остаются у знатоков?
ещё беспокоит мнение юристов 1с по поводу таких разработок
(60)
«и 72 кило остаются у знатоков?»
— Кто такие знатоки? Может быть Вы об этом говорите — сообщение (52), абзац #7, со слов «Меня вообще не волнует».
«ещё беспокоит мнение юристов 1с »
— См. сообщение (10) данной темы.
Смысл сообщения (54) данной темы другой:
1) Для обеспечения надежной и производительной системы необходим клиент-серверный режим СУБД.
2) Суть многих алгоритмов обработки информации в АСУп-ных задачах успешно (проще) реализуется навигационным ЯМД.
3) Клиент-серверные СУБД предлагают ЯМД только «запросного» типа (SQL).
4) Трехуровневая архитектура решает задачу по «переводу» алгоритмов с навигационного ЯМД, на «запросный» язык.
5) Существует СУБД клиент-серверного типа с обоими видами ЯМД.
6) При применении этой СУБД отпадает необходимость в использовании трехуровневой архитектуры.
(61) Владимир.
В п.5 утверждается что рассматриваемая СУБД — «клиент — серверная».
В п.6 говорится , что при применении этой СУБД «клиент-серверная» архитектура НЕ НУЖНА ( а иначе что такое тогда — «трехзвенка» ?).
Было бы любопытно получить от Вас пример решения задачи «НИ» на языке такой СУБД. Как-нибудь разберусь.
(55) В отличие от Artbear , не осуждаю.
В этой жизни нужно как-то крутиться.
Допускаю даже , что есть люди , которым интересно как сделан Ваш отчет или его многочисленные «собратья» .
Просто Вы нетуда попали — здесь не продают и не покупают.
Здесь речь идет о другом : о технологиях и альтернативах .
А тривиальная задача о просроченном долге лишь фон для беседы.
(63) Осуждение именно за «не туда попал», но все равно пишет свою рекламу 🙁
Совесть-то нужно иметь!
(62)
http://www.omega.ru/ это доказывать очень сложно…
Игорь.
1) В сообщении (61) утверждается, что предлагаемая мной СУБД является клиент-серверной.
2) И «трехзвенка» реализуется в рамках клиент-серверной СУБД.
3) Вопрос поднятый мной в сообщении (61) другой. Я утверждаю, что основная задача среднего звена в «трехзвенке» — это «преобразование» алгоритмов с «некого языка» в «запросный» язык. И делает это не потому, что это «хорошо», а потому что предлагаемые на рынке клиент-серверные СУБД имеют только «запросный» ЯМД.
И это моё утверждение легко подтверждается самим фактом существования файловой версии «1С 8.х». Для, например, системы
4) Продолжаем шутить. 😉
Пример решения «НИ» на языке такой СУБД:
use Table
set order Index
seek Client+dtos(Date)
do while (!eof())
if …
exit
endif
…
skip 1
enddo
set order to — припоминается мне ,что у Вас пропущено to для назначения главного индекса (или тэга в составном индексе).
Подход знакомый — вытер слезу. Ну, примерно понятно , что Вы предлагаете. Скорее всего, Вам ближе «клиппер Лето 87».
Так вот . Даже используя навигационные методы , на мой взгляд, таких конструкций лучше избегать, если Вы делаете вычисления для не для одного «контрагента» , я для таблицы «контрагентов».
Остальное до меня доходит с большим трудом.
(66)
Игорь
1) Мной пропущено «to» специально. Я, действительно, хотел чтобы Вы вспомнили ЭТО и «вытерли слезу». 😉
2) А избегать таких конструкций не надо. Надо, просто, добавить еще один цикл по клиентам. И именно такие (аналогичные) конструкции надо использовать в задачах подобных «НИ».
3) «Остальное до меня доходит с большим трудом»
— А чего — остальное? Снимаем свой минус на моей «публикации» и продолжаем дальше писать запросы… 😉
Разве в минусе дело ?
Дело в моральном осуждении :
в своей статье «вторым номером» не выступают и не заставляют публику допытываться : что же автор хочет предложить ?
(68)
«что же автор хочет предложить ?»
— Думать… :-(((
что я белка что ли бегать по ссылкам??? уже философ уже!
я в программировании тоже так бегаю — курсор
Да дискуссия бесспорно интересная вопрос об оптимизации запросов очень важен но насколько я понимаю это дело такое что в каждом конкретном случае нужен свой подход и совершенствовать можно до определенного момента пока не достигаеш оптимальной точки оптимизации дальше которой уже не имеет смысла его упрощать.
(72)
Александр (nickkey).
🙁
Но, тема не об «оптимизации запросов»(с), а об целесообразности (эффективности) их использования в некоторых (часто используемых) алгоритмах. И, самое главное, о том — какими затратами достигается эффективность использование запросов и «реляционной модели БД» в наших задачах. И, что — без «запросов» многие задачи решаются проще и дешевле. Об этом «в мире» говорят давно и много…
(0)
Никогда такого не будет.
У 1С совершенно другие цели и подходы.
(33)
В SQL (MS, Oracle) реализован как «запросный», так и «навигационный» подход. Другое дело — что «навигационный» не соответствует сегодняшним системам хранения, и поэтому вынесен разработчиками исключительно как сервисная надстройка ядра СУБД.
(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».(с)