ЭлементыФормы (Controls) . Добавить (Add) - Добавляет элемент управления на форму.
Синтаксис: Код 1C v 8.х Добавить( < Тип> , < Имя> , < Видимость> , < ПоместитьНа> )
Параметры:
<Тип> (обязательный)
Тип: Тип. Тип добавляемого элемента управления:
Индикатор; ПолеКалендаря; Кнопка; КоманднаяПанель; Надпись; Панель; Переключатель; ПолеТабличногоДокумента; ПолеHTMLДокумента; ПолеТекстовогоДокумента; ПолеВвода; ПолеВыбора; ПолеСписка; ПолеКартинки; ПолосаРегулирования; Разделитель; РамкаГруппы; ТабличноеПоле; Флажок; ПолеГрафическойСхемы; ПолеГеографическойСхемы.
<Имя> (обязательный)
Тип: Строка. Имя создаваемого элемента управления. Имя должно быть указано в соответсвии с правилами написания имен системы 1С:Предприятие 8. В противном случае выполнение метода вызовет исключение.
<Видимость> (необязательный)
Тип: Булево. Определяет, создавать новый элемент управления формы видимым или нет. Истина - элемент создается видимым.
Значение по умолчанию: Истина
<ПоместитьНа> (необязательный)
Тип: Панель; ПолеТабличногоДокумента. Определяет, какой панели формы или какому табличному документу принадлежит создаваемый элемент. Если указана панель, то добавляемый элемент размещается на текущей странице панели. Если не указан, создаваемый элемент будет принадлежать непосредственно форме.
Код 1C v 8.х
// Расположим на странице табличное поле
ПолеРегистра = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"),
СтрокаТаблицы.Имя,
Истина,
ЭлементыФормы.ОсновнаяПанель);
ПолеРегистра.Данные = "ДокументОбъект.Движения." + СтрокаТаблицы.Имя;
Если НЕ ЭтоНовый() Тогда
ПолеРегистра.Значение.Прочитать();
КонецЕсли;
ПолеРегистра.Верх = 30;
ПолеРегистра.Лево = 6;
ПолеРегистра.Ширина = ЭлементыФормы.ОсновнаяПанель.Ширина - 14;
ПолеРегистра.Высота = ЭлементыФормы.ОсновнаяПанель.Высота - 56;
ПолеРегистра.ТолькоПросмотр = Ложь;
ПолеРегистра.ИзменятьПорядокСтрок = Истина;
ПолеРегистра.ИзменятьСоставСтрок = Истина;
ПолеРегистра.УстановитьПривязку(ГраницаЭлементаУправления.Верх,
КоманднаяПанельРегистра,
ГраницаЭлементаУправления.Низ);
ПолеРегистра.УстановитьПривязку(ГраницаЭлементаУправления.Низ,
ЭлементыФормы.ОсновнаяПанель,
ГраницаЭлементаУправления.Низ);
ПолеРегистра.УстановитьПривязку(ГраницаЭлементаУправления.Право,
ЭлементыФормы.ОсновнаяПанель,
ГраницаЭлементаУправления.Право);
ПолеРегистра.СоздатьКолонки();
Если Метаданные.РегистрыНакопления[СтрокаТаблицы.Имя].ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки Тогда
КолонкаВидДвижения = ПолеРегистра.Колонки.Вставить(1, "Вид движения");
КолонкаВидДвижения.Имя = "ВидДвиженияРегистраНакопления";
КолонкаВидДвижения.УстановитьЭлементУправления(Тип("ПолеВвода"));
КолонкаВидДвижения.Данные = "ВидДвижения";
КолонкаВидДвижения.ЭлементУправления.КнопкаВыбора = Истина;
КолонкаВидДвижения.ЭлементУправления.ВыбиратьТип = Ложь;
КонецЕсли;
ПолеРегистра.Колонки.Регистратор.Видимость = Ложь;
ПолеРегистра.Колонки.Период.Видимость = Ложь;
ПолеРегистра.Колонки.НомерСтроки.Видимость = Ложь;
// Поле ввода
ПолеВвода = ЭлементыФормы.Добавить(Тип("ПолеВвода"), "ПолеВвода", Истина);
ПолеВвода.Верх = Надпись.Верх + Надпись.Высота + 5;
ПолеВвода.Лево = ЭлементыФормы.Переключатель1.Лево;
ПолеВвода.Ширина = ЭлементыФормы.Переключатель1.Ширина;
ПолеВвода.Высота = ЭлементыФормы.Переключатель1.Высота;
ПолеВвода.Доступность = Ложь;
// установка привязок
ПолеВвода.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ПолеВвода, ГраницаЭлементаУправления.Верх);
ПолеВвода.УстановитьПривязку(ГраницаЭлементаУправления.Лево, ЭтаФорма.Панель, ГраницаЭлементаУправления.Лево);
ПолеВвода.УстановитьПривязку(ГраницаЭлементаУправления.Право, ЭтаФорма.Панель, ГраницаЭлементаУправления.Право);
//Надпись и поле ввода
ЭлементНадпись = ЭлементыФормы.Добавить(Тип("Надпись"), "Надпись"+ИмяЭлемента, Истина, ЭлементыФормы.ПанельПодбор);
ЭлементНадпись.Заголовок = Синоним + ":";
ЭлементНадпись.Лево = 6;
ЭлементНадпись.Верх = ВерхЭлемента + 6;
ЭлементНадпись.Высота = 19;
ЭлементНадпись.Ширина = 160;
ЭлементНадпись.ЦветФона = ЦветаСтиля.ФонЭпицентра;
ЭлементПолеВвода = ЭлементыФормы.Добавить(Тип("ПолеВвода"), ИмяЭлемента, Истина, ЭлементыФормы.ПанельПодбор);
ЭлементПолеВвода.ТипЗначения = Параметр.Тип;
ЭлементПолеВвода.Верх = ЭлементНадпись.Верх;
ЭлементПолеВвода.Лево = ЭлементНадпись.Лево + ЭлементНадпись.Ширина + 6;
ЭлементПолеВвода.Высота = ЭлементНадпись.Высота;
Если ЭлементПолеВвода.ТипЗначения.СодержитТип(Тип("Дата")) Тогда
ЭлементПолеВвода.Ширина = 80;
Иначе
ЭлементПолеВвода.Ширина = 200;
КонецЕсли;
//Надпись и Поле Выбора
ИмяЭлемента = " Подписывающий";
ЭлементНадпись = ЭлементыФормы.Добавить(Тип("Надпись"), "Надпись"+ИмяЭлемента, Истина,);
ЭлементНадпись.Заголовок = ИмяЭлемента + ":";
ЭлементНадпись.Лево = 250;
ЭлементНадпись.Верх = 33;
ЭлементНадпись.Высота = 19;
ЭлементНадпись.Ширина = 160;
ЭлементНадпись.ЦветФона = ЦветаСтиля.ЦветФонаФормы;
ЭлементПолеВвода = ЭлементыФормы.Добавить(Тип("ПолеВыбора""), ИмяЭлемента, Истина,);
ЭлементПолеВвода.Данные = Подписывающий;
//ЭлементПолеВвода.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.СотрудникиОрганизаций");
ЭлементПолеВвода.Верх = ЭлементНадпись.Верх;
ЭлементПолеВвода.Лево = ЭлементНадпись.Лево + ЭлементНадпись.Ширина + 6;
ЭлементПолеВвода.Высота = ЭлементНадпись.Высота;
ЭлементПолеВвода.Ширина = 200;
Код 1C v 8.х
Функция ПроверитьОрфографию(Текст, ДеревоЗначений = Null) Экспорт
Попытка
Ворд = Новый COMОбъект( "Word.Application" ) ;
Исключение
Предупреждение( "Microsoft Word не установлен!" , , "Ошибка!" ) ;
Возврат Ложь ;
КонецПопытки ;
ТекстБезОшибок = Ворд. CheckSpelling( Текст) ;
Если ТекстБезОшибок Тогда
Возврат Истина ;
Иначе
Если ДеревоЗначений < > Null Тогда
Ворд_Активен = Ворд. Visible;
ВремДок = Ворд. Documents. Add( ) ;
МояОбласть = ВремДок. Range( 0 , 0 ) ;
МояОбласть. I_nsertBefore( Текст) ;
ЧислоСлов = МояОбласть. Words. Count;
ДеревоЗначений = Новый ДеревоЗначений;
МассивТипов = Новый Массив;
МассивТипов. Добавить( Тип( "Строка" ) ) ;
ОписаниеТипов = Новый ОписаниеТипов( МассивТипов) ;
ДеревоЗначений. Колонки. Добавить( "Слово" , ОписаниеТипов, "Слово/Замена" , ) ;
wdSpellword= 0 ;
wdDoNotSaveChanges= 0 ;
Для НомерСлова = 1 По ЧислоСлов Цикл
ОбработкаПрерыванияПользователя( ) ;
ПровОбласть = МояОбласть. Words( НомерСлова) ;
ПровСлово = СокрЛП( ПровОбласть. Text) ;
СловоБезОшибок = Ворд. CheckSpelling( ПровСлово) ;
Если НЕ СловоБезОшибок Тогда
Если ДеревоЗначений. Строки. Найти( ПровСлово, "Слово" ) = Неопределено Тогда
НоваяСтрока = ДеревоЗначений. Строки. Добавить( ) ;
НоваяСтрока. Слово = ПровСлово;
Замены = ПровОбласть. GetSpellingSuggestions( , 1 , , wdSpellword) ;
ЧислоЗамен = Замены. Count;
Если ЧислоЗамен > 0 Тогда
Для НомерЗамены = 1 По ЧислоЗамен Цикл
СловоЗамены = СокрЛП( Замены. Item( НомерЗамены) . Name) ;
НоваяПодСтрока = НоваяСтрока. Строки. Добавить( ) ;
НоваяПодСтрока. Слово = СловоЗамены;
КонецЦикла ;
КонецЕсли ;
КонецЕсли ;
КонецЕсли ;
КонецЦикла ;
ВремДок. Close( wdDoNotSaveChanges, , ) ;
Если Не Ворд_Активен Тогда
Ворд. Quit( ) ;
КонецЕсли ;
КонецЕсли ;
Возврат Ложь ;
КонецЕсли ;
КонецФункции
Пример использования:
Код 1C v 8.х
Перем ДеревоЗначений;
Состояние( "Идет проверка орфографии. Пожалуйста ждите..." ) ;
Текст = ЭлементыФормы. ПолеТекстовогоДокумента. ПолучитьТекст( ) ;
Если ПроверитьОрфографию( Текст, ДеревоЗначений) Тогда
Предупреждение( "Текст ошибок не содержит!!!" , 5 , "OK" ) ;
Иначе
Если ДеревоЗначений. Строки. Количество( ) > 0 Тогда
ФормаВыбора = ЭтотОбъект. ПолучитьФорму( "ФормаВыбора" ) ;
Для каждого СтрокаДЗ Из ДеревоЗначений. Строки Цикл
Строка = ФормаВыбора. ДеревоЗначений. Строки. Добавить( ) ;
Строка. Слово = СтрокаДЗ. Слово;
Для каждого ПодСтрокаДЗ Из СтрокаДЗ. Строки Цикл
ПодСтрока = Строка. Строки. Добавить( ) ;
ПодСтрока. Слово = ПодСтрокаДЗ. Слово;
КонецЦикла ;
КонецЦикла ;
Если ФормаВыбора. ОткрытьМодально( ) = "OK" Тогда
Для каждого СтрокаДЗ Из ФормаВыбора. ДеревоЗначений. Строки Цикл
Для каждого ПодСтрокаДЗ Из СтрокаДЗ. Строки Цикл
Если ПодСтрокаДЗ. Пометка Тогда
Текст = СтрЗаменить( Текст, ПодСтрокаДЗ. Родитель. Слово, ПодСтрокаДЗ. Слово) ;
КонецЕсли ;
КонецЦикла ;
КонецЦикла ;
ЭлементыФормы. ПолеТекстовогоДокумента. УстановитьТекст( Текст) ;
КонецЕсли ;
Иначе
Предупреждение( "В тексте найдены ошибки, но вариантов автозамены не нашлось!!!" , 5 , "Ошибка" ) ;
КонецЕсли ;
КонецЕсли ;