Как создать простой запрос на выборку смотреть в этой статье.
Сегодня мы создаем простейшую внешнюю обработку 1С, на которую выводится результат запроса.
Чтобы понимать эту статью вам нужно ознакомиться с предыдущими статьями и понимать какие есть структуры данных во встроенном языке 1С. Здесь мы будем использовать Таблицу значений как универсальную коллекцию значений (или как их называют при изучении языков программирования это структура данных).
Запускаем 1С в режиме Конфигуратора, так как в этот раз нам понадобится визуальная разработка интерфейса и написание программы тоже понадобится.
Файл - Новый документ - Внешняя обработка.
Сразу сохраним эту внешнюю обработку на диск своего компьютера, далее периодически после написания программ и визуальных манипуляций, сохраняем все изменения в обработке в файл.
В данной обработке будет происходить следующее:
по нажатию пользователем на кнопку ВывестиНаФормуРезультатЗапроса
будет выполнен запрос к cправочнику, использованному в программном коде (можно использовать другой регистр, который потребуется в следующий раз)
и вместо отчета (отчет или таблицу с результатами мы получаем, когда используется консоль запросов) будет заполнена таблица на форме.
Смысл такой работы в том, что пользователям не всегда необходимо распечатывать отчеты или получать реестры.
Особенность внешней обработки в том, что она не только выводит результаты по запросу, но и обрабатывает данные документов либо регистров конфигурации 1С по некоторому условию (изменяет значения числовые и текстовые), которое обычно заранее поясняется программистом в комментариях в программном коде 1С либо в пояснительной записке в файле readme.txt.
Обычно, чужие внешние обработки не рекомендуется запускать на рабочих информационных базах, чтобы избежать возможных ошибок.
Все тестовые мероприятия нужно проводить на копиях информационных баз либо на копиях конфигураций и записывать в блокноте (электронном или бумажном), какие изменения вы провели.
Разбор и понимание как использовать в программировании на платформе 1С таблицы значений позволит вам разбираться в тех случаях, когда таблица на форме заполняется после выполнения обработчика события, а когда таблица на форме формируется программно.
В том случае, когда таблица на форме формируется программно, те специалисты, которые знакомы только с визуальной разработкой, то есть с конфигурированием не смогут найти форму, так как её нет в визуальном интерфейсе в Конфигураторе.
Cкачать внешнюю обработку можно в конце статьи.
Чтобы создать точно такую обработку нужно выполнить следующие действия:
1. создать реквизит и присвоить ему тип данных Таблица значений. у нас реквизит назван ТабРеквизит2.
2. Чтобы связать реквизит с формой перетащить Таблицу значений с названием ТабРеквизит2 на форму. На форме его назвать именем ТабНаФорме2.
3. Перейти на вкладку Команды, нажать кнопку Добавить. Создать команду (это кнопка) с названием ВывестиНаФормуРезультатЗапроса и перетащить её на форму, чтобы установилась связь с формой.
4. В Конфигураторе на форме щелкнуть правой клавишей по кнопке ВывестиНаФормуРезультатЗапроса и выбрать пункт Действие команды, после чего выбрать Создать &НаКлиенте и процедуру &НаСервере.
Мы выбираем именно такие директивы компиляции, потому что директива НаКлиенте позволит выполниться процедуре на тонком клиенте, в котором нет конфигуратора, а директива НаСервере позволит выполниться программе на компьютере-сервере.
&НаКлиенте
Процедура ВывестиНаФормуРезультатЗапроса(Команда)
//это вызов процедуры, которая расписана далее
ВывестиНаФормуРезультатЗапросаНаСервере();
КонецПроцедуры
&НаСервере
Процедура ВывестиНаФормуРезультатЗапросаНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.ВерсияДанных КАК ВерсияДанных,
| Товары.ПометкаУдаления КАК ПометкаУдаления,
| Товары.Код КАК Код,
| Товары.Наименование КАК Наименование,
| Товары.Артикул КАК Артикул,
| Товары.Поставщик КАК Поставщик,
| Товары.ФайлКартинки КАК ФайлКартинки,
| Товары.Вид КАК Вид,
| Товары.Штрихкод КАК Штрихкод,
| Товары.Описание КАК Описание,
| Товары.Предопределенный КАК Предопределенный,
| Товары.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Товары КАК Товары" ;
РезультатЗапроса = Запрос.Выполнить();
ТабВКоде = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.Прямой);
// процедура ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме определена выше
ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(ТабВКоде, "ТабРеквизит2", "ТабНаФорме2");
КонецПроцедуры
В переменную с названием ТабВКоде, которая имеет связь с реквизитом с типом данных таблица значений мы сохраняем содержимое простого запроса на выборку, который выбирает данные из справочника Товары. Такой справочник есть во многих конфигурациях 1С.
Далее с помощью процедуры ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме
добавляем колонки из ТабВКоде в реквизит ТабРеквизит. Для этого пишем цикл Для каждого значения, который создает колонку на форме для каждого реквизита таблицы значений, которые выбраны в запросе.
Этот цикл создает колонки, другой цикл, который также называется Для каждого Колонка из таблицы значений ТабВКоде, заполняет эти колонки элементами значений, которые хранились в таблице значений программно.
Завершается строчкой
ЗначениеВРеквизитФормы(ТабВКоде, ТабРеквизит);
чтобы значения отображались в таблице на форме с названием ТабНаФорме2, которая фактически хранит свои данные в таблице значений ТабРеквизит2, что указано в основном свойстве ПутьКДанным.
Скачать информационную базу с оригинальной конфигурацией
Cкачать внешнюю обработку Использование таблицы значений
Для вывода на форму использовался Справочник Товары, конечно же, можно использовать другой необходимый регистр, для этого нужно внести изменения в запросе и местами в программе.