Формы для 1script

Публикация № 540284

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

onescript gui

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

Имея некоторый опыт работы с C#, решил написать внешнюю компоненту для 1script, благо базовый пример был. После нескольких часов работы появилась компонента, позволяющая работать с формами и обрабатывать события. API старался сделать максимально приближенным к 1С.

Во время разработки очень порадовала обратная связь с разработчиками onescript, ответы на вопросы получал очень быстро. Библиотечные методы написаны просто и понятно, ряд вопросов решился просмотром исходных кодов и копипастом (перебор элементов формы в цикле ДляКаждого Элемент Из Коллекции Цикл).

Проект выложен на github, там же лежит бинарник, для более быстрого начала использования. Методы компоненты покрыты тестами, которые так же являются и примерами работы с объектами компоненты. За тесты отдельное спасибо artbear, всегда знает в каком направлении правильно пнуть :D

Основная задача компоненты - простая работа с формами. Позволяет создать большое количество разных элементов форм. Поддерживается обработка событий элементов. Управление свойствами видимости, доступности и другими. Создан единый интерфейс для работы со значениями элементов (через свойство Значение).

Доступны основные элементы формы и события:

Установка

opm install gui 

либо скачать с github https://github.com/ret-Phoenix/oscript-simple-gui

Виды полей

  • ПолеВвода - Однострочное текстовое поле;
  • ПолеИндикатора - Прогрессбар.
  • ПолеКалендаря - Поле для ввода даты
  • ПолеНадписи - Надпись (декорация в терминалогии 1С)
  • ПолеФлажка - Флажок, имеет статусы: Включен/Выключен
  • ПолеТекстовогоДокумента - Многострочный текст
  • ПолеСоСписком - Поле со списком (ComboBox)
  • ПолеСписка - Поле списка (ListBox)
  • ОбычнаяГруппа - Контейнер для группы элементов
  • Страница - Страницы
  • Кнопка
  • ТаблицаФормы - Компонент для отображения объекта ТаблицаЗначений
  • ПредставлениеСписка - ListView для отображения объекта ТаблицаЗначений
  • ДеревоФормы - Компонент для отображения объекта ДеревоЗначений

 

Обрабатываемые события

  • Форма: ПриОткрытии
  • Кнопка: ПриНажатии
  • ПолеФормы: ПриИзменении, ПриВыборе (нажат Enter), ПриНажатииНаКнопку (KeyDown)
  • ПолеСписка: ПриДвойномКлике

Диалоги, уведомления

  • Вопрос
  • Предупреждение
  • Диалог выбора файла
  • Уведомление в трее

Примеры работы с компонентой

Перейдем к работе с компонентой...

Создание формы и вывод надписи

#Использовать gui
Перем Форма;

Процедура ПриСозданииОбъекта()

    УправляемыйИнтерфейс = Новый УправляемыйИнтерфейс();
    Форма = УправляемыйИнтерфейс.СоздатьФорму();

    //# Устанавливаем обработку события ПриОткрытии
    Форма.УстановитьДействие(ЭтотОбъект, "ПриОткрытии", "ПриОткрытииФормы");
    Форма.Показать();

КонецПроцедуры

//# Обработка события первого открытия формы
Процедура ПриОткрытииФормы() Экспорт
    
    Декорация1 = Форма.Элементы.Добавить("Декорация1", "ПолеФормы", Неопределено);
    Декорация1.Вид = Форма.ВидПоляФормы.ПолеНадписи;
    Декорация1.Заголовок = "Это действительно работает!";
    
    Форма.Высота = 100;

КонецПроцедуры

Создание формы с кнопкой и обработка события нажатия на кнопку

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

Перем Форма;

Процедура ПриСозданииОбъекта()

    УправляемыйИнтерфейс = Новый УправляемыйИнтерфейс();
    Форма = УправляемыйИнтерфейс.СоздатьФорму();

    //# Устанавливаем обработку события ПриОткрытии
    Форма.УстановитьДействие(ЭтотОбъект, "ПриОткрытии", "ПриОткрытииФормы");
    Форма.Показать();

КонецПроцедуры

//# Обработка события первого открытия формы
Процедура ПриОткрытииФормы() Экспорт
    
    ПолеВвода1 = Форма.Элементы.Добавить("ПолеВвода1", "ПолеФормы", Неопределено);
    ПолеВвода1.Вид = Форма.ВидПоляФормы.ПолеВвода;
    ПолеВвода1.Заголовок = "Поле ввода";
    ПолеВвода1.Значение = "Значение задано из скрипта";

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

КонецПроцедуры

Процедура ПриНажатииНаКнопку1() Экспорт
    Форма.Элементы.Найти("ПолеВвода1").Значение = "Значение после нажатия на кнопку";
КонецПроцедуры

Перейдем к более сложному примеру, создадим форму с кнопкой, полем ввода.

Пример работы с выпадающим списком
#Использовать gui

Перем Форма;

Процедура ПриСозданииОбъекта()

    УправляемыйИнтерфейс = Новый УправляемыйИнтерфейс();
    Форма = УправляемыйИнтерфейс.СоздатьФорму();

    //# Устанавливаем обработку события ПриОткрытии
    Форма.УстановитьДействие(ЭтотОбъект, "ПриОткрытии", "ПриОткрытииФормы");
    Форма.Показать();

КонецПроцедуры

//# Обработка события первого открытия формы
Процедура ПриОткрытииФормы() Экспорт
    
    Данные = Новый Соответствие;
    Данные.Вставить("Один", "1");
    Данные.Вставить("Два", "2");
    Данные.Вставить("Три", "3");

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

    Форма.Высота = 80;

КонецПроцедуры

Процедура ПриИзменииЗначения() Экспорт
    Сообщить("Новое значение: " +  Форма.Элементы.Найти("ПолеСоСписком1").Значение);
КонецПроцедуры

 

ТаблицаФормы

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


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

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

 

ДеревоФормы

