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





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

Обновление, версия 0.7

-Когда добавляем в переменные параметры из запроса (кнопка "Найти параметры") в буфер обмена заполняется текст с установкой этих параметров. Достаточно потом в тексте сделать Ctrl+V

-Добавил конструктор форматной строки (в тексте правой кнопкой — "Форматная строка") если выделить форматную строку то откроется со значением, если не выделено то попытается выделить сам и вызвать конструктор

-"Обернуть" в форматную строку выделяем кусок текста (например "ЗначениеДата") и вызываем "Обернуть в формат строку" — получаем Формат(ЗначениеДата,"ДФ=’dd.MM.yyyy’")

-Пофисил вызов конструктора запроса если в нем были строки с комментариями (Также как и в конфигураторе после изменения запроса комментарии пропадут)

-В редакторе (вторая вкладка) ссылок теперь можно редактировать Табличные Части (по строке с именем табличной части 2 клика — и откроется конструктор таблицы)

-Ну и по мелочи всякие штуки, в табличном документе запоминает ширину колонок (можно отключить галочкой "не запоминать ширину"), расширил список типов в переменных, при выводе ВТД если в 1 ячейку попадет таблица значений ее можно двойным кликом открыть, если в переменной ссылочный тип (даже пустая ссылка) можно через правую кнопку вызвать форму списка, и т.д. возможно что то забыл указать.

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

-Пофиксил всплывающие баги

-Оптимизировал раскладку в дерево значений, теперь она идет поэтапно по нажатию на "+"

-Под переменными добавил поле для быстрого ввода пустой ссылки (если ввести "Док Спис с рас" — найдет по имени в метаданных или по синониму, при нажатии на Enter — добавить в переменные пустую ссылку)

-Добавил печать штрихкода 

 ш = ШК(Штрихкод,ТипКода = 1,Ширина = 800,Высота = 250,РазмерШрифта = 28,ОтображатьТекст = ИСТИНА,ПрозрачныйФон = ИСТИНА,УголПоворота = 0)

 Возвращает картинку, ее можно вывести в ВТД(ш);

-Добавил вкладку с фоновыми заданиями (Типовая больно долго работает решил сделать для себя)

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

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

-Если нажать правой кнопкой по запросу и выбрать "найти параметры" — добавит в переменные найденные параметры

-Добавить "выполнить выделенное" в тексте выделяем нужный кусок кода — правая кнопка "Выполнить выделенное"

Обновление версия 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
  •  

 

58 Comments

  1. postal222

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

    Reply
  2. Поручик

    (0) (1) Только я один не втупил в описании?

    Автор, исправьте, иначе поставлю минус.

    Reply
  3. KonstB
    выполнить(ПП)

    — уводит 1С в даун 🙂

    Reply
  4. Bukaska

    (1) postal222, (2) Поручик, (3) KonstB, Да вроде как поправили)))

    Reply
  5. GreenFox

    Идея своя или откудато взяли?

    На Инфостарте было

    http://infostart.ru/public/146648/

    http://infostart.ru/public/60377/

    За управляемые формы отдельное спасибо!

    Буду посмотреть.

    Reply
  6. hmanubis

    (0)(1) Благодарю за поправку =)

    (5)

    Идея своя или откудато взяли?

    Идея своя, но перед выкладыванием были подозрения что уже кто-то такое сделал, поискал и наткнулся на эти же самые публикации, но они не на УФ, да и идея достаточно банальна, да и делал изначально для собственного удобства, но коллегам понравилось решение и я решил все таки вложить =)

    Reply
  7. hmanubis

    (0)(1) Спасибо за поправку =)

    (5)

    Идея своя или откудато взяли?

    Идея своя, но перед выкладыванием были подозрения что уже кто-то такое сделал, поискал и наткнулся на эти же самые публикации, но они не на УФ, да и идея достаточно банальна, да и делал изначально для собственного удобства, но коллегам понравилось решение и я решил все таки вложить =)

    Reply
  8. gruk

    (0) Может добавить время выполнения кода? Было бы удобно для оптимизации циклов

    Reply
  9. hmanubis

    (8) Да можно

    Добавьте функцию в обработку:

    Функция ПолучитьВремяВМиллисекундах()

    Scr = Новый COMОбъект(«MSScriptControl.ScriptControl»);

    Scr.Language = «javascript»;

    Возврат Scr.Eval(«new Date().getTime()»);

    КонецФункции

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

    Дата1 = ПолучитьВремяВМиллисекундах();

    <выполняемый код>

    Дата2 = ПолучитьВремяВМиллисекундах();

    СС(Дата2 — Дата1); //Сообщить время выполнения

    //ну или куда-то еще вывести например в

    _ПолеВвода = Дата2 — Дата1;

    Reply
  10. gruk

    (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 мс.

    Reply
  11. simargle

    Коллеги, с версии 8.2.17 появилась возможность использоваться функцию платформы «ТекущаяУниверсальнаяДатаВМиллисекундах()» — думаю в этом случае лучше использовать ее, нежели конструировать com-объект. Тем паче, что данное решение не универсально и будет работать только в windows-среде.

    Reply
  12. wunderland

    + поставил, но описание скудновате… методом научного тыка, конечно, можно, но впечатление портит…

    Reply
  13. vvirus

    при проверке

    Обработка.КонсольПрограммиста.Форма.Форма.Форма Отсутствует обработчик: _ПолеВвода.Расширение «_ПолеВводаАвтоПодбор»

    Обработка.КонсольПрограммиста.Форма.Форма.Форма Отсутствует обработчик: _Ссылки «_СсылкиПеретаскивание»

    Обработка.КонсольПрограммиста.Форма.Форма.Форма Отсутствует обработчик: _Результат.Расширение «РезультатОбработкаРасшифровки»

    Обработка.КонсольПрограммиста.Форма.Форма.Форма Отсутствует обработчик: _Ссылки «СсылкиПриАктивизацииСтроки»

    Reply
  14. vvirus

    //»Свалил» 1с кодом

    Запрос = новый запрос («Выбрать * из справочник.Файлы»);

    ВТД(Запрос.Выполнить().Выгрузить());

    Reply
  15. hmanubis

    (14) vvirus, Да не углядел косяк, для Таблицы значений в одной ячейке нету отображения. Спасибо!. Скоро выложу новую версию

    Reply
  16. нинас

    Будем ждать новой версии

    Reply
  17. dj_serega

    «Колопки» =)

    Reply
  18. hmanubis

    (17) dj_serega, давно в ручную не писал) разучился))

    Reply
  19. Zhilyakovdr

    Добрый день!

    Было бы не плохо иметь:

    1) Ссылку(на форме) на адрес публикации;

    2) Совместимость с сохраненными кодами от предыдущих версий обработки;

    3) Подробную инструкцию в справке(все то что в описании).

    Спасибо за полезный и удобный инструмент.

    Reply
  20. hmanubis

    (19) Zhilyakovdr, Добрый день) Хорошо, постараюсь все учесть в следующем обновлении

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

    Reply
  21. Zhilyakovdr

    (20) Спасибо, будем ждать

    Reply
  22. o2005

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

    Reply
  23. hmanubis

    (22) o2005, Добрый день. вроде не должно быть ни каких проблем, вопрос еще актуален? Если актуален, тогда давайте в личные сообщения разберемся в чем дело)

    Reply
  24. pallid
    {Форма.Форма.Форма(28)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода

    Выполнить(ТекстВыполнения);

    по причине:

    {(5,1)}: Процедура или функция с указанным именем не определена (cc)

    <<?>>cc(Текст);

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

    Reply
  25. pallid

    Для чего поле «Текст»? Как его использовать? Я думал для заметок к коду, ан нет, оно не сохраняется в файл

    Reply
  26. hmanubis

    (24) white_sochi, Должно работать) возможно в английской раскладке вводите? Надо в русской.

    (25) white_sochi, Я его использовал для обработки текста.

    Допустим разбор текстового файла (в коде можно вызвать Текст = ПолучитьТекст()) ,

    или наоборот для вывода текстовой информации (процедура ВТекст(Строка)),

    да оно не сохраняется, скорее всего в следующей версии сделаю сохраняемым это поле

    Reply
  27. Vovanches

    Неплохая штука получилась, буду пользоваться.

    Замечание: в переменных нет типа данных для планов обмена в частности (и вообще не все типы представлены).

    И таки не плохо бы инструкцию. Как минмимум по всяким неочевидным приемам.

    PS.За процедуру Забубенить() — отдельный плюсик :).

    Reply
  28. Misha_J

    Че-то у меня при попытке зайти в Конструктор запроса вываливается ошибка:

    {(1)}: Ошибка при вызове конструктора (КонструкторЗапроса)

    к = Новый КонструкторЗапроса(Текст);

    по причине:

    {(1, 1)}: Ожидается выражение «ВЫБРАТЬ»

    ??

    Reply
  29. hmanubis

    (28) Добрый день! Да была такая ошибка, выложил новую версию в ней она поправлена

    Reply
  30. starik-2005

    (29)

    была такая ошибка

    Это проблема открытия конструктора с пустым запросом (пустая строка запроса в конструкторе) в толстом клиенте (управляемое приложение). В тонком клиенте конструктор открывается без проблем.

    Reply
  31. hmanubis

    (30) Вот оно что) Спасибо. Доработал и этот момент

    Reply
  32. b-dm

    Для обычных форм планируется ? Или может быть есть аналог ?

    Reply
  33. the1
  34. hmanubis

    (32) Если честно, делал для себя, и т.к. с обычными формами уже лет 100 не работал, думаю врятли буду делать.

    Аналоги есть для обычных форм, вот например, сам правда не пользовался

    http://infostart.ru/public/146648/

    http://infostart.ru/public/60377/

    Reply
  35. nomadon

    +1 за применение стольких усилий к переводу ИР мобильных в управляемые формы

    Reply
  36. the1

    (9) на х64 упадет в исключение

    Reply
  37. nestokay

    Очень классная штука, спасибо.

    Reply
  38. Tolpinski

    Все супер, за исключением запросов.

    Не воспринимает запрос если часть строк под комментарием.

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

    Ну и авто сохранение бы не помешало.

    Reply
  39. seregasame

    Спасибо, полезная штука, часто используем в работе!

    Единственное чего не хватает — на вкладке «Редактор» возможности редактировать таб части объектов, в коде нашел закомментированную часть про табличные части, видимо что то не получилось там допилить?

    Reply
  40. hmanubis

    (39) Уже получилось), все никак руки не дойдут выложить свежую версию, постараюсь на недельке

    Reply
  41. pvlunegov

    Автору большое пожелание убрать из кода функции типа

    СтрРазделить

    СтрШаблон

    СтрНайти

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

    Вот почитайте https://infostart.ru/public/366865/

    Большая просьба, в коде заменить эти функции на аналоги.

    В конфигурациях, без режима совместимости, все запускается и работает.

    Еще огромная просьба добавить обычную форму, не управляемую

    Тогда вашу обработка будет вообще огонь!

    Заранее спасибо!

    Reply
  42. pvlunegov

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

    заменил их на аналоги.

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

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

    Reply
  43. hmanubis

    (41) об этом то я и не подумал) Спасибо, учту. Обычную форму добавлять не планирую, уж извините но по работе с ними не сталкивался уже очень давно, да и хватает на инфостарте таких обработок под обычные формы.

    Reply
  44. hmanubis

    (42) Файл взял, просьба удалить его) сегодня постараюсь обновить

    Reply
  45. pvlunegov

    Добрый день! Пытался удалить свой комментарий с файлом — не могу — не дает!

    Reply
  46. pvlunegov

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

    У вас запуск кода сделан через оператор Выполнить(КусокКода). У всем известной разработки «Инструменты разработчика» сделано так-же.

    Таким способом не получится выполнить кусок кода с объявлением функций.

    Пробовал распарсивать код операторами Перейти ~Метка — не получается.

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

    Что думаете? как это дело реализовать?

    Reply
  47. hmanubis

    (45) А изменить дает? мб просто ссылку убрать на файл?

    Reply
  48. hmanubis

    (46) я тоже в эту сторону думал, в своей консоли сделал так, в переменные можно добавить тип «функция», реализовал так: перед выполнением кода в тексте выполняется замена описанной функции на Вып(ИмяФункции), этого не описывал т.к. еще плохо отлажена, а так можно пользоваться.

    Да лучше вызывать такие функции в одну строчку

    Reply
  49. pvlunegov

    (48) написал в службу поддержки, ссылку на файл из моего коммента удалили, спасибо им…

    Reply
  50. pvlunegov

    (47) я хочу вашу разработку развить.

    Уже очень давно мне нужна подобная вещь, как у вас, но нужно отлаживать куски кода с функциями.

    Мыслю так:

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

    2. Если язык интерпретируемый (например 1с) то перед запуском кода происходит автоматическая компиляция кода на встроенном языке в исполняемый код и запуск исполняемого кода

    3. Если язык компилируемый (С++) то перед запуском происходит компиляция встроенного кода в исполняемый, в случае С++ в двоичный код, при запуске происходит прямое исполнение скомпилированного кода.

    4. Если программист желает написать свой компилятор (я это и желаю, раз других вариантов нет), значит смотри п. 2-3

    5. Если мы хотим исполнять код 1с с функциями, мы должны написать парсер, обладающий свойствами 2 или 3.

    6. Код функций должен вырезаться из исполняемого кода и вставляться в места вызова функций с вставленными значениями параметров — в этом суть компиляции.

    Осталось по п. 1-6 написать компилятор. Задача ясна и посильна средствами 1с.

    Reply
  51. hmanubis

    (50) А чем вот такой вариант не подходит? Возможно плохо объяснил)

    Reply
  52. pvlunegov

    (51) это не очевидно, особенно визуально, костыльно.

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

    Код может включать описания функций.

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

    Это по сути интерпретатор. Но он необходим для работы механизма.

    Reply
  53. pvlunegov

    Ваша обработка, после моей доработки напильником, запускается в толстом клиенте в НЕуправляемом режиме. Все ок.

    Но когда мы пытаемся вызвать конструктор запроса = ошибка. Косяк!

    Исправил так:

    &НаКлиенте
    Процедура ВызватьКонструкторЗапроса(ФормироватьКод = Ложь)
    Текст = СокрЛП(Элементы._Текст.ВыделенныйТекст);
    Если НЕ ЗначениеЗаполнено(Текст)  Тогда
    ВыделитьЗапрос();
    Текст = СокрЛП(Элементы._Текст.ВыделенныйТекст);
    КонецЕсли;
    
    ДопПараметры = новый Структура(«КавычкаПраво,КавычкаЛево,ФормироватьКод»,Ложь,Ложь,ФормироватьКод) ;
    Если Найти(ВРЕГ(Текст),»ВЫБРАТЬ») = 0 Тогда
    Текст = «»;
    Иначе
    Текст = СтрЗаменить(Текст,»|»,»»);
    Если Сред(Текст,1,1) = «»»» Тогда
    Текст = Сред(Текст,2);
    ДопПараметры.КавычкаЛево = Истина;
    КонецЕсли;
    Если Прав(Текст,1) = «»»» Тогда
    Текст = Сред(Текст,1,СтрДлина(Текст)-1);
    ДопПараметры.КавычкаПраво = Истина;
    КонецЕсли;
    
    КонецЕсли;
    
    Текст = «Выбрать 1»;
    #Если ТолстыйКлиентУправляемоеПриложение Тогда
    Если ПустаяСтрока(Текст) Тогда
    Текст = «Выбрать 1″;
    КонецЕсли;
    #КонецЕсли
    
    Текст = СтрЗаменить(Текст,»»»»»»,»»»»);
    //к = Новый КонструкторЗапроса(Текст);
    //Строка = «к = Новый КонструкторЗапроса(Текст);
    Строка = «к = Новый КонструкторЗапроса(«»»+Текст+»»»);»+»
    | к.Показать(Новый ОписаниеОповещения(«»ПриЗакрытииКонструктораЗапроса»»,ЭтаФорма,ДопПараметры));»;
    Выполнить(Строка);
    КонецПроцедуры // ВызватьКонструкторЗапроса()

    Показать

    Reply
  54. smirnov0ser

    Очень удобная разработка, спасибо.

    Раскрашивание текста невозможно?

    Нашел ошибку при использовании собственных функций на клиенте: функция «ЗабубенитьК» — лишний символ «|» в тексте выполнения.

    Reply
  55. hmanubis

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

    Нашел ошибку при использовании собственных функций на клиенте: функция «ЗабубенитьК» — лишний символ «|» в тексте выполнения.

    Насчет ошибки спасибо, исправлю (так редко пользуюсь на клиенте, что до сих пор ее не заметил)

    Reply
  56. user1035171

    Добрый день.

    Спасибо за обработку, но встретился с ошибками.

    При заполнении дерева метаданных на соответствующей вкладке падает ошибка {ВнешняяОбработка.КонсольПрограммиста.Форма.Форма.Форма(4038)}: Поле объекта не обнаружено (Таблица)

    На вкладке консоль при попытке выполнить код на клиенте, падает ошибка:

    {ВнешняяОбработка.КонсольПрограммиста.Форма.Форма.Форма(661)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода

    Выполнить(ТекстВыполнения);

    по причине:

    {(8,1)}: Ожидается ключевое слово ‘Исключение’ (‘Except’)

    <<?>>|Элементы.ВремяВыполнения.Заголовок = ФорматВременияВМилисикундах(__Р);

    {(9,2)}: Ожидается последовательность операторов

    <<?>>Исключение

    Конфигурация УТ 11.4.2.139

    Reply
  57. hmanubis

    (56) Добрый день!

    что касается выполнения на клиенте скоро выложу новую версию с исправлением, а чтобы не ждать, зайдите через конфигуратор в форму обработки — процедура «ЗабубенитьК» и в строчке

    ||Элементы.ВремяВыполнения.Заголовок = ФорматВременияВМилисикундах(__Р); 

    Удалите в начале лишний символ «|»

    А насчет дерева метаданных, не подскажете какой элемент в дереве появился последним, после ошибки?

    P.S.

    А кажется понял, в процедуре «ПолучитьДеревоМетаданныхКонфигурации» есть код

    Нстр.Картинка  = БиблиотекаКартинок.Таблица;

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

    Reply
  58. u_n_k_n_o_w_n

    Отличная обработка!!!

    Спасибо за ваши труды!!!

    Reply

Leave a Comment

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