Консоль кода с поддержкой объявления процедур и функций, с дополнительными функциями отслеживания и вывода значений

13.10.24

Разработка - Инструментарий разработчика

В статье представлено решение давней проблемы всех консолей кода, это невозможность объявлять в них процедуры и функции, а также использование метода Возврат для раннего выхода из исполняемого кода. Также затронута тема вывода результатов работы исполняемого кода, что зачастую ограничено функцией Сообщить. Попутно приводится моё видение того, как должно выглядеть и работать дерево объектов конфигурации в консоли запросов. Обработки подходят для всех конфигураций, работающих в управляемых формах 1С версии 8.3.15 и выше (тестировалось в ЗУП 3.1, ERP 2.5, БП 3.0, УНФ 3.0).

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Консоль кода с поддержкой объявления процедур и функций
.epf 66,25Kb
114
114 Скачать (1 SM) Купить за 1 850 руб.
Консоль запросов с деревом объектов
.epf 83,91Kb
68
68 Скачать (1 SM) Купить за 1 850 руб.

Конечно же, я видел навороченные консоли кода и консоли запросов с подсветкой и подсказками, но в практической деятельности они у меня не прижились по следующим причинам:

1. для консоли кода:

- вывод результата только через Сообщить

2. для консоли запросов:

- неудобный ввод запроса, но это субъективно, просто я не люблю пользоваться конструктором запросов;

- слабые генераторы кода обработки, но, возможно, я не все видел.

Поэтому на протяжении нескольких лет потихоньку дорабатывал стандартные консоли, добавляя свои фишки, пока не получился концептуальный блэк-джек достойный внимания. 

Представляю вам свою версию консоли кода.

Основные фишки:

- поддержка объявления процедур и функций, в том числе поддерживается рекурсия и ранние выходы из функций, объявление клиентских и серверных функций;

- минимальная поддержка макросов (замена кода, подключение внешнего файла);

- задание параметров для выполняемого кода;

- задание выражений для отслеживания результатов;

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

 

 

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

Запускать код можно как на клиенте, так и на сервере -> кнопка-переключатель на панели.


Параметры кода

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

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


Отслеживание переменных

Отслеживание переменных работает подобно пункту "Вычислить выражение" в конфигураторе, пишем любое выражение или имя переменной и после выполнения основного кода скрипта, вычисляется выражение отслеживания, даже если основной код вылетел с ошибкой.

Отслеживание можно использовать даже без основного кода, например, записать в выражение текст "Новый УникальныйИдентификатор".

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


Вывод результатов

Для вывода результатов на форме созданы 2 постоянных реквизита:

- Результат_Текст -- текстовое поле, выводим в него так: Результат_Текст = "Любой текст"

- Результат_ТабДокумент -- табличный документ, в него выводим, как в обычный табличный документ, либо функцией РезультатВТабДокумент.

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

- Вывести(ЗначениеДляВывода, ИмяТЗ = 1, ВывестиНомерСтроки = Ложь)

ЗначениеДляВывода - произвольное значение.  Допустимые типы: универсальные коллекции (таблица значений, дерево, массив, структура и др.), результат запроса, выборка, менеджер временных таблиц, строка ТЧ.

ИмяТЗ - число или строка (строка должна подходить для создания имени реквизита, т.е. нет пробелов, точек и т.п.)

ВывестиНомерСтроки - вывести номер строки в отдельном столбце

Выводит значение в отдельную страницу в группе Результат.

- ВывестиТипыКолонок(ТЗ, ИмяТЗ = 1, ВывестиНомерСтроки = Ложь)

ТЗ - объект для вывода

ИмяТЗ - число или строка (строка должна подходить для создания имени реквизита, т.е. нет пробелов, точек и т.п.)

ВывестиНомерСтроки - вывести номер строки в отдельном столбце

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


Вспомогательные функции

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

- ТЗвДерево(ТЗ, КолонкиИерархии, КолонкиДляВывода = Неопределено)

ТЗ - таблица значений

КолонкиИерархии - строка, список имен колонок через запятую для группировки строк и построения иерархии.

КолонкиДляВывода - строка, список имен колонок для вывода. Неопределено - все колонки, кроме иерархии, "" - только иерархия,

"*" - все колонки, включая иерархию. Можно использовать формат "ИмяКолонки КАК НовоеИмяКолонки" для переименования колонок дерева.

Преобразует таблицу значений в дерево значений, возвращает дерево значений.

