gifts2017

Консоль Программиста 8.3 Управляемые формы тонкий/толстый клиент

Опубликовал Леха Безносиков (hmanubis) в раздел Программирование - Инструментарий

Обработка в помощь программисту - тестировщику. Консоль позволяет выполнять код 1с на встроенном языка, по сути является универсальной внешней обработкой

Обновление версия 0.5

1. Авто выделение текста запроса при вызове конструктора (как в конфигураторе) теперь не обязательно выделать текст запроса в ручную (пока багов не встречал в работе)

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


3. Добавлена процедура ДП - добавить в переменные (из кода можно добавлять в список переменных)

4. Добавлены новые полезные функции в список функций

5. Перевел диалоги на асинхронные вызовы (для интерфейса Такси) 

6. Вынес обработку вывода (функция ВТД()) выполняеться в конце, после выполнения всего кода, в процессе выполнения данные помещаються в буфер, потом выводяться, таким образом не время вывода не входит в показатели выполнения

 

Обновление версия 0.4

  1. Добавлена поддержка конструктора запросов для тонкого клиента для версии платформы 8.3.5 и выше (Для этого необходимо выделить текст запроса - правая кнопка мыши - конструктор запроса)
  2. Добавлен конструктор запроса с обработкой результата (только для создания)
  3. Заменил список выбора типа переменных на дерево (как в конфигураторе)
  4. Немного переработал интерфейс (всякие украшательства)
  5. Оптимизировал код / поправил выявленные ошибки
  6. Добавил дерево метаданных (Новая вкладка)
  7. Добавил поддержку типа "РезультатЗапроса" в функцию ВТД(Результат);
  8. Добавил возможность вывода Заголовка у таблицы Функция ВТД(ТЗ,Добавить = Ложь,Заголовок = Неопределено,СразуВРезультат = Истина) 

Обновление версия 0.3

  1. Добавлен простой редактор реквизитов для спавочников и документов (можно передавать из Переменных, кнопка "В редактор")
  2. Исправление мелких ошибок/недочетов

Обновление версия 0.2

  1. Добавлено функция добавления переменных из табличной части (Выделяем область в табличной части - правая кнопка мышки - добавить в переменные)
  2. Добавлен показатель времени выполнения (Спасибо за наводку gruk)
  3. Добавлены встроенные функции "НайтиСсылки(значение)" - находит ссылки на ссылочный объект и выводит данные в табличный документ
  4. Добавлены встроенные функции "МетаданныеВДерево(ОчищатьДерево = истина)" - в окно дерева выводит метаданные конфигурации
  5. Функци ВТД(ТЗ,Добавлять = Ложь) Теперь понимает Дерево значений, а также раскрашивает ссылочный тип
  6. Добавил подробное описание ошибки
  7. Немного причесал код

Еще объясню функционал: над деревом есть поле с "@@" так вот при перетаскивании из дерева в текст - выполняется подстановка в из шаблона

Где @@ - это полный путь от значения до корня дерева: Пример - "Док.ГрафикПлатежей" можно задать шаблон ВТД(@@.Выгрузить()); и получится строка ВТД(Док.ГрафикПлатежей.Выгрузить());

"Док.Контрагент.Код" - весть путь

Также есть ## - Корень ("Док")

и #@ - Весь путь без корня ("Контрагент.Код")

