Element_Test_V2/Koncept/Testovoe/Пресейл/СделкиФормаОбъекта.xbsl
Vladislav_k0ncept f16c003f46 Initial commit
2025-02-20 15:05:58 +00:00

367 lines
22 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

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

импорт Основное
импорт Мероприятия
@НаСервере
конст КЛЮЧ_ОБЪЕКТА_НАСТРОЕК = "ФормаСделки"
@НаСервере
конст КЛЮЧ_НАСТРОЙКИ_ПРОЙДЕННОГО_ОБУЧЕНИЯ = "ОбучениеСозданияСделки"
@Обработчик
метод ПослеЧтения()
если не ЭтоНовый()
ЕстьЗадачиПоСделке = Сделки.ЕстьЗадачиПоСделке(Объект.Ссылка)
ЕстьСобытияПоСделке = Сделки.ЕстьСобытияПоСделке(Объект.Ссылка)
;
ЗаписанаЗадача.ПодключитьОбработчик(&ОбновитьСписокЗадач)
ЗаписаноСобытие.ПодключитьОбработчик(&ОбновитьСписокСобытий)
;
@Обработчик
метод ПослеСоздания()
// Запустим обучение созданию сделки, если пользователь ещё не прошёл его
если ЭтоНовый() и не ОбучениеСозданиюСделкиПройдено()
ЗапуститьОбучающиеПодсказки(ОбучающиеПодсказки)
УстановитьОтметкуОПройденномОбучении()
;
;
метод КлиентПриНажатии(Источник: Кнопка, Событие: СобытиеПриНажатии)
если Объект.Клиент != Неопределено
КлиентыФормаОбъекта.ОткрытьВМодальномОкне(КлючОбъекта = Объект.Клиент)
;
;
метод КонтактноеЛицоПриНажатии(Источник: Кнопка, Событие: СобытиеПриНажатии)
если Объект.КонтактноеЛицо != Неопределено
КонтактныеЛицаФормаОбъекта.ОткрытьВМодальномОкне(КлючОбъекта = Объект.КонтактноеЛицо)
;
;
метод СписокУслугКоличествоПриИзменении(Источник: ПолеВвода<Объект?>, Событие: СобытиеПриИзменении<Объект?>, ДанныеСтроки: Сделки.Услуги)
ДанныеСтроки.Сумма = ДанныеСтроки.Количество * ДанныеСтроки.Цена
;
метод СписокУслугЦенаПриИзменении(Источник: ПолеВвода<Объект?>, Событие: СобытиеПриИзменении<Объект?>, ДанныеСтроки: Сделки.Услуги)
ДанныеСтроки.Сумма = ДанныеСтроки.Количество * ДанныеСтроки.Цена
;
@Обработчик
метод ПередЗаписьюОбъекта()
ПроверитьЗаполнениеПолей()
ПоказыватьУведомление = ЭтоНовый()
;
метод ПроверитьЗаполнениеПолей()
пер ПоляНеЗаполнены: Булево
если Объект.Клиент == Неопределено
Компоненты.ПолеВводаКлиент.РезультатПроверкиДанных = РезультатПроверкиДанных.Ошибка
ПоляНеЗаполнены = Истина
иначе
Компоненты.ПолеВводаКлиент.РезультатПроверкиДанных = РезультатПроверкиДанных.Отсутствует
;
если Объект.Направление == Неопределено
Компоненты.ПолеВводаНаправление.РезультатПроверкиДанных = РезультатПроверкиДанных.Ошибка
ПоляНеЗаполнены = Истина
иначе
Компоненты.ПолеВводаНаправление.РезультатПроверкиДанных = РезультатПроверкиДанных.Отсутствует
;
если Объект.Наименование.Пусто()
Компоненты.ПолеВводаСодержание.РезультатПроверкиДанных = РезультатПроверкиДанных.Ошибка
ПоляНеЗаполнены = Истина
иначе
Компоненты.ПолеВводаСодержание.РезультатПроверкиДанных = РезультатПроверкиДанных.Отсутствует
;
если Объект.Стадия == Неопределено
Компоненты.ПолеВводаСтадия.РезультатПроверкиДанных = РезультатПроверкиДанных.Ошибка
ПоляНеЗаполнены = Истина
иначе
Компоненты.ПолеВводаСтадия.РезультатПроверкиДанных = РезультатПроверкиДанных.Отсутствует
;
если Объект.ВалютаСделки == Неопределено
Компоненты.ПолеВводаВалюта.РезультатПроверкиДанных = РезультатПроверкиДанных.Ошибка
ПоляНеЗаполнены = Истина
иначе
Компоненты.ПолеВводаВалюта.РезультатПроверкиДанных = РезультатПроверкиДанных.Отсутствует
;
если ПоляНеЗаполнены
выбросить новый ИсключениеВалидации("Не заполнены обязательные поля", ОтображатьСообщениеОбОшибке = Ложь)
;
;
метод СоздатьКлиентаПриНажатии(Источник: Кнопка, Событие: СобытиеПриНажатии)
знч Клиент = КлиентыФормаОбъекта.ОткрытьВМодальномОкне()
если Клиент != Неопределено
Объект.Клиент = Клиент
;
;
метод СоздатьКонтактноеЛицоПриНажатии(Источник: Кнопка, Событие: СобытиеПриНажатии)
знч КонтактноеЛицо = КонтактныеЛицаФормаОбъекта.ОткрытьВМодальномОкне(Клиент = Объект.Клиент)
если КонтактноеЛицо != Неопределено
Объект.КонтактноеЛицо = КонтактноеЛицо
;
;
@Обработчик
метод ПослеЗаписиОбъекта()
если ПоказыватьУведомление
знч УведомлениеОСделке = новый Уведомление(
ЛокализованныеСтроки.НоваяСделка(),
ЛокализованныеСтроки.УведомлениеОСозданииСделки(Объект.Код)
)
УведомлениеОСделке.ОценкаИнформации = ОценкаИнформации.Положительная
УведомлениеОСделке.Показать()
;
ЗаписанаСделка.Оповестить(КлючОбъекта)
;
@Обработчик
метод ПослеУдаленияОбъекта(ПараметрыУдаления: Объект)
ЗаписанаСделка.Оповестить()
;
метод ПолучитьОписаниеСтрокиСпискаМероприятий(ДанныеСтроки: СтрокаДинамическогоСписка): Строка
возврат ПолучитьЗаголовокДатыМероприятия(ДанныеСтроки.Данные["ДатаНачала"] как Момент, ДанныеСтроки.Данные["ДатаЗавершения"] как Момент)
;
метод ПолучитьИконкуМероприятия(ДанныеСтроки: СтрокаДинамическогоСписка): ДвоичныйОбъект.Ссылка
знч Мероприятие = ДанныеСтроки.Данные["Ссылка"]
если Мероприятие это Задачи.Ссылка
возврат Ресурс{ЗадачаВРамке.svg}.Ссылка
иначе
возврат Ресурс{СобытиеВРамке.svg}.Ссылка
;
;
метод СоздатьЗадачуПриНажатии(Команда: ОбычнаяКоманда)
ЗадачиФормаОбъекта.ОткрытьВМодальномОкне(Сделка = КлючОбъекта)
;
метод СоздатьЗадачуПриНажатии(Источник: Кнопка, Событие: СобытиеПриНажатии)
ЗадачиФормаОбъекта.ОткрытьВМодальномОкне(Сделка = КлючОбъекта)
;
метод СоздатьСобытиеПриНажатии(Команда: ОбычнаяКоманда)
СобытияФормаОбъекта.ОткрытьВМодальномОкне(Сделка = КлючОбъекта)
;
метод СоздатьСобытиеПриНажатии(Источник: Кнопка, Событие: СобытиеПриНажатии)
СобытияФормаОбъекта.ОткрытьВМодальномОкне(Сделка = КлючОбъекта)
;
метод ПолучитьИконкуВыбраннойСтадии(): ДвоичныйОбъект.Ссылка?
знч Стадия = Объект.Стадия
если Стадия != Неопределено
возврат ПолучитьИконкуСтадии(Стадия)
;
возврат Неопределено
;
метод ПриВыбореФайлаДоговора(Источник: ВыборФайлов, Событие: СобытиеПриИзменении<ЧитаемыйМассив<ВыбранныйФайл>>)
знч Файл = Событие.НовоеЗначение[0]
Объект.ФайлДоговора = ЗагрузкаФайлов.НачатьЗагрузку(Файл).ПолучитьРезультат()
Объект.ИмяФайлаДоговора = Файл.Имя
;
метод УдалитьФайлДоговораПриНажатии(Источник: Картинка, Событие: СобытиеПриНажатии)
Объект.ФайлДоговора = Неопределено
Объект.ИмяФайлаДоговора = ""
;
метод ИмяФайлаДоговораПриНажатии(Источник: Надпись, Событие: СобытиеПриНажатии)
ВыгрузкаФайлов.НачатьВыгрузку(Объект.ФайлДоговора, Объект.ИмяФайлаДоговора)
;
метод ПолучитьЗаголовокДатыМероприятия(ДатаНачала: Момент, ДатаЗавершения: Момент): Строка
знч ДатаВремяНачала = ДатаНачала.ВДатаВремя(ЧасовойПояс.Текущий())
знч ДатаВремяЗавершения = ДатаЗавершения.ВДатаВремя(ЧасовойПояс.Текущий())
// Даты начала и завершения установлены
если ДатаНачала != Момент{} и ДатаЗавершения != Момент{}
// Мероприятие начинается и завершается в один день
если ДатаВремяНачала.Дата == ДатаВремяЗавершения.Дата
возврат "%{ПредставлениеДаты(ДатаВремяНачала)} ${ДатаВремяНачала|ЧЧ:мм} ${ДатаВремяЗавершения|ЧЧ:мм}"
// Мероприятие начинается и завершается в разные дни
иначе
возврат "%{ПредставлениеДатыИВремени(ДатаВремяНачала)} %{ПредставлениеДатыИВремени(ДатаВремяЗавершения)}"
;
// Установлена только дата начала
иначе если ДатаНачала != Момент{}
возврат "%{ПредставлениеДатыИВремени(ДатаВремяНачала)}"
// Установлена только дата завершения
иначе если ДатаЗавершения != Момент{}
возврат "%{ПредставлениеДатыИВремени(ДатаВремяЗавершения)}"
;
возврат "Дата не установлена"
;
метод ПредставлениеДаты(ДатаМероприятия: ДатаВремя): Строка
знч Сейчас = ДатаВремя.Сейчас()
если ДатаМероприятия.Дата == Сейчас.Дата
возврат ЛокализованныеСтроки.Сегодня()
иначе
если ДатаМероприятия.Год == Сейчас.Год
возврат "${ДатаМероприятия|дд МММ}"
иначе
возврат "${ДатаМероприятия|дд МММ гггг}"
;
;
;
метод ПредставлениеДатыИВремени(ДатаМероприятия: ДатаВремя): Строка
знч Сейчас = ДатаВремя.Сейчас()
если ДатаМероприятия.Дата == Сейчас.Дата
возврат "%{ЛокализованныеСтроки.Сегодня()} ${ДатаМероприятия|ЧЧ:мм}"
иначе
если ДатаМероприятия.Год == Сейчас.Год
возврат "${ДатаМероприятия|дд МММ ЧЧ:мм}"
иначе
возврат "${ДатаМероприятия|дд МММ гггг ЧЧ:мм}"
;
;
;
метод ЗавершитьЗадачуПриНажатии(Команда: КомандаСПараметром<Сущность.Ключ>, Параметр: Сущность.Ключ)
знч Задача = Параметр как Задачи.Ссылка
ЗавершитьЗадачу(Задача)
ОбновитьСписокЗадач()
знч Уведомление = новый Уведомление(ЛокализованныеСтроки.ЗавершениеМероприятия(), ЛокализованныеСтроки.МероприятиеЗавершено(Задача))
Уведомление.ОценкаИнформации = ОценкаИнформации.Положительная
Уведомление.Показать()
;
метод УдалитьЗадачуПриНажатии(Команда: КомандаСПараметром<Сущность.Ключ>, Параметр: Сущность.Ключ)
знч Задача = Параметр как Задачи.Ссылка
знч Ответ = Диалог.Вопрос(
ЛокализованныеСтроки.ПодтвеждениеУдаленияЗадачи(Задача),
[КнопкаДиалога.Ок, КнопкаДиалога.Отмена],
ЛокализованныеСтроки.УдалениеМероприятия()
)
если Ответ == КнопкаДиалога.Ок
УдалитьЗадачу(Параметр как Задачи.Ссылка)
ОбновитьСписокЗадач()
;
;
метод УдалитьСобытиеПриНажатии(Команда: КомандаСПараметром<Сущность.Ключ>, Параметр: Сущность.Ключ)
знч Событие = Параметр как События.Ссылка
знч Ответ = Диалог.Вопрос(
ЛокализованныеСтроки.ПодтвеждениеУдаленияСобытия(Событие),
[КнопкаДиалога.Ок, КнопкаДиалога.Отмена],
ЛокализованныеСтроки.УдалениеМероприятия()
)
если Ответ == КнопкаДиалога.Ок
УдалитьСобытие(Параметр как События.Ссылка)
ОбновитьСписокСобытий()
;
;
метод ОбновитьСписокЗадач()
ЕстьЗадачиПоСделке = Сделки.ЕстьЗадачиПоСделке(Объект.Ссылка)
если ЕстьЗадачиПоСделке
Компоненты.СписокЗадач.Обновить()
;
;
метод ОбновитьСписокСобытий()
ЕстьСобытияПоСделке = Сделки.ЕстьСобытияПоСделке(Объект.Ссылка)
если ЕстьСобытияПоСделке
Компоненты.СписокСобытий.Обновить()
;
;
@НаСервере @ДоступноСКлиента
статический метод ПолучитьИконкуСтадии(Стадия: СтадииСделок.Ссылка): ДвоичныйОбъект.Ссылка?
возврат СтадииСделок.ПолучитьИконкуСтадии(Стадия)
;
@НаСервере @ДоступноСКлиента
статический метод ЗавершитьЗадачу(Задача: Задачи.Ссылка)
исп Транзакции.Начать()
знч ЗадачаОбъект = Задача.ЗагрузитьОбъект(Истина)
ЗадачаОбъект.Завершить()
;
@НаСервере @ДоступноСКлиента
статический метод УдалитьЗадачу(Задача: Задачи.Ссылка)
исп Транзакции.Начать()
знч ЗадачаОбъект = Задача.ЗагрузитьОбъект(Истина)
ЗадачаОбъект.Удалить()
;
@НаСервере @ДоступноСКлиента
статический метод УдалитьСобытие(Событие: События.Ссылка)
исп Транзакции.Начать()
знч СобытиеОбъект = Событие.ЗагрузитьОбъект(Истина)
СобытиеОбъект.Удалить()
;
@НаСервере @ДоступноСКлиента
статический метод УстановитьОтметкуОПройденномОбучении()
попытка
знч Настройка = СтандартноеХранилищеНастроек.НайтиПоКлючам(
КлючОбъекта = КЛЮЧ_ОБЪЕКТА_НАСТРОЕК,
КлючНастройки = КЛЮЧ_НАСТРОЙКИ_ПРОЙДЕННОГО_ОБУЧЕНИЯ
)
если Настройка == Неопределено
знч НоваяНастройка = новый СтандартноеХранилищеНастроек.Объект(
КлючОбъекта = КЛЮЧ_ОБЪЕКТА_НАСТРОЕК,
КлючНастройки = КЛЮЧ_НАСТРОЙКИ_ПРОЙДЕННОГО_ОБУЧЕНИЯ,
Значение = "Истина"
)
НоваяНастройка.Записать()
;
поймать Исключение: ИсключениеПоискаСущности
новый ОшибкаНастроекПользователя(
КлючОбъекта = КЛЮЧ_ОБЪЕКТА_НАСТРОЕК,
КлючНастройки = КЛЮЧ_НАСТРОЙКИ_ПРОЙДЕННОГО_ОБУЧЕНИЯ,
Важность = ВажностьСобытияЖурналаСобытий.Высокая,
Информация = Исключение.Информация()
).Записать()
;
;
@НаСервере @ДоступноСКлиента
статический метод ОбучениеСозданиюСделкиПройдено(): Булево
попытка
знч Настройка = СтандартноеХранилищеНастроек.НайтиПоКлючам(
КлючОбъекта = КЛЮЧ_ОБЪЕКТА_НАСТРОЕК,
КлючНастройки = КЛЮЧ_НАСТРОЙКИ_ПРОЙДЕННОГО_ОБУЧЕНИЯ
)
возврат Настройка != Неопределено
поймать Исключение: ИсключениеПоискаСущности
новый ОшибкаНастроекПользователя(
КлючОбъекта = КЛЮЧ_ОБЪЕКТА_НАСТРОЕК,
КлючНастройки = КЛЮЧ_НАСТРОЙКИ_ПРОЙДЕННОГО_ОБУЧЕНИЯ,
Важность = ВажностьСобытияЖурналаСобытий.Высокая,
Информация = Исключение.Информация()
).Записать()
;
возврат Истина
;