Подсистема "Контекстная подсказка" v1.51




Принцип обмена данными из 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. German

    А в 8.0 то будет работать?

    Reply ↓
  2. tormozit

    Следующий релиз постараюсь сделать для двух плафторм, но описание платформы будет в обоих случаях от 8.1.

    Reply ↓
  3. German

    Ну вообщем +1, было бы интересней если бы вывалися по CTRL+SPACE список значений а не эта громоздкая таблица.

    А так очень даже нечего, глубоко не удалось посмотреть, но реально это необходимо.

    Reply ↓
  4. tormozit

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

    Reply ↓
  5. tormozit

    v 0.70

    — улучшен «интеллект»

    — реализовано простое вычисление типов в режиме запроса

    — улучшена поддержка метаданных

    — сделал фильтр для списка слов

    — улучшена раскраска различных типов слов

    — исправлена куча ошибок

    Reply ↓
  6. CheBurator

    чувствую — пригодится…

    Reply ↓
  7. tormozit

    v 0.71

    — исправил парочку мелких багов

    Reply ↓
  8. tormozit

    v 0.75

    — реализована полная поддержка метаданных в обоих режимах с бесконечным разыменовыванием

    — добавлена поддержка составных типов

    — теперь в заголовке окна подсказки отображается текущий контекст, а его тип в информационном поле вверху окна

    Reply ↓
  9. tormozit

    v 0.76

    — багфикс релиз

    Reply ↓
  10. tormozit

    Теперь доступны две версии: под 8.0 и под 8.1

    Reply ↓
  11. tormozit

    Исправлена ошибка в v0.77 под 8.0

    {ВнешняяОбработка.КлсПолеТекстовогоДокументаСКонтекстнойПодсказкой(1482,9)}: Процедура или функция с указанным именем уже определена (ЗначениеНеЗаполнено)

    Функция <<?>>ЗначениеНеЗаполнено(Значение) Экспорт

    Reply ↓
  12. German

    Вот это было бы класно.

    «Для режима внутреннего языка — возможность указания локального контекста»

    То есть можно будет програмно указать нужные переменые?

    Допустим если я пишу на встроенном языке и знаю что результат выполнения я должен передать в переменную «Результат» и это результат я смогу найти в подсказке?

    Или ты хочешь самостоятельно анализировать текущий контекст?

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

    Reply ↓
  13. tormozit

    >> Возможность указания локального контекста.

    Да. Можно будет програмно указать нужные локальные свойства (переменные). Также можно будет указать тип локального контекста (например, ДокументОбъект.РасходнаяНакладная).

    >> Еще было бы прикольно всетаки отказаться от таблицы значений.

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

    Reply ↓
  14. German

    >>>> Еще было бы прикольно всетаки отказаться от таблицы значений.

    >>На начальном этапе я экспериментировал с окном, даже пытался его пизиционировать через обходные пути, но>> >>ничего достойного не вышло =(

    может стоит посмотреть в сторону AutoIT?

    Reply ↓
  15. tormozit

    >> может стоит посмотреть в сторону AutoIT?

    Да, думаю, попробую применить это средство. Правильная позиция окна подсказки играет немаловажную роль.

    Reply ↓
  16. tormozit

    v 0.79

    — реализована поддержка табличных частей в обоих режимах

    — обработка обращения по индексу несколько раз подряд

    — исправлены мелкие ошибки

    Reply ↓
  17. German

    Когда будет долгожданная

    >>програмно указать нужные локальные свойства

    Reply ↓
  18. tormozit

    >> Когда будет долгожданная

    Сегодня-завтра. Уже сделал, нужно немного потестировать.

    Reply ↓
  19. tormozit

    v 0.80

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

    — теперь можно в режиме внутреннего языка указывать свойства локального контекста (можно увидеть в демонстрационной форме)

    Reply ↓
  20. tormozit

    v 0.80

    — добавлено получение предопределенных элементов

    — в глобальный контекст больше не попадают общие модули с признаком «Глобальный

    Reply ↓
  21. German

    Для 8.0 версия .77….. хочется .8

    Reply ↓
  22. German

    И в 8.0 ЭлементУправленияTextBox не хочет работать так как он работает в 8.1

    Reply ↓
  23. German

    Указываю свойства локального контекста

    Необходимо брать данные из структуры Параметр

    Добавляю

    Параметр.Число — строка

    Параметр.Число2- строка

    пишу «П»+Ctrl+Spase

    вижу в окне

    Параметр.Число

    Параметр.Число2

    вроде все нормально

    Пишу

    «Параметр.»+Ctrl+Spase

    получаю пустое окно.

    Reply ↓
  24. tormozit

    German, спасибо за багрепорт. Ошибка устранена.

    Обновил .77 для 8.0

    Reply ↓
  25. tormozit

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

    Reply ↓
  26. tormozit

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

    Reply ↓
  27. German

    Сергей, а «Параметр.Число» в данном случае является адрес? Что тогда будет идентификатор?

    Колонки таблицы значений это тоже дело. Респект. Плюсонул бы еще раз.

    Reply ↓
  28. German

    Хотелось бы еще для формы «ФормаПодсказки» грамонтный содержательный хелп а то приходится при внедрении класса самому писать :)) и мне кажется что значение поля (поле)»ТипКонтекста» можно поместить в заголовок, что бы минимизировать форму, по хорошему там вообще должна остаться одна таблица и ЭлементУправленияTextBox

    Reply ↓
  29. German

    в общем случае я вот так сделал http://infostart.ru/file.php?0,file=281

    Reply ↓
  30. tormozit

    Под идентификатором я понимал — [А-Яа-я_A-Za-z][А-Яа-я_A-Za-z0-9]*.

    Под адресом я понимал — ([А-Яа-я_A-Za-z][А-Яа-я_A-Za-z0-9]*.)*[А-Яа-я_A-Za-z][А-Яа-я_A-Za-z0-9]*.

    Прошу помочь мне называть все своими именами.

    Reply ↓
  31. tormozit

    Хелп скоро будет. Поле «ТипКонтекста» сначала не было и тип отображался в заголовке, но затем оно мне лично понадобилось и было решено разместить его менно там. Ведь тип может быть и составной и сам контекст не маленький, поэтому почти ничего видно в заголовке формы подсказки не будет.

    Reply ↓
  32. tormozit

    Герман, форму подсказки замучаешься каждый раз переделывать 😉

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

    Reply ↓
  33. tormozit

    >> по хорошему там вообще должна остаться одна таблица и ЭлементУправленияTextBox.

    Да, наверное командную панель я все таки уберу, а оставлю только контекстное меню.

    Reply ↓
  34. tormozit

    0.81 под 8.1

    — теперь сообщения об ошибках и компиляции и выполнения содержат адекватную информацию и ошибочная строка выделяется в тексте

    — упростил форму подсказки, убрал большинство команд в контекстное меню таблицы.

    — положил начало справке

    Reply ↓
  35. German

    Сергей ты совсем забросил версию под 8.0?

    Reply ↓
  36. tormozit

    Герман, сейчас просто запуск моего проекта на работе идет. Поэтому очень мало свободного времени.

    Постараюсь в выходные обновить версию под 8.0

    Reply ↓
  37. tormozit

    В версии под 8.0 были исправлены 2 важных ошибки, которые сильно снижали удобство использования подсказки.

    Reply ↓
  38. tormozit

    0.81 под 8.0

    Каждый релиз для 8.0 требует все больше и больше времени на переделку из 8.1.

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

    Reply ↓
  39. German

    Поэтому нужно было писать на 8.0 сразу, так чтобы можно было конвертировать в 8.1 ;)))

    Reply ↓
  40. tormozit

    0.82 для 8.1

    — реализован переход к ближайшему определению слова в тексте

    — улучшена работа с комментариями

    — реализована контекстная справка, но сами файлы справки пока не включены в поставку

    — исправлены мелкие ошибки

    — добавлена справка пользователя по компоненте

    Reply ↓
  41. tormozit

    v 0.83 для 8.1

    — в режиме внуреннего языка реализован интерфейс для выполнения редактируемой программы в локальном контексте любого объекта (у объекта должен присутствовать соответствующий экспортный метод); в форме-примере объявлены 2 локальные переменные «лСписок» и «лПостроительОтчета», которые объявлены в подсказке

    — теперь после слова Новый отображаются только те типы, у которых существует конструктор (как и должно быть)

    Reply ↓
  42. tormozit

    Обнаружилось, что под видом версии 0.81 под 8.0 лежала 0.77 под 8.0. Накладочка вышла. Исправил. Теперь там лежит правильная версия 0.81 под 8.0

    На днях планирую выпустить 0.83 под 8.0

    Reply ↓
  43. Sol

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

    Reply ↓
  44. tormozit

    Sol, не мог ты пояснить, что имеется ввиду?

    Reply ↓
  45. tormozit

    Догадался. Речь о свертке элемента управления табличное поле в версии 0.81 для 8.0. Да, так будет удобнее, но так как совсем скоро выйдет новый релиз для 8.0, где табличного поля не будет, то реализовавыть такую возможность не разумно.

    Reply ↓
  46. tormozit

    В обоих версиях исправлена ошибка

    {ВнешняяОбработка.КлсПолеТекстовогоДокументаСКонтекстнойПодсказкой(1745,9)}: Процедура или функция с указанным именем уже определена (СкопироватьУниверсальнуюКоллекцию)

    Функция <<?>>СкопироватьУниверсальнуюКоллекцию(КоллекцияИсходная) Экспорт

    Reply ↓
  47. Sol

    Т.е. остался только программный интерфейс доступа до Локального контекста, от интерактивного ты отказался?

    Можно узнать почему?

    Reply ↓
  48. Sol

    Кстати у лСписок, методы после точки не появляются

    Reply ↓
  49. tormozit

    >> Кстати у лСписок, методы после точки не появляются

    Спасибо. Это ошибка. Вечером будет исправлено.

    Reply ↓
  50. tormozit

    Исправлена ошибка с неправильным вычислением типа СписокЗначений.

    Reply ↓
  51. tormozit

    0.84 под 8.1

    — исправлены мелкие ошибки

    — у функций теперь свой значок аналогично подсказке конфигуратора

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

    Reply ↓
  52. CheBurator

    чувствую — офигенная вещь…

    Reply ↓
  53. tormozit

    Чебурашка, ты я смотрю очень чувствительный =)

    Reply ↓
  54. tormozit

    Выложил файлы справки от платформы 8.1

    Reply ↓
  55. Очень полезная штука. +1.

    Смотрю для 8.1.

    А можно ли оптимизировать, чтобы макет «ОписаниеПлатформы» загружался при первом обращении к контекстной подсказке. На данный момент 2 секунды открывается окошко (по замеру производительности 75% чтение макета и еще 10% на индексы таблиц).

    Просто не факт, что контекстной подсказкой будут пользоваться при открытии окна, а инициализировать надо, ибо кнопки на панель добавить надо. Но из-за кнопок на панели ждать 2 секунды… анноит.

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

    И еще пожелание. Сделать кнопку проверки алгоритма на внутр. языке без необходимости его выполнять (иногда алгоритмы бывают не безобидными). Сделать обрамление с помощью Если Ложь Тогда <ТекстАлгоритмы> КонецЕсли; и для использования локальных переменных инициализировать их в Неопределено перед этим Если. Про ВыполнитьЛокально пока не смотрел, но не всегда контекст формы редактирования алгоритма совпадает с контектом самого алгоритма, т.е. вызываться может не из формы, а например из общего модуля…

    Reply ↓
  56. tormozit

    Спасибо за ценные замечания и предложения.

    Выпустил версию 0.85 под 8.1.7

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

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

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

    — исправлена ошибка при обращении к контексту элемента формы (их поддержка пока даже не планируется)

    — исправлена ошибка при определении адреса перехода по гиперссылке в файлах справки

    — в настройках компоненты добавлена опция отказа от открытия формы подсказки в случае пустого списка

    ВНИМАНИЕ! Данная версия совместима только с версиями платформы 8.1.7 и выше

    Reply ↓
  57. Robert

    А что значит «Выпустить компоненту в виде подсистемы (CF)»? Можно поподробней? Что за подсистемы такие?

    Reply ↓
  58. tormozit

    0.86 для 8.1.7

    — исправлена неработающая опция условия открытия формы подсказки в настройках компоненты

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

    — реализовано вычисление системных перечислений

    — доделана работа с константами

    Reply ↓
  59. Sol

    > На днях планирую выпустить 0.83 под 8.0

    Будет? Или для 8.0 решил прекратить поддержку?

    Reply ↓
  60. tormozit

    > Будет? Или для 8.0 решил прекратить поддержку?

    Скорее всего будет, но последняя. Возможно в конце недели.

    Reply ↓
  61. tormozit

    Вышла 0.87 под 8.1

    — доведен до ума браузер по справке (реализовано динамическое подключение стилей)

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

    — немного улучшен синтаксический анализатор

    — сделана подсказка по типам (контексты внутреннего языка «Тип(«», «Новый»и языка запросов «ССЫЛКА»)

    Reply ↓
  62. tormozit

    Для версии 0.87 необходимо скачать новые файлы справки. Со старыми она работать не будет.

    Reply ↓
  63. tormozit

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

    Reply ↓
  64. German

    Сергей где обещеная 0.83 под 8.0? Неможем новую версию выпустить EI

    ждем тебя…..

    Reply ↓
  65. tormozit

    >> Сергей где обещеная 0.83 под 8.0? Неможем новую версию выпустить EI

    ждем тебя…..

    Ладно. Сейчас попытаюсь…

    Reply ↓
  66. tormozit

    Наконец то! Выпустил 0.88 под 8.0.

    0.88 включает исправление мелких ошибок

    Reply ↓
  67. tormozit

    0.89 под 8.1

    — добавлена посдказка для первого параметра конструктора ОписаниеТипов — <Новый ОписаниеТипов(«>

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

    Reply ↓
  68. Sol

    Спасибо.

    Исправь под 8.0 ошибку. Ты там забыл убрать проверку Общего модуля на свойство «Глобальный» 😉

    P.S. Небольшой совет. Если хочешь, чтобы разработка пользовалась большей популярностью, то приложи здесь пару Приложений, где она уже включена в Поддержку. Привлекешь новичков, которым она как раз и нужна, но которые сами ее в Приложения вставить не могут.

    Для начала мог бы приложить Консоли запросов и Отчетов (только последнюю бери из последних российских УПП). Можешь также выложить обработку «Универсальный подбор и обработка объектов», которую я выкладывал в партнерском форуме (второй вариант). Короче, чем больше приложений — тем лучше.

    Так как обработка очень полезна новичкам, но они-то как раз сами, вряд ли пока смогут ее куда-нибудь подсоединить 😉

    Reply ↓
  69. tormozit

    Спасибо за багрепорт.

    Устранил проверку общих модулей на глобальность в версии 0.89 под 8.0. Нужно перекачать заново.

    Reply ↓
  70. tormozit

    Sol,

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

    Reply ↓
  71. tormozit

    Вышли версии 0.90

    — исправлены 2 ошибки в синтаксическом анализаторе (статистика)

    Reply ↓
  72. tormozit

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

    Reply ↓
  73. tormozit

    Исправлена ошибка в релизах 0.90 с вычислением системных перечислений (внес ее в одном из предпоследних релизов).

    Reply ↓
  74. В процедуре ПроверитьПрограммныйКод() не хватает:

    Код
          Для каждого ЛокальноеСлово из ТаблицаЛокальногоКонтекста Цикл
             Если ЛокальноеСлово.ТипСлова = "Свойство" Тогда
                ТекстДляВыполнения = ЛокальноеСлово.Слово+" = Неопределено;
                   |"+ТекстДляВыполнения;
             КонецЕсли;
          КонецЦикла;
    

    Показать полностью

    Переменные локального контекста надо бы инициализить.

    Еще не хватает процедуры УдалитьСловоЛокальногоКонтекста(Слово). Контекст может меняться в зависимости от каких-либо параметров….

    Reply ↓
  75. tormozit

    > Переменные локального контекста надо бы инициализить.

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

    Процедура УдалитьСловоЛокальногоКонтекста(Слово, ТипСлова) будет добавлена в следующем релизе.

    Reply ↓
  76. Пусть есть Конвертация данных от 1С. И вот мы пишем в обработчике перед выгрузкой.

    Код
    КлючВыгружаемыхДанных = ЗначениеВСтрокуВнутр(Источник.Дата) + ЗначениеВСтрокуВнутр(Источник.ТипЦен);

    Показать полностью

    Что такое Источник? В алгоритме его не инициализят. Или

    Код
    Запросы.КорректировкаДолга.УстановитьПараметр("ДатаНачала",     ДатаНачала);

    Показать полностью

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

    При проверке алгоритма такое допущение (=Неопределено) необходимо…

    Reply ↓
  77. tormozit

    Согласен. В следующей версии сделаю.

    Reply ↓
  78. German

    Пожелания мелкие….

    1. Убрать кнопку конструктора запросов из макетов, она хуже работает чем стандартная

    2. Кнопку Справка Ctrl+F1 Переименовать в «Поиск в синтаксисе помошнике»; И картинку поставить как в конфигураторе, а то чтото в начале запутался.

    3. Если путь к файлам справки не указан тогда кнопку поиск в синтаксисе помошнике делать недоступной.

    Хорошо бы… Фантазии…

    1. Синтаксис помошник открывался как в конфигураторе с деревом, ну а если будет индекс тогда вообще фантастика!!!…..

    2. Применить шаблоны которые входят в стандартный конфигуратор…..

    3. Файлы синтаксиса помошника выложить где нибуть в группах например Googlу на http://groups.google.ru/grphp?hl=ru&tab=wg&q=

    для общего доступа и изменения, дополнения примерами и прочее…., тогда фалы справки придется держать у себя если только нет интернета, а так прямо из сети.

    Reply ↓
  79. tormozit

    > 1. Убрать кнопку конструктора запросов из макетов, она хуже работает чем стандартная

    Поясни пожалуйста.

    Reply ↓
  80. Sol

    В запросах не работает компонента практически не работает с бух.регистрами

    Например после «ВЫБРАТЬ * ИЗ РегистрБухгалтерии.Хозрасчетный.» нажать Crtl+Space, то выходит ошибка «Поле объекта не обнаружено (ВидРегистра)».

    Если самостоятельно порешить эту проблему, то далее выходит другая — «Значение не является значением объектного типа (ИмяКоллекции)». Спотыкается на <Измерения>, т.к. в Макете «ОписаниеТиповИКоллекций» есть только <Имя измерения>, но нет просто <Измерения>.

    P.S. При этом <Имя измерения>, содержится в Макете дважды 😉

    Reply ↓
  81. tormozit

    На бух.регистрах в запросах пока не отлаживалась. Также, наверное, не работает и с регистрами расчета.

    Регистрами бухгалтерии займусь в ближайшие дни.

    Reply ↓
  82. German

    >> 1. Убрать кнопку конструктора запросов из макетов, она хуже работает чем стандартная

    >Поясни пожалуйста.

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

    Reply ↓
  83. German

    Описание добавления локальных свойств вообще нет.

    Какие возможности?

    Планы?

    Есть только два примера почти одинаковых….:(

    Чем отличаются «ТипСлова» -свойство и т.д.

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

    Или просто строку таблицы?

    Reply ↓
  84. tormozit

    Герман

    Я понял. В самом деле выделение не учитывается в моей команде, но зато выделяется ошибочная строка. Поэтому постараюсь реализовать в своей команде учет выделения текста при вызове конструктора.

    Reply ↓
  85. German

    + По кнопке конструктора дополнения:

    Да если доделать твоя будет лучше без сомнения

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

    Reply ↓
  86. tormozit

    > Нужно еще проверять в какое меню она выводится(кнопка), если в контекстное тогда, надо снимать галку авто контекстное меню.

    На мой взгляд, это лучше делать вне компоненты. Опиши ситуацию, в которой по-твоему это целесообразней производить из компоненты?

    Reply ↓
  87. Мелкие исправления для справки.

    Создавать сначала стиль, потом грузить body. Иначе скачет страничка когда рендерится.

    Получая форму справки, делать владельцем ЭтаФорма, иначе справка остается висеть после закрытия диалога редактирования текста.

    Reply ↓
  88. tormozit

    > Чем отличаются «ТипСлова» -свойство и т.д.

    «Метод» — к слову добавляется одна (или две) скобки

    «Свойство» — к слову ничего не добавляется

    Reply ↓
  89. tormozit

    >как мне допустим указать в локальном контексте текущую строку табличного поля?

    Или просто строку таблицы?

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

    Reply ↓
  90. tormozit

    > Создавать сначала стиль, потом грузить body.

    Я бы с радостью. Дашь пример кода?

    Reply ↓
  91. Ну просто местами поменять. Сначала

    Код
    ЭлементыФормы.ПолеHTMLДокумента.Документ.createStyleSheet(ПутьКСтилю);

    Показать полностью

    потом

    Код
    ЭлементыФормы.ПолеHTMLДокумента.Документ.body.innerHTML = СодержаниеСтраницы;

    Показать полностью

    Reply ↓
  92. tormozit

    > Ну просто местами поменять.

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

    Reply ↓
  93. tormozit

    Вышли 0.91

    — теперь вызов конструктора запроса при наличии выделенного текста берет только его, а не весь текст (как и стандартная команда платформы)

    — уменьшено время отображения сырой страницы справочной системы

    — добавлен метод УдалитьСловоЛокальногоКонтекста

    — в режиме языка запросов ввведены новые типы слова «Поле» и «Таблица» со своими пиктограммами

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

    — в версии для 8.1 оптимизирована структура индексов

    — исправлены мелкие ошибки с поиском нужной страницы синтаксис-помощника

    — добавлен реквизит компоненты ФормаВладелец и теперь все дочерние формы закрываются вместе с главной

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

    — добавлены типы для системных констант Null, Неопределено, Истина, Ложь

    Reply ↓
  94. Все краше и краше 🙂

    Что-то надо делать с параметрами методов локального контекста…

    Ладно, передать массив массивов типов в процедуру добавления слов несложно, но вот каким образом показать эти параметры при редактировании?…

    Может по нажатию для методов локального контекста по Ctrl+F1 отображать popup меню с параметрами (НаименованиеПараметра — ТипПараметра)? Развивая мысль для свойств локального контекста, по Ctrl+F1 тоже показывать тип в этом контекстном меню. Честно говоря, не знаю будет ли это работать достаточно быстро…

    Либо второй вариант дать возможность передавать код html-страницы с хелпом по методу/свойству. Это будет смотреться универсально, хотя писать в формате help’а от 1С сложновато, да и ссылок не получится по типам…

    Reply ↓
  95. German

    >На мой взгляд, это лучше делать вне компоненты. Опиши ситуацию, в которой по-твоему это целесообразней производить из >компоненты?

    Да очень просто

    КонтекстнаяПодсказка1.Инициализировать(ПолеТекстовогоДокументаСКонтекстнойПодсказкой,ЭтаФорма, ЭлементыФормы.ТекстЗапроса, ЭлементыФормы.КонтМеню.Кнопки.Предприятие,Истина);

    где

    ЭлементыФормы.КонтМеню.Кнопки.Предприятие контекстное меню ЭлементыФормы.ТекстЗапроса с признаком авто.

    Да на самом деле это не существенно, но если бы сделал было бы ничего

    Reply ↓
  96. Sol

    Если вызвать синтаксис-помошник (Ctrl+F1) для значений Истина или Ложь — ничего не происходит, Справка не открывается. Если данные значения встретить в СП (еще сам тип Булево) и щелкнуть по ним, то пишет «Указаная страница справочной информации отсутствует.«

    Reply ↓
  97. tormozit

    > Если вызвать синтаксис-помошник (Ctrl+F1) для значений Истина или Ложь — ничего не происходит,

    К сожалению, я пока не нашел способа это исправить.

    Reply ↓
  98. German

    Развитие то идет?

    Reply ↓
  99. drx211

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

    Ошибка здесь:

    {Обработка.ирПлатформа.Форма.ФормаСправки(56)}: Ошибка при вызове метода контекста (Прочитать): Каталог не обнаружен ‘SrvMossuploadСинтакс-помощникobjectsGlobal contextmethodsMessage30.html’

    ТекстСодержания.Прочитать(ПутьКСодержанию);

    по причине:

    Каталог не обнаружен ‘SrvMossuploadСинтакс-помощникobjectsGlobal contextmethodsMessage30.html’

    Надо бы так: «\SrvMossuploadСинтакс-помощникobjectsGlobal contextmethodsMessage30.html»

    Reply ↓

Leave a Comment

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