Борисов Сергей

63
Рейтинг

juntatalor
Сергей Борисов



  •   Регистрация: 29.01.2010 (14 лет назад)

  •   Был(а) на сайте: 04.11.2020

Друзья
  • Siran Yranov
Подписчики 2

Группы

Профессиональный разработчик

Рейтинг 63

Парсер запросов 1С. Часть 1: Введение, разбор математических выражений

Статья Программист Платформа 1С v8.3 Бесплатно (free) Внешняя обработка (ert,epf) Математика и алгоритмы

Рано или поздно становится скучно решать типичные задачи, для которых придумана 1С. Голова пухнет от бухгалтерских терминов и очередных "хотелок" пользователей. Именно в такие моменты хочется гордо поднять голову, воскликнуть "Но я же программист!" и заняться чем-то интересным. В цикле статей я постараюсь доступно описать, как устроены парсеры в целом и на примере парсера языка запросов 1С. Требования к навыкам читающего: основы языка 1С, основы алгоритмизации.

1 стартмани

04.12.2013    32936    19    juntatalor    49       

56

Комментарии

Dev8.3.5.1383 и 8.3.5.1400(тестовая) утечка памяти.#33 01.02.15 11:02
(32) Подскажите, а на апаче ситуация улучшилась в этих релизах?
DevРабота с полем ввода#4 05.12.14 14:10
ОкончаниеВводаТекста срабатывает только при переходе на другой элемент управления (Enter, Tab, мышь). Мне вообще не до конца понятно, чем это событие отличается от ПриИзменении.
DevРабота с полем ввода#2 05.12.14 12:32
И да. Хотелось бы обойтись штатным функционалом, без чего-то типа Wshell и прочих костылей.
DevРабота с полем ввода#1 05.12.14 12:30
Управляемая форма, на ней реквизит типа строка(0) и элемент управления для этого реквизита (поле ввода).

Задача:
При вводе текста в поле выдавать подсказку (формируется по тексту, но это неважно) в виде списка. При выборе из списка поместить выбранное значение в конец поля ввода и продолжить редактирование.

Какие есть трудности:
Использую событие АвтоПодборТекста, формирую список выбора. А дальше начинается веселье:
Если оставить все как есть, то выбранный текст замещает все в поле ввода и все выделяется (т.е. вводить дальше нельзя - нужно или щелкнуть мышью, или нажать End).
Если добавить событие ОбработкаВыбора, то при СтандартнаяОбработка = Ложь ничего не помещается (логично), а если сделать Реквизит = Реквизит + ВыбранноеЗначение (при установленном ОбновлениеТекстаРедактирования = ПриИзмененииЗначения) то он добавляется, но опять же выделяется вся строка, и комфортно дальше вводить текст невозможно.

Пробовал по разному использовать Элемент.УстановитьГраницыВыделения(), но желаемого результата добиться не удалось. Хотя кажется, что единственное решение кроется именно в том, чтобы использовать эту функцию в нужном месте и с нужными параметрами.
Пробовал событие ИзменениеТекстаРедактирования + ПоказатьВыборИзСписка - результат еще хуже (платформа вообще иногда крашится, при отказе от выбора из списка)

Есть идеи, как добиться такого поведения от поля ввода?
DevЗапросник на управляемых формах#48 05.09.14 16:14
Скажите, а это нормально, что при встраивании в конфигурацию появляется ошибка (при простом открытии все работает):

{Обработка.Запросник2_0.МодульОбъекта(197,64)}: Переменная не определена (ИспользуемоеИмяФайла)
ОбработкаВОЛЕ = мТекущееПодключение.ВнешниеОбработки.Создать(<<?>>ИспользуемоеИмяФайла); (Проверка: Сервер)
DevUbuntu Server + 1С 8.3 + PostgreSQL. COM-объект?#2 30.06.14 21:07
А вы собираетесь напрямую из скуля грузить? Не удобнее будет настроить обмен штатными средствами через XML? При беглом просмотре найти вменяемую информацию по ODBC драйверу для линя под MS SQL не получилось
DevПередача данных из 1С8 на сайт. (Без возможности изменения кода сайта)#2 05.04.14 2:55
Можно использовать POST и GET запросы
Например, чтобы найти в яндексе "1с" можно перейти по ссылке http://yandex.ru/yandsearch?lr=213&text=1%D1%81
GET запрос можно сделать с помощью объекта HTTPСоединение
DevСобытие "При (перед) установке пометки удаления"#1 13.03.14 17:16
Коллеги, возможно ли на клиенте (на сервере все ловится в модуле объекта в событии Перед записью), отловить момент установки пометки на удаление в динамическом списке (управляемые формы, естественно)?
Эксперимент показал, что срабатывает только событие "При изменении", да и то, уже после записи объекта в базу.

Был испробован вариант создать свою команду, и подменить ей стандартную, но проблема в том, что в горячую кнопку нельзя добавить del.
DevИнтерфейс УФ#2 23.01.14 16:48
В настройках информационной базы (запустите стартер 1с, выберите базу, нажмите изменить) на последней вкладке вместо низкой скорости соединения поставьте обычную.
DevВопрос по запросу#2 28.12.13 7:35
1) Проверьте, что попадает в Запрос.Параметры (действительно ли там ссылки и все верно)
2) Если в поле Комментарий есть другие символы, то надо использовать конструкцию ПОДОБНО "%ЧЕККП%". А еще ПОДОБНО - регистрозависимое условие.