Найти в Дзене
Программист 1С

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

Рассмотрим на примере решения простой задачи: Загрузить справочник «Валюта» в табличную часть новой внешней обработки. 1.Создаем новую внешнюю обработку Конфигуратор-->Файл-->Новый-->Внешняя обработка-->OK. 1.1.Зададим имя обработки--> «ЗагрузкаВТЧОбработкиИзВыборки». 1.2. Добавим новый реквизит Дата : Встать курсором на область «Реквизиты» ->C помощью пиктограммки «Добавить»--> добавить реквизит "Дата". Cвойства реквизита Дата: 1.3. Добавим новую табличную часть с именем «ТЧ_Валюты»: Встать курсором на область Табличные части-->Нажать пиктограммку «Добавить» . Задать имя новой табличной части (в нашем примере имя = "ТЧ_Валюты"). 1.4.Добавим новые реквизиты табличной части «ТЧ_Валюты» ( такие как Валюта ,НаименваниеПолное , ЦифровойКод.) Встать курсором на табличную часть «ТЧ_Валюты»-->Нажать пиктограммку «Добавить»: Задать имя нового реквизита табличной части (в нашем примере ="Валюта","НаименваниеПолное","ЦифровойКод"). Свойства реквизита «Валюта» нашей табличной части «ТЧ_Валю

Рассмотрим на примере решения простой задачи: Загрузить справочник «Валюта» в табличную часть новой внешней обработки.

1.Создаем новую внешнюю обработку

Конфигуратор-->Файл-->Новый-->Внешняя обработка-->OK.

1.1.Зададим имя обработки--> «ЗагрузкаВТЧОбработкиИзВыборки».

1.2. Добавим новый реквизит Дата :

Встать курсором на область «Реквизиты» ->C помощью пиктограммки «Добавить»-->

добавить реквизит "Дата".

-2

Cвойства реквизита Дата:

-3
-4

1.3. Добавим новую табличную часть с именем «ТЧ_Валюты»:

Встать курсором на область Табличные части-->Нажать пиктограммку «Добавить» .

Задать имя новой табличной части (в нашем примере имя = "ТЧ_Валюты").

-5

1.4.Добавим новые реквизиты табличной части «ТЧ_Валюты»

( такие как Валюта ,НаименваниеПолное , ЦифровойКод.)

Встать курсором на табличную часть «ТЧ_Валюты»-->Нажать пиктограммку «Добавить»:

Задать имя нового реквизита табличной части (в нашем примере ="Валюта","НаименваниеПолное","ЦифровойКод").

Свойства реквизита «Валюта» нашей табличной части «ТЧ_Валюты»:

Выбрать Типà СправочникСсылка.Валюты

-6

В модуле формы на событии формы ПриОткрытии Создать на клиенте процедуру для

заполнения поля «Дата» текущей датой:

&НаКлиенте

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

Объект.Дата = ТекущаяДата();

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

Свойства реквизита «НаименованиеПолное» нашей табличной части «ТЧ_Вылюты»:

-7

1.5. Создадим новую форму

Встать курсором на раздел Формы-->Нажать пиктограммку «Добавить»

Задать имя форме = «Форма».

-8
-9

В результате получили управляемую форму:

-10

Где в правом окне на закладке Реквизиты отображается Объект с созданными реквизитами.

В левом окошке на закладке "Элементы" отображаются элементы формы ,соответствующие реквизитам в правом окне.

Внизу на закладке Форма--> визуальное представление созданной управляемой формы ,где можно увидеть расположение созданных и выбранных в форму элементов.

2. Добавить новую команду «Выполнить» в правом окне на закладке «Команды»:

-11

2.1. Перетащить с помощью мыши Команду «Выполнить» в левое окно или на форму.

-12

3. Создать на клиенте процедуру КомандаВыполнить(Команда) на закладке «Модуль», которая будет выполняться при нажатии на кнопку «Выполнить».

-13

//_______________________________________________________________________________________

// 3. Процедура КомандаВыполнить(Команда) // для вывода оповещения пользователю :

&НаКлиенте

Процедура КомандаВыполнить(Команда)

Оповещение = Новый ОписаниеОповещения("РезультатВопроса",ЭтаФорма);

//"РезультатаВопроса" = имя процедуры,которая будет выполняться после Закрытия окна вопроса

ПоказатьВопрос(Оповещение,

"Вы действительно хотите выполнить программу?#",//Текст вопроса

РежимДиалогаВопрос.ДаНетОтмена,// Наличие кнопок

0,//Параметр,который показывает количество секунд до автоматического закрытия окна вопроса (параметр необязательный ).

КодВозвратаДиалога.Да,// Параметр для определения кнопки по умолчанию (параметр необязательный).

"Предупреждение!" // Текст для заголовка сообщения (параметр необязательный )

);

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

//_____________________________________________________________________________

// 4. Процедура обработки результата вопроса :

&НаКлиенте

Процедура РезультатВопроса(Результат,Параметры) Экспорт

Если Результат =КодВозвратаДиалога.Да Тогда

//Очищаем табличную часть перед заполнением

Объект.ТЧ_Валюты.Очистить();

//Вызываем процедуру на сервере,результатом работы которой будет заполнение табличной части обработки =ТЧ_Валюты данными.

ЗапонитьТабличнуюЧастьОбработкиНаСервере();

КонецЕсли;

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

//___________________________________________________________________________

// 5. Процедура для заполнения табличной части обработки :

&НаСервере

Процедура ЗапонитьТабличнуюЧастьОбработкиНаСервере()

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ

| Валюты.Ссылка КАК Ссылка,

| Валюты.Наименование КАК Наименование,

| Валюты.Код КАК Код,

| Валюты.НаименованиеПолное КАК НаименованиеПолное

|ИЗ

| Справочник.Валюты КАК Валюты";

Выборка = Запрос.Выполнить().Выбрать();

//Объект доступен на сервере,поэтому табличную часть обработки можно заполнять прямо на сервере.

//_____ Заполняем табличную часть_______

Пока Выборка.Следующий() Цикл //Цикл для перехода по строкам Выборки

стр= Объект.ТЧ_Валюты.Добавить(); //Добавляем новую строку табличной части обработки

// Заполняем поля табличной части выборки значениями из Выборки.

стр.Валюта = Выборка.Ссылка; // Заполняем поле Валюта табличной части выборки значением из Выборки

стр.ЦифровойКод = Выборка.Код;

стр.НаименованиеПолное = Выборка.НаименованиеПолное;

Сообщить("Программа выполнена!");

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

//_____________________________________________________________________________

6. Написать в модуле объекта функцию для подключения внешней обработки с её описанием:

Функция СведенияОВнешнейОбработке() Экспорт

ДанныеДляРег = Новый Структура();

ДанныеДляРег.Вставить("Наименование", "ЗагрузкаВТЧОбработкиИзВыборки");

ДанныеДляРег.Вставить("БезопасныйРежим", Истина);

ДанныеДляРег.Вставить("Версия", "ver.: 1.001");

ДанныеДляРег.Вставить("Информация", "Автор: Иванов ;ЗагрузкаВТЧОбработкиИзВыборки");

ДанныеДляРег.Вставить("Вид", "ДополнительнаяОбработка");

ТабЗнКоманды = Новый ТаблицаЗначений;

ТабЗнКоманды.Колонки.Добавить("Идентификатор");

ТабЗнКоманды.Колонки.Добавить("Использование");

ТабЗнКоманды.Колонки.Добавить("Представление");

НовСтрока = ТабЗнКоманды.Добавить();

НовСтрока.Идентификатор = "ОткрытьОбработку";

НовСтрока.Использование = "ОткрытиеФормы";

НовСтрока.Представление = "Открыть обработку";

ДанныеДляРег.Вставить("Команды", ТабЗнКоманды);

Возврат ДанныеДляРег;

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

-14
-15

Подключить внешнюю обработку-->Запустить обработку-->Нажать кнопку «Выполнить».

-16

Фото : pixabay
Фото : pixabay