Функция ПолучитьТЗ()

	Дерево = Новый ДеревоЗначений();

    Дерево = Новый ДеревоЗначений();
    Дерево.Колонки.Добавить("Год");
    Дерево.Колонки.Добавить("Месяц");
    Дерево.Колонки.Добавить("День");
    
    СтрокаДереваГод = Дерево.Строки.Добавить();
    СтрокаДереваГод.Год = 2016;

    СтрокаДереваМесяц = СтрокаДереваГод.Строки.Добавить();
    СтрокаДереваМесяц.Месяц = "Jan";
    СтрокаДереваМесяц.Год = СтрокаДереваГод.Год;

    СтрокаДереваМесяц = СтрокаДереваГод.Строки.Добавить();
    СтрокаДереваМесяц.Месяц = "Dec";
    СтрокаДереваМесяц.Год = СтрокаДереваГод.Год;

    СтрокаДереваГод = Дерево.Строки.Добавить();
    СтрокаДереваГод.Год = 2017;

    СтрокаДереваМесяц = СтрокаДереваГод.Строки.Добавить();
    СтрокаДереваМесяц.Месяц = "Feb";
    СтрокаДереваМесяц.Год = СтрокаДереваГод.Год;

    СтрокаДереваМесяц = СтрокаДереваГод.Строки.Добавить();
    СтрокаДереваМесяц.Месяц = "Mar";
    СтрокаДереваМесяц.Год = СтрокаДереваГод.Год;

    СтрокаДереваДень = СтрокаДереваМесяц.Строки.Добавить();
    СтрокаДереваДень.День = "1";
    СтрокаДереваДень.Месяц = "Mar";
    СтрокаДереваДень.Год = СтрокаДереваГод.Год;


	Возврат Дерево;

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

ПровайдерТЗ = Новый Провайдер;
ПровайдерТЗ.ИсточникДерево = Данные;

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

Процедуры и функции интерактивной работы

УправляемыйИнтерфейс = Новый УправляемыйИнтерфейс();
Диалоги = УправляемыйИнтерфейс.СтандартныеДиалоги;

Ответ = Диалоги.Вопрос("Тест", РежимДиалогаВопрос.ДаНет, 1, КодВозвратаДиалога.Нет , "Заголовок", КодВозвратаДиалога.Нет);

ТекстПредупреждения = "Текст предупреждения";
Таймаут = 10;
Заголовок = "Заголовок окна";
Диалоги.Предупреждение(ТекстПредупреждения, Таймаут, Заголовок);

Трей = Новый УведомлениеВТрее();
Трей.Заголовок = "Стандартная иконка";
Трей.Текст = "Иконка из ресурсов библиотеки";
Трей.Таймаут = 15;
Трей.Показать();

 

Возможности компоненты

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

Классы

УправляемыйИнтерфейс/ManagedInterface

Свойства

  • Версия/Version - Строка - Только чтение - Номер версии;
  • СтильЗакрепления/DockStyle
  • ВидПоляФормы/FormFieldType
  • ВидГруппыФормы/FormGroupType
  • ПоложениеЗаголовка/TitleLocation

Методы

  • СоздатьФорму/CreateForm - Форма - Создать форму (близка к Управляемой форме)

Форма/Form

Свойства

  • ВидПоляФормы/FormFieldType - ВидПоляФормы
  • ВидГруппыФормы/FormGroupType
  • ПоложениеЗаголовка/TitleLocation
  • Заголовок/Caption

Методы

  • Показать/Show
  • ПоказатьНеМодально/ПоказатьНеМодально
  • Элементы/Items
    • Возвращаемое значение
      • Коллекция с ПолеФормы, ГруппаФормы, КнопкаФормы

Элементы/Items

Свойства

Методы

  • Количество/Count - Число - Количество элементов
  • Найти/Find - Найти элемент по имени элемента
    • Параметры
      • ИмяЭлемента - Строка
    • Возвращаемое значение
      • ПолеФормы, ГруппаФормы, КнопкаФормы, Неопределено
  • Удалить - Удалить элемент
    • Параметры
      • ПолеФормы, ГруппаФормы, КнопкаФормы
  • Переместить/Move - Переместить элемент
    • Параметры
      • Элемент - ПолеФормы, ГруппаФормы, КнопкаФормы
      • Родитель - ГруппаФормы, УправляемаяФорма - Новый родитель элемента. Может совпадать со старым.
      • МестоРасположения - ПолеФормы, ГруппаФормы, КнопкаФормы - Элемент, перед которым нужно разместить перемещаемый элемент. Если не задан, то перемещается в конец коллекции.
  • Добавить/Add - Добавить элемент на форму
    • Параметры
      • ИмяЭлемента - Строка - Уникальное имя элемента
      • ТипЭлемента - Строка - Тип элемента (ПолеФормы, ГруппаФормы, КнопкаФормы)
      • Родитель - ГруппаФормы, Неопределено - Родитель для добавляемого элемента. Если не указан, то добавляется на верхний уровень.

КнопкаФормы/FormButton

Свойства

  • Родитель/Parent - ГруппаФормы, УправляемаяФорма - Только чтение - Содержит ссылку на родительский элемент.
  • Имя/Name - Строка - Имя кнопки
  • Видимость/Visible - Булево - Видимость кнопки
  • Доступность/Enabled - Булево - Доступность кнопки
  • Заголовок/Title - Строка - Надпись на кнопке

Методы

  • КнопкаНажатие/ButtonClick - deprecated - Обработчик нажатия на кнопку

    • Параметры

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

    • Параметры
      • Скрипт - Объект - Ссылка на скрипт с обработчиком события
      • ИмяСобытия - Строка - Имя события. Для кнопки только "Нажатие"
      • ИмяМетода - Строка - Имя метода для обработчика
  • ПолучитьДействие/GetAction - Получает имя установленного обработчика события.
    • Параметры
      • ИмяСобытия - Строка - Имя события. Для кнопки только "Нажатие"

ПолеФормы/FormField

Свойства

  • Значение/Value - Установка и получение значения.
  • Вид/Type - ВидПоляФормы
  • Имя/Name - Строка
  • Видимость/Visible - Булево
  • Доступность/Enabled - Булево
  • Заголовок/Title - Строка
  • ПоложениеЗаголовка/TitleLocation - ПоложениеЗаголовка
  • СписокВыбора/ChoiceList - Соответствие
  • Родитель/Parent - ГруппаФормы, УправляемаяФорма - Только чтение
  • ТолькоПросмотр/ReadOnly - Булево
  • Закрепление/Dock
  • АвтоматическийРазмер/AutoSize
  • Ширина/Width
  • Высота/Height

Методы

  • УстановитьДействие/SetAction - Устанавливает обработчик события.
    • Параметры
      • Скрипт - Объект - Ссылка на скрипт с обработчиком события
      • ИмяСобытия - Строка - Имя события. Для кнопки только "Нажатие"
      • ИмяМетода - Строка - Имя метода для обработчика
  • ПолучитьДействие/GetAction - Получает имя установленного обработчика события.
    • Параметры
      • ИмяСобытия - Строка - Имя события. Для кнопки только "Нажатие"

Обрабатываемые события

  • Форма: ПриОткрытии
  • Кнопка: ПриНажатии
  • ПолеФормы: ПриИзменении, ПриВыборе (нажат Enter)
    • ПолеСписка: ПриДвойномКлике

ВидПоляФормы/FormFieldType

  • ПолеВвода/InputField
  • ПолеИндикатора/ProgressBarField
  • ПолеКалендаря/CalendarField
  • ПолеНадписи/LabelField
  • ПолеФлажка/CheckBoxField
  • ПолеТекстовогоДокумента/TextDocumentField
  • ПолеСоСписком/ComboBox
  • ПолеСписка/ListBox
  • ТаблицаФормы / FormTable
  • ПредставлениеСписка / ListView
  • ДеревоФормы / FormTree

ВидГруппыФормы/FormGroupType

  • ОбычнаяГруппа/UsualGroup
  • Страница/Page
  • Страницы/Pages

ПоложениеЗаголовка

  • Авто/Auto
  • Верх/Top
  • Лево/Left
  • Нет/None
  • Низ/Bottom
  • Право/Right

СтильЗакрепления

  • Нет/None
  • Верх/Top
  • Низ/Bottom
  • Лево/Left
  • Право/Right
  • Заполнение/Fill

Специальные предложения

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

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

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

Я пока тестирую вашу работу, не нашел реализации вывода картинок.
Есть ли вообще такая возможность?
18. ret-Phoenix 470 27.10.17 10:48 Сейчас в теме
(17) картинки можно использовать в "ПредставлениеСписка" (иконка в строке), больше ничего с картинками нет, не было необходимости
19. ret-Phoenix 470 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 156 27.10.17 14:56 Сейчас в теме
Подскажите, картинки нужны для формирования отчетов и вывод в форму.
Как это дело можно организовать?
Формирование отчета в поле табличного документа или таблицу управляемой формы и показ оной
21. ret-Phoenix 470 27.10.17 15:35 Сейчас в теме
(20) Аналога Табличного документа нет, есть только ТабличноеПоле. Как вариант, можно дописать ПолеHTML, пока оно не реализовано.
22. pvlunegov 156 27.10.17 15:43 Сейчас в теме
Я почему заинтересовался вашей разработкой - потому что хотел применить ее для:
1. Создания Win-приложения с формами, минимальной графикой
2. Код в приложении делать на 1с.
3. Минимальная графика должна быть хотя бы в виде отчетов (статических таблиц с картинками или графиками или ....)

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

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

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

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

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

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

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

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

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

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

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

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

Тогда данный проект превратится в полноценный редактор бизнес-решений
27. pvlunegov 156 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 470 27.10.17 16:04 Сейчас в теме
OneScript не позволяет выполнить код c#, но есть возможность работать с .net сборками. Примеры были на github.
31. iolko 258 25.01.18 12:53 Сейчас в теме
Добрый день!
А можно добавить примеров с предупреждением и диалогом выбора файла.
Не могу найти
33. iolko 258 05.02.18 06:32 Сейчас в теме
(32) Не могу победить ДиалогВыбораФайла... Вот где-то туплю, и не пойму где. Можно тоже пример, для "ОсосбоОдаренных"
34. ret-Phoenix 470 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 174 24.02.18 20:43 Сейчас в теме
Автор, Вы бы для новичков добавили буквально абзац с пошаговой инструкцией, что и как делать :
1)Что именно качать и откуда
2)Что делать со скачанным

Потому как примеры Ваши из статьи уже не рабочие, и ничего интуитивно понятного я не увидел в процессе подключения. Пока что-то получилось, 2 часа прошло на ровном месте.
Я, конечно, понимаю, что Вы нам ничем не обязаны. Но досадно, от такой хорошей публикации появляется раздражение из-за мелочей.
user1107052; user1140658; meckszp; +3 Ответить
37. ret-Phoenix 470 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 470 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 470 29.07.18 15:53 Сейчас в теме
(39) для разработки на OneScript смотрите в сторону MS VisualStudio Code, редактор бесплатен и хорошо развивается, много плагинов для разных языков, основное сообщество OneScript сидит именно на нем и развивает только его.
NotePad++ как бы не казался живым, но все же умирает.
41. ildary 05.10.18 15:41 Сейчас в теме
(39) Опишите пожалуйста подробнее, как Вам удалось запустить скрипты с формами из Notepad++?
42. ret-Phoenix 470 05.10.18 20:05 Сейчас в теме
Написали ведь, запуск отдельно, не из мертвого notepad++
Переходите на нормальный редактор - visual studio code
43. ildary 07.10.18 20:05 Сейчас в теме
(42) похоже вы не работали в организациях, где на компьютерах программистов нет администраторских прав.
44. ret-Phoenix 470 08.10.18 21:18 Сейчас в теме
Как раз в такой работаю. Код на c# пишу в блокноте, сборка через батник.
vscode не требует админских прав. Жду свой комп и будет стоять vscode
45. ildary 09.10.18 08:31 Сейчас в теме
(44) спасибо, я был неправ, когда думал что VSCode - это что-то вроде VS (тяжелое, требующее install и кучу прав). У меня всё получилось.
46. ret-Phoenix 470 10.10.18 09:56 Сейчас в теме
(45) а плагин bsl поставили? Рекомендую.
47. ildary 10.10.18 10:36 Сейчас в теме
(46) Спасибо за совет, поставил, стало очень хорошо, правда не хватает цветовой схемы конфигуратора.

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

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

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

Также хотелось бы узнать, будет ли у ТЗ на форме работать отображение флажка и что для этого надо сделать?
48. ret-Phoenix 470 10.10.18 13:52 Сейчас в теме
Заголовок - тянет имя колонки, почему так было сделано не помню.
Если нужен флажок - "представление списка" позволяет выводить флажки.
49. ildary 11.10.18 06:39 Сейчас в теме
(48) спасибо за ответ, а есть ли событие ПриНажатииНаСтроку() с функцией ПолучитьТекущуюКолонку()? И есть ли поддержка свойства ВыделенныеСтроки? Извините, что так много спрашиваю, пытаюсь написать приложение в котором ТЗ на форме - важнейшая часть.
51. ret-Phoenix 470 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 470 11.10.18 13:54 Сейчас в теме
(50) Код покажите. можете здесь, можете в гиттер, мы там уже пересекались.
53. ildary 11.10.18 14:29 Сейчас в теме
(52) Прошу прощения, закрыл VSCode, заново открыл - и все работает (прямо как чистка кеша в 1С).
54. ret-Phoenix 470 11.10.18 14:44 Сейчас в теме
(53) Горизонтальное размещение вышло только в прошлом релизе, могут быть косяки.
55. ildary 11.10.18 16:40 Сейчас в теме
(54) извините, доку не читал, теперь постараюсь. Нашел интересный момент - два флажка рядом - выводятся один под другим (скриншот прилагаю).

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

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

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