В параметры КолонкиИерархии, КолонкиДляВывода можно передавать не только названия колонок ТЗ, но и переходить от значений к их реквизитам, например, "Номенклатура.ЕдиницаИзмерения". Также можно передать условие, и данные будут сгруппированы по этому условию ("Цена > 100").

 

 

Обратная функция создает из дерева таблицу значений, была создана для эксперимента, но возможно кто-то найдет ей достойное применение.

ДеревоВТЗ(Дерево, КолонкаИерархии = Неопределено, ПоляИерархии = Неопределено)

Дерево - дерево для преобразования

КолонкаИерархии - имя колонки иерархии, по-умолчанию используется первая колонка

ПоляИерархии - строка, список имен колонок через запятую для распределения значений иерархии. Каждый уровень иерархии помещается в соответствующую колонку, если поле не задано, то создается новая колонка с имененем "Уровень_" + СтрокаДерева.Уровень().

Преобразует дерево значений в таблицу значений, возвращает таблицу значений.

Для сохранения таблиц, созданных функцией Вывести, можно использовать пункт меню Результаты >> Сохранить, либо функции ТЗвТабДокумент и РезультатВТабДокумент.

ТЗвТабДокумент(ТЗ, Заголовок = Неопределено)

ТЗ - таблица значений

Заголовок - заголовок для таблицы, если не задан, то заголовок не выводится

Создает новый табличный документ и выводит в него таблицу значений. Возвращает табличный документ.

Пример: Результат_ТабДокумент = ТЗвТабДокумент(Запрос.Выполнить().Выгрузить(), "Результат запроса");

РезультатВТабДокумент(ИмяТЗ = Неопределено)

ИмяТЗ - имя ТЗ, которое использовалось для вывода результата. Если не задано, будут выведены все результаты.

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

Пример: 

Вывести(ТЗ, "ИмяТЗ", Истина);

Результат_ТабДокумент = РезультатВТабДокумент("ИмяТЗ");


Объявление процедур и функций

