Запросник




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

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

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

<?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='\

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 не будет опубликован. Обязательные поля помечены *