0. ret-Phoenix 355 01.08.16 13:17 Сейчас в теме

Формы для 1script

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

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
2. Fragster 849 01.08.16 17:38 Сейчас в теме
ждем кроссплатформенного исполнения
3. ret-Phoenix 355 01.08.16 17:43 Сейчас в теме
(2) Решение уже кроссплатформенно, работу под Linux проверяли. У меня примеры под Windows, т.к. ничего больше не стоит
AntoShiK86; Fragster; +2 Ответить
11. KAV2 09.09.16 17:21 Сейчас в теме
(3) Подскажите пожалуйста, а что необходимо сделать для того, чтобы можно было использовать под Linux? Файл oscript-simple-gui.dll ведь не кросс-платформенный.
12. ret-Phoenix 355 09.09.16 20:26 Сейчас в теме
(11) в gitter ответил на вопрос. Для общественности:
под Linux будет работать под Mono.
Моя либа нормально работает под Linux (проверял @dmpas )
т.е. с точки зрения скриптописателя - разницы нет Windows or Linux
4. gubanoff 44 02.08.16 11:59 Сейчас в теме
Прекрасная работа! На самом деле, это первое, что приходит в голову, после начала работы с onescript - добавить интерактив в виде форм.
5. Alien_job 154 02.08.16 12:07 Сейчас в теме
Что вы подразумеваете под расширением возможностей конфигуратора?
upd: Ой,пропустил http://infostart.ru/public/339035/.
6. brr 174 02.08.16 15:34 Сейчас в теме
7. ret-Phoenix 355 02.08.16 15:37 Сейчас в теме
(6) А если без шуток, в ближайшее время планирую изменить название этого этого класса. Будут доступны оба варианта, ПростойГУЙ будет deprecated
8. artbear 1084 03.08.16 11:08 Сейчас в теме
ПростойГуй звучит, да :)
KEV8383; 1cWin; DmitrySinichnikov; +3 Ответить
9. HDRX 23 03.08.16 11:39 Сейчас в теме
Что за шрифт используете в редакторе?
10. ret-Phoenix 355 03.08.16 12:26 Сейчас в теме
(9) Стандартный в VSCode: "editor.fontFamily": "Consolas, 'Courier New', monospace",
13. Darklight 14 25.09.17 13:52 Сейчас в теме
Очень здорово. Но есть предложение по оформлению. Хотелось бы, чтобы стиль отображения формы и элементов управления соответствовал стилю 1С (в идеале чтобы можно было настроить перед открытием формы, например указав нужную редакцию платформы 1С или АВТО - последння, включённая в библиотеку, версия стиля платформы 1С). Неплохо бы и загружать параметры стиля оформления формы из файла и/или из строки.

Ещё одно важное предложение - сделайте загрузку настройки элементов формы из файла и/или строки. В идеале - в формате 1С (причём можно загрузить как формат неуправляемых форм - но это не очень просто, но возможно; так и xml формат управляемых форм - и создать "похожу" расстановку поддерживаемых элементов формы) - вот это действительно круто будет!

И, ещё одно предложение - сделайте несколько встроенных форм - например для диалогов вопроса, предупреждения, ввода/выбора из списка единичного значения, редактирования списка/таблицы/дерева значений. Быстрой регенерации формы, позволяющей ввести набор значений с представлением вида дерева (с иерархие в виде дерева и/или закладок - а на листьях - просто список полей ввода - отображаемых вертикально на форме, с надписями).
14. ret-Phoenix 355 25.09.17 21:04 Сейчас в теме
1. По оформлению - маловероятно что буду делать, но если кто сделает - PR проверю и приму.
2. Загрузка настройки элементов - была идея, но пока не доходят руки.
3. формы диалогов есть, в тестах примеры обращения. Выбор из ТЗ - дело нескольких строк, пример есть. Дерево есть - формируете обычное дерево и указываете как источник.
Автогенерация - 1 функция которая будет принимать тип, имя и еще ряд свойств - можно самим один раз написать и использовать.
Сейчас первоочередная задача - довести список компонентов до уровня 1С, переработать расположение.
15. DmitrySinichnikov 151 20.10.17 15:16 Сейчас в теме
Интересно а почему после компиляции в *.exe форма не открывается? Или открывается на долю секунды и закрывается сразу. Проверял и на ваших примерах и на своем коде.
Хотел небольшую утилиту написать, видимо облом, печалька((
16. ret-Phoenix 355 20.10.17 19:15 Сейчас в теме
(15) Пока движок oscript не умеет корректно работать с ВК. поэтому поставлять пока можно в виде *.os
17. pvlunegov 127 26.10.17 21:34 Сейчас в теме
Прекрасно, все работает, замечательное расширение мегаразработки OneScript.
Меня страстно интересуют следующие вопросы:
1. Есть ли возможность выводить картинки в поля элементов формы
Например, картинки в ТабличноеПоле.

Я пока тестирую вашу работу, не нашел реализации вывода картинок.
Есть ли вообще такая возможность?
18. ret-Phoenix 355 27.10.17 10:48 Сейчас в теме
(17) картинки можно использовать в "ПредставлениеСписка" (иконка в строке), больше ничего с картинками нет, не было необходимости
19. ret-Phoenix 355 27.10.17 10:52 Сейчас в теме
Процедура Тест_Должен_УстановитьВидТаблица() экспорт
	ПолучитьФорму();
	
	ПровайдерТЗ = Новый Провайдер;
	ПровайдерТЗ.Источник = ПолучитьТЗ();
	
	Поле1 = Форма.Элементы.Добавить("ТаблицаФормы1", "ПредставлениеСписка", Неопределено);
	Поле1.Представление = Поле1.ВидыПредставлений.Таблица;
	Поле1.ПутьКДанным = ПровайдерТЗ;
	Поле1.Заголовок = "Провайдер - ТЗ";
	Поле1.ПоложениеЗаголовка = УправляемыйИнтерфейс.ПоложениеЗаголовка.Верх;
	Поле1.Закрепление = УправляемыйИнтерфейс.СтильЗакрепления.Заполнение;
	
	Поле1.ОтображатьСетку = Истина;

	Поле1.КолонкаСИндексомИзображения = 0;

	Изображения = Поле1.МаленькиеИзображения;
	Изображения.Добавить("c:\Users\ushakov\Downloads\gconfeditor.ico");
	Изображения.Добавить("c:\Users\ushakov\Downloads\gconfeditor.ico");
	//Изображения.Добавить("c:\Users\ushakov\Documents\СтрелкаВлево.png");

	Изображения = Поле1.БольшиеИзображения;
	Изображения.Добавить("c:\Users\ushakov\Documents\32.ico");
	Изображения.Добавить("c:\Users\ushakov\Documents\32.ico");
	//Изображения.Добавить("c:\Users\ushakov\Documents\СтрелкаВлево.png");
	
	//
	Строки = Поле1.ВыделенныеСтроки;
	Для каждого Стр Из Строки Цикл
		Сообщить(Стр);
	КонецЦикла;
	
	Ожидаем.Что(Форма.Элементы.Найти("ТаблицаФормы1")).Существует();
	
	Форма.Показать();	
КонецПроцедуры
Показать
20. pvlunegov 127 27.10.17 14:56 Сейчас в теме
Подскажите, картинки нужны для формирования отчетов и вывод в форму.
Как это дело можно организовать?
Формирование отчета в поле табличного документа или таблицу управляемой формы и показ оной
21. ret-Phoenix 355 27.10.17 15:35 Сейчас в теме
(20) Аналога Табличного документа нет, есть только ТабличноеПоле. Как вариант, можно дописать ПолеHTML, пока оно не реализовано.
22. pvlunegov 127 27.10.17 15:43 Сейчас в теме
Я почему заинтересовался вашей разработкой - потому что хотел применить ее для:
1. Создания Win-приложения с формами, минимальной графикой
2. Код в приложении делать на 1с.
3. Минимальная графика должна быть хотя бы в виде отчетов (статических таблиц с картинками или графиками или ....)

Без 3 шага реализовать мало-мальски годное приложение шансов = 0

Согласитесь, что если ваше решение чуток доработать, можно делать полноценные приложения с БД с графикой = конкурент 1с на локальной машине без лицензий.

Я думаю в свободное время засесть за C# покопаться в вашем решении и придумать плагин для использования графики.
Например, вывод картинок в поле HTML - думаю самое простое и быстрое решение.
24. ret-Phoenix 355 27.10.17 15:46 Сейчас в теме
(22) Да, работа с ПолеHTML самое простое, но тоже требует времени, пока у меня его нет, переносить возможности поля совсем по минимуму не особо хочется, а на полноценное время выделить пока не могу.
Диаграммы - тоже хочется. даже знаю какую задачу буду ими решать, опять же - вопрос времени.
Сейчас gui развивается в первую очередь чтобы решать задачи SmartConfigurator.
26. pvlunegov 127 27.10.17 15:53 Сейчас в теме
(24) жалько что столько времени уделяете конкуренту Снегопата.
Не взлетит, по моему мнению.
Снегопат хоть и весь оброс бородой, глючный и некрасивый, но народ к нему привык.

Советую задуматься над моим предложением по доработки графических фишек к OneScript.

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

Покопаюсь, поделаю, если получится, отпишусь вам.

Возможно, получится сделать обычный плагин в виде давно известного решения.
29. ret-Phoenix 355 27.10.17 16:08 Сейчас в теме
(26) Вообще-то, мои скрипты появились за много лет до появления снегопата, фактически с них и начались разработки примочек к конфигуратору. Раньше проект не так сильно развивал как сейчас.

Я даже не помню, когда в последний раз использовал снегопат, т.к. мне приходится работать на последних версиях платформы, нужна стабильность и доступность всегда и везде.
pvlunegov; +1 Ответить
30. ret-Phoenix 355 27.10.17 16:11 Сейчас в теме
(26) Нашел когда впервые выложил: http://www.1cpp.ru/forum/YaBB.pl?num=1227553473 (24. Ноября 2008)
pvlunegov; +1 Ответить
23. pvlunegov 127 27.10.17 15:45 Сейчас в теме
После шага 3 можно делать даже развлекательные приложения в виде простых игр (табличных, статичная 2d графика)
С применением управляемых форм можно даже сделать браузерные игры.
Преимущества - внутренний код на 1с - огромное (для меня).

Поэтому шаг 3 нужно ОБЯЗАТЕЛЬНО сделать, это АРХИВАЖНО!
25. pvlunegov 127 27.10.17 15:49 Сейчас в теме
Многие люди не понимают ГИГАНТСКИЙ шаг OneScript в направлении:
1. БЕСПЛАТНОГО приложения для создания полноценных Win-приложений с БД, с графикой и внутренним кодом на русском языке.

Если привинтить графику к тому что есть, то то, что я выше обозначил - свершится.

Уже все готово, кроме графики:
1. Внутренний код на 1с работает, хотя глючит и есть ошибки
2. Вся изюминка C# и ООП в наличии (расширяемость, свои классы и функции, библиотеки)
3. Есть формы, есть подключение к БД, есть работа с сетью, файлами и много чего...

Осталось САМОЕ ГЛАВНОЕ - минимальная графика в формах.

Тогда данный проект превратится в полноценный редактор бизнес-решений
27. pvlunegov 127 27.10.17 15:59 Сейчас в теме
Подскажите, в OneScript есть возможность выполнять C# код из 1с кода?
Что то наподобие
Выполнить("С# код...") ?
НАпример, берем руководство Микрософт по рисованию фигур и всякой мелочи https://msdn.microsoft.com/ru-ru/library/x5wshyk0(v=vs.90).aspx
Создаем библиотеку в виде функций на 1с для рисования фигур, подключаем ее к решению
и начинаем использовать графику в 1с.
Взлетит такое?
28. ret-Phoenix 355 27.10.17 16:04 Сейчас в теме
OneScript не позволяет выполнить код c#, но есть возможность работать с .net сборками. Примеры были на github.
31. iolko 180 25.01.18 12:53 Сейчас в теме
Добрый день!
А можно добавить примеров с предупреждением и диалогом выбора файла.
Не могу найти
33. iolko 180 05.02.18 06:32 Сейчас в теме
(32) Не могу победить ДиалогВыбораФайла... Вот где-то туплю, и не пойму где. Можно тоже пример, для "ОсосбоОдаренных"
34. ret-Phoenix 355 05.02.18 21:55 Сейчас в теме
(33)
#Использовать gui

Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(Режим);
	
ДиалогВыбораФайла.Каталог = "c:\";
Если ДиалогВыбораФайла.Выбрать() Тогда
	Сообщить(ДиалогВыбораФайла.Каталог);
КонецЕсли;
Показать


https://github.com/ret-Phoenix/oscript-simple-gui/blob/master/oscript-component/FileDialog.cs
https://github.com/ret-Phoenix/oscript-simple-gui/blob/master/oscript-component/FileDialogMode.cs
35. bulpi 131 24.02.18 20:43 Сейчас в теме
Автор, Вы бы для новичков добавили буквально абзац с пошаговой инструкцией, что и как делать :
1)Что именно качать и откуда
2)Что делать со скачанным

Потому как примеры Ваши из статьи уже не рабочие, и ничего интуитивно понятного я не увидел в процессе подключения. Пока что-то получилось, 2 часа прошло на ровном месте.
Я, конечно, понимаю, что Вы нам ничем не обязаны. Но досадно, от такой хорошей публикации появляется раздражение из-за мелочей.
37. ret-Phoenix 355 22.07.18 17:29 Сейчас в теме
(35) Приведенные примеры вообще-то работающие. OneScript позволяет по разному работать с плагинами. Насчет обновления материала - согласен, пора бы обновить. На следующей неделе обновлю.
Проблемные мелочи, как правило, связаны с неумением читать документацию ;)
36. meckszp 22.07.18 01:12 Сейчас в теме
Также пробовал подключать библиотеку через opm и через ПодключитьВнешнююКомпоненту, но результата 0.
Скрипты запускаются, но не одна форма так не открылась. Перепробовал все примеры.
Очень жаль, что нет актуального материала по подключению этой компоненты. Версия 1CScript 1.0.20.108, ОС Windows 7 x64 запуск через Notepad++ v7.5.7 с плагином NppExec. Кто сталкивался с данной проблемой, прошу помочь. Заранее спасибо!
38. ret-Phoenix 355 22.07.18 17:34 Сейчас в теме
(36) для помощи/решения проблемы принято выкладывать проблемный код, по Вашему посту понять что не так невозможно.
Сейчас компонент активно используется как раз на вашем окружении. А скрипты вообще нужно запускать отдельно, я не знаю как себя ведет Notepad++.

материал актуален, т.к. описанные методы работали и будут работать. даже при использовании библиотеки gui (#использовать gui) происходит загрузка библиотеки как описано в статье https://github.com/ret-Phoenix/oscript-simple-gui/blob/master/oslib/package-loader.os


Процедура ПриЗагрузкеБиблиотеки(Путь, СтандартнаяОбработка, Отказ)
	
	СтандартнаяОбработка = Ложь;
	ПодключитьВнешнююКомпоненту(ОбъединитьПути(Путь, "bin\oscript-gui.dll"));
	
КонецПроцедуры
39. meckszp 27.07.18 22:19 Сейчас в теме
(38) Спасибо! Проблема решилась после запуска отдельно.
40. ret-Phoenix 355 29.07.18 15:53 Сейчас в теме
(39) для разработки на OneScript смотрите в сторону MS VisualStudio Code, редактор бесплатен и хорошо развивается, много плагинов для разных языков, основное сообщество OneScript сидит именно на нем и развивает только его.
NotePad++ как бы не казался живым, но все же умирает.
41. ildary 05.10.18 15:41 Сейчас в теме
(39) Опишите пожалуйста подробнее, как Вам удалось запустить скрипты с формами из Notepad++?
42. ret-Phoenix 355 05.10.18 20:05 Сейчас в теме
Написали ведь, запуск отдельно, не из мертвого notepad++
Переходите на нормальный редактор - visual studio code
43. ildary 07.10.18 20:05 Сейчас в теме
(42) похоже вы не работали в организациях, где на компьютерах программистов нет администраторских прав.
44. ret-Phoenix 355 08.10.18 21:18 Сейчас в теме
Как раз в такой работаю. Код на c# пишу в блокноте, сборка через батник.
vscode не требует админских прав. Жду свой комп и будет стоять vscode
45. ildary 09.10.18 08:31 Сейчас в теме
(44) спасибо, я был неправ, когда думал что VSCode - это что-то вроде VS (тяжелое, требующее install и кучу прав). У меня всё получилось.
46. ret-Phoenix 355 10.10.18 09:56 Сейчас в теме
(45) а плагин bsl поставили? Рекомендую.
47. ildary 10.10.18 10:36 Сейчас в теме
(46) Спасибо за совет, поставил, стало очень хорошо, правда не хватает цветовой схемы конфигуратора.

Можно пару вопросов по Вашей библиотеке: Каким образом правильно работать с выводимой таблицей значений? В частности я пробовал задать заголовок у объекта ТЗ (который провайдер данных) вот так:

ТЗ.Колонки.Добавить("Блокировка", Новый ОписаниеТипов("Булево"), "Блок");

но у ТЗ на форме выводится заголовок "Блокировка" - я правильно понимаю, что надо как-то обращаться к Элементы.Найти() и потом с ним работать?

Также хотелось бы узнать, будет ли у ТЗ на форме работать отображение флажка и что для этого надо сделать?
48. ret-Phoenix 355 10.10.18 13:52 Сейчас в теме
Заголовок - тянет имя колонки, почему так было сделано не помню.
Если нужен флажок - "представление списка" позволяет выводить флажки.
49. ildary 11.10.18 06:39 Сейчас в теме
(48) спасибо за ответ, а есть ли событие ПриНажатииНаСтроку() с функцией ПолучитьТекущуюКолонку()? И есть ли поддержка свойства ВыделенныеСтроки? Извините, что так много спрашиваю, пытаюсь написать приложение в котором ТЗ на форме - важнейшая часть.
51. ret-Phoenix 355 11.10.18 13:54 Сейчас в теме
(49) Документацию к библиотеке читали? она входит в поставку + на github лежат исходники с документацией.
Дока по Табличному полю здесь
Примеры здесь:
https://github.com/ret-Phoenix/oscript-simple-gui/blob/master/tests/test-FormTable.os
https://github.com/ret-Phoenix/oscript-simple-gui/blob/master/tests/test-FormListView.os

а можно и так глянуть: https://github.com/ret-Phoenix/oscript-simple-gui/blob/master/oscript-component/ListViewVT/FormListView.cs
50. ildary 11.10.18 12:28 Сейчас в теме
Ещё вопрос вдогонку - а каким образом работает горизонтальное выравнивание в группе? Ваш пример работает правильно, но как только я пытаюсь создать свою группу с двумя кнопками - высота группы сразу становится сокращенной.
52. ret-Phoenix 355 11.10.18 13:54 Сейчас в теме
(50) Код покажите. можете здесь, можете в гиттер, мы там уже пересекались.
53. ildary 11.10.18 14:29 Сейчас в теме
(52) Прошу прощения, закрыл VSCode, заново открыл - и все работает (прямо как чистка кеша в 1С).
54. ret-Phoenix 355 11.10.18 14:44 Сейчас в теме
(53) Горизонтальное размещение вышло только в прошлом релизе, могут быть косяки.
55. ildary 11.10.18 16:40 Сейчас в теме
(54) извините, доку не читал, теперь постараюсь. Нашел интересный момент - два флажка рядом - выводятся один под другим (скриншот прилагаю).

Также заметил интересный момент (так задумано?):

создаю группу, в ней - кнопку, вот так:

ГруппаКнопки = Форма.Элементы.Добавить("ГруппаКнопки", "ГруппаФормы", Неопределено);
	ГруппаКнопки.Вид = ВидГруппыФормы.ОбычнаяГруппа;
	
	Кнопка1 = Форма.Элементы.Добавить("КнопкаОбновить", "КнопкаФормы", ГруппаКнопки);
	Кнопка1.Заголовок = "Обновить";
	Кнопка1.УстановитьДействие(ЭтотОбъект, "Нажатие", "ПриНажатииКнопкаОбновить");
	Кнопка1.Закрепление = УправляемыйИнтерфейс.СтильЗакрепления.Лево;

Показать

и кнопка не становится элементом формы.

То есть вот так кнопка не находится:

ТекЭлем = Форма.Элементы.Найти("КнопкаОбновить");

А вот так - находится:

ГруппаКнопки = Форма.Элементы.Найти("ГруппаКнопки");
ТекЭлем = ГруппаКнопки.Элементы.Найти("КнопкаОбновить");
Прикрепленные файлы:
56. ret-Phoenix 355 11.10.18 16:50 Сейчас в теме
Элементы.Найти - ищет только в текущем подчинении, без обработки вложенности, если не ошибаюсь, это родное поведение 1С.
Если у контрола не указать Закрепление - используется вариант TOP
57. ildary 12.10.18 08:38 Сейчас в теме
(56) извините, вы не правы - в УФ ЭтаФорма.Элементы.Найти(ИмяЭлемента) - вернет любой элемент, неважно в какой вложенности в группе и странице он расположен.

По поводу закрепления - я пытаюсь вывести на форму ТЗ и под ней - многострочный текст. ТЗ должна занимать всё свободное место, а лог - прямо под ней. Скажите пожалуйста - как это сделать? Делаю вот так:

Поле1 = ЭлементыФормы.Добавить("Базы", "ТаблицаФормы", Неопределено);
	Поле1.ПутьКДанным = ПровайдерТЗ;
	Поле1.Закрепление = УправляемыйИнтерфейс.СтильЗакрепления.Заполнение;

	ПолеЛог = ЭлементыФормы.Добавить("Лог", "ПолеФормы", Неопределено);
	ПолеЛог.Заголовок		   = "Лог";
	ПолеЛог.Вид				   = ВидыПоляФормы.ПолеТекстовогоДокумента;
	ПолеЛог.ПоложениеЗаголовка = ПоложениеЗаголовка.Низ;
Показать

Получается см. скриншот
Прикрепленные файлы:
58. ildary 12.10.18 09:16 Сейчас в теме
Прошу помощи ещё в одном вопросе - вывел на форму ТЗ (тип - "ТаблицаФормы") - всё прекрасно работает. Пытаюсь изменить тип на "ПредставлениеСписка" - получаю ошибку для ТЗ с одной колонкой (данные - строки) "Input string was not in a correct format". Ошибка выходит в строке ТЗНаФорме.ПутьКДанным = ПровайдерТЗ;
59. ret-Phoenix 355 12.10.18 09:34 Сейчас в теме
(58) как-то так. Это все копипасты из примеров, прилагаемых к либе

#Использовать gui

Функция ПолучитьТЗ()
	
	ТЗ = Новый ТаблицаЗначений;
	ТЗ.Колонки.Добавить("Код");
	ТЗ.Колонки.Добавить("Наименование");
	ТЗ.Колонки.Добавить("ДатаРождения");
	
	СтрокаТЗ = ТЗ.Добавить();
	СтрокаТЗ.Код = 1;
	СтрокаТЗ.Наименование = "Вася";
	СтрокаТЗ.ДатаРождения = Дата(2000,2,1);
	
	СтрокаТЗ = ТЗ.Добавить();
	СтрокаТЗ.Код = 2;
	СтрокаТЗ.Наименование = "Коля";
	СтрокаТЗ.ДатаРождения = Дата(2010,5,2);
	
	СтрокаТЗ = ТЗ.Добавить();
	СтрокаТЗ.Код = 3;
	СтрокаТЗ.Наименование = "Саша";
	
	Возврат ТЗ;	
КонецФункции // ПолучитьТЗ()

УправляемыйИнтерфейс = Новый УправляемыйИнтерфейс();
Форма = УправляемыйИнтерфейс.СоздатьФорму();
ЭлементыФормы = Форма.Элементы;
ВидыПоляФормы = Форма.ВидПоляФормы;
ПоложениеЗаголовка = Форма.ПоложениеЗаголовка;
ВидГруппыФормы = Форма.ВидГруппыФормы;

Группа1 = ЭлементыФормы.Добавить("ОбычнаяГруппа1", "ГруппаФормы", Неопределено);
Группа1.Вид = ВидГруппыФормы.ОбычнаяГруппа;
Группа1.Заголовок = "Группа1";
Группа1.Закрепление = УправляемыйИнтерфейс.СтильЗакрепления.Заполнение; 


ПровайдерТЗ = Новый Провайдер;
ПровайдерТЗ.Источник = ПолучитьТЗ();

Поле1 = ЭлементыФормы.Добавить("Базы", "ТаблицаФормы", Группа1); 
Поле1.ПутьКДанным = ПровайдерТЗ; 
Поле1.Закрепление = УправляемыйИнтерфейс.СтильЗакрепления.Заполнение; 
Поле1.ПоложениеЗаголовка = ПоложениеЗаголовка.Нет;

Группа2 = ЭлементыФормы.Добавить("ОбычнаяГруппа2", "ГруппаФормы", Неопределено);
Группа2.Вид = ВидГруппыФормы.ОбычнаяГруппа;
Группа2.Заголовок = "Группа2";
Группа2.Закрепление = УправляемыйИнтерфейс.СтильЗакрепления.Низ; 

ПолеЛог = ЭлементыФормы.Добавить("ПолеЛог", "ПолеФормы", Группа2);
ПолеЛог.Заголовок = "ПолеТекстовогоДокумента";
ПолеЛог.Вид = ВидыПоляФормы.ПолеТекстовогоДокумента;
ПолеЛог.ПоложениеЗаголовка = ПоложениеЗаголовка.Нет;

Группа3 = ЭлементыФормы.Добавить("ОбычнаяГруппа3", "ГруппаФормы", Неопределено);
Группа3.Вид = ВидГруппыФормы.ОбычнаяГруппа;
Группа3.Заголовок = "Группа1";
Группа3.Закрепление = УправляемыйИнтерфейс.СтильЗакрепления.Низ; 


ПредставлениеСписка = Форма.Элементы.Добавить("ПредставлениеСписка", "ПредставлениеСписка", Группа3);
ПредставлениеСписка.ПутьКДанным = ПровайдерТЗ;
ПредставлениеСписка.Заголовок = "Провайдер - ТЗ";
ПредставлениеСписка.ПоложениеЗаголовка = УправляемыйИнтерфейс.ПоложениеЗаголовка.Верх;
ПредставлениеСписка.Закрепление = УправляемыйИнтерфейс.СтильЗакрепления.Заполнение;
ПредставлениеСписка.ВыделятьВсюСтроку = Истина;
ПредставлениеСписка.МножественноеВыделение = Истина;

Форма.Показать();

Показать
60. ildary 12.10.18 11:33 Сейчас в теме
Большое спасибо за пример, я разобрался - надо помещать всё в группы и группы разберутся, кто в каком порядке выводится.
61. ret-Phoenix 355 12.10.18 12:01 Сейчас в теме
(60) Да. если смотреть глубже: создается Panel, на нее кладется Label + <НужныйВидЭлементаФормы>. Когда управляешь Закреплением - происходит работа с Panel. И когда их много и они не разбиты на группы - бывает тяжело подобрать нужное состояние.

Для лучшего понимания работы форм - запустите студию, создайте форму и попробуйте руками, через свойство закрепление (Dock) получить нужный результат.
Понимаю, что в 1С это сделано проще, я старался сделать как можно ближе к 1С, но очень сильно бороться с .net поведением, если оно не сходится с 1С не стал.
62. ildary 12.10.18 12:21 Сейчас в теме
По поводу ПредставлениеСписка - вопрос остался. Есть Ваш простой демо пример который работает. Но если создать свою ТЗ и в первую колонку положить строку или булево - Input string was not in a correct format. Также непонятно, как можно управлять пометками (они выводятся, но не изменяются мышкой или программно).
63. ret-Phoenix 355 12.10.18 13:39 Сейчас в теме
(62) Проблему вижу, буду разбираться.
64. ret-Phoenix 355 12.10.18 14:15 Сейчас в теме
(62) по ПС и первой колонке не числу - там все ясно, и видно из документации:
 /// <summary>
/// Номер колонки с индексом изображения. Если ничего не задано - 0
/// </summary>
[ContextProperty("КолонкаСИндексомИзображения")]


Поэтому 1 колонкой должно быть число, если получится выделить время на выходных - исправлю.
65. ildary 12.10.18 14:24 Сейчас в теме
Если я ещё не надоел - очередной вопрос: вот демо пример поля со списком

Данные = Новый Соответствие;
Данные.Вставить("Один", "1");
	Данные.Вставить("Два", "2");
	Данные.Вставить("Три", "3");
	
	ПолеСоСписком1 = ЭлементыФормы.Добавить("ПолеСоСписком1 ", "ПолеФормы", Неопределено);
	ПолеСоСписком1.Заголовок = "Кластер:";
	ПолеСоСписком1.Вид = ВидыПоляФормы.ПолеСоСписком;
	ПолеСоСписком1.СписокВыбора = Данные;
	ПолеСоСписком1.Значение = "3";
Показать


Установленное значение ( "3" ) - не отображается на форме и если позже обратиться к полю формы и попытаться получить его значение: получим ошибку "Object reference not set to an instance of an object" - ПолеСоСписком1.Значение


p.s. Также не работает установка свойства Ширина у ПолеФормы если тип - ПолеВвода или ПолеСоСписком
66. ret-Phoenix 355 12.10.18 14:48 Сейчас в теме
по блоку соответствия, с 1 версии шла ошибка, попутал местами Ключ/Значение. сейчас правильно будет так
Данные = Новый Соответствие; 
Данные.Вставить(1, "Один"); 
Данные.Вставить(2, "Два"); 
Данные.Вставить(3. "Три"); 


Насчет Ширины, повторюсь, по умолчанию стоит закрепление вверх, в таком случае указание ширины - не имеет смысла, закрепление перебивает его.
68. ildary 15.10.18 07:54 Сейчас в теме
(66) к сожалению установка ширины не работает, если включено не только закрепление вверх, но и влево.

Также не совсем работает логика расположения в группе:

Форма.Ширина	= 1024;
	Форма.Высота	= 500;
	Форма.Заголовок = "Управление базами";
	
	ВидыПоляФормы	   = Форма.ВидПоляФормы;
	ПоложениеЗаголовка = Форма.ПоложениеЗаголовка;
	ВидГруппыФормы	   = Форма.ВидГруппыФормы;
	ЭлементыФормы	   = Форма.Элементы;

    УправляемыйИнтерфейс = Новый УправляемыйИнтерфейс();


	ГруппаКнопки = ЭлементыФормы.Добавить("ГруппаКнопки", "ГруппаФормы", Неопределено);
	ГруппаКнопки.Вид = ВидГруппыФормы.ОбычнаяГруппа;
	
	Кнопка1 = ЭлементыФормы.Добавить("КнопкаОбновить", "КнопкаФормы", ГруппаКнопки);
	Кнопка1.Заголовок	= "Обновить";
	Кнопка1.Закрепление = УправляемыйИнтерфейс.СтильЗакрепления.Лево;
	Кнопка1.УстановитьДействие(ЭтотОбъект, "Нажатие", "ПриНажатииКнопкаОбновить");
	
	ТекстовоеПоле1 = ЭлементыФормы.Добавить("КолвоБаз", "ПолеФормы", ГруппаКнопки);
	ТекстовоеПоле1.Заголовок   = "Кол-во:";
	ТекстовоеПоле1.Вид		   = ВидыПоляФормы.ПолеВвода;
	ТекстовоеПоле1.Доступность = Ложь;
	ТекстовоеПоле1.Закрепление = УправляемыйИнтерфейс.СтильЗакрепления.Лево;
	
	ПолеФлажок = ЭлементыФормы.Добавить("ОтборТолькоБлок", "ПолеФормы", ГруппаКнопки);
	ПолеФлажок.Вид		   = ВидыПоляФормы.ПолеФлажка;
	ПолеФлажок.Заголовок   = "Блокировка";
	ПолеФлажок.Закрепление = УправляемыйИнтерфейс.СтильЗакрепления.Лево;

	ПолеФлажок = ЭлементыФормы.Добавить("ОтборТолькоБлокРегЗад", "ПолеФормы", ГруппаКнопки);
	ПолеФлажок.Вид		 = ВидыПоляФормы.ПолеФлажка;
	ПолеФлажок.Заголовок = "Блокировка рег.зад";
	ПолеФлажок.Закрепление = УправляемыйИнтерфейс.СтильЗакрепления.Лево;
	
	Данные = Новый Соответствие;
	Данные.Вставить(""			   , "Вручную");
	Данные.Вставить("test-srv-1c"  , "test-srv-1c" );
	Данные.Вставить("srv-1c"	   , "srv-1c" );
	Данные.Вставить("srv-1c-supera", "srv-1c-supera" );
	Данные.Вставить("blade-1"	   , "blade-1" );
	
	ПолеСоСписком1 = ЭлементыФормы.Добавить("Кластер", "ПолеФормы", ГруппаКнопки);
	ПолеСоСписком1.Заголовок = "Кластер:";
	ПолеСоСписком1.Вид = ВидыПоляФормы.ПолеСоСписком;
	// СТОИТ ВКЛЮЧИТЬ СЛЕД.СТРОКУ, КАК ПОЛЕ СКРОЕТСЯ ПОД СЛЕДУЮЩИМ ПРОГРЕССБАРОМ
	//ПолеСоСписком1.Закрепление = УправляемыйИнтерфейс.СтильЗакрепления.Лево; 
	ПолеСоСписком1.СписокВыбора = Данные;
	ПолеСоСписком1.Значение = "test-srv-1c";

        // ЭТО ТЕКСТОВОЕ ПОЛЕ НЕ ВЫВОДИТСЯ СПРАВА ОТ СПИСКА, А ЕСЛИ ПОД НИМ - ФЛАЖКИ СЛЕВА СБИВАЮТСЯ ПО ВЫСОТЕ
	//ТекстовоеПоле1 = ЭлементыФормы.Добавить("КластерВручную", "ПолеФормы", ГруппаКнопки);
	//ТекстовоеПоле1.Заголовок   = "Вручную:";
	//ТекстовоеПоле1.Вид		   = ВидыПоляФормы.ПолеВвода;
	//ТекстовоеПоле1.Закрепление = УправляемыйИнтерфейс.СтильЗакрепления.Лево;

	ПрогрессБар = ЭлементыФормы.Добавить("ИндикаторОбновленияСпискаБаз", "ПолеФормы", Неопределено);
	ПрогрессБар.Вид = ВидыПоляФормы.ПолеИндикатора;
	ПрогрессБар.ПоложениеЗаголовка = ПоложениеЗаголовка.Нет;
Показать
69. ret-Phoenix 355 15.10.18 09:57 Сейчас в теме
(68) Продолжаем изучение документации и убираем магию ) (я не злобно, настроение такое)
ГруппаКнопки = ЭлементыФормы.Добавить("ГруппаКнопки", "ГруппаФормы", Неопределено); 
ГруппаКнопки.Вид = ВидГруппыФормы.ОбычнаяГруппа; 
// добавим 2 строки, уберем комментарии там где не работало и получим счастье
ГруппаКнопки.АвтоматическийРазмер  = Ложь;
ГруппаКнопки.Высота = 50;
70. ildary 15.10.18 14:06 Сейчас в теме
(69) Спасибо, помогло!

Новый вопрос: Создал поле со списком, всё прекрасно работает, но если в него ввести своё (произвольное) значение, начинает ругаться на:
ScriptEngine.Machine.ExternalSystemException: {Модуль C:\OneScript\lib\BaseManagement\УправлениеБазами.os / Ошибка в строке: 31 / Внешнее исключение (System.NullReferenceException): Object reference not set to an instance of an object.}
Возврат Сервер.Значение;

Сам объект Сервер при этом сохраняет тип значения ПолеФормы.
67. ret-Phoenix 355 12.10.18 15:03 Сейчас в теме
Можно попробовать сделать через группы.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Нижний Новгород
зарплата от 120 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Программист 1С
Новосибирск
зарплата от 80 000 руб. до 100 000 руб.
Полный день

Системный аналитик
Новосибирск
зарплата от 80 000 руб. до 100 000 руб.
Полный день

Программист 1С
Салехард
зарплата от 80 000 руб. до 200 000 руб.
Полный день