Запросник




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2026-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='\

99 Comments

  1. Serj1C

    Отладка запросов — отличная идея!

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

    Интерфейс поначалу не интуитивный, но быстро привыкаешь. Плюс!

    Reply ↓
  2. tezin

    Ошибка с очисткой параметров исправлена.

    Reply ↓
  3. Serj1C

    Привычна кнопка F7 дает ошибку))

    {Форма.Форма(60)}: Преобразование значения к типу Булево не может быть выполнено

    Если Не ТолькоВыделенныйТекст Тогда

    Reply ↓
  4. sss999

    Если интересно можешь посмотреть мою дороботку консоли Чистова.

    Reply ↓
  5. Kondrat

    Есть небольшая ошибка в функции ПропылесоситьТекстЗапроса(), последняя кавычка не убирается. Сначала нужно убрать закрывающую точку с запятой. А так Плюс!

    Reply ↓
  6. Evg-Lylyk
  7. tezin

    объясните плиз как работает кнопка F7

    Reply ↓
  8. Alias

    Командная панель «КонтМеню» (визуально расположенное под деревом запросов) содержит в себе пункт ВыполнитьЗапрос (с одноимённым действием) с установленным акселератором F7.

    Процедура ВыполнитьЗапрос() предполагает наличие одного необязательного булевого параметра, место которого занимает ссылка на кнопку командной панели, что вызывает ошибку.

    Методы обхода каждый выбирает для себя сам… можно проверить тип параметра, можно повесить на пункт свою процедуру, из которой уже вызвать ВыполнитьЗапрос() и т.д.

    Reply ↓
  9. Alias

    Ах да… что хотел сказать-то на самом деле. Пожелание.

    Очень надо сделать просмотр хранилищ значений. То есть если в результате есть поле типа хранилище, нужно не просто говорить о том что о но хранилище — это понятно. Нужно его получить, попытаться определить тип и открыть или хотя бы дать какую-то доп.информацию в случае невозможности открытия.

    Спасибо.

    Reply ↓
  10. tezin

    F7 — исправлено

    с Хранилищем — принято, идея правильная

    Reply ↓
  11. direktorSan

    Вот такой простой запрос

    выбрать истина поместить ист;

    выбрать ложь поместить лож;

    выбрать * из ист объединить выбрать * из лож

    1) выполняется нормально.

    Однако в списке временных таблиц ни таблицы «ист», ни таблицы «лож» НЕ видно!

    2) Если скормить этот запрос конструктору но вместо ПОМЕСТИТЬ написать INTO — опять же ни одной таблицы не видно!

    3) Если написать «ПОМЕСТИТЬ ист // просто временная таблица», то в списке временных таблиц появится таблица «ист // просто временная таблица». Имя не верное, но содержимое отображается правильно.

    4) А если написать вот так:

    ПОМЕСТИТЬ

    // таб;

    ист //просто временная таблица;

    ;

    то в списке временных таблиц будет таблица «// таб;»

    И при попытке посмотреть ее содержимое вываливается ошибка:

    «{Форма.Форма(1563)}: Ошибка при вызове метода контекста (Выполнить): {(2, 1)}: Неверное присоединение

    ВременнаяТаблица = ЗапросТМП.Выполнить().Выгрузить();

    по причине:

    {(2, 1)}: Неверное присоединение»

    Reply ↓
  12. tezin

    выбрать истина ПОМЕСТИТЬ ист;

    выбрать ложь ПОМЕСТИТЬ лож;

    выбрать * из ист объединить выбрать * из лож

    вот так работает

    все дело в регистре ПОМЕСТИТЬ

    добавлю и нижний

    Reply ↓
  13. Serj1C

    Вот прицепились)) Все эти ошибки мы и сами можем поправить.

    Еще раз спасибо за идею отладки запроса!

    Reply ↓
  14. tezin

    Доработано:

    1. Открытие данных типа ХранилищеЗначения из результата запроса

    2. Улучшено создание списка временных таблиц

    Всем кому пригодилось — пожалуйста 🙂

    А про ошибки все равно пишите.

    Чем доделанней результат — тем радостнее всем 🙂

    Reply ↓
  15. air_mike

    Понравилась консолька.

    Ошибки:

    1.При нажатии «Выполнить запрос», сбрасываются все изменения и нельзя отменить предыдущее действие(Ctrl+Z).

    Закоментил строку (1223).

    2.Добавил из стандартной автосохранение.

    3.Слегка изменил интерфейс.

    Reply ↓
  16. tezin

    что было в строке 1223? в текущем релизе она пустая

    автосохранение думаю добавить в будущем опционально

    что не понравилось в интерфейсе?

    Reply ↓
  17. Serj1C

    (16) Классический интерфейс с ИТС был бы привычней.

    Неудобство: При формировании запроса по зеленой кнопке курсор улетает в начало запроса, что не заставляет заново искать проблемное место. Причем по кнопке F7 — такого не происходит

    Reply ↓
  18. Alias

    >Открытие данных типа ХранилищеЗначения из результата запроса

    Мало, мало…. недостаточно. Если в хранилище структура — просто пишет «Структура».

    В той же Консолидации много в хранилищах — и хрен что посмотришь.

    У нас просто тоже есть свои наработки, в них сделано так:

    Создана дополнительная форма «ФормаОтображенияТаблицы», на которой лежит табличное поле без колонок.

    Написаны отдельные процедуры по программному формированию колонок в случае если переданный в форму параметр является Массивом, ТаблицейЗначений, СпискомЗначений, Структурой.

    И затем загрузка данных в сформированные колонки.

    Причем из себя же эта форма может вызываться рекурсивно (то есть например элемент массива в свою очредь является списком значений)

    Советую 🙂

    Reply ↓
  19. tezin

    vtezin@gmail.com

    а угостите 😉

    Reply ↓
  20. galich

    И еще бы сделать выполнение произвольной обработки по выборке как в consquery 🙂

    Reply ↓
  21. tezin

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

    идея и код любезно предоставлены Alias 🙂

    произвольную обработку по выборке добавлять думаю не стоит

    хочется сохранить сочетание простоты, удобства и функциональности

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

    ну и анализа его результата

    обработка результата на мой взгляд немного другая тема

    Reply ↓
  22. air_mike

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

    а так же размеры окон. Сделал привязку гор. разделителя по центру. окно с запросами увеличили в ширину.

    В строке 1223 была проца пропылисосить или как то так. кнопка выполнить запрос.

    Reply ↓
  23. Alias

    (21) Хорошо. 🙂 уберите только подчёркивание в 169-ой строке формы отображения данных. А то имя формы неверное — вложенное раскрытие коллекций не работает.

    Плюсег поставил, уже вовсю пользуюсь для отладки 🙂

    Что ещё хотелось бы, но знаю как удобнее это увидеть:

    Сейчас очень хорошо что написан тип пустой ссылки. То есть если пусто — видно что из себя это пусто представляет. А бывает надо понять тип _непустого_ значения… например, если перечисление — то какого типа. В большинстве случаев (для ссылок на документы и справочники) этот вопрос может решиться двойным кликом. И то не всегда. А для перечислений узнать тип уже нереально. Вот как бы это можно придумать поудобнее?

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

    Такой функционал кому-то ещё кажется нужным?

    Reply ↓
  24. lemich

    Огромной спасибо! Очень полезная консоль.

    Reply ↓
  25. direktorSan

    (12) А как с англоязычными формами?

    А как с комментариями в запросе? 😉

    Reply ↓
  26. direktorSan

    (13) Следуя этой логике — и платформу можно дописать «под себя»…

    Ток никто чего-то не пытается этого делать! 😉

    Reply ↓
  27. tezin

    (23) Мне кажется хорошей штукой. Подумаю как лучше и сделаю

    Reply ↓
  28. tezin

    (25) А в чем проблема? Конструктор их убивает, но это особенность конструктора.

    Reply ↓
  29. direktorSan

    (28)

    У меня проблем нет — юзаю свою консоль! Чего и Вам желаю! 😉

    Reply ↓
  30. rasswet

    свалилось в ошибку

    {ВнешнийОтчет.РасчетЗатратНЗП(26)}: Значение не является значением объектного типа (Количество)

    Если Выборка.Количество()=0 тогда

    при нажатии на ок

    вылетает вторая

    {Форма.Форма(732)}: Ошибка при вызове метода контекста (Выполнить): {(53, 4)}: Ошибка обработки представления «РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты:Несоответствие типов (параметр номер «»2″»)»

    <<?>>РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериодаГраница, , , Счет В (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство)), , ) КАК ХозрасчетныйОстаткиИОбороты

    ***отдельно без консоли этот запрос работает.

    куда копать? конфа БУХ КОРП

    если скопировать руками через буфер мой запрос и вставить его в консоль-он работает.

    где-то при автоматическом перебрасывании

    для режима «для отладки запросов в режиме отладки кода» глюк имхо.

    вторая ошибка связанана с тем, что не передался корректно параметр «граница».

    Reply ↓
  31. tezin

    (30) какой режим стоит на закладке «Выборки»?

    вышлите пожалуйста мне на vtezin@gmail.com текст запроса

    Reply ↓
  32. Serj1C

    Еще одна проблема. При работе с регистрами расчета необходимы параметры типа массив. И подругому никак. Видел что этот тип не доступен в табличном поле.

    Выкрутился из ситуации так:

    1) Добавил колонку «ЭтоМассив» в параметры

    2) ПередОткрытием Формы устанавливаю его в Истина (для типа Массив), преобразование в СписокЗначений отставляю

    3) По кнопке выполнить заполняю параметры запроса при наличии этой галочки как Параметр.ВыгрузитьЗначения(), чтобы получился на выходе массив

    4) Последний штрих — при активации левого списка (с запросами), заполняю эту галочку (оно там почему-то через [индекс] сделано)

    Если это добавите — будет еще лучше )

    Reply ↓
  33. Serj1C

    Не пробывали для получения результатов временных таблиц использовать метод ВыполнитьПакет() ?

    Запрос (Query)

    ВыполнитьПакет (ExecuteBatch)

    Синтаксис:

    ВыполнитьПакет()

    Возвращаемое значение:

    Тип: Массив.

    Описание:

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

    Reply ↓
  34. tezin

    (33) такой метод знаю

    только пока не понял зачем он здесь

    он тащит все результаты всех запросов массива с сервера в оперативку клиента

    на моей практике обычно нужен результат последнего запроса

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

    Reply ↓
  35. tezin

    (32) Для решения этой проблемы в новом варианте консоли сделан автоматический перевод параметров типа СписокЗначений в Массив. Вроде массивы вместо списков всегда подходят. Если кто найдет вариант когда список нельзя заменить массивом — сообщайте, будем думать дальше. Я пока таких вариантов не нашел.

    Reply ↓
  36. rasswet

    (31) режим дефолтный. самый верхний по моему. в пн только смогу точно сказать.

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

    а вот второе из моего вопроса (30) это касательно границы я так думаю. попробуйте передать параметр граница в какой-то свой запрос. работает?

    может консоль не понимает что такое граница?

    Reply ↓
  37. tezin

    Добавлена возможность работы с параметрами Типа «Момент времени» (одноименная кнопка на закладке «Параметры»). В планах: докрутить до возможности работать с Границами.

    (36) Консоль действительно не понимает границ, т.к. невозможно задать такой тип на колонку в табличном поле. Научим 🙂

    Reply ↓
  38. rasswet

    (37) как научишь-маякни-буду дальше тестировать. очень помогает просмотр ВТ.

    Reply ↓
  39. tezin

    (38) научил 🙂

    Reply ↓
  40. German

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

    Reply ↓
  41. tezin

    (40) детские болезни предпочитаю взрослым 😀

    все лучшее в этом мире вообще давно уже сделано

    аминь

    Reply ↓
  42. AlexDKam

    А в режиме отладки есть возможность передать временные таблицы через Запрос.МенеджерВременныхТаблиц = МойМенеджерТаблиц, которые были уже созданы перед вызовом текущего запроса?

    Reply ↓
  43. rasswet

    (39) проверил-работает! 🙂

    Reply ↓
  44. tezin

    (42) пока нет

    подумаю

    Reply ↓
  45. tezin

    (42) попробуй

    по идее запрос передается как объект

    скорее всего и менеджер идет с ним

    просто в списке временных таблиц они не отобразятся

    он формируется по тексту запроса

    но имя таблицы можно и вручную вбить

    Reply ↓
  46. almas

    Уважаемый Tezin добавь пожалуйста функционал «действия с результатом запроса» реализованный в консоли http://www.lavelin.ru. К сожалению его консоль более не развивается, а функциональные возможности огромны. 💡

    Reply ↓
  47. tezin

    (46) а дайте пожалуйста ссылку на описания необходимого функционала

    на указанном сайте ничего похожего не нашел

    Reply ↓
  48. a-novoselov

    (47) http://www.7homes.ru/1_v8 — очень удобная штука с возможностью обработки результата запроса в режиме «Предприятие». Для одноразовых выборок очень полезная. Пишешь в ней обработку даже не заглянув в конфигуратор 😉

    Reply ↓
  49. tezin

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

    Reply ↓
  50. rasswet

    лишние «» генерит в параметре

    Запрос.УстановитьПараметр(«»Дата»», );

    (49) баг

    Reply ↓
  51. rasswet

    (47) еще такая есть, может какую-то идею почерпнешь оттуда

    http://www.lavelin.ru/index.php?option=com_jdownloads&Itemid=58&task=view.download&catid=5&cid=21

    Reply ↓
  52. tezin

    (50) баг исправлен

    спасибо

    Reply ↓
  53. tezin

    (51) угу посмотрю

    спасибо за инфу

    если будет еще че интересное — кидай

    особо расширять функционал не планирую, чтобы не наворотить мегамонстра

    в первую очередь простота и удобство по работе и отладке запросов

    думаю на след неделе выдать новый релиз

    много планов уже накопилось

    пока в основном по удобству работы а не по функционалу

    Reply ↓
  54. air_mike

    Есть ошибка «Не описана ни одна выборка из запроса!». В обычной консоли данный запрос работает. Запрос выглядит примерно так. (в РегСв. хранится папка с номенклатурой)

    ВЫБРАТЬ

    Номенклатура.Ссылка

    ИЗ

    Справочник.Номенклатура КАК Номенклатура

    ГДЕ

    Номенклатура.Ссылка = &Номенклатура

    И Номенклатура.Ссылка В ИЕРАРХИИ

    (ВЫБРАТЬ

    ОбязательноеОбеспечениеНоменклатуры.Номенклатура

    ИЗ

    РегистрСведений.ОбязательноеОбеспечениеНоменклатуры КАК ОбязательноеОбеспечениеНоменклатуры)

    Reply ↓
  55. tezin

    (54) Если на закладке Выборки стоит режим «Обход по списку настроенных выборок» и выборки не описаны, то выдается именно это предупреждение

    В обычной консоли работы с выборками нет

    Reply ↓
  56. air_mike

    Спасибо (55). Действительно не стоял не один из переключателей. Не планируешь создать в параметрах возможность ввода «списков значений»?

    Reply ↓
  57. tezin

    (56) она там есть 🙂

    Reply ↓
  58. tezin

    Новый релиз. Обработка теперь называется Запросник, чтобы не путалась с другими консолями.

    Изменено многое. Вот основные моменты:

    1. Оптимизировано размещение кнопок, надписей, панелей.

    2. Убраны многие лишние вопросы, предупреждения и .т.д.

    3. Добавлена возможность скрыть-отобразить список запросов. При работе с одним запросом – это лишний элемент формы. При открытии Запросника с одним запросом список скрывается автоматически.

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

    5. Удалена сводная таблица из панели результата.

    Добавлено:

    1. Вывод типа значения в текущей ячейке результата или временной таблицы (под таблицей результата).

    2. Открытие значения ячейки по двойному клику из временной таблицы.

    3. Открытие результата запроса в отдельном максимизированном окне.

    4. Возможность сохранять описание к запросу (окно под списком запросов).

    5. Автоматическое открытие настройки параметров если после закрытия конструктора запроса появились новые

    6. При переключение режима таблица/дерево результата запроса или изменении настроек выборок запрос не выполняется заново а переформируется только его результат. Если запрос еще не выполнен – он выполнится.

    P.S. Так как пререработок много, то и косяки могут быть. Заранее приношу извинения и обещаю оперативно поправлять.

    Reply ↓
  59. air_mike

    (57) Ну тогда бы сказал, как это работает у тебя. У меня ставится только галочка и дальше не дает ни какого выбора. Вощем я не разобрался и встроил из http://www.lavelin.ru/index.php?option=com_jdownloads&Itemid=58&task=view.download&catid=5&cid=21 список значений.

    Название «консоль запросов + » мне лично нравилось больше.))

    Reply ↓
  60. tezin

    (59) Работает стандартно. Очищаешь значение параметра. Потом в типе значения указываешь Список значений. Потом заполняешь список.

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

    Или я не совсем понял о чем ты.

    Консолей много — Запросник один 😉

    Reply ↓
  61. air_mike

    (60) Ты правильно понял. У меня просто нет ни где выбора типа. Да ладно ерунда. Добавил уже поле выбора вместо булево «Выражение».

    Reply ↓
  62. rasswet

    не хватает такой штуки.

    делаю два запроса.

    выполняю первый. заполняется ТЧ.переключаюсь. ВЫполняю второй. а потом переключаюсь опять на первый и хочу видеть результат первого. чтобы можно было выполнить по очереди два запроса и потом сравнить два запроса. а то можно видеть в результате только тот, который выполнялся последним. Создавать может еще страничку результата…как-то так.

    Reply ↓
  63. tezin

    (61) Если параметр уже заполнен, то очисть поле крестиком — тогда появится кнопка выбора типа. Специально проверил — все работает 🙂

    Reply ↓
  64. tezin

    (62) добавил такую фишку:

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

    соответственно можно сравнивать результаты как разных запросов так и например одного с разными параметрами

    не забыть бы описать 🙂

    Reply ↓
  65. artbear

    Код

    Консоль = ВнешниеОбработки.Создать(«Q:1C8.1My_EPFsКонсольЗапросов81+.epf»);
    Консоль.ВнешнийЗапрос = Запрос;
    Форма = Консоль.ПолучитьФорму();
    Форма.Открыть();
    Возврат;

    неудобен.

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

    ВнешниеОбработки.Создать(«Q:1C8.1My_EPFsКонсольЗапросов81+.epf»).Отладить(Запрос);

    просто и удобно.

    ЗЫ а вообще посмотри мою статью «Повышение удобства разработки», я там описал очень удобные и мощные консоли.

    Reply ↓
  66. tezin

    (65) принято и сделано

    новый вариант вызова для отладки:

    ВнешниеОбработки.Создать(«Q:1С8.1My_EPFsЗапросник81.epf»).Отладить(Запрос);

    спасибо за ценный совет

    так действительно гораздо удобнее

    статью обязательно почитаю

    Reply ↓
  67. rasswet

    (64) это когда на стрелку жмем вправо вверх?

    Reply ↓
  68. tezin

    (67)

    да над результатом справа

    Reply ↓
  69. BigMih

    Запросник получился очень даже неплохой! 😎 Спасибо!

    Reply ↓
  70. tezin

    Доработки:

    1. Добавлено описание

    2. В окне описания добавлена автоматически формируемая строка вызова Запросника для отладки запроса.

    3. Двойной клик по запросу в списке — выполнение запроса (было — открытие в максимизированном окне для редактирования)

    4. отдельная нескрываемая панель работы с файлами запросов

    Reply ↓
  71. tezin

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

    Reply ↓
  72. tezin

    В форме справки добавлена кнопка копирования в буфер строки вызова Запросника для отладки запроса.

    В панели управления списком запросов добавлена кнопка редактирования наименования запроса.

    Reply ↓
  73. tezin

    Иногда при открытии формы наблюдалось кривое расположение панелей. Исправлено.

    Reply ↓
  74. xuser

    Может для «Выполнить запрос» по умолчанию лучше «F5»?

    По аналогии с «Продолжить отладку», а то как-то не привычно.

    А для выполнения выделенного текста, например «Ctrl/Shift/Alt»+»F5»

    Reply ↓
  75. tezin

    (74) Горячие клавиши оставлены как в стандартной консоли. Так тоже привычней 🙂

    Reply ↓
  76. BigMih

    Добавить функционал для работы с таблицами значений возможно? В смысле использования их в разделе параметров (очень хочется &ТЗ 🙂 ). кстати так и не понял как там граница/момент работает — постоянно кнопка недоступная

    Reply ↓
  77. tezin

    Исправлена ошибка с отображением служебной информации о записи результата (типы записей и уровни группировок) в режиме обхода по настроенным выборкам.

    Reply ↓
  78. Grohovod

    (76) Чтобы кнопка с границей заработала достаточно на нее повесить процедуру КоманднаяПанельЦентральноеОкноРедактироватьМоментВремени

    Видимо автор ее переименовал но забыл сменить в свойствах кнопы

    Reply ↓
  79. tezin

    Исправлена ошибка с редактированием параметров типа Граница или МоментВремени.

    (спасибо Grohovod)

    В режиме Момент времени:

    — добавлена кнопка очистки в поле редактировании ссылки на документ в режиме момента времени,

    — исправлена ошибка, возникавшая при очистке ссылки на документ.

    Reply ↓
  80. Wicked

    если в запросе УНИЧТОЖАЕТСЯ Врем Таблица то ее просмотреть невозможно!

    Исправить бы 🙂

    Reply ↓
  81. tezin

    Добавлена версия для 8.2 (толстый клиент)

    Reply ↓
  82. Kyrales

    (81) Нету для 8.2 тут

    Reply ↓
  83. tezin

    (82) Теперь точно есть

    Почему то через Chrome файл не загружался, хотя публикация сохранялась.

    Залил через IE.

    Reply ↓
  84. ivbs

    Спасибо, просто супер.

    Reply ↓
  85. rasswet

    можно доделать, чтобы показывало время выполнения для временных таблиц (каждая в отдельности)?

    Reply ↓
  86. tezin

    (85) если подскажете как — с удовольствием 🙂

    Reply ↓
  87. rasswet

    еще есть такая вариация http://www.infostart.ru/public/64522/?PAGEN_1=1

    и http://www.infostart.ru/public/19577/ но время выполнения умеет засекать вот эта http://narod.yandex.ru/disk/26998761000/wremjawt.epf. не помню кто автор, может сможете оттуда забрать себе механизм, засекающий время вт. очень часто нужно. приходится пользоватся и вашей и той.

    Reply ↓
  88. tezin

    (87)

    http://narod.yandex.ru/disk/26998761000/wremjawt.epf

    — интересный вариант

    сделаю ориентировочно ближе к концу недели

    сейчас в отпуске

    Reply ↓
  89. tezin

    Добавлен расчет времени выполнения запросов создания временных таблиц.

    Изменен интерфейс работы со временными таблицами:

    — закладка «Временные таблицы» отображается только когда в результате запроса присутствуют временные таблицы. Заголовок закладки содержит информацию о количестве временных таблиц.

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

    Reply ↓
  90. rasswet

    (89) не вижу время выполнения ВТ(((

    Reply ↓
  91. tezin

    (90) опять не сработала выкладка через Хром 🙁

    перезалил через ИЕ

    Reply ↓
  92. rasswet

    (91) теперь всё ок. если бы еще куда-то вывести на время выполнения так, чтобы не пропадало оно. а то когда открывается сама таблица, то времени уже не видно… но сойдет конечно и так! спасибо!

    Reply ↓
  93. CheBurator

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

    Reply ↓
  94. tezin

    (93) если есть претензии к описанию данной консоли — будь конкретней;

    если есть желание написать обзор всех консолей, которых очень много с глубоким сравнительным анализом и подробным описанием кто-кого чем лучше или хуже — удачи в святом порыве, заодно глядишь и самую лучшую сбацаешь 😉

    Reply ↓
  95. tezin

    (92) Добавлено отображение времени выполнения запроса по временной таблице на закладку «Временные таблицы»

    Reply ↓
  96. CheBurator

    (94) так как я семерочник только с совсем началом использования/изучения 7.7 — то таковой обзор написать не могу. А он — нужен! Потому что консолей в 8-ке расплодилось столько, как и перенумераторов в 7.7 — практически полная аналогия… но если перенумераторы в 7.7 видетельствоали скорее всего о том, что написавший в глаза не видел штатного инструмента по перенумерации и является скорее «чайником» — то про 8-ов в этом ключе даже и не знаю что думать…

    Reply ↓
  97. mialord

    Для 8.1 на данном ресурсе есть уже консоли вразы мощнее и с доп. функционалом.

    Reply ↓
  98. artbear

    (96) По 8-ке можешь мои статьи в моем профиле посмотреть.

    Reply ↓
  99. tezin

    (97) ну хоть в разы, а не на порядки 😀

    из того, что я видел мне кажется моя удобнее

    дай плиз ссылку на «самую-самую» по твоему мнению

    и CheBurator’у пригодится

    Reply ↓

Leave a Comment

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