Разбор кода построен на парсере bsparser (https://github.com/lead-tools/bsparser), огромная благодарность автору.

Как это работает лучше смотреть в исходном коде.

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

Параметры метода переименуются по шаблону НовоеИмяПараметра = "п" + НомерПараметра, в коде они также заменяются на новое имя.

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

Текст всех методов обрабатывается после обработки объявлений методов, это позволяет использовать рекурсию.

Существующие ограничения:

- вспомогательные функции принимают только 10 параметров, если нужно больше можно добавить в коде формы;

- директива &НаКлиенте ожидается сразу перед объявлением метода, если до этого будут комментарии, то метод будет определен как серверный;

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

 

Пример чтения XML и вывод его в дерево значений

 

Пример использования парсера


Макросы

Все макросы начинаются с "//#Макро" и должны располагаться в начале строки.

Макросы выполняются до разбора текста на методы.

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

Макрос действует только на текст, расположенный ниже его объявления.
 

//#МакроЗамена ИсходныйТекст -> ЗамещающийТекст

Заменяет в коде исходный текст на замещающий текст.

пример: //#МакроЗамена Запрос.Выполнить(); -> ВыполнитьСТрассировкой(Запрос, Замеры);

Можно использовать для подмены функций модуля, например для внедрения замеров или склейки текста запросов.


//#МакроПодключить ИмяФайлаНаКлиенте

Вставляет содержимое указанного файла в код для исполнения.

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

Если подключаемый файл подключает себя снова, то будет бесконечный цикл.

пример: //#МакроПодключить C:\Temp\Имя файла на клиенте.txt

 

Обновление от 17.09.2024:

1. Добавлена возможность передавать параметры по значению и указывать значения по-умолчанию в определении функции.
Например, Процедура ИмяПроцедуры(ПараметрПоСсылке, Знач ПараметрПоЗначению, ДругойПараметр = 123).

2. В таблицу параметров добавлена галочка Выр (Использовать выражение), теперь можно в качестве значения параметра использовать выражение.
Например: ТекущаяДата(). Или можно в выражении обратиться к предыдущим параметрам, например:
Ссылка -> документ
Дата -> Ссылка.Дата
Момент -> Новый МоментВремени(Дата, Ссылка)

3. Функция ВывестиТипыКолонок теперь может выводить типы колонок временных таблиц из объекта МенеджерВременныхТаблиц.

4. Функция Вывести:
- немного улучшен вывод структур и соответствий, теперь они выводятся в дерево;
- добавлен вывод объекта Запрос (текст, параметры, виртуальные таблицы из менеджера временных таблиц и их колонки, для поля значение колонок выбрано первое значение из виртуальной таблицы)

5. Добавлена функция СоздатьТЗ, в ней можно указать список необходимых колонок с их типами.
Пример:
ТЗ = СоздатьТЗ("КолонкаБезТипа, Валюта (СправочникСсылка.Валюты), Признак (Булево|Строка 50|Число 10.2), Описание (Строка 100), Сумма (Число 11.3), ЦенаНеотрицательная (Число +5.0)");

6. Немного улучшены сообщения об ошибках, теперь при ошибке в объявленном методе будет выведено его имя и строка с ошибкой.


Консоль запросов

Ну и попутно консоль запросов, её фишки:

- дерево объектов с возможностью бесконечно проваливаться в типы реквизитов, плюс виртуальные реквизиты Движения и СсылкиНаОбъект (места использования типа);

- генератор кода для обработки результата запроса, и естественно кнопка для переноса этого кода в консоль кода.

Дерево объектов получилось настолько удобным, что я зачастую смотрю структуру объектов не в конфигураторе, а именно в консоли. Для дерева объектов поддерживается перетаскивание объектов в код запроса, значения перечислений вставляются со словом ЗНАЧЕНИЕ, для ссылочных типов анализируется контекст и либо вставляется путь "Справочник.Организации", либо если есть сравнение перед местом вставки вставляется ссылка "= ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)".

В контекстном меню расположены команды:

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

- открытия форм списка, выбора и остальных по имени;

- вставки предопределенного значения справочника.

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

Если в коде запроса поставить курсор в текст с именем объекта дерева (либо выделить нужный текст), например ТоварыНаСкладах, то через контекстное меню можно найти этот объект в дереве.

Повторный поиск будет пытаться искать одноименные объекты ниже.

 



Генератор кода создает код для обработки в цикле либо таблице, возможно создание кода для обхода иерархии.

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

Если выделить пару строк запроса и нажать кнопку "Добавить условие", то будет создано обрамление этих строк условием, например:

 

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|	Т.Ссылка КАК Ссылка,
|" + ?(условие, "
|	Т.ПометкаУдаления КАК ПометкаУдаления,
|	Т.Код КАК Код,
|", "") + "
|	Т.Наименование КАК Наименование,
|	Т.Префикс КАК Префикс,
|	Т.ИНН КАК ИНН,
|	Т.КПП КАК КПП
|ИЗ
|	Справочник.Организации КАК Т";


Обновление от 17.09.2024:

1. Улучшена генерация кода для обработки запроса.

2. Убрана возможность работать с несколькими запросами в одном экземпляре обработки.

 

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

Проверено на следующих конфигурациях и релизах:

  • Зарплата и управление персоналом, редакция 3.1, релизы 3.1.30.57

консоль кода поддержка объявления процедур и функций консоль запросов дерево объектов конфигурации

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159627    875    399    

862

SALE! 15%

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7847    58    23    

69

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    23481    68    45    

117

SALE! 15%

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 8500 руб.

10.11.2023    10457    36    25    

61

SALE! 15%

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

22200 19980 руб.

06.10.2023    15421    35    7    

70

SALE! 35%

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

4800 3120 руб.

14.01.2013    188035    1140    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17315    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7714    8    35    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. leosoft 166 24.05.23 14:05 Сейчас в теме
Очень интересные обработки! Спасибо!
2. Serg2000mr 683 26.05.23 08:17 Сейчас в теме
Помимо всего интересного и полезного очень понравилось, как реализованы настройки ))
Прикрепленные файлы:
3. JohnyDeath 302 26.05.23 10:29 Сейчас в теме
А если прикрутить https://github.com/salexdv/bsl_console , то будет вообще красота!
4. acces969 362 26.05.23 11:22 Сейчас в теме
Сам себе такую сделал много лет назад, будучи еще джуном. По частоте использования обработка обходит консоль запросов.
Все хотел ее причесать и выложить к остальным своим инструментам на инфостарт, да не успел))
Прикрепленные файлы:
5. o.nikolaev 216 26.05.23 12:00 Сейчас в теме
6. v8_088 26.05.23 12:53 Сейчас в теме
Правильное видение дерева объектов. То, что надо для программиста, а не для конструктора метаданных.
Спасибо. В свойствах текста можно включить "встроенный язык". В цвете код поприятней смотреть.
7. tormozit 7230 26.05.23 15:14 Сейчас в теме
(6) Подскажи как это сделать
10. v8_088 26.05.23 16:42 Сейчас в теме
(7) я про эту плюшку
Прикрепленные файлы:
ixijixi; tormozit; Evg-Lylyk; +3 Ответить
12. Sashares 35 26.05.23 17:00 Сейчас в теме
(10) 8.3.21.1624. У меня таких опций нет в текстовом документе. Что я делаю не так?
Прикрепленные файлы:
15. v8_088 26.05.23 17:04 Сейчас в теме
43. kalyaka 1105 05.05.24 21:11 Сейчас в теме
(10) а что за обработка на экране? По скрину создается, похоже ложное ощущение, что в платформе есть команда определить содержимое текстового документа как текст на встроенном языке.
44. tormozit 7230 06.05.24 07:38 Сейчас в теме
(43) В любом поле текстового документа это возможно в толстом клиенте. Так что ложное это ощущение только для тонкого клиента.
17. RocKeR_13 1366 26.05.23 17:18 Сейчас в теме
(7) Увы, эта галка доступна только в толстом клиенте... Не посмотрел комментарии до конца, уже написали)
Прикрепленные файлы:
8. Serg2000mr 683 26.05.23 16:15 Сейчас в теме
(6)
В цвете код поприятней смотреть

Мне вот наоборот кажется, что для консоли кода цвет не особо-то и нужен. Код там не более, чем на час, и все в памяти.

Вот шаблоны использовать было бы удобно.
13. пользователь 26.05.23 17:01
Сообщение было скрыто модератором.
...
18. пользователь 26.05.23 17:24
Сообщение было скрыто модератором.
...
9. Serg2000mr 683 26.05.23 16:21 Сейчас в теме
Долгожданные процедуры и функции реализованы, остались точки останова и просмотр объектов со всеми подчиненными.
11. Evg-Lylyk 4842 26.05.23 16:50 Сейчас в теме
(10) Круто! Не знал что так можно, встроенный язык и язык запросов работает только в толстом клиенте, только непонятно как в конфигураторе заранее это назначить для поля.
14. Evg-Lylyk 4842 26.05.23 17:02 Сейчас в теме
(12) Попробуй, запустить в режиме толстого клиента
16. Sashares 35 26.05.23 17:04 Сейчас в теме
(14)Да, в толстом есть, спасибо!
19. Serg2000mr 683 26.05.23 20:19 Сейчас в теме
(0) Как идея - код функций можно было не парсить, а упаковывать в модуль внешней обработки и запускать оттуда. Это бы решило и проблему с производительностью.
21. Lars Ulrich 625 29.05.23 21:07 Сейчас в теме
(19) вуаля
Прикрепленные файлы:
22. JohnyDeath 302 29.05.23 21:25 Сейчас в теме
(19) упаковать во внешнюю обработку разовый код ради производительности?
Звучит странновато ....
А сама упаковка во внешнюю сколько занимает?
И сколько в итоге сэкономили?
23. Serg2000mr 683 29.05.23 21:28 Сейчас в теме
(22) Упаковка меньше секунды. Сколько удастся сэкономить, зависит от задачи. Тут, правда есть ограничение, что так можно выполнить только серверную процедуру.
24. nikolav 51 30.05.23 08:32 Сейчас в теме
(21)(23) Напишите пожалуйста, как упаковать код в модуль внешней обработки программно, т.к. изначально тоже хотел пойти этим путем. Для упаковки будет нужен доступ к конфигуратору и будет ли это работать на клиент-серверной базе? Будет ли просить подтверждение на подключение внешней обработки?
(22) Проблема производительности действительно немного преувеличена, в реальной работе наткнулся только 1 раз, когда загружал справочник из Excel, да и то оказалось, что нужно дописать "ОбменДанными.Загрузка = Истина". Для разового кода достаточно текущей производительности, часто используемые функции можно перенести в модуль.
JohnyDeath; +1 Ответить
26. tormozit 7230 30.05.23 08:34 Сейчас в теме
(24) ирОбщий.ОбновитьМодульВнешнейОбработкиДляОтладкиЛкс()
27. Serg2000mr 683 30.05.23 09:00 Сейчас в теме
(24) Я через v8unpack делал
Код переупаковки

Доступ к конфигуратору не нужен, на клиент-сервере работает и подтверждений не запрашивает. Все невидимо глазу происходит.
34. Lars Ulrich 625 30.05.23 11:22 Сейчас в теме
(24) в дополнение к способам выше, можно хардкорно (для windows):
- создаете новую "пустую" обработку как шаблон и выгружаете в файлы; для автоматизации процесса сборки можно сложить все файлы в zip и положить в макет;
- в составе файлов выгруженной обработки будет:
- ВашаОбработка.xml - "корневой" файл с описанием объекта метаданных
- Ext\ObjectModule.bsl - это и есть файл-источник модуля объекта, в который нужно будет помещать код перед сборкой;
- для сборки можно:
- создать отдельную пустую базу во временном каталоге: 1cv8.exe CREATEINFOBASE File="КаталогБазы"
- с помощью созданной пустой базы собрать обработку: 1cv8.exe DESIGNER /F КаталогБазы /LoadExternalDataProcessorOrReportFromFiles ВашаОбработка.xml СобраннаяОбработка.epf /Out ЛогНаВсякийСлучай.txt /DisableStartUpMessages
35. tormozit 7230 30.05.23 11:48 Сейчас в теме
(34) Способ рабочий, но очень долгий и требует клиентскую лицензию на компьютере выполнения.
20. triviumfan 97 29.05.23 17:24 Сейчас в теме
А перехват запросов и параметров из отладки имеется? В упор не вижу, а консоль без этого функционала уже не торт =\
25. nikolav 51 30.05.23 08:34 Сейчас в теме
28. nikolav 51 30.05.23 09:05 Сейчас в теме
(26)(27) Спасибо, посмотрел. Выгрузка в файлы через конфигуратор с последующей коррекцией кода модуля или распаковка / упаковка сторонней утилитой накладывает достаточно много ограничений. Сценарий "отправил обработку и скрипт клиенту" уже не прокатит.
29. Serg2000mr 683 30.05.23 09:06 Сейчас в теме
(28) Можете YellowPacker использовать https://infostart.ru/public/1546726/ Там никаких внешних утилит.
30. JohnyDeath 302 30.05.23 10:12 Сейчас в теме
(29) зачем вообще эти телодвижения с внешней обработкой? Какой выигрыш?
Тем более, что в консоли обычно разовые операции производятся
31. tormozit 7230 30.05.23 10:13 Сейчас в теме
(30) Там можно отладить код. А наличие методов подразумевает что код уже непростой.
33. Serg2000mr 683 30.05.23 10:21 Сейчас в теме
(31) Сейчас как раз думаю над возможностью отладки в консоли кода. Для этого нужно возможность получения всех свойств объекта. Не знаете, можно ли по адресу переменной объекта в памяти получить такой список?
32. Serg2000mr 683 30.05.23 10:15 Сейчас в теме
(30) Автор сам затронул тему производительности в статье. Но как правило да, в консоли максимальная скорость не нужна.
36. nikolav 51 30.05.23 12:53 Сейчас в теме
(32) Автор уже пожалел об этом)) Но если бы не затронул, то уже запинали бы, что не оптимально.
37. artbear 1563 30.05.23 16:14 Сейчас в теме
Не увидел ни одного скриншота с объявлением процедур и функций, с Возврат-ами также нет скриншотов.
38. nikolav 51 03.06.23 12:41 Сейчас в теме
(37) Сделал скриншот. Приведен код открытия доп. отчета, выполняется на клиенте, объявлена серверная функция, в основном коде есть досрочный возврат по её результатам.
Прикрепленные файлы:
39. reset50 09.07.23 13:20 Сейчас в теме
Скачал обработки. При проверке консоли кода все процедуры выполняются на Клиенте. На сервере выдает ошибку. Закрыть крестиком не получается, тоже ошибка. Консоль запросов выглядит интересно.
40. nikolav 51 10.07.23 07:09 Сейчас в теме
(39) Вы первый с такой проблемой. Напишите подробно какая именно ошибка в какой строчке возникает, и какой код выполняете; попробуйте выполнить что-нибудь совсем примитивное вроде "Сообщить(2+2);". Закрыть может не получаться из-за того, что обработка предлагает сохранить код в файл, убедитесь что у вас это окно не возникает где-нибудь на втором мониторе или может прячется. И еще, удалите или отключите все отслеживания переменных, возможно в них используется какая-то несуществующая переменная, это тоже может помешать выполнению.
41. Serg2000mr 683 03.08.23 01:07 Сейчас в теме
Хотелось бы еще видеть в окне "Отслеживание переменных" не Массив и Структура. А разворачиваемое дерево массива и структуры
МассивЭлементов
L 1
L 2
L ...
L N

Иначе все опять возвращается к написанию циклов и Сообщить.
42. nikolav 51 08.08.23 15:04 Сейчас в теме
(41) Идея хорошая, когда-нибудь будет. Сейчас можно использовать функцию Вывести, она покажет содержимое структуры или массива, пока к сожалению не в дереве, а только в таблице.
45. Светлый ум 416 10.07.24 06:14 Сейчас в теме
46. altar 234 13.09.24 18:07 Сейчас в теме
Оставьте свое сообщение