Например шаблон: ПолучитьЗначениеРеквизита(##,"#@");

Можно использовать на клиенте при получении реквизита: Строка "Док.Контрагент.Код" будет как ПолучитьЗначениеРеквизита(Док,"Контрагент.Код");


Вступление 

Часто приходилось проверить либо эмулировать ситуацию которая выполнялось в коде и посмотреть как она себя ведет и по чему так а не иначе, решил написать обработку помощник, куда вставляем код задаем переменные и значения и выполняем.

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

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

Возможности

  • 1. Добавление в список переменных для использования их в коде

  • 2. Раскладывать  переменные в дерево значений 

Переносим Drag&Drop из переменных в поле дерева и обратно

Также Drag&Drop в текст 

  • 3. Выводить данные в табличный документ (функция ВТД())

встроенная функция: ВТД(значение)

- ТаблицаЗначений, Массив,Массив Структур ,Структура,Соответствие

    • 4. Выполнение кода на сервере или клиенте (галочка над текстом выполнения)
    • 5. Сохранение наработок в файл
    • 6. Часто используемый список функции, которые заложены в обработке и не только, так же Drag&Drop


Скачать файлы

Наименование Файл Версия Размер
Консоль Программиста 311
.epf 61,87Kb
21.12.15
311
.epf 0.5 61,87Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Igor Erohin (postal222) 22.08.13 18:14
Попытался прочитать, втупил на первом же слове "Втупление". Люди, очень прошу, загоняйте текст в Word перед публикацией, это просто. И не наступите ногами в жир.
SeiOkami; Bukaska; +2 Ответить 4
2. Сергей Ожерельев (Поручик) 23.08.13 07:54
(0) (1) Только я один не втупил в описании?

Автор, исправьте, иначе поставлю минус.
3. Konstantin Konstantin (KonstB) 23.08.13 16:00
выполнить(ПП)
- уводит 1С в даун :)
4. Елена Пименова (Bukaska) 23.08.13 17:34
(1) postal222, (2) Поручик, (3) KonstB, Да вроде как поправили)))
5. Alex Stasyuk (GreenFox) 23.08.13 17:49
Идея своя или откудато взяли?
На Инфостарте было
http://infostart.ru/public/146648/
http://infostart.ru/public/60377/

За управляемые формы отдельное спасибо!
Буду посмотреть.
6. Леха Безносиков (hmanubis) 24.08.13 00:39
(0)(1) Благодарю за поправку =)
(5)
Идея своя или откудато взяли?

Идея своя, но перед выкладыванием были подозрения что уже кто-то такое сделал, поискал и наткнулся на эти же самые публикации, но они не на УФ, да и идея достаточно банальна, да и делал изначально для собственного удобства, но коллегам понравилось решение и я решил все таки вложить =)
7. Леха Безносиков (hmanubis) 26.08.13 11:15
(0)(1) Спасибо за поправку =)
(5)
Идея своя или откудато взяли?

Идея своя, но перед выкладыванием были подозрения что уже кто-то такое сделал, поискал и наткнулся на эти же самые публикации, но они не на УФ, да и идея достаточно банальна, да и делал изначально для собственного удобства, но коллегам понравилось решение и я решил все таки вложить =)
8. Роман Грук (gruk) 29.08.13 05:33
(0) Может добавить время выполнения кода? Было бы удобно для оптимизации циклов
9. Леха Безносиков (hmanubis) 29.08.13 21:29
(8) Да можно
Добавьте функцию в обработку:

Функция ПолучитьВремяВМиллисекундах()
Scr = Новый COMОбъект("MSScriptControl.ScriptControl");
Scr.Language = "javascript";
Возврат Scr.Eval("new Date().getTime()");
КонецФункции

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

Дата1 = ПолучитьВремяВМиллисекундах();
<выполняемый код>
Дата2 = ПолучитьВремяВМиллисекундах();
СС(Дата2 - Дата1); //Сообщить время выполнения
//ну или куда-то еще вывести например в
_ПолеВвода = Дата2 - Дата1;
10. Роман Грук (gruk) 30.08.13 03:58
(9) Я в своей примитивной консольке делал так

Перем Scr;

Процедура КнопкаВыполнитьНажатие(Кнопка)
	Код = ЭлементыФормы.ИсходныйКод.ПолучитьТекст();
	Попытка
		ВремяНачалаВыполнения = Scr.Eval("new Date().getTime()");
		Выполнить(Код);
		ЭтаФорма.Заголовок = "Консоль команд - Время выполнения "+(Scr.Eval("new Date().getTime()")-ВремяНачалаВыполнения)+" ms";
	Исключение
		Сообщить(ОписаниеОшибки(),СтатусСообщения.ОченьВажное);
	КонецПопытки;
КонецПроцедуры

Scr = Новый COMОбъект("MSScriptControl.ScriptControl"); 
Scr.Language = "javascript"; 
...Показать Скрыть

