Разработка в 1С 8.0

         

ActiveX


Кроме встроенных элементов управления, в 1С:Предприятии 8.0 есть возможность расположить в форме ActiveX-компоненты, написанные на других языках. Из таких компонентов можно назвать Windows Media Player, Microsoft Office Pivot Table и др..

 

 

 

 

 

 

 

 

 



АвтоКонтекстноеМеню


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



АвтоЗаголовок




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



Данные


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



Диаграмма


Элемент управления Диаграмма предназначен для показа статистических данных в наглядном графическом виде, что очень удобно для анализа. Диаграмма в 1С: Предприятии 8.0 может располагаться прямо в экранной форме, а не только в печатной форме (табличном документе).Существует возможность задать тип диаграммы: график, плоская и объемная гистограмма, круговая, изометрическая, биржевая и др. У диаграммы также может быть легенда, содержащая имена серий.

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



ИмяСохраненияПоложенияОкна


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



Индикатор


Индикатор показывает ход выполнения длительного процесса. Рекомендуется всегда его использовать во время выполнения процедур, требующих длительного времени. На пользователя это действует благотворно: он видит, что процесс идет, меньше нервничает и не прервет, чего доброго, работу программы. Но всетаки для того, чтобы пользователь мог прервать чрезмерно затянувшийся процесс (или «зависшую» программу), в теле цикла необходимо вызывать процедуру ОбработкаПрерыванияПользователя, подробнее о которой написано в документации.



ИзменениеРазмера


Признак, который разрешает или запрещает изменение размера окна.



К центру


правая и левая границы элемента привязываются к центру формы или другого элемента управления;

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

Существуют более сложные способы привязки границ, в том числе с использованием разделителей. После настройки привязок рекомендуется проверить форму с помощью тестового окна, которое вызывается по нажатии клавиш Ctrl-R или кнопки на панели редактора форм. За более подробной информацией по привязкам обращайтесь к документации.  

 



К левой границе


элемент целиком перемещается вместе с перемещением левой границы области;



К правой границе


элемент целиком перемещается вместе с перемещением правой границы области;



Как не надо


делать. Для больших динамических списков было бы более рационально спроектировать специальный отчет Остатки с периодическим обновлением.  

 

Любое табличное поле пользователь может вывести в табличный документ для печати или текстовый документ. Это возможно из контекстного меню с помощью пункта «Вывести список». При выводе табличного поля учитываются текущие отбор и сортировка списка. Есть возможность вывести только выделенные строки, а также указать, выводить или нет подчиненные объекты, например, элементы иерархического справочника нижележащих уровней.  

 



Картинка


Картинка позволяет вывести в форму графическое изображение или анимацию в формате GIF. Встроенный язык имеет средства для загрузки картинок из файлов. Кроме того, картинки могут храниться в базе данных в полях типа ХранилищеЗначений. При расположении картинки в форме есть возможность задать поведение картинки при изменении размера (прокручивать, растягивать и т.д.). Дополнительно картинка может реагировать на щелчок мыши (событие Нажатие) и может служить гиперссылкой.

В конфигурации может существовать библиотека картинок, которая располагается в ветви «Общие картинки» в дереве конфигурации. Методику работы с общими картинками можно найти в документации. Здесь отметим, что можно выбирать картинку из файла (поддерживаются все основные графические форматы: bmp, jpg, gif, tif, wmf, ico). Картинки некоторых форматов можно редактировать в специальном Редакторе картинок.



Код:


Процедура КонтрагентПриИзменении(Элемент)

Если Не Контрагент.Пустая() Тогда  

Если ТипЦен <> Контрагент.ТипЦен Тогда  

ТипЦен = Контрагент.ТипЦен;  

ПересчетЦен();  

КонецЕсли;  

КонецЕсли;  

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

 

 


Процедура ПриОткрытии()

//очищаются все страницы панели со всеми элементами управления,   

//после выполнения этого метода   

//панель имеет одну страницу и одну закладку   

Панель.Страницы.Очистить();  

   

//индекс первой страницы равен 0, изменим для нее имя и заголовок   

Панель.Страницы[0]. Имя = "СтраницаОсновные";  

Панель.Страницы[0].Заголовок = "Основные";  

   

//добавим вторую страницу, ее индекс будет 1  

Панель.Страницы.Добавить("СтраницаКартинка","Картинка",,);  

   

//добавим третью страницу, ее индекс будет 2   

Панель.Страницы.Добавить("СтраницаПрочее","Прочее",,);  

   

//сдвигаем третью страницу "Прочее" (с индексом 2)  

//на 1 позицию к началу  

Панель.Страницы.Сдвинуть(2,-1);  

   

//удалим страницу Прочее  

// в метод Удалить может передаваться номер или сама страница Панель Страницы  

Удалить(Панель.Страницы["СтраницаПрочее"]);  

   

//для страницы Картинка изменим текст заголовка  

//доступ к странице возможен по имени как к свойству коллекции Панель.Страницы.СтраницаКартинка.Заголовок = "Изображение";  

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

 




Процедура СписокПриВыводеСтроки(Элемент,

ОформлениеСтроки, ДанныеСтроки)  

//берем текущую валюту из параметра ДанныеСтроки   

ТекВалюта = ДанныеСтроки.Ссылка;  

   

//ссылка на регистр сведений  

РегКурсы = РегистрыСведений.КурсыВалют;  

   

//ссылка на оформление ячейки Курс  

ЯчейкаКурс = ОформлениеСтроки.Ячейки.Курс;  

   

//считываем курс из регистра сведений и выводим в ячейку   

Отбор = Новый Структура("Валюта",ТекВалюта);  

Курс = РегКурсы.ПолучитьПоследнее(,Отбор).Курс;  

ЯчейкаКурс.УстановитьТекст(Курс);  

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

В 1C:Предприятии 8.0 нет текстовых колонок, в которых можно вызвать функцию, как это было в версии 7.7. Вместо них предлагается использовать событие ПриВыводеСтроки, в котором можно выводить информацию в ячейки и управлять их внешним видом, используя объекты ОформлениеСтроки и ДанныеСтроки. У объекта ОформлениеСтроки есть свойство Ячейки, которое содержит коллекцию объектов ОформлениеЯчейки.  

 

Например, выведем справочник Номенклатура с указанием остатка товара на складе, а для тех товаров, у которых остаток меньше 10, установим предупреждающий цвет фона. Это позволит контролировать остатки товаров в реальном времени и вовремя заказывать дефицитные товары:  




ПроцедураСписокПриВыводеСтроки(Элемент,ОформлениеСтроки,ДанныеСтроки)  

СтруктураОтбора = Новый Структура("Номенклатура");  

СтруктураОтбора.Номенклатура = ДанныеСтроки.Ссылка;  

РегОстатки = РегистрыНакопления.УчетНоменклатуры;  

//считываем остаток из регистра  

тзОстатки = РегОстатки.Остатки(,СтруктураОтбора,  

"Номенклатура","Количество");  

Если тзОстатки.Количество() > 0 Тогда  

ОстатокТовара = тзОстатки[0].Количество;  

ЯчейкаОстаток = ОформлениеСтроки.Ячейки.Остаток;  

ЯчейкаОстаток.ОтображатъТекст = Истина;  

ЯчейкаОстаток.Текст = ОстатокТовара;  

Если ОстатокТовара < 10 Тогда  

ЯчейкаОстаток.ЦветФона = Новый Цвет(255,230,230);  

КонецЕсли;  

КонецЕсли;  

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

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




Кнопка = ЭлементыФормы.КнопкаОК;

Кнопка.ЦветТекстаКнопки = Новый Цвет(100,250,100);//зеленый

Кнопка.ЦветФонаКнопки = Новый Цвет(50,50,50);//серый

Кнопка.Рамка = Новый Рамка (ТипРамкиЭлементаУправления.Двойная,1); 

Кнопка.Шрифт = Новый Шрифт (,,Истина,Истина);//жирный и наклонный

 

//установим также сочетание клавиш Alt-P

Кнопка .СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.Р,Истина);

 

//назначим процедуру-обработчик события Нажатие 

//в модуле должна быть определена 

//процедура Сформировать с параметром Элемент 

Кнопка.УстановитьДействие("Нажатие",Новый Действие("Сформировать"));



Контекстное меню


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



КонтекстноеМеню


Значением свойства является элемент управления типа КоманднаяПанель или одна из его кнопок-подменю.

 

 

 

 

 

 

 

 



Метод ОповеститьОВыборе


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



НачалоВыбора


Событие возникает при нажатии на кнопку выбора у поля ввода или нажатии клавиши F4.



НачалоВыбораИзСписка


Событие возникает при нажатии на кнопку выбора из списка.



Например:


ПолеОклад= ЭлементыФормы.ПолеОклад;

ПолеОклад.Видимость = Истина;

ПолеОклад.МаксимальноеЗначение = 10000;

ПолеОклад.МинимальноеЗначение = 500;

ПолеОклад.ОтметкаНезаполненного = Истина;

ПолеОклад.КнопкаОчистки = Истина;

У поля ввода существует несколько событий, которые разработчик может перехватывать для выполнения каких-либо действий.  

Некоторые из этих событий приведены ниже:  


ПроцедураОткрытьФормуПодчиненногоСправочника()

СпрРасчСчета = Справочники.РасчетныеСчета;  

   

//сначала получим основную форму списка справочника   

//текущая форма будет являться владельцем для нее   

ФормаРС = СпрРасчСчета.ПолучитьФормуСписка(,ЭтаФорма);  

   

//если текущая форма будет закрыта,  

//то и дочерние формы тоже закроются  

ФормаРС.ЗакрыватьПриЗакрытииВладельца = Истина;  

   

//открыть новую форму или активизировать уже открытую  

Если ФормаРС.Открыта() Тогда  

ФормаРС.Активизировать();  

Иначе  

ФормаРС.Открыть();  

КонецЕсли;  

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

При открытии формы возникают события ПередОткрытием, ПриОткрытии или ПриПовторномОткрытии, если форма была уже открыта. При активизации уже открытой формы эти события не возникают. В процедурах-обработчиках этих событий разработчик может предусмотреть заполнение обязательных полей и других инициирующих действий. Например, он может установить параметр ТолькоПросмотр в значение Истина, и это приведет к тому, что пользователь не сможет изменить данные в форме. Необходимо понимать разницу между событиями, возникающими при открытии формы:  



ОбработкаВыбора


Это событие возникает после осуществления выбора, но до помещения выбранного значения в элемент управления.



Очистка


Это событие возникает при нажатии кнопки очистки или по комбинации клавиш Shift+F4



ОкончаниеВводаТекста


Событие возникает после окончания ввода текста при пере ходе к другому элементу управления.

Например, в расходной накладной при изменении контрагента нужно пересчитать цены в соответствии с типом цен для текущего контрагента:



Открытие


Событие возникает при нажатии на кнопку открытия объекта или комбинации клавиш Ctrl-Shift-F4.



Палитра свойств


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



Панель


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



Панель «Форматирование»


позволяет редактировать внешний вид элементов управления. Это значительный прогресс по сравнению с версией 7.7, где все свойства настраивались в специальном окне с несколькими закладками. Те же самые свойства можно редактировать напрямую через палитру свойств.Панель «Форматирование» выглядит следующим образом:



Панель «Элементы управления»


позволяет разместить в форме различные элементы управления, к которым относятся: кнопка, надпись, поле ввода, табличное поле, флажок, переключатели и т.д. Панель «Элементы управления» выглядит следующим образом:



Панель «Редактор форм»


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

 



Панель «Выравнивание»


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




ПередНачаломИзменения


Возникает перед началом интерактивного изменения строки табличного поля.

Обратите внимание на событие ПриВыводеСтроки, которое возникает при формировании каждой строки табличного поля. В этом событии можно заполнить некоторые ячейки, а также изменить оформление отдельной ячейки и всей строки. Например, требуется вывести список валют в табличное поле Список с указанием текущего курса, который хранится в регистре сведений КурсыВалют. Тогда это можно сделать следующим образом:



ПередОткрытием


Событие возникает перед открытием формы, до показа ее на экране. В обработчике события можно отказаться как от открытия формы, так и от стандартной обработки при открытии объекта.



ПередУдалением


Возникает перед удалением строки или группы строк табличного поля. В процедуре-обработчике можно отказаться от удаления строки.



Поле HTML-документа


Данный элемент управления предназначен для отображения HTML-страниц. Это могут быть как локальные страницы, так и страницы в Интернете. У этого элемента управления есть метод Перейти, который позволяет указать адрес страницы (URL) или HTML-макет, хранящийся в конфигурации.

ЭлементыФормы.ПолеНТМLДокумента.Перейти("http://www.kuban.ru/cgi-bin/forum/forum9.cgi");

После того, как HTML-документ будет полностью загружен и отображен, возникнет событие ДокументСформирован. Оно может быть обработано в программном модуле для выполнения каких-либо действий. Система 1С:Предприятие 8.0 предоставляет

доступ к HTML-документу как к СОМ-объекту, для чего предназначено свойство Документ.



Поле календаря


Элемент управления ПолеКалендаря позволяет в наглядном ре-жиме выбирать дату. Красным квадратом выделяется текущая дата. Если поле календаря расширить, то оно автоматически отразит большее количество месяцев.



Поле текстового документа


Поле текстового документа позволяет отобразить и редактировать в форме произвольный текст. Для этого элемента управления можно задать свойство «Расширение» из следующих возможных вариантов: HTML, встроенный язык и язык запросов. Тогда при отображении текста будут применены характерная цветовая палитра и другие встроенные возможности для данного содержимого. Например, для языка запросов будут выделяться ключевые слова ВЫБРАТЬ, ИЗ, ГДЕ и т.д., а из контекстного меню можно будет вызвать Конструктор запросов.



Полоса регулирования


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



ПоложениеПрикрепленногоОкна


Позволяет прикрепить окно к любому краю главного окна 1С: Предприятия: верхнему, нижнему, левому или правому.



ПриАктивизацииСтроки


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



ПриИзменении


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



ПриИзмененииФлажка


Возникает при изменении пометки строки поля списка.

 

 

 

 

 

 

 



ПриОткрытии


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



ПриПовторномОткрытии


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

Форма может быть открыта в модальном режиме с использованием метода ОткрытьМодально. В этом случае пользователь должен сначала закрыть модальную форму, прежде чем продолжать работу с другими окнами. При этом работа программы будет приостановлена до закрытия модального окна, которое может быть закрыто интерактивно или автоматически по истечении установленного времени.  

 

В модуле формы с помощью свойства МодальныйРежим можно определить, что форма открыта в модальном режиме. Ниже открывается в модальном режиме общая форма ВыборОснования. При ее закрытии она возвращает объект ДокументСсылка, содержащий выбор пользователя.  

   

ВыбДок = ПолучитьОбщуюФорму("ВыборОснования").ОткрытьМодально();  

 

Чтобы закрыть форму, можно вызвать метод Закрыть с указанием параметра закрытия. При закрытии формы возникают события ПередЗакрытием и ПриЗакрытии. В обработчике события ПередЗакрытием можно отказаться как от закрытия формы, так и от стандартной обработки при закрытии. Для форм, связанных, например, с типами ДокументОбъект и СправочникОбъект, стандартной обработкой является проверка модифицированности и задание вопроса о сохранении объекта. В обработчике события ПриЗакрытии отказаться от закрытия формы уже нельзя.  

 

В метод Закрыть можно передать параметр закрытия, который будет являться возвращаемым значением, если форма была открыта с помощью метода ОткрытьМодально.  



ПриВыводеСтроки


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



Пропорционально


при изменении размеров области размеры элемента изменяются так, что соотношение расстояний от правой границы элемента до левой и правой границы области остается постоянным;



Пунктирная стрелка


это привязка к границе с сохранением пропорций. В этом случае граница элемента стремится к привязке пропорционально расстоянию до нее.



Рамка


Рамка предназначена для визуальной группировки логически связанных элементов управления. Для рамки можно установить заголовок, цвет текста, тип и цвет рамки. Эти свойства можно также устанавливать программно. Рамка может также использоваться в качестве линии, что можно задать в ее свойстве «Рамка».



Растягивать


при горизонтальном изменении размеров области ширина элемента изменяется так, что расстояние до границ области остается постоянным;



Разделитель


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



Регулирование


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



Режим редактирования привязок границ


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



С помощью мыши


можно размещать элементы управления в форме, передвигать их и изменять их размер.

 

 

 

 

 

 

 

 

 

 

 



Ширина, Высота


Эти свойства определяют ширину и высоту формы в пунктах (логических единицах).



Синие стрелки


идут от элементов управления.

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

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

Существуют следующие способы привязки (на примере горизонтальных привязок):  



Событие ОбработкаВыбора


у формы возникает при выборе объекта в одной из подчиненных форм или при вызове в одной из подчиненных форм метода ОповеститьОВыборе.

 



Соединяемое Окно


Разрешает или запрещает соединение данного окна с другими свободными окнами.



СостояниеОкна


Определяет текущее состояние окна: обычное, прикрепленное свободное или прячущееся. Различные состояния окна могут быть разрешены или запрещены.



Сплошная стрелка


это жесткая привязка к границе. При изменении размеров формы расстояние до границы всегда сохраняется.



Стиль


Определяет стиль отображения формы.

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

 

Ниже приводится пример изменения внешнего вида обычной кнопки.  



Свойство МножественныйВыбор


разрешает или запрещает выбор нескольких строк из табличного поля. Несколько строк можно выделить мышью, удерживая клавишу Ctrl.



Свойство НачальноеЗначениеВыбора


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



Свойство РежимВыбора


определяет поведение формы при выборе элемента из главного списка формы, т.е. списка, связанного с ее основным реквизитом. Если оно установлено в значение Истина, то форма работает в режиме выбора, иначе ? в обычном режиме.



Свойство ЗакрыватьПриВыборе


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



ТипЗначения


Это свойство описывает допустимые типы значений для элемента управления.



можно программно управлять страницами


В 1С: Предприятии 8. 0 можно программно управлять страницами панели, добавляя или удаляя их, изменять порядок их следования и т.д. В следующем примере на панель формы добавляются страницы, а затем меняется их порядок.

table width="100%" cellpadding="0" cellspacing="0">  

<

Разработчик может доверить формирование контекстного меню системе (свойство АвтоКонтекстноеМеню) или использовать в качестве контекстного меню командную панель или ее кнопку-подменю.  




table width="100%" cellpadding="0" cellspacing="0"><


table width="100%" cellpadding="0" cellspacing="0">  

<


table width="100%" cellpadding="0" cellspacing="0">

Выбор


Возникает при двойном щелчке мыши или нажатии клавиши Enter на ячейке табличного поля.



ВыборЗначения


Вызывается при выборе значения из списка в режиме выбора. Выбор значения также может быть инициирован кнопкой на панели инструментов или через контекстное меню.



Заголовок


Содержит текст заголовка формы. Обратите внимание, что это свойство, а не метод, как было в версии 7.7.