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