Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Функция ПолучитьЗаказы(ДанныеАвторизации, ПараметрыПолучения) Экспорт
- PeriodFrom = глСвойствоСтруктуры(ПараметрыПолучения, "PeriodFrom");
- PeriodTo = глСвойствоСтруктуры(ПараметрыПолучения, "PeriodTo");
- PeriodType = глСвойствоСтруктуры(ПараметрыПолучения, "PeriodType");
- Statuses = глСвойствоСтруктуры(ПараметрыПолучения, "Statuses", Новый Массив);
- ПериодС = Неопределено;
- ПериодПо = Неопределено;
- ИмяПоляДаты = ?(PeriodType = "PickupDate", "ВремяПодачи", "Дата");
- Статусы = Новый Массив;
- Если ЗначениеЗаполнено(PeriodFrom) Тогда
- ПериодС = XMLЗначение(Тип("Дата"), PeriodFrom);
- КонецЕсли;
- Если ЗначениеЗаполнено(PeriodTo) Тогда
- ПериодПо = XMLЗначение(Тип("Дата"), PeriodTo);
- КонецЕсли;
- Для Каждого ИдентификаторСтатуса Из Statuses Цикл
- СтатусСсылка = ApiИнтеграцийСлужебный.ПолучитьСсылку(
- ИдентификаторСтатуса, Справочники.такСтатусыЗаказовТакси, "Статус");
- Статусы.Добавить(СтатусСсылка);
- КонецЦикла;
- ПараметрыПоиска = ApiИнтеграцийСлужебный.НовыйПараметрыПоиска();
- ПараметрыПоиска.Сортировка.Добавить(ИмяПоляДаты + " УБЫВ");
- ПараметрыПоиска.ЗначенияПараметров.Вставить("НачалоПериода", ПериодС);
- ПараметрыПоиска.ЗначенияПараметров.Вставить("ОкончаниеПериода", ПериодПо);
- ПараметрыПоиска.ЗначенияПараметров.Вставить("Статусы", Статусы);
- ЗаполнитьСтандартныеПараметрыПоиска(ПараметрыПоиска, ПараметрыПолучения);
- Если ЗначениеЗаполнено(ПериодС) И ЗначениеЗаполнено(ПериодПо) Тогда
- ПараметрыПоиска.ПараметрыЗапроса.Добавить(СтрШаблон("%1 МЕЖДУ &НачалоПериода И &ОкончаниеПериода", ИмяПоляДаты));
- ИначеЕсли ЗначениеЗаполнено(ПериодС) Тогда
- ПараметрыПоиска.ПараметрыЗапроса.Добавить(СтрШаблон("%1 >= &НачалоПериода", ИмяПоляДаты));
- ИначеЕсли ЗначениеЗаполнено(ПериодПо) Тогда
- ПараметрыПоиска.ПараметрыЗапроса.Добавить(СтрШаблон("%1 <= &ОкончаниеПериода", ИмяПоляДаты));
- КонецЕсли;
- Если Статусы.Количество() > 0 Тогда
- ПараметрыПоиска.ПараметрыЗапроса.Добавить("Статус В (&Статусы)");
- КонецЕсли;
- РезультатПоиска = НайтиЗаказы(ПараметрыПоиска, ДанныеАвторизации);
- Страница = ApiИнтеграцийСлужебный.СтраницаРезультатовПоиска(РезультатПоиска);
- Пока РезультатПоиска.Выборка.Следующий() Цикл
- Страница.Items.Добавить(ДанныеЗаказа(РезультатПоиска.Выборка));
- КонецЦикла;
- Возврат Страница;
- КонецФункции
- Функция НайтиЗаказы(ПараметрыПоиска, ДанныеАвторизации)
- ПараметрыПоиска.Поля.Добавить("Ссылка");
- ПараметрыПоиска.Поля.Добавить("Дата");
- ПараметрыПоиска.Поля.Добавить("Номер");
- ПараметрыПоиска.Поля.Добавить("Статус");
- ПараметрыПоиска.Поля.Добавить("ТипЗаказа");
- ПараметрыПоиска.Поля.Добавить("ТипПоездки");
- ПараметрыПоиска.Поля.Добавить("СуммаКОплате");
- ПараметрыПоиска.Поля.Добавить("ВремяПодачи");
- ПараметрыПоиска.Поля.Добавить("КонтактноеЛицо");
- ПараметрыПоиска.Поля.Добавить("ТелефонПредставление");
- ПараметрыПоиска.Поля.Добавить("ЭлектроннаяПочта");
- ПараметрыПоиска.Поля.Добавить("такДатаИзменения");
- ПараметрыПоиска.Таблица = "Документ.такЗаказТакси";
- ПараметрыПоиска.ПараметрыЗапроса.Добавить("ПометкаУдаления = ЛОЖЬ");
- ПараметрыПоиска.ПараметрыЗапроса.Добавить("Заказчик = &Заказчик");
- Если НЕ ДанныеАвторизации.Роли.ПросмотрВсехЗаказов Тогда
- ПараметрыПоиска.ПараметрыЗапроса.Добавить("КонтактноеЛицо = &Контакт");
- КонецЕсли;
- ПараметрыПоиска.ЗначенияПараметров.Вставить("Заказчик", ДанныеАвторизации.Контрагент);
- ПараметрыПоиска.ЗначенияПараметров.Вставить("Контакт", ДанныеАвторизации.Контакт);
- Возврат ApiИнтеграцийСлужебный.НайтиСущностиСПостраничнойНавигацией(ПараметрыПоиска);
- КонецФункции
- Функция НовыйПараметрыПоиска() Экспорт
- ПараметрыПоиска = Новый Структура;
- ПараметрыПоиска.Вставить("Поля", Новый Массив);
- ПараметрыПоиска.Вставить("НомерСтраницы", 1);
- ПараметрыПоиска.Вставить("КоличествоРезультатов", 50);
- ПараметрыПоиска.Вставить("Сортировка", Новый Массив);
- ПараметрыПоиска.Вставить("ПараметрыЗапроса", Новый Массив);
- ПараметрыПоиска.Вставить("ЗначенияПараметров", Новый Структура);
- ПараметрыПоиска.Вставить("Таблица", "");
- Возврат ПараметрыПоиска;
- КонецФункции
- Функция СтраницаРезультатовПоиска(РезультатПоиска) Экспорт
- Результат = Новый Структура;
- Результат.Вставить("Total", РезультатПоиска.Всего);
- Результат.Вставить("Items", Новый Массив);
- Возврат Результат;
- КонецФункции
- Функция НайтиСущностиСПостраничнойНавигацией(ПараметрыПоиска) Экспорт
- Поля = ПараметрыПоиска.Поля;
- НомерСтраницы = ПараметрыПоиска.НомерСтраницы;
- КоличествоРезультатов = ПараметрыПоиска.КоличествоРезультатов;
- Сортировка = ПараметрыПоиска.Сортировка;
- ПараметрыЗапроса = ПараметрыПоиска.ПараметрыЗапроса;
- ЗначенияПараметров = ПараметрыПоиска.ЗначенияПараметров;
- Таблица = ПараметрыПоиска.Таблица;
- ВсегоЗаписей = НомерСтраницы * КоличествоРезультатов;
- мТекстЗапроса = Новый Массив;
- мТекстЗапроса.Добавить("ВЫБРАТЬ ПЕРВЫЕ " + XMLСтрока(ВсегоЗаписей));
- ВыбираемыеПоля = Новый Массив;
- Для Каждого Поле Из Поля Цикл
- ВыбираемыеПоля.Добавить(СтрШаблон("Таблица.%1", Поле));
- КонецЦикла;
- мТекстЗапроса.Добавить(СтрСоединить(ВыбираемыеПоля, ",") + ",");
- мТекстЗапроса.Добавить("АВТОНОМЕРЗАПИСИ() КАК ПорядковыйНомер");
- мТекстЗапроса.Добавить("ПОМЕСТИТЬ втНачВыборка");
- мТекстЗапроса.Добавить("ИЗ " + Таблица + " КАК Таблица");
- мТекстЗапроса.Добавить("ГДЕ &ФильтрПоискаВТ;");
- мТекстЗапроса.Добавить("////////////////////////////////////////////////////////////////////////////////");
- мТекстЗапроса.Добавить("ВЫБРАТЬ * Из втНачВыборка");
- мТекстЗапроса.Добавить("ГДЕ ПорядковыйНомер МЕЖДУ &НачальныйНомерЗаписи И &КонечныйНомерЗаписи;");
- мТекстЗапроса.Добавить("////////////////////////////////////////////////////////////////////////////////");
- мТекстЗапроса.Добавить("ВЫБРАТЬ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ " + Таблица + ".Ссылка) КАК Количество");
- мТекстЗапроса.Добавить("ГДЕ &ФильтрПоиска");
- Запрос = Новый Запрос(СтрСоединить(мТекстЗапроса, Символы.ПС));
- ЗначенияПараметров.Вставить("НачальныйНомерЗаписи", (НомерСтраницы - 1) * КоличествоРезультатов + 1);
- ЗначенияПараметров.Вставить("КонечныйНомерЗаписи", ВсегоЗаписей);
- Для Каждого КиЗ Из ЗначенияПараметров Цикл
- Запрос.УстановитьПараметр(КиЗ.Ключ, КиЗ.Значение);
- КонецЦикла;
- ФильтрПоискаВТ = Новый Массив;
- Если ПараметрыЗапроса.Количество() = 0 Тогда
- ФильтрПоискаВТ.Добавить("ИСТИНА");
- Иначе
- ФильтрПоискаВТ.Добавить(СтрСоединить(ПараметрыЗапроса, Символы.ПС + " И "));
- КонецЕсли;
- ФильтрПоиска = ОбщегоНазначенияКлиентСервер.СкопироватьМассив(ФильтрПоискаВТ);
- Если Сортировка.Количество() > 0 Тогда
- ФильтрПоискаВТ.Добавить("УПОРЯДОЧИТЬ ПО");
- ФильтрПоискаВТ.Добавить(СтрСоединить(Сортировка, " ," + Символы.ПС));
- КонецЕсли;
- Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ФильтрПоискаВТ", СтрСоединить(ФильтрПоискаВТ, Символы.ПС));
- Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ФильтрПоиска", СтрСоединить(ФильтрПоиска, Символы.ПС));
- Пакет = Запрос.ВыполнитьПакет();
- Результат = Новый Структура;
- Результат.Вставить("Всего", Пакет[Пакет.ВГраница()].Выгрузить()[0].Количество);
- Результат.Вставить("Выборка", Пакет[Пакет.ВГраница()-1].Выбрать());
- Возврат Результат;
- КонецФункции
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement