Initial commit
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
/.theia
|
||||
/.vscode
|
80
Koncept/Testovoe/Мероприятия/Задачи.xbsl
Normal file
@ -0,0 +1,80 @@
|
||||
импорт Основное
|
||||
импорт Пресейл
|
||||
|
||||
@Обработчик
|
||||
метод ВычислитьРазрешенияДоступа(): Массив<РазрешениеДоступа>
|
||||
возврат [ПользователиКлиентИСервер.ПолныеПраваНаСправочникДляАутентифицированных()]
|
||||
;
|
||||
|
||||
@Обработчик
|
||||
метод ВычислитьРазрешенияДоступаДляОбъектов(Объекты: ЧитаемыйМассив<Задачи.ДанныеРасчетаРазрешений>): ЧитаемоеСоответствие<Задачи.ДанныеРасчетаРазрешений, ЧитаемаяКоллекция<РазрешениеДоступа>>
|
||||
знч СделкиЗадач = Объекты
|
||||
.Фильтровать(Объект -> Объект.Владелец != Неопределено)
|
||||
.Преобразовать(Объект -> Объект.Владелец!)
|
||||
|
||||
знч РегионыСделок = Сделки.ПолучитьРегионыСделок(СделкиЗадач)
|
||||
|
||||
знч Результат = <Задачи.ДанныеРасчетаРазрешений, Массив<РазрешениеДоступа>>{:}
|
||||
|
||||
для Объект из Объекты
|
||||
знч Разрешения = <РазрешениеДоступа>[]
|
||||
|
||||
Разрешения.Добавить(ПользователиКлиентИСервер.ПолныеПраваНаСправочникДляРуководителя())
|
||||
|
||||
знч Регион = РегионыСделок.ПолучитьИлиУмолчание(Объект.Владелец)
|
||||
|
||||
если Регион != Неопределено
|
||||
Разрешения.Добавить(
|
||||
новый РазрешениеДоступа(
|
||||
[новый КлючДоступаМенеджера.Объект(Владелец = Регион)],
|
||||
[Сущность.Право.Создание, Сущность.Право.Чтение, Сущность.Право.Изменение, Сущность.Право.Удаление])
|
||||
)
|
||||
;
|
||||
|
||||
Результат.Вставить(Объект, Разрешения)
|
||||
;
|
||||
|
||||
возврат Результат
|
||||
;
|
||||
|
||||
@ВПроекте
|
||||
метод КоличествоОткрытыхЗадачСотрудника(Сотрудник: Сотрудники.Ссылка): ЧитаемоеСоответствие<СтатусМероприятия, Число>
|
||||
знч Запрос = Запрос{
|
||||
ВЫБРАТЬ
|
||||
Статус КАК Статус,
|
||||
КОЛИЧЕСТВО(*) КАК КоличествоЗадач
|
||||
ИЗ
|
||||
Задачи
|
||||
ГДЕ
|
||||
Ответственный == %Сотрудник
|
||||
И Статус В (СтатусМероприятия.Запланировано, СтатусМероприятия.ВПроцессе)
|
||||
СГРУППИРОВАТЬ ПО
|
||||
Статус
|
||||
}
|
||||
|
||||
знч ЗадачиПоНаправлениям = <СтатусМероприятия, Число>{
|
||||
СтатусМероприятия.Запланировано : 0,
|
||||
СтатусМероприятия.ВПроцессе : 0
|
||||
}
|
||||
|
||||
исп РезультатЗапроса = Запрос.Выполнить()
|
||||
для СтрокаРезультата из РезультатЗапроса
|
||||
ЗадачиПоНаправлениям.Вставить(СтрокаРезультата.Статус, СтрокаРезультата.КоличествоЗадач)
|
||||
;
|
||||
|
||||
возврат ЗадачиПоНаправлениям
|
||||
;
|
||||
|
||||
@ВПодсистеме
|
||||
метод ПолучитьЗадачиСотрудника(Сотрудник: Сотрудники.Ссылка): ЧитаемыйМассив<Задачи.Ссылка>
|
||||
знч Запрос = Запрос{
|
||||
ВЫБРАТЬ
|
||||
Ссылка
|
||||
ИЗ
|
||||
Задачи КАК Задачи
|
||||
ГДЕ
|
||||
Ответственный == %Сотрудник
|
||||
}
|
||||
|
||||
возврат Запрос.Выполнить().Преобразовать(Строка -> Строка.Ссылка)
|
||||
;
|
78
Koncept/Testovoe/Мероприятия/Задачи.yaml
Normal file
@ -0,0 +1,78 @@
|
||||
ВидЭлемента: Справочник
|
||||
Ид: 406e6ddd-779f-42c3-8272-5a50d0974dc2
|
||||
Имя: Задачи
|
||||
ОбластьВидимости: ВПроекте
|
||||
Импорт:
|
||||
- Основное
|
||||
- Пресейл
|
||||
КонтрольДоступа:
|
||||
Разрешения:
|
||||
ПоУмолчанию: РазрешенияВычисляютсяДляКаждогоОбъекта
|
||||
РасчетРазрешенийПо:
|
||||
- Владелец
|
||||
Интерфейс:
|
||||
Список:
|
||||
Представление: $ЛокализованныеСтроки.Задачи
|
||||
Форма: ЗадачиФормаСписка
|
||||
Объект:
|
||||
Представление: $ЛокализованныеСтроки.Задача
|
||||
Форма: ЗадачиФормаОбъекта
|
||||
Представление: Наименование
|
||||
Реквизиты:
|
||||
-
|
||||
Имя: Код
|
||||
Тип: Строка
|
||||
Длина: 20
|
||||
Автонумерация:
|
||||
Формат:
|
||||
РазделительПрефикса: "-"
|
||||
ДлинаПрефикса: -1
|
||||
Префикс: ДЕМО
|
||||
-
|
||||
Имя: Наименование
|
||||
Длина: 100
|
||||
НезаполненноеЗначение: ЗапретитьВсегда
|
||||
-
|
||||
Имя: Владелец
|
||||
Тип: Сделки.Ссылка?
|
||||
ИспользоватьВПолнотекстовомПоиске: Ложь
|
||||
-
|
||||
Ид: 83e6d427-a1b3-4c67-8839-f611e812c5cc
|
||||
Имя: ДатаСоздания
|
||||
Тип: Момент
|
||||
НезаполненноеЗначение: ЗапретитьВсегда
|
||||
ИспользоватьВПолнотекстовомПоиске: Ложь
|
||||
-
|
||||
Ид: 032807ca-8fbb-43fe-93e5-28b151fa187b
|
||||
Имя: Ответственный
|
||||
Тип: Сотрудники.Ссылка?
|
||||
ИспользоватьВПолнотекстовомПоиске: Ложь
|
||||
-
|
||||
Ид: 1a68d1aa-d5aa-47a9-8fd6-b5c8c714c30e
|
||||
Имя: Описание
|
||||
Тип: Строка
|
||||
-
|
||||
Ид: e963b98d-e66d-4447-912d-fd6eea07de87
|
||||
Имя: ДатаНачала
|
||||
Тип: Момент
|
||||
ИспользоватьВПолнотекстовомПоиске: Ложь
|
||||
-
|
||||
Ид: 67b99b06-e049-4dd3-8f6d-a9941e2e9066
|
||||
Имя: ДатаЗавершения
|
||||
Тип: Момент
|
||||
ИспользоватьВПолнотекстовомПоиске: Ложь
|
||||
-
|
||||
Ид: 57b437d2-5747-4fc5-a4a9-89450a276aac
|
||||
Имя: Статус
|
||||
Тип: СтатусМероприятия?
|
||||
ИспользоватьВПолнотекстовомПоиске: Ложь
|
||||
-
|
||||
Ид: 29cc7ab3-162e-46cb-a097-200e1bf2de95
|
||||
Имя: Приоритет
|
||||
Тип: ПриоритетЗадачи
|
||||
ИспользоватьВПолнотекстовомПоиске: Ложь
|
||||
Индексы:
|
||||
-
|
||||
Имя: Ответственный
|
||||
Поля:
|
||||
- Ответственный
|
14
Koncept/Testovoe/Мероприятия/Задачи.Объект.xbsl
Normal file
@ -0,0 +1,14 @@
|
||||
импорт Основное
|
||||
|
||||
@Обработчик
|
||||
метод ПриЗаполнении()
|
||||
Ответственный = ПользователиКлиентИСервер.ПолучитьТекущегоСотрудника()
|
||||
Статус = СтатусМероприятия.Запланировано
|
||||
;
|
||||
|
||||
@ВПроекте
|
||||
метод Завершить()
|
||||
Статус = СтатусМероприятия.Завершено
|
||||
ДатаЗавершения = Момент.Сейчас()
|
||||
Записать()
|
||||
;
|
58
Koncept/Testovoe/Мероприятия/ЗадачиФормаОбъекта.xbsl
Normal file
@ -0,0 +1,58 @@
|
||||
импорт Основное
|
||||
импорт Пресейл
|
||||
|
||||
@Обработчик
|
||||
метод ПослеЧтения()
|
||||
если ЭтоНовый()
|
||||
Объект.Владелец = Сделка
|
||||
;
|
||||
;
|
||||
|
||||
@Обработчик
|
||||
метод ПередЗаписьюОбъекта()
|
||||
пер ПоляНеЗаполнены: Булево
|
||||
если Объект.Наименование.Сократить().Пусто()
|
||||
Компоненты.ПолеВводаНаименование.РезультатПроверкиДанных = РезультатПроверкиДанных.Ошибка
|
||||
ПоляНеЗаполнены = Истина
|
||||
иначе
|
||||
Компоненты.ПолеВводаНаименование.РезультатПроверкиДанных = РезультатПроверкиДанных.Отсутствует
|
||||
;
|
||||
если Объект.Владелец == Неопределено
|
||||
Компоненты.ПолеВводаСделка.РезультатПроверкиДанных = РезультатПроверкиДанных.Ошибка
|
||||
ПоляНеЗаполнены = Истина
|
||||
иначе
|
||||
Компоненты.ПолеВводаСделка.РезультатПроверкиДанных = РезультатПроверкиДанных.Отсутствует
|
||||
;
|
||||
если Объект.Статус == Неопределено
|
||||
Компоненты.ПолеВводаСтатус.РезультатПроверкиДанных = РезультатПроверкиДанных.Ошибка
|
||||
ПоляНеЗаполнены = Истина
|
||||
иначе
|
||||
Компоненты.ПолеВводаСтатус.РезультатПроверкиДанных = РезультатПроверкиДанных.Отсутствует
|
||||
;
|
||||
если ПоляНеЗаполнены
|
||||
выбросить новый ИсключениеВалидации("Не заполнены обязательные поля", ОтображатьСообщениеОбОшибке = Ложь)
|
||||
;
|
||||
|
||||
если ЭтоНовый()
|
||||
Объект.ДатаСоздания = Момент.Сейчас()
|
||||
иначе
|
||||
ПоказыватьУведомление = Ложь
|
||||
;
|
||||
;
|
||||
|
||||
@Обработчик
|
||||
метод ПослеЗаписиОбъекта()
|
||||
ЗаписанаЗадача.Оповестить()
|
||||
|
||||
если ПоказыватьУведомление
|
||||
знч Уведомление = новый Уведомление(ЛокализованныеСтроки.СозданиеЗадачи(), ЛокализованныеСтроки.СозданаЗадача(Объект.Наименование))
|
||||
Уведомление.Данные = КлючОбъекта
|
||||
Уведомление.ОценкаИнформации = ОценкаИнформации.Положительная
|
||||
Уведомление.Показать()
|
||||
;
|
||||
;
|
||||
|
||||
@Обработчик
|
||||
метод ПослеУдаленияОбъекта(ПараметрыУдаления: Объект)
|
||||
ЗаписанаЗадача.Оповестить()
|
||||
;
|
90
Koncept/Testovoe/Мероприятия/ЗадачиФормаОбъекта.yaml
Normal file
@ -0,0 +1,90 @@
|
||||
ВидЭлемента: КомпонентИнтерфейса
|
||||
Ид: f24541dc-7bc3-4a83-96e0-d7c6db75df4d
|
||||
Имя: ЗадачиФормаОбъекта
|
||||
ОбластьВидимости: ВПроекте
|
||||
Импорт:
|
||||
- Основное
|
||||
- Пресейл
|
||||
Свойства:
|
||||
-
|
||||
Имя: Сделка
|
||||
Тип: Сделки.Ссылка?
|
||||
-
|
||||
Имя: ПоказыватьУведомление
|
||||
Тип: Булево
|
||||
ЗначениеПоУмолчанию: Истина
|
||||
Наследует:
|
||||
Тип: ФормаОбъекта<Задачи.Объект>
|
||||
Заголовок: $ЛокализованныеСтроки.Задача
|
||||
ОсновнаяКоманда: =ЗаписатьИЗакрыть
|
||||
ОбычныеКоманды:
|
||||
Тип: ФрагментКомандногоИнтерфейса<Команда>
|
||||
Элементы:
|
||||
- =Записать
|
||||
- =Удалить
|
||||
Содержимое:
|
||||
Тип: ПроизвольныйШаблонФормы
|
||||
ШиринаВКолонках: Двойная
|
||||
Содержимое:
|
||||
Тип: АвтоматическаяГруппа
|
||||
Содержимое:
|
||||
-
|
||||
Тип: ПолеВвода<Строка>
|
||||
Заголовок: $ЛокализованныеСтроки.Код
|
||||
Доступность: Ложь
|
||||
Значение: =Объект.Код
|
||||
-
|
||||
Тип: ПолеВвода<Сделки.Ссылка?>
|
||||
Имя: ПолеВводаСделка
|
||||
Заголовок: $Пресейл::ЛокализованныеСтроки.Сделка
|
||||
Доступность: =(Сделка == Неопределено)
|
||||
Значение: =Объект.Владелец
|
||||
НастройкиВводаСсылок:
|
||||
НастройкиПоТипу:
|
||||
-
|
||||
Ключ: Сделки.Ссылка
|
||||
Значение:
|
||||
Фильтр:
|
||||
Элементы:
|
||||
-
|
||||
Тип: ЭлементФильтра
|
||||
Поле: Стадия.Вид
|
||||
ВидСравнения: Равно
|
||||
Значение:
|
||||
Тип: ВидСтадииСделки
|
||||
Значение: Активна
|
||||
Обязательное: Истина
|
||||
СообщениеОшибка: $Общие::ЛокализованныеСтроки.ОбязательноеПоле
|
||||
-
|
||||
Тип: ПолеВвода<Строка>
|
||||
Имя: ПолеВводаНаименование
|
||||
Заголовок: $ЛокализованныеСтроки.Наименование
|
||||
Значение: =Объект.Наименование
|
||||
ШиринаВКолонках: Двойная
|
||||
Обязательное: Истина
|
||||
СообщениеОшибка: $Общие::ЛокализованныеСтроки.ОбязательноеПоле
|
||||
-
|
||||
Тип: ПолеВвода<Строка>
|
||||
Заголовок: $ЛокализованныеСтроки.Описание
|
||||
Значение: =Объект.Описание
|
||||
НастройкиВводаСтроки:
|
||||
Многострочная: Истина
|
||||
-
|
||||
Тип: ПолеВвода<Сотрудники.Ссылка?>
|
||||
Заголовок: $ЛокализованныеСтроки.Ответственный
|
||||
Значение: =Объект.Ответственный
|
||||
-
|
||||
Тип: ПолеВвода<ПриоритетЗадачи>
|
||||
Заголовок: $ЛокализованныеСтроки.Приоритет
|
||||
Значение: =Объект.Приоритет
|
||||
-
|
||||
Тип: ПолеВвода<СтатусМероприятия?>
|
||||
Имя: ПолеВводаСтатус
|
||||
Заголовок: $ЛокализованныеСтроки.Статус
|
||||
Значение: =Объект.Статус
|
||||
Обязательное: Истина
|
||||
СообщениеОшибка: $Общие::ЛокализованныеСтроки.ОбязательноеПоле
|
||||
-
|
||||
Тип: ПолеВвода<Момент>
|
||||
Заголовок: $ЛокализованныеСтроки.ДатаЗавершения
|
||||
Значение: =Объект.ДатаЗавершения
|
73
Koncept/Testovoe/Мероприятия/ЗадачиФормаСписка.xbsl
Normal file
@ -0,0 +1,73 @@
|
||||
импорт Общие
|
||||
импорт Основное
|
||||
|
||||
конст ИМЯ_ФАЙЛА_ВЫГРУЗКИ = "Задачи.xls"
|
||||
|
||||
метод ПриЧтенииНастроекТаблицы(Источник: Таблица<ДинамическийСписок>, Событие: СобытиеСДанными<Массив<СохраненнаяНастройкаТаблицы>>)
|
||||
знч НастройкаМоиЗадачи = новый СохраненнаяНастройкаТаблицы("Мои задачи")
|
||||
|
||||
НастройкаМоиЗадачи.Фильтр.Элементы.Добавить(новый ЭлементФильтра(
|
||||
Поле = "Статус",
|
||||
ВидСравнения = ВидСравнения.ВСписке,
|
||||
Значение = новый Массив<СтатусМероприятия>([СтатусМероприятия.Запланировано, СтатусМероприятия.ВПроцессе]),
|
||||
Использовать = Истина
|
||||
))
|
||||
|
||||
знч Сотрудник = ПользователиКлиентИСервер.ПолучитьТекущегоСотрудника()
|
||||
если Сотрудник != Неопределено
|
||||
НастройкаМоиЗадачи.Фильтр.Элементы.Добавить(новый ЭлементФильтра(
|
||||
Поле = "Ответственный",
|
||||
ВидСравнения = ВидСравнения.Равно,
|
||||
Значение = Сотрудник,
|
||||
Использовать = Истина
|
||||
))
|
||||
;
|
||||
|
||||
НастройкаМоиЗадачи.Сортировка.Добавить(новый ЭлементСортировки(
|
||||
Поле = "ДатаСоздания",
|
||||
НаправлениеСортировки = НаправлениеСортировки.ПоУбыванию
|
||||
))
|
||||
|
||||
Событие.Данные.Добавить(НастройкаМоиЗадачи)
|
||||
;
|
||||
|
||||
@Обработчик
|
||||
метод ПослеСоздания()
|
||||
ТекущийСотрудник = ПользователиКлиентИСервер.ПолучитьТекущегоСотрудника()
|
||||
;
|
||||
|
||||
метод ОтмеченныеЗадачиВЗавершенные(Команда: КомандаСПараметром<Массив<Сущность.Ключ>>, Отмеченные: Массив<Сущность.Ключ>)
|
||||
знч Задачи = Отмеченные.Преобразовать(Задача -> Задача как Задачи.Ссылка)
|
||||
|
||||
Компоненты.ТаблицаСписка.ОчиститьОтмеченныеСтроки()
|
||||
ЗавершитьЗадачи(Задачи)
|
||||
Компоненты.ТаблицаСписка.Обновить()
|
||||
|
||||
знч Уведомление = новый Уведомление(ЛокализованныеСтроки.ЗавершениеЗадач(), ЛокализованныеСтроки.ЗадачиПомеченыКакЗавершенные())
|
||||
Уведомление.ОценкаИнформации = ОценкаИнформации.Положительная
|
||||
Уведомление.Показать()
|
||||
;
|
||||
|
||||
метод ОтмеченныеЗадачиВФайл(Команда: КомандаСПараметром<Массив<Сущность.Ключ>>, Отмеченные: Массив<Сущность.Ключ>)
|
||||
знч Задачи = Отмеченные.Преобразовать(Задача -> Задача как Задачи.Ссылка)
|
||||
|
||||
знч ДвоичнаяСсылка = МероприятияКлиентИСервер.ВыгрузитьЗадачиВExcel(Задачи)
|
||||
ВыгрузкаФайлов.НачатьВыгрузку(ДвоичнаяСсылка, ИМЯ_ФАЙЛА_ВЫГРУЗКИ)
|
||||
;
|
||||
|
||||
метод МоиЗадачиВФайлПриНажатии(Команда: ОбычнаяКоманда)
|
||||
если ТекущийСотрудник != Неопределено
|
||||
знч ДвоичнаяСсылка = МероприятияКлиентИСервер.ВыгрузитьЗадачиСотрудникаВExcel(ТекущийСотрудник)
|
||||
ВыгрузкаФайлов.НачатьВыгрузку(ДвоичнаяСсылка, ИМЯ_ФАЙЛА_ВЫГРУЗКИ)
|
||||
;
|
||||
;
|
||||
|
||||
@НаСервере @ДоступноСКлиента
|
||||
статический метод ЗавершитьЗадачи(Задачи: Массив<Задачи.Ссылка>)
|
||||
для Задача из Задачи
|
||||
знч ЗадачаОбъект = Задача.ЗагрузитьОбъект()
|
||||
если ЗадачаОбъект.Статус != СтатусМероприятия.Завершено
|
||||
ЗадачаОбъект.Завершить()
|
||||
;
|
||||
;
|
||||
;
|
137
Koncept/Testovoe/Мероприятия/ЗадачиФормаСписка.yaml
Normal file
@ -0,0 +1,137 @@
|
||||
ВидЭлемента: КомпонентИнтерфейса
|
||||
Ид: bc76475a-3766-4064-8247-954b95ad46cd
|
||||
Имя: ЗадачиФормаСписка
|
||||
ОбластьВидимости: ВПроекте
|
||||
Импорт:
|
||||
- Общие
|
||||
- Основное
|
||||
Свойства:
|
||||
-
|
||||
Имя: ТекущийСотрудник
|
||||
Тип: Сотрудники.Ссылка?
|
||||
Наследует:
|
||||
Тип: ФормаСписка
|
||||
Заголовок: $ЛокализованныеСтроки.Задачи
|
||||
КомпонентТаблицы: =Компоненты.ТаблицаСписка
|
||||
КомандыСоздания: =Создать
|
||||
ДополнительныеКоманды:
|
||||
Тип: ФрагментКомандногоИнтерфейса<Команда>
|
||||
Элементы:
|
||||
-
|
||||
Тип: ОбычнаяКоманда
|
||||
Представление: $ЛокализованныеСтроки.МоиЗадачиВФайл
|
||||
Изображение: СкачатьВКруге.svg
|
||||
Доступность: =ТекущийСотрудник != Неопределено
|
||||
Обработчик: МоиЗадачиВФайлПриНажатии
|
||||
Содержимое:
|
||||
Тип: ПроизвольныйШаблонФормы
|
||||
Содержимое:
|
||||
Тип: Таблица<ДинамическийСписок>
|
||||
Имя: ТаблицаСписка
|
||||
Источник:
|
||||
ОсновнаяТаблица:
|
||||
Таблица: Задачи
|
||||
Поля:
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Код
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Наименование
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: ДатаСоздания
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Владелец.Клиент
|
||||
Псевдоним: Владелец_Клиент
|
||||
Представление: Клиент
|
||||
ОтображатьВНастройкахФильтров: Истина
|
||||
ОтображатьВПростыхФильтрах: Истина
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Владелец
|
||||
Представление: Сделка
|
||||
ОтображатьВНастройкахФильтров: Истина
|
||||
ОтображатьВПростыхФильтрах: Истина
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Приоритет
|
||||
ОтображатьВНастройкахФильтров: Истина
|
||||
ОтображатьВПростыхФильтрах: Истина
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Ответственный
|
||||
ОтображатьВНастройкахФильтров: Истина
|
||||
ОтображатьВПростыхФильтрах: Истина
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: ДатаЗавершения
|
||||
ОтображатьВНастройкахФильтров: Истина
|
||||
ОтображатьВПростыхФильтрах: Истина
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Статус
|
||||
ОтображатьВНастройкахФильтров: Истина
|
||||
ОтображатьВПростыхФильтрах: Истина
|
||||
Сортировка:
|
||||
-
|
||||
Поле: ДатаСоздания
|
||||
НаправлениеСортировки: ПоУбыванию
|
||||
ПрокруткаПоВертикали: Истина
|
||||
ОтображатьНастройки: Истина
|
||||
ИспользованиеПоиска: Ложь
|
||||
Навигация: ПодгрузкаПриПрокрутке
|
||||
КомандыНадОтмеченнымиСтроками:
|
||||
Тип: ФрагментКомандногоИнтерфейса<КомандаСПараметром<Массив<Сущность.Ключ>>>
|
||||
Элементы:
|
||||
-
|
||||
Тип: КомандаСПараметром<Массив<Сущность.Ключ>>
|
||||
Представление: $ЛокализованныеСтроки.ВЗавершенные
|
||||
Изображение: Галочка.svg
|
||||
Обработчик: ОтмеченныеЗадачиВЗавершенные
|
||||
-
|
||||
Тип: КомандаСПараметром<Массив<Сущность.Ключ>>
|
||||
Представление: $ЛокализованныеСтроки.ВыгрузитьВФайл
|
||||
Изображение: Скачать.svg
|
||||
Обработчик: ОтмеченныеЗадачиВФайл
|
||||
ИспользоватьОтметкиСтрок: Истина
|
||||
ПриЧтенииНастроекТаблицы: ПриЧтенииНастроекТаблицы
|
||||
Колонки:
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.ДатаСоздания
|
||||
ПолеЗначения: ДатаСоздания
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $Пресейл::ЛокализованныеСтроки.Клиент
|
||||
ПолеЗначения: Владелец_Клиент
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $Пресейл::ЛокализованныеСтроки.Сделка
|
||||
ПолеЗначения: Владелец
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Наименование
|
||||
ПолеЗначения: Наименование
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Приоритет
|
||||
ПолеЗначения: Приоритет
|
||||
Вид: Значок
|
||||
Цвет: =(ДанныеСтроки.Данные["Приоритет"] как ПриоритетЗадачи).ПолучитьЦвет()
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Ответственный
|
||||
ПолеЗначения: Ответственный
|
||||
ОбрабатыватьНажатие: Ложь
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Статус
|
||||
ПолеЗначения: Статус
|
||||
Вид: Значок
|
||||
Цвет: =(ДанныеСтроки.Данные["Статус"] как СтатусМероприятия).ПолучитьЦвет()
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Код
|
||||
ПолеЗначения: Код
|
4
Koncept/Testovoe/Мероприятия/ЗаписанаЗадача.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
ВидЭлемента: ГлобальноеКлиентскоеСобытие
|
||||
Ид: 1966d887-44a4-4954-871d-47b769ecd557
|
||||
Имя: ЗаписанаЗадача
|
||||
ОбластьВидимости: ВПроекте
|
4
Koncept/Testovoe/Мероприятия/ЗаписаноСобытие.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
ВидЭлемента: ГлобальноеКлиентскоеСобытие
|
||||
Ид: 5a365589-8804-43f6-82a6-841728aac4e1
|
||||
Имя: ЗаписаноСобытие
|
||||
ОбластьВидимости: ВПроекте
|
@ -0,0 +1,62 @@
|
||||
Строки:
|
||||
Мероприятия: Activities
|
||||
Задачи: Tasks
|
||||
События: Events
|
||||
Задача: Task
|
||||
ДобавитьЗадачу: Add task
|
||||
МоиЗадачи: My tasks
|
||||
Событие: Event
|
||||
ДатаСоздания: Creation date
|
||||
ДатаНачала: Start date
|
||||
ДатаЗавершения: Due date
|
||||
Описание: Description
|
||||
Ответственный: Assigned to
|
||||
Статус: Status
|
||||
Код: Code
|
||||
Наименование: Name
|
||||
ВЗавершенные: To completed
|
||||
Участники: Participants
|
||||
Участник: Participant
|
||||
ДобавитьУчастника: Add participant
|
||||
УдалитьУчастника: Delete participant
|
||||
ВыберитеУчастника: Select participant
|
||||
НоваяЗадача: New task
|
||||
НовоеСобытие: New event
|
||||
ДобавлениеУчастника: Adding participant
|
||||
Роль: Role
|
||||
Добавить: Add
|
||||
Сохранить: Save
|
||||
Создать: Create
|
||||
Удалить: Delete
|
||||
Завершить: Complete
|
||||
СозданиеЗадачи: Task creation
|
||||
ЗавершениеЗадач: Tasks completion
|
||||
ЗавершениеМероприятия: Activity completion
|
||||
ЗадачиПомеченыКакЗавершенные: Selected tasks are marked as completed
|
||||
СозданиеСобытия: Event creation
|
||||
УдалениеМероприятия: Removing an activity
|
||||
ДобавитьМероприятие: Add an activity
|
||||
ДляСозданияМероприятийСохранитеСделку: Save the deal to create activities
|
||||
ДляСозданияНажмитеДобавитьМероприятие: To create press Add an activity
|
||||
ВсеМероприятия: All activities
|
||||
Сегодня: Today
|
||||
Запланировано: Is planned
|
||||
ВПроцессе: In progress
|
||||
Завершено: Completed
|
||||
Отменено: Canceled
|
||||
Организатор: Organizer
|
||||
ПриглашенныйУчастник: Guest
|
||||
НетМероприятийПоСделке: No deal activities
|
||||
Приоритет: Priority
|
||||
Низкий: Low
|
||||
Обычный: Normal
|
||||
Высокий: High
|
||||
МоиЗадачиВФайл: My tasks to file
|
||||
ВыгрузитьВФайл: Save to file
|
||||
НетУчастниковСобытия: You have not added any participant yet...
|
||||
Шаблоны:
|
||||
СозданаЗадача: "Task \"$0\" created"
|
||||
СозданоСобытие: "Event \"$0\" created"
|
||||
МероприятиеЗавершено: "Activity \"$0\" completed"
|
||||
ПодтвеждениеУдаленияСобытия: "Are you sure you want to delete event \"$0\"?"
|
||||
ПодтвеждениеУдаленияЗадачи: "Are you sure you want to delete task \"$0\"?"
|
68
Koncept/Testovoe/Мероприятия/ЛокализованныеСтроки.yaml
Normal file
@ -0,0 +1,68 @@
|
||||
ВидЭлемента: ЛокализованныеСтроки
|
||||
Ид: d0adc076-d030-4546-bd1a-8b497668b0fc
|
||||
Имя: ЛокализованныеСтроки
|
||||
ОбластьВидимости: ВПроекте
|
||||
Строки:
|
||||
Мероприятия: Мероприятия
|
||||
Задачи: Задачи
|
||||
События: События
|
||||
Задача: Задача
|
||||
ДобавитьЗадачу: Добавить задачу
|
||||
МоиЗадачи: Мои задачи
|
||||
Событие: Событие
|
||||
ДатаСоздания: Дата создания
|
||||
ДатаНачала: Дата начала
|
||||
ДатаЗавершения: Дата завершения
|
||||
Описание: Описание
|
||||
Ответственный: Ответственный
|
||||
Статус: Статус
|
||||
Код: Код
|
||||
Наименование: Наименование
|
||||
НеВыбрано: Не выбрано
|
||||
ПодсказкаПоляПоискаМероприятий: Код, клиент, сделка или наименование
|
||||
ВЗавершенные: В завершенные
|
||||
Участники: Участники
|
||||
Участник: Участник
|
||||
ДобавитьУчастника: Добавить участника
|
||||
УдалитьУчастника: Удалить участника
|
||||
ВыберитеУчастника: Выберите участника
|
||||
НоваяЗадача: Новая задача
|
||||
НовоеСобытие: Новое событие
|
||||
ДобавлениеУчастника: Добавление участника
|
||||
Роль: Роль
|
||||
Добавить: Добавить
|
||||
Сохранить: Сохранить
|
||||
Создать: Создать
|
||||
Удалить: Удалить
|
||||
Завершить: Завершить
|
||||
СозданиеЗадачи: Создание задачи
|
||||
ЗавершениеЗадач: Завершение задач
|
||||
ЗавершениеМероприятия: Завершение мероприятия
|
||||
ЗадачиПомеченыКакЗавершенные: Выбранные задачи помечены как завершенные
|
||||
СозданиеСобытия: Создание события
|
||||
УдалениеМероприятия: Удаление мероприятия
|
||||
ДобавитьМероприятие: Добавить мероприятие
|
||||
ДляСозданияМероприятийСохранитеСделку: Для создания мероприятий сохраните сделку
|
||||
ДляСозданияНажмитеДобавитьМероприятие: Для создания нажмите Добавить мероприятие
|
||||
ВсеМероприятия: Все мероприятия
|
||||
Сегодня: Сегодня
|
||||
Запланировано: Запланировано
|
||||
ВПроцессе: В процессе
|
||||
Завершено: Завершено
|
||||
Отменено: Отменено
|
||||
Организатор: Организатор
|
||||
ПриглашенныйУчастник: Приглашенный участник
|
||||
НетМероприятийПоСделке: Нет мероприятий по сделке
|
||||
Приоритет: Приоритет
|
||||
Низкий: Низкий
|
||||
Обычный: Обычный
|
||||
Высокий: Высокий
|
||||
МоиЗадачиВФайл: Мои задачи в файл
|
||||
ВыгрузитьВФайл: Выгрузить в файл
|
||||
НетУчастниковСобытия: Вы не добавили ещё ни одного участника...
|
||||
Шаблоны:
|
||||
СозданаЗадача: "Создана задача \"$0\""
|
||||
СозданоСобытие: "Создано событие \"$0\""
|
||||
МероприятиеЗавершено: "Мероприятие \"$0\" завершено"
|
||||
ПодтвеждениеУдаленияСобытия: "Вы уверены, что хотите удалить событие \"$0\""
|
||||
ПодтвеждениеУдаленияЗадачи: "Вы уверены, что хотите удалить задачу \"$0\""
|
72
Koncept/Testovoe/Мероприятия/МероприятияКлиентИСервер.xbsl
Normal file
@ -0,0 +1,72 @@
|
||||
импорт Основное
|
||||
|
||||
@ВПодсистеме
|
||||
@НаСервере @ДоступноСКлиента
|
||||
метод ВыгрузитьЗадачиСотрудникаВExcel(Сотрудник: Сотрудники.Ссылка): ДвоичныйОбъект.Ссылка
|
||||
знч ЗадачиСотрудника = Задачи.ПолучитьЗадачиСотрудника(Сотрудник)
|
||||
возврат ВыгрузитьЗадачиВExcel(ЗадачиСотрудника)
|
||||
;
|
||||
|
||||
@ВПодсистеме
|
||||
@НаСервере @ДоступноСКлиента
|
||||
метод ВыгрузитьЗадачиВExcel(Задачи: ЧитаемыйМассив<Задачи.Ссылка>): ДвоичныйОбъект.Ссылка
|
||||
знч МакетДанные = Ресурс{МакетТаблицыЗадач.mxl}.ОткрытьПотокЧтения()
|
||||
пер Макет = ТабличныйДокумент.Прочитать(МакетДанные)
|
||||
МакетДанные.Закрыть()
|
||||
|
||||
знч ИтоговыйТабличныйДокумент = новый ТабличныйДокумент()
|
||||
знч Писатель = ИтоговыйТабличныйДокумент.Запись
|
||||
|
||||
знч ЗапросДанныхЗадач = новый ПроизвольныйЗапрос(
|
||||
"ВЫБРАТЬ
|
||||
ДатаСоздания КАК Дата,
|
||||
Владелец КАК Сделка,
|
||||
Наименование,
|
||||
Приоритет,
|
||||
Статус,
|
||||
Код
|
||||
ИЗ
|
||||
Задачи
|
||||
ГДЕ
|
||||
Ссылка В (&МассивСсылок)")
|
||||
|
||||
знч ШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы")
|
||||
знч СтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы")
|
||||
|
||||
Писатель.ВывестиВертикально(ШапкаТаблицы)
|
||||
|
||||
пер Счетчик = 0
|
||||
знч РазмерПакета = 500
|
||||
|
||||
пока Счетчик < Задачи.Размер()
|
||||
знч ВерхняяГраница = Мин(Счетчик + РазмерПакета, Задачи.Размер())
|
||||
знч ПакетСсылок = Задачи.ПодМассив(Счетчик, ВерхняяГраница)
|
||||
ЗапросДанныхЗадач.УстановитьПараметр("МассивСсылок", ПакетСсылок)
|
||||
|
||||
исп ДанныеЗадач = ЗапросДанныхЗадач.Выполнить()
|
||||
|
||||
для ДанныеЗадачи из ДанныеЗадач
|
||||
знч ОбластьСтроки = СтрокаТаблицы.ВВыводимуюОбласть()
|
||||
|
||||
знч ПараметрыОбласти: Соответствие<Строка, Объект> = {
|
||||
"Дата": ДанныеЗадачи.Дата.Представление(),
|
||||
"Сделка": ДанныеЗадачи.Сделка.Представление(),
|
||||
"Наименование": ДанныеЗадачи.Наименование,
|
||||
"Приоритет": ДанныеЗадачи.Приоритет.Представление(),
|
||||
"Статус": ДанныеЗадачи.Статус.Представление(),
|
||||
"Код": ДанныеЗадачи.Код
|
||||
}
|
||||
|
||||
ОбластьСтроки.ЗаполнитьПараметры(ПараметрыОбласти)
|
||||
Писатель.ВывестиВертикально(ОбластьСтроки)
|
||||
|
||||
Счетчик += 1
|
||||
;
|
||||
;
|
||||
|
||||
знч БайтыТаблицы = ИтоговыйТабличныйДокумент.ЭкспортироватьВБайты(ФорматЭкспортаТабличногоДокумента.Xls)
|
||||
знч СвойстваДвоичногоОбъекта = новый ДвоичныйОбъект.Свойства("ВыгрузкаЗадач").Временные()
|
||||
знч Результат = ОбъектноеХранилище.ЗагрузитьИзБайт(Байты = БайтыТаблицы, Свойства = СвойстваДвоичногоОбъекта)
|
||||
|
||||
возврат Результат.Ссылка
|
||||
;
|
@ -0,0 +1,6 @@
|
||||
ВидЭлемента: ОбщийМодуль
|
||||
Ид: e33f6f48-7b80-47ff-b660-130903607243
|
||||
Имя: МероприятияКлиентИСервер
|
||||
ОбластьВидимости: ВПодсистеме
|
||||
Окружение: КлиентИСервер
|
||||
|
4
Koncept/Testovoe/Мероприятия/Подсистема.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
Использование:
|
||||
- Общие
|
||||
- Основное
|
||||
- Пресейл
|
15
Koncept/Testovoe/Мероприятия/ПриоритетЗадачи.xbsl
Normal file
@ -0,0 +1,15 @@
|
||||
/**
|
||||
Описание:
|
||||
Определение цвета фона бейджа, соответствующего приоритету задачи
|
||||
*/
|
||||
@ВПроекте
|
||||
метод ПолучитьЦвет(): Цвет | Авто
|
||||
выбор этот
|
||||
когда Низкий
|
||||
возврат Цвета.Желтый
|
||||
когда Обычный
|
||||
возврат Цвета.Синий
|
||||
когда Высокий
|
||||
возврат Цвета.Красный
|
||||
;
|
||||
;
|
18
Koncept/Testovoe/Мероприятия/ПриоритетЗадачи.yaml
Normal file
@ -0,0 +1,18 @@
|
||||
ВидЭлемента: Перечисление
|
||||
Ид: 5d2a2b03-8c93-4af6-a9fa-db95c523fc6b
|
||||
Имя: ПриоритетЗадачи
|
||||
ОбластьВидимости: ВПроекте
|
||||
Элементы:
|
||||
-
|
||||
Ид: e7aacd76-81ee-44eb-925c-dcb5918f93a1
|
||||
Имя: Низкий
|
||||
Представление: $ЛокализованныеСтроки.Низкий
|
||||
-
|
||||
Ид: f9bbfe05-21e6-4a1d-b87a-2d0f1b071da0
|
||||
Имя: Обычный
|
||||
Представление: $ЛокализованныеСтроки.Обычный
|
||||
ПоУмолчанию: Истина
|
||||
-
|
||||
Ид: 09c77530-4c0a-4391-9146-2346084d969e
|
||||
Имя: Высокий
|
||||
Представление: $ЛокализованныеСтроки.Высокий
|
4
Koncept/Testovoe/Мероприятия/Ресурсы/ЗадачаВРамке.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M0 10C0 4.47715 4.47715 0 10 0H30C35.5228 0 40 4.47715 40 10V30C40 35.5228 35.5228 40 30 40H10C4.47715 40 0 35.5228 0 30V10Z" fill="#E6E6FF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M28.1818 10C28.6343 10 29 10.3558 29 10.7941V28.2647C29 28.7031 28.6343 29.0588 28.1818 29.0588H11.8182C11.3657 29.0588 11 28.7031 11 28.2647V10.7941C11 10.3558 11.3657 10 11.8182 10H28.1818ZM26.5455 26.6765V12.3824H24.0909V14.7647H21.6364C21.6364 13.8872 20.9041 13.1765 20 13.1765C19.0959 13.1765 18.3636 13.8872 18.3636 14.7647H15.9091V12.3824H13.4545V26.6765H26.5455ZM19.1604 23.7647C18.9455 23.7647 18.7306 23.6838 18.5668 23.5229L16.2941 21.2885L17.4813 20.1214L19.1604 21.7722L22.5187 18.4706L23.7059 19.6377L19.754 23.5229C19.5903 23.6838 19.3754 23.7647 19.1604 23.7647Z" fill="#5855FA"/>
|
||||
</svg>
|
After Width: | Height: | Size: 906 B |
BIN
Koncept/Testovoe/Мероприятия/Ресурсы/МакетТаблицыЗадач.mxl
Normal file
@ -0,0 +1,7 @@
|
||||
<svg width="78" height="78" viewBox="0 0 78 78" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M0 74.6086C0 76.4823 1.51761 77.9999 3.3913 77.9999H74.6087C76.4824 77.9999 78 76.4823 78 74.6086V23.739H0V74.6086Z" fill="#F2F2F2"/>
|
||||
<path d="M74.6087 6.78271H3.3913C1.51761 6.78271 0 8.30032 0 10.174V23.7392H78V10.174C78 8.30032 76.4824 6.78271 74.6087 6.78271Z" fill="#FF6961"/>
|
||||
<path d="M15.261 15.2609V1.69565C15.261 0.759652 16.0206 0 16.9566 0H20.3479C21.2839 0 22.0436 0.759652 22.0436 1.69565V15.2609C22.0436 16.1969 21.2839 16.9565 20.3479 16.9565H16.9566C16.0206 16.9565 15.261 16.1969 15.261 15.2609Z" fill="#400300"/>
|
||||
<path d="M55.9565 15.2609V1.69565C55.9565 0.759652 56.7162 0 57.6522 0H61.0435C61.9795 0 62.7392 0.759652 62.7392 1.69565V15.2609C62.7392 16.1969 61.9795 16.9565 61.0435 16.9565H57.6522C56.7162 16.9565 55.9565 16.1969 55.9565 15.2609Z" fill="#400300"/>
|
||||
<path d="M49.1739 47.4784H40.6956V39.0001C40.6956 38.0641 39.9376 37.3044 38.9999 37.3044C38.0622 37.3044 37.3043 38.0641 37.3043 39.0001V47.4784H28.826C27.8883 47.4784 27.1304 48.238 27.1304 49.174C27.1304 50.11 27.8883 50.8697 28.826 50.8697H37.3043V59.3479C37.3043 60.2839 38.0622 61.0436 38.9999 61.0436C39.9376 61.0436 40.6956 60.2839 40.6956 59.3479V50.8697H49.1739C50.1115 50.8697 50.8695 50.11 50.8695 49.174C50.8695 48.238 50.1115 47.4784 49.1739 47.4784Z" fill="#70B5FF"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
BIN
Koncept/Testovoe/Мероприятия/Ресурсы/ПустойСписокУчастников.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
@ -0,0 +1,3 @@
|
||||
<svg width="18" height="20" viewBox="0 0 18 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M16 18H2V7H16V18ZM13 0V2H5V0H3V2H2C1.46957 2 0.960859 2.21071 0.585786 2.58579C0.210714 2.96086 0 3.46957 0 4V18C0 18.5304 0.210714 19.0391 0.585786 19.4142C0.960859 19.7893 1.46957 20 2 20H16C16.5304 20 17.0391 19.7893 17.4142 19.4142C17.7893 19.0391 18 18.5304 18 18V4C18 3.46957 17.7893 2.96086 17.4142 2.58579C17.0391 2.21071 16.5304 2 16 2H15V0H13ZM7.88 11H4.27L7.19 13.11L6.08 16.56L9 14.43L11.92 16.56L10.8 13.12L13.72 11H10.12L9 7.56L7.88 11Z" fill="currentColor"/>
|
||||
</svg>
|
After Width: | Height: | Size: 589 B |
4
Koncept/Testovoe/Мероприятия/Ресурсы/СобытиеВРамке.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M0 10C0 4.47715 4.47715 0 10 0H30C35.5228 0 40 4.47715 40 10V30C40 35.5228 35.5228 40 30 40H10C4.47715 40 0 35.5228 0 30V10Z" fill="#F6E6FF"/>
|
||||
<path d="M27 28H13V17H27V28ZM24 10V12H16V10H14V12H13C12.4696 12 11.9609 12.2107 11.5858 12.5858C11.2107 12.9609 11 13.4696 11 14V28C11 28.5304 11.2107 29.0391 11.5858 29.4142C11.9609 29.7893 12.4696 30 13 30H27C27.5304 30 28.0391 29.7893 28.4142 29.4142C28.7893 29.0391 29 28.5304 29 28V14C29 13.4696 28.7893 12.9609 28.4142 12.5858C28.0391 12.2107 27.5304 12 27 12H26V10H24ZM18.88 21H15.27L18.19 23.11L17.08 26.56L20 24.43L22.92 26.56L21.8 23.12L24.72 21H21.12L20 17.56L18.88 21Z" fill="#B92EFF"/>
|
||||
</svg>
|
After Width: | Height: | Size: 758 B |
13
Koncept/Testovoe/Мероприятия/РольУчастникаМероприятия.yaml
Normal file
@ -0,0 +1,13 @@
|
||||
ВидЭлемента: Перечисление
|
||||
Ид: 73931242-dfc4-439d-a12b-a3ec3fa217f6
|
||||
Имя: РольУчастникаМероприятия
|
||||
ОбластьВидимости: ВПроекте
|
||||
Элементы:
|
||||
-
|
||||
Ид: a97101d2-8516-4e66-99e7-039aa2a5a638
|
||||
Имя: Организатор
|
||||
Представление: $ЛокализованныеСтроки.Организатор
|
||||
-
|
||||
Ид: 9979d9b2-c75d-4503-ac37-0d56ec18bec8
|
||||
Имя: ПриглашенныйУчастник
|
||||
Представление: $ЛокализованныеСтроки.ПриглашенныйУчастник
|
38
Koncept/Testovoe/Мероприятия/События.xbsl
Normal file
@ -0,0 +1,38 @@
|
||||
импорт Основное
|
||||
импорт Пресейл
|
||||
|
||||
@Обработчик
|
||||
метод ВычислитьРазрешенияДоступа(): Массив<РазрешениеДоступа>
|
||||
возврат [ПользователиКлиентИСервер.ПолныеПраваНаСправочникДляАутентифицированных()]
|
||||
;
|
||||
|
||||
@Обработчик
|
||||
метод ВычислитьРазрешенияДоступаДляОбъектов(Объекты: ЧитаемыйМассив<События.ДанныеРасчетаРазрешений>): ЧитаемоеСоответствие<События.ДанныеРасчетаРазрешений, ЧитаемаяКоллекция<РазрешениеДоступа>>
|
||||
знч СделкиСобытий = Объекты
|
||||
.Фильтровать(Объект -> Объект.Владелец != Неопределено)
|
||||
.Преобразовать(Объект -> Объект.Владелец!)
|
||||
|
||||
знч РегионыСделок = Сделки.ПолучитьРегионыСделок(СделкиСобытий)
|
||||
|
||||
знч Результат = <События.ДанныеРасчетаРазрешений, Массив<РазрешениеДоступа>>{:}
|
||||
|
||||
для Объект из Объекты
|
||||
знч Разрешения = <РазрешениеДоступа>[]
|
||||
|
||||
Разрешения.Добавить(ПользователиКлиентИСервер.ПолныеПраваНаСправочникДляРуководителя())
|
||||
|
||||
знч Регион = РегионыСделок.ПолучитьИлиУмолчание(Объект.Владелец)
|
||||
|
||||
если Регион != Неопределено
|
||||
Разрешения.Добавить(
|
||||
новый РазрешениеДоступа(
|
||||
[новый КлючДоступаМенеджера.Объект(Владелец = Регион)],
|
||||
[Сущность.Право.Создание, Сущность.Право.Чтение, Сущность.Право.Изменение, Сущность.Право.Удаление])
|
||||
)
|
||||
;
|
||||
|
||||
Результат.Вставить(Объект, Разрешения)
|
||||
;
|
||||
|
||||
возврат Результат
|
||||
;
|
68
Koncept/Testovoe/Мероприятия/События.yaml
Normal file
@ -0,0 +1,68 @@
|
||||
ВидЭлемента: Справочник
|
||||
Ид: 17c884df-fd27-48d8-a6c5-75c87bf0e20f
|
||||
Имя: События
|
||||
ОбластьВидимости: ВПроекте
|
||||
Импорт:
|
||||
- Основное
|
||||
- Пресейл
|
||||
КонтрольДоступа:
|
||||
Разрешения:
|
||||
ПоУмолчанию: РазрешенияВычисляютсяДляКаждогоОбъекта
|
||||
РасчетРазрешенийПо:
|
||||
- Владелец
|
||||
Интерфейс:
|
||||
Список:
|
||||
Представление: $ЛокализованныеСтроки.События
|
||||
Форма: СобытияФормаСписка
|
||||
Объект:
|
||||
Представление: $ЛокализованныеСтроки.Событие
|
||||
Форма: СобытияФормаОбъекта
|
||||
Представление: Наименование
|
||||
Реквизиты:
|
||||
-
|
||||
Имя: Код
|
||||
Тип: Строка
|
||||
Длина: 20
|
||||
Автонумерация:
|
||||
Формат:
|
||||
РазделительПрефикса: "-"
|
||||
ДлинаПрефикса: -1
|
||||
Префикс: ДЕМО
|
||||
-
|
||||
Имя: Наименование
|
||||
Длина: 100
|
||||
НезаполненноеЗначение: ЗапретитьВсегда
|
||||
-
|
||||
Имя: Владелец
|
||||
Тип: Сделки.Ссылка?
|
||||
ИспользоватьВПолнотекстовомПоиске: Ложь
|
||||
-
|
||||
Ид: cdf1f408-87ed-4ed3-817e-991b530e5254
|
||||
Имя: ДатаСоздания
|
||||
Тип: Момент
|
||||
ИспользоватьВПолнотекстовомПоиске: Ложь
|
||||
НезаполненноеЗначение: ЗапретитьВсегда
|
||||
-
|
||||
Ид: c1a16573-fef5-4a5f-8ca3-b6535cde5a70
|
||||
Имя: Ответственный
|
||||
Тип: Сотрудники.Ссылка?
|
||||
ИспользоватьВПолнотекстовомПоиске: Ложь
|
||||
-
|
||||
Ид: 4b36c330-d385-4105-be72-52a2e5cadc40
|
||||
Имя: Описание
|
||||
Тип: Строка
|
||||
-
|
||||
Ид: b676086f-3856-4a6b-8228-4fdb415c2c26
|
||||
Имя: ДатаНачала
|
||||
Тип: Момент
|
||||
ИспользоватьВПолнотекстовомПоиске: Ложь
|
||||
-
|
||||
Ид: 67b99b06-e049-4dd3-8f6d-a9941e2e9066
|
||||
Имя: ДатаЗавершения
|
||||
Тип: Момент
|
||||
ИспользоватьВПолнотекстовомПоиске: Ложь
|
||||
-
|
||||
Ид: af2cc703-b11b-4f3e-a09c-c28408e12bca
|
||||
Имя: Участники
|
||||
Тип: Массив<УчастникиМероприятия>
|
||||
ИспользоватьВПолнотекстовомПоиске: Ложь
|
6
Koncept/Testovoe/Мероприятия/События.Объект.xbsl
Normal file
@ -0,0 +1,6 @@
|
||||
импорт Основное
|
||||
|
||||
@Обработчик
|
||||
метод ПриЗаполнении()
|
||||
Ответственный = ПользователиКлиентИСервер.ПолучитьТекущегоСотрудника()
|
||||
;
|
79
Koncept/Testovoe/Мероприятия/СобытияФормаОбъекта.xbsl
Normal file
@ -0,0 +1,79 @@
|
||||
импорт Основное
|
||||
импорт Пресейл
|
||||
|
||||
@Обработчик
|
||||
метод ПослеЧтения()
|
||||
если ЭтоНовый()
|
||||
Объект.Владелец = Сделка
|
||||
;
|
||||
;
|
||||
|
||||
@Обработчик
|
||||
метод ПередЗаписьюОбъекта()
|
||||
пер ПоляНеЗаполнены: Булево
|
||||
если Объект.Наименование.Сократить().Пусто()
|
||||
Компоненты.ПолеВводаНаименование.РезультатПроверкиДанных = РезультатПроверкиДанных.Ошибка
|
||||
ПоляНеЗаполнены = Истина
|
||||
иначе
|
||||
Компоненты.ПолеВводаНаименование.РезультатПроверкиДанных = РезультатПроверкиДанных.Отсутствует
|
||||
;
|
||||
если Объект.Владелец == Неопределено
|
||||
Компоненты.ПолеВводаСделка.РезультатПроверкиДанных = РезультатПроверкиДанных.Ошибка
|
||||
ПоляНеЗаполнены = Истина
|
||||
иначе
|
||||
Компоненты.ПолеВводаСделка.РезультатПроверкиДанных = РезультатПроверкиДанных.Отсутствует
|
||||
;
|
||||
если ПоляНеЗаполнены
|
||||
выбросить новый ИсключениеВалидации("Не заполнены обязательные поля", ОтображатьСообщениеОбОшибке = Ложь)
|
||||
;
|
||||
|
||||
если ЭтоНовый()
|
||||
Объект.ДатаСоздания = Момент.Сейчас()
|
||||
иначе
|
||||
ПоказыватьУведомление = Ложь
|
||||
;
|
||||
;
|
||||
|
||||
@Обработчик
|
||||
метод ПослеЗаписиОбъекта()
|
||||
ЗаписаноСобытие.Оповестить()
|
||||
|
||||
если ПоказыватьУведомление
|
||||
знч Уведомление = новый Уведомление(ЛокализованныеСтроки.СозданиеСобытия(), ЛокализованныеСтроки.СозданоСобытие(Объект.Наименование))
|
||||
Уведомление.Данные = КлючОбъекта
|
||||
Уведомление.ОценкаИнформации = ОценкаИнформации.Положительная
|
||||
Уведомление.Показать()
|
||||
;
|
||||
;
|
||||
|
||||
@Обработчик
|
||||
метод ПослеУдаленияОбъекта(ПараметрыУдаления: Объект)
|
||||
ЗаписаноСобытие.Оповестить()
|
||||
;
|
||||
|
||||
метод ДобавитьУчастникаПриНажатии(Источник: Кнопка, Событие: СобытиеПриНажатии)
|
||||
знч Клиент = Объект.Владелец != Неопределено ? ПолучитьКлиентаСделки(Объект.Владелец) : Неопределено
|
||||
знч ДанныеУчастника = ФормаДобавленияУчастника.ОткрытьВМодальномОкне(Клиент = Клиент)
|
||||
если ДанныеУчастника это УчастникиМероприятия
|
||||
ДобавитьУчастника(ДанныеУчастника)
|
||||
;
|
||||
;
|
||||
|
||||
метод УдалитьУчастникаПриНажатии(Команда: КомандаСПараметром<Массив<УчастникиМероприятия>>, Параметр: Массив<УчастникиМероприятия>)
|
||||
УдалитьУчастника(Параметр.Единственный())
|
||||
;
|
||||
|
||||
метод ДобавитьУчастника(Участник: УчастникиМероприятия)
|
||||
если не Объект.Участники.Содержит(Участник)
|
||||
Объект.Участники.Добавить(Участник)
|
||||
;
|
||||
;
|
||||
|
||||
метод УдалитьУчастника(Участник: УчастникиМероприятия)
|
||||
Объект.Участники.Удалить(Участник)
|
||||
;
|
||||
|
||||
@НаСервере @ДоступноСКлиента
|
||||
статический метод ПолучитьКлиентаСделки(Сделка: Сделки.Ссылка): Клиенты.Ссылка?
|
||||
возврат Сделки.ПолучитьКлиентаСделки(Сделка)
|
||||
;
|
127
Koncept/Testovoe/Мероприятия/СобытияФормаОбъекта.yaml
Normal file
@ -0,0 +1,127 @@
|
||||
ВидЭлемента: КомпонентИнтерфейса
|
||||
ОбластьВидимости: ВПроекте
|
||||
Ид: 83f7e7b2-f448-460a-806b-246ca1e9eff1
|
||||
Имя: СобытияФормаОбъекта
|
||||
Импорт:
|
||||
- Основное
|
||||
- Пресейл
|
||||
Свойства:
|
||||
-
|
||||
Имя: Сделка
|
||||
Тип: Сделки.Ссылка?
|
||||
-
|
||||
Имя: ПоказыватьУведомление
|
||||
Тип: Булево
|
||||
ЗначениеПоУмолчанию: Истина
|
||||
Наследует:
|
||||
Тип: ФормаОбъекта<События.Объект>
|
||||
Заголовок: $ЛокализованныеСтроки.Событие
|
||||
РастягиватьПоВертикали: Истина
|
||||
ОсновнаяКоманда: =ЗаписатьИЗакрыть
|
||||
ОбычныеКоманды:
|
||||
Тип: ФрагментКомандногоИнтерфейса<Команда>
|
||||
Элементы:
|
||||
- =Записать
|
||||
- =Удалить
|
||||
Содержимое:
|
||||
Тип: ПроизвольныйШаблонФормы
|
||||
ШиринаВКолонках: Двойная
|
||||
Содержимое:
|
||||
Тип: АвтоматическаяГруппа
|
||||
Содержимое:
|
||||
-
|
||||
Тип: ПолеВвода<Строка>
|
||||
Заголовок: $ЛокализованныеСтроки.Код
|
||||
Доступность: Ложь
|
||||
Значение: =Объект.Код
|
||||
-
|
||||
Тип: ПолеВвода<Сделки.Ссылка?>
|
||||
Имя: ПолеВводаСделка
|
||||
Заголовок: $Пресейл::ЛокализованныеСтроки.Сделка
|
||||
Доступность: =(Сделка == Неопределено)
|
||||
Значение: =Объект.Владелец
|
||||
Обязательное: Истина
|
||||
СообщениеОшибка: $Общие::ЛокализованныеСтроки.ОбязательноеПоле
|
||||
-
|
||||
Тип: ПолеВвода<Строка>
|
||||
Имя: ПолеВводаНаименование
|
||||
Заголовок: $ЛокализованныеСтроки.Наименование
|
||||
Значение: =Объект.Наименование
|
||||
Обязательное: Истина
|
||||
СообщениеОшибка: $Общие::ЛокализованныеСтроки.ОбязательноеПоле
|
||||
-
|
||||
Тип: ПолеВвода<Сотрудники.Ссылка?>
|
||||
Заголовок: $ЛокализованныеСтроки.Ответственный
|
||||
Значение: =Объект.Ответственный
|
||||
-
|
||||
Тип: ПолеВвода<Строка>
|
||||
Заголовок: $ЛокализованныеСтроки.Описание
|
||||
Значение: =Объект.Описание
|
||||
НастройкиВводаСтроки:
|
||||
Многострочная: Истина
|
||||
-
|
||||
Тип: ПолеВвода<Момент>
|
||||
Заголовок: $ЛокализованныеСтроки.ДатаНачала
|
||||
Значение: =Объект.ДатаНачала
|
||||
-
|
||||
Тип: ПолеВвода<Момент>
|
||||
Заголовок: $ЛокализованныеСтроки.ДатаЗавершения
|
||||
Значение: =Объект.ДатаЗавершения
|
||||
-
|
||||
Тип: АвтоматическаяГруппа
|
||||
Заголовок: $ЛокализованныеСтроки.Участники
|
||||
Содержимое:
|
||||
-
|
||||
Тип: ФиксированнаяГруппа
|
||||
РастягиватьПоВертикали: Истина
|
||||
РастягиватьПоГоризонтали: Истина
|
||||
Видимость: =Объект.Участники.Пусто()
|
||||
Содержимое:
|
||||
-
|
||||
Тип: Картинка
|
||||
ВыравниваниеВГруппеПоВертикали: Центр
|
||||
ВыравниваниеВГруппеПоГоризонтали: Центр
|
||||
Изображение: ПустойСписокУчастников.png
|
||||
-
|
||||
Тип: Надпись
|
||||
ВыравниваниеВГруппеПоВертикали: Центр
|
||||
ВыравниваниеВГруппеПоГоризонтали: Центр
|
||||
Шрифт: =СтилевыеШрифты.Крупный
|
||||
Значение: $Мероприятия::ЛокализованныеСтроки.НетУчастниковСобытия
|
||||
-
|
||||
Тип: Кнопка
|
||||
Заголовок: $ЛокализованныеСтроки.ДобавитьУчастника
|
||||
Вид: Дополнительная
|
||||
ВыравниваниеВГруппеПоГоризонтали: Центр
|
||||
ПриНажатии: ДобавитьУчастникаПриНажатии
|
||||
-
|
||||
Тип: Таблица<ИсточникДанныхМассив<УчастникиМероприятия>>
|
||||
Имя: ТаблицаУчастников
|
||||
РастягиватьПоВертикали: Ложь
|
||||
ОтображатьШапку: Ложь
|
||||
ИспользованиеПоиска: Ложь
|
||||
Источник:
|
||||
Данные: =Объект.Участники
|
||||
КомандыСтроки:
|
||||
Тип: ФрагментКомандногоИнтерфейса<КомандаСПараметром<Массив<УчастникиМероприятия>>|КомандаСПараметром<УчастникиМероприятия>>
|
||||
Элементы:
|
||||
-
|
||||
Тип: КомандаСПараметром<Массив<УчастникиМероприятия>>
|
||||
Представление: $ЛокализованныеСтроки.УдалитьУчастника
|
||||
Изображение: МусорнаяКорзинаКонтур.svg
|
||||
Обработчик: УдалитьУчастникаПриНажатии
|
||||
Колонки:
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<УчастникиМероприятия>
|
||||
ПолеЗначения: Участник
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<УчастникиМероприятия>
|
||||
ПолеЗначения: Роль
|
||||
-
|
||||
Тип: Кнопка
|
||||
Заголовок: $ЛокализованныеСтроки.ДобавитьУчастника
|
||||
Видимость: =не Объект.Участники.Пусто()
|
||||
Вид: Дополнительная
|
||||
ВыравниваниеВГруппеПоГоризонтали: Начало
|
||||
Изображение: Плюс.svg
|
||||
ПриНажатии: ДобавитьУчастникаПриНажатии
|
98
Koncept/Testovoe/Мероприятия/СобытияФормаСписка.yaml
Normal file
@ -0,0 +1,98 @@
|
||||
ВидЭлемента: КомпонентИнтерфейса
|
||||
Ид: e4ce8276-8ed2-4741-bd76-2a3706a15444
|
||||
Имя: СобытияФормаСписка
|
||||
ОбластьВидимости: ВПроекте
|
||||
Импорт:
|
||||
- Общие
|
||||
Наследует:
|
||||
Тип: ФормаСписка
|
||||
Заголовок: $ЛокализованныеСтроки.События
|
||||
КомпонентТаблицы: =Компоненты.ТаблицаСписка
|
||||
КомандыСоздания: =Создать
|
||||
Содержимое:
|
||||
Тип: ПроизвольныйШаблонФормы
|
||||
Содержимое:
|
||||
Тип: Таблица<ДинамическийСписок>
|
||||
ИспользованиеПоиска: Ложь
|
||||
Имя: ТаблицаСписка
|
||||
ОтображатьНастройки: Истина
|
||||
Источник:
|
||||
ОсновнаяТаблица:
|
||||
Таблица: События
|
||||
Поля:
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Код
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Наименование
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: ДатаСоздания
|
||||
ОтображатьВНастройкахФильтров: Истина
|
||||
ОтображатьВПростыхФильтрах: Истина
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Владелец.Клиент
|
||||
Псевдоним: Владелец_Клиент
|
||||
ОтображатьВНастройкахФильтров: Истина
|
||||
ОтображатьВПростыхФильтрах: Истина
|
||||
Представление: Клиент
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Владелец
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Ответственный
|
||||
ОтображатьВНастройкахФильтров: Истина
|
||||
ОтображатьВПростыхФильтрах: Истина
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: ДатаНачала
|
||||
ОтображатьВНастройкахФильтров: Истина
|
||||
ОтображатьВПростыхФильтрах: Истина
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: ДатаЗавершения
|
||||
ОтображатьВНастройкахФильтров: Истина
|
||||
ОтображатьВПростыхФильтрах: Истина
|
||||
Сортировка:
|
||||
-
|
||||
Поле: ДатаСоздания
|
||||
НаправлениеСортировки: ПоУбыванию
|
||||
ПрокруткаПоВертикали: Истина
|
||||
Навигация: ПодгрузкаПриПрокрутке
|
||||
Колонки:
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.ДатаСоздания
|
||||
ПолеЗначения: ДатаСоздания
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.ДатаНачала
|
||||
ПолеЗначения: ДатаНачала
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.ДатаЗавершения
|
||||
ПолеЗначения: ДатаЗавершения
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $Пресейл::ЛокализованныеСтроки.Клиент
|
||||
ПолеЗначения: Владелец_Клиент
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $Пресейл::ЛокализованныеСтроки.Сделка
|
||||
ПолеЗначения: Владелец
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Наименование
|
||||
ПолеЗначения: Наименование
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Ответственный
|
||||
ПолеЗначения: Ответственный
|
||||
ОбрабатыватьНажатие: Ложь
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Код
|
||||
ПолеЗначения: Код
|
17
Koncept/Testovoe/Мероприятия/СтатусМероприятия.xbsl
Normal file
@ -0,0 +1,17 @@
|
||||
/**
|
||||
Описание:
|
||||
Определение цвета фона бейджа, соответствующего статусу мероприятия
|
||||
*/
|
||||
@ВПроекте
|
||||
метод ПолучитьЦвет(): Цвет | Авто
|
||||
выбор этот
|
||||
когда Запланировано
|
||||
возврат Цвета.Желтый
|
||||
когда ВПроцессе
|
||||
возврат Цвета.Зеленый
|
||||
когда Завершено
|
||||
возврат Цвета.Синий
|
||||
когда Отменено
|
||||
возврат Цвета.Красный
|
||||
;
|
||||
;
|
22
Koncept/Testovoe/Мероприятия/СтатусМероприятия.yaml
Normal file
@ -0,0 +1,22 @@
|
||||
ВидЭлемента: Перечисление
|
||||
Ид: 9780afad-b5e2-4936-9c5a-73c1c41da281
|
||||
Имя: СтатусМероприятия
|
||||
ОбластьВидимости: ВПроекте
|
||||
Элементы:
|
||||
-
|
||||
Ид: 2f7086c4-ace2-4e9e-8d4f-2ad72f4cac71
|
||||
Имя: Запланировано
|
||||
Представление: $ЛокализованныеСтроки.Запланировано
|
||||
ПоУмолчанию: Истина
|
||||
-
|
||||
Ид: 90c57c56-5211-4945-8b5b-6417af980d33
|
||||
Имя: ВПроцессе
|
||||
Представление: $ЛокализованныеСтроки.ВПроцессе
|
||||
-
|
||||
Ид: 5f729039-b60a-473d-8639-16c904ed85e8
|
||||
Имя: Завершено
|
||||
Представление: $ЛокализованныеСтроки.Завершено
|
||||
-
|
||||
Ид: bb0b532a-8e4c-42ee-a833-9431e93a87cc
|
||||
Имя: Отменено
|
||||
Представление: $ЛокализованныеСтроки.Отменено
|
16
Koncept/Testovoe/Мероприятия/УчастникиМероприятия.yaml
Normal file
@ -0,0 +1,16 @@
|
||||
ВидЭлемента: ХранимаяСтруктура
|
||||
Ид: 277d8ff8-28d2-4b56-83fc-85f855f0c5ce
|
||||
Имя: УчастникиМероприятия
|
||||
ОбластьВидимости: ВПроекте
|
||||
Импорт:
|
||||
- Основное
|
||||
- Пресейл
|
||||
Поля:
|
||||
-
|
||||
Ид: cc5fa2e6-6dbb-4032-b92e-19da7dd2b767
|
||||
Имя: Участник
|
||||
Тип: Сотрудники.Ссылка|КонтактныеЛица.Ссылка|?
|
||||
-
|
||||
Ид: e5b45063-d819-41be-a6f0-608c5a234721
|
||||
Имя: Роль
|
||||
Тип: РольУчастникаМероприятия?
|
10
Koncept/Testovoe/Мероприятия/ФормаДобавленияУчастника.xbsl
Normal file
@ -0,0 +1,10 @@
|
||||
метод ВыбратьУчастникаПриНажатии(Команда: ОбычнаяКоманда)
|
||||
знч Участник = Компоненты.ПолеВводаУчастника.Значение
|
||||
знч Роль = Компоненты.ПолеВводаРоли.Значение
|
||||
|
||||
Компоненты.ПолеВводаУчастника.РезультатПроверкиДанных = Участник == Неопределено ? РезультатПроверкиДанных.Ошибка : РезультатПроверкиДанных.Отсутствует
|
||||
|
||||
если Участник != Неопределено
|
||||
Закрыть(новый УчастникиМероприятия(Участник, Роль))
|
||||
;
|
||||
;
|
49
Koncept/Testovoe/Мероприятия/ФормаДобавленияУчастника.yaml
Normal file
@ -0,0 +1,49 @@
|
||||
ВидЭлемента: КомпонентИнтерфейса
|
||||
Ид: bfe0d84f-84a1-4ccd-9fa9-44c01b69ffe7
|
||||
Имя: ФормаДобавленияУчастника
|
||||
ОбластьВидимости: ВПодсистеме
|
||||
Импорт:
|
||||
- Основное
|
||||
- Пресейл
|
||||
Свойства:
|
||||
-
|
||||
Имя: Клиент
|
||||
Тип: Клиенты.Ссылка?
|
||||
Наследует:
|
||||
Тип: Форма<УчастникиМероприятия>
|
||||
Заголовок: $ЛокализованныеСтроки.ДобавлениеУчастника
|
||||
ОсновнаяКоманда:
|
||||
Тип: ОбычнаяКоманда
|
||||
Представление: $ЛокализованныеСтроки.Добавить
|
||||
Обработчик: ВыбратьУчастникаПриНажатии
|
||||
Содержимое:
|
||||
Тип: ПроизвольныйШаблонФормы
|
||||
ШиринаВКолонках: Одинарная
|
||||
Содержимое:
|
||||
Тип: ФиксированнаяГруппа
|
||||
Содержимое:
|
||||
-
|
||||
Тип: ПолеВвода<КонтактныеЛица.Ссылка?>
|
||||
Имя: ПолеВводаУчастника
|
||||
Заголовок: $ЛокализованныеСтроки.Участник
|
||||
НастройкиВводаСсылок:
|
||||
НастройкиПоТипу:
|
||||
-
|
||||
Ключ: КонтактныеЛица.Ссылка
|
||||
Значение:
|
||||
Фильтр:
|
||||
Элементы:
|
||||
-
|
||||
Тип: ЭлементФильтра
|
||||
Поле: Владелец
|
||||
ВидСравнения: Равно
|
||||
Значение: =Клиент
|
||||
РастягиватьПоГоризонтали: Истина
|
||||
ВидОтображенияКнопкиОчистки: Всегда
|
||||
Обязательное: Истина
|
||||
СообщениеОшибка: $ЛокализованныеСтроки.ВыберитеУчастника
|
||||
-
|
||||
Тип: ПолеВвода<РольУчастникаМероприятия?>
|
||||
Имя: ПолеВводаРоли
|
||||
Заголовок: $ЛокализованныеСтроки.Роль
|
||||
РастягиватьПоГоризонтали: Истина
|
49
Koncept/Testovoe/Общие/КурсыВалют/Валюты.xbsl
Normal file
@ -0,0 +1,49 @@
|
||||
импорт Основное
|
||||
|
||||
@ВПроекте
|
||||
конст КОД_БАЗОВОЙ_ВАЛЮТЫ = "RUB"
|
||||
|
||||
@Обработчик
|
||||
метод ВычислитьРазрешенияДоступа(): Массив<РазрешениеДоступа>
|
||||
возврат [
|
||||
ПользователиКлиентИСервер.ПолныеПраваНаСправочникДляРуководителя(),
|
||||
новый РазрешениеДоступа(
|
||||
[новый КлючДоступаДляАутентифицированных.Объект()],
|
||||
[Сущность.Право.Чтение])
|
||||
]
|
||||
;
|
||||
|
||||
@ВПроекте
|
||||
метод ПолучитьВсе(): ЧитаемыйМассив<Валюты.Ссылка>
|
||||
знч Запрос = Запрос{
|
||||
ВЫБРАТЬ
|
||||
Ссылка
|
||||
ИЗ
|
||||
Валюты
|
||||
ГДЕ
|
||||
Код != %КОД_БАЗОВОЙ_ВАЛЮТЫ
|
||||
}
|
||||
|
||||
возврат Запрос.Выполнить().Преобразовать(Строка -> Строка.Ссылка)
|
||||
;
|
||||
|
||||
@ВПроекте
|
||||
метод ПолучитьБазовуюВалюту(): Валюты.Ссылка?
|
||||
знч Запрос = Запрос{
|
||||
ВЫБРАТЬ
|
||||
Ссылка
|
||||
ИЗ
|
||||
Валюты
|
||||
ГДЕ
|
||||
Код == %КОД_БАЗОВОЙ_ВАЛЮТЫ
|
||||
}
|
||||
|
||||
возврат Запрос.Выполнить().ЕдинственныйИлиУмолчание()?.Ссылка
|
||||
;
|
||||
|
||||
@ВПроекте
|
||||
метод СоздатьБазовуюВалюту(): Валюты.Ссылка
|
||||
знч БазоваяВалюта = новый Валюты.Объект(Код = КОД_БАЗОВОЙ_ВАЛЮТЫ, Наименование = "Рубль")
|
||||
БазоваяВалюта.Записать()
|
||||
возврат БазоваяВалюта.Ссылка
|
||||
;
|
30
Koncept/Testovoe/Общие/КурсыВалют/Валюты.yaml
Normal file
@ -0,0 +1,30 @@
|
||||
ВидЭлемента: Справочник
|
||||
Ид: a139815d-dd1e-4988-a21d-dbe7c212fc95
|
||||
Имя: Валюты
|
||||
ОбластьВидимости: ВПроекте
|
||||
КонтрольДоступа:
|
||||
Разрешения:
|
||||
ПоУмолчанию: РазрешенияВычисляются
|
||||
Интерфейс:
|
||||
Список:
|
||||
Представление: $ЛокализованныеСтроки.Валюты
|
||||
Форма: ВалютыФормаСписка
|
||||
Объект:
|
||||
Форма: ВалютыФормаОбъекта
|
||||
Представление: Наименование
|
||||
ИспользоватьВПолнотекстовомПоиске: Ложь
|
||||
Реквизиты:
|
||||
-
|
||||
Имя: Код
|
||||
Тип: Строка
|
||||
Длина: 3
|
||||
Автонумерация:
|
||||
Использовать: Ложь
|
||||
-
|
||||
Имя: Наименование
|
||||
Длина: 100
|
||||
НезаполненноеЗначение: ЗапретитьВсегда
|
||||
-
|
||||
Ид: b27ec4eb-ea82-4c04-aa6a-127b80fc9eee
|
||||
Имя: ВнешнийИдентификатор
|
||||
Тип: Строка
|
19
Koncept/Testovoe/Общие/КурсыВалют/ВалютыФормаОбъекта.xbsl
Normal file
@ -0,0 +1,19 @@
|
||||
@Обработчик
|
||||
метод ПередЗаписьюОбъекта()
|
||||
пер ПоляНеЗаполнены: Булево
|
||||
если Объект.Наименование.Сократить().Пусто()
|
||||
Компоненты.ПолеВводаНаименование.РезультатПроверкиДанных = РезультатПроверкиДанных.Ошибка
|
||||
ПоляНеЗаполнены = Истина
|
||||
иначе
|
||||
Компоненты.ПолеВводаНаименование.РезультатПроверкиДанных = РезультатПроверкиДанных.Отсутствует
|
||||
;
|
||||
если Объект.Код.Сократить().Пусто()
|
||||
Компоненты.ПолеВводаКод.РезультатПроверкиДанных = РезультатПроверкиДанных.Ошибка
|
||||
ПоляНеЗаполнены = Истина
|
||||
иначе
|
||||
Компоненты.ПолеВводаКод.РезультатПроверкиДанных = РезультатПроверкиДанных.Отсутствует
|
||||
;
|
||||
если ПоляНеЗаполнены
|
||||
выбросить новый ИсключениеВалидации("Не заполнены обязательные поля", ОтображатьСообщениеОбОшибке = Ложь)
|
||||
;
|
||||
;
|
32
Koncept/Testovoe/Общие/КурсыВалют/ВалютыФормаОбъекта.yaml
Normal file
@ -0,0 +1,32 @@
|
||||
ВидЭлемента: КомпонентИнтерфейса
|
||||
Ид: 6ab801c8-17a3-4172-960f-86c5b02ca148
|
||||
Имя: ВалютыФормаОбъекта
|
||||
ОбластьВидимости: ВПодсистеме
|
||||
Наследует:
|
||||
Тип: ФормаОбъекта<Валюты.Объект>
|
||||
Заголовок: $ЛокализованныеСтроки.Валюта
|
||||
ОсновнаяКоманда: =ЗаписатьИЗакрыть
|
||||
ОбычныеКоманды:
|
||||
Тип: ФрагментКомандногоИнтерфейса<Команда>
|
||||
Элементы:
|
||||
- =Удалить
|
||||
Содержимое:
|
||||
Тип: ПроизвольныйШаблонФормы
|
||||
ШиринаВКолонках: Одинарная
|
||||
Содержимое:
|
||||
Тип: АвтоматическаяГруппа
|
||||
Содержимое:
|
||||
-
|
||||
Тип: ПолеВвода<Строка>
|
||||
Имя: ПолеВводаНаименование
|
||||
Заголовок: $ЛокализованныеСтроки.Наименование
|
||||
Значение: =Объект.Наименование
|
||||
Обязательное: Истина
|
||||
СообщениеОшибка: $Общие::ЛокализованныеСтроки.ОбязательноеПоле
|
||||
-
|
||||
Тип: ПолеВвода<Строка>
|
||||
Имя: ПолеВводаКод
|
||||
Заголовок: $ЛокализованныеСтроки.Код
|
||||
Значение: =Объект.Код
|
||||
Обязательное: Истина
|
||||
СообщениеОшибка: $Общие::ЛокализованныеСтроки.ОбязательноеПоле
|
8
Koncept/Testovoe/Общие/КурсыВалют/ВалютыФормаСписка.xbsl
Normal file
@ -0,0 +1,8 @@
|
||||
@Обработчик
|
||||
метод ПослеСоздания()
|
||||
КурсыВалютЗагружены.ПодключитьОбработчик(() -> Компоненты.ТаблицаСписка.Обновить())
|
||||
;
|
||||
|
||||
метод ЗагрузкаКурсовПриНажатии(Команда: ОбычнаяКоманда)
|
||||
ФормаЗагрузкиКурсовВалют.ОткрытьВМодальномОкне()
|
||||
;
|
83
Koncept/Testovoe/Общие/КурсыВалют/ВалютыФормаСписка.yaml
Normal file
@ -0,0 +1,83 @@
|
||||
ВидЭлемента: КомпонентИнтерфейса
|
||||
Ид: e2f98ffc-4fb7-47fb-aa84-e48063d26ba3
|
||||
Имя: ВалютыФормаСписка
|
||||
ОбластьВидимости: ВПроекте
|
||||
Наследует:
|
||||
Тип: ФормаСписка
|
||||
КомпонентТаблицы: =Компоненты.ТаблицаСписка
|
||||
КомандыСоздания: =Создать
|
||||
ДополнительныеКоманды:
|
||||
Тип: ФрагментКомандногоИнтерфейса<Команда>
|
||||
Элементы:
|
||||
-
|
||||
Тип: ОбычнаяКоманда
|
||||
Представление: $ЛокализованныеСтроки.ЗагрузкаКурсовВалют
|
||||
Изображение: Скачать.svg
|
||||
Обработчик: ЗагрузкаКурсовПриНажатии
|
||||
Содержимое:
|
||||
Тип: ПроизвольныйШаблонФормы
|
||||
Содержимое:
|
||||
Тип: Таблица<ДинамическийСписок>
|
||||
ИспользованиеПоиска: Ложь
|
||||
Имя: ТаблицаСписка
|
||||
Источник:
|
||||
ОсновнаяТаблица:
|
||||
Таблица: Валюты
|
||||
Псевдоним: Валюты
|
||||
Поля:
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Валюты.Ссылка
|
||||
Псевдоним: Валюты_Ссылка
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Валюты.Наименование
|
||||
Псевдоним: Валюты_Наименование
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Валюты.Код
|
||||
Псевдоним: Валюты_Код
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: КурсыСрезПоследних.Курс
|
||||
Псевдоним: КурсыСрезПоследних_Курс
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: КурсыСрезПоследних.Кратность
|
||||
Псевдоним: КурсыСрезПоследних_Кратность
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: КурсыСрезПоследних.Период
|
||||
Псевдоним: КурсыСрезПоследних_Период
|
||||
ПрисоединенныеТаблицы:
|
||||
-
|
||||
Таблица: КурсыВалют.СрезПоследних
|
||||
Псевдоним: КурсыСрезПоследних
|
||||
Фильтр:
|
||||
Элементы:
|
||||
-
|
||||
Тип: ЭлементФильтраВыражение
|
||||
Выражение: Валюты.Ссылка == КурсыСрезПоследних.Валюта
|
||||
Колонки:
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Наименование
|
||||
ПолеЗначения: Валюты_Наименование
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Код
|
||||
ПолеЗначения: Валюты_Код
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.ДатаКурса
|
||||
ПолеЗначения: КурсыСрезПоследних_Период
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Курс
|
||||
ПолеЗначения: КурсыСрезПоследних_Курс
|
||||
ВыравниваниеВГруппеПоГоризонтали: Конец
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Кратность
|
||||
ПолеЗначения: КурсыСрезПоследних_Кратность
|
||||
ВыравниваниеВГруппеПоГоризонтали: Конец
|
21
Koncept/Testovoe/Общие/КурсыВалют/КурсВалюты.yaml
Normal file
@ -0,0 +1,21 @@
|
||||
ВидЭлемента: Структура
|
||||
Ид: 26425742-9626-4e70-911e-abe55b52232b
|
||||
Имя: КурсВалюты
|
||||
ОбластьВидимости: ВПроекте
|
||||
Окружение: КлиентИСервер
|
||||
Поля:
|
||||
-
|
||||
Имя: Валюта
|
||||
Тип: Валюты.Ссылка?
|
||||
-
|
||||
Имя: Код
|
||||
Тип: Строка
|
||||
-
|
||||
Имя: Период
|
||||
Тип: Дата?
|
||||
-
|
||||
Имя: Курс
|
||||
Тип: Число
|
||||
-
|
||||
Имя: Кратность
|
||||
Тип: Число
|
11
Koncept/Testovoe/Общие/КурсыВалют/КурсыВалют.xbsl
Normal file
@ -0,0 +1,11 @@
|
||||
импорт Основное
|
||||
|
||||
@Обработчик
|
||||
метод ВычислитьРазрешенияДоступа(): Массив<РазрешениеДоступа>
|
||||
возврат [
|
||||
ПользователиКлиентИСервер.ПолныеПраваНаРегистрСведенийДляРуководителя(),
|
||||
новый РазрешениеДоступа(
|
||||
[новый КлючДоступаДляАутентифицированных.Объект()],
|
||||
[Сущность.Право.Чтение])
|
||||
]
|
||||
;
|
32
Koncept/Testovoe/Общие/КурсыВалют/КурсыВалют.yaml
Normal file
@ -0,0 +1,32 @@
|
||||
ВидЭлемента: РегистрСведений
|
||||
Ид: e571296e-602d-478b-a51a-fdfa1c1701be
|
||||
Имя: КурсыВалют
|
||||
ОбластьВидимости: ВПроекте
|
||||
КонтрольДоступа:
|
||||
Разрешения:
|
||||
ПоУмолчанию: РазрешенияВычисляются
|
||||
Интерфейс:
|
||||
Список:
|
||||
Форма: КурсыВалютФормаСписка
|
||||
Представление: $ЛокализованныеСтроки.КурсыВалют
|
||||
Объект:
|
||||
Форма: КурсыВалютФормаОбъекта
|
||||
Периодичность: День
|
||||
ИспользоватьВПолнотекстовомПоиске: Ложь
|
||||
Измерения:
|
||||
-
|
||||
Ид: 6bfdd2a9-53bf-40be-a84b-e849e23cd887
|
||||
Имя: Валюта
|
||||
Тип: Валюты.Ссылка?
|
||||
Ресурсы:
|
||||
-
|
||||
Ид: 734935b9-5911-4087-b29d-409bebcf4943
|
||||
Имя: Курс
|
||||
Тип: Число
|
||||
ДлинаДробнойЧасти: 4
|
||||
МинимальноеЗначение: 0
|
||||
-
|
||||
Ид: 05e1f67e-c22a-4c5b-a5ee-6834e83bf46e
|
||||
Имя: Кратность
|
||||
Тип: Число
|
||||
МинимальноеЗначение: 0
|
@ -0,0 +1,4 @@
|
||||
ВидЭлемента: ГлобальноеКлиентскоеСобытие
|
||||
Ид: 8d7437cf-44a6-4125-9afe-a4929cc228a5
|
||||
Имя: КурсыВалютЗагружены
|
||||
ОбластьВидимости: ВПроекте
|
315
Koncept/Testovoe/Общие/КурсыВалют/КурсыВалютСервер.xbsl
Normal file
@ -0,0 +1,315 @@
|
||||
конст КЛЮЧ_ЗАДАНИЯ_ЗАГРУЗКИ_КУРСОВ = "RatesLoadTask"
|
||||
|
||||
@ВПодсистеме
|
||||
исключение ИсключениеЗагрузкиКурсовВалют
|
||||
обз знч Валюта: Валюты.Ссылка
|
||||
;
|
||||
|
||||
/**
|
||||
Описание:
|
||||
Загружает курсы валют из справочника Валюты за заданный период
|
||||
Параметры:
|
||||
НачалоПериода - дата начала периода загрузки
|
||||
КонецПериода - дата конца периода загрузки
|
||||
*/
|
||||
@ВПроекте
|
||||
метод ЗагрузитьКурсыВалют(НачалоПериода: Дата, КонецПериода: Дата)
|
||||
знч Событие = новый ОперацияЗагрузкиКурсовВалют(
|
||||
НачалоПериодаЗагрузки = НачалоПериода.Представление(),
|
||||
КонецПериодаЗагрузки = КонецПериода.Представление()
|
||||
)
|
||||
|
||||
исп Событие.ЗаписатьНачало()
|
||||
|
||||
знч МассивВалют = Валюты.ПолучитьВсе()
|
||||
для Валюта из МассивВалют
|
||||
попытка
|
||||
ЗагрузитьКурсыВалюты(Валюта, НачалоПериода, КонецПериода)
|
||||
поймать Искл: ИсключениеЗагрузкиКурсовВалют
|
||||
новый ОшибкаЗагрузкиКурсовВалюты(
|
||||
Валюта = Искл.Валюта.Представление(),
|
||||
ОписаниеОшибки = "%{Искл.Описание}",
|
||||
ХарактерОшибки = ХарактерОшибки.ДляПользователя,
|
||||
Важность = ВажностьСобытияЖурналаСобытий.Высокая
|
||||
).Записать()
|
||||
|
||||
выбросить новый ИсключениеВыполнения(Искл.Описание, Искл)
|
||||
;
|
||||
;
|
||||
;
|
||||
|
||||
/**
|
||||
Описание:
|
||||
Загружает курсы валют из справочника Валюты начиная с последней даты курса и по текущую дату
|
||||
*/
|
||||
@ВПроекте
|
||||
метод ЗагрузитьКурсыВалют()
|
||||
знч ТекущаяДата = Дата.Сейчас()
|
||||
|
||||
знч Событие = новый ОперацияЗагрузкиКурсовВалют(
|
||||
НачалоПериодаЗагрузки = "",
|
||||
КонецПериодаЗагрузки = ТекущаяДата.Представление()
|
||||
)
|
||||
|
||||
исп Событие.ЗаписатьНачало()
|
||||
|
||||
знч ДатыКурсов = ПолучитьКурсыВалют()
|
||||
|
||||
для ДатаКурса из ДатыКурсов
|
||||
попытка
|
||||
ЗагрузитьКурсыВалюты(ДатаКурса.Валюта, ДатаКурса.Период == Неопределено ? ТекущаяДата : ДатаКурса.Период, ТекущаяДата)
|
||||
поймать Искл: ИсключениеЗагрузкиКурсовВалют
|
||||
новый ОшибкаЗагрузкиКурсовВалюты(
|
||||
Валюта = Искл.Валюта.Представление(),
|
||||
ОписаниеОшибки = "%{Искл.Описание}",
|
||||
ХарактерОшибки = ХарактерОшибки.ДляПользователя,
|
||||
Важность = ВажностьСобытияЖурналаСобытий.Высокая
|
||||
).Записать()
|
||||
|
||||
выбросить новый ИсключениеВыполнения(Искл.Описание)
|
||||
;
|
||||
;
|
||||
;
|
||||
|
||||
/**
|
||||
Описание:
|
||||
Получение курса валюты на дату
|
||||
Параметры:
|
||||
Валюта - валюта, курс которой требуется получить
|
||||
ДатаКурса - дата, на которую требуется получить курс
|
||||
Возвращает:
|
||||
Структура КурсВалюты или Неопределено, если курс не установлен
|
||||
*/
|
||||
@ВПроекте
|
||||
метод ПолучитьКурсВалюты(Валюта: Валюты.Ссылка, ДатаКурса: Дата): КурсВалюты?
|
||||
знч Запрос = Запрос{
|
||||
ВЫБРАТЬ
|
||||
КурсыВалютСрезПоследних.Валюта КАК Валюта,
|
||||
КурсыВалютСрезПоследних.Период КАК Период,
|
||||
КурсыВалютСрезПоследних.Курс КАК Курс,
|
||||
КурсыВалютСрезПоследних.Кратность КАК Кратность
|
||||
ЗАПОЛНИТЬ КурсВалюты
|
||||
ИЗ
|
||||
КурсыВалют.СрезПоследних(%ДатаКурса) КАК КурсыВалютСрезПоследних
|
||||
ГДЕ
|
||||
КурсыВалютСрезПоследних.Валюта == %Валюта
|
||||
}
|
||||
|
||||
возврат Запрос.Выполнить().ЕдинственныйИлиУмолчание()
|
||||
;
|
||||
|
||||
/**
|
||||
Описание:
|
||||
Получение курсов валют из справочника Валюты
|
||||
Возвращает:
|
||||
Массив структур КурсВалюты
|
||||
Замечания:
|
||||
Если для валюты не загружен курс, значением поля Период структуры будет Неопределено
|
||||
*/
|
||||
@ВПроекте
|
||||
метод ПолучитьКурсыВалют(): Массив<КурсВалюты>
|
||||
знч Курсы = <КурсВалюты>[]
|
||||
|
||||
знч Запрос = Запрос{
|
||||
ВЫБРАТЬ
|
||||
Валюты.Ссылка КАК Валюта,
|
||||
Валюты.Код КАК Код,
|
||||
Курсы.Период.ЗаменитьNull(Неопределено) КАК Период,
|
||||
Курсы.Курс.ЗаменитьNull(0) КАК Курс,
|
||||
Курсы.Кратность.ЗаменитьNull(0) КАК Кратность
|
||||
ИЗ
|
||||
Валюты КАК Валюты
|
||||
ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют.СрезПоследних() КАК Курсы
|
||||
ПО Валюты.Ссылка == Курсы.Валюта
|
||||
ГДЕ
|
||||
Валюты.Код != %{Валюты.КОД_БАЗОВОЙ_ВАЛЮТЫ}
|
||||
}
|
||||
|
||||
для СтрокаРезультата из Запрос.Выполнить()
|
||||
знч Курс = новый КурсВалюты(
|
||||
Валюта = СтрокаРезультата.Валюта,
|
||||
Код = СтрокаРезультата.Код,
|
||||
Период = СтрокаРезультата.Период,
|
||||
Курс = СтрокаРезультата.Курс,
|
||||
Кратность = СтрокаРезультата.Кратность
|
||||
)
|
||||
|
||||
Курсы.Добавить(Курс)
|
||||
;
|
||||
|
||||
возврат Курсы
|
||||
;
|
||||
|
||||
/**
|
||||
Описание:
|
||||
Пересчитывает сумму в базовую валюту
|
||||
Параметры:
|
||||
Сумма - сумма, которую требуется пересчитать
|
||||
Валюта - пересчитываемая валюта
|
||||
Возвращает:
|
||||
Сумма, пересчитанная по курсу
|
||||
*/
|
||||
@ВПроекте
|
||||
метод ПересчитатьПоКурсу(Сумма: Число, Валюта: Валюты.Ссылка): Число
|
||||
знч КурсВалюты = ПолучитьКурсВалюты(Валюта, Дата.Сейчас())
|
||||
если КурсВалюты != Неопределено и КурсВалюты.Кратность != 0
|
||||
возврат (Сумма * КурсВалюты.Курс / КурсВалюты.Кратность).Округлить(2)
|
||||
иначе
|
||||
возврат 0
|
||||
;
|
||||
;
|
||||
|
||||
/**
|
||||
Описание:
|
||||
Загружает курсы определенной валюты за заданный период с сайта ЦБ
|
||||
Параметры:
|
||||
ВалютаСсылка - валюта, курсы которой требуется загрузить
|
||||
НачалоПериода - дата начала периода загрузки
|
||||
КонецПериода - дата конца периода загрузки
|
||||
Исключения:
|
||||
ОшибкаЗагрузкиКурсовВалют -
|
||||
если не удалось найти валюту во внешнем справочнике и при других ошибках загрузки
|
||||
Замечания:
|
||||
Идентификатор валюты во внешнем справочнике определяется по коду валюты
|
||||
и сохраняется в поле ВнешнийИдентификатор объекта Валюты
|
||||
*/
|
||||
@ВПодсистеме
|
||||
метод ЗагрузитьКурсыВалюты(ВалютаСсылка: Валюты.Ссылка, НачалоПериода: Дата, КонецПериода: Дата)
|
||||
знч Клиент = КлиентHttp.СБазовымUrl("https://www.cbr.ru/scripts/").СМаксимумомПеренаправлений(0)
|
||||
|
||||
знч Валюта = ВалютаСсылка.ЗагрузитьОбъект()
|
||||
|
||||
// Получение идентификатора валюты во внешнем справочнике
|
||||
|
||||
если Валюта.ВнешнийИдентификатор.Пусто()
|
||||
знч ЗапросСправочникаВалют = Клиент.ЗапросGet("XML_valFull.asp")
|
||||
попытка
|
||||
исп Ответ = ЗапросСправочникаВалют.Выполнить()
|
||||
если Ответ.КодСостояния == 200
|
||||
знч ЧтениеXml = новый ЧтениеXml(Ответ.Тело, Кодировка = "windows-1251")
|
||||
пер ТекущийИд: Строка
|
||||
пер ЭтоЭлементКода: Булево
|
||||
пока ЧтениеXml.Следующий()
|
||||
если ЧтениеXml.ВидУзла == ВидУзлаXml.НачалоЭлемента и ЧтениеXml.Имя == "Item"
|
||||
ТекущийИд = ЧтениеXml.ЗначениеАтрибутаПоИндексу(0)
|
||||
;
|
||||
если ЭтоЭлементКода и ЧтениеXml.ВидУзла == ВидУзлаXml.Текст и Валюта.Код == ЧтениеXml.Значение
|
||||
Валюта.ВнешнийИдентификатор = ТекущийИд
|
||||
прервать
|
||||
;
|
||||
ЭтоЭлементКода = ЧтениеXml.ВидУзла == ВидУзлаXml.НачалоЭлемента и ЧтениеXml.Имя == "ISO_Char_Code"
|
||||
;
|
||||
иначе
|
||||
выбросить новый ИсключениеЗагрузкиКурсовВалют(
|
||||
"Ошибка при получении внешнего справочника валют. Код %{Ответ.КодСостояния}",
|
||||
ВалютаСсылка)
|
||||
;
|
||||
поймать Искл: ИсключениеHttp
|
||||
выбросить новый ИсключениеЗагрузкиКурсовВалют("Ошибка при выполнении запроса к сервису курсов валют", ВалютаСсылка, Искл)
|
||||
поймать Искл: ИсключениеЧтенияXml
|
||||
выбросить новый ИсключениеЗагрузкиКурсовВалют("Ошибка при чтении внешнего справочника валют", ВалютаСсылка, Искл)
|
||||
;
|
||||
|
||||
если не Валюта.ВнешнийИдентификатор.Пусто()
|
||||
исп КонтекстДоступа.Дополнить(Тип<Валюты.Объект>, [Сущность.Право.Изменение])
|
||||
Валюта.Записать()
|
||||
иначе
|
||||
выбросить новый ИсключениеЗагрузкиКурсовВалют("Во внешнем справочнике не удалось найти валюту с кодом %{Валюта.Код}", ВалютаСсылка)
|
||||
;
|
||||
;
|
||||
|
||||
// Загрузка курсов валюты
|
||||
|
||||
знч Url = "XML_dynamic.asp?date_req1=${НачалоПериода|дд/ММ/гггг}&date_req2=${КонецПериода|дд/ММ/гггг}&VAL_NM_RQ=%{Валюта.ВнешнийИдентификатор}"
|
||||
знч ЗапросКурсов = Клиент.ЗапросGet(Url)
|
||||
|
||||
пер КурсыВалюты = <КурсВалюты>[]
|
||||
попытка
|
||||
исп Ответ = ЗапросКурсов.Выполнить()
|
||||
если Ответ.КодСостояния == 200
|
||||
знч ЧтениеXml = новый ЧтениеXml(Ответ.Тело, Кодировка = "windows-1251")
|
||||
|
||||
пер ДатаКурса: Дата?
|
||||
пер Кратность: Число
|
||||
|
||||
пер ЭтоЭлементКурса: Булево
|
||||
пер ЭтоЭлементКратности: Булево
|
||||
|
||||
пока ЧтениеXml.Следующий()
|
||||
если ЧтениеXml.ВидУзла == ВидУзлаXml.НачалоЭлемента и ЧтениеXml.Имя == "Record"
|
||||
ДатаКурса = новый Дата(ЧтениеXml.ЗначениеАтрибутаПоИндексу(0))
|
||||
;
|
||||
если ЭтоЭлементКратности и ЧтениеXml.ВидУзла == ВидУзлаXml.Текст
|
||||
Кратность = новый Число(ЧтениеXml.Значение)
|
||||
;
|
||||
если ЭтоЭлементКурса и ЧтениеXml.ВидУзла == ВидУзлаXml.Текст
|
||||
знч Курс = новый Число(ЧтениеXml.Значение.Заменить(",","."))
|
||||
|
||||
знч КурсВалюты = новый КурсВалюты(
|
||||
Валюта = ВалютаСсылка,
|
||||
Период = ДатаКурса,
|
||||
Курс = Курс,
|
||||
Кратность = Кратность
|
||||
)
|
||||
|
||||
КурсыВалюты.Добавить(КурсВалюты)
|
||||
;
|
||||
ЭтоЭлементКурса = ЧтениеXml.ВидУзла == ВидУзлаXml.НачалоЭлемента и ЧтениеXml.Имя == "Value"
|
||||
ЭтоЭлементКратности = ЧтениеXml.ВидУзла == ВидУзлаXml.НачалоЭлемента и ЧтениеXml.Имя == "Nominal"
|
||||
;
|
||||
иначе
|
||||
выбросить новый ИсключениеЗагрузкиКурсовВалют("Ошибка при получении курсов валют. Код %{Ответ.КодСостояния}", ВалютаСсылка)
|
||||
;
|
||||
поймать Искл: ИсключениеHttp
|
||||
выбросить новый ИсключениеЗагрузкиКурсовВалют("Ошибка при выполнении запроса к сервису курсов валют", ВалютаСсылка, Искл)
|
||||
поймать Искл: ИсключениеЧтенияXml
|
||||
выбросить новый ИсключениеЗагрузкиКурсовВалют("Ошибка при чтении курсов валют", ВалютаСсылка, Искл)
|
||||
;
|
||||
|
||||
// Запись полученных данных в регистр сведений
|
||||
|
||||
если не КурсыВалюты.Пусто()
|
||||
для КурсВалюты из КурсыВалюты
|
||||
знч НоваяЗапись = новый КурсыВалют.Запись(
|
||||
Период = КурсВалюты.Период,
|
||||
Валюта = ВалютаСсылка,
|
||||
Курс = КурсВалюты.Курс,
|
||||
Кратность = КурсВалюты.Кратность
|
||||
)
|
||||
|
||||
КурсыВалют.Записать(НоваяЗапись)
|
||||
;
|
||||
;
|
||||
;
|
||||
|
||||
@ВПроекте
|
||||
метод ЗапланироватьЗагрузкуКурсовВалют()
|
||||
ЗапланированныеЗадания.Создать(&КурсыВалютСервер.ЗагрузитьКурсыВалют)
|
||||
.Настроить(Ключ = КЛЮЧ_ЗАДАНИЯ_ЗАГРУЗКИ_КУРСОВ,
|
||||
СтратегияПубликации = СтратегияПубликацииЗадания.Отбросить,
|
||||
Расписание = Расписание.Ежедневно(ЗапуститьВ = Время{12:00}, ИсполнятьПропущенное = Истина),
|
||||
Описание = "Загрузка курсов валют")
|
||||
.ЗапланироватьБезТранзакции()
|
||||
;
|
||||
|
||||
@ВПодсистеме
|
||||
метод ПриостановитьЗагрузкуКурсовВалют()
|
||||
ЗапланированныеЗадания.Приостановить(КЛЮЧ_ЗАДАНИЯ_ЗАГРУЗКИ_КУРСОВ)
|
||||
;
|
||||
|
||||
@ВПодсистеме
|
||||
метод ВозобновитьЗагрузкуКурсовВалют()
|
||||
если ЗапланированныеЗадания.Возобновить(КЛЮЧ_ЗАДАНИЯ_ЗАГРУЗКИ_КУРСОВ) == Неопределено
|
||||
ЗапланироватьЗагрузкуКурсовВалют()
|
||||
;
|
||||
;
|
||||
|
||||
@ВПодсистеме
|
||||
метод ЗагрузкаКурсовВалютЗапланирована(): Булево
|
||||
знч Дескриптор = ЗапланированныеЗадания.ПолучитьПоКлючу(КЛЮЧ_ЗАДАНИЯ_ЗАГРУЗКИ_КУРСОВ)
|
||||
если Дескриптор != Неопределено
|
||||
возврат Дескриптор.Статус == СтатусЗадания.Ожидает или Дескриптор.Статус == СтатусЗадания.Выполняется
|
||||
иначе
|
||||
возврат Ложь
|
||||
;
|
||||
;
|
5
Koncept/Testovoe/Общие/КурсыВалют/КурсыВалютСервер.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
ВидЭлемента: ОбщийМодуль
|
||||
Ид: 23d62ccc-cf7e-4ca6-9ee7-3249fa4d7c62
|
||||
ОбластьВидимости: ВПроекте
|
||||
Имя: КурсыВалютСервер
|
||||
Окружение: Сервер
|
@ -0,0 +1,38 @@
|
||||
ВидЭлемента: КомпонентИнтерфейса
|
||||
Ид: d7a056c6-4166-43d9-b1a5-ae6ccbb410d8
|
||||
Имя: КурсыВалютФормаОбъекта
|
||||
ОбластьВидимости: ВПодсистеме
|
||||
Наследует:
|
||||
Тип: ФормаОбъекта<КурсыВалют.Запись>
|
||||
Заголовок: $ЛокализованныеСтроки.КурсыВалют
|
||||
ОсновнаяКоманда: =ЗаписатьИЗакрыть
|
||||
ОбычныеКоманды:
|
||||
Тип: ФрагментКомандногоИнтерфейса<Команда>
|
||||
Элементы:
|
||||
- =Удалить
|
||||
Содержимое:
|
||||
Тип: ПроизвольныйШаблонФормы
|
||||
ШиринаВКолонках: Одинарная
|
||||
Содержимое:
|
||||
Тип: АвтоматическаяГруппа
|
||||
Содержимое:
|
||||
-
|
||||
Тип: ПолеВвода<Дата>
|
||||
Заголовок: $ЛокализованныеСтроки.Период
|
||||
Значение: =Объект.Период
|
||||
Обязательное: Истина
|
||||
-
|
||||
Тип: ПолеВвода<Валюты.Ссылка?>
|
||||
Заголовок: $ЛокализованныеСтроки.Валюта
|
||||
Значение: =Объект.Валюта
|
||||
Обязательное: Истина
|
||||
-
|
||||
Тип: ПолеВвода<Число>
|
||||
Заголовок: $ЛокализованныеСтроки.Курс
|
||||
Значение: =Объект.Курс
|
||||
Обязательное: Истина
|
||||
-
|
||||
Тип: ПолеВвода<Число>
|
||||
Заголовок: $ЛокализованныеСтроки.Кратность
|
||||
Значение: =Объект.Кратность
|
||||
Обязательное: Истина
|
52
Koncept/Testovoe/Общие/КурсыВалют/КурсыВалютФормаСписка.yaml
Normal file
@ -0,0 +1,52 @@
|
||||
ВидЭлемента: КомпонентИнтерфейса
|
||||
Ид: 4eeaba79-571b-4801-9a2d-fa068b9446aa
|
||||
Имя: КурсыВалютФормаСписка
|
||||
ОбластьВидимости: ВПроекте
|
||||
Наследует:
|
||||
Тип: ФормаСписка
|
||||
ПовторноеИспользованиеФормы: Ложь
|
||||
КомпонентТаблицы: =Компоненты.ТаблицаСписка
|
||||
Содержимое:
|
||||
Тип: ПроизвольныйШаблонФормы
|
||||
Содержимое:
|
||||
Тип: Таблица<ДинамическийСписок>
|
||||
Имя: ТаблицаСписка
|
||||
Источник:
|
||||
ОсновнаяТаблица:
|
||||
Таблица: КурсыВалют
|
||||
Поля:
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Период
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Валюта
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Курс
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Кратность
|
||||
ПрокруткаПоВертикали: Истина
|
||||
ИспользованиеПоиска: Ложь
|
||||
Навигация: ПодгрузкаПриПрокрутке
|
||||
Колонки:
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Период
|
||||
ПолеЗначения: Период
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Валюта
|
||||
ПолеЗначения: Валюта
|
||||
ОбрабатыватьНажатие: Ложь
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Курс
|
||||
ПолеЗначения: Курс
|
||||
ВыравниваниеВГруппеПоГоризонтали: Конец
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Кратность
|
||||
ПолеЗначения: Кратность
|
||||
ВыравниваниеВГруппеПоГоризонтали: Конец
|
@ -0,0 +1,21 @@
|
||||
ВидЭлемента: СобытиеЖурналаСобытий
|
||||
Ид: 647137c2-e728-45bf-b1b7-eec040c598cd
|
||||
Имя: ОперацияЗагрузкиКурсовВалют
|
||||
ОбластьВидимости: ВПодсистеме
|
||||
Описание: Событие операции загрузки курсов валют
|
||||
Важность: Обычная
|
||||
ВидСобытия: Операция
|
||||
ШаблонПредставленияНачала: Начало загрузки курсов валют за период c %{НачалоПериодаЗагрузки} по %{КонецПериодаЗагрузки}
|
||||
ШаблонПредставленияКонца: Завершение загрузки курсов валют за период c %{НачалоПериодаЗагрузки} по %{КонецПериодаЗагрузки}
|
||||
ШаблонПредставленияОшибки: Не удалось выполнить загрузку курсов валют
|
||||
Свойства:
|
||||
-
|
||||
Ид: a1d5b90d-fe38-4160-a330-77e2861ae314
|
||||
Имя: НачалоПериодаЗагрузки
|
||||
Описание: Начало периода загрузки курсов валют
|
||||
Тип: Строка
|
||||
-
|
||||
Ид: 8e35aa38-aa61-4cb3-ab95-1000be7cf368
|
||||
Имя: КонецПериодаЗагрузки
|
||||
Описание: Конец периода загрузки курсов валют
|
||||
Тип: Строка
|
@ -0,0 +1,20 @@
|
||||
ВидЭлемента: СобытиеЖурналаСобытий
|
||||
Ид: f8ced091-9bee-44c9-be81-0b69647278bc
|
||||
Имя: ОшибкаЗагрузкиКурсовВалюты
|
||||
ОбластьВидимости: ВПодсистеме
|
||||
Описание: Ошибка при загрузке курсов валюты
|
||||
ВидСобытия: Ошибка
|
||||
ШаблонПредставления: "При загрузке курсов валюты %{Валюта}: %{ОписаниеОшибки}"
|
||||
Свойства:
|
||||
-
|
||||
Ид: e10762eb-cb69-4be1-be7b-767b920afaa6
|
||||
Имя: Валюта
|
||||
Описание: Валюта, при загрузке курсов которой произошла ошибка
|
||||
Тип: Строка
|
||||
Обязательно: Истина
|
||||
-
|
||||
Ид: 5d4f03a9-5603-4cf4-8e57-d4518d65ec8e
|
||||
Имя: ОписаниеОшибки
|
||||
Описание: Описание ошибки
|
||||
Тип: Строка
|
||||
Обязательно: Истина
|
@ -0,0 +1,48 @@
|
||||
@Обработчик
|
||||
метод ПослеСоздания()
|
||||
ЗагружатьКурсыАвтоматически = ЗагрузкаКурсовВалютЗапланирована()
|
||||
знч ТекущаяДата = ДатаВремя.Сейчас().Дата
|
||||
ПериодЗагрузки = новый ЗакрытыйДиапазон<Дата>(ТекущаяДата, ТекущаяДата)
|
||||
;
|
||||
|
||||
метод ЗагрузитьПриНажатии(Команда: ОбычнаяКоманда)
|
||||
ЗагрузитьКурсыВалют(ПериодЗагрузки.От, ПериодЗагрузки.До)
|
||||
|
||||
КурсыВалютЗагружены.Оповестить()
|
||||
|
||||
знч Уведомление = новый Уведомление(ЛокализованныеСтроки.ЗагрузкаКурсовВалют(), ЛокализованныеСтроки.КурсыВалютЗагружены())
|
||||
Уведомление.ОценкаИнформации = ОценкаИнформации.Положительная
|
||||
Уведомление.Показать()
|
||||
|
||||
Закрыть()
|
||||
;
|
||||
|
||||
метод ЗагружатьАвтоматическиПриИзменении(Источник: Флажок, Событие: СобытиеПриИзменении<Булево?>)
|
||||
если Событие.НовоеЗначение
|
||||
ВозобновитьЗагрузкуКурсовВалют()
|
||||
иначе
|
||||
ПриостановитьЗагрузкуКурсовВалют()
|
||||
;
|
||||
;
|
||||
|
||||
@НаСервере @ДоступноСКлиента
|
||||
статический метод ЗагрузитьКурсыВалют(НачалоПериода: Дата, КонецПериода: Дата)
|
||||
исп КонтекстДоступа.Дополнить(Тип<КурсыВалют.Запись>, [Сущность.Право.Изменение])
|
||||
|
||||
КурсыВалютСервер.ЗагрузитьКурсыВалют(НачалоПериода, КонецПериода)
|
||||
;
|
||||
|
||||
@НаСервере @ДоступноСКлиента
|
||||
статический метод ВозобновитьЗагрузкуКурсовВалют()
|
||||
КурсыВалютСервер.ВозобновитьЗагрузкуКурсовВалют()
|
||||
;
|
||||
|
||||
@НаСервере @ДоступноСКлиента
|
||||
статический метод ПриостановитьЗагрузкуКурсовВалют()
|
||||
КурсыВалютСервер.ПриостановитьЗагрузкуКурсовВалют()
|
||||
;
|
||||
|
||||
@НаСервере @ДоступноСКлиента
|
||||
статический метод ЗагрузкаКурсовВалютЗапланирована(): Булево
|
||||
возврат КурсыВалютСервер.ЗагрузкаКурсовВалютЗапланирована()
|
||||
;
|
@ -0,0 +1,40 @@
|
||||
ВидЭлемента: КомпонентИнтерфейса
|
||||
Ид: 05fb961d-73c4-4988-8ce9-0d6908035c89
|
||||
Имя: ФормаЗагрузкиКурсовВалют
|
||||
ОбластьВидимости: ВПроекте
|
||||
Импорт:
|
||||
- Основное
|
||||
Свойства:
|
||||
-
|
||||
Имя: ПериодЗагрузки
|
||||
Тип: ЗакрытыйДиапазон<Дата>?
|
||||
-
|
||||
Имя: ЗагружатьКурсыАвтоматически
|
||||
Тип: Булево
|
||||
Наследует:
|
||||
Тип: Форма
|
||||
Заголовок: $ЛокализованныеСтроки.ЗагрузкаКурсовВалют
|
||||
ОсновнаяКоманда:
|
||||
Тип: ОбычнаяКоманда
|
||||
Представление: $ЛокализованныеСтроки.Загрузить
|
||||
Изображение: Скачать.svg
|
||||
Обработчик: ЗагрузитьПриНажатии
|
||||
Содержимое:
|
||||
Тип: ПроизвольныйШаблонФормы
|
||||
ШиринаВКолонках: Одинарная
|
||||
Содержимое:
|
||||
Тип: АвтоматическаяГруппа
|
||||
Содержимое:
|
||||
-
|
||||
Тип: Флажок
|
||||
Заголовок: $ЛокализованныеСтроки.ЗагружатьКурсыАвтоматически
|
||||
Видимость: =ПользователиКлиентИСервер.ЭтоАдминистраторПриложения()
|
||||
Значение: =ЗагружатьКурсыАвтоматически
|
||||
Вид: Переключатель
|
||||
ПриИзменении: ЗагружатьАвтоматическиПриИзменении
|
||||
РастягиватьПоГоризонтали: Истина
|
||||
-
|
||||
Тип: ПолеВвода<ЗакрытыйДиапазон<Дата>?>
|
||||
Заголовок: $ЛокализованныеСтроки.ПериодЗагрузки
|
||||
Значение: =ПериодЗагрузки
|
||||
РастягиватьПоГоризонтали: Истина
|
@ -0,0 +1,30 @@
|
||||
Строки:
|
||||
Регион: Region
|
||||
Регионы: Regions
|
||||
Направление: Line of business
|
||||
Направления: Lines of business
|
||||
ДобавитьНаправление: Add line of business
|
||||
Валюта: Currency
|
||||
Валюты: Currencies
|
||||
Наименование: Name
|
||||
Код: Code
|
||||
ДатаКурса: Rate date
|
||||
Курс: Rate
|
||||
Кратность: Multiplicity
|
||||
КурсыВалют: Currency rates
|
||||
Период: Period
|
||||
ЗагрузкаКурсовВалют: Download currency rates
|
||||
ЗагрузитьКурсыВалют: Download currency rates
|
||||
ЗагружатьКурсыАвтоматически: Download currency rates automatically
|
||||
ПериодЗагрузки: Download period
|
||||
Загрузить: Download
|
||||
КурсыВалютЗагружены: Currency rates are loaded
|
||||
ОбязательноеПоле: Required field
|
||||
НеУказаныНаправления: Lines of business not specified
|
||||
Уведомления: Notifications
|
||||
Добавить: Add
|
||||
Удалить: Delete
|
||||
Поиск: Search
|
||||
Найти: Search
|
||||
СтрокаПоиска: Search request
|
||||
РезультатыПоиска: Search results
|
34
Koncept/Testovoe/Общие/ЛокализованныеСтроки.yaml
Normal file
@ -0,0 +1,34 @@
|
||||
ВидЭлемента: ЛокализованныеСтроки
|
||||
Ид: 6b87da6c-a775-4443-ba27-88e952e24207
|
||||
Имя: ЛокализованныеСтроки
|
||||
ОбластьВидимости: ВПроекте
|
||||
Строки:
|
||||
Регион: Регион
|
||||
Регионы: Регионы
|
||||
Направление: Направление
|
||||
Направления: Направления
|
||||
ДобавитьНаправление: Добавить направление
|
||||
Валюта: Валюта
|
||||
Валюты: Валюты
|
||||
Наименование: Наименование
|
||||
Код: Код
|
||||
ДатаКурса: Дата курса
|
||||
Курс: Курс
|
||||
Кратность: Кратность
|
||||
КурсыВалют: Курсы валют
|
||||
Период: Период
|
||||
ЗагрузкаКурсовВалют: Загрузка курсов валют
|
||||
ЗагрузитьКурсыВалют: Загрузить курсы валют
|
||||
ЗагружатьКурсыАвтоматически: Загружать курсы автоматически
|
||||
ПериодЗагрузки: Период загрузки
|
||||
Загрузить: Загрузить
|
||||
КурсыВалютЗагружены: Курсы валют загружены
|
||||
ОбязательноеПоле: Обязательное поле
|
||||
НеУказаныНаправления: Не указаны направления
|
||||
Уведомления: Уведомления
|
||||
Добавить: Добавить
|
||||
Удалить: Удалить
|
||||
Поиск: Поиск
|
||||
Найти: Найти
|
||||
СтрокаПоиска: Строка поиска
|
||||
РезультатыПоиска: Результаты поиска
|
23
Koncept/Testovoe/Общие/Направления.xbsl
Normal file
@ -0,0 +1,23 @@
|
||||
импорт Основное
|
||||
|
||||
@Обработчик
|
||||
метод ВычислитьРазрешенияДоступа(): Массив<РазрешениеДоступа>
|
||||
возврат [
|
||||
ПользователиКлиентИСервер.ПолныеПраваНаСправочникДляРуководителя(),
|
||||
новый РазрешениеДоступа(
|
||||
[новый КлючДоступаДляАутентифицированных.Объект()],
|
||||
[Сущность.Право.Чтение])
|
||||
]
|
||||
;
|
||||
|
||||
@ВПроекте
|
||||
метод ПолучитьНаправления(): ЧитаемыйМассив<Направления.Ссылка>
|
||||
знч Запрос = Запрос{
|
||||
ВЫБРАТЬ
|
||||
Ссылка
|
||||
ИЗ
|
||||
Направления
|
||||
}
|
||||
|
||||
возврат Запрос.Выполнить().Преобразовать(Строка -> Строка.Ссылка)
|
||||
;
|
20
Koncept/Testovoe/Общие/Направления.yaml
Normal file
@ -0,0 +1,20 @@
|
||||
ВидЭлемента: Справочник
|
||||
Ид: 03a6ab0b-1e6b-4cc4-ac1e-028c27d1db89
|
||||
Имя: Направления
|
||||
ОбластьВидимости: ВПроекте
|
||||
КонтрольДоступа:
|
||||
Разрешения:
|
||||
ПоУмолчанию: РазрешенияВычисляются
|
||||
Интерфейс:
|
||||
Список:
|
||||
Форма: НаправленияФормаСписка
|
||||
Представление: $ЛокализованныеСтроки.Направления
|
||||
Объект:
|
||||
Форма: НаправленияФормаОбъекта
|
||||
Представление: Наименование
|
||||
ИспользоватьВПолнотекстовомПоиске: Ложь
|
||||
Реквизиты:
|
||||
-
|
||||
Имя: Наименование
|
||||
Длина: 200
|
||||
НезаполненноеЗначение: ЗапретитьВсегда
|
7
Koncept/Testovoe/Общие/НаправленияФормаОбъекта.xbsl
Normal file
@ -0,0 +1,7 @@
|
||||
@Обработчик
|
||||
метод ПередЗаписьюОбъекта()
|
||||
если Объект.Наименование.Сократить().Пусто()
|
||||
Компоненты.ПолеВводаНаименование.РезультатПроверкиДанных = РезультатПроверкиДанных.Ошибка
|
||||
выбросить новый ИсключениеВалидации("Не заполнены обязательные поля", ОтображатьСообщениеОбОшибке = Ложь)
|
||||
;
|
||||
;
|
21
Koncept/Testovoe/Общие/НаправленияФормаОбъекта.yaml
Normal file
@ -0,0 +1,21 @@
|
||||
ВидЭлемента: КомпонентИнтерфейса
|
||||
Ид: e7c284ab-3307-410d-8dcf-aa3c042d5f6b
|
||||
Имя: НаправленияФормаОбъекта
|
||||
ОбластьВидимости: ВПодсистеме
|
||||
Наследует:
|
||||
Тип: ФормаОбъекта<Направления.Объект>
|
||||
Заголовок: $ЛокализованныеСтроки.Направление
|
||||
ОсновнаяКоманда: =ЗаписатьИЗакрыть
|
||||
Содержимое:
|
||||
Тип: ПроизвольныйШаблонФормы
|
||||
ШиринаВКолонках: Одинарная
|
||||
Содержимое:
|
||||
Тип: АвтоматическаяГруппа
|
||||
Содержимое:
|
||||
-
|
||||
Тип: ПолеВвода<Строка>
|
||||
Имя: ПолеВводаНаименование
|
||||
Заголовок: $ЛокализованныеСтроки.Наименование
|
||||
Значение: =Объект.Наименование
|
||||
Обязательное: Истина
|
||||
СообщениеОшибка: $Общие::ЛокализованныеСтроки.ОбязательноеПоле
|
30
Koncept/Testovoe/Общие/НаправленияФормаСписка.yaml
Normal file
@ -0,0 +1,30 @@
|
||||
ВидЭлемента: КомпонентИнтерфейса
|
||||
Ид: a22f1f8a-3264-4f0a-b1d5-ecda6885326d
|
||||
Имя: НаправленияФормаСписка
|
||||
ОбластьВидимости: ВПодсистеме
|
||||
Наследует:
|
||||
Тип: ФормаСписка
|
||||
КомпонентТаблицы: =Компоненты.ТаблицаСписка
|
||||
КомандыСоздания: =Создать
|
||||
Содержимое:
|
||||
Тип: ПроизвольныйШаблонФормы
|
||||
Содержимое:
|
||||
Тип: ФиксированнаяГруппа
|
||||
Содержимое:
|
||||
-
|
||||
Тип: Таблица<ДинамическийСписок>
|
||||
ИспользованиеПоиска: Ложь
|
||||
Имя: ТаблицаСписка
|
||||
Источник:
|
||||
ОсновнаяТаблица:
|
||||
Таблица: Направления
|
||||
Поля:
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Наименование
|
||||
Колонки:
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Наименование
|
||||
ПолеЗначения: Наименование
|
||||
ШиринаВКолонках: Одинарная
|
12
Koncept/Testovoe/Общие/ОкноПолнотекстовогоПоиска.xbsl
Normal file
@ -0,0 +1,12 @@
|
||||
импорт Пресейл
|
||||
импорт Мероприятия
|
||||
|
||||
метод НайтиПриНажатии(Источник: Кнопка, Событие: СобытиеПриНажатии)
|
||||
знч РезультатыПоиска = ВыполнитьПоиск(СтрокаПоиска)
|
||||
Закрыть(РезультатыПоиска)
|
||||
;
|
||||
|
||||
@НаСервере @ДоступноСКлиента
|
||||
статический метод ВыполнитьПоиск(СтрокаПоиска: Строка): ЧитаемыйМассив<Сущность.Ключ>
|
||||
возврат ПолнотекстовыйПоиск.Искать(СтрокаПоиска, 0, 100, ОбластьПоиска = [Тип<Сделки.Ссылка>, Тип<Задачи.Ссылка>, Тип<События.Ссылка>])
|
||||
;
|
31
Koncept/Testovoe/Общие/ОкноПолнотекстовогоПоиска.yaml
Normal file
@ -0,0 +1,31 @@
|
||||
ВидЭлемента: КомпонентИнтерфейса
|
||||
Ид: 0cffd919-3385-4201-a771-741c4bc7b0fd
|
||||
Имя: ОкноПолнотекстовогоПоиска
|
||||
ОбластьВидимости: ВПроекте
|
||||
Свойства:
|
||||
-
|
||||
Имя: СтрокаПоиска
|
||||
Тип: Строка
|
||||
Наследует:
|
||||
Тип: ВсплывающийКомпонент<ЧитаемыйМассив<Сущность.Ключ>>
|
||||
ШиринаВКолонках: Четверная
|
||||
РастягиватьПоГоризонтали: Истина
|
||||
Содержимое:
|
||||
Тип: ПроизвольныйШаблонФормы
|
||||
Содержимое:
|
||||
Тип: АвтоматическаяГруппа
|
||||
Заголовок: $ЛокализованныеСтроки.Поиск
|
||||
Ориентация: Вертикальная
|
||||
ОтступПоВертикали: Одинарный
|
||||
ОтступПоГоризонтали: Одинарный
|
||||
Содержимое:
|
||||
-
|
||||
Тип: ПолеВвода<Строка>
|
||||
Заголовок: $ЛокализованныеСтроки.СтрокаПоиска
|
||||
Значение: =СтрокаПоиска
|
||||
-
|
||||
Тип: Кнопка
|
||||
Заголовок: $ЛокализованныеСтроки.Найти
|
||||
Доступность: =не СтрокаПоиска.Сократить().Пусто()
|
||||
ВыравниваниеВГруппеПоГоризонтали: Конец
|
||||
ПриНажатии: НайтиПриНажатии
|
4
Koncept/Testovoe/Общие/Подсистема.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
Использование:
|
||||
- Основное
|
||||
- Пресейл
|
||||
- Мероприятия
|
24
Koncept/Testovoe/Общие/Регионы.xbsl
Normal file
@ -0,0 +1,24 @@
|
||||
импорт Основное
|
||||
|
||||
@Обработчик
|
||||
метод ВычислитьРазрешенияДоступа(): Массив<РазрешениеДоступа>
|
||||
возврат [ПользователиКлиентИСервер.ПолныеПраваНаСправочникДляАутентифицированных()]
|
||||
;
|
||||
|
||||
@Обработчик
|
||||
метод ВычислитьРазрешенияДоступаДляОбъектов(Объекты: ЧитаемыйМассив<Регионы.ДанныеРасчетаРазрешений>): ЧитаемоеСоответствие<Регионы.ДанныеРасчетаРазрешений, ЧитаемаяКоллекция<РазрешениеДоступа>>
|
||||
знч Результат = <Регионы.ДанныеРасчетаРазрешений, Массив<РазрешениеДоступа>>{:}
|
||||
|
||||
для Объект из Объекты
|
||||
знч Разрешения = <РазрешениеДоступа>[
|
||||
ПользователиКлиентИСервер.ПолныеПраваНаСправочникДляРуководителя(),
|
||||
новый РазрешениеДоступа(
|
||||
[новый КлючДоступаМенеджера.Объект(Владелец = Объект.Ссылка)],
|
||||
[Сущность.Право.Чтение])
|
||||
]
|
||||
|
||||
Результат.Вставить(Объект, Разрешения)
|
||||
;
|
||||
|
||||
возврат Результат
|
||||
;
|
15
Koncept/Testovoe/Общие/Регионы.yaml
Normal file
@ -0,0 +1,15 @@
|
||||
ВидЭлемента: Справочник
|
||||
Ид: 7489a9bf-adae-4e8e-a01b-0bdc76e94c7c
|
||||
Имя: Регионы
|
||||
ОбластьВидимости: ВПроекте
|
||||
КонтрольДоступа:
|
||||
Разрешения:
|
||||
ПоУмолчанию: РазрешенияВычисляютсяДляКаждогоОбъекта
|
||||
РасчетРазрешенийПо:
|
||||
- Ссылка
|
||||
ИспользоватьВПолнотекстовомПоиске: Ложь
|
||||
Реквизиты:
|
||||
-
|
||||
Имя: Наименование
|
||||
Длина: 300
|
||||
НезаполненноеЗначение: ЗапретитьВсегда
|
232
Koncept/Testovoe/Общие/РезультатыПолнотекстовогоПоиска.yaml
Normal file
@ -0,0 +1,232 @@
|
||||
ВидЭлемента: КомпонентИнтерфейса
|
||||
Ид: fb08c5e5-c360-44be-a352-c0ba15229dfc
|
||||
Имя: РезультатыПолнотекстовогоПоиска
|
||||
ОбластьВидимости: ВПроекте
|
||||
Импорт:
|
||||
- Пресейл
|
||||
- Мероприятия
|
||||
Свойства:
|
||||
-
|
||||
Имя: РезультатыПоиска
|
||||
Тип: ЧитаемыйМассив<Сущность.Ключ>
|
||||
Наследует:
|
||||
Тип: Форма
|
||||
Заголовок: $ЛокализованныеСтроки.РезультатыПоиска
|
||||
ШиринаВКолонках: Тройная
|
||||
РастягиватьПоВертикали: Истина
|
||||
Содержимое:
|
||||
Тип: ПроизвольныйШаблонФормы
|
||||
Содержимое:
|
||||
Тип: Страницы
|
||||
Страницы:
|
||||
-
|
||||
Заголовок: $Пресейл::ЛокализованныеСтроки.Сделки
|
||||
Содержимое:
|
||||
Тип: Таблица<ДинамическийСписок>
|
||||
Источник:
|
||||
ОсновнаяТаблица:
|
||||
Таблица: Сделки
|
||||
Псевдоним: Сделки
|
||||
Поля:
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Код
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Наименование
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: ДатаСоздания
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Клиент
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Стадия
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Стадия.Иконка
|
||||
Псевдоним: Стадия_Иконка
|
||||
Фильтр:
|
||||
Элементы:
|
||||
-
|
||||
Тип: ЭлементФильтра
|
||||
Поле: Сделки.Ссылка
|
||||
ВидСравнения: ВСписке
|
||||
Значение: =РезультатыПоиска
|
||||
Использовать: Истина
|
||||
Сортировка:
|
||||
-
|
||||
Поле: ДатаСоздания
|
||||
НаправлениеСортировки: ПоУбыванию
|
||||
ПрокруткаПоВертикали: Истина
|
||||
ОтображатьНастройки: Ложь
|
||||
ИспользованиеПоиска: Ложь
|
||||
Навигация: ПодгрузкаПриПрокрутке
|
||||
Колонки:
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $Пресейл::ЛокализованныеСтроки.ДатаСоздания
|
||||
ПолеЗначения: ДатаСоздания
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $Пресейл::ЛокализованныеСтроки.Клиент
|
||||
ПолеЗначения: Клиент
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $Пресейл::ЛокализованныеСтроки.Содержание
|
||||
ПолеЗначения: Наименование
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $Пресейл::ЛокализованныеСтроки.Стадия
|
||||
ПолеЗначения: Стадия
|
||||
ОбрабатыватьНажатие: Ложь
|
||||
Изображение: =ДанныеСтроки.Данные["Стадия_Иконка"] как ДвоичныйОбъект.Ссылка?
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Код
|
||||
ПолеЗначения: Код
|
||||
-
|
||||
Заголовок: $Мероприятия::ЛокализованныеСтроки.Задачи
|
||||
Содержимое:
|
||||
Тип: Таблица<ДинамическийСписок>
|
||||
Источник:
|
||||
ОсновнаяТаблица:
|
||||
Таблица: Задачи
|
||||
Поля:
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Код
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Наименование
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Описание
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: ДатаСоздания
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Владелец
|
||||
Представление: Сделка
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Ответственный
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Статус
|
||||
Фильтр:
|
||||
Элементы:
|
||||
-
|
||||
Тип: ЭлементФильтра
|
||||
Поле: Задачи.Ссылка
|
||||
ВидСравнения: ВСписке
|
||||
Значение: =РезультатыПоиска
|
||||
Использовать: Истина
|
||||
Сортировка:
|
||||
-
|
||||
Поле: ДатаСоздания
|
||||
НаправлениеСортировки: ПоУбыванию
|
||||
ОтображатьНастройки: Ложь
|
||||
ИспользованиеПоиска: Ложь
|
||||
Навигация: ПодгрузкаПриПрокрутке
|
||||
Колонки:
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $Мероприятия::ЛокализованныеСтроки.ДатаСоздания
|
||||
ПолеЗначения: ДатаСоздания
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $Пресейл::ЛокализованныеСтроки.Сделка
|
||||
ПолеЗначения: Владелец
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Наименование
|
||||
ПолеЗначения: Наименование
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $Мероприятия::ЛокализованныеСтроки.Описание
|
||||
ПолеЗначения: Описание
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $Мероприятия::ЛокализованныеСтроки.Ответственный
|
||||
ПолеЗначения: Ответственный
|
||||
ОбрабатыватьНажатие: Ложь
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $Мероприятия::ЛокализованныеСтроки.Статус
|
||||
ПолеЗначения: Статус
|
||||
Вид: Значок
|
||||
Цвет: =(ДанныеСтроки.Данные["Статус"] как СтатусМероприятия).ПолучитьЦвет()
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Код
|
||||
ПолеЗначения: Код
|
||||
-
|
||||
Заголовок: $Мероприятия::ЛокализованныеСтроки.События
|
||||
Содержимое:
|
||||
Тип: Таблица<ДинамическийСписок>
|
||||
Источник:
|
||||
ОсновнаяТаблица:
|
||||
Таблица: События
|
||||
Поля:
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Код
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Наименование
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: ДатаСоздания
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: Владелец
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: ДатаНачала
|
||||
-
|
||||
Тип: ПолеДинамическогоСписка
|
||||
Выражение: ДатаЗавершения
|
||||
Фильтр:
|
||||
Элементы:
|
||||
-
|
||||
Тип: ЭлементФильтра
|
||||
Поле: События.Ссылка
|
||||
ВидСравнения: ВСписке
|
||||
Значение: =РезультатыПоиска
|
||||
Использовать: Истина
|
||||
Сортировка:
|
||||
-
|
||||
Поле: ДатаНачала
|
||||
НаправлениеСортировки: ПоУбыванию
|
||||
ПрокруткаПоВертикали: Истина
|
||||
ОтображатьНастройки: Ложь
|
||||
ИспользованиеПоиска: Ложь
|
||||
Навигация: ПодгрузкаПриПрокрутке
|
||||
Колонки:
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $Мероприятия::ЛокализованныеСтроки.ДатаНачала
|
||||
ПолеЗначения: ДатаНачала
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $Мероприятия::ЛокализованныеСтроки.ДатаЗавершения
|
||||
ПолеЗначения: ДатаЗавершения
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $Пресейл::ЛокализованныеСтроки.Сделка
|
||||
ПолеЗначения: Владелец
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Наименование
|
||||
ПолеЗначения: Наименование
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $Мероприятия::ЛокализованныеСтроки.Описание
|
||||
ПолеЗначения: Описание
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
|
||||
Заголовок: $ЛокализованныеСтроки.Код
|
||||
ПолеЗначения: Код
|
113
Koncept/Testovoe/Основное/ГлавнаяСтраница.xbsl
Normal file
@ -0,0 +1,113 @@
|
||||
импорт Мероприятия
|
||||
импорт Пресейл
|
||||
импорт Общие::КурсыВалют
|
||||
|
||||
@Обработчик
|
||||
метод ПослеСоздания()
|
||||
ЗаполнитьКарточки()
|
||||
|
||||
КурсыВалютЗагружены.ПодключитьОбработчик(() -> ЗаполнитьКарточкуКурсыВалют())
|
||||
ЗаписанаЗадача.ПодключитьОбработчик(() -> ЗаполнитьКарточкуЗадачи())
|
||||
|
||||
ЗаписанаСделка.ПодключитьОбработчик(метод(Сделка) ->
|
||||
ЗаполнитьКарточкуСделки()
|
||||
ОбновитьДиаграммы()
|
||||
;)
|
||||
|
||||
// Если выполняется задание заполнения демо-данными, обновим компоненты после его завершения
|
||||
если СтатусЗаданияЗаполненияДемоДанными() == СтатусЗадания.Выполняется
|
||||
знч Уведомление = новый Уведомление("Заполнение данными", "Выполняется заполнение демонстрационными данными")
|
||||
Уведомление.ОценкаИнформации = ОценкаИнформации.Предупреждающая
|
||||
Уведомление.Показать()
|
||||
|
||||
ПодключитьОбработчикТаймера(&ОбновитьКомпонентыПослеЗаполненияДанными, 1с, Ложь)
|
||||
;
|
||||
;
|
||||
|
||||
метод ЗаполнитьКарточки()
|
||||
ЗаполнитьКарточкуКурсыВалют()
|
||||
ЗаполнитьКарточкуСделки()
|
||||
ЗаполнитьКарточкуЗадачи()
|
||||
;
|
||||
|
||||
метод ОбновитьДиаграммы()
|
||||
Компоненты.ДиаграммаВоронкаПродаж.ОбновитьДиаграмму()
|
||||
Компоненты.ДиаграммаПродажиПоНаправлениям.ОбновитьДиаграмму()
|
||||
;
|
||||
|
||||
метод ЗаполнитьКарточкуКурсыВалют()
|
||||
Компоненты.ТаблицаВалют.Источник.Данные = КурсыВалют()
|
||||
;
|
||||
|
||||
метод ЗаполнитьКарточкуСделки()
|
||||
знч СтатистикаСделок = СтатистикаАктивныхСделок()
|
||||
Компоненты.НадписьКоличествоСделок.Значение = СтатистикаСделок.ОбщееКоличество.Представление()
|
||||
Компоненты.НадписьСуммаСделок.Значение = "${СтатистикаСделок.ОбщаяСумма} руб."
|
||||
;
|
||||
|
||||
метод ЗаполнитьКарточкуЗадачи()
|
||||
знч КоличествоЗадач = КоличествоОткрытыхЗадачСотрудника()
|
||||
если КоличествоЗадач != Неопределено
|
||||
Компоненты.НадписьЗадачВПроцессе.Значение = КоличествоЗадач[СтатусМероприятия.ВПроцессе].Представление()
|
||||
Компоненты.НадписьЗадачЗапланировано.Значение = КоличествоЗадач[СтатусМероприятия.Запланировано].Представление()
|
||||
;
|
||||
;
|
||||
|
||||
метод КарточкаПутеводительПриНажатии(Источник: Карточка, Событие: СобытиеПриНажатии)
|
||||
ПутеводительПоПроекту.Открыть()
|
||||
;
|
||||
|
||||
метод КарточкаЗадачиПриНажатии(Источник: Карточка, Событие: СобытиеПриНажатии)
|
||||
ЗадачиФормаСписка.Открыть()
|
||||
;
|
||||
|
||||
метод КарточкаСделкиПриНажатии(Источник: Карточка, Событие: СобытиеПриНажатии)
|
||||
СделкиФормаСписка.Открыть()
|
||||
;
|
||||
|
||||
метод СоздатьСделкуПриНажатии(Команда: ОбычнаяКоманда)
|
||||
СделкиФормаОбъекта.ОткрытьВМодальномОкне()
|
||||
;
|
||||
|
||||
метод ДобавитьЗадачуПриНажатии(Команда: ОбычнаяКоманда)
|
||||
ЗадачиФормаОбъекта.ОткрытьВМодальномОкне()
|
||||
;
|
||||
|
||||
метод ЗагрузитьКурсыВалютПриНажатии(Команда: ОбычнаяКоманда)
|
||||
ФормаЗагрузкиКурсовВалют.ОткрытьВМодальномОкне()
|
||||
;
|
||||
|
||||
@НаСервере @ДоступноСКлиента
|
||||
статический метод СтатистикаАктивныхСделок(): Сделки.СтатистикаСделок
|
||||
возврат Сделки.ПолучитьСтатистикуАктивныхСделок()
|
||||
;
|
||||
|
||||
@НаСервере @ДоступноСКлиента
|
||||
статический метод КоличествоОткрытыхЗадачСотрудника(): ЧитаемоеСоответствие<СтатусМероприятия, Число>?
|
||||
знч Сотрудник = ПользователиКлиентИСервер.ПолучитьТекущегоСотрудника()
|
||||
возврат Сотрудник != Неопределено ? Задачи.КоличествоОткрытыхЗадачСотрудника(Сотрудник) : Неопределено
|
||||
;
|
||||
|
||||
@НаСервере @ДоступноСКлиента
|
||||
статический метод КурсыВалют(): Массив<КурсВалюты>
|
||||
возврат КурсыВалютСервер.ПолучитьКурсыВалют()
|
||||
;
|
||||
|
||||
метод ОбновитьКомпонентыПослеЗаполненияДанными()
|
||||
если СтатусЗаданияЗаполненияДемоДанными() != СтатусЗадания.Выполняется
|
||||
ОтключитьОбработчикТаймера(&ОбновитьКомпонентыПослеЗаполненияДанными)
|
||||
ЗаполнитьКарточки()
|
||||
ОбновитьДиаграммы()
|
||||
|
||||
знч Уведомление = новый Уведомление("Заполнение данными", "Завершено заполнение демонстрационными данными")
|
||||
Уведомление.ОценкаИнформации = ОценкаИнформации.Положительная
|
||||
Уведомление.Показать()
|
||||
;
|
||||
;
|
||||
|
||||
@НаСервере @ДоступноСКлиента
|
||||
статический метод СтатусЗаданияЗаполненияДемоДанными(): СтатусЗадания?
|
||||
знч КлючЗадания = ЗаполнениеДемоДанными.КлючЗаданияЗаполненияДанными(Пользователи.ТекущийПользователь)
|
||||
знч Задание = ЗапланированныеЗадания.ПолучитьПоКлючу(КлючЗадания)
|
||||
возврат Задание?.Статус
|
||||
;
|
195
Koncept/Testovoe/Основное/ГлавнаяСтраница.yaml
Normal file
@ -0,0 +1,195 @@
|
||||
ВидЭлемента: КомпонентИнтерфейса
|
||||
Ид: 097d7ca4-59f0-4d80-abd1-95c4292bba72
|
||||
Имя: ГлавнаяСтраница
|
||||
ОбластьВидимости: ВПодсистеме
|
||||
Импорт:
|
||||
- Пресейл
|
||||
- Общие::КурсыВалют
|
||||
Наследует:
|
||||
Тип: Форма
|
||||
ПовторноеИспользованиеФормы: Истина
|
||||
Содержимое:
|
||||
Тип: ПроизвольныйШаблонФормы
|
||||
Содержимое:
|
||||
Тип: АвтоматическаяГруппа
|
||||
ШиринаВКолонках: Четверная
|
||||
Ориентация: Горизонтальная
|
||||
РастягиватьПоВертикали: Ложь
|
||||
Содержимое:
|
||||
-
|
||||
Тип: СтандартнаяКарточка
|
||||
Заголовок: $ЛокализованныеСтроки.ПутеводительПоДемо
|
||||
ОбрабатыватьНажатие: Истина
|
||||
ШиринаВКолонках: Двойная
|
||||
МинимальнаяВысота: 230
|
||||
РастягиватьПоГоризонтали: Ложь
|
||||
Картинка:
|
||||
Тип: Картинка
|
||||
Изображение: РазделПутеводитель.svg
|
||||
Цвет: =Цвета.Фиолетовый
|
||||
ПриНажатии: КарточкаПутеводительПриНажатии
|
||||
Содержимое:
|
||||
Тип: Надпись
|
||||
Значение: ="В разделе «Путеводитель» вы можете найти описание демо-приложения и его компонентов, в которых используются те или иные механизмы технологии «1С:Предприятие.Элемент»"
|
||||
Важность: Высокая
|
||||
-
|
||||
Тип: СтандартнаяКарточка
|
||||
Заголовок: $Пресейл::ЛокализованныеСтроки.АктивныеСделки
|
||||
ОбрабатыватьНажатие: Истина
|
||||
ШиринаВКолонках: Двойная
|
||||
МинимальнаяВысота: 230
|
||||
РастягиватьПоГоризонтали: Ложь
|
||||
Картинка:
|
||||
Тип: Картинка
|
||||
Изображение: РазделПресейл.svg
|
||||
Цвет: =Цвета.Оранжевый
|
||||
ПриНажатии: КарточкаСделкиПриНажатии
|
||||
Команды:
|
||||
Тип: ОбычнаяКоманда
|
||||
Представление: $Пресейл::ЛокализованныеСтроки.СоздатьСделку
|
||||
Изображение: Плюс.svg
|
||||
Обработчик: СоздатьСделкуПриНажатии
|
||||
Содержимое:
|
||||
Тип: ФиксированнаяГруппа
|
||||
Ориентация: Горизонтальная
|
||||
Содержимое:
|
||||
-
|
||||
Тип: ФиксированнаяГруппа
|
||||
ИнтервалМеждуЭлементамиПоВертикали: Отсутствует
|
||||
РастягиватьПоГоризонтали: Истина
|
||||
Содержимое:
|
||||
-
|
||||
Тип: Надпись
|
||||
Важность: Низкая
|
||||
Значение: $Пресейл::ЛокализованныеСтроки.Сделок
|
||||
-
|
||||
Тип: Надпись
|
||||
Имя: НадписьКоличествоСделок
|
||||
МаксимальнаяВысотаВСтроках: 1
|
||||
Шрифт: =СтилевыеШрифты.ЗаголовокОбычный
|
||||
-
|
||||
Тип: ФиксированнаяГруппа
|
||||
ИнтервалМеждуЭлементамиПоВертикали: Отсутствует
|
||||
РастягиватьПоГоризонтали: Истина
|
||||
Содержимое:
|
||||
-
|
||||
Тип: Надпись
|
||||
Важность: Низкая
|
||||
Значение: $Пресейл::ЛокализованныеСтроки.Сумма
|
||||
-
|
||||
Тип: Надпись
|
||||
Имя: НадписьСуммаСделок
|
||||
МаксимальнаяВысотаВСтроках: 1
|
||||
Шрифт: =СтилевыеШрифты.ЗаголовокОбычный
|
||||
-
|
||||
Тип: СтандартнаяКарточка
|
||||
Заголовок: $Мероприятия::ЛокализованныеСтроки.МоиЗадачи
|
||||
ОбрабатыватьНажатие: Истина
|
||||
ШиринаВКолонках: Двойная
|
||||
МинимальнаяВысота: 230
|
||||
РастягиватьПоГоризонтали: Ложь
|
||||
Картинка:
|
||||
Тип: Картинка
|
||||
Изображение: Задачи.svg
|
||||
Цвет: =Цвета.Зеленый
|
||||
ПриНажатии: КарточкаЗадачиПриНажатии
|
||||
Команды:
|
||||
Тип: ОбычнаяКоманда
|
||||
Представление: $Мероприятия::ЛокализованныеСтроки.ДобавитьЗадачу
|
||||
Изображение: Плюс.svg
|
||||
Обработчик: ДобавитьЗадачуПриНажатии
|
||||
Содержимое:
|
||||
Тип: ФиксированнаяГруппа
|
||||
ИнтервалМеждуЭлементамиПоВертикали: Отсутствует
|
||||
Содержимое:
|
||||
-
|
||||
Тип: ФиксированнаяГруппа
|
||||
ВыравниваниеСодержимогоПоВертикали: Центр
|
||||
Ориентация: Горизонтальная
|
||||
Содержимое:
|
||||
-
|
||||
Тип: Надпись
|
||||
Имя: НадписьЗадачВПроцессе
|
||||
Значение:
|
||||
Тип: Строка
|
||||
Значение: 0
|
||||
РазрешитьСжатие: Ложь
|
||||
Шрифт: =СтилевыеШрифты.ЗаголовокКрупный
|
||||
-
|
||||
Тип: Надпись
|
||||
Значение: =Мероприятия::ЛокализованныеСтроки.ВПроцессе().ВНижнийРегистр()
|
||||
Шрифт: =СтилевыеШрифты.Крупный
|
||||
-
|
||||
Тип: ФиксированнаяГруппа
|
||||
ВыравниваниеСодержимогоПоВертикали: Центр
|
||||
Ориентация: Горизонтальная
|
||||
Содержимое:
|
||||
-
|
||||
Тип: Надпись
|
||||
Имя: НадписьЗадачЗапланировано
|
||||
Значение:
|
||||
Тип: Строка
|
||||
Значение: 0
|
||||
РазрешитьСжатие: Ложь
|
||||
Шрифт: =СтилевыеШрифты.ЗаголовокКрупный
|
||||
-
|
||||
Тип: Надпись
|
||||
Значение: =Мероприятия::ЛокализованныеСтроки.Запланировано().ВНижнийРегистр()
|
||||
Шрифт: =СтилевыеШрифты.Крупный
|
||||
-
|
||||
Тип: СтандартнаяКарточка
|
||||
Имя: КарточкаКурсыВалют
|
||||
Заголовок: $Общие::ЛокализованныеСтроки.КурсыВалют
|
||||
ШиринаВКолонках: Двойная
|
||||
МинимальнаяВысота: 230
|
||||
РастягиватьПоГоризонтали: Ложь
|
||||
Картинка:
|
||||
Тип: Картинка
|
||||
Изображение: Валюты.svg
|
||||
Цвет: =Цвета.Голубой
|
||||
Команды:
|
||||
Тип: ОбычнаяКоманда
|
||||
Представление: $Общие::ЛокализованныеСтроки.ЗагрузитьКурсыВалют
|
||||
Обработчик: ЗагрузитьКурсыВалютПриНажатии
|
||||
Содержимое:
|
||||
Тип: Таблица<ИсточникДанныхМассив<КурсВалюты>>
|
||||
Имя: ТаблицаВалют
|
||||
ТолькоЧтение: Истина
|
||||
ОтображатьШапку: Ложь
|
||||
ИспользованиеПоиска: Ложь
|
||||
Колонки:
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<КурсВалюты>
|
||||
ПолеЗначения: Код
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<КурсВалюты>
|
||||
ПолеЗначения: Валюта
|
||||
ОбрабатыватьНажатие: Ложь
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<КурсВалюты>
|
||||
ПолеЗначения: Курс
|
||||
-
|
||||
Тип: СтандартнаяКарточка
|
||||
Заголовок: $Пресейл::ЛокализованныеСтроки.ВоронкаПродаж
|
||||
ШиринаВКолонках: Двойная
|
||||
РастягиватьПоГоризонтали: Ложь
|
||||
Содержимое:
|
||||
Тип: ФиксированнаяГруппа
|
||||
ОтступПоГоризонтали: Двойной
|
||||
РастягиватьПоГоризонтали: Истина
|
||||
Содержимое:
|
||||
-
|
||||
Тип: ДиаграммаВоронкаПродаж
|
||||
Имя: ДиаграммаВоронкаПродаж
|
||||
-
|
||||
Тип: СтандартнаяКарточка
|
||||
Заголовок: $Пресейл::ЛокализованныеСтроки.ПродажиПоНаправлениям
|
||||
ШиринаВКолонках: Двойная
|
||||
РастягиватьПоГоризонтали: Ложь
|
||||
Содержимое:
|
||||
Тип: ФиксированнаяГруппа
|
||||
РастягиватьПоГоризонтали: Истина
|
||||
Содержимое:
|
||||
-
|
||||
Тип: ДиаграммаПродажиПоНаправлениям
|
||||
Имя: ДиаграммаПродажиПоНаправлениям
|
23
Koncept/Testovoe/Основное/ДанныеПользователя.yaml
Normal file
@ -0,0 +1,23 @@
|
||||
ВидЭлемента: Структура
|
||||
Ид: a76d2f8f-40c3-4f1a-8921-8f39d5ec704e
|
||||
Имя: ДанныеПользователя
|
||||
ОбластьВидимости: ВПроекте
|
||||
Импорт:
|
||||
- Общие
|
||||
Окружение: КлиентИСервер
|
||||
Поля:
|
||||
-
|
||||
Имя: Пользователь
|
||||
Тип: Пользователи.Ссылка?
|
||||
-
|
||||
Имя: Сотрудник
|
||||
Тип: Сотрудники.Ссылка?
|
||||
-
|
||||
Имя: Регион
|
||||
Тип: Регионы.Ссылка?
|
||||
-
|
||||
Имя: Роль
|
||||
Тип: РольСотрудника?
|
||||
-
|
||||
Имя: ЭтоАдминистраторПриложения
|
||||
Тип: Булево
|
24
Koncept/Testovoe/Основное/ДемонстрационноеПриложение.xbsl
Normal file
@ -0,0 +1,24 @@
|
||||
импорт Общие
|
||||
|
||||
@Обработчик
|
||||
метод ПослеСоздания()
|
||||
знч ДанныеПользователя = ПользователиКлиентИСервер.ПолучитьДанныеТекущегоПользователя()
|
||||
если не ДанныеПользователя.ЭтоАдминистраторПриложения и ДанныеПользователя.Сотрудник == Неопределено
|
||||
ЗаполнитьДемоДанныеДляНовогоПользователя(ДанныеПользователя.Пользователь)
|
||||
;
|
||||
;
|
||||
|
||||
метод ПоискПриНажатии(Команда: ОбычнаяКоманда)
|
||||
знч РезультатыПоиска = ОкноПолнотекстовогоПоиска.ОткрытьВоВсплывающемОкне()
|
||||
|
||||
если РезультатыПоиска != Неопределено
|
||||
РезультатыПолнотекстовогоПоиска.ОткрытьВМодальномОкне(РезультатыПоиска = РезультатыПоиска)
|
||||
;
|
||||
;
|
||||
|
||||
@НаСервере @ДоступноСКлиента
|
||||
статический метод ЗаполнитьДемоДанныеДляНовогоПользователя(Пользователь: Пользователи.Ссылка)
|
||||
ЗапланированныеЗадания.Создать(&ЗаполнениеДемоДанными.ЗаполнитьДляНовогоПользователя, Пользователь)
|
||||
.Настроить(Ключ = ЗаполнениеДемоДанными.КлючЗаданияЗаполненияДанными(Пользователь))
|
||||
.Запланировать()
|
||||
;
|
22
Koncept/Testovoe/Основное/ДемонстрационноеПриложение.yaml
Normal file
@ -0,0 +1,22 @@
|
||||
ВидЭлемента: КомпонентИнтерфейса
|
||||
Ид: 76eb6f8f-e340-42ed-8dad-7a1104a6da02
|
||||
Имя: ДемонстрационноеПриложение
|
||||
ОбластьВидимости: ВПодсистеме
|
||||
Наследует:
|
||||
Тип: СтандартноеКлиентскоеПриложениеСРазделами
|
||||
Заголовок: DEMO CRM
|
||||
ВидПоследнегоУровняНавигации: ВПанелиНавигации
|
||||
ТемаОформления:
|
||||
Логотип: Логотип.svg
|
||||
ЗаголовокСтраницыВхода: $ЛокализованныеСтроки.ЗаголовокСтраницыВхода
|
||||
ПриветственныйТекстСтраницыВхода: $ЛокализованныеСтроки.ПриветственныйТекстСтраницыВхода
|
||||
КомандныйИнтерфейсПанелиНавигации: =ПанельНавигации
|
||||
ДополнительныйКомандныйИнтерфейс: =КомандаЗавершитьРаботу
|
||||
КомандныйИнтерфейсПанелиДействий:
|
||||
Тип: ФрагментКомандногоИнтерфейса<Команда>
|
||||
Элементы:
|
||||
-
|
||||
Тип: ОбычнаяКоманда
|
||||
Изображение: Лупа.svg
|
||||
Представление: $Общие::ЛокализованныеСтроки.Поиск
|
||||
Обработчик: ПоискПриНажатии
|
518
Koncept/Testovoe/Основное/ЗаполнениеДемоДанными.xbsl
Normal file
@ -0,0 +1,518 @@
|
||||
импорт Пресейл
|
||||
импорт Мероприятия
|
||||
импорт Общие
|
||||
импорт Общие::КурсыВалют
|
||||
|
||||
конст ИМЯ_СТАДИИ_ЗАКЛЮЧЕН_ДОГОВОР = "Заключен договор"
|
||||
конст ИМЯ_СТАДИИ_ОТКАЗАНО = "Отказано"
|
||||
|
||||
@ВПроекте
|
||||
метод КлючЗаданияЗаполненияДанными(Пользователь: Пользователи.Ссылка): Строка
|
||||
возврат "ГенерацияДанных_%{Пользователь.Ид}"
|
||||
;
|
||||
|
||||
@ВПроекте
|
||||
метод Заполнить()
|
||||
исп новый ОперацияЗаполненияДемоДанными().ЗаписатьНачало()
|
||||
|
||||
исп Транзакция = Транзакции.Начать()
|
||||
|
||||
Валюты.СоздатьБазовуюВалюту()
|
||||
|
||||
знч Регионы = СоздатьРегионы()
|
||||
знч Направления = СоздатьНаправления()
|
||||
знч Услуги = СоздатьУслуги(Направления)
|
||||
знч Стадии = СоздатьСтадииСделок()
|
||||
знч Сотрудники = СоздатьСотрудников(Регионы, Ложь)
|
||||
знч Клиенты = СоздатьКлиентов(Регионы, Направления, Сотрудники)
|
||||
знч КонтактныеЛица = СоздатьКонтактныхЛиц(Клиенты, Сотрудники)
|
||||
знч Сделки = СоздатьСделки(Сотрудники, Направления, Клиенты, КонтактныеЛица, Стадии, Услуги)
|
||||
СоздатьЗадачи(Сделки)
|
||||
СоздатьСобытия(Сделки)
|
||||
СоздатьВалюты()
|
||||
|
||||
Транзакция.Фиксировать()
|
||||
|
||||
ПолнотекстовыйПоиск.ПерестроитьИндекс()
|
||||
;
|
||||
|
||||
@ВПроекте
|
||||
метод ЗаполнитьДляНовогоПользователя(Пользователь: Пользователи.Ссылка)
|
||||
исп новый ОперацияЗаполненияДемоДаннымиДляПользователя(Пользователь = Пользователь.Представление()).ЗаписатьНачало()
|
||||
|
||||
исп КонтекстДоступа.Привилегированный()
|
||||
|
||||
знч Регионы = СоздатьРегионы()
|
||||
знч Направления = Направления.ПолучитьНаправления()
|
||||
знч СтадииСделок = СтадииСделок.ПолучитьСтадииСделок()
|
||||
знч Услуги = Услуги.ПолучитьУслуги()
|
||||
|
||||
знч Сотрудник = новый Сотрудники.Объект(
|
||||
Наименование = Пользователь.Представление(),
|
||||
Пользователь = Пользователь,
|
||||
Регион = Регионы[0],
|
||||
Роль = РольСотрудника.Менеджер
|
||||
)
|
||||
|
||||
Сотрудник.Записать()
|
||||
|
||||
знч Сотрудники = СоздатьСотрудников(Регионы, Ложь)
|
||||
Сотрудники.Вставить(0, Сотрудник.Ссылка)
|
||||
|
||||
знч Клиенты = СоздатьКлиентов(Регионы, Направления, Сотрудники)
|
||||
знч КонтактныеЛица = СоздатьКонтактныхЛиц(Клиенты, Сотрудники)
|
||||
знч Сделки = СоздатьСделки(Сотрудники, Направления, Клиенты, КонтактныеЛица, СтадииСделок, Услуги)
|
||||
СоздатьЗадачи(Сделки)
|
||||
СоздатьСобытия(Сделки)
|
||||
;
|
||||
|
||||
метод СоздатьРегионы(): ЧитаемыйМассив<Регионы.Ссылка>
|
||||
знч Регионы = <Регионы.Ссылка>[]
|
||||
|
||||
знч Регион = новый Регионы.Объект(Наименование = "Россия")
|
||||
Регион.Записать()
|
||||
|
||||
Регионы.Добавить(Регион.Ссылка)
|
||||
|
||||
возврат Регионы
|
||||
;
|
||||
|
||||
метод СоздатьНаправления(): ЧитаемыйМассив<Направления.Ссылка>
|
||||
знч Направления = <Направления.Ссылка>[]
|
||||
|
||||
пер Направление = новый Направления.Объект(Наименование = "Разработка и продвижение сайтов")
|
||||
Направление.Записать()
|
||||
Направления.Добавить(Направление.Ссылка)
|
||||
|
||||
Направление = новый Направления.Объект(Наименование = "Разработка мобильных приложений")
|
||||
Направление.Записать()
|
||||
Направления.Добавить(Направление.Ссылка)
|
||||
|
||||
возврат Направления
|
||||
;
|
||||
|
||||
метод СоздатьУслуги(Направления: ЧитаемыйМассив<Направления.Ссылка>): ЧитаемыйМассив<Услуги.Ссылка>
|
||||
знч Услуги = <Услуги.Ссылка>[]
|
||||
|
||||
// 0
|
||||
пер Услуга = новый Услуги.Объект(Наименование = "Лендинг для рекламной кампании", Владелец = Направления[0])
|
||||
Услуга.Записать()
|
||||
Услуги.Добавить(Услуга.Ссылка)
|
||||
|
||||
// 1
|
||||
Услуга = новый Услуги.Объект(Наименование = "Разработка корпоративного сайта", Владелец = Направления[0])
|
||||
Услуга.Записать()
|
||||
Услуги.Добавить(Услуга.Ссылка)
|
||||
|
||||
// 2
|
||||
Услуга = новый Услуги.Объект(Наименование = "Разработка дизайна сайта", Владелец = Направления[0])
|
||||
Услуга.Записать()
|
||||
Услуги.Добавить(Услуга.Ссылка)
|
||||
|
||||
// 3
|
||||
Услуга = новый Услуги.Объект(Наименование = "Сайт для фотовыставки", Владелец = Направления[0])
|
||||
Услуга.Записать()
|
||||
Услуги.Добавить(Услуга.Ссылка)
|
||||
|
||||
// 4
|
||||
Услуга = новый Услуги.Объект(Наименование = "Приложение для сотрудников", Владелец = Направления[1])
|
||||
Услуга.Записать()
|
||||
Услуги.Добавить(Услуга.Ссылка)
|
||||
|
||||
// 5
|
||||
Услуга = новый Услуги.Объект(Наименование = "Разработка интернет-магазина", Владелец = Направления[0])
|
||||
Услуга.Записать()
|
||||
Услуги.Добавить(Услуга.Ссылка)
|
||||
|
||||
// 6
|
||||
Услуга = новый Услуги.Объект(Наименование = "Приложение для клиентов", Владелец = Направления[1])
|
||||
Услуга.Записать()
|
||||
Услуги.Добавить(Услуга.Ссылка)
|
||||
|
||||
// 7
|
||||
Услуга = новый Услуги.Объект(Наименование = "Продвижение интернет-магазина", Владелец = Направления[0])
|
||||
Услуга.Записать()
|
||||
Услуги.Добавить(Услуга.Ссылка)
|
||||
|
||||
// 8
|
||||
Услуга = новый Услуги.Объект(Наименование = "Редизайн сайта", Владелец = Направления[0])
|
||||
Услуга.Записать()
|
||||
Услуги.Добавить(Услуга.Ссылка)
|
||||
|
||||
// 9
|
||||
Услуга = новый Услуги.Объект(Наименование = "Приложение доставки", Владелец = Направления[1])
|
||||
Услуга.Записать()
|
||||
Услуги.Добавить(Услуга.Ссылка)
|
||||
|
||||
возврат Услуги
|
||||
;
|
||||
|
||||
метод СоздатьСтадииСделок(): ЧитаемыйМассив<СтадииСделок.Ссылка>
|
||||
знч Стадии = <СтадииСделок.Ссылка>[]
|
||||
|
||||
пер Стадия = новый СтадииСделок.Объект(
|
||||
Наименование = "Первичный контакт",
|
||||
Вид = ВидСтадииСделки.Активна,
|
||||
Порядок = 10,
|
||||
Иконка = Ресурс{РесурсыДемо/СтадияПервичныйКонтакт.png}.Ссылка,
|
||||
ИмяФайлаИконки = "СтадияПервичныйКонтакт.png"
|
||||
)
|
||||
|
||||
Стадия.Записать()
|
||||
Стадии.Добавить(Стадия.Ссылка)
|
||||
|
||||
Стадия = новый СтадииСделок.Объект(
|
||||
Наименование = "Сделано предложение",
|
||||
Вид = ВидСтадииСделки.Активна,
|
||||
Порядок = 20,
|
||||
Иконка = Ресурс{РесурсыДемо/СтадияСделаноПредложение.png}.Ссылка,
|
||||
ИмяФайлаИконки = "СтадияСделаноПредложение.png"
|
||||
)
|
||||
|
||||
Стадия.Записать()
|
||||
Стадии.Добавить(Стадия.Ссылка)
|
||||
|
||||
Стадия = новый СтадииСделок.Объект(
|
||||
Наименование = "Переговоры",
|
||||
Вид = ВидСтадииСделки.Активна,
|
||||
Порядок = 30,
|
||||
Иконка = Ресурс{РесурсыДемо/СтадияПереговоры.png}.Ссылка,
|
||||
ИмяФайлаИконки = "СтадияПереговоры.png"
|
||||
)
|
||||
|
||||
Стадия.Записать()
|
||||
Стадии.Добавить(Стадия.Ссылка)
|
||||
|
||||
Стадия = новый СтадииСделок.Объект(
|
||||
Наименование = ИМЯ_СТАДИИ_ЗАКЛЮЧЕН_ДОГОВОР,
|
||||
Вид = ВидСтадииСделки.ЗакрытаВыиграна,
|
||||
Порядок = 40,
|
||||
Иконка = Ресурс{РесурсыДемо/СтадияЗаключенДоговор.png}.Ссылка,
|
||||
ИмяФайлаИконки = "СтадияЗаключенДоговор.png"
|
||||
)
|
||||
|
||||
Стадия.Записать()
|
||||
Стадии.Добавить(Стадия.Ссылка)
|
||||
|
||||
Стадия = новый СтадииСделок.Объект(
|
||||
Наименование = ИМЯ_СТАДИИ_ОТКАЗАНО,
|
||||
Вид = ВидСтадииСделки.ЗакрытаПроиграна,
|
||||
Порядок = 50,
|
||||
Иконка = Ресурс{РесурсыДемо/СтадияОтказано.png}.Ссылка,
|
||||
ИмяФайлаИконки = "СтадияОтказано.png"
|
||||
)
|
||||
|
||||
Стадия.Записать()
|
||||
Стадии.Добавить(Стадия.Ссылка)
|
||||
|
||||
возврат Стадии
|
||||
;
|
||||
|
||||
метод СоздатьВалюты()
|
||||
пер Валюта = новый Валюты.Объект(Код = "USD", Наименование = "Доллар")
|
||||
Валюта.Записать()
|
||||
|
||||
Валюта = новый Валюты.Объект(Код = "EUR", Наименование = "Евро")
|
||||
Валюта.Записать()
|
||||
;
|
||||
|
||||
метод СоздатьСотрудников(Регионы: ЧитаемыйМассив<Регионы.Ссылка>, СоздатьПользователей: Булево): Массив<Сотрудники.Ссылка>
|
||||
знч Сотрудники = <Сотрудники.Ссылка>[]
|
||||
|
||||
пер Сотрудник = новый Сотрудники.Объект(
|
||||
Наименование = "Яковлев С.Л.",
|
||||
Регион = Регионы[0],
|
||||
Роль = РольСотрудника.Менеджер
|
||||
)
|
||||
|
||||
если СоздатьПользователей
|
||||
Сотрудник.Пользователь = ПользователиКлиентИСервер.СоздатьПользователя("yakovlev", "yakovlev")
|
||||
;
|
||||
|
||||
Сотрудник.Записать()
|
||||
Сотрудники.Добавить(Сотрудник.Ссылка)
|
||||
|
||||
Сотрудник = новый Сотрудники.Объект(
|
||||
Наименование = "Смирнов В.Т.",
|
||||
Регион = Регионы[0],
|
||||
Роль = РольСотрудника.Менеджер
|
||||
)
|
||||
|
||||
если СоздатьПользователей
|
||||
Сотрудник.Пользователь = ПользователиКлиентИСервер.СоздатьПользователя("smirnov", "smirnov")
|
||||
;
|
||||
|
||||
Сотрудник.Записать()
|
||||
Сотрудники.Добавить(Сотрудник.Ссылка)
|
||||
|
||||
возврат Сотрудники
|
||||
;
|
||||
|
||||
метод СоздатьКлиентов(Регионы: ЧитаемыйМассив<Регионы.Ссылка>, Направления: ЧитаемыйМассив<Направления.Ссылка>, Сотрудники: ЧитаемыйМассив<Сотрудники.Ссылка>): ЧитаемыйМассив<Клиенты.Ссылка>
|
||||
знч Клиенты = <Клиенты.Ссылка>[]
|
||||
Клиенты.Добавить(СоздатьКлиента("Мастерская \"Планета-3\"", Регионы[0], "620143, г. Екатеринбург, ул. Победы, д. 108", Сотрудники[0], Направления))
|
||||
Клиенты.Добавить(СоздатьКлиента("Художественный музей", Регионы[0], "150040, г. Ярославль, ул. Некрасова, д. 94", Сотрудники[1], Направления))
|
||||
Клиенты.Добавить(СоздатьКлиента("Предприятие \"Ротор-К\"", Регионы[0], "119501, г. Красногорск, ул. Речная, д. 83", Сотрудники[1], Направления))
|
||||
Клиенты.Добавить(СоздатьКлиента("Ресторан \"Ибис\"", Регионы[0], "420099, г. Казань, ул. Чехова, д. 86", Сотрудники[0], Направления))
|
||||
Клиенты.Добавить(СоздатьКлиента("Агентство \"Город\"", Регионы[0], "194044, г. Санкт-Петербург, Лесной пр., д. 117", Сотрудники[1], Направления))
|
||||
Клиенты.Добавить(СоздатьКлиента("Магазин \"Луч 24\"", Регионы[0], "105187, г. Москва, ул. Ткацкая, д. 137", Сотрудники[0], Направления))
|
||||
|
||||
возврат Клиенты
|
||||
;
|
||||
|
||||
метод СоздатьКлиента(Наименование: Строка, Регион: Регионы.Ссылка, Адрес: Строка, Ответственный: Сотрудники.Ссылка, Направления: ЧитаемыйМассив<Направления.Ссылка>): Клиенты.Ссылка
|
||||
знч Клиент = новый Клиенты.Объект(
|
||||
Наименование = Наименование,
|
||||
Адрес = Адрес,
|
||||
Ответственный = Ответственный,
|
||||
Регион = Регион
|
||||
)
|
||||
|
||||
Клиент.Записать()
|
||||
|
||||
возврат Клиент.Ссылка
|
||||
;
|
||||
|
||||
метод СоздатьКонтактныхЛиц(Клиенты: ЧитаемыйМассив<Клиенты.Ссылка>, Сотрудники: ЧитаемыйМассив<Сотрудники.Ссылка>): ЧитаемыйМассив<КонтактныеЛица.Ссылка>
|
||||
знч КонтактныеЛица = <КонтактныеЛица.Ссылка>[]
|
||||
КонтактныеЛица.Добавить(СоздатьКонтактноеЛицо(Клиенты[0], "Новиков Пётр Матвеевич", "Директор", "", "novikov@clplnt.ru", Сотрудники[0]))
|
||||
КонтактныеЛица.Добавить(СоздатьКонтактноеЛицо(Клиенты[1], "Гусев Максим Константинович", "Руководитель проекта", "+7 (999) 480-23-82", "", Сотрудники[1]))
|
||||
КонтактныеЛица.Добавить(СоздатьКонтактноеЛицо(Клиенты[2], "Казакова Людмила Федоровна", "Руководитель отдела продаж", "", "kazakova@rtrmsk.ru", Сотрудники[1]))
|
||||
КонтактныеЛица.Добавить(СоздатьКонтактноеЛицо(Клиенты[3], "Орлова Ольга Николаевна", "Менеджер по маркетингу", "+7 (999) 372-94-13", "orlova@ibisrst.ru", Сотрудники[0]))
|
||||
КонтактныеЛица.Добавить(СоздатьКонтактноеЛицо(Клиенты[4], "Соколов Николай Сергеевич", "Руководитель департамента", "+7 (999) 232-76-22", "sokolov@grdspb.ru", Сотрудники[1]))
|
||||
КонтактныеЛица.Добавить(СоздатьКонтактноеЛицо(Клиенты[5], "Фролов Дмитрий Андреевич", "Директор", "+7 (999) 834-73-46", "", Сотрудники[0]))
|
||||
|
||||
возврат КонтактныеЛица
|
||||
;
|
||||
|
||||
метод СоздатьКонтактноеЛицо(Клиент: Клиенты.Ссылка, Наименование: Строка, Должность: Строка, Телефон: Строка,
|
||||
ЭлектроннаяПочта: Строка, Ответственный: Сотрудники.Ссылка): КонтактныеЛица.Ссылка
|
||||
|
||||
знч КонтактноеЛицо = новый КонтактныеЛица.Объект(
|
||||
Владелец = Клиент,
|
||||
Наименование = Наименование,
|
||||
Должность = Должность,
|
||||
Телефон = Телефон,
|
||||
ЭлектроннаяПочта = ЭлектроннаяПочта,
|
||||
Ответственный = Ответственный
|
||||
)
|
||||
|
||||
КонтактноеЛицо.Записать()
|
||||
возврат КонтактноеЛицо.Ссылка
|
||||
;
|
||||
|
||||
метод СоздатьСделки(Сотрудники: ЧитаемыйМассив<Сотрудники.Ссылка>,
|
||||
Направления: ЧитаемыйМассив<Направления.Ссылка>,
|
||||
Клиенты: ЧитаемыйМассив<Клиенты.Ссылка>,
|
||||
КонтактныеЛица: ЧитаемыйМассив<КонтактныеЛица.Ссылка>,
|
||||
Стадии: ЧитаемыйМассив<СтадииСделок.Ссылка>,
|
||||
Услуги: ЧитаемыйМассив<Услуги.Ссылка>): ЧитаемыйМассив<Сделки.Ссылка>
|
||||
|
||||
знч Сделки = <Сделки.Ссылка>[]
|
||||
|
||||
знч Валюта = Валюты.ПолучитьБазовуюВалюту()
|
||||
|
||||
знч ЧасовойПояс = ЧасовойПояс.Текущий()
|
||||
знч Сейчас = ДатаВремя.Сейчас()
|
||||
|
||||
знч Генератор = новый СлучайныйГенератор()
|
||||
знч СекундВСутках = 86400
|
||||
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[0], Сейчас.ДобавитьДни(-5).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(27).Дата, Направления[0], Клиенты[4], КонтактныеЛица[4], "Лендинг для рекламной кампании", Стадии[0], Валюта, 22000, [Услуги[0], Услуги[2]]))
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[1], Сейчас.ДобавитьДни(-6).ВМомент(ЧасовойПояс), Сейчас.ДобавитьДни(20).Дата, Направления[1], Клиенты[3],
|
||||
КонтактныеЛица[3], "Приложение доставки", Стадии[1], Валюта, 105000, [Услуги[9], Услуги[6]]))
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[0], Сейчас.ДобавитьДни(-5).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(20).Дата, Направления[0], Клиенты[5], КонтактныеЛица[5], "Разработка корпоративного сайта", Стадии[1], Валюта, 240000, [Услуги[1], Услуги[2]]))
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[0], Сейчас.ДобавитьДни(-7).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(14).Дата, Направления[0], Клиенты[1], КонтактныеЛица[1], "Разработка дизайна сайта", Стадии[0], Валюта, 138000, [Услуги[2], Услуги[8]]))
|
||||
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[0], Сейчас.ДобавитьДни(-6).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(40).Дата, Направления[0], Клиенты[1], КонтактныеЛица[1], "Сайт для фотовыставки", Стадии[2], Валюта, 64000, [Услуги[3], Услуги[8]]))
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[1], Сейчас.ДобавитьДни(-7).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(37).Дата, Направления[1], Клиенты[2], КонтактныеЛица[2], "Приложение для сотрудников", Стадии[0], Валюта, 78000, [Услуги[4], Услуги[6]]))
|
||||
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[0], Сейчас.ДобавитьДни(-5).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(28).Дата, Направления[0], Клиенты[5], КонтактныеЛица[5], "Разработка интернет-магазина", Стадии[1], Валюта, 131000, [Услуги[5], Услуги[7]]))
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[1], Сейчас.ДобавитьДни(-5).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(25).Дата, Направления[1], Клиенты[0], КонтактныеЛица[0], "Приложение для клиентов", Стадии[2], Валюта, 68000, [Услуги[6], Услуги[4]]))
|
||||
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[0], Сейчас.ДобавитьДни(-14).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(-9).Дата, Направления[0], Клиенты[5], КонтактныеЛица[5], "Продвижение интернет-магазина", Стадии[0], Валюта, 35000, [Услуги[7], Услуги[8]]))
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[0], Сейчас.ДобавитьДни(-5).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(35).Дата, Направления[0], Клиенты[4], КонтактныеЛица[4], "Редизайн сайта", Стадии[0], Валюта, 56000, [Услуги[8], Услуги[7]]))
|
||||
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[0], Сейчас.ДобавитьДни(-127).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(-96).Дата, Направления[0], Клиенты[4], КонтактныеЛица[4], "Лендинг для рекламной кампании", Стадии[3], Валюта, 22000, [Услуги[0], Услуги[8]]))
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[1], Сейчас.ДобавитьДни(-123).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(-103).Дата, Направления[1], Клиенты[3], КонтактныеЛица[3], "Приложение доставки", Стадии[3], Валюта, 105000, [Услуги[9], Услуги[6]]))
|
||||
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[0], Сейчас.ДобавитьДни(-96).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(-52).Дата, Направления[0], Клиенты[1], КонтактныеЛица[1], "Сайт для фотовыставки", Стадии[3], Валюта, 64000, [Услуги[3], Услуги[8]]))
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[1], Сейчас.ДобавитьДни(-95).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(-55).Дата, Направления[1], Клиенты[2], КонтактныеЛица[2], "Приложение для сотрудников", Стадии[3], Валюта, 78000, [Услуги[4], Услуги[6]]))
|
||||
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[0], Сейчас.ДобавитьДни(-66).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(-34).Дата, Направления[0], Клиенты[5], КонтактныеЛица[5], "Разработка интернет-магазина", Стадии[3], Валюта, 131000, [Услуги[5], Услуги[7]]))
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[1], Сейчас.ДобавитьДни(-65).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(-37).Дата, Направления[1], Клиенты[0], КонтактныеЛица[0], "Приложение для клиентов", Стадии[3], Валюта, 68000, [Услуги[6], Услуги[4]]))
|
||||
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[0], Сейчас.ДобавитьДни(-13).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(-1).Дата, Направления[0], Клиенты[5], КонтактныеЛица[5], "Продвижение интернет-магазина", Стадии[3], Валюта, 35000, [Услуги[7], Услуги[8]]))
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[1], Сейчас.ДобавитьДни(-13).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(-1).Дата, Направления[1], Клиенты[2], КонтактныеЛица[2], "Приложение для сотрудников", Стадии[3], Валюта, 89000, [Услуги[4], Услуги[6]]))
|
||||
Сделки.Добавить(СоздатьСделку(Сотрудники[0], Сейчас.ДобавитьДни(-14).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
Сейчас.ДобавитьДни(-1).Дата, Направления[0], Клиенты[4], КонтактныеЛица[4], "Редизайн сайта", Стадии[3], Валюта, 12000, [Услуги[8], Услуги[7]]))
|
||||
возврат Сделки
|
||||
;
|
||||
|
||||
метод СоздатьСделку(Ответственный: Сотрудники.Ссылка,
|
||||
ДатаСоздания: Момент,
|
||||
ДатаЗакрытия: Дата,
|
||||
Направление: Направления.Ссылка,
|
||||
Клиент: Клиенты.Ссылка,
|
||||
КонтактноеЛицо: КонтактныеЛица.Ссылка,
|
||||
Наименование: Строка,
|
||||
Стадия: СтадииСделок.Ссылка,
|
||||
ВалютаСделки: Валюты.Ссылка,
|
||||
Сумма: Число,
|
||||
Услуги: ЧитаемыйМассив<Услуги.Ссылка>): Сделки.Ссылка
|
||||
|
||||
знч Сделка = новый Сделки.Объект(
|
||||
Ответственный = Ответственный,
|
||||
ДатаСоздания = ДатаСоздания,
|
||||
ДатаЗакрытия = ДатаЗакрытия,
|
||||
Направление = Направление,
|
||||
Клиент = Клиент,
|
||||
КонтактноеЛицо = КонтактноеЛицо,
|
||||
Наименование = Наименование,
|
||||
Стадия = Стадия,
|
||||
ВалютаСделки = ВалютаСделки,
|
||||
СуммаВВалютеСделки = Сумма,
|
||||
СуммаВВалютеУчета = Сумма
|
||||
)
|
||||
|
||||
знч СтоимостьУслуги = Сумма / 2
|
||||
знч УслугиСделки = Услуги.Преобразовать(Услуга -> новый Сделки.Услуги(Услуга = Услуга, Количество = 1, Цена = СтоимостьУслуги, Сумма = СтоимостьУслуги))
|
||||
Сделка.Услуги.ДобавитьВсе(УслугиСделки)
|
||||
|
||||
Сделка.Записать()
|
||||
|
||||
возврат Сделка.Ссылка
|
||||
;
|
||||
|
||||
метод СоздатьЗадачи(Сделки: ЧитаемыйМассив<Сделки.Ссылка>): ЧитаемыйМассив<Задачи.Ссылка>
|
||||
знч Задачи = <Задачи.Ссылка>[]
|
||||
|
||||
знч ДанныеСделок = Пресейл::Сделки.ПолучитьДанныеСделок(Сделки)
|
||||
|
||||
знч ЧасовойПояс = ЧасовойПояс.Текущий()
|
||||
знч Генератор = новый СлучайныйГенератор()
|
||||
знч СекундВСутках = 86400
|
||||
|
||||
для ДанныеСделки из ДанныеСделок
|
||||
знч ДатаСделки = ДанныеСделки.ДатаСоздания.ВДатаВремя(ЧасовойПояс)
|
||||
|
||||
Задачи.Добавить(СоздатьЗадачу(ДанныеСделки.Ссылка,
|
||||
ДатаСделки.ДобавитьДни(1).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
ДанныеСделки.Ответственный, "Отправить предложение", "",
|
||||
ДатаСделки.ДобавитьДни(8).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
СтатусМероприятия.Завершено, ПриоритетЗадачи.Высокий))
|
||||
|
||||
Задачи.Добавить(СоздатьЗадачу(ДанныеСделки.Ссылка,
|
||||
ДатаСделки.ДобавитьДни(2).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
ДанныеСделки.Ответственный, "Договориться о встрече", "",
|
||||
ДатаСделки.ДобавитьДни(3).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
СтатусМероприятия.ВПроцессе, ПриоритетЗадачи.Высокий))
|
||||
|
||||
Задачи.Добавить(СоздатьЗадачу(ДанныеСделки.Ссылка,
|
||||
ДатаСделки.ДобавитьДни(2).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
ДанныеСделки.Ответственный, "Проинформировать о готовности", "",
|
||||
ДатаСделки.ДобавитьДни(9).ДобавитьСекунды(Генератор.СлучайноеЦелое(До = СекундВСутках)).ВМомент(ЧасовойПояс),
|
||||
СтатусМероприятия.Запланировано, ПриоритетЗадачи.Обычный))
|
||||
;
|
||||
|
||||
возврат Задачи
|
||||
;
|
||||
|
||||
метод СоздатьЗадачу(Сделка: Сделки.Ссылка,
|
||||
ДатаСоздания: Момент,
|
||||
Ответственный: Сотрудники.Ссылка,
|
||||
Наименование: Строка,
|
||||
Описание: Строка,
|
||||
ДатаЗавершения: Момент,
|
||||
Статус: СтатусМероприятия,
|
||||
Приоритет: ПриоритетЗадачи = ПриоритетЗадачи.Обычный): Задачи.Ссылка
|
||||
|
||||
знч Задача = новый Задачи.Объект(
|
||||
Владелец = Сделка,
|
||||
ДатаСоздания = ДатаСоздания,
|
||||
Ответственный = Ответственный,
|
||||
Наименование = Наименование,
|
||||
Описание = Описание,
|
||||
ДатаЗавершения = ДатаЗавершения,
|
||||
Статус = Статус,
|
||||
Приоритет = Приоритет
|
||||
)
|
||||
|
||||
Задача.Записать()
|
||||
|
||||
возврат Задача.Ссылка
|
||||
;
|
||||
|
||||
метод СоздатьСобытия(Сделки: ЧитаемыйМассив<Сделки.Ссылка>): ЧитаемыйМассив<События.Ссылка>
|
||||
знч События = <События.Ссылка>[]
|
||||
|
||||
знч ДанныеСделок = Пресейл::Сделки.ПолучитьДанныеСделок(Сделки)
|
||||
|
||||
знч ЧасовойПояс = ЧасовойПояс.Текущий()
|
||||
знч Генератор = новый СлучайныйГенератор()
|
||||
знч МинутВЧасе = 60
|
||||
|
||||
для ДанныеСделки из ДанныеСделок
|
||||
знч ДатаСделки = ДанныеСделки.ДатаСоздания.ВДатаВремя(ЧасовойПояс)
|
||||
|
||||
События.Добавить(СоздатьСобытие(ДанныеСделки.Ссылка,
|
||||
ДатаСделки.ДобавитьДни(2).ДобавитьМинуты(Генератор.СлучайноеЦелое(До = МинутВЧасе)).ВМомент(ЧасовойПояс),
|
||||
ДанныеСделки.Ответственный, "Звонок от клиента", "",
|
||||
ДатаСделки.ДобавитьДни(3).ВМомент(ЧасовойПояс),
|
||||
ДатаСделки.ДобавитьДни(3).ДобавитьМинуты(Генератор.СлучайноеЦелое(До = МинутВЧасе)).ВМомент(ЧасовойПояс)))
|
||||
|
||||
События.Добавить(СоздатьСобытие(ДанныеСделки.Ссылка,
|
||||
ДатаСделки.ДобавитьДни(2).ДобавитьМинуты(Генератор.СлучайноеЦелое(До = МинутВЧасе)).ВМомент(ЧасовойПояс),
|
||||
ДанныеСделки.Ответственный, "E-mail от клиента", "",
|
||||
ДатаСделки.ДобавитьДни(2).ДобавитьМинуты(Генератор.СлучайноеЦелое(До = МинутВЧасе)).ВМомент(ЧасовойПояс),
|
||||
Момент{}))
|
||||
|
||||
События.Добавить(СоздатьСобытие(ДанныеСделки.Ссылка,
|
||||
ДатаСделки.ДобавитьДни(2).ДобавитьМинуты(Генератор.СлучайноеЦелое(До = МинутВЧасе)).ВМомент(ЧасовойПояс),
|
||||
ДанныеСделки.Ответственный, "Звонок клиенту", "",
|
||||
ДатаСделки.ДобавитьДни(7).ВМомент(ЧасовойПояс),
|
||||
ДатаСделки.ДобавитьДни(7).ДобавитьМинуты(Генератор.СлучайноеЦелое(До = МинутВЧасе)).ВМомент(ЧасовойПояс)))
|
||||
;
|
||||
|
||||
возврат События
|
||||
;
|
||||
|
||||
метод СоздатьСобытие(Сделка: Сделки.Ссылка,
|
||||
ДатаСоздания: Момент,
|
||||
Ответственный: Сотрудники.Ссылка,
|
||||
Наименование: Строка,
|
||||
Описание: Строка,
|
||||
ДатаНачала: Момент,
|
||||
ДатаЗавершения: Момент): События.Ссылка
|
||||
|
||||
знч Событие = новый События.Объект(
|
||||
Владелец = Сделка,
|
||||
ДатаСоздания = ДатаСоздания,
|
||||
Ответственный = Ответственный,
|
||||
Наименование = Наименование,
|
||||
Описание = Описание,
|
||||
ДатаНачала = ДатаНачала,
|
||||
ДатаЗавершения = ДатаЗавершения
|
||||
)
|
||||
|
||||
Событие.Записать()
|
||||
|
||||
возврат Событие.Ссылка
|
||||
;
|
5
Koncept/Testovoe/Основное/ЗаполнениеДемоДанными.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
ВидЭлемента: ОбщийМодуль
|
||||
Ид: 8a9e7e88-e542-41b3-9146-d24aa45d5762
|
||||
ОбластьВидимости: ВПроекте
|
||||
Имя: ЗаполнениеДемоДанными
|
||||
Окружение: Сервер
|
40
Koncept/Testovoe/Основное/КлючДоступаМенеджера.xbsl
Normal file
@ -0,0 +1,40 @@
|
||||
импорт Общие
|
||||
|
||||
@Обработчик
|
||||
метод ПроверитьНаличиеКлючейДоступа(Ключи: ЧитаемыйМассив<КлючДоступаМенеджера.Объект>, Пользователи: ЧитаемыйМассив<Пользователи.Объект>): ЧитаемоеСоответствие<КлючДоступаМенеджера.Объект, ЧитаемаяКоллекция<Пользователи.Объект|Пользователи.Ссылка>>
|
||||
знч Регионы = Ключи.Преобразовать(Ключ -> Ключ.Владелец)
|
||||
|
||||
знч ПользователиСсылки = Пользователи.Преобразовать(Пользователь -> Пользователь.Ссылка)
|
||||
|
||||
знч Запрос = Запрос{
|
||||
ВЫБРАТЬ
|
||||
Пользователь,
|
||||
Регион
|
||||
ИЗ
|
||||
Сотрудники
|
||||
ГДЕ
|
||||
Регион В (%Регионы)
|
||||
И Пользователь В (%ПользователиСсылки)
|
||||
И Роль == РольСотрудника.Менеджер
|
||||
}
|
||||
|
||||
знч МенеджерыРегионов = <Регионы.Ссылка, Массив<Пользователи.Ссылка>>{:}
|
||||
|
||||
исп РезультатЗапроса = Запрос.Выполнить()
|
||||
|
||||
для СтрокаРезультата из РезультатЗапроса
|
||||
МенеджерыРегионов.ВставитьЕслиОтсутствует(СтрокаРезультата.Регион, <Пользователи.Ссылка>[])
|
||||
МенеджерыРегионов.Получить(СтрокаРезультата.Регион).Добавить(СтрокаРезультата.Пользователь)
|
||||
;
|
||||
|
||||
знч Результат = <КлючДоступаМенеджера.Объект, Массив<Пользователи.Ссылка>>{:}
|
||||
|
||||
для Ключ из Ключи
|
||||
знч МенеджерыРегиона = МенеджерыРегионов.ПолучитьИлиУмолчание(Ключ.Владелец)
|
||||
если МенеджерыРегиона != Неопределено
|
||||
Результат.Вставить(Ключ, МенеджерыРегиона)
|
||||
;
|
||||
;
|
||||
|
||||
возврат Результат
|
||||
;
|
10
Koncept/Testovoe/Основное/КлючДоступаМенеджера.yaml
Normal file
@ -0,0 +1,10 @@
|
||||
ВидЭлемента: КлючДоступа
|
||||
Ид: c84679a3-ec99-42d6-bf77-19d114eaf53e
|
||||
Имя: КлючДоступаМенеджера
|
||||
ОбластьВидимости: ВПроекте
|
||||
Импорт:
|
||||
- Общие
|
||||
Параметры:
|
||||
-
|
||||
Имя: Владелец
|
||||
Тип: Регионы.Ссылка?
|
26
Koncept/Testovoe/Основное/КлючДоступаРуководителя.xbsl
Normal file
@ -0,0 +1,26 @@
|
||||
@Обработчик
|
||||
метод ПроверитьНаличиеКлючейДоступа(Ключи: ЧитаемыйМассив<КлючДоступаРуководителя.Объект>, Пользователи: ЧитаемыйМассив<Пользователи.Объект>): ЧитаемоеСоответствие<КлючДоступаРуководителя.Объект, ЧитаемаяКоллекция<Пользователи.Объект|Пользователи.Ссылка>>
|
||||
знч ПользователиСсылки = Пользователи.Преобразовать(Пользователь -> Пользователь.Ссылка)
|
||||
|
||||
знч Запрос = Запрос{
|
||||
ВЫБРАТЬ
|
||||
Пользователь
|
||||
ИЗ
|
||||
Сотрудники
|
||||
ГДЕ
|
||||
Пользователь В (%ПользователиСсылки)
|
||||
И Роль == РольСотрудника.Руководитель
|
||||
}
|
||||
|
||||
исп РезультатЗапроса = Запрос.Выполнить()
|
||||
|
||||
знч Руководители = РезультатЗапроса.Преобразовать(СтрокаРезультата -> СтрокаРезультата.Пользователь!)
|
||||
|
||||
знч Результат = <КлючДоступаРуководителя.Объект, Массив<Пользователи.Ссылка>>{:}
|
||||
|
||||
для Ключ из Ключи
|
||||
Результат.Вставить(Ключ, Руководители)
|
||||
;
|
||||
|
||||
возврат Результат
|
||||
;
|
4
Koncept/Testovoe/Основное/КлючДоступаРуководителя.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
ВидЭлемента: КлючДоступа
|
||||
Ид: cd399756-435a-4b77-a1d9-d3d3de3ef01c
|
||||
Имя: КлючДоступаРуководителя
|
||||
ОбластьВидимости: ВПодсистеме
|
4
Koncept/Testovoe/Основное/КомандаЗавершитьРаботу.xbsl
Normal file
@ -0,0 +1,4 @@
|
||||
@Обработчик
|
||||
метод Обработчик()
|
||||
Аутентификация.ЗавершитьТекущийСеанс()
|
||||
;
|
6
Koncept/Testovoe/Основное/КомандаЗавершитьРаботу.yaml
Normal file
@ -0,0 +1,6 @@
|
||||
ВидЭлемента: ОбычнаяКоманда
|
||||
Ид: ca2b3d8c-837e-459b-8333-e964e448c716
|
||||
Имя: КомандаЗавершитьРаботу
|
||||
ОбластьВидимости: ВПодсистеме
|
||||
Представление: $ЛокализованныеСтроки.ЗавершитьРаботу
|
||||
Изображение: Выход.svg
|
@ -0,0 +1,26 @@
|
||||
Строки:
|
||||
ЗаголовокСтраницыВхода: Demo 1C:Enterprise.Element
|
||||
ПриветственныйТекстСтраницыВхода: If you don't have an account yet, click "Sign up"
|
||||
Главная: Home
|
||||
Настройки: Setup
|
||||
ЗавершитьРаботу: Exit
|
||||
Сотрудники: Employees
|
||||
Сотрудник: Employee
|
||||
Имя: Name
|
||||
Пользователь: User
|
||||
Роль: Role
|
||||
Сохранить: Save
|
||||
Создать: Create
|
||||
Удалить: Delete
|
||||
Добавить: Add
|
||||
Менеджер: Manager
|
||||
Руководитель: Supervisor
|
||||
Администратор: Administrator
|
||||
БотСистемыВзаимодействия: Collaboration system bot
|
||||
СоздатьНовогоПользователя: Create new user
|
||||
ЛогинНовогоПользователя: New user login
|
||||
ВведитеЛогинНовогоПользователя: Enter new user login
|
||||
Сервис: Service
|
||||
КонсольЗапросов: Query console
|
||||
Путеводитель: Guide
|
||||
ПутеводительПоДемо: Demo guide
|
30
Koncept/Testovoe/Основное/ЛокализованныеСтроки.yaml
Normal file
@ -0,0 +1,30 @@
|
||||
ВидЭлемента: ЛокализованныеСтроки
|
||||
Ид: dd236276-3de6-4b0e-b5e9-d9469c55d820
|
||||
Имя: ЛокализованныеСтроки
|
||||
ОбластьВидимости: ВПодсистеме
|
||||
Строки:
|
||||
ЗаголовокСтраницыВхода: Демо 1С:Предприятие.Элемент
|
||||
ПриветственныйТекстСтраницыВхода: Если у Вас ещё нет учетной записи, нажмите "Зарегистрироваться"
|
||||
Главная: Главная
|
||||
Настройки: Настройки
|
||||
ЗавершитьРаботу: Завершить работу
|
||||
Сотрудники: Сотрудники
|
||||
Сотрудник: Сотрудник
|
||||
Имя: Имя
|
||||
Пользователь: Пользователь
|
||||
Роль: Роль
|
||||
Сохранить: Сохранить
|
||||
Создать: Создать
|
||||
Удалить: Удалить
|
||||
Добавить: Добавить
|
||||
Менеджер: Менеджер
|
||||
Руководитель: Руководитель
|
||||
Администратор: Администратор
|
||||
БотСистемыВзаимодействия: Бот системы взаимодействия
|
||||
СоздатьНовогоПользователя: Создать нового пользователя
|
||||
ЛогинНовогоПользователя: Логин нового пользователя
|
||||
ВведитеЛогинНовогоПользователя: Введите логин нового пользователя
|
||||
Сервис: Сервис
|
||||
КонсольЗапросов: Консоль запросов
|
||||
Путеводитель: Путеводитель
|
||||
ПутеводительПоДемо: Путеводитель по демо
|
10
Koncept/Testovoe/Основное/ОперацияЗаполненияДемоДанными.yaml
Normal file
@ -0,0 +1,10 @@
|
||||
ВидЭлемента: СобытиеЖурналаСобытий
|
||||
Ид: 1236e63d-e14e-4f6f-8222-e5351232e824
|
||||
Имя: ОперацияЗаполненияДемоДанными
|
||||
ОбластьВидимости: ВПодсистеме
|
||||
Описание: Операция заполнения демо данными
|
||||
Важность: Высокая
|
||||
ВидСобытия: Операция
|
||||
ШаблонПредставленияНачала: Начало заполнения демо данными
|
||||
ШаблонПредставленияКонца: Завершение заполнения демо данными
|
||||
ШаблонПредставленияОшибки: Не удалось выполнить заполнения демо данными
|
@ -0,0 +1,17 @@
|
||||
ВидЭлемента: СобытиеЖурналаСобытий
|
||||
ОбластьВидимости: ВПодсистеме
|
||||
Ид: 4fb288f1-45cc-4929-b09e-0ad0fbb10d14
|
||||
Имя: ОперацияЗаполненияДемоДаннымиДляПользователя
|
||||
Описание: Операция заполнения демо данными для пользователя
|
||||
Важность: Высокая
|
||||
ВидСобытия: Операция
|
||||
ШаблонПредставленияНачала: Начало заполнения демо данными для пользователя %{Пользователь}
|
||||
ШаблонПредставленияКонца: Завершение заполнения демо данными для пользователя %{Пользователь}
|
||||
ШаблонПредставленияОшибки: Не удалось выполнить заполнение демо данными для пользователя %{Пользователь}
|
||||
Свойства:
|
||||
-
|
||||
Ид: 38268dab-c6ab-42ad-acf2-b64200447846
|
||||
Имя: Пользователь
|
||||
Описание: Пользователь, для которого выполняется заполнение данными
|
||||
Тип: Строка
|
||||
Обязательно: Истина
|
67
Koncept/Testovoe/Основное/ПанельНавигации.yaml
Normal file
@ -0,0 +1,67 @@
|
||||
ВидЭлемента: ФрагментКомандногоИнтерфейса
|
||||
Ид: 9804578c-5b06-4c6b-a698-15232bd8841e
|
||||
Имя: ПанельНавигации
|
||||
ОбластьВидимости: ВПодсистеме
|
||||
Импорт:
|
||||
- Пресейл
|
||||
- Мероприятия
|
||||
- Общие
|
||||
- Общие::КурсыВалют
|
||||
Элементы:
|
||||
-
|
||||
Тип: НавигационнаяКоманда
|
||||
Представление: $ЛокализованныеСтроки.Главная
|
||||
Изображение: РазделГлавнаяСтраница.svg
|
||||
ТипФормы: ГлавнаяСтраница
|
||||
-
|
||||
Тип: ГруппаКомандногоИнтерфейса<Команда>
|
||||
Представление: $Пресейл::ЛокализованныеСтроки.Пресейл
|
||||
Изображение: РазделПресейл.svg
|
||||
Элементы:
|
||||
-
|
||||
Тип: НавигационнаяКоманда
|
||||
Представление: $Пресейл::ЛокализованныеСтроки.Сделки
|
||||
ТипФормы: СделкиФормаСписка
|
||||
-
|
||||
Тип: НавигационнаяКоманда
|
||||
Представление: $Пресейл::ЛокализованныеСтроки.ОтчетОПродажах
|
||||
ТипФормы: ОтчетОПродажахФорма
|
||||
- =Клиенты.ОткрытьСписок
|
||||
- =КонтактныеЛица.ОткрытьСписок
|
||||
- =Услуги.ОткрытьСписок
|
||||
-
|
||||
Тип: ГруппаКомандногоИнтерфейса<Команда>
|
||||
Представление: $Мероприятия::ЛокализованныеСтроки.Мероприятия
|
||||
Изображение: РазделМероприятия.svg
|
||||
Элементы:
|
||||
-
|
||||
Тип: НавигационнаяКоманда
|
||||
Представление: $Мероприятия::ЛокализованныеСтроки.Задачи
|
||||
ТипФормы: ЗадачиФормаСписка
|
||||
- =События.ОткрытьСписок
|
||||
-
|
||||
Тип: ГруппаКомандногоИнтерфейса<Команда>
|
||||
Представление: $ЛокализованныеСтроки.Настройки
|
||||
Изображение: РазделНастройки.svg
|
||||
Элементы:
|
||||
- =Направления.ОткрытьСписок
|
||||
- =Сотрудники.ОткрытьСписок
|
||||
- =Регионы.ОткрытьСписок
|
||||
- =СтадииСделок.ОткрытьСписок
|
||||
- =Валюты.ОткрытьСписок
|
||||
- =КурсыВалют.ОткрытьСписок
|
||||
-
|
||||
Тип: ГруппаКомандногоИнтерфейса<Команда>
|
||||
Представление: $ЛокализованныеСтроки.Сервис
|
||||
Изображение: РазделСервис.svg
|
||||
Видимость: =ПользователиКлиентИСервер.ЭтоАдминистраторПриложения()
|
||||
Элементы:
|
||||
-
|
||||
Тип: НавигационнаяКоманда
|
||||
Представление: $ЛокализованныеСтроки.КонсольЗапросов
|
||||
ТипФормы: QueryConsoleForm
|
||||
-
|
||||
Тип: НавигационнаяКоманда
|
||||
Представление: $ЛокализованныеСтроки.Путеводитель
|
||||
Изображение: РазделПутеводитель.svg
|
||||
ТипФормы: ПутеводительПоПроекту
|
5
Koncept/Testovoe/Основное/Подсистема.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
Использование:
|
||||
- Пресейл
|
||||
- Мероприятия
|
||||
- Общие
|
||||
- Основное
|
127
Koncept/Testovoe/Основное/ПользователиКлиентИСервер.xbsl
Normal file
@ -0,0 +1,127 @@
|
||||
@ВПроекте
|
||||
@НаСервере
|
||||
метод ПолныеПраваНаСправочникДляАутентифицированных(): РазрешениеДоступа
|
||||
возврат новый РазрешениеДоступа(
|
||||
[новый КлючДоступаДляАутентифицированных.Объект()],
|
||||
[Сущность.Право.Создание, Сущность.Право.Чтение, Сущность.Право.Изменение, Сущность.Право.Удаление])
|
||||
;
|
||||
|
||||
@ВПроекте
|
||||
@НаСервере
|
||||
метод ПолныеПраваНаСправочникДляРуководителя(): РазрешениеДоступа
|
||||
возврат новый РазрешениеДоступа(
|
||||
[новый КлючДоступаРуководителя.Объект()],
|
||||
[Сущность.Право.Создание, Сущность.Право.Чтение, Сущность.Право.Изменение, Сущность.Право.Удаление])
|
||||
;
|
||||
|
||||
@ВПроекте
|
||||
@НаСервере
|
||||
метод ПолныеПраваНаРегистрСведенийДляРуководителя(): РазрешениеДоступа
|
||||
возврат новый РазрешениеДоступа(
|
||||
[новый КлючДоступаРуководителя.Объект()],
|
||||
[Сущность.Право.Чтение, Сущность.Право.Изменение])
|
||||
;
|
||||
|
||||
@ВПроекте
|
||||
@НаСервере @ДоступноСКлиента
|
||||
метод ЭтоАдминистраторПриложения(): Булево
|
||||
знч ТекущийПользователь = Пользователи.ТекущийПользователь
|
||||
если ТекущийПользователь == Неопределено
|
||||
возврат Ложь
|
||||
;
|
||||
|
||||
знч Запрос = Запрос{
|
||||
ВЫБРАТЬ
|
||||
Администратор
|
||||
ИЗ
|
||||
Пользователи
|
||||
ГДЕ
|
||||
Ссылка == %ТекущийПользователь
|
||||
}
|
||||
|
||||
возврат Запрос.Выполнить().Единственный().Администратор
|
||||
;
|
||||
|
||||
@ВПроекте
|
||||
@НаСервере @ДоступноСКлиента
|
||||
метод ПолучитьТекущегоСотрудника(): Сотрудники.Ссылка?
|
||||
знч ТекущийПользователь = Пользователи.ТекущийПользователь
|
||||
если ТекущийПользователь == Неопределено
|
||||
возврат Неопределено
|
||||
;
|
||||
|
||||
знч Запрос = Запрос{
|
||||
ВЫБРАТЬ ПЕРВЫЕ 1
|
||||
Ссылка
|
||||
ИЗ
|
||||
Сотрудники
|
||||
ГДЕ
|
||||
Пользователь == %ТекущийПользователь
|
||||
}
|
||||
|
||||
возврат Запрос.Выполнить().ЕдинственныйИлиУмолчание()?.Ссылка
|
||||
;
|
||||
|
||||
@ВПроекте
|
||||
@НаСервере @ДоступноСКлиента
|
||||
метод ПолучитьДанныеТекущегоПользователя(): ДанныеПользователя
|
||||
знч Запрос = Запрос{
|
||||
ВЫБРАТЬ
|
||||
Пользователи.Ссылка КАК Пользователь,
|
||||
Пользователи.Администратор КАК ЭтоАдминистраторПриложения,
|
||||
Сотрудники.Ссылка.ЗаменитьNull(Неопределено) КАК Сотрудник,
|
||||
Сотрудники.Роль.ЗаменитьNull(Неопределено) КАК Роль,
|
||||
Сотрудники.Регион.ЗаменитьNull(Неопределено) КАК Регион
|
||||
ЗАПОЛНИТЬ ДанныеПользователя
|
||||
ИЗ
|
||||
Пользователи КАК Пользователи
|
||||
ЛЕВОЕ СОЕДИНЕНИЕ Сотрудники КАК Сотрудники
|
||||
ПО Пользователи.Ссылка == Сотрудники.Пользователь
|
||||
ГДЕ
|
||||
Пользователи.Ссылка == %{Пользователи.ТекущийПользователь}
|
||||
УПОРЯДОЧИТЬ ПО
|
||||
Пользователи.Ссылка
|
||||
}
|
||||
|
||||
возврат Запрос.Выполнить().ЕдинственныйИлиУмолчание() ?? новый ДанныеПользователя()
|
||||
;
|
||||
|
||||
@ВПодсистеме
|
||||
@НаСервере
|
||||
метод СоздатьПользователя(
|
||||
Представление: Строка,
|
||||
Логин: Строка,
|
||||
ЗапретитьВход: Булево = Ложь): Пользователи.Ссылка
|
||||
|
||||
если Представление.Пусто()
|
||||
выбросить новый ИсключениеНедопустимыйАргумент("Представление не может быть пустым")
|
||||
;
|
||||
если Логин.Пусто()
|
||||
выбросить новый ИсключениеНедопустимыйАргумент("Логин не может быть пустым")
|
||||
;
|
||||
|
||||
знч СписокПользователей = СпискиПользователей.ПолучитьСписокПоУмолчанию()
|
||||
|
||||
// Проверим, что пользователь с этим логином ещё не существует
|
||||
знч МассивОписанийПользователей = СпискиПользователей.ПолучитьПользователей(СписокПользователей.Ид)
|
||||
для Описание из МассивОписанийПользователей
|
||||
если Описание.Логин == Логин
|
||||
выбросить новый ИсключениеВыполнения("Пользователь с логином %Логин уже существует")
|
||||
;
|
||||
;
|
||||
|
||||
знч Описание = новый ОписаниеПользователя(СписокПользователей.Ид, Представление, Логин)
|
||||
|
||||
// Создаём пользователя
|
||||
ПользователиСервиса.Создать(Описание)
|
||||
|
||||
// Подключение созданного пользователя к приложению
|
||||
знч СсылкаНаПользователя = Пользователи.Подключить(Описание.Ид).Ссылка
|
||||
|
||||
// Запретим пользователю вход, если нужно
|
||||
если ЗапретитьВход
|
||||
Пользователи.ЗапретитьВход(СсылкаНаПользователя, Истина)
|
||||
;
|
||||
|
||||
возврат СсылкаНаПользователя
|
||||
;
|
5
Koncept/Testovoe/Основное/ПользователиКлиентИСервер.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
ВидЭлемента: ОбщийМодуль
|
||||
Ид: 41e04fce-c023-44ba-b638-3edec37378d3
|
||||
Имя: ПользователиКлиентИСервер
|
||||
ОбластьВидимости: ВПроекте
|
||||
Окружение: КлиентИСервер
|
67
Koncept/Testovoe/Основное/ПутеводительПоПроекту.xbsl
Normal file
@ -0,0 +1,67 @@
|
||||
@Обработчик
|
||||
метод ПослеСоздания()
|
||||
ИсточникДанныхСпискаРазделов().Данные.ДобавитьВсе(ПолучитьДанныеПутеводителя())
|
||||
;
|
||||
|
||||
метод ИсточникДанныхСпискаРазделов(): ИсточникДанныхМассив<Раздел>
|
||||
возврат Компоненты.СписокРазделов.Источник
|
||||
;
|
||||
|
||||
метод ИсточникДанныхСпискаПодразделов(): ИсточникДанныхМассив<Раздел>
|
||||
возврат Компоненты.СписокПодразделов.Источник
|
||||
;
|
||||
|
||||
метод СписокРазделовПриНажатииСтроки(Источник: Список<ИсточникДанныхМассив<Раздел>>, Событие: СобытиеСДанными<СтрокаСписка<Раздел>>)
|
||||
знч Раздел = Событие.Данные.ДанныеСтроки
|
||||
|
||||
Компоненты.ЗаголовокРаздела.Значение = Раздел.Заголовок
|
||||
ИсточникДанныхСпискаПодразделов().Данные.Очистить()
|
||||
ИсточникДанныхСпискаПодразделов().Данные.ДобавитьВсе(Раздел.Подразделы)
|
||||
Компоненты.СписокПодразделов.ВыделитьСтроку(ИсточникДанныхСпискаПодразделов().Данные[0])
|
||||
ПерейтиКСпискуПодразделов()
|
||||
;
|
||||
|
||||
метод РазделыПриНажатии(Источник: Надпись, Событие: СобытиеПриНажатии)
|
||||
ПерейтиКСпискуРазделов()
|
||||
;
|
||||
|
||||
метод ПерейтиКСпискуРазделов()
|
||||
ИсточникДанныхСпискаПодразделов().Данные.Очистить()
|
||||
Компоненты.СписокРазделов.Видимость = Истина
|
||||
Компоненты.ГруппаПодразделов.Видимость = Ложь
|
||||
;
|
||||
|
||||
метод ПерейтиКСпискуПодразделов()
|
||||
Компоненты.СписокРазделов.Видимость = Ложь
|
||||
Компоненты.ГруппаПодразделов.Видимость = Истина
|
||||
;
|
||||
|
||||
@ВПодсистеме
|
||||
@НаСервере @НаКлиенте
|
||||
структура Раздел
|
||||
обз знч Заголовок: Строка
|
||||
знч Содержимое: Строка
|
||||
знч Подразделы: Массив<Раздел>
|
||||
;
|
||||
|
||||
@НаСервере @ДоступноСКлиента
|
||||
статический метод ПолучитьДанныеПутеводителя(): ЧитаемыйМассив<Раздел>
|
||||
знч ДанныеПутеводителя = <Раздел>[]
|
||||
|
||||
знч ПутеводительВывод = Ресурс{Путеводитель.json}.ОткрытьПотокЧтения()
|
||||
знч ПутеводительСоответствие = СериализацияJson.ПрочитатьСоответствие(ПутеводительВывод)
|
||||
ПутеводительВывод.Закрыть()
|
||||
|
||||
для Уровень1 из ПутеводительСоответствие
|
||||
знч Раздел = новый Раздел(Уровень1.Ключ)
|
||||
|
||||
для Уровень2 из Уровень1.Значение как Соответствие<Строка, Объект?>
|
||||
знч Подраздел = новый Раздел(Уровень2.Ключ, Уровень2.Значение как Строка)
|
||||
Раздел.Подразделы.Добавить(Подраздел)
|
||||
;
|
||||
|
||||
ДанныеПутеводителя.Добавить(Раздел)
|
||||
;
|
||||
|
||||
возврат ДанныеПутеводителя
|
||||
;
|
104
Koncept/Testovoe/Основное/ПутеводительПоПроекту.yaml
Normal file
@ -0,0 +1,104 @@
|
||||
ВидЭлемента: КомпонентИнтерфейса
|
||||
Ид: 5826731a-d110-410b-94c2-1ffef248d7fd
|
||||
Имя: ПутеводительПоПроекту
|
||||
ОбластьВидимости: ВПодсистеме
|
||||
Наследует:
|
||||
Тип: Форма
|
||||
Заголовок: Путеводитель по проекту
|
||||
ПовторноеИспользованиеФормы: Истина
|
||||
Содержимое:
|
||||
Тип: ПроизвольныйШаблонФормы
|
||||
Содержимое:
|
||||
Тип: АвтоматическаяГруппа
|
||||
Содержимое:
|
||||
-
|
||||
Тип: Таблица<ИсточникДанныхМассив<ПутеводительПоПроекту.Раздел>>
|
||||
Имя: СписокРазделов
|
||||
ТолькоЧтение: Истина
|
||||
ВесПриРастягивании: 1
|
||||
РастягиватьПоВертикали: Истина
|
||||
РастягиватьПоГоризонтали: Истина
|
||||
ОтображатьШапку: Ложь
|
||||
ИспользованиеПоиска: Ложь
|
||||
РазмерСтраницы: 20
|
||||
ПриНажатииСтроки: СписокРазделовПриНажатииСтроки
|
||||
Колонки:
|
||||
-
|
||||
Тип: ПроизвольнаяКолонкаТаблицы<ПутеводительПоПроекту.Раздел>
|
||||
ШиринаВКолонках: Одинарная
|
||||
ОтключитьСортировку: Истина
|
||||
Содержимое:
|
||||
Тип: ФиксированнаяГруппа
|
||||
Ориентация: Горизонтальная
|
||||
РастягиватьПоГоризонтали: Истина
|
||||
Содержимое:
|
||||
-
|
||||
Тип: Надпись
|
||||
Значение: =ДанныеСтроки.Заголовок
|
||||
-
|
||||
Тип: Картинка
|
||||
ВыравниваниеВГруппеПоВертикали: Центр
|
||||
ВыравниваниеВГруппеПоГоризонтали: Конец
|
||||
Изображение: ШевронВправо.svg
|
||||
Цвет: =Цвета.Стилевые.ФонВторичный
|
||||
-
|
||||
Тип: ГруппаСписокСДеталями<ИсточникДанныхМассив<ПутеводительПоПроекту.Раздел>>
|
||||
Имя: ГруппаПодразделов
|
||||
Видимость: Ложь
|
||||
КомпонентСписка: =Компоненты.СписокПодразделов
|
||||
СодержимоеОсновное:
|
||||
Тип: ФиксированнаяГруппа
|
||||
ИнтервалМеждуЭлементамиПоВертикали: Полуторный
|
||||
Содержимое:
|
||||
-
|
||||
Тип: ФиксированнаяГруппа
|
||||
ИнтервалМеждуЭлементамиПоГоризонтали: Половинный
|
||||
Ориентация: Горизонтальная
|
||||
Содержимое:
|
||||
-
|
||||
Тип: Надпись
|
||||
ОбрабатыватьНажатие: Истина
|
||||
РазрешитьСжатие: Ложь
|
||||
ПриНажатии: РазделыПриНажатии
|
||||
Значение:
|
||||
Тип: Строка
|
||||
Значение: Разделы /
|
||||
-
|
||||
Тип: Надпись
|
||||
Имя: ЗаголовокРаздела
|
||||
Важность: Высокая
|
||||
РазрешитьСжатие: Истина
|
||||
МаксимальнаяВысотаВСтроках: 1
|
||||
-
|
||||
Тип: Таблица<ИсточникДанныхМассив<ПутеводительПоПроекту.Раздел>>
|
||||
Имя: СписокПодразделов
|
||||
ТолькоЧтение: Истина
|
||||
ВесПриРастягивании: 1
|
||||
РастягиватьПоВертикали: Истина
|
||||
РастягиватьПоГоризонтали: Истина
|
||||
ОтображатьШапку: Ложь
|
||||
ИспользоватьВыделениеСтроки: Истина
|
||||
РазмерСтраницы: 20
|
||||
Колонки:
|
||||
-
|
||||
Тип: СтандартнаяКолонкаТаблицы<ПутеводительПоПроекту.Раздел>
|
||||
ПолеЗначения: Заголовок
|
||||
ШиринаВКолонках: Одинарная
|
||||
ОтключитьСортировку: Истина
|
||||
СодержимоеДетали:
|
||||
Тип: АвтоматическаяГруппа
|
||||
Имя: ГруппаСодержимогоПодраздела
|
||||
ШиринаВКолонках: Тройная
|
||||
Ориентация: Вертикальная
|
||||
Содержимое:
|
||||
-
|
||||
Тип: Надпись
|
||||
Имя: ЗаголовокПодраздела
|
||||
Значение: =ДанныеСтроки.Заголовок
|
||||
Важность: Высокая
|
||||
Шрифт: =СтилевыеШрифты.ЗаголовокКрупный
|
||||
-
|
||||
Тип: Надпись
|
||||
Имя: СодержимоеПодраздела
|
||||
Значение: =ДанныеСтроки.Содержимое
|
||||
Важность: Высокая
|
3
Koncept/Testovoe/Основное/Ресурсы/Валюты.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M13.6545 18.1442H9.66383V21H6.54067V18.1442H4V15.6346H6.54067V14.3118H4V11.8022H6.54067V3H13.4438C15.4351 3 17.0256 3.51923 18.2153 4.55769C19.4051 5.58791 20 6.96017 20 8.67445C20 10.4217 19.434 11.794 18.3021 12.7912C17.1702 13.7802 15.5962 14.2871 13.5802 14.3118H9.66383V15.6346H13.6545V18.1442ZM9.66383 11.8022H13.3943C14.5179 11.8022 15.3772 11.5426 15.9721 11.0234C16.567 10.5041 16.8644 9.7294 16.8644 8.69918C16.8644 7.7761 16.5711 7.02198 15.9845 6.43681C15.4061 5.85165 14.6047 5.5467 13.5802 5.52198H9.66383V11.8022Z" fill="#6E6E6E"/>
|
||||
</svg>
|
After Width: | Height: | Size: 662 B |
5
Koncept/Testovoe/Основное/Ресурсы/Логотип.svg
Normal file
@ -0,0 +1,5 @@
|
||||
<svg width="57" height="24" viewBox="0 0 57 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M23.2222 19.0709C22.3474 19.0128 21.3387 18.8598 20.543 18.63C20.394 18.5869 19.7769 18.3607 19.62 18.2889C16.8501 17.0093 14.9204 14.2159 14.9204 10.9752C14.9204 6.53027 18.5464 2.90968 23.0062 2.90968C27.4264 2.90968 31.028 6.46852 31.0899 10.8632H34.011C33.9491 4.86288 29.0379 1.17798e-07 23.0062 1.17798e-07C16.9386 1.17798e-07 12 4.92248 12 10.9752C12 15.148 14.353 18.7772 17.7983 20.6313C18.4204 20.9595 19.3133 21.2977 19.6164 21.3903C20.5985 21.6819 21.8038 21.8758 22.8766 21.9569C23.241 21.9842 24.5132 21.9986 24.8841 22H45V19.0982H24.9179C24.6508 19.0982 23.4836 19.0882 23.2222 19.0709ZM24.9179 14.5147C24.7055 14.5147 23.5945 14.5075 23.3893 14.4903C23.0415 14.4608 22.5375 14.4091 22.2135 14.3352C21.8477 14.2375 21.5043 14.1082 21.3495 14.0235C20.2644 13.4383 19.5249 12.2936 19.5249 10.9752C19.5249 9.05722 21.0823 7.50184 23.0062 7.50184C24.8898 7.50184 26.4213 8.99618 26.4825 10.8632H29.2891C29.2301 7.4523 26.4422 4.70346 23.0062 4.70346C19.5321 4.70346 16.7161 7.51118 16.7161 10.9752C16.7161 13.4182 18.1202 15.5279 20.165 16.5612C20.4797 16.745 21.0715 16.9375 21.24 16.9813C21.8175 17.1328 22.5929 17.2362 23.2222 17.2822C23.4548 17.3016 24.5939 17.3102 24.8344 17.3116L44.9993 17.3159V14.5147H24.9179Z" fill="#6E6E6E"/>
|
||||
<path d="M7.19042 22H10V1.17798e-07H3.08476V2.93252H7.19042V22Z" fill="#6E6E6E"/>
|
||||
<path d="M0 7.21752V4.39771H5.78426V22H3.08476V7.21752H0Z" fill="#6E6E6E"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
66
Koncept/Testovoe/Основное/Ресурсы/Путеводитель.json
Normal file
@ -0,0 +1,66 @@
|
||||
{
|
||||
"Демонстрационное приложение" : {
|
||||
"Общее описание" : "В приложении демонстрируются основные возможности и концепции технологии «1С:Предприятие.Элемент» на примере упрощённой CRM-системы.\n\nПроект не является законченным прикладным решением и не предназначен для автоматизации настоящих бизнес-процессов.\n\nДля того чтобы акцентировать внимание на отдельных механизмах и упростить их поиск в проекте, функции приложения, где они демонстрируются, реализованы лаконично.",
|
||||
"Функциональность" : "Демонстрационное приложение ориентировано на управление сделками и клиентами условной компании, которая предоставляет услуги по двум направлениям: «Разработка и продвижение сайтов» и «Разработка мобильных приложений». Каждая сделка компании относится к одному из этих направлений.\n\nСделка отражает процесс оказания услуги клиенту компании на каждой стадии этого процесса.\n\nСделки регистрируются в одноименном справочнике. В сделке указывается клиент, контактное лицо, содержание, сумма и валюта сделки. Курсы валют загружаются автоматически.\n\nПроцесс оказания услуги описывается набором стадий в справочнике «Стадии сделок». Каждая сделка должна находиться в одной из этих стадий, что отражается в соответствующем реквизите справочника сделки.\n\nВ разрезе сделок можно вести учёт мероприятий – задач и событий, относящихся к сделке. Задача – это запланированная на определенное время работа, которая имеет статус выполнения. События предназначены для регистрации встреч, звонков и им подобных мероприятий. В отличие от задач, события имеют дату начала и завершения.\n\nПользователю в приложении может быть назначена роль сотрудника и регион. Роли сотрудников предопределены и делятся и Менеджеров и Руководителей. Сотрудник с ролью менеджера имеет доступ к сделкам только по своему региону.\n\nСотрудник с ролью руководителя имеет доступ ко всем сделкам, может создавать новых пользователей, управлять направлениями и стадиями сделок и выполнять другие настройки.\n\nАдминистратору приложения доступен раздел «Сервис», в котором расположена консоль запросов.\n\nПри первоначальной настройке приложения и при регистрации нового пользователя в приложении оно автоматически заполняется демонстрационными данными."
|
||||
},
|
||||
"Структура проекта" : {
|
||||
"Описание и модуль проекта" : "В файле описания проекта «Проект.yaml» установлены значения его основных свойств, таких как Представление и Версия.\n\nВ модуле проекта демонстрируется использование аннотаций @НастройкаПриложения и @ОбновлениеПроекта. Методы, помеченные этими аннотациями, выполняются при первоначальной настройке и при обновлении проекта приложения соответственно.",
|
||||
"Подсистемы" : "В приложении определено 4 подсистемы: «Основное», «Общие», «Пресейл» и «Мероприятия». Элементы в них объединены по функциональному признаку. Подсистемы образуют пространства имён.\n\nДля каждого элемента подсистемы определена область видимости. Например, справочник «Общие::Направления» имеет область видимости «ВПроекте» и виден во всех подсистемах проекта, а форма «Общие::НаправленияФормаОбъекта» с областью видимости «Подсистема» видима только внутри своей подсистемы и её пакетов.",
|
||||
"Пакеты" : "В подсистеме «Общие» создан пакет «КурсыВалют», в котором сгруппированы элементы, относящиеся к загрузке, хранению и пересчету курсов валют. Пакет образует вложенное пространство имён внутри подсистемы. Для обращения к элементам пакета выполняется импорт пространства имён пакета «Общие::КурсыВалют», либо используются квалифицированные имена самих элементов: «Общие::КурсыВалют::Валюты».",
|
||||
"Ресурсы" : "Подсистемы и пакеты приложения содержат каталог «Ресурсы».\n\nСсылки на файлы изображений из каталогов ресурсов используются в компонентах интерфейса (там, где не используются стандартные иконки). Например, в панели навигации приложения навигационные команды и группы командного интерфейса содержат ссылку на двоичные данные иконки раздела.\n\nВ методе ПолучитьИконкуМероприятия() формы «Пресейл::СделкиФормаОбъекта» демонстрируется получение ссылки на ресурс с помощью литерала."
|
||||
},
|
||||
"Элементы проекта и прикладные объекты" : {
|
||||
"Справочники" : "Во всех подсистемах приложения представлены элементы вида «Справочник».\n\nДля каждого справочника определена форма объекта и форма списка, описаны права доступа.\n\nВ справочнике «Сделки» используется стандартный реквизит «Код» с автонумерацией, включающей префикс.\n\nВ справочниках «Задачи» и «События» используется стандартный реквизит «Владелец». При удалении сделки - владельца задачи или события, они также автоматически удаляются.\n\nВ модуле объекта справочника «Сделки» реализованы обработчики событий ПриЗаполнении, ПередЗаписью и ПослеЗаписи. \n\nДля справочника «Сделки» заданы параметры записи, значения которых проверяются в обработчиках события записи.",
|
||||
"Регистры сведений" : "В пакете «Общие::КурсыВалют» определен периодический регистр сведений «КурсыВалют».\n\nВ общем модуле «КурсыВалютСервер» демонстрируется добавление записей в регистр сведений (метод «ЗагрузитьКурсыВалюты()») и запрос к виртуальной таблице среза последних (метод «ПолучитьКурсВалюты()»).\n\nДля регистра установлена форма объекта (относящаяся к записи регистра) и форма списка – «КурсыВалютФормаОбъекта» и «КурсыВалютФормаСписка», соответственно.\n\nТаблицы регистра сведений могут быть использованы в динамическом списке в качестве основных или присоединенных таблиц. Например, в форме «КурсыВалютФормаСписка» в динамическом списке выводятся данные основной таблицы регистра, а форме «ВалютыФормаСписка» к основной таблице динамического списка присоединяется виртуальная таблица «КурсыВалют.СрезПоследних».",
|
||||
"Структуры" : "Структуры «Основное::ДанныеПользователя» и «Общие::КурсыВалют::КурсВалюты» объединяют группы полей с разными типами под именем объекта структуры. Эти структуры имеют область видимости «ВПроекте» и могут использоваться во всех подсистемах.",
|
||||
"Хранимые структуры": "В подсистеме «Мероприятия» представлена хранимая структура «Участники мероприятия». Она описывает элементы множественного реквизита «Участники» справочника «Мероприятия::События».",
|
||||
"Перечисления" : "Реквизит «Приоритет» справочника «Мероприятия::Задачи» имеет тип перечисления «ПриоритетЗадачи». В модуле этого перечисления описан метод «ПолучитьЦвет()», который используется для определения цвета бейджа статуса в форме списка задач.\n\nПеречисление «Мероприятия::СтатусМероприятия» порождает тип, который используется в справочнике «Задачи». В методе ПолучитьДанныеСделок() модуля менеджера справочника Сделок демонстрируется использование значений перечисления в литерале запроса.\n\nРеквизит «Роль» справочника «Основное::Сотрудники» имеет тип перечисления «РольСотрудника». Значение этого реквизита используется в методах проверки наличия ключей доступа у пользователей.",
|
||||
"Общие модули" : "В приложении используются общие модули «Общие::КурсыВалют::КурсыВалютСервер», «Основное::ПользователиКлиентИСервер». Методы этих модулей выполняются на клиенте или на сервере в зависимости от значения свойства «Окружение» модуля и доступны в соответствии с их областью видимости через поле глобального контекста с именем модуля.",
|
||||
"Отчеты" : "На примере отчета «ОтчетОПродажах» в подсистеме «Пресейл» показана возможность встраивания отчета 1С:Аналитики в интерфейс приложения.\n\nЭтот отчет выводит данные о выигранных сделках по каждому из направлений в виде стековой диаграммы.\n\nВ качестве источника данных отчет использует виртуальную таблицу «ОтчетОПродажахТаблица».\n\nНа форму отчета выведено поле установки значения параметра «Ответственный» виртуальной таблицы и помещена команда открытия отчета в интерфейсе 1С:Аналитики.",
|
||||
"Виртуальные таблицы" : "Источником данных отчета «ОтчетОПродажах» является виртуальная таблица «ОтчетОПродажахТаблица».\n\nВиртуальная таблица имеет параметр «Ответственный», значение которого передается из Отчета.",
|
||||
"Диаграммы" : "На главной странице приложения размещены диаграммы двух типов – Воронкообразная диаграмма и Круговая диаграмма. В проекте приложения это произвольные компоненты интерфейса «ДиаграммаВоронкаПродаж» и «ДиаграммаПродажиПоНаправлениям» соответственно."
|
||||
},
|
||||
"Пользовательский интерфейс" : {
|
||||
"Командный интерфейс" : "Панель навигации демонстрационного приложения, расположенная в подсистеме «Основное» – это фрагмент командного интерфейса, в котором представлены навигационные команды, команды справочников и группы командного интерфейса.\n\nС помощью навигационных команд панели навигации открываются некоторые формы приложения (например, «СделкиФормаСписка»). \n\nУ навигационных команд открытия форм списков справочников Клиентов, Контактных лиц и других не требуется изменять значения свойств по умолчанию, поэтому для открытия этих форм используются команды автоматически порождаемого командного интерфейса: Клиенты.ОткрытьСписок.\n\nЧасть команд панели навигации демонстрационного приложения объединены в группы командного интерфейса.\n\nНавигационные команды и группы командного интерфейса на верхнем уровне панели навигации образуют разделы клиентского приложения. Для этих элементов установлены изображения, которые становятся иконками разделов.\n\nВ дополнительный командный интерфейс приложения помещена команда завершения сеанса, а в командный интерфейс панели действий – команда поиска.\n\nВ форме «Пресейл::КлиентыФормаСписка» используется команда создания. При её выполнении будет открыта форма нового объекта, соответствующего основной таблице списка. На форме команда создания располагается справа от заголовка.\n\nПрименение главной и основных команд формы показано в форме «Мероприятия::ЗадачиФормаОбъекта», где главной командой назначена команда «СохранитьИЗакрыть», а в состав основных добавлены команды «Сохранить» и «Удалить».\n\nДополнительные команды формы используются в формах «ВалютыФормаСписка» и «ЗадачиФормаСписка». На формах дополнительные команды располагаются в верхнем правом углу.",
|
||||
"Формы" : "В описаниях таких элементов проекта как Справочники определены их формы объектов и формы списков. Это компоненты интерфейса, которые наследуют тип «ФормаОбъекта» и «ФормаСписка», соответственно. Эти формы открываются при выполнении команд автоматически порождаемого командного интерфейса (таких как «ОткрытьСписок»).\n\nФормаОбъекта – это обобщенный тип. Он параметризуется типом объекта, который редактируется в форме, и, если при закрытии формы возвращается параметр – типом этого параметра. Пример возвращения значения при закрытии формы можно увидеть в компоненте «КлиентыФормаОбъекта».\n\nДля размещения компонентов на форме «СделкиФормаОбъекта» используется «ШаблонФормыСРазделами». Этот шаблон разбивает контент формы Сделки на несколько разделов – основной раздел (слева), в котором расположены основные поля Сделки, и дополнительные разделы (в виде страниц), в которые помещена табличная часть Услуг, списки Задач и Событий. ШаблонФормыСРазделами автоматически трансформируется в мобильный форм фактор.",
|
||||
"Автоматическая группа" : "Для компоновки элементов интерфейса в приложении используются разные виды групп.\n\nВ формах «Основное::ГлавнаяСтраница» и «Мероприятия::ЗадачиФормаОбъекта» можно увидеть примеры использования Автоматической группы, предназначенной для автоматического расположения компонентов внутри своей области с выравниванием по направляющим колонкам.\n\nАвтоматическая группа адаптируется к мобильным устройствам.",
|
||||
"Поле ввода" : "Поля ввода представлены в формах объектов справочников и в других формах, например, в форме «Общие::КурсыВалют::ФормаЗагрузкиКурсовВалют».\n\nКомпонент поля ввода является обобщенным. При его описании указывается параметр типа, и в зависимости от его значения изменяется элемент управления поля ввода. Например, тип поля ввода на форме «ФормаЗагрузкиКурсовВалют» – «ЗакрытыйДиапазон», и поле ввода имеет соответствующий вид.\n\nПараметры типа полей вода, предназначенных для выбора элементов справочников, – это ссылки справочников. В поле ввода контактного лица на форме «Пресейл::ФормаСозданияСделки» и в поле ввода сделки на форме «Мероприятия::ЗадачиФормаОбъекта» демонстрируется использование свойства «НастройкиВводаСсылок» для установки отбора на список элементов справочника, доступных для выбора.\n\nДля поля ввода может быть установлено описание, как для поля ввода даты закрытия на форме «СделкиФормаОбъекта».\n\nДля поля ввода может быть установлен текст сообщения об ошибке. При нажатии кнопки «Добавить» в форме «ФормаДобавленияУчастника» проверяются значения обязательного поля и, если оно не заполнено, этому полю устанавливается соответствующее значение свойства «РезультатПроверкиДанных». При этом под полем ввода появляется сообщение «Выберите участника». Текст этого сообщения задается свойством «СообщениеОшибка» поля ввода.",
|
||||
"Таблица" : "Для вывода данных Сделок, Клиентов, Контактных лиц в формах списков этих справочников используется компонент Таблица.\n\nДля Таблицы определяется массив колонок, каждая из которых может быть либо стандартной (тип «СтандартнаяКолонкаТаблицы»), либо иметь произвольное содержимое (тип «ПроизвольнаяКолонкаТаблицы»).\n\nКолонки большинства таблиц приложения – стандартные. Стандартная колонка может быть разных видов. Например, статус задачи в форме списка Задач имеет вид значка. В ячейке стандартной колонки может выводиться изображение, как в колонке наименования таблицы Стадий сделок. Для данных типа «Сущность.Ссылка» надпись в ячейке стандартной колонки по умолчанию принимает вид гиперссылки, как в колонке «Клиент» списка Сделок. Для колонки «Направление» этого же списка вывод гиперссылки отключен.\n\nИсточником данных для Таблицы может быть как Динамический список (как в формах списков Клиентов, Контактных лиц и др.), так и Источник данных массив (как в таблице участников на форме объекта События).\n\nВ модуле формы «ЗадачиФормаСписка» демонстрируется программное создание сохраненной настройки таблицы с помощью обработчика «ПриЧтенииНастроекТаблицы». В этом примере сохраненная настройка с названием «Мои задачи» содержит фильтр по задачам текущего сотрудника. Эта настройка применяется автоматически и её также можно выбрать в меню фильтров таблицы.",
|
||||
"Стандартный список" : "На форме «Пресейл::СделкиФормаОбъекта» списки Задач и Событий выводятся с помощью стандартного списка. Для строки такого списка можно установить изображение, описание и другое стандартное наполнение.",
|
||||
"Источник данных массив" : "Источник данных списка участников в форме «Мероприятия::СобытияФормаОбъекта» имеет тип «ИсточникДанныхМассив».\n\nВ отличие от динамического списка, данные источника этого типа могут быть заполнены программно, например, с помощью произвольного запроса.",
|
||||
"Динамический список" : "Источником данных для таблиц большинства форм списков (списки справочников Клиентов, Контактных лиц и др.) является динамический список.\n\nДля динамических списков указывается основная таблица и выражения полей, в которых можно использовать разыменования, как для поля «Владелец.Клиент» в формах списков Задач и Событий. Также может быть определен порядок сортировки записей (например, сортировка по полю «Дата создания» в формах списков Задач и Событий).\n\nВ форме списка Валют демонстрируются присоединенные таблицы динамического списка. Основная таблица справочника Валют соединяется с виртуальной таблицей среза последних регистра сведений Курсы валют. И для основной и для присоединенной таблиц указываются псевдонимы, которые используются в выражении соединения таблиц и в выражениях полей динамического списка.",
|
||||
"Уведомления" : "При создании нового Клиента или Контактного лица пользователь получает оповещение о записи нового объекта с помощью механизма уведомлений. Уведомления создаются в формах этих объектов в обработчиках команды сохранения.\n\nНа эти уведомления добавлена кнопка, при нажатии на которую открывается форма созданного объекта.\n\nПосле закрытия уведомления оно может оставааться в Центре уведомлений, за что отвечает свойство «СохранитьВЦентреУведомлений» объекта уведомления.\n\nУведомления создаются также при загрузке курсов валют, при создании новых Сделок, Задач и Событий и при завершении мероприятий.",
|
||||
"Модальные диалоги" : "В модуле формы «Пресейл::СделкиФормаОбъекта» показан пример использования модальных диалоговых окон для подтверждения удаления задач и событий.",
|
||||
"Стандартные карточки" : "В качестве главной страницы приложения установлена форма «Основное::ГлавнаяСтраница». На этой форме расположена группа стандартных карточек.\n\nСтандартные карточки имеют предопределенный вид. Для них устанавливаются значения свойств «Заголовок», «Картинка», «Команды».\n\nКарточки на главной странице содержат важную для пользователя информацию и могут вести к разделам приложения.",
|
||||
"Стандартная библиотека картинок" : "В компонентах интерфейса проекта используются иконки из стандартной библиотеки картинок. Например, в форме «ЗадачиФормаСписка» используются стандартные иконки «Галочка.svg», «Скачать.svg».",
|
||||
"Обучающие подсказки" : "В приложении используется механизм обучающих подсказок, который можно увидеть в форме «Пресейл::СделкиФормаОбъекта». Эти подсказки помогают пользователю ознакомиться с интерфейсом формы Сделки."
|
||||
},
|
||||
"Синтаксис и концепции языка" : {
|
||||
"Объект языка Структура" : "В модуле элемента проекта «Пресейл::ДиаграммаПродажиПоНаправлениям» объявлена структура с именем «ДанныеПродаж», которая объединяет группу полей под именем структуры.\n\nВсе поля этой структуры объявлены с использованием ключевого слова «знч», а значит, состояние объекта структуры не может быть изменено после создания.\n\nДля создания объектов структуры используется автоматически генерируемый конструктор, содержащий все поля в порядке их объявления.\n\nТак как все поля структуры имеют признак обязательности «обз», значения каждого из них должно быть установлено при создании объекта.",
|
||||
"Константы" : "В модуле объекта справочника «Общие::КурсыВалют::Валюты» объявлена константа «КОД_БАЗОВОЙ_ВАЛЮТЫ», которая имеет модификатор видимости @ВПроекте и используется в модуле и за его пределами.\n\nВ общем модуле «КурсыВалютСервер» объявлена константа «КЛЮЧ_ЗАДАНИЯ_ЗАГРУЗКИ_КУРСОВ». Она не имеет явных модификаторов видимости и по умолчанию видима только в пределах модуля.",
|
||||
"Исключения" : "В общем модуле «Общие::КурсыВалют::КурсыВалютСервер» объявлено исключение с именем «ИсключениеЗагрузкиКурсовВалют».\n\nЭто исключение выбрасывается при перехвате исключений «ИсключениеHttp», «ИсключениеЧтенияXml» и при других ошибках загрузки курсов валют. В вызывающем методе «ИсключениеЗагрузкиКурсовВалют» обрабатывается (регистрируется в журнале событий).\n\nК стандартным свойствам исключения добавлено обязательное поле «Валюта». При создании объекта исключения «ИсключениеЗагрузкиКурсовВалют» используется автоматически генерируемый конструктор, принимающий в качестве параметров строковое описание исключения, значение поля «Валюта» и первоначальное исключение-причину.",
|
||||
"Составные типы": "Поле «Участник» хранимой структуры «Мероприятия::УчастникиМероприятия» имеет составной тип Сотрудники.Ссылка|КонтактныеЛица.Ссылка|Неопределено",
|
||||
"Функциональные типы" : "При создании объектов уведомлений в формах Клиентов и Контактных лиц в качестве обработчиков событий нажатия кнопок действия используются лямбда-выражения.\n\nВ модуле формы «Основное::ГлавнаяСтраница» в методе ПослеСоздания() в параметр процедуры ПодключитьОбработчикТаймера() передается ссылка на метод, расположенный в этом же модуле.",
|
||||
"Интерполяция строк" : "Интерполяция строк, т.е. включение в строковой литерал вычисляемых выражений, демонстрируется в методе «ПолучитьЗаголовокДатыМероприятия» модуля формы «Пресейл::СделкиФормаОбъекта».\n\nДля дат в этих литералах установлен формат представления.",
|
||||
"Работа с коллекциями" : "В модулях проекта приложения демонстрируются некоторые методы работы с коллекциями, позволяющие выполнять над ними определенные операции в функциональном стиле.\n\nК примеру, в обработчике «ВычислитьРазрешенияДоступаДляОбъектов()» модуля объекта справочника Задачи к массиву объектов применяются операции «Фильтровать» и «Преобразовать».\n\nВ методе «ПолучитьВсе()» модуля менеджера справочника «Валюты» результат запроса преобразуется к массиву одной строкой кода.",
|
||||
"Заполнение структур в запросах" : "В методе «ПолучитьКурсВалюты()» модуля «КурсыВалютСервер» в качестве типа строк результата типизированного запроса используется определенная в проекте структура «КурсВалюты». Для этого используется ключевое слово «ЗАПОЛНИТЬ» языка запросов.\n\nВ методе «ПолучитьСтатистикуАктивныхСделок» модуля менеджера справочника «Сделки» структура «СтатистикаСделок» порождается самим запросом. Для этого используется ключевое слово «ПОРОДИТЬ» языка запросов.\n\nВидимость порождаемой структуры соответствует типу, которому принадлежит модуль. Имя типа порождаемой структуры имеет вид «ИмяТипа.ИмяСтруктуры». В данном случае, «Сделки.СтатистикаСделок»."
|
||||
},
|
||||
"Инструменты интеграции" : {
|
||||
"HTTP-сервисы" : "С помощью HTTP-сервиса «Пресейл::СделкиHttpСервис» можно получить данные сделок по HTTP. Для этого определено два шаблона URL и обработчики GET-запросов, соответствующих этим шаблонам.\n\nС помощью запроса по первому адресу можно получить данные всех сделок с отбором по стадии сделки. Значение отбора по стадии передается в параметрах URL. Тело ответа записывается в поток записи по мере получения объектов из базы данных.\n\nС помощью запроса по второму адресу можно получить данные конкретной сделки. Код сделки передается как часть пути к ресурсу. Тело ответа устанавливается из строки.\n\nДля сериализации данных сделок используется глобальный объект «СериализацияJson».",
|
||||
"Работа с внешними ресурсами по HTTP" : "В общем модуле «Общие::КурсыВалют::КурсыВалютСервер» демонстрируется использование объекта КлиентHttp для получения данных о курсах валют с сайта ЦБ.\n\nДля создания объекта КлиентHttp с нужными значениями параметров используются фабричные методы «СБазовымUrl()» и «СМаксимумомПеренаправлений()».\n\nС помощью фабричного метода «ЗапросGet()» объекта КлиентHttp создается объект ЗапросHttp. Результатом выполнения запроса является объект ОтветHttp. В модуле демонстрируется обработка тела ответа в формате XML.",
|
||||
"Объект СериализацияJson" : "В модуле HTTP-сервиса «Пресейл::СделкиHttpСервис» демонстрируется сериализация объектов соответствий с помощью метода ЗаписатьОбъект() объекта СериализацияJson.",
|
||||
"Объект ЧтениеXml" : "В методе ЗагрузитьКурсыВалюты() модуля «Общие::КурсыВалют::КурсыВалютСервер» демонстрируется разбор XML-документа с помощью объекта ЧтениеXml."
|
||||
},
|
||||
"Системные механизмы" : {
|
||||
"Контроль прав доступа" : "Для каждого из справочников приложения, регистра сведений и HTTP-сервиса определены настройки прав доступа.\n\nДля справочников «СтадииСделок» и «Валюты» разрешения вычисляются на уровне всего справочника. Для остальных справочников разрешения вычисляются на уровне всего справочника и на уровне отдельных записей (RLS).\n\nДля управления доступом к справочникам в подсистеме «Основное» создано два ключа доступа: «КлючДоступаРуководителя» и «КлючДоступаМенеджера». Эти ключи выдаются пользователям в соответствии с ролью сотрудника и регионом, которые ему назначены в справочнике «Сотрудники».\n\nВ обработчике «ПослеЗаписи()» объекта справочника «Сотрудники» ключи доступа соответствующего пользователя приложения пересчитываются.\n\nРазрешения доступа для объектов справочника «Контактные лица» зависят от значения реквизита «Регион» справочника «Клиенты», который является владельцем справочника Контактных лиц. При изменении значения Региона у некоторого Клиента нужно явно пересчитывать разрешения доступа тех объектов Контактных лиц, которые связаны с измененным Клиентом. Метод пересчета вызывается в обработчике «ПослеЗаписи()» объекта справочника Клиентов.\n\nДля объектов, разрешения которых, в свою очередь, зависят от Контактных лиц, также по цепочке выполняется пересчет разрешений.\n\nВызов HTTP-сервиса «СделкиHttpСервис» разрешен всем авторизованным пользователям с помощью предопределенного ключа «КлючДоступаДляАутентифицированных».\n\nВ модуле формы «ФормаЗагрузкиКурсовВалют» в методе «ЗагрузитьКурсыВалют()» показан пример дополнения контекста прав пользователя правом на изменение регистра сведений «КурсыВалют».",
|
||||
"Запланированные задания" : "Курсы валют в приложении загружаются при помощи запланированного задания. Задание загрузки курсов создается при создании приложения из проекта и выполняется по расписанию. Выполнение задания можно приостановить или возобновить из формы загрузки курсов валют.",
|
||||
"Работа с двоичными данными" : "Реквизит «Иконка» справочника Стадии сделок имеет тип ДвоичныйОбъект.Ссылка.\n\nВ форме объекта Стадии сделки демонстрируется загрузка двоичных данных на примере загрузки файла иконки стадии и запись ссылки на загруженный файл в реквизит справочника.\n\nДля загрузки файла используется стандартный менеджер загрузки файлов и компонент интерфейса «ВыборФайлов». После загрузки значение реквизита выводится в колонке формы списка Стадий сделок.\n\nНа форме объекта Стадии сделки выводится гиперссылка, при нажатии на которую происходит выгрузка файла иконки с помощью стандартного менеджера выгрузки файлов.\n\nЗагрузка и выгрузка двоичных данных демонстрируется также в справочнике и в форме объекта Сделки на примере файла договора.",
|
||||
"Журнал событий" : "Регистрация событий в Журнале событий демонстрируется в общем модуле «Общие::КурсыВалют::КурсыВалютСервер».\n\nВ подсистеме «Общие::КурсыВалют» добавлено два элемента проекта – События журнала событий: «ОперацияЗагрузкиКурсовВалют» и «ОшибкаЗагрузкиКурсовВалюты». Первое из них записывается при начале и завершении операции загрузки курсов валют, а второе используется для регистрации ошибок.\n\nСтандартные свойства событий дополнены пользовательскими свойствами, которые используются в шаблонах представления событий.",
|
||||
"Консоль запросов" : "Панель навигации приложения включает группу командного интерфейса «Сервис», которая содержит команду вызова консоли запросов.\n\nИсполнение запросов в консоли доступно либо администраторам, либо пользователям, обладающим системным правом «КонсольЗапросов» (проверка выполняется непосредственно при попытке выполнения запроса).\n\nРадел «Сервис» скрыт для пользователей, не являющихся администраторами.",
|
||||
"Выгрузка данных в XLS" : "В форме списка Задач продемонстрирована возможность формирования табличного документа и его выгрузки в XLS.\n\nПользователь может выгрузить в файл свои задачи или те, которые он отметил в таблице задач.",
|
||||
"Создание пользователей" : "В методе СоздатьПользователя() общего модуля «ПользователиСервер» показан пример программного создания и подключения нового пользователя к приложению.",
|
||||
"Локализация" : "Приложение поддерживает русский и английский языки локализации. По умолчанию используется русский язык. Настройки локализации устанавливаются в файле «Проект.yaml».\n\nКаждая из подсистем приложения содержит элемент проекта вида «ЛокализованныеСтроки», в котором приводятся строки на языке по умолчанию, а также каталог «Локализация/En», содержащий файл с переводом этих же строк на английский язык.\n\nДля проверки английской локализации можно открыть приложение, добавив в адресной строке параметр «locale» со значением, соответствующим языку локализации: <URL приложения>?locale=en_EN",
|
||||
"Стандартное хранилище настроек" : "В форме «Пресейл::СделкиФормаОбъекта» для сохранения информации о том, что пользователь прошел обучение созданию сделки, используется Стандартное хранилище настроек.",
|
||||
"Полнотекстовый поиск" : "Пример использования полнотекстового поиска показан в модуле формы «ОкноПолнотекстовогоПоиска». Эта форма открывается при выполнении команды «Поиск», расположенной в панели действий приложения."
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.73298 2.58934L2.03238 8.82511C1.90556 8.92741 1.75914 9.00388 1.60173 9.05002C1.44432 9.09617 1.27908 9.11106 1.11571 9.09383C0.952338 9.0766 0.794128 9.02759 0.650362 8.94967C0.506595 8.87176 0.380167 8.76651 0.278497 8.64011C0.0696546 8.38087 -0.0277909 8.05213 0.00684648 7.72368C0.0414838 7.39524 0.205477 7.09294 0.464012 6.88096L8.16035 0.645191C8.67691 0.228103 9.32557 0 9.99509 0C10.6646 0 11.3133 0.228103 11.8298 0.645191L19.5304 6.88096C19.7889 7.09294 19.9529 7.39524 19.9876 7.72368C20.0222 8.05213 19.9248 8.38087 19.7159 8.64011C19.6144 8.76732 19.4878 8.87327 19.3436 8.95169C19.1995 9.03012 19.0408 9.07942 18.8768 9.09667C18.7129 9.11392 18.547 9.09877 18.3892 9.05213C18.2313 9.00548 18.0846 8.92828 17.9578 8.82511L10.2572 2.58934C10.1835 2.52958 10.0908 2.49688 9.99509 2.49688C9.89939 2.49688 9.80669 2.52958 9.73298 2.58934ZM18.7441 12.5001V18.3334C18.7484 18.7706 18.5754 19.1917 18.263 19.5041C17.9506 19.8166 17.5244 19.9949 17.0779 20H12.4944C12.2711 19.9976 12.058 19.9085 11.9017 19.7522C11.7455 19.5959 11.659 19.3853 11.6613 19.1667V14.5834C11.6634 14.3648 11.5768 14.1543 11.4206 13.9981C11.2645 13.8419 11.0514 13.7527 10.8282 13.7501H9.16196C8.93874 13.7527 8.72569 13.8419 8.56952 13.9981C8.41335 14.1543 8.3268 14.3648 8.32884 14.5834V19.1667C8.33111 19.3853 8.24464 19.5959 8.08842 19.7522C7.9322 19.9085 7.71902 19.9976 7.49573 20H2.9123C2.46578 19.9949 2.03955 19.8166 1.72717 19.5041C1.41478 19.1917 1.24175 18.7706 1.24606 18.3334V12.5001C1.25398 12.2501 1.31348 12.0043 1.42097 11.7775C1.52847 11.5506 1.68173 11.3474 1.87154 11.1801L8.93475 5.34182C9.23141 5.09611 9.60739 4.96129 9.99593 4.96129C10.3845 4.96129 10.7605 5.09611 11.0571 5.34182L18.1203 11.1751C18.3104 11.3432 18.4637 11.5472 18.5709 11.775C18.6781 12.0027 18.737 12.2494 18.7441 12.5001Z" fill="currentColor"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
3
Koncept/Testovoe/Основное/Ресурсы/РазделНастройки.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.7406 0.114322C16.943 0.0346478 17.1592 -0.00409283 17.3767 0.000341943C17.815 -0.00489729 18.2378 0.162764 18.5533 0.467009C18.8618 0.781672 19.0345 1.20472 19.0345 1.64534C19.0345 2.08596 18.8618 2.50901 18.5533 2.82368L17.67 3.70784C17.5919 3.78596 17.4859 3.82984 17.3754 3.82984C17.2649 3.82984 17.159 3.78596 17.0808 3.70784L15.3133 1.93784C15.2352 1.85971 15.1913 1.75374 15.1913 1.64326C15.1913 1.53277 15.2352 1.42681 15.3133 1.34868L16.1975 0.464509C16.3536 0.313021 16.5382 0.193996 16.7406 0.114322ZM10.0567 12.7212C10.3621 12.6531 10.6421 12.5 10.8642 12.2795L16.3108 6.83284C16.3399 6.80367 16.377 6.78379 16.4174 6.77569C16.4578 6.7676 16.4996 6.77165 16.5377 6.78735C16.5758 6.80305 16.6084 6.82968 16.6313 6.86388C16.6543 6.89808 16.6666 6.93831 16.6667 6.9795V16.6503C16.6667 17.3395 16.3929 18.0004 15.9056 18.4876C15.4183 18.9749 14.7575 19.2487 14.0683 19.2487H2.60083C2.25944 19.2491 1.92132 19.1822 1.60579 19.0519C1.29026 18.9216 1.00352 18.7303 0.761968 18.4891C0.520415 18.2478 0.328786 17.9613 0.198041 17.646C0.0672964 17.3306 0 16.9926 0 16.6512V5.18034C0 4.83891 0.0672905 4.50083 0.198025 4.18542C0.32876 3.87001 0.520375 3.58346 0.761918 3.34215C1.00346 3.10084 1.29019 2.9095 1.60573 2.77907C1.92126 2.64864 2.25941 2.58167 2.60083 2.582H11.8083C11.8495 2.58209 11.8898 2.59439 11.924 2.61734C11.9582 2.64029 11.9848 2.67286 12.0005 2.71094C12.0162 2.74902 12.0202 2.7909 12.0121 2.83129C12.004 2.87167 11.9842 2.90875 11.955 2.93784L6.73917 8.15534C6.5184 8.37688 6.36521 8.65666 6.2975 8.962C6.2675 9.02034 5.19167 11.6603 5.19167 11.6603C5.07055 11.9632 5.04098 12.2949 5.1066 12.6145C5.17222 12.934 5.33016 13.2272 5.56083 13.4578C5.79416 13.6842 6.08734 13.8392 6.40581 13.9044C6.72428 13.9697 7.05478 13.9425 7.35833 13.8262L7.46854 13.7813L7.46887 13.7812L7.47075 13.7804C7.97496 13.5752 10.0056 12.7489 10.0567 12.7212ZM14.3992 2.85034C14.3194 2.77534 14.2141 2.73358 14.1046 2.73358C13.9951 2.73358 13.8897 2.77534 13.81 2.85034L8.50749 8.15451C8.42938 8.23264 8.3855 8.3386 8.3855 8.44909C8.3855 8.55957 8.42938 8.66554 8.50749 8.74367L10.275 10.5112C10.3531 10.5893 10.4591 10.6332 10.5696 10.6332C10.6801 10.6332 10.786 10.5893 10.8642 10.5112L16.1675 5.20784C16.2456 5.1297 16.2895 5.02374 16.2895 4.91326C16.2895 4.80277 16.2456 4.69681 16.1675 4.61867L14.3992 2.85034ZM9.58461 11.5366C9.54023 11.5896 9.48337 11.6307 9.41916 11.6562L6.89249 12.6662C6.81677 12.6965 6.73382 12.7039 6.65392 12.6875C6.57403 12.6711 6.50069 12.6317 6.44302 12.574C6.38535 12.5163 6.34587 12.443 6.32948 12.3631C6.31309 12.2832 6.32051 12.2002 6.35082 12.1245L7.36249 9.59369C7.38858 9.53027 7.42991 9.47428 7.48282 9.43067C7.53574 9.38706 7.59859 9.35718 7.66582 9.34369C7.73341 9.32992 7.80335 9.33314 7.86938 9.35306C7.93542 9.37299 7.99547 9.409 8.04416 9.45785L9.55916 10.9737C9.60814 11.0224 9.64422 11.0826 9.66416 11.1488C9.6841 11.2149 9.68727 11.285 9.67338 11.3527C9.6595 11.4204 9.62899 11.4836 9.58461 11.5366Z" fill="currentColor"/>
|
||||
</svg>
|
After Width: | Height: | Size: 3.1 KiB |
3
Koncept/Testovoe/Основное/Ресурсы/РазделПутеводитель.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="20" height="19" viewBox="0 0 20 19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M16.3636 0L11.8182 4.63415V14.8293L16.3636 10.6585V0ZM18.1818 3.70732V16.2195C17.1818 15.8951 16.0909 15.7561 15 15.7561C13.4545 15.7561 11.2273 16.3585 10 17.1463V4.63415C8.68182 3.61463 6.77273 3.2439 5 3.2439C3.22727 3.2439 1.31818 3.61463 0 4.63415V18.2122C0 18.4439 0.227273 18.6756 0.454545 18.6756C0.545455 18.6756 0.590909 18.6293 0.681818 18.6293C1.90909 18.0268 3.68182 17.6098 5 17.6098C6.77273 17.6098 8.68182 17.9805 10 19C11.2273 18.2122 13.4545 17.6098 15 17.6098C16.5 17.6098 18.0455 17.8878 19.3182 18.5829C19.4091 18.6293 19.4545 18.6293 19.5455 18.6293C19.7727 18.6293 20 18.3976 20 18.1659V4.63415C19.4545 4.21707 18.8636 3.93902 18.1818 3.70732ZM8.18182 16.1361C7.04545 15.8395 5.90909 15.7561 5 15.7561C4.03636 15.7561 2.89091 15.9322 1.81818 16.2195V5.68146C2.64545 5.31073 3.76364 5.09756 5 5.09756C6.23636 5.09756 7.35455 5.31073 8.18182 5.68146V16.1361Z" fill="currentColor"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1018 B |
3
Koncept/Testovoe/Основное/Ресурсы/РазделСервис.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M9.99984 13.5C9.07158 13.5 8.18134 13.1313 7.52497 12.4749C6.86859 11.8185 6.49984 10.9283 6.49984 10C6.49984 9.07174 6.86859 8.1815 7.52497 7.52513C8.18134 6.86875 9.07158 6.5 9.99984 6.5C10.9281 6.5 11.8183 6.86875 12.4747 7.52513C13.1311 8.1815 13.4998 9.07174 13.4998 10C13.4998 10.9283 13.1311 11.8185 12.4747 12.4749C11.8183 13.1313 10.9281 13.5 9.99984 13.5ZM17.4298 10.97C17.4698 10.65 17.4998 10.33 17.4998 10C17.4998 9.67 17.4698 9.34 17.4298 9L19.5398 7.37C19.7298 7.22 19.7798 6.95 19.6598 6.73L17.6598 3.27C17.5398 3.05 17.2698 2.96 17.0498 3.05L14.5598 4.05C14.0398 3.66 13.4998 3.32 12.8698 3.07L12.4998 0.42C12.4598 0.18 12.2498 0 11.9998 0H7.99984C7.74984 0 7.53984 0.18 7.49984 0.42L7.12984 3.07C6.49984 3.32 5.95984 3.66 5.43984 4.05L2.94984 3.05C2.72984 2.96 2.45984 3.05 2.33984 3.27L0.339839 6.73C0.209839 6.95 0.26984 7.22 0.45984 7.37L2.56984 9C2.52984 9.34 2.49984 9.67 2.49984 10C2.49984 10.33 2.52984 10.65 2.56984 10.97L0.45984 12.63C0.26984 12.78 0.209839 13.05 0.339839 13.27L2.33984 16.73C2.45984 16.95 2.72984 17.03 2.94984 16.95L5.43984 15.94C5.95984 16.34 6.49984 16.68 7.12984 16.93L7.49984 19.58C7.53984 19.82 7.74984 20 7.99984 20H11.9998C12.2498 20 12.4598 19.82 12.4998 19.58L12.8698 16.93C13.4998 16.67 14.0398 16.34 14.5598 15.94L17.0498 16.95C17.2698 17.03 17.5398 16.95 17.6598 16.73L19.6598 13.27C19.7798 13.05 19.7298 12.78 19.5398 12.63L17.4298 10.97Z" fill="currentColor"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 148 B |
BIN
Koncept/Testovoe/Основное/Ресурсы/РесурсыДемо/СтадияОтказано.png
Normal file
After Width: | Height: | Size: 144 B |
After Width: | Height: | Size: 504 B |