Показать

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

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

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

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

ГруппаКнопки = Форма.Элементы.Найти("ГруппаКнопки");
ТекЭлем = ГруппаКнопки.Элементы.Найти("КнопкаОбновить");
Прикрепленные файлы:
56. ret-Phoenix 470 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 470 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 470 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 470 12.10.18 13:39 Сейчас в теме
(62) Проблему вижу, буду разбираться.
64. ret-Phoenix 470 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 470 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 470 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.}
Возврат Сервер.Значение;

Сам объект Сервер при этом сохраняет тип значения ПолеФормы.
98. petrov_2015 23.05.19 16:30 Сейчас в теме
(66) Никак не пойму в чем дело? ПолеСоСписком не устанавливается Значение если Данные СпискаВыбора сформированы в цикле:
Процедура ПриОткрытииФормы() Экспорт
    
    Данные = Новый Соответствие;
    Данные.Вставить(0, "0");
    Данные.Вставить(1, "1");
    Данные.Вставить(2, "2");
    
    Данные1 = Новый Соответствие;
    Для Сч=0 По 2 Цикл
		Данные1.Вставить(Сч, Строка(Сч));
    КонецЦикла;
    
    ПолеСоСписком1 = Форма.Элементы.Добавить("ПолеСоСписком1", "ПолеФормы", Неопределено);
    ПолеСоСписком1.Заголовок = "Поле со списком";
    ПолеСоСписком1.Вид = Форма.ВидПоляФормы.ПолеСоСписком;
    //ПолеСоСписком1.СписокВыбора = Данные; // так Работает
    ПолеСоСписком1.СписокВыбора = Данные1;  // а так НЕ работает (значение в списке Не устанавливается)
    ПолеСоСписком1.Значение = 2;            // ! причем значения 0 и 1 работают, а 2 и далее - нет?!
    ПолеСоСписком1.УстановитьДействие(ЭтотОбъект, "ПриИзменении", "ПриИзменииЗначения");

    Форма.Высота = 80;

КонецПроцедуры
Показать