Так погрешность 0-1 мс, если использовать ПолучитьВремяВМиллисекундах() и каждый раз там создавать COM-объект, то погрешность будет 2-4 мс.
11. simargle (simargle) 03.09.13 07:06
Коллеги, с версии 8.2.17 появилась возможность использоваться функцию платформы "ТекущаяУниверсальнаяДатаВМиллисекундах()" - думаю в этом случае лучше использовать ее, нежели конструировать com-объект. Тем паче, что данное решение не универсально и будет работать только в windows-среде.
МимохожийОднако; Yakud3a; MoshkovEV; hmanubis; +4 Ответить
12. Ловыгин Антон (wunderland) 13.09.13 17:38
+ поставил, но описание скудновате... методом научного тыка, конечно, можно, но впечатление портит...
13. Виктор (vvirus) 29.10.13 07:34
при проверке

Обработка.КонсольПрограммиста.Форма.Форма.Форма Отсутствует обработчик: _ПолеВвода.Расширение "_ПолеВводаАвтоПодбор"
Обработка.КонсольПрограммиста.Форма.Форма.Форма Отсутствует обработчик: _Ссылки "_СсылкиПеретаскивание"
Обработка.КонсольПрограммиста.Форма.Форма.Форма Отсутствует обработчик: _Результат.Расширение "РезультатОбработкаРасшифровки"
Обработка.КонсольПрограммиста.Форма.Форма.Форма Отсутствует обработчик: _Ссылки "СсылкиПриАктивизацииСтроки"
14. Виктор (vvirus) 30.10.13 12:18
//"Свалил" 1с кодом
Запрос = новый запрос ("Выбрать * из справочник.Файлы");
ВТД(Запрос.Выполнить().Выгрузить());
15. Леха Безносиков (hmanubis) 30.10.13 14:32
(14) vvirus, Да не углядел косяк, для Таблицы значений в одной ячейке нету отображения. Спасибо!. Скоро выложу новую версию
16. Нина (нинас) 12.11.13 05:22
Будем ждать новой версии
17. Сергей Галюк (dj_serega) 24.12.15 15:28
18. Леха Безносиков (hmanubis) 24.12.15 16:21
(17) dj_serega, давно в ручную не писал) разучился))
19. Дмитрий Жиляков (Zhilyakovdr) 25.12.15 15:55
Добрый день!
Было бы не плохо иметь:
1) Ссылку(на форме) на адрес публикации;
2) Совместимость с сохраненными кодами от предыдущих версий обработки;
3) Подробную инструкцию в справке(все то что в описании).
Спасибо за полезный и удобный инструмент.
20. Леха Безносиков (hmanubis) 28.12.15 17:28
(19) Zhilyakovdr, Добрый день) Хорошо, постараюсь все учесть в следующем обновлении
По поводу пункта 2, вроде особо не менялось ничего. Возможно только с первой версией не совместимо, но я уже не помню что конкретно)
21. Дмитрий Жиляков (Zhilyakovdr) 11.01.16 17:26
(20) hmanubis, Спасибо, будем ждать
22. o2005 (o2005) 13.03.16 17:16
Скачал эту обработку, но в ней нет возможности выбрать тип "Таблица значений". Уточните пожалуйста, что я мог сделать не так.
23. Леха Безносиков (hmanubis) 14.03.16 13:25
(22) o2005, Добрый день. вроде не должно быть ни каких проблем, вопрос еще актуален? Если актуален, тогда давайте в личные сообщения разберемся в чем дело)
24. pallid *** (white_sochi) 09.04.16 00:42
{Форма.Форма.Форма(28)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода
Выполнить(ТекстВыполнения);
по причине:
{(5,1)}: Процедура или функция с указанным именем не определена (cc)
<<?>>cc(Текст);


В справке написано что должно работать

25. pallid *** (white_sochi) 09.04.16 00:44
Для чего поле "Текст"? Как его использовать? Я думал для заметок к коду, ан нет, оно не сохраняется в файл
26. Леха Безносиков (hmanubis) 10.04.16 10:56
(24) white_sochi, Должно работать) возможно в английской раскладке вводите? Надо в русской.
(25) white_sochi, Я его использовал для обработки текста.
Допустим разбор текстового файла (в коде можно вызвать Текст = ПолучитьТекст()) ,
или наоборот для вывода текстовой информации (процедура ВТекст(Строка)),
да оно не сохраняется, скорее всего в следующей версии сделаю сохраняемым это поле
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа