<?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='\
Сделать опционально:
1.на связях отображать поля по которым устанавливается связь,
2.в таблицах отображать псевдонимы полей, которые выбираются
Имхо: без этих данных вряд ли эта обработка хоть как-то поможет при отладке
Очень интересная идея. За идею «+»
Должно хорошо помогать при разборке с «чужими» запросами
В общем-то, да. Смотреть — пока не смотрел, но по скринам уже понятно, что идея хорошая %)
Визуализацию запросов видел, когда работал с виндевом. Там эти связи красиво бегали по трубочкам и видно было по чем связь. Надеюсь сама платформа дойдет до этих фишек. Плюс за реализацию
Тутhttp://devtool1c.ucoz.ru/load/grammatika_jazyka_zaprosov_1s_8_2_goldparser_1_32/1-1-0-4 можно скачать грамматику языка запросов. С ее помощью можно получить строгое синтаксическое дерево. Пример использования в самой подсистеме ИР (Инструменты разработчика) в консоли запросов — дерево запроса. Кстати его тоже можно использовать для анализа сложных запросов.
Из первых наблюдений — похоже, что не работает, если соединений таблиц более, чем одно.. Показывает только первое..
(5) tormozit, Вы правы, ИР помогает в отладке «длинного» 100%, и никаких диаграмм не нужно, как мне кажется. Их огромная древовидная структура только почему-то еще больше пугает. Хотя может я настолько привыкла пользоваться деревом запросов из ИР, что считаю его панацеей:)
Наверно стоит выводить список объявленных параметров с группировкой по запросам (удобно, что бы чтонибудь не забыть установить)
(1) Идея отличная, сделаю.
(5) Действительно, в ИР более подробный парсинг, но для этого используктся ВК, требующая регистрации, я же сделал все это средствами только языка 1С…
Но идея ИР как организовать дерево мне нравится. Возможно, сделаю нечто подобное.
(6) AlX0id, попробовал, показывает все связи. Если можно, текст запроса — в студию, или притестите следующий:
Показать
(8) Не совсем Вас понял, уточните что нужно?
(2) AnryMc, я уже опробовал пропарсить «чужой» пакет запросов из 29 запросов….. наглядность помогает разобраться.
Первая мысль, которая пришла в голову после того, как увидел разработку — прикрутить ее к обычной консоли запросов…. Вспомнился старый добрый MS Access с его визуальным отображением связей таблиц в базе.
Идея — Однозначный «плюс»!!!!
(0), Идея очень понравилась, если постепенно будет производится дальнейшая модернизация обработки (например по тем пожеланиям, которые были высказаны в (1)), то обязательно ее скачаю, а пока у меня не хватает баллов для этого =(
Честно говоря, пока сложно сказать насколько удобно будет пользоваться такой визуализацией для отладки громоздких запросов.
p.s. Публикацию естественно заплюсовал =)
Кое в чем (не во всем конечно) но поможет разобраться. Автору спасибки!
(9)
Запрос.УстановитьПараметр(«ИМЯ», <Значение>)
В запросе &ИМЯ
В пакетном запросе — какие параметры объявляются в каком пакете. Например гденибудь справа — информативно
(9)
ваш запрос отображается нормально, мой кусок (точнее, тоировский %)) — нет:
Показать
Возможно, дело в том, что два левых соединения идут с одной и той же таблицей.. Но опять же — пробовал сымитировать подобную ситуация на вашем запросе — ошибка не повторилась..
(5) tormozit,
В ИР много здравых мыслей и красивых решений, но такое впечатление, что его создатели инопланетяне и общаются между собой только на своем языке, далеком от понимания простых людей.. Имхо, конечно же.
(15) Не могу сказать, что мне понятен смысл твоего сообщения. Возможно кто то из нас действительно инопланетянин. Попробуй попроще сформулировать мысль.
круть! побёг пробовать
(16) tormozit, встроенная конфигурация не есть хорошо, мало кто захочет в типовые конфигурации встраивать ИР…лучше выкладывай свои разработки поотдельности.
(18) Данная тема регулярно всплывает в обсуждениях подсистемы. Если почитать форум публикации здесь или на офсайте, то моя позиция станет понятна. В двух словах, поддерживать мобильные версии инструментов заметно затратнее, чем в виде подсистемы, к тому же они менее функциональны. Любой кто писал достаточно сложную систему поймет о чем я (чем больше «зоопарк», тем сложнее им управлять в виде отдельных «животных»).
(10) Если честно, я ее и создал чтобы потом встроить в консоль (только свою).
(13) Теперь понял. Пожелание принято.
(14) О.К. ваш запрос отлажу.
(16) ИМХО, имеется в виду сложный, перегруженный интерфейс. Но думаю, к этому можно привыкнуть…
И это… не мне тут, конечно, говорить о перегруженности — мои диаграммы не в каждый «монитор» влезут 🙂
(18) Я находил на инфостарте отвязанную консоль запросов из ИР — она работает, даже дерево строит.
Из этой консоли я позаимствую «прикручивание» класса «Контекстная подсказка» — мне он очень нравится…
в опщем да, второе и дальше левое соединение к одному источнику не чухает… где-то в «ПолучитьИсточникиВыборки» недонаходит 🙂
пример запроса:
Показать
резалт:
а в качестве пожеланий добавлю возможность работать с несколькими текстами запросов
Ну и наверно не хватает полей которые вытягиваются (я думаю только измерений хватит) и отборов, что бы было видно, какой отбор у каждого запроса 🙂
А связи между запросами показывают только левое соединение? Или полное и внутренне тоже?
Обработка из разряда «Если бы это не было придумано, это стоило бы придумать». В подтверждение — вал плюсов за день.
Однозначный плюс. Разработчики 1С, если Вы просматриваете форум, берите это на вооружение! Кстати, в блоки с названием таблиц(регистров) можно добавить реквизиты, которые выбираются в запросах
Красивая разработка!
А вообще разработка навеяла на такие мысли…
А чем вызвано такое разнообразие сложноразработанных запросов в типовых конфигурациях?
Простотой разработки, легкостью восприятия и легкостью их изменений или мыслью, что запрос в цикле это большая ошибка 1С-ника?
У кого-нибудь есть пример из жизни (?) — так сказать технико-экономическое обоснование, что запрос в цикле экономически ну никак не выгоден, чем написать именно сложный запрос.
С детства нас учат, что запрос в цикле — это большая ошибка в жизни разработчика — которая замедляет производительность системы. А про то, что понять сложносочиненный запрос другого разработчика трудозатратно и стоит много денег клиенту, особенно если запрос надо периодически дорабатывать, расширять — никто не предупреждает 🙁 …
Найти бы золотую середину…
думаю что интересная разработка, скачаю попробую что с ней получиться добиться) автору спасибо!)
Наглядность — ХОРОШО.
Не сработало с пакетом запросов — ПЛОХО.
Будем пробовать дальше.
САМА ИДЕЯ — ЗАМЕЧАТЕЛЬНО.
(14),(21) понял природу недоработки — все проще, я не учел, что после ЛЕВОЕ СОЕДИНЕНИЕ <ИмяТаблицы> идет ПО <список связей>, а не сразу новое СОЕДИНЕНИЕ. Исправлю.
(22) Несколько текстов можно перечислить через «;» — получится пакет запросов. С пакетами обработка работает.
(23) Связи показывает разные (стрелка влево — левое соединение, стрелка вправо — правое соединение и т.д.)
(26) Ваше пожелание повторяет самый первый комментарий. Если собрать в эти блоки еще и поля — будет огроменная диаграмма… У меня сейчас первая мысль — как сделать ее компактнее…
(29) Пакет запросов — в студию… я проверял на пакетном запросе — должно все работать…
(27) Про 1С и их типовые конфигурации лучше всего сказал один мой товарищ «Чтобы сложить два числа они вызывают три функции из трех разных модулей…» — я не пойму, они таким образом делают запутываение кода для конкретного разработчика? В платформе 7.7 модулей было меньше — и код был проще для разбора… А тут зачастую отладчик только поможет понять хоть часть замысла того или иного рассчета.
Про сложный запрос и цикл запросов позвольте несогласиться.
Возьмем базу данных SQL, которая крутится на одном компьютере с сервером 1С, а клиентная часть установлена на каждом клиенте (т.е. удаленно, сообщаются по сети). При этом запрос делается из клиента. В такой ситуации лучше сделать один сложный запрос к серверу, чем 10 простых, т.к. мощный сервер быстро соберет по запрошенным данным ответ. Важную роль играет количество запросов (больше времени тратится на организацию соединения и согласование между клиентом и сервером).
Даже если клиент и сервер находятся на одной машине — ситуация кардинально не меняется (только уменьшится разница времени).
В файловой версии базы 10 простых запросов, обычно проходят гораздо быстрее одного сложного, т.к. тут нет сервера — и нет согласований.
Поставил плюс, но Дерево из ИР намного больше нравится.
По регистрации спец.ВК — на самом деле это не ВК, а com-объект, ИР его регистрирует полностью автоматически, не нужны даже права администратора, можно только для локального пользователя.
(32) К сожалению, ты ошибаешься. Библиотека классов GoldParser.Dll не позволяет регистрировать ее без прав администратора. Мой механизм автоматической регистрации библиотек работает не во всех случаях.
(31) возможно ли предположить, что дальнейшее сопровождение сложных запросов обходится дороже, чем простых? Выгодно ли это клиенту?
Вообще-то я не утверждаю, а задаю вопросы. В таком случае со мной нельзя ни соглашаться, ни спорить.
И я призываю к диалогу всех, а не только автора. 🙂
От вас очень хочется увидеть сложный запрос — предмет диалога. 🙂
Как настоящий лентяй, хотел бы уводеть:
При вставке скопировенного текста запроса — автоматическое «убирание» «|», «»», ; и пр.
(0) молодец, плюс
хотя (5) имхо удобнее гораздо
(34) Сам сложный запрос не несет в себе ни негатива, ни дополнительных затрат. Все это появляется, когда он выступает в качестве объекта для каких-либо процессов (доработки, понимания и т.п.). Сдается мне, что разработки уважаемого автора иTormozIt (а есть еще?) позволяет избавиться от части неудобств. Можно предположить, что визуальный конструктор запросов (ну сделайте кто-нибудь :-), более навороченный, чем у 1С (ну, предположим, драг-энд-дроп в сложную визуальную структуру, со встроенными методиками
извращения, пардон, связывания данных, с подсказками при наведении курсора о параметрах виртуальных таблиц, с автоматическим выстраиванием структуры «от результата», и это я еще не начал мечтать…) может снять оставшуюся часть неудобств и даже позволит наслаждаться программисту полетом своей мысли.А сегодня сложный запрос — враг. Он отнимает силы, заставляет нервничать и совершать ошибки, он смеется над нами! Не случайно эта публикация, еще раз обращаю ваше внимание, за пару дней скакнула на вершины рейтингов, и по плюсам, и по загрузкам, и по комментариям. (5) — идея супер, но я так и не подключил компоненту… (оправдываться не буду, так вышло).
(37) Конечно же меня, как автора единственной на текущий момент публичной грамматики языка запросов 1с, такая мысль посещала и не один раз. Сделать такой конструктор с помощью этой грамматики не очень сложно, но времени придется потратить много. Думаю не меньше 50 часов бы у меня ушло на воссоздание аналога платформенного конструктора и дальше уже пошли бы доп. фичи часов на 20. Одним словом дорогой конструктор получится.
(39) tormozit,
А хорошую разработку здесь можно и продать
(39)Снегопат, каюсь, не смотрел еще. Под него какой-нито плагин не планируется?
(40)Никто не знает (ну, кроме авторов, конечно)какой доход приносят разработки, какова прибыльность, какой спрос…
Здесь скорее всего нужен проект рекламного характера для продажи более объемных вещей. 70 часов * 500 рублей = 35000 рублей сумма приемлимая для раскрутки инфобизнеса.
(39)tormozit, готов рассмотреть Ваши предложения, осенью в планах делать запуски продаж.
(39) на управляемых формах в режиме тонкого клиента… мечта.
идея хорошая, но по своему опыту скажу, что не нужная.
стандартного конструктора достаточно для понимания запроса любой сложности.
(43) luns,
Стандартный конструктор помогает, но не дает такой наглядности.
Особенно такая визуализация будет полезна для тех, кто еще не «постиг всех премудростей» стандартного конструктора. Согласитесь что многие вещи в документации описаны очень плохо и пока тебя «не ткнут носом» ты их не поймешь. (Например: всякие «галочки» без подсказки и название колонки не прочтешь, т.к. ширина не изменяется…)
(44) возможно. но к сожалению не могу оценить наглядность.
для пробы хотел разобрать пару запросов:
отчет: ВаловаяПрибыль
отчет: АнализНачисленийРаботникамОрганизаций
ни там ни там не сработало.
(46) (47)
Может и мне запросик этак на строк 300 выложить, да $m заработать 😉
Запрос, сохраненный в текстовый файл и «прикрепленный» к сообщению (см. внизу ввода новых сообщений) скачают и посмотрят те, кто захочет, и тема комментариев останется читабельной.
См. прикрепленный для примера файл
(45) luns,
Не знаю. Мой запрос 292 строки из (48) дал такую картинку:
Обработка — самой первой версии
(43)luns,
http://samsamych.com/super-zapros-bp/ )
достаточно. Вот запросец: (
Черточки справа — «пакетики» запросика:
Ну, я разобрался. Но можно было быстрее разобраться. Дело не в том, достаточно или нет. Есть вещи, которые помогают. Бывает такое. Нет?
Возможно и зарплаты кому-то достаточно определенного уровня, но я бы не стал ему об этом говорить 🙂
(50) samamoiloff,
А сколько там было пакетов? Больше 255? Это я так — поржать!
На «взгляд» видно более 30 ярлычков (закладок справа) но может 1С не может их делать меньше и полоса прокрутки не предусмотрена…
Но вообще сочувствую…
Лично у меня, когда я «воюю» с запросами много времени и сил уходит на «скачки» между пакетами, что бы посмотреть (вспомнить) сто выбрали и как назвали в этом пакете, а затем по каким правилам отобрали и назвали в другом пакете.
В стандартном конструкторе мне это делать неудобно (лично мне, не знаю как Вам).
Вот и приходиться «елозить» по тексту запроса — «туда — сюда», а это могут быть сотни строк.
Что порадовало в данном решении — так это «обратная связь» когда «счёлкнул» по квадратику, а в тексте получил спозиционированное выделение. Правда пока работает «кривовато» но я думаю, автор доделает.
Мне лично помогло сегодня.
(49),(45) Отчет дорабатывается по мере поступления Ваших комментариев (с указанием некорректно обрабатываемых запросов), в частности
(48)Согласен.
Господа! Давайте запросы прикреплять в текстовых файлах…
(46) Причина ошибки установлена: объединение запросов «ВЫБРАТЬ» в условиях некорректно обрабатываются. Уже исправлено. Появится при следующем обновлении.
(47) Причина ошибки установлена: некорректная обработка {}. Уже исправлено. Появится при следующем обновлении.
Обнаружил недоработку: не показывает объединенные вложенные запросы (вообще не показывает). Исправляю.
(53)
сорри, ошибся кнопками.
(50) а можно здесь привести тот самый текст запроса, чтобы в моем отчете попробовать? 🙂
Ну конечно интересно, но когда работаешь с этим каждый день структура запроса понятна по коду. Но всё равно автору спасибо
(55)DrAku1a,
zapros_kd_bp_tovary.txt
вроде он :
Автору спасибо, интересная идея
(57) Попробовал… много букв… а диаграмма запроса оказалась простой…
Вот теперь вижу результат.
Поставил 100-ый плюс.
Вот еще бы под управляемый режим ….
1С-никам такое следовало бы взять на вооружение.
Ведь существует же в 1С-ке Карта маршрута бизнес-процесса!
Всё круто, запрос из 20 страниц был разобран как с добрым утром.
вспотел листать структуру
Автору огромное спасибо, идея и реализация отличная, возьму на вооружение!
Прошу прощения что не по теме, достаточно срочно нужно решить вопрос со специалистом на поддержку.
Биржа труда на «Инфостарте»
Не расценивайте, пожалуйста, за рекламу.
Ищу только с нашего ресурса 😉 и при помощи нашего ресурса.
подробности на:
красивая штучка получилась 🙂
супер, скачаю обязательно, но подожду пока немного отладится
эта головная боль с запросами у всех, в независимости от компетенции
За идею жирный плюс!
(52) AnryMc,
Хорошо сказано, именно так все в действительности и происходит.
И тут визуализация — неоспоримый ПЛЮС.
Классная идея, автору респект!!! Молодец, протестирую отпишусь!
(10) Muhin555,
Прикрутил от «Консоли запросов» работу с файлами *.sel, на авторство не претендую, но думаю так удобнее смотреть структуру готовых запросов из консоли….
сам долго мучился ,особенно с пакетами. только разработал себе черновой вариант — а тут уже готовое решение.спасибо
Идея создания шикарная!!! Особенно подойдёт для ЗУПа где запросы сделаны так, что чёрт ногу сломит. Только есть один вопросик:
1) как отрабатываются ситуации, когда пишется в коде СТРЗаменить? Бывает поставят условия в коде и половина запроса изменилось.
(72) Попробуйте… По-идее должно отработать нормально, т.к. при анализе текста запроса блок «+СтрЗаменить(…)+» будет воспринят как одно слово (как текст) и это не должно повлиять на результат.
(70) Muhin555, Неверный формат хранилища данных ‘с:/ПарсерТекстаЗапросов_Файлы.erf’
у этой публикацииhttp://infostart.ru/public/95771/ ошибка
Ошибка при выполнении запроса:
{Форма.ФормаОтчета.Форма(12)}: Поле объекта не обнаружено (ТипЗначения)
/************************************************************************************************************
ВЫБРАТЬ
ОсновныеНачисленияРаботниковОрганизаций.Сотрудник,
ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
ОсновныеНачисленияРаботниковОрганизаций.Результат
ИЗ
РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
ГДЕ
ОсновныеНачисленияРаботниковОрганизаций.Сотрудник В
(ВЫБРАТЬ
РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник
ИЗ
РегистрСведений.РаботникиОрганизаций.СрезПоследних(&КонДата, ) КАК РаботникиОрганизацийСрезПоследних
ГДЕ
РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение))
/************************************************************************************************************
Параметр:
Имя Тип Значение
КонДата Дата 31.05.2012 0:00:00
/*************************************************************************************************************
ОБЫЧНАЯ КОНСОЛЬ ОТРАБАТЫВАЕТ БЕЗ ОШИБОК
С последним своим отчетом на СКД почти месяц маялся. Сегодня гуляю в обед и привиделась мне такая схема. Думаю, если бы была у меня такая я бы давно всё сделал. Прикольно.
Отличная обработка, действительно, облегчает понимание и разбор даже очень сложных запросов в разы! Большое спасибо!
спасибо. Идея классная. Помогает особенно когда начинаешь.
(73)
Под Снегопат портировать нет желания?
Чтобы и в Конфигураторе вертеть.
(79) Идея отличная! Заодно, попробую себя в скриптописателях для снегопата, а то пока только его пользователь 😉
Идея очень не плоха.
Жаль что не анализирует запрос в англ. варианте.
(81) Вроде должна анализировать. Если нет — приведите текст запроса — отлажу…
Сегодня попробовал вот такой запрос (он вполне успешно выполняется, но в нем НЕТ источников):
Результат прилагается:
Попробовал позапускать — классный инструмент. Автору «+» и пожелания дальнейшего развития. Будет неплохо если выростет в коммерческий проект. Существенно экономит время при разборе запросов.
(85) Этот проект останется бесплатным, в т.ч. и если напишу его как аддин для Снегопата. Но на основе этого проекта и дико раскритикованного«Выполнение и отладка запроса» планирую сделать мощный отладчик запросов (без каких. И вот это проект уже скорее всего будет платным.
1C Visio . Так можно расписать задействованные в запросе поля. Попробуем?..
Есть идея попробовать построить структуру с помощью графической схемы, наподобие проекта
Скачал, Посмотрел Обработку!
Интересно анализирует введенный текст запроса.
Явно помогает для начинающих при анализе сложных составных запросов понимать структуру запросов,
Но вот так хотелось сразу еще и консоль запросов для выполнения и отладки этого запроса.
Но это видать из-за того что не до конца понимаю сложные и встроенные запросы…
СПАСИБО!
Насчет визио идея хорошая, именно там рисую схемы, пока руками. Хотел сказать что как логическое продолжение разработки было бы очень полезно выполнять запрос и по частям, приходится иметь дело с запросами, которые работают, но не правильно, не так как нужно, приходится в консоли копировать и удалять лишнее, анализировать куски. Идея выполнения запроса по частям предложена 1С в консоли в виде кнопки(рис. ниже), но из-за того что она не подтягивает параметры из запроса в ней нет практического смысла. Думаю что видеть промежуточные этапы было бы очень полезно.
(88) Именно этим я сейчас и занимаюсь. Надо бы консоль посмотреть — может чего полезного вытащу.
Поля в связях не показывает — это очень грустно. Этого очень нехватает
Эта ваша разработка напомнила мне про уроки в институте про Майкрософт Акцес))
(91) Сделаем со временем… Как вы себе это представляете визуально (как мне нарисовать поля связи)?
С практической точки зрения связь может выглядеть как псевдоним поля и в скобке тип данных.
(27) Rustig,
Почему за запрос в цикле выгоняют с экзамена 1с?
Все просто.
Представьте себе компьютер соединенный по локальной сети с SQL-сервером.
при запуске запроса происходит обращение на SQL-сервер.
Обращение, пересылка текста запроса (условно можно так назвать) по локальной сети — все это занимает МНОГО времени
по сравнению с выполнением запроса на сервере SQL. если к тому же есть проблемы в локальной сети (потеря пакетов, медленная связь), то пересылка запроса занимает секунды!!! Это очень много!
А теперь проанализируем, что будет, если запрос в цикле заменить сложным запросом, который выполняется без цикла…
В случае сложного запроса — текст запсроса 1 раз посылается на сервер, 1 раз выполняется и 1 раз посылается результат. Даже если есть проблемы в локальной сети — они мало влияют на общее время выполнения запроса (и получение результата).
Если же выполнять запрос в цикле, то он МНОГО раз (сколько циклов) посылается на сервер. И МНОГО раз проблемы локальной сети влияют на общее время выполнения запросов в цикле.
В итоге, там где слабая сеть, запрос в цикле выполняется за МИНУТЫ, а сложный запрос — за СЕКУНДЫ
(112) Да даже в идеально настроенной сети или на одной машине — тратится время на согласование клиента и сервера, на передачу данных. И это незначительное время — в цикле становится весьма весомым. А оптимальный пакетный и сложный запрос современный SQL-сервер выполнит быстро.
(113) Сейчас нет 8.1 под рукой, завтра выложу.
с наступающим!
(112) друзья, спасибо что подробно пишите — другим наука. а я это знал….
я писал в другом контексте, который вы не увидели, есть много нюансов в работе — это и человеческий фактор, а не только машинный (о котором вы пишите про ограничения локальной сети и тд). Человеческий фактор породил исследования в таких областях как юзабилити, появилось понимание необходимости создавать дружественный интерфейс, есть соционика, которая целенаправленно изучает тот механизм, с помощью которого человек воспринимает и оценивает поступающую к нему информацию. В общем, когда приходишь к пользователем и спрашиваешь почему они работают именно так, а не так как закладывалось, понимаешь что человеческий фактор и/или новые требования к системе существуют. далее, если кратко, человеческий фактор существует также и у разработчика (внедренца). Он заключается в том, что написать обработку данных «на один раз» оказывается более быстрее и эффективнее, если не заморачиваться на внутренние соединения таблиц. Именно «заморачиваться» — потому что это более сложная задача. Если сравнивать с чем-то из жизни, то зачастую мы не обращаем внимание на беспорядок в своих вещах дома, на рабочем столе и т.д. — зато жизнь идет, работа движется, и не важно, что иногда мы тратим СЕКУНДЫ для поиска ключей или других предметов быта. Ну в общем, всему свое время и место.
(116) Прав в одном: когда пишешь для себя и на один раз — все средства хороши… А так: если спец пару лет плотно работает с запросами, то даже такого рода задачу ему будет проще решить сложным составным запросом — по привычке.
Да, большие и сложные запросы сложнее отлаживать, но и тут есть масса инструментов в помощь…
(117) добрый день, с н.г. К сожалению не смог пройти «интеллектуальный тест» при скачивании 27/12/2012- результат= файла нет, 1 «мань»-черт с ней. Предлагает почему-то 2 строчки типа «ХаХаХ» «ФфФфФ»- я их тупо ввожу и получаю фиг.вам
(121) Странно… Возможно браузер глючит… В списке скачавших Вы есть. Давайте почту.
Кстати, у меня капчу не просит вообще…
(122) Спасибо,сам удивляюсь.
(37),(125),(127),(130),(129) Набросал идею такого конструктора — чтобы не забыть на будущее:
Визуальный конструктор запросов (идея)
Полагаю, самое сложное в реализации — полноценный парсер (вот эта вещь мне ну очень нужна). Ну и еще надо подумать над интерфейсом…
(133) я вот тоже прикинул — создать панель инструментов с блоками и связями, как, например, в схеме бизнес-процессов, и при связях просить пользователя задать условия связей вручную или парсить метаданные и предлагать по типам.
Хотя связи через точку, может, глубиной одного уровня тоже можно включить.
Потом выдать заготовку, скелет запроса, который скормить Конструктору и настроить в нём тонко.
Но это так, идея.