#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Функция ПолучитьБлокируемыеРеквизитыОбъекта() Экспорт
Результат = Новый Массив;
Результат.Добавить("Владелец");
Результат.Добавить("Код");
Результат.Добавить("Наименование");
Результат.Добавить("Штрихкод");
Результат.Добавить("МагнитныйКод");
Возврат Результат;
КонецФункции
Функция ПараметрыВзаиморасчеты(ДанныеЗаполнения = Неопределено) Экспорт
МассивПараметров = Новый Массив();
#Область ОсновнаяСтруктура
СтруктураПараметров = ВзаиморасчетыСервер.ПараметрыМеханизма();
СтруктураПараметров.ТипРасчетов = Перечисления.ТипыРасчетовСПартнерами.РасчетыСКлиентом;
СтруктураПараметров.ИзменяетПланОплаты = Истина;
СтруктураПараметров.Номер = "";
СтруктураПараметров.Дата = "";
СтруктураПараметров.Организация = "Объект.Владелец.Организация";
СтруктураПараметров.ОбъектРасчетов = "Объект.ОбъектРасчетов";
СтруктураПараметров.ВалютаДокумента = "Объект.Владелец.Валюта";
СтруктураПараметров.СуммаДокумента = "Объект.Владелец.Номинал";
СтруктураПараметров.Контрагент = "Объект.Контрагент";
СтруктураПараметров.Партнер = "Объект.Партнер";
СтруктураПараметров.Договор = "";
СтруктураПараметров.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоНакладным;
СтруктураПараметров.Соглашение = "";
СтруктураПараметров.БанковскийСчетОрганизации = "";
СтруктураПараметров.Касса = "";
СтруктураПараметров.ФормаОплаты = "";
СтруктураПараметров.ОплатаВВалюте = "";
СтруктураПараметров.БанковскийСчетКонтрагента = "";
СтруктураПараметров.ИдентификаторПлатежа = "Объект.ИдентификаторПлатежа";
СтруктураПараметров.НалогообложениеНДС = "Объект.НалогообложениеНДС";
СтруктураПараметров.ГруппаФинансовогоУчета = "Объект.Владелец.ГруппаФинансовогоУчета";
СтруктураПараметров.ЭтоСправочник = Истина;
МассивПараметров.Добавить(СтруктураПараметров);
#КонецОбласти
Возврат МассивПараметров;
КонецФункции
Функция УчетПодарочныхСертификатов2_5(ПодарочныйСертификат) Экспорт
УчетПодарочныхСертификатов2_5 = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПодарочныйСертификат.Владелец, "УчетПодарочныхСертификатов2_5");
Возврат УчетПодарочныхСертификатов2_5;
КонецФункции
Функция ПодарочныеСертификатыПоОбъектамРасчетов(ОбъектыРасчетов) Экспорт
Результат = Новый Соответствие;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПодарочныеСертификаты.Ссылка КАК ПодарочныйСертификат,
| ОбъектыРасчетов.Ссылка КАК ОбъектРасчетов
|ИЗ
| Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПодарочныеСертификаты КАК ПодарочныеСертификаты
| ПО ПодарочныеСертификаты.Ссылка = ОбъектыРасчетов.Объект
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыПодарочныхСертификатов КАК ВидыПодарочныхСертификатов
| ПО ПодарочныеСертификаты.Владелец = ВидыПодарочныхСертификатов.Ссылка
|ГДЕ
| ВидыПодарочныхСертификатов.УчетПодарочныхСертификатов2_5 = ИСТИНА
| И ОбъектыРасчетов.Ссылка В (&МассивОбъектовРасчетов)";
Запрос.УстановитьПараметр("МассивОбъектовРасчетов", ОбъектыРасчетов);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Результат.Вставить(Выборка.ОбъектРасчетов, Выборка.ПодарочныйСертификат);
КонецЦикла;
Возврат Результат;
КонецФункции
Функция ВыборкаДанныхПоПодарочнымСертификатамДляОбработки(ОтборПоПодарочномуСертификату, Объект) Экспорт
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ПодарочныеСертификаты.Ссылка КАК ПодарочныйСертификат,
| ПодарочныеСертификаты.Владелец.Номинал КАК Номинал,
| ПодарочныеСертификаты.Владелец.Валюта КАК ВалютаНоминала,
| ЕСТЬNULL(АктивацияПодарочныхСертификатов.Активность, ЛОЖЬ) КАК СтатусАктивации,
| ЕСТЬNULL(АктивацияПодарочныхСертификатов.Организация, ВЫБОР
| КОГДА ПодарочныеСертификаты.Владелец.УчетПодарочныхСертификатов2_5
| ТОГДА ПодарочныеСертификаты.Владелец.Организация
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
| КОНЕЦ) КАК Организация,
| ПодарочныеСертификаты.Владелец КАК ВидПодарочногоСертификата,
| ПодарочныеСертификаты.Владелец.УчетПодарочныхСертификатов2_5 КАК УчетПодарочныхСертификатов2_5,
| ПодарочныеСертификаты.Владелец.Номинал
| * ВЫБОР
| КОГДА &Валюта <> ПодарочныеСертификаты.Владелец.Валюта
| ТОГДА ВЫБОР
| КОГДА ЕСТЬNULL(КурсыВалютыСертификаты.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалютыСертификаты.КурсЧислитель, 0) > 0
| И ЕСТЬNULL(КурсыВалюты.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалюты.КурсЧислитель, 0) > 0
| ТОГДА
| (КурсыВалютыСертификаты.КурсЧислитель * КурсыВалюты.КурсЗнаменатель)
| / (КурсыВалюты.КурсЧислитель * КурсыВалютыСертификаты.КурсЗнаменатель)
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 1
| КОНЕЦ КАК Сумма,
| ЕСТЬNULL(АктивацияПодарочныхСертификатов.ДатаНачалаДействия, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаНачалаДействия,
| ЕСТЬNULL(АктивацияПодарочныхСертификатов.ДатаОкончанияДействия, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаОкончанияДействия,
| ЕСТЬNULL(АктивацияПодарочныхСертификатов.Регистратор, НЕОПРЕДЕЛЕНО) ДокументРеализации
|ИЗ
| Справочник.ПодарочныеСертификаты КАК ПодарочныеСертификаты
|
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.ОтносительныеКурсыВалют.СрезПоследних(&ГраницаДатаКонецДня, БазоваяВалюта = &БазоваяВалюта) КАК КурсыВалютыСертификаты
|ПО
| ПодарочныеСертификаты.Владелец.Валюта = КурсыВалютыСертификаты.Валюта
| И ПодарочныеСертификаты.Ссылка В (&Ссылка)
|
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОтносительныеКурсыВалют.СрезПоследних(&ГраницаДатаКонецДня, Валюта = &Валюта И БазоваяВалюта = &БазоваяВалюта) КАК КурсыВалюты
| ПО ИСТИНА
|
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АктивацияПодарочныхСертификатов КАК АктивацияПодарочныхСертификатов
| ПО АктивацияПодарочныхСертификатов.ПодарочныйСертификат = ПодарочныеСертификаты.Ссылка
|
|ГДЕ
| ПодарочныеСертификаты.Ссылка В (&Ссылка)
|");
Запрос.УстановитьПараметр("Ссылка", ОтборПоПодарочномуСертификату);
Запрос.УстановитьПараметр("Валюта", Объект.Валюта);
ТекущаяДатаСеанса = ТекущаяДатаСеанса();
Если ЗначениеЗаполнено(Объект.Дата) Тогда
ТекущаяДатаСеанса = Объект.Дата;
КонецЕсли;
Запрос.УстановитьПараметр("ГраницаДатаКонецДня", Новый Граница(КонецДня(ТекущаяДатаСеанса),ВидГраницы.Включая));
Запрос.УстановитьПараметр("БазоваяВалюта", ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация));
УстановитьПривилегированныйРежим(Истина);
Выборка = Запрос.Выполнить().Выбрать();
УстановитьПривилегированныйРежим(Ложь);
Возврат Выборка;
КонецФункции
Процедура ЗаполнитьРеквизитыПодарочногоСертификата(ПодарочныйСертификат, ДанныеДляЗаполнения) Экспорт
Если Не ЗначениеЗаполнено(ПодарочныйСертификат) Или ДанныеДляЗаполнения.Количество() = 0 Тогда
Возврат;
КонецЕсли;
СправочникОбъект = ПодарочныйСертификат.ПолучитьОбъект();
Для Каждого КлючЗначение Из ДанныеДляЗаполнения Цикл
Если Не СправочникОбъект[КлючЗначение.Ключ] = КлючЗначение.Значение Тогда
СправочникОбъект[КлючЗначение.Ключ] = КлючЗначение.Значение;
КонецЕсли;
КонецЦикла;
Если СправочникОбъект.Модифицированность() Тогда
УстановитьПривилегированныйРежим(Истина);
СправочникОбъект.Записать();
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
КонецПроцедуры
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
КомандаБизнесПроцессыЗадание = БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
НоваяАрхитектураВзаиморасчетов = ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов");
Если НоваяАрхитектураВзаиморасчетов Тогда
КомандаБизнесПроцессыЗадание.Порядок = 99;
РазрешенныеСтатусыДляВозврата = Новый Массив;
РазрешенныеСтатусыДляВозврата.Добавить(Перечисления.СтатусыПодарочныхСертификатов.Активирован);
НоваяКоманда = Документы.ЗаявкаНаРасходованиеДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если НоваяКоманда <> Неопределено Тогда
НоваяКоманда.Обработчик = "ПодарочныеСертификатыКлиент.ВыбратьКонтрагентаДляВводаДокументаОплатыНаОснованииПодарочногоСертификата";
НоваяКоманда.ИмяФормы = "Документ.ЗаявкаНаРасходованиеДенежныхСредств.Форма.ФормаДокумента";
НоваяКоманда.ВидимостьВФормах =
"ФормаСписка,ФормаЭлемента";
НоваяКоманда.МножественныйВыбор = Ложь;
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(НоваяКоманда,
"УчетПодарочныхСертификатов2_5",
Истина,
ВидСравненияКомпоновкиДанных.Равно);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(НоваяКоманда,
"Статус",
РазрешенныеСтатусыДляВозврата,
ВидСравненияКомпоновкиДанных.ВСписке);
КонецЕсли;
НоваяКоманда = Документы.РасходныйКассовыйОрдер.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если НоваяКоманда <> Неопределено Тогда
НоваяКоманда.Обработчик = "ПодарочныеСертификатыКлиент.ВыбратьКонтрагентаДляВводаДокументаОплатыНаОснованииПодарочногоСертификата";
НоваяКоманда.ИмяФормы = "Документ.РасходныйКассовыйОрдер.Форма.ФормаДокумента";
НоваяКоманда.ВидимостьВФормах =
"ФормаСписка,ФормаЭлемента";
НоваяКоманда.МножественныйВыбор = Ложь;
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(НоваяКоманда,
"УчетПодарочныхСертификатов2_5",
Истина,
ВидСравненияКомпоновкиДанных.Равно);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(НоваяКоманда,
"Статус",
РазрешенныеСтатусыДляВозврата,
ВидСравненияКомпоновкиДанных.ВСписке);
КонецЕсли;
НоваяКоманда = Документы.СписаниеБезналичныхДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если НоваяКоманда <> Неопределено Тогда
НоваяКоманда.Обработчик = "ПодарочныеСертификатыКлиент.ВыбратьКонтрагентаДляВводаДокументаОплатыНаОснованииПодарочногоСертификата";
НоваяКоманда.ИмяФормы = "Документ.СписаниеБезналичныхДенежныхСредств.Форма.ФормаДокумента";
НоваяКоманда.ВидимостьВФормах =
"ФормаСписка,ФормаЭлемента";
НоваяКоманда.МножественныйВыбор = Ложь;
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(НоваяКоманда,
"УчетПодарочныхСертификатов2_5",
Истина,
ВидСравненияКомпоновкиДанных.Равно);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(НоваяКоманда,
"Статус",
РазрешенныеСтатусыДляВозврата,
ВидСравненияКомпоновкиДанных.ВСписке);
КонецЕсли;
НоваяКоманда = Документы.ПриходныйКассовыйОрдер.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если НоваяКоманда <> Неопределено Тогда
НоваяКоманда.Обработчик = "ПодарочныеСертификатыКлиент.ВыбратьКонтрагентаДляВводаДокументаОплатыНаОснованииПодарочногоСертификата";
НоваяКоманда.ИмяФормы = "Документ.ПриходныйКассовыйОрдер.Форма.ФормаДокумента";
НоваяКоманда.ВидимостьВФормах =
"ФормаСписка,ФормаЭлемента";
НоваяКоманда.МножественныйВыбор = Ложь;
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(НоваяКоманда,
"УчетПодарочныхСертификатов2_5",
Истина,
ВидСравненияКомпоновкиДанных.Равно);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(НоваяКоманда,
"Статус",
Перечисления.СтатусыПодарочныхСертификатов.НеАктивирован,
ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
НоваяКоманда = Документы.ПоступлениеБезналичныхДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если НоваяКоманда <> Неопределено Тогда
НоваяКоманда.Обработчик = "ПодарочныеСертификатыКлиент.ВыбратьКонтрагентаДляВводаДокументаОплатыНаОснованииПодарочногоСертификата";
НоваяКоманда.ИмяФормы = "Документ.ПоступлениеБезналичныхДенежныхСредств.Форма.ФормаДокумента";
НоваяКоманда.ВидимостьВФормах =
"ФормаСписка,ФормаЭлемента";
НоваяКоманда.МножественныйВыбор = Ложь;
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(НоваяКоманда,
"УчетПодарочныхСертификатов2_5",
Истина,
ВидСравненияКомпоновкиДанных.Равно);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(НоваяКоманда,
"Статус",
Перечисления.СтатусыПодарочныхСертификатов.НеАктивирован,
ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
НоваяКоманда = Документы.ОперацияПоПлатежнойКарте.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если НоваяКоманда <> Неопределено Тогда
НоваяКоманда.Обработчик = "ПодарочныеСертификатыКлиент.ВыбратьКонтрагентаДляВводаДокументаОплатыНаОснованииПодарочногоСертификата";
НоваяКоманда.ИмяФормы = "Документ.ОперацияПоПлатежнойКарте.Форма.ФормаДокумента";
НоваяКоманда.ВидимостьВФормах =
"ФормаСписка,ФормаЭлемента";
НоваяКоманда.МножественныйВыбор = Ложь;
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(НоваяКоманда,
"УчетПодарочныхСертификатов2_5",
Истина,
ВидСравненияКомпоновкиДанных.Равно);
РазрешенныеСтатусыПСДляЭквайринга = Новый Массив;
РазрешенныеСтатусыПСДляЭквайринга.Добавить(Перечисления.СтатусыПодарочныхСертификатов.НеАктивирован);
РазрешенныеСтатусыПСДляЭквайринга.Добавить(Перечисления.СтатусыПодарочныхСертификатов.Активирован);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(НоваяКоманда,
"Статус",
РазрешенныеСтатусыПСДляЭквайринга,
ВидСравненияКомпоновкиДанных.ВСписке);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
Если ПолучитьФункциональнуюОпцию("ИспользоватьПодарочныеСертификаты")
И (ПравоДоступа("Использование", Метаданные.Обработки.ПечатьПодарочныхСертификатов)
ИЛИ Пользователи.ЭтоПолноправныйПользователь()) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьПодарочныхСертификатов";
КомандаПечати.Идентификатор = "ПодарочныйСертификат";
КомандаПечати.Представление = НСтр("ru = 'Подарочный сертификат'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Ложь;
КонецЕсли;
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Возврат;
КонецПроцедуры
Функция ПолучитьДанныеДляПечатнойФормыПодарочныйСертификат(ПараметрыПечати, МассивОбъектов) Экспорт
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ПодарочныеСертификаты.Ссылка КАК Ссылка,
| ПодарочныеСертификаты.Код КАК СерийныйНомер,
| ПодарочныеСертификаты.Штрихкод КАК Штрихкод,
| ПодарочныеСертификаты.МагнитныйКод КАК МагнитныйКод,
| ПодарочныеСертификаты.Владелец.Номинал КАК Номинал,
| ПодарочныеСертификаты.Владелец.Валюта КАК Валюта
|ИЗ
| Справочник.ПодарочныеСертификаты КАК ПодарочныеСертификаты
|ГДЕ
| ПодарочныеСертификаты.Ссылка В (&МассивДокументов)
|");
Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов);
РезультатЗапроса = Запрос.Выполнить();
СтруктураДанныхДляПечати = Новый Структура("РезультатЗапроса, ЗаголовокДокумента",
РезультатЗапроса, НСтр("ru = 'Подарочный сертификат'"));
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат СтруктураДанныхДляПечати;
КонецФункции
#КонецОбласти
#Область Отчеты
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КомандаОтчет = ВзаиморасчетыСервер.КарточкаРасчетовСКлиентом_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаЭлемента,ФормаСписка";
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ОбработчикиСобытий
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#КонецОбласти
#Область ОбновлениеИнформационнойБазы
#КонецОбласти
#КонецЕсли