&НаКлиенте
Процедура СделатьФото(Команда)
#Если МобильноеПриложениеКлиент Тогда
Если СредстваМультимедиа.ПоддерживаетсяФотоснимок() Тогда
ДанныеМультимедиа = СредстваМультимедиа.СделатьФотоснимок();
Если ДанныеМультимедиа <> Неопределено Тогда
ТекущееФото = ДанныеМультимедиа.ПолучитьДвоичныеДанные();
Фото = ПоместитьВоВременноеХранилище(ТекущееФото, Новый УникальныйИдентификатор);
УстановитьКартинку();
КонецЕсли;
Иначе
Сообщить("Съемка фото не поддерживается");
КонецЕсли;
#КонецЕсли
КонецПроцедуры
&НаКлиенте Процедура ДобавитьКартинку(Команда) НачатьПомещениеФайла(Новый ОписаниеОповещения("ЗавершениеПомещенияФайла",ЭтотОбъект)); КонецПроцедуры
Процедура ЗавершениеПомещенияФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
Если Результат Тогда
Фото = Адрес;
УстановитьКартинку();
КонецЕсли;
КонецПроцедуры
&НаСервере Процедура УстановитьКартинку()
НовыйФайлКартинки = Справочники.Фото.СоздатьЭлемент();
НовыйФайлКартинки.Файл = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(Фото));
НовыйФайлКартинки.Записать();
Фото = ПоместитьВоВременноеХранилище(НовыйФайлКартинки.Файл.Получить());
Объект.Фото = НовыйФайлКартинки.Ссылка;
КонецПроцедуры
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Фото = ПолучитьНавигационнуюСсылку(Объект.Фото, "Файл");
Элементы.ВключитьНапоминание.Видимость = Не Объект.Активно;
Элементы.ВыключитьНапоминание.Видимость = Объект.Активно;
КонецПроцедуры
&НаКлиенте Процедура ВключитьНапоминание(Команда) Если ЗначениеЗаполнено(Объект.ДатаРождения) Тогда Парам = ЗаполнитьПараметрыНапоминания(); #Если МобильноеПриложениеКлиент Тогда Напоминание = Новый ДоставляемоеУведомление; Напоминание.Наклейка = Парам.ЛетИсполнилось; Напоминание.Заголовок = "ДР у товарища "+Парам.ЛетИсполнилось+" лет!!!"; Напоминание.ЗвуковоеОповещение = ЗвуковоеОповещение.ПоУмолчанию; Напоминание.Текст = "Сегодня ДР у "+Объект.ФИО+" ему теперь "+Парам.ЛетИсполнилось+" лет!!!"; Напоминание.ДатаПоявленияУниверсальноеВремя = Парам.ДатаУведомления; ДоставляемыеУведомления.ДобавитьЛокальноеУведомление(Напоминание); #КонецЕсли Сообщить("Будет сделано!" + Символы.ПС + "Напомню про ДР "+Парам.ДатаУведомления); Элементы.ВключитьНапоминание.Видимость = Ложь; Элементы.ВыключитьНапоминание.Видимость = Истина; Объект.Активно = Истина; Иначе Сообщить("Заполните дату рождения!"); КонецЕсли; КонецПроцедуры
&НаКлиенте Процедура ВыключитьНапоминание(Команда) Элементы.ВключитьНапоминание.Видимость = Истина; Элементы.ВыключитьНапоминание.Видимость = Ложь; Объект.Активно = Ложь; #Если МобильноеПриложениеКлиент Тогда ДоставляемыеУведомления.ОтменитьЛокальныеУведомления(); #КонецЕсли Сообщить("Как скажете!"); КонецПроцедуры
&НаСервере Функция ЗаполнитьПараметрыНапоминания()
Если ДеньГода(ТекущаяДата())<ДеньГода(Объект.ДатаРождения) Тогда //Было ли в этом году уже?
ДатаУведомления = НачалоГода(ТекущаяДата())+ДеньГода(Объект.ДатаРождения-1)*24*60*60; //НачалоГода возвращает 1 янв тек года, ДеньГода возвращает число(кол-во дней с 1 янв)
Иначе
ДатаУведомления = НачалоГода(ДобавитьМесяц(ТекущаяДата(),12))+ДеньГода(Объект.ДатаРождения-1)*24*60*60;
КонецЕсли;
ЛетИсполнилось = Год(ДатаУведомления)-Год(Объект.ДатаРождения);
Если Константы.РежимТестировщика.Получить() Тогда //чтобы не ждать уведомление, +10сек к тек времени
ДатаУведомления = ТекущаяДата()+10;
КонецЕсли;
Парам = Новый Структура;
Парам.Вставить("ДатаУведомления", ДатаУведомления);
Парам.Вставить("ЛетИсполнилось", ЛетИсполнилось);
Возврат Парам;
КонецФункции
&НаКлиенте Процедура НаКарте(Команда) #Если МобильноеПриложениеКлиент Тогда Если ЗначениеЗаполнено(Объект.Адрес) Тогда АдресДляПоказа = Новый ДанныеАдреса(Новый Структура("Представление", Объект.Адрес)); ДанныеДляПоказа = ПолучитьМестоположениеПоАдресу(АдресДляПоказа);
Если ДанныеДляПоказа = Неопределено Тогда
Сообщить("Ошибка геокодирования!");
Иначе
ПоказатьНаКарте(ДанныеДляПоказа);
КонецЕсли;
Иначе
Сообщить("Заполните адрес");
КонецЕсли;
#КонецЕсли
КонецПроцедуры
&НаКлиенте Процедура ВоспроизвестиАудио(Команда) #Если МобильноеПриложениеКлиент Тогда Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Если Диалог.Выбрать() Тогда Данные = Диалог.ПолноеИмяФайла; СредстваМультимедиа.ВоспроизвестиАудио(Данные); Файл = Новый Файл(Диалог.ПолноеИмяФайла); Сообщить("" + Файл.ПолучитьПредставлениеФайлаБиблиотекиМобильногоУстройства() + " длительностью " + СредстваМультимедиа.ПолучитьПродолжительностьАудио(Данные) + " секунд"); КонецЕсли; #КонецЕсли
КонецПроцедуры &НаКлиенте Процедура Остановить(Команда) #Если МобильноеПриложениеКлиент Тогда СредстваМультимедиа.ОстановитьВоспроизведениеАудио(); #КонецЕсли КонецПроцедуры
&НаКлиенте Процедура ГдеЯ(Команда)
Координаты = ОпределитьТекущиеГеокоординаты();
#Если МобильноеПриложениеКлиент Тогда
ПоказатьНаКарте(Координаты);
#КонецЕсли
КонецПроцедуры
&НаКлиенте Функция ОпределитьТекущиеГеокоординаты()
#Если МобильноеПриложениеКлиент Тогда
ТекущийПровайдер = "gps";
Попытка
ДМ = СредстваГеопозиционирования.ПолучитьПоследнееМестоположение(ТекущийПровайдер);
Исключение
ДМ = Неопределено;
КонецПопытки;
Если ДМ = Неопределено Тогда
ТекущийПровайдер = "network";
Попытка
ДМ = СредстваГеопозиционирования.ПолучитьПоследнееМестоположение(ТекущийПровайдер);
Исключение
ДМ = Неопределено;
КонецПопытки;
КонецЕсли;
Если ДМ = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Если ТекущаяДата() - МестноеВремя(ДМ.Дата) > 300 Тогда
СредстваГеопозиционирования.ОбновитьМестоположение(ТекущийПровайдер, 5);
ДМ = СредстваГеопозиционирования.ПолучитьПоследнееМестоположение(ТекущийПровайдер);
КонецЕсли;
ДА = ПолучитьАдресПоМестоположению(ДМ.Координаты);
Если ДА = Неопределено Тогда
ТекущееМестоположение = "Lat: " + ДМ.Координаты.Широта + ", Lon: " + ДМ.Координаты.Долгота;
Иначе
ТекущееМестоположение = СтрЗаменить(ДА.Представление, Символы.ПС, ", ");
КонецЕсли;
ТекущееМестоположение = ТекущееМестоположение + "Date: " + МестноеВремя(ДМ.Дата) + ", Provider: " + ТекущийПровайдер;
Сообщить(ТекущееМестоположение);
Возврат ДМ.Координаты;
#Иначе
Возврат Неопределено;
#КонецЕсли
КонецФункции