Поиск документов
Все введенные документы отражаются в форме списка. Часто требуется из многочисленного количества документов отобрать только определенную категорию документов по какому-либо принципу.
Рассмотрим ситуацию, когда требуется обеспечить отбор документов по дате. Для этого потребуется форма с новым набором элементов управления.
Создадим обработку ВыборкаДокументов. Сформируем форму со следующими элементами управления (Рис.10):
поле ввода Дата1 для ввода начальной даты (тип данных - Дата);
поле ввода Дата2 для ввода конечной даты (тип данных - Дата);
поле списка ПереченьДокументов.
Рис. 10. Форма для организации отбора документов
Далее создадим процедуру обработки нажатия на кнопку Выполнить, которая представлена в листинге 2.
Листинг 2. Процедура отбора документов по дате
&НаСервере
Процедура ВыполнитьОбработкуНаСервере()
НачальнаяДата = НачалоДня(Дата1);
КонечнаяДата = КонецДня(Дата2);
ВыборкаЗаказ = Документы.Заказ.Выбрать(НачальнаяДата,КонечнаяДата);
ПереченьДокументов.Очистить();
Пока ВыборкаЗаказ.Следующий() Цикл
Информация = Символы.ПС + "Номер документа: " + ВыборкаЗаказ.Номер +
"Дата документа: " + ВыборкаЗаказ.Дата;
ПереченьДокументов.Добавить(Информация);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьОбработку(Команда)
ВыполнитьОбработкуНаСервере();
КонецПроцедуры
Поля Дата1 и Дата2 используются для указания начала и окончания интервала по дате. Для того чтобы получить документы, попадающие в интервал, были использованы две встроенные функции:
НачалоДня(), которая возвращает дату и время начала дня для указанной даты;
КонецДня(),которая возвращает дату и время конца дня для указанной даты.
Отбор найденных документов отражается в поле списка. Для этого он предварительно очищается, вызванным методом Очистить(), а с помощью метода Выбрать() производится выборка документов в диапазоне указанных дат. Первый параметр метода задает начальную дату поиска, а второй – конечную. Далее организуется цикл обхода отобранных записей с помощью метода Следующий().
Если в методе Выбрать() не указать интервал по дате, то из базы данных будут выбраны все документы данного вида.
В режиме «1С: Предприятие « можно просмотреть список отобранных документов (Рис.11).
Рис. 11. Результат отбора документов по дате
Задание для самостоятельного выполнения
Создайте обработку с именем ВыборкаДокументов.
Для обработки ВыборкаДокументов создайте форму.
Создайте элементы управления:
поле ввода с именем Дата1 и типом данных – Дата для ввода начальной даты;
поле ввода с именем Дата2 и типом данных – Дата для ввода конечной даты;
поле списка ПереченьДокументов.
Напишите процедуру обслуживающую кнопку Выполнить, воспользовавшись примером, приведенным выше.
Просмотрите полученный результат в режиме «1С: Предприятие «.
Включение в условие отбора параметра. Упорядочивание
Часто следует выбирать не все записи из базы данных, а лишь те, которые имеют конкретное значение в определенном поле (например, заказы конкретной фирмы). В обработке ВыборкаДокументов создадим форму с элементами управления:
поле ввода Фирма (тип данных – СправочникСсылка.Фирмы);
поле списка ПереченьДокументов.
На Рис. 12 приведена форма с элементами управления.
Рис. 12. Форма для отбора документов по фирме
Для кнопки Выполнить необходимо создать процедуру обработки, которая приведена в листинге 3.
Листинг 3. Процедура отбора документов по фирме и с упорядочиванием по дате
&НаСервере
Процедура ВыполнитьОбработкуНаСервере()
Отбор = Новый Структура ("Заказчик", Фирма);
Упорядочивание = "Дата Возр";
ВыборкаДокументов = Документы.Заказ.Выбрать(, , Отбор, УпорядочиваниЕ);
ПереченьДокументов.Очистить();
Пока ВыборкаДокументов.Следующий() Цикл
Информация = Символы.ПС + "Номер документа: " + ВыборкаДокументов.Номер +
" Дата: " + ВыборкаДокументов.Дата;
ПереченьДокументов.Добавить(Информация);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьОбработку(Команда)
ВыполнитьОбработкуНаСервере();
КонецПроцедуры
Для передачи параметра использовался объект Структура. Условие отбора задается при помощи третьего аргумента. Имеется возможность осуществлять упорядочивание по какому-либо полю, для которого установлено свойство индексирования. Значение упорядочивания задается в четвертом аргументе.
Результат выбора документов из базы данных по указанному условию и с упорядочиванием по дате (Рис.13).
Рис. 13. Форма для отбора документов по фирме с упорядочиванием по дате
Задание для самостоятельного выполнения
Для обработки ВыборкаДокументов создайте еще одну форму.
Создайте элемент управления поле ввода с именем Фирма и типом данных – СправочникСсылка.Фирмы и поле списка ПереченьДокументов.
Напишите процедуру с условием отбора и упорядочиванием по дате, обслуживающую кнопку Выполнить, воспользовавшись примером, приведенным выше.
Просмотрите полученный результат в режиме «1С: Предприятие».