Vladislav_k0ncept f16c003f46 Initial commit
2025-02-20 15:05:58 +00:00

246 lines
12 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

импорт Основное
импорт Мероприятия
импорт Общие
@Обработчик
метод ВычислитьРазрешенияДоступа(): Массив<РазрешениеДоступа>
возврат [ПользователиКлиентИСервер.ПолныеПраваНаСправочникДляАутентифицированных()]
;
@Обработчик
метод ВычислитьРазрешенияДоступаДляОбъектов(Объекты: ЧитаемыйМассив<Сделки.ДанныеРасчетаРазрешений>): Соответствие<Сделки.ДанныеРасчетаРазрешений, Массив<РазрешениеДоступа>>
знч Результат = <Сделки.ДанныеРасчетаРазрешений, Массив<РазрешениеДоступа>>{:}
знч КлиентыСделок = Объекты.Преобразовать(Объект -> Объект.Клиент!).Уникальные()
знч РегионыКлиентов = Клиенты.ПолучитьРегионыКлиентов(КлиентыСделок)
для Объект из Объекты
знч Разрешения = <РазрешениеДоступа>[
ПользователиКлиентИСервер.ПолныеПраваНаСправочникДляРуководителя(),
новый РазрешениеДоступа(
[новый КлючДоступаМенеджера.Объект(Владелец = РегионыКлиентов.Получить(Объект.Клиент))],
[Сущность.Право.Создание, Сущность.Право.Чтение, Сущность.Право.Изменение, Сущность.Право.Удаление])
]
Результат.Вставить(Объект, Разрешения)
;
возврат Результат
;
@ВПроекте
метод ПолучитьСтатистикуАктивныхСделок(): СтатистикаСделок
знч Запрос = Запрос{
ВЫБРАТЬ
КОЛИЧЕСТВО(*) КАК ОбщееКоличество,
СУММА(СуммаВВалютеУчета).ЗаменитьNull(0) КАК ОбщаяСумма
ПОРОДИТЬ СтатистикаСделок
ИЗ
Сделки
ГДЕ
Стадия.Вид == ВидСтадииСделки.Активна
}
возврат Запрос.Выполнить().Единственный()
;
@ВПроекте
метод СуммаВыигранныхСделокПоНаправлениям(): Соответствие<Направления.Ссылка, Число>
знч Запрос = Запрос{
ВЫБРАТЬ
Направление,
СУММА(СуммаВВалютеУчета) КАК Сумма
ИЗ
Сделки
ГДЕ
Стадия.Вид == ВидСтадииСделки.ЗакрытаВыиграна
СГРУППИРОВАТЬ ПО
Направление
}
исп РезультатЗапроса = Запрос.Выполнить()
знч СуммаСделок = новый Соответствие<Направления.Ссылка, Число>()
для СтрокаРезультата из РезультатЗапроса
СуммаСделок.Вставить(СтрокаРезультата.Направление, СтрокаРезультата.Сумма)
;
возврат СуммаСделок
;
@ВПроекте
метод КоличествоСделокПоАктивнымСтадиям(): Соответствие<СтадииСделок.Ссылка, Число>
знч Запрос = Запрос{
ВЫБРАТЬ
Стадия,
КОЛИЧЕСТВО(*) КАК Количество
ИЗ
Сделки
ГДЕ
Стадия.Вид == ВидСтадииСделки.Активна
СГРУППИРОВАТЬ ПО
Стадия
}
исп РезультатЗапроса = Запрос.Выполнить()
знч КоличествоСделок = новый Соответствие<СтадииСделок.Ссылка, Число>()
для СтрокаРезультата из РезультатЗапроса
КоличествоСделок.Вставить(СтрокаРезультата.Стадия, СтрокаРезультата.Количество)
;
возврат КоличествоСделок
;
@ВПроекте
метод ПолучитьДанныеСделок(Сделки: ЧитаемыйМассив<Сделки.Ссылка>): ЧитаемыйМассив<ДанныеСделки>
знч Запрос = Запрос{
ВЫБРАТЬ
Сделки.Ссылка КАК Ссылка,
Сделки.Код КАК Код,
Сделки.Наименование КАК Наименование,
Сделки.Ответственный КАК Ответственный,
Сделки.ДатаСоздания КАК ДатаСоздания,
Сделки.ДатаЗакрытия КАК ДатаЗакрытия,
Сделки.Клиент КАК Клиент,
Сделки.Стадия КАК Стадия,
Сделки.СуммаВВалютеСделки КАК СуммаВВалютеСделки,
Сделки.СуммаВВалютеУчета КАК СуммаВВалютеУчета,
Сделки.ВалютаСделки.Код.ЗаменитьNull(Неопределено) КАК КодВалютыСделки,
КОЛИЧЕСТВО(Задачи.Ссылка) КАК КоличествоОткрытыхЗадач
ЗАПОЛНИТЬ ДанныеСделки
ИЗ
Сделки КАК Сделки
ЛЕВОЕ СОЕДИНЕНИЕ Задачи КАК Задачи
ПО Сделки.Ссылка == Задачи.Владелец
И Задачи.Статус В (СтатусМероприятия.Запланировано, СтатусМероприятия.ВПроцессе)
ГДЕ
Сделки.Ссылка В (%Сделки)
СГРУППИРОВАТЬ ПО
Сделки.Ссылка,
Сделки.Код,
Сделки.Наименование,
Сделки.Ответственный,
Сделки.ДатаСоздания,
Сделки.ДатаЗакрытия,
Сделки.Клиент,
Сделки.Стадия,
Сделки.СуммаВВалютеСделки,
Сделки.СуммаВВалютеУчета,
Сделки.ВалютаСделки.Код
УПОРЯДОЧИТЬ ПО
ДатаСоздания УБЫВ
}
возврат Запрос.Выполнить().ВМассив()
;
@ВПроекте
метод ПолучитьКлиентаСделки(Сделка: Сделки.Ссылка): Клиенты.Ссылка?
знч Запрос = Запрос{
ВЫБРАТЬ
Сделки.Клиент
ИЗ
Сделки КАК Сделки
ГДЕ
Ссылка == %Сделка
}
возврат Запрос.Выполнить().Единственный().Клиент
;
@ВПроекте
метод ПолучитьРегионыСделок(Сделки: Коллекция<Сделки.Ссылка>): ЧитаемоеСоответствие<Сделки.Ссылка, Регионы.Ссылка>
знч Запрос = Запрос{
ВЫБРАТЬ
Ссылка КАК Сделка,
Клиент.Регион.ЗаменитьNull(Неопределено) КАК Регион
ИЗ
Сделки
Где
Ссылка В (%Сделки)
}
знч РегионыСделок = <Сделки.Ссылка, Регионы.Ссылка>{:}
исп РезультатЗапроса = Запрос.Выполнить()
для СтрокаРезультата из РезультатЗапроса
РегионыСделок.Вставить(СтрокаРезультата.Сделка, СтрокаРезультата.Регион)
;
возврат РегионыСделок
;
@ВПроекте
метод ПолучитьЗадачиСделки(Сделка: Сделки.Ссылка): ЧитаемыйМассив<Задачи.Ссылка>
возврат ПолучитьЗадачиСделок([Сделка])
;
@ВПроекте
метод ПолучитьЗадачиСделок(Сделки: Обходимое<Сделки.Ссылка>): ЧитаемыйМассив<Задачи.Ссылка>
знч Запрос = Запрос{
ВЫБРАТЬ
Ссылка
ИЗ
Задачи
ГДЕ
Владелец В (%Сделки)
}
возврат Запрос.Выполнить().Преобразовать(СтрокаРезультатаЗапроса -> СтрокаРезультатаЗапроса.Ссылка)
;
@ВПроекте
метод ПолучитьСобытияСделки(Сделка: Сделки.Ссылка): ЧитаемыйМассив<События.Ссылка>
возврат ПолучитьСобытияСделок([Сделка])
;
@ВПроекте
метод ПолучитьСобытияСделок(Сделки: Обходимое<Сделки.Ссылка>): ЧитаемыйМассив<События.Ссылка>
знч Запрос = Запрос{
ВЫБРАТЬ
Ссылка
ИЗ
События
ГДЕ
Владелец В (%Сделки)
}
возврат Запрос.Выполнить().Преобразовать(СтрокаРезультатаЗапроса -> СтрокаРезультатаЗапроса.Ссылка)
;
@ВПодсистеме
@НаСервере @ДоступноСКлиента
метод ЕстьЗадачиПоСделке(Сделка: Сделки.Ссылка): Булево
знч Запрос = Запрос{
ВЫБРАТЬ ПЕРВЫЕ 1
Ссылка
ИЗ
Задачи
ГДЕ
Владелец == %Сделка
}
исп РезультатЗапроса = Запрос.Выполнить()
возврат не РезультатЗапроса.Пусто()
;
@ВПодсистеме
@НаСервере @ДоступноСКлиента
метод ЕстьСобытияПоСделке(Сделка: Сделки.Ссылка): Булево
знч Запрос = Запрос{
ВЫБРАТЬ ПЕРВЫЕ 1
Ссылка
ИЗ
События
ГДЕ
Владелец == %Сделка
}
исп РезультатЗапроса = Запрос.Выполнить()
возврат не РезультатЗапроса.Пусто()
;