И далее при интерактивной установке Значения=2 вылетает ошибка "Ссылка на объект не указывает на экземпляр объекта" при обращении
Форма.Элементы.Найти("ПолеСоСписком1").Значение
67. ret-Phoenix 470 12.10.18 15:03 Сейчас в теме
Можно попробовать сделать через группы.
71. ildary 16.10.18 07:41 Сейчас в теме
Простите мою настойчивость, а есть ли (или будет ли) возможность выводить в ТЗ на форме не одну, а несколько колонок с типом булево и видом Флажок? Или хотя бы в "Представление списка" получить работу с одной колонкой флажка?
73. ret-Phoenix 470 16.10.18 10:37 Сейчас в теме
(71) в ТЗ вообще-то можно сколько угодно булево, или я ошибаюсь? Ограничение не накладывал. Вид флажок - идея хорошая, в issue можно закинуть.
В представлении списка флажок - это 0 колонка, в понимании .net, пока не смотрел что там не так.
76. ildary 16.10.18 12:33 Сейчас в теме
(73) Речь не о том, что в ТЗ нельзя хранить Булево, а в том, чтобы любая колонка с Булево выводилась бы в виде флажка (не только первая).
72. ildary 16.10.18 10:36 Сейчас в теме
Скажите пожалуйста, а возможно ли получить имя текущей колонки в ТЗ?
Получаю текущую колонку через ТЗ.ТекущийЭлемент, а далее не вижу у колонки свойство Имя (искал вот тут: https://github.com/ret-Phoenix/oscript-simple-gui/blob/master/oscript-component/FormTableColumn.cs).
74. ret-Phoenix 470 16.10.18 11:02 Сейчас в теме
75. ildary 16.10.18 12:29 Сейчас в теме
(74) спасибо, я вспомнил, что Заголовок = Имя.
77. ildary 17.10.18 15:46 Сейчас в теме
Очередной вопрос - а умеет ли форма (прошу прощения если я не не нашёл в документации) обработчик ожидания? Сценарий такой - запускаем на выполнение некую команду (например 1С с приказом выполнить обмен и каждые 10 секунд проверяем - завершился ли обмен, с возможностью у пользователя на форме отменить выполнение?
80. ret-Phoenix 470 18.10.18 15:39 Сейчас в теме
(77) Обработчик ожидания - как вариант метод Sleep, может что-то уже добавилось в самом OneScript, на какое-то время выпадал из развития проекта.
78. ildary 17.10.18 16:35 Сейчас в теме
почему-то в коде ниже установка Ширина у поля формы не работает:

ГруппаУпр = ЭлементыФормы.Добавить("ГруппаУпр", "ГруппаФормы", Неопределено);
ГруппаУпр.Вид = ВидГруппыФормы.ОбычнаяГруппа;
ГруппаУпр.АвтоматическийРазмер = Ложь;
ГруппаУпр.Высота = 42;

Декорация1 = Форма.Элементы.Добавить("ПодписьГруппДейств", "ПолеФормы", ГруппаУпр);
Декорация1.Вид = Форма.ВидПоляФормы.ПолеНадписи;
Декорация1.Закрепление = УправляемыйИнтерфейс.СтильЗакрепления.Лево; //это не помогло
Декорация1.АвтоматическийРазмер = Ложь; //и это не помогло
Декорация1.Ширина = 10;
Декорация1.Заголовок = "Действия с выделенными базами:";
81. ret-Phoenix 470 18.10.18 15:45 Сейчас в теме
(78) Киньше issue, как будет время гляну. Добиться желаемого результата не смог. А если я не смог такое за пару минут - скорее всего баг.
79. ildary 17.10.18 16:51 Сейчас в теме
И последний вопрос на сегодня - у объекта есть свойство ВыделенныеСтроки. Оно только для чтения, а можно его сделать записываемым? На форме есть ТЗ, я перебираю выделенные строки, меняю их, обновляю ТЗ на форме через ТЗНаФорме.ПутьКДанным = ПровайдерТЗ;

после чего ВыделенныеСтроки слетают...
82. ret-Phoenix 470 18.10.18 15:47 Сейчас в теме
(79) конечно можно, жду PR )
Сам пока не знаю когда смогу посмотреть. В первую очередь буду исправлять баги. В свободное время в приоритете SmartConfigurator2.
83. ildary 19.10.18 08:04 Сейчас в теме
(82) Извините, а что за PR?

И еще я заметил что если на форме запустить длительное выполнение, то в случае переключения на другую программу и назад - окно замерзает (freeze) и
перестает себя перерисовывать, а в заголовке формы появляется Not Responding.

P.S. А будет ли у поля формы работать ToolTip?
84. ret-Phoenix 470 19.10.18 11:13 Сейчас в теме
(83) PR - Pull Request, доработка кода.
freeze - это уже операционка +.net
ToolTip - планировалось, даже набросок был сделан, пока не включено в релиз, надо проверять.
85. ildary 19.10.18 12:26 Сейчас в теме
(84) Pull Request - извините, дотнетом не владею, буду подождать.
86. SkyLink2012 257 06.11.18 15:02 Сейчас в теме
Очень интересно, что скриты 1script можно запускать и из PowerShell Прочитал документацию. Не нашел способа ручного измения окна мышью.

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

Или, при запуске устанавливаю ширину 600. Эта ширина - фиксированная Как сделать "резиновую", растягивающуюся форму? Какое свойство, как установить?



		//ЭтаФорма.СостояниеОкна = "Обычное";
		//ЭтаФорма.СтартоваяПозиция = "ЦентрЭкрана";
		ЭтаФорма.Ширина = 600;

		//  Какое свойство устанавливает ВОЗМОЖНОСТЬ РУЧНОГО ИЗМЕНЕНИЯ окна МЫШЬЮ  ??
87. leobrn 283 07.11.18 10:28 Сейчас в теме
Подскажите почему, при выборе конкретной базы не отрабатывает ВыбраннаяБаза = Форма.Элементы.Найти("ПолеСписокБаз").Значение;
#Использовать gui 
#Использовать ParserFileV8i

Перем Парсер;
Перем Форма;

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

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

Процедура ОчиститьВесьКеш() Экспорт
	Чистильщик = Новый ОчисткаКеша();
	Чистильщик.УстановитьПарсер(Парсер);
	Чистильщик.ОчиститьВесьКеш();
КонецПроцедуры

Процедура ВыборочнаяОчисткаКеша() Экспорт
	ВыбраннаяБаза = Форма.Элементы.Найти("ПолеСписокБаз").Значение;
	Результат = Парсер.НайтиПоИмени(ВыбраннаяБаза);
	Если Результат = Неопределено Тогда
		Сообщить("Не найдена база с именем: " + ВыбраннаяБаза);
	Иначе
		Сообщить("Кеш для базы очищен. " + ВыбраннаяБаза);
		Чистильщик = Новый ОчисткаКеша();
		Чистильщик.УстановитьПарсер(Парсер);
		Чистильщик.ОчиститьКеш(Результат);
	КонецЕсли;
КонецПроцедуры

Процедура ПриИзменииЗначения() Экспорт
	//Сообщить("Новое значение: " +  Форма.Элементы.Найти("ПолеСписокБаз").Значение);
КонецПроцедуры

Инициализация();
Показать
88. ildary 07.11.18 14:05 Сейчас в теме
(87) Потому что у Вас ВыбраннаяБаза принадлежит группе СтраницаВыборочнаяОчистка. Надо сначала найти в элементах формы СтраницаВыборочнаяОчистка и уже в ней искать ВыбраннаяБаза. Если Вы с таким поведением не согласны - переубеждайте автора компоненты или дописывайте её сами.
89. leobrn 283 08.11.18 08:01 Сейчас в теме
(88) пробу так Форма.Элементы.Найти("ГруппаСтраницы").ПодчиненныеЭлементы.Найти("СтраницаВыборочнаяОчистка").ПодчиненныеЭлементы.Найти("ПолеСписокБаз").Значение выдает недоступно
90. ildary 08.11.18 12:08 Сейчас в теме
(89) Вот как это делаю я:

ТЗНаФорме = Форма.Элементы.Найти("ГруппаТЗ").Элементы.Найти("Базы");
91. ret-Phoenix 470 08.11.18 15:16 Сейчас в теме
На текущий момент, элемент формы ищет только в пределах выбранного родителя. без просмотра подчиненных элементов. Поведение надо менять, сейчас руки не доходят.
Если не хочется заморачиваться с поиском - можете определить элемент как переменную модуля, так вы всегда получите к нему доступ.
92. leobrn 283 09.11.18 06:20 Сейчас в теме
(91) возможность работы после компиляции в *.exe не поддерживается? видел, что в (15) уже интересовались, но это было год назад. Изменилось ли что-то?
93. ret-Phoenix 470 09.11.18 11:54 Сейчас в теме
(92) Нет, никто пока не допилил такую возможность в движке. Обходной вариант есть от Khoreva (создать как ресурс, который потом распаковывается).
94. Viktor_Ermakov 17.12.18 09:10 Сейчас в теме
(93)
Нет, никто пока не допилил такую возможность в движке. Обходной вариант есть от Khoreva (создать как ресурс, который потом распаковывается)

А где описан этот вариант? Хочется воспользоваться.
96. user1140658 15.02.19 16:20 Сейчас в теме
(95) случайно наткнулся на onescript... Вопрос: позволяет ли текущее состояние сделать распространяемое приложение(без установки) с функциями: получить информацию от пользователя(текстовая строка), обработать по алгоритму и вывести информацию в виде таблицы или в виде файла(ворд или пдф)?
97. ret-Phoenix 470 16.02.19 11:26 Сейчас в теме
(96) Позволяет, рекомендую ознакомиться с документацией.
99. alex_bob 222 08.07.19 12:39 Сейчас в теме
Пробую oscript + gui (новичок). Ubuntu 16.04, Mono 5.2, oscript 1.1.1, gui 1.1.1.2.
При запуске примера example-all-component.os из examples выдает ошибку:
{Модуль /usr/share/oscript/lib/gui/examples/example-all-components.os / Ошибка в строке: 107 / Внешнее исключение (System.NotSupportedException): Specified method is not supported.}
Строка:
ПолеСоСписком1.СписокВыбора = Данные; 


После комментирования этой строки и такой же для ПолеСписка1 пример запускается и отрабатывает.
100. ret-Phoenix 470 25.07.19 13:06 Сейчас в теме
(99) Попробуйте на новом релизе. Указанная Вами сборка очень старая. Сегодня выпустил релиз: 1.1.2.3
Оставьте свое сообщение

См. также

Подсистема "Инструменты разработчика" v5.35 Промо

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

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

23.09.2007    476516    4340    tormozit    2665    

Нейроконструктор

Интеграция Искусственный интеллект (AI) Прочие инструменты разработчика v8 Бесплатно (free)

Изучайте нейронные сети и экспериментируйте вместе с расширением конфигурации "Нейроконструктор". Навыки программирования не требуются.

20.05.2020    2974    19    user1404129    9    

Шпаргалка. Автоматическое тестирование внешних отчетов и обработок в нескольких информационных базах

Прочие инструменты разработчика v8 Бесплатно (free)

Используем Автоматизированное тестирование на практике. Простой код для обновления и запуска внешних отчетов и обработок в нескольких ИБ. Создаем рабочее решение с нуля.

02.05.2020    2935    0    pparshin    21    

Установка EDT 2020.2 на Ubuntu 18.04

EDT Россия Бесплатно (free)

Установка EDT 2020.2 на Ubuntu 18.04 Заметки на будущее.

12.04.2020    1625    0    awk    14    

Легкий способ обновления измененной конфигурации Промо

Инструментарий разработчика v8 Бесплатно (free)

Легкий способ обновления измененной конфигурации. Сервис подготовки расширения конфигурации

25.10.2017    22160    0    avk72    63    

Enterprise Development Tools, версия 2020.2 для мобильной разработки. Бег по граблям (серия публикаций от чайника для чайников)

EDT v8::Mobile 1cv8.cf Бесплатно (free)

Небольшие советы, которые сберегут время при работе с Enterprise Development Tools, версия 2020.2.

10.04.2020    3348    0    capitan    8    

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

Прочие инструменты разработчика Консоль запросов v8::УФ v8::Запросы v8::СКД Бесплатно (free)

Консоль запросов и СКД – один из наиболее часто используемых программистом инструментов. Как с его помощью можно упростить разработку, в своем докладе на конференции Infostart Event 2019 Inception рассказал Евгений Люлюк, ведущий программист компании GLT.

06.04.2020    4950    0    Evg-Lylyk    0    

Технология разветвлённой разработки, использующая git, ci/cd

CI/CD Git (GitHub, GitLab, BitBucket) Методология управления разработкой EDT 1С:Франчайзи, автоматизация бизнеса Россия Бесплатно (free)

Адаптация и расширение требований к разветвлённой разработке с использованием git и ci/cd, основанное на стандартах 1С

24.02.2020    4586    0    check2    10    

Универсальная функция для программного выполнения СКД Промо

Инструментарий разработчика Универсальные функции v8::СКД 1cv8.cf Бесплатно (free)

Часто встречаются вопросы на форумах о программном формировании СКД. Вроде и информации много по этому поводу, но... Все как всегда :) Собственно, в описании без лишних слов выложен текст общей функции, в которую, для выполнения отчета, нужно передать (минимум 2 параметра): СКД и ТабличныйДокумент.

20.05.2015    29358    0    dj_serega    18    

CI/CD для 1С проектов, унифицировано, с кастомизацией

CI/CD Инструментарий разработчика Бесплатно (free)

Тема CI/CD в связке с 1С не нова, но многих пугает сложность использования и поддержки, необходимость обучения команды. Про то, как унифицировать и упростить поддержку сборочных конвейеров для большого количества решений, в своем докладе на конференции Infostart Event 2019 Inception рассказал начальник отдела компании BIA-Technologies Валерий Максимов.

20.02.2020    4673    0    theshadowco    11    

О синхронизации ИБ с проектом в EDT

EDT Бесплатно (free)

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

19.02.2020    2708    0    check2    2    

Универсальные инструменты 1С

Универсальные обработки Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

Свободно распространяемый набор универсальных обработок и отчетов в виде расширения для разработки и поддержки, которое работает во ВСЕХ видах клиентских приложений и во всех операционных системах, которые поддерживает платформа 1С:Предприятие, кроме мобильных. Консоль запросов - консоль отчетов - консоль кода - редактор объектов базы данных - удаление помеченных объектов - поиск и удаление дублей - редактор констант - консоль заданий - групповая обработка справочников и документов - динамический список - поиск ссылок на объект - регистрация изменений для обмена данными - структура хранения базы - консоль HTTP запросов-консоль вебсервисов- консоль сравнения данных- информация о лицензиях- загрузка из табличного документа-файловый менеджер-все функции- навигатор по конфигурации-конструктор регулярных выражений-Выгрузка загрузка XML с фильтрами

21.01.2020    18698    295    cprit    84    

Перевод интерфейса конфигурации с использованием программы 1С:Переводчик Промо

Инструментарий разработчика v8 Бесплатно (free)

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

09.02.2015    31815    0    boogie    21    

EDT + УТ 11.4 + БП 3.0 + Расширения. ЧАСТЬ 03

EDT v8 Бесплатно (free)

Групповая разработка в EDT.

21.01.2020    3435    0    YuriYuriev    3    

Атака сервера кнопонажималкой

Нагрузочное тестирование Инструментарий разработчика Бесплатно (free)

Чтобы убедиться, что продукт выдержит планируемую нагрузку, необходимо провести нагрузочное тестирование – написать сценарии пользовательских действий и запустить их в несколько потоков, чтобы заранее найти проблемы в бизнес-логике и «узкие места». О том, как упростить написание сценариев тестирования для конфигурации Тест-центр с помощью фреймворка Vanessa Automation на конференции Infostart Event 2019 Inception рассказал ведущий программист компании «ПервыйБИТ» Никита Грызлов.

20.01.2020    4626    0    nixel    22    

Часовой на страже логов

Практика программирования Инструментарий разработчика Бесплатно (free)

При поддержке решений, которые установлены у большого количества пользователей на различных системах, очень важно вовремя получать подробную информацию о возникших проблемах. О том, как собирать логи и анализировать полученные данные в трекере ошибок Sentry на конференции Infostart Event 2019 Inception рассказал Андрей Крапивин.

13.01.2020    4913    0    Scorpion4eg    6    

Генерация кода управляемой формы (декомпиляция элементов) Промо

Инструментарий разработчика Практика программирования Работа с интерфейсом v8 v8::УФ 1cv8.cf Бесплатно (free)

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

29.09.2014    99327    0    ekaruk    127    

EDT + УТ 11.4 + БП 3.0 + Расширения. Часть 02

EDT v8 Бесплатно (free)

Продолжение "путевых заметок" про EDT...

09.01.2020    5050    0    YuriYuriev    30    

Как управлять качеством кода 1С, используя платформу SonarQube

Рефакторинг и качество кода Инструментарий разработчика Бесплатно (free)

При быстром росте функциональности проводить визуальный Code-Review для обнаружения некачественного кода проблематично. О том, как автоматизировать проверку качества кода 1С с помощью платформы SonarQube на конференции Infostart Event 2019 Inception рассказал ведущий разработчик компании «Командор» Олег Тымко.

30.12.2019    6878    0    olegtymko    9    

EDT + УТ 11.4 + БП 3.0 + Расширения. ЧАСТЬ 01

EDT v8 Бесплатно (free)

...продолжаем мучить(ся с) EDT

28.12.2019    5430    0    YuriYuriev    8    

Сервис обмена кодом Промо

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Бывало так, что вам нужно быстро показать кому-то свой код, но опубликовать его негде, так как популярные сервисы просто не поддерживают раскраску кода 1С? Теперь решение есть!

26.06.2015    19714    0    Infactum    23    

EDT 1.16. Первые 20 часов работы

EDT v8 Россия Бесплатно (free)

Первое знакомство с 1C:Enterprise Development Tools, версия 1.16.0.363.

25.12.2019    9420    0    YuriYuriev    11    

Как работают управляемые формы и тонкий клиент 1С – взгляд "из-под капота"

Практика программирования Инструментарий разработчика v8::УФ Бесплатно (free)

Переход на управляемые формы перевернул процесс разработки на 1С, заставив программистов менять привычные подходы к описанию логики работы интерфейса. Руководитель компании «Цифровой Кот» Юрий Лазаренко в своем докладе на конференции Infostart Event 2019 Inception рассказал о том, как устроены управляемые формы и как правильно работать с тонким клиентом платформы 1С:Предприятие.

23.12.2019    10676    0    TitanLuchs    23    

Мониторим производительность с помощью 1С RAS

Инструментарий разработчика Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Подключаемся и анализируем данные через 1С RAS. Необходимо выполнить 5 пунктов и серьезный инструмент мониторинга будет у вас в руках.

19.12.2019    8896    0    ivanov660    16    

1C:Enterprise Development tools (EDT) или кодим в Eclipse Промо

EDT v8 Бесплатно (free)

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

11.04.2015    75501    0    DitriX    297    

Git для 1С-ника и другие технологии групповой разработки

Инструментарий разработчика Git (GitHub, GitLab, BitBucket) v8 1cv8.cf Россия Бесплатно (free)

У многих специалистов в отношении Git сложились стереотипы, мешающие начать работу с этим прекрасным и удобным инструментом. Почему его не стоит бояться, и чем он может упростить жизнь 1С-никам, рассказал архитектор ГК «Невада» Станислав Ганиев.

28.10.2019    11275    0    stas_ganiev    16    

Фреймворк для создания бизнес web-приложений

Прочие инструменты разработчика Бесплатно (free)

Для создания систем, решающих узкие бизнес задачи, использовать 1С бывает нецелесообразно. Хочу представить альтернативу - web фреймворк katejs. Будет интересно также тем, кто интересуется web разработкой на современном javascript.

15.10.2019    4608    0    nep_i    24    

Про ТабДок или TabDoc Pro

Практика программирования Инструментарий разработчика v8 Бесплатно (free)

Табличный документ – всем знакомый и привычный компонент продукта 1С. Про оптимизацию работы табличного документа, его проблемы и недостатки в своем докладе на конференции Infostart Event 2019 Education рассказал ведущий программист BIA-Technologies Князьков Алексей.

11.09.2019    5586    0    AKnyazkov    26    

Проставление большого количества галочек в активном окне винды Промо

Практика программирования Сервисные утилиты Инструментарий разработчика Россия Бесплатно (free)

Как проставить большое количество галочек подряд в любом окне винды

07.11.2010    30059    0    Boris-Leleko    9    

FastCode - сервис поиска кода 1С

Инструментарий разработчика v8 Бесплатно (free)

Добавляйте свои шаблоны кода или ищите готовые шаблоны других разработчиков. Оставляйте отзывы и лайки, добавляйте понравившиеся фрагменты в свою библиотеку. Ищите по БСП или по общим модулям своей конфигурации.

10.09.2019    8789    0    m.bolsun    22    

Кодогенерация и метагенерация в 1С

Практика программирования Инструментарий разработчика Бесплатно (free)

В своем докладе на конференции INFOSTART EVENT 2018 EDUCATION Дмитрий Белозеров рассказал о разработке инструмента, позволяющего программно работать с метаданными 1С и писать скрипты для выполнения тех же действий, которые выполняет разработчик в конфигураторе –  с какими сложностями и нюансами пришлось столкнуться, и что получилось в итоге.

26.08.2019    7800    0    kirovsbis    28    

Как мы разрабатываем в EDT

EDT Инструментарий разработчика v8 Бесплатно (free)

EDT – это новая среда разработки, на которую сейчас перешли разработчики фирмы «1С». Однако до сих пор существует ряд «белых пятен», касающихся как теоретической, так и практической части применения этого инструмента. Про опыт перехода на разработку в EDT на конференции INFOSTART EVENT 2018 EDUCATION рассказал начальник сектора разработки в компании «Группа Полипластик» Владимир Крючков.

23.08.2019    10589    0    ivanov660    24    

TurboConf:Шаблоны - сервис для поиска и хранения фрагментов кода Промо

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Сервис добавляет в Конфигуратор возможность поиска и хранения фрагментов кода. Делитесь своими шаблонами с другими разработчиками или используйте уже готовые!

13.08.2014    21844    0    m.bolsun    68    

1С:EDT. Первые шаги… или есть ли альтернатива конфигуратору?

EDT v8 Бесплатно (free)

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

15.08.2019    19372    0    ellavs    104    

Подходы, методы и инструменты UX/UI для разработки эффективных интерфейсов на 1С

Работа с интерфейсом Инструментарий разработчика v8 Бесплатно (free)

Интерфейсам в 1С обычно уделяют мало внимания. Это в итоге снижает востребованность платформы, делает ее неконкурентной, лишает большой доли рынка. Как не потерять старых клиентов и привлекать новых с помощью интерфейсов, а главное – как сделать «правильный» интерфейс, рассказал участникам конференции Infostart Event 2018 Education управляющий партнер и основатель консалтинговой группы WiseAdvice Иван Тягунов.

07.08.2019    9725    0    IvanAT1981    14    

Отказ от использования хранилищ 1С, переход на Git.

Инструментарий разработчика Разработка Бесплатно (free)

Валерий Максимов в своем докладе на конференции INFOSTART EVENT 2018 EDUCATION делится опытом перехода нескольких команд (более 100 разработчиков) от использования хранилищ 1С на системы контроля версий Git.

25.07.2019    9491    0    theshadowco    31    

Подсистема "COMExchange": консоль запросов в режиме «Консоль кода». Промо

Консоль запросов v8 1cv8.cf Россия Бесплатно (free)

Описана возможность использования обработки «Консоль запросов 1С+ADO» в качестве «консоли кода». При этом имеется возможность помещения результатов вычислений в «табло формул». Кроме результатов вычислений в это «табло» можно также вывести время выполнения и описание обработанных ошибок времени исполнения.

03.04.2014    25435    0    yuraos    2    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    28840    0    ids79    27    

Интеграция сценарного тестирования в процесс разработки

Практика программирования Инструментарий разработчика Бесплатно (free)

Разработчик системы «Тестер» Дмитрий Решитко в своем докладе на конференции INFOSTART EVENT 2018 EDUCATION показывает, что процесс тестирования можно очень плотно интегрировать в процесс разработки, что внедрение тестирования – это возможность развития программиста как такового, позволяющая ему упорядочивать ход мыслей и оставаться «в фокусе». Навыки построения процесса кодирования на стыке с тестированием сокращают время на концентрацию, освобождают от страха перед изменениями и улучшают память разработчика.

08.07.2019    8138    0    grumagargler    7    

1Script.Web. Интернет-приложения на языке 1С

WEB OneScript Инструментарий разработчика v8 Бесплатно (free)

Запросы рынка таковы, что любое современное клиент-серверное приложение должно иметь веб-интерфейс. Почему бы не писать такие приложения на языке 1С? Андрей Овсянкин расскажет о возможностях разработки веб-приложений на базе 1Script, рассмотрит перспективы этого направления и в качестве демонстрации покажет «боевое» веб-приложение на новом движке – кроссплатформенную консоль администрирования парка кластеров 1С.

20.05.2019    18493    0    Evil Beaver    33    

Ускорение реструктуризации таблиц Промо

Инструментарий разработчика Администрирование данных 1С Тестирование и исправление Бесплатно (free)

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

12.09.2013    50746    0    OLEG4120    32    

Групповая обработка (Управляемая консоль отчетов)

Обработка документов Инструментарий разработчика Обработка справочников v8 v8::УФ v8::Запросы 1cv8.cf 1С:Франчайзи, автоматизация бизнеса Бесплатно (free)

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

13.05.2019    8426    0    Evg-Lylyk    10    

Быстрый ввод неудобных символов

Пользователю системы Инструментарий разработчика Бесплатно (free)

Использование Alt-кодов для ввода “[”, “]”, “”, “&”, “#”, “|”

15.04.2019    9077    0    pparshin    28    

Перенос и резервное копирование настроек конфигуратора

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Удобный перенос между рабочими местами и резервное копирование настроек конфигуратора через подсистему "Инструменты разработчика".

14.04.2019    8692    0    tormozit    18    

Undo (Ctrl+Z ) история выбора реквизитов формы для 7.7 Промо

Инструментарий разработчика v7.7 1cv7.md Россия Бесплатно (free)

Небольшой класс, реализует "историю" выбора реквизитов формы.

18.05.2009    18310    0    Ёпрст    27    

Расширение конструктора мобильного рабочего места для варианта "клиент 1С+RDP" (для любых wi-fi терминалов). Экосистема решений Simple WMS

Инструментарий разработчика Сканер штрих-кода Терминал сбора данных Универсальные функции Мобильная разработка Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ v8::УФ УУ Бесплатно (free)

Развитие проекта «Конструктор мобильного клиента на Android» https://infostart.ru/public/976636/ для устройств не на Андроиде (работающих в режиме RDP). В отличие от варианта Android работа на терминалах происходит в режиме 1С:Предприятие через RDP а конфигурации мобильных клиентов полностью совместимы для обоих версий. Т.е. конфигурация единая, создается один раз и ее может читать как Android -устройство, так и 1С-клиент на RDP без необходимости какой либо переделки.

05.02.2019    11569    0    informa1555    5    

Git + 1С. Часть 2. Реализация Git workflow в 1С-разработке по шагам

Инструментарий разработчика Управление проектом v8 1cv8.cf Бесплатно (free)

В этой части мы рассмотрим наиболее распространённую схему workflow при групповой разработке с использованием Git. Как приступить к доработке по поставленной задаче; исправить ошибку, обнаруженную на этапе тестирования; отправить свой код на слияние в предстоящий релиз; и т.д. Постараемся охватить большинство задач, составляющих основной цикл разработки

28.01.2019    15666    0    stas_ganiev    28    

Автоматизация тестирования с помощью WinAutomationUI

Инструментарий разработчика v8 Бесплатно (free)

Рассматривается использование инструмента WinAutomationUI для создания автоматизированных сценарных тестов на примере 1 + 1 = 2.

11.12.2018    6276    0    AlexKo    30    

VM1C - виртуальная машина для 1С Промо

Инструментарий разработчика v8 1cv8.cf Россия Бесплатно (free)

Демонстрация возможностей виртуальной машины для 1С. Создаем и выполняем код модулей в режиме Предприятия в реальном времени.

07.06.2013    23378    0    m.bolsun    46    

[8.3] Анализ планов запросов (Управляемая консоль отчетов)

Консоль запросов v8 1cv8.cf Бесплатно (free)

Новый инструмент! Позволяет удобно работать с планами запросов, анализ планов в файловой базе.

19.11.2018    18295    0    Evg-Lylyk    6    

Метрики, графики, статистика = Prometheus + Grafana

Инструментарий разработчика v8 v8::ОУ Россия Бесплатно (free)

Снятие метрик из базы данных 1С с хранением в Phrometheus и красивое оформление на основе Grafana. Или как мы создавали комфортные условия административному персоналу на отдельно взятом складе.

23.10.2018    16155    0    freewms    75    

Git + 1С. Часть 1. Как подключиться к команде разработки и начать использовать Git

Инструментарий разработчика Управление проектом v8 1cv8.cf Бесплатно (free)

Первая статья из цикла инструкций по работе с Git в 1С-разработке. Рассмотрим, как настроить рабочее место, как получить свою "копию" проекта для разработки и приступить к полезным действиям. Все примеры будут изложены в рамках трёх практических кейсов: 1. Моя команда дорабатывает типовую конфигурацию, использует приватный репозиторий на BitBucket, в котором версионируются внешние отчеты/обработки, расширения конфигураций и правила обмена; 2. Я участвую в стартап-команде, которая разрабатывает свою конфигурацию с использованием Git и GitLab; 3. Я принимаю участие в развитии OpenSource-продукта на GitHub как заинтересованный разработчик (контрибьютор).

18.10.2018    58169    0    stas_ganiev    73    

Автоматизация тестирования

Инструментарий разработчика Бесплатно (free)

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

04.10.2018    10333    0    ivanov660    23