#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
КомандаСоздания = Документы.АктВыполненныхРабот.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если КомандаСоздания <> Неопределено Тогда
КомандаСоздания.ВидимостьВФормах = "ФормаСписка,ФормаСпискаИндивидуальныхСоглашений,ФормаЭлемента";
КомандаСоздания.РежимЗаписи = "";
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСоздания, "Типовое", Ложь, ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
КомандаСоздания = Справочники.ДоговорыКонтрагентов.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если КомандаСоздания <> Неопределено Тогда
КомандаСоздания.ВидимостьВФормах = "ФормаСписка,ФормаСпискаИндивидуальныхСоглашений,ФормаЭлемента";
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСоздания, "Типовое", Ложь, ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КомандаСоздания = Документы.ЗаказКлиента.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если КомандаСоздания <> Неопределено Тогда
КомандаСоздания.ВидимостьВФормах = "ФормаСписка,ФормаСпискаИндивидуальныхСоглашений,ФормаЭлемента";
КомандаСоздания.РежимЗаписи = "";
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСоздания, "Типовое", Ложь, ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
КомандаСоздания = Документы.ЗаявкаНаВозвратТоваровОтКлиента.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если КомандаСоздания <> Неопределено Тогда
КомандаСоздания.ВидимостьВФормах = "ФормаСписка,ФормаСпискаИндивидуальныхСоглашений,ФормаЭлемента";
КомандаСоздания.РежимЗаписи = "";
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСоздания, "Типовое", Ложь, ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
КомандаСоздания = Документы.ПередачаТоваровХранителю.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если КомандаСоздания <> Неопределено Тогда
КомандаСоздания.ВидимостьВФормах = "ФормаСписка,ФормаСпискаИндивидуальныхСоглашений,ФормаЭлемента";
КомандаСоздания.РежимЗаписи = "";
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСоздания, "Типовое", Ложь, ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
КомандаСоздания = Документы.ОтгрузкаТоваровКлиенту.ДобавитьКомандуСоздатьНаОсновании(
КомандыСозданияНаОсновании);
Если КомандаСоздания <> Неопределено Тогда
КомандаСоздания.ВидимостьВФормах = "ФормаСписка,ФормаСпискаИндивидуальныхСоглашений";
КомандаСоздания.РежимЗаписи = "";
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСоздания,
"Типовое",
Ложь,
ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
КомандаСоздания = Документы.РеализацияТоваровУслуг.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если КомандаСоздания <> Неопределено Тогда
КомандаСоздания.ВидимостьВФормах = "ФормаСписка,ФормаСпискаИндивидуальныхСоглашений,ФормаЭлемента";
КомандаСоздания.РежимЗаписи = "";
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСоздания, "Типовое", Ложь, ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
КомандаСоздания = Документы.РеализацияУслугПрочихАктивов.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если КомандаСоздания <> Неопределено Тогда
КомандаСоздания.ВидимостьВФормах = "ФормаСписка,ФормаСпискаИндивидуальныхСоглашений,ФормаЭлемента";
КомандаСоздания.РежимЗаписи = "";
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСоздания, "Типовое", Ложь, ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
КомандаСоздания = БизнесПроцессы.СогласованиеПродажи.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если КомандаСоздания <> Неопределено Тогда
КомандаСоздания.ФункциональныеОпции = "ИспользоватьВнутреннееСогласованиеСоглашенийСКлиентами";
КомандаСоздания.РежимЗаписи = "";
КомандаСоздания.Представление = НСтр("ru = 'Согласование соглашения с клиентом'");
КонецЕсли;
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Справочники.СоглашенияСКлиентами) Тогда
МетаданныеСоглашенияСКлиентами = Метаданные.Справочники.СоглашенияСКлиентами;
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = МетаданныеСоглашенияСКлиентами.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(МетаданныеСоглашенияСКлиентами);
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьСоглашенияСКлиентами";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(ХозяйственнаяОперация, МассивВсехРеквизитов, МассивРеквизитовОперации) Экспорт
МассивВсехРеквизитов = Новый Массив;
МассивВсехРеквизитов.Добавить("СпособРасчетаВознаграждения");
МассивВсехРеквизитов.Добавить("ПроцентВознаграждения");
МассивВсехРеквизитов.Добавить("УдержатьВознаграждение");
МассивВсехРеквизитов.Добавить("КомиссионерВедетУчетПоРНПТ");
МассивВсехРеквизитов.Добавить("ПроцентРучнойСкидки");
МассивВсехРеквизитов.Добавить("ПроцентРучнойНаценки");
МассивВсехРеквизитов.Добавить("ОграничиватьРучныеСкидки");
МассивВсехРеквизитов.Добавить("ТребуетсяЗалогЗаТару");
МассивРеквизитовОперации = Новый Массив;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
МассивРеквизитовОперации.Добавить("СпособРасчетаВознаграждения");
МассивРеквизитовОперации.Добавить("ПроцентВознаграждения");
МассивРеквизитовОперации.Добавить("УдержатьВознаграждение");
МассивРеквизитовОперации.Добавить("КомиссионерВедетУчетПоРНПТ");
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту Тогда
МассивРеквизитовОперации.Добавить("ПроцентРучнойСкидки");
МассивРеквизитовОперации.Добавить("ПроцентРучнойНаценки");
МассивРеквизитовОперации.Добавить("ОграничиватьРучныеСкидки");
МассивРеквизитовОперации.Добавить("ТребуетсяЗалогЗаТару");
КонецЕсли;
КонецПроцедуры
Функция УстановитьСтатус(Знач Соглашения, Знач Статус) Экспорт
МассивСсылок = Новый Массив();
КоличествоОбработанных = 0;
Для Каждого Соглашение Из Соглашения Цикл
Если ТипЗнч(Соглашение) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда
Продолжить;
КонецЕсли;
МассивСсылок.Добавить(Соглашение);
КонецЦикла;
Если МассивСсылок = 0 Тогда
Возврат КоличествоОбработанных;
КонецЕсли;
Запрос = Новый Запрос(
"ВЫБРАТЬ
| СоглашениеСКлиентом.Ссылка КАК Ссылка,
| СоглашениеСКлиентом.ПометкаУдаления КАК ПометкаУдаления,
| ВЫБОР
| КОГДА СоглашениеСКлиентом.Статус = &Статус
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СтатусСовпадает
|ИЗ
| Справочник.СоглашенияСКлиентами КАК СоглашениеСКлиентом
|ГДЕ
| СоглашениеСКлиентом.Ссылка В(&МассивСсылок)");
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
Запрос.УстановитьПараметр("Статус", Статус);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.ПометкаУдаления Тогда
ТекстОшибки = НСтр("ru = 'Соглашение %Соглашение% помечено на удаление. Невозможно изменить статус'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Соглашение%", Выборка.Ссылка);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Выборка.Ссылка);
Продолжить;
КонецЕсли;
Если Выборка.СтатусСовпадает Тогда
ТекстОшибки = НСтр("ru = 'Соглашению %Соглашение% уже присвоен статус ""%Статус%""'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Соглашение%", Выборка.Ссылка);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Статус%", Статус);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Выборка.Ссылка);
Продолжить;
КонецЕсли;
Попытка
ЗаблокироватьДанныеДляРедактирования(Выборка.Ссылка);
Исключение
ТекстОшибки = НСтр("ru = 'Не удалось заблокировать %Соглашение%. %ОписаниеОшибки%'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Соглашение%", Выборка.Ссылка);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%ОписаниеОшибки%", КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Выборка.Ссылка);
КонецПопытки;
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.Статус = Статус;
Если Статус = Перечисления.СтатусыСоглашенийСКлиентами.НеСогласовано Тогда
Если Объект.Согласован Тогда
Объект.Согласован = Ложь;
КонецЕсли;
КонецЕсли;
Если Не Объект.ПроверитьЗаполнение() Тогда
Продолжить;
КонецЕсли;
Попытка
Объект.Записать();
КоличествоОбработанных = КоличествоОбработанных + 1;
Исключение
ТекстОшибки = НСтр("ru = 'Не удалось записать %Соглашение%. %ОписаниеОшибки%'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Соглашение%", Выборка.Ссылка);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%ОписаниеОшибки%", КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Выборка.Ссылка);
КонецПопытки
КонецЦикла;
Возврат КоличествоОбработанных;
КонецФункции
Функция РеквизитыДокумента(ДокументСсылка) Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ВЫБОР КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЭтоПередачаНаКомиссию
|ИЗ
| Справочник.СоглашенияСКлиентами КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &ДокументСсылка
|");
Запрос.УстановитьПараметр("ДокументСсылка", ДокументСсылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ХозяйственнаяОперация = Выборка.ХозяйственнаяОперация;
ЭтоПередачаНаКомиссию = Выборка.ЭтоПередачаНаКомиссию;
Иначе
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПустаяСсылка();
ЭтоПередачаНаКомиссию = Ложь;
КонецЕсли;
СтруктураРеквизитов = Новый Структура("ХозяйственнаяОперация, ЭтоПередачаНаКомиссию",
ХозяйственнаяОперация,
ЭтоПередачаНаКомиссию);
Возврат СтруктураРеквизитов;
КонецФункции
Функция УстановитьИПЛ(Ссылка, ВидЦен) Экспорт
РезультатОперации = Ложь;
СправочникОбъект = Ссылка.получитьОбъект();
Если ЗначениеЗаполнено(СправочникОбъект.ИндивидуальныйВидЦены) Тогда
РезультатОперации = Ложь;
ШаблонТекстаСообщения = НСтр("ru = 'Не произведена установка индивидуального виды цен для соглашения ""%ОбъектНаименование%"" по причине: %Причина%'");
ТекстСообщения = СтрЗаменить(ШаблонТекстаСообщения, "%ОбъектНаименование%", СправочникОбъект.Наименование);
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Причина%", "у соглашения уже установлен индивидуальный вид цен!");
ВызватьИсключение ТекстСообщения;
Иначе
СправочникОбъект.ИндивидуальныйВидЦены = ВидЦен;
УстановитьПривилегированныйРежим(Истина);
СправочникОбъект.Записать();
УстановитьПривилегированныйРежим(Ложь);
РезультатОперации = Истина;
КонецЕсли;
Возврат РезультатОперации;
КонецФункции
Функция УдалитьИПЛ(Ссылка) Экспорт
РезультатОперации = Ложь;
СправочникОбъект = Ссылка.получитьОбъект();
СправочникОбъект.ИндивидуальныйВидЦены = Справочники.ВидыЦен.ПустаяСсылка();
УстановитьПривилегированныйРежим(Истина);
СправочникОбъект.Записать();
УстановитьПривилегированныйРежим(Ложь);
РезультатОперации = Истина;
Возврат РезультатОперации;
КонецФункции
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Менеджер";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"ИспользуютсяДоговорыКонтрагентов,ПорядокРасчетов", Параметры);
КонецПроцедуры
Функция КомиссионерВедетУчетПоРНПТ(Соглашение) Экспорт
Если Не ТипЗнч(Соглашение) = Тип("СправочникСсылка.СоглашенияСКлиентами") Тогда
Возврат Ложь;
КонецЕсли;
КомиссионерВедетУчетПоРНПТ =
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Соглашение, "КомиссионерВедетУчетПоРНПТ", Истина);
Если КомиссионерВедетУчетПоРНПТ = Неопределено Тогда
Возврат Ложь;
Иначе
Возврат КомиссионерВедетУчетПоРНПТ;
КонецЕсли;
КонецФункции
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтение
|ГДЕ
| ЗначениеРазрешено(ВидСоглашенияДляОграниченияЧтения)
| И ЗначениеРазрешено(Партнер, ПустаяСсылка КАК Истина)
| И ЗначениеРазрешено(Склад, ПустаяСсылка КАК Истина)
| И ЗначениеРазрешено(Организация, ПустаяСсылка КАК Истина)
|;
|РазрешитьИзменениеЕслиРазрешеноЧтение
|ГДЕ
| ЗначениеРазрешено(ВидСоглашенияДляОграниченияИзменения)";
Ограничение.ТекстДляВнешнихПользователей =
"ПрисоединитьДополнительныеТаблицы
|ЭтотСписок КАК ЭтотСписок
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВнешниеПользователи КАК ВнешниеПользователиПартнеры
| ПО ВнешниеПользователиПартнеры.ОбъектАвторизации = ЭтотСписок.Партнер
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров
| ПО КонтактныеЛицаПартнеров.Владелец = ЭтотСписок.Партнер
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВнешниеПользователи КАК ВнешниеПользователиКонтактныеЛица
| ПО ВнешниеПользователиКонтактныеЛица.ОбъектАвторизации = КонтактныеЛицаПартнеров.Ссылка
|;
|РазрешитьЧтениеИзменение
|ГДЕ
| ДоступноВнешнимПользователям
| И ЗначениеРазрешено(Склад, ПустаяСсылка КАК Истина)
| И (Типовое
| ИЛИ ЗначениеРазрешено(ВнешниеПользователиПартнеры.Ссылка)
| ИЛИ ЗначениеРазрешено(ВнешниеПользователиКонтактныеЛица.Ссылка))";
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Партнер = Справочники.Партнеры.ПустаяСсылка();
ДатаДокумента = ТекущаяДатаСеанса();
ТолькоТиповые = Ложь;
ТолькоИспользуемыеВРаботеТП = Ложь;
ТолькоОперацииПередачи = Ложь;
СтрокаПоиска = "";
ХозяйственнаяОперация = Неопределено;
КомиссионныеПродажи25 = Неопределено;
ИспользуютсяДоговорыКонтрагентов = Неопределено;
ОтгрузкаБезПереходаПраваСобственности25 = Неопределено;
Если Параметры.Отбор.Свойство("Партнер") Тогда
Партнер = Параметры.Отбор.Партнер;
КонецЕсли;
Если Не ЗначениеЗаполнено(Партнер) Тогда
Возврат;
КонецЕсли;
Если Параметры.Отбор.Свойство("Дата") Тогда
ДатаДокумента = НачалоДня(Параметры.Отбор.Дата);
КонецЕсли;
Если Параметры.Свойство("ТолькоТиповые") Тогда
ТолькоТиповые = Параметры.ТолькоТиповые;
КонецЕсли;
Если Параметры.Свойство("ТолькоИспользуемыеВРаботеТП") Тогда
ТолькоИспользуемыеВРаботеТП = Параметры.ТолькоИспользуемыеВРаботеТП;
КонецЕсли;
Если Параметры.Свойство("ТолькоОперацииПередачи") Тогда
ТолькоОперацииПередачи = Параметры.ТолькоОперацииПередачи;
КонецЕсли;
УсловиеОтбораПоХозяйственнойОперации = "";
Если Параметры.Отбор.Свойство("ХозяйственнаяОперация", ХозяйственнаяОперация) Тогда
Если ТипЗнч(ХозяйственнаяОперация) = Тип("ПеречислениеСсылка.ХозяйственныеОперации") Тогда
УсловиеОтбораПоХозяйственнойОперации
= "И ДокументСоглашениеСКлиентом.ХозяйственнаяОперация = &ХозяйственнаяОперация";
Иначе
УсловиеОтбораПоХозяйственнойОперации
= "И ДокументСоглашениеСКлиентом.ХозяйственнаяОперация В(&ХозяйственнаяОперация)";
КонецЕсли;
КонецЕсли;
Если Параметры.Отбор.Свойство("КомиссионныеПродажи25") Тогда
КомиссионныеПродажи25 = Параметры.Отбор.КомиссионныеПродажи25;
КонецЕсли;
Если Параметры.Свойство("ОтгрузкаБезПереходаПраваСобственности25") Тогда
ОтгрузкаБезПереходаПраваСобственности25 = Параметры.ОтгрузкаБезПереходаПраваСобственности25;
КонецЕсли;
Если ОтгрузкаБезПереходаПраваСобственности25 = Истина Тогда
ИспользуютсяДоговорыКонтрагентов = ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСКлиентами");
Иначе
Параметры.Отбор.Свойство("ИспользуютсяДоговорыКонтрагентов", ИспользуютсяДоговорыКонтрагентов);
КонецЕсли;
Параметры.Свойство("СтрокаПоиска",СтрокаПоиска);
Запрос = Новый Запрос("
|ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 51
| ДокументСоглашениеСКлиентом.Ссылка КАК Ссылка,
| ДокументСоглашениеСКлиентом.Наименование КАК Наименование,
| ДокументСоглашениеСКлиентом.Номер КАК Номер,
| ДокументСоглашениеСКлиентом.Дата КАК Дата,
| ДокументСоглашениеСКлиентом.Типовое КАК Типовое,
|
| ВЫБОР
| КОГДА
| ДокументСоглашениеСКлиентом.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.Действует)
| И ДокументСоглашениеСКлиентом.ДатаНачалаДействия <> ДАТАВРЕМЯ(1,1,1)
| И &ДатаДокумента <> ДАТАВРЕМЯ(1,1,1)
| И ДокументСоглашениеСКлиентом.ДатаНачалаДействия > &ДатаДокумента
| ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК СрокДействияНеНаступил,
|
| ВЫБОР
| КОГДА
| ДокументСоглашениеСКлиентом.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.Действует)
| И ДокументСоглашениеСКлиентом.ДатаОкончанияДействия <> ДАТАВРЕМЯ(1,1,1)
| И &ДатаДокумента <> ДАТАВРЕМЯ(1,1,1)
| И ДокументСоглашениеСКлиентом.ДатаОкончанияДействия < &ДатаДокумента
| ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК СрокДействияИстек
|
|ИЗ
| Справочник.СоглашенияСКлиентами КАК ДокументСоглашениеСКлиентом
|ГДЕ
| НЕ ДокументСоглашениеСКлиентом.ПометкаУдаления
| И ДокументСоглашениеСКлиентом.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.Действует)
| И (НЕ &ОтборПоКомиссии ИЛИ ДокументСоглашениеСКлиентом.КомиссионныеПродажи25 = &КомиссионныеПродажи25)
| И
| ВЫБОР
| КОГДА &ТолькоТиповые = ИСТИНА
| И (ДокументСоглашениеСКлиентом.Типовое
| И (ДокументСоглашениеСКлиентом.СегментПартнеров = ЗНАЧЕНИЕ(Справочник.СегментыПартнеров.ПустаяСсылка)
| ИЛИ ДокументСоглашениеСКлиентом.СегментПартнеров В
| (ВЫБРАТЬ
| ПартнерыСегмента.Сегмент
| ИЗ
| РегистрСведений.ПартнерыСегмента КАК ПартнерыСегмента
| ГДЕ
| ПартнерыСегмента.Партнер = &Партнер)))
| ТОГДА ИСТИНА
|
| КОГДА &ТолькоТиповые = ЛОЖЬ
| И (ДокументСоглашениеСКлиентом.Типовое
| И (ДокументСоглашениеСКлиентом.СегментПартнеров = ЗНАЧЕНИЕ(Справочник.СегментыПартнеров.ПустаяСсылка)
| ИЛИ ДокументСоглашениеСКлиентом.СегментПартнеров В
| (ВЫБРАТЬ
| ПартнерыСегмента.Сегмент
| ИЗ
| РегистрСведений.ПартнерыСегмента КАК ПартнерыСегмента
| ГДЕ
| ПартнерыСегмента.Партнер = &Партнер))
| ИЛИ
| (НЕ ДокументСоглашениеСКлиентом.Типовое И
| ДокументСоглашениеСКлиентом.Партнер = &Партнер))
| ТОГДА ИСТИНА
|
| ИНАЧЕ ЛОЖЬ
|
| КОНЕЦ
| И
| ВЫБОР
| КОГДА &ТолькоИспользуемыеВРаботеТП = ИСТИНА И
| ДокументСоглашениеСКлиентом.ИспользуетсяВРаботеТорговыхПредставителей
| ТОГДА ИСТИНА
| КОГДА &ТолькоИспользуемыеВРаботеТП = ЛОЖЬ ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| И
| ВЫБОР
| КОГДА &ТолькоОперацииПередачи = ИСТИНА И
| (ДокументСоглашениеСКлиентом.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)
| ИЛИ ДокументСоглашениеСКлиентом.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию)
| И ДокументСоглашениеСКлиентом.КомиссионныеПродажи25)
| ТОГДА ИСТИНА
| КОГДА &ТолькоОперацииПередачи = ЛОЖЬ ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| И ВЫБОР
| КОГДА &ОтборПоДоговору = ИСТИНА
| И ДокументСоглашениеСКлиентом.ИспользуютсяДоговорыКонтрагентов = &ИспользуютсяДоговорыКонтрагентов
| ТОГДА ИСТИНА
| КОГДА &ОтборПоДоговору = ЛОЖЬ
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| И (НЕ &ОтборОтгрузкаБезПереходаПраваСобственности25
| ИЛИ ДокументСоглашениеСКлиентом.ВозможнаРеализацияБезПереходаПраваСобственности)
| И (ДокументСоглашениеСКлиентом.Наименование ПОДОБНО &СтрокаПоиска СПЕЦСИМВОЛ ""~""
| ИЛИ ДокументСоглашениеСКлиентом.Номер ПОДОБНО &СтрокаПоиска СПЕЦСИМВОЛ ""~"")
| И &УсловиеОтбораПоХозяйственнойОперации
|УПОРЯДОЧИТЬ ПО
| Типовое ВОЗР,
| ДатаНачалаДействия ВОЗР,
| ДатаОкончанияДействия ВОЗР
|");
Если Не ХозяйственнаяОперация = Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "И &УсловиеОтбораПоХозяйственнойОперации", УсловиеОтбораПоХозяйственнойОперации);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", ХозяйственнаяОперация);
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "И &УсловиеОтбораПоХозяйственнойОперации", "");
КонецЕсли;
Запрос.УстановитьПараметр("Партнер", Партнер);
Запрос.УстановитьПараметр("ДатаДокумента", НачалоДня(ДатаДокумента));
Запрос.УстановитьПараметр("ТолькоТиповые", ТолькоТиповые);
Запрос.УстановитьПараметр("ТолькоИспользуемыеВРаботеТП", ТолькоИспользуемыеВРаботеТП);
Запрос.УстановитьПараметр("ТолькоОперацииПередачи", ТолькоОперацииПередачи);
Запрос.УстановитьПараметр("СтрокаПоиска", ОбщегоНазначения.СформироватьСтрокуДляПоискаВЗапросе(СтрокаПоиска) + "%");
Запрос.УстановитьПараметр("ОтборПоКомиссии", ?(КомиссионныеПродажи25 = Неопределено, Ложь, Истина));
Запрос.УстановитьПараметр("КомиссионныеПродажи25", КомиссионныеПродажи25);
Запрос.УстановитьПараметр("ОтборПоДоговору", ?(ИспользуютсяДоговорыКонтрагентов = Неопределено, Ложь, Истина));
Запрос.УстановитьПараметр("ИспользуютсяДоговорыКонтрагентов", ИспользуютсяДоговорыКонтрагентов);
Запрос.УстановитьПараметр("ОтборОтгрузкаБезПереходаПраваСобственности25",
ОтгрузкаБезПереходаПраваСобственности25 = Истина);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
ДанныеВыбора = Новый СписокЗначений();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Если ЗначениеЗаполнено(Выборка.Наименование) И
ЗначениеЗаполнено(Выборка.Дата) И
ЗначениеЗаполнено(Выборка.Номер) Тогда
Представление = НСтр("ru = '%Наименование% (%Номер% от %Дата%)'");
Представление = СтрЗаменить(Представление,"%Наименование%", Выборка.Наименование);
Представление = СтрЗаменить(Представление,"%Номер%", Выборка.Номер);
Представление = СтрЗаменить(Представление,"%Дата%", Формат(Выборка.Дата, "ДЛФ=D"));
ИначеЕсли ЗначениеЗаполнено(Выборка.Наименование) И
ЗначениеЗаполнено(Выборка.Дата) Тогда
Представление = НСтр("ru = '%Наименование% (от %Дата%)'");
Представление = СтрЗаменить(Представление,"%Наименование%", Выборка.Наименование);
Представление = СтрЗаменить(Представление,"%Дата%", Формат(Выборка.Дата, "ДЛФ=D"));
ИначеЕсли ЗначениеЗаполнено(Выборка.Наименование) И
ЗначениеЗаполнено(Выборка.Номер) Тогда
Представление = НСтр("ru = '%Наименование% (%Номер%)'");
Представление = СтрЗаменить(Представление,"%Наименование%", Выборка.Наименование);
Представление = СтрЗаменить(Представление,"%Номер%", Выборка.Номер);
Иначе
Представление = НСтр("ru = '%Наименование%'");
Представление = СтрЗаменить(Представление,"%Наименование%", Выборка.Наименование);
КонецЕсли;
Если Выборка.Типовое Тогда
КартинкаСоглашения = БиблиотекаКартинок.ТиповоеСоглашениеСКлиентом;
Иначе
КартинкаСоглашения = БиблиотекаКартинок.ИндивидуальноеСоглашениеСКлиентом;
КонецЕсли;
Структура = Новый Структура();
Структура.Вставить("Значение", Выборка.Ссылка);
Если Выборка.СрокДействияНеНаступил Тогда
Структура.Вставить("Предупреждение", НСтр("ru = 'У соглашения не наступил срок действия.'"));
ИначеЕсли Выборка.СрокДействияИстек Тогда
Структура.Вставить("Предупреждение", НСтр("ru = 'У соглашения истек срок действия.'"));
КонецЕсли;
ДанныеВыбора.Добавить(
Структура,
Представление,
,
КартинкаСоглашения);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
Если ВидФормы = "ФормаВыбора" Тогда
Если ОбщегоНазначенияУТКлиентСервер.АвторизованВнешнийПользователь() Тогда
ДанныеАвторизовавшегосяВнешнегоПользователя = ПартнерыИКонтрагентыВызовСервера.ДанныеАвторизовавшегосяВнешнегоПользователя();
Если ДанныеАвторизовавшегосяВнешнегоПользователя = Неопределено Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
Параметры.Вставить("Партнер", ДанныеАвторизовавшегосяВнешнегоПользователя.Партнер);
Параметры.Вставить("ВозвращатьТолькоСоглашение", Истина);
ВыбраннаяФорма = "Обработка.СамообслуживаниеПартнеров.Форма.ВыборСоглашения";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
Если ПраваПользователяПовтИсп.ЭтоПартнер() Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "СоглашениеСКлиентом";
КомандаПечати.Представление = НСтр("ru = 'Соглашение с клиентом'");
КонецЕсли;
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СоглашениеСКлиентом") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СоглашениеСКлиентом", НСтр("ru = 'Соглашение с клиентом'"), СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры
Функция СформироватьПечатнуюФорму(Соглашение, ОбъектыПечати)
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
Запрос = Новый Запрос;
Если ТипЗнч(Соглашение) = Тип("Массив") Тогда
Запрос.УстановитьПараметр("Соглашение", Соглашение[Соглашение.Количество() - 1]);
Иначе
Запрос.УстановитьПараметр("Соглашение", Соглашение);
КонецЕсли;
Запрос.Текст =
"ВЫБРАТЬ
| СоглашенияСКлиентами.Наименование КАК Наименование,
| ВЫБОР
| КОГДА СоглашенияСКлиентами.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ТОГДА &СтрокаБезОграничений
| ИНАЧЕ ПРЕДСТАВЛЕНИЕ(СоглашенияСКлиентами.Склад)
| КОНЕЦ КАК Склад,
| СоглашенияСКлиентами.Номер,
| СоглашенияСКлиентами.Дата,
| СоглашенияСКлиентами.Организация,
| СоглашенияСКлиентами.Контрагент,
| СоглашенияСКлиентами.ДатаНачалаДействия,
| СоглашенияСКлиентами.ДатаОкончанияДействия,
| ПРЕДСТАВЛЕНИЕ(СоглашенияСКлиентами.Валюта) КАК Валюта,
| СоглашенияСКлиентами.ЦенаВключаетНДС,
| СоглашенияСКлиентами.СрокПоставки,
| СоглашенияСКлиентами.ГрафикОплаты,
| ВЫБОР
| КОГДА ЕСТЬNULL(ГрафикиОплаты.ФормаОплаты, СоглашенияСКлиентами.ФормаОплаты) = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.ПустаяСсылка)
| ТОГДА &СтрокаЛюбая
| ИНАЧЕ ПРЕДСТАВЛЕНИЕ(ЕСТЬNULL(ГрафикиОплаты.ФормаОплаты, СоглашенияСКлиентами.ФормаОплаты))
| КОНЕЦ КАК ФормаОплаты,
| ГрафикиОплаты.Этапы.(
| НомерСтроки,
| ВариантОплаты,
| Сдвиг,
| ПроцентПлатежа
| ) КАК ЭтапыГрафик,
| СоглашенияСКлиентами.Ссылка,
| СоглашенияСКлиентами.ЭтапыГрафикаОплаты.(
| Ссылка,
| НомерСтроки,
| ВариантОплаты,
| Сдвиг,
| ПроцентПлатежа
| ) КАК ЭтапыСоглашение,
| СоглашенияСКлиентами.ХозяйственнаяОперация,
| СоглашенияСКлиентами.СпособРасчетаВознаграждения,
| СоглашенияСКлиентами.ПроцентВознаграждения,
| СоглашенияСКлиентами.ВозможнаРеализацияБезПереходаПраваСобственности,
| СоглашенияСКлиентами.УдержатьВознаграждение
|ИЗ
| Справочник.СоглашенияСКлиентами КАК СоглашенияСКлиентами
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГрафикиОплаты КАК ГрафикиОплаты
| ПО СоглашенияСКлиентами.ГрафикОплаты = ГрафикиОплаты.Ссылка
|ГДЕ
| СоглашенияСКлиентами.Ссылка = &Соглашение
|;
|
|
|ВЫБРАТЬ
| ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка.Представление КАК Представление
|ИЗ
| РегистрСведений.ДействиеСкидокНаценок.СрезПоследних(
| &ДатаСреза,
| Источник = &Соглашение
| И Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДействияСкидок.Действует)) КАК ДействиеСкидокНаценокСрезПоследних";
Запрос.УстановитьПараметр("СтрокаБезОграничений",НСтр("ru = 'без ограничений'", ОбщегоНазначения.КодОсновногоЯзыка()));
Запрос.УстановитьПараметр("СтрокаЛюбая",НСтр("ru = 'любая'", ОбщегоНазначения.КодОсновногоЯзыка()));
Запрос.УстановитьПараметр("ДатаСреза", ТекущаяДатаСеанса());
ЗаполнитьТабличныйДокументСоглашениеСКлиентом(ТабличныйДокумент, Запрос, ОбъектыПечати);
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат ТабличныйДокумент;
КонецФункции
Процедура ЗаполнитьРеквизитыШапкиДокументСоглашениеСКлиентом(ДанныеПечати, Макет, ТабличныйДокумент)
ОбластьПоставщик = Макет.ПолучитьОбласть("Поставщик");
ОбластьЮрЛицоПокупатель = Макет.ПолучитьОбласть("ЮрЛицоПокупатель");
ОбластьПериодДействия = Макет.ПолучитьОбласть("ПериодДействия");
ОбластьТипСоглашения = Макет.ПолучитьОбласть("ТипСоглашения");
ОбластьУсловияКомиссии = Макет.ПолучитьОбласть("УсловияКомиссии");
ОбластьУсловияСоглашения = Макет.ПолучитьОбласть("УсловияСоглашения");
ОбластьНДС = Макет.ПолучитьОбласть("НДС");
ОбластьВалюта = Макет.ПолучитьОбласть("Валюта");
ОбластьСкладСрокОтгрузки = Макет.ПолучитьОбласть("СкладСрокОтгрузки");
ОбластьРеализацияБезПереходаПраваСобственности = Макет.ПолучитьОбласть("РеализацияБезПереходаПраваСобственности");
СтруктураДанныхПериодДействия = Новый Структура("ТекстПериодДействия",
ФормированиеПечатныхФорм.СформироватьТекстПериодДействия(ДанныеПечати.ДатаНачалаДействия,ДанныеПечати.ДатаОкончанияДействия));
ОбластьПериодДействия.Параметры.Заполнить(СтруктураДанныхПериодДействия);
ТабличныйДокумент.Вывести(ОбластьПериодДействия);
СведенияООрганизации = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация,ТекущаяДатаСеанса());
СтруктураДанныхПоставщик = Новый Структура("ПредставлениеПоставщика",
ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияООрганизации));
ОбластьПоставщик.Параметры.Заполнить(СтруктураДанныхПоставщик);
ТабличныйДокумент.Вывести(ОбластьПоставщик);
Если ДанныеПечати.Контрагент.Пустая() Тогда
ПредставлениеЮрЛицоПокупатель = НСтр("ru = 'Без ограничений'", ОбщегоНазначения.КодОсновногоЯзыка());
Иначе
СведенияОПокупателе = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Контрагент,ТекущаяДатаСеанса());
ПредставлениеЮрЛицоПокупатель = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе);
КонецЕсли;
СтруктураДанныхЮрЛицоПокупатель = Новый Структура("ПредставлениеЮрЛицоПокупатель", ПредставлениеЮрЛицоПокупатель);
ОбластьЮрЛицоПокупатель.Параметры.Заполнить(СтруктураДанныхЮрЛицоПокупатель);
ТабличныйДокумент.Вывести(ОбластьЮрЛицоПокупатель);
ТабличныйДокумент.Вывести(ОбластьУсловияСоглашения);
ТипСоглашенияДляПечати = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Нстр("ru = 'Тип соглашения: %1'",
ОбщегоНазначения.КодОсновногоЯзыка()),
ДанныеПечати.ХозяйственнаяОперация);
СтруктураДанныхТипСоглашения = Новый Структура("ТипСоглашения", ТипСоглашенияДляПечати);
ОбластьТипСоглашения.Параметры.Заполнить(СтруктураДанныхТипСоглашения);
ТабличныйДокумент.Вывести(ОбластьТипСоглашения);
Если ДанныеПечати.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
ТекстУсловияКомиссии = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Способ расчета комиссионного вознаграждения: %1.'", ОбщегоНазначения.КодОсновногоЯзыка()), ДанныеПечати.СпособРасчетаВознаграждения);
Если ДанныеПечати.СпособРасчетаВознаграждения <> Перечисления.СпособыРасчетаКомиссионногоВознаграждения.НеРассчитывается Тогда
ТекстУсловияКомиссии = ТекстУсловияКомиссии + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процент вознаграждения - %1%.'", ОбщегоНазначения.КодОсновногоЯзыка()), ДанныеПечати.ПроцентВознаграждения);
Если ДанныеПечати.УдержатьВознаграждение Тогда
ТекстУсловияКомиссии = ТекстУсловияКомиссии + " " + НСтр("ru = 'Вознаграждение удерживается из суммы оплаты.'", ОбщегоНазначения.КодОсновногоЯзыка())
КонецЕсли;
КонецЕсли;
СтруктураДанныхУсловияКомиссии = Новый Структура("УсловияКомиссии", ТекстУсловияКомиссии);
ОбластьУсловияКомиссии.Параметры.Заполнить(СтруктураДанныхУсловияКомиссии);
ТабличныйДокумент.Вывести(ОбластьУсловияКомиссии);
КонецЕсли;
СтруктураДанныхТекстВалюта = Новый Структура("ТекстВалюта",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Нстр("ru = 'Валюта соглашения - %1.'", ОбщегоНазначения.КодОсновногоЯзыка()),ДанныеПечати.Валюта));
ОбластьВалюта.Параметры.Заполнить(СтруктураДанныхТекстВалюта);
ТабличныйДокумент.Вывести(ОбластьВалюта);
СтруктураДанныхНДС = Новый Структура("ТекстНДС",
ФормированиеПечатныхФорм.СформироватьТекстНДС("",ДанныеПечати.ЦенаВключаетНДС));
ОбластьНДС.Параметры.Заполнить(СтруктураДанныхНДС);
ТабличныйДокумент.Вывести(ОбластьНДС);
СтруктураДанныхСрокОтгрузки = Новый Структура("ТекстСкладСрокОтгрузки",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Склад: %1. Срок поставки(дней): %2.'", ОбщегоНазначения.КодОсновногоЯзыка()),
ДанныеПечати.Склад,
ДанныеПечати.СрокПоставки));
ОбластьСкладСрокОтгрузки.Параметры.Заполнить(СтруктураДанныхСрокОтгрузки);
ТабличныйДокумент.Вывести(ОбластьСкладСрокОтгрузки);
Если ДанныеПечати.ВозможнаРеализацияБезПереходаПраваСобственности Тогда
РеализацияБезПереходаПраваСобственности = НСтр("ru = 'Возможна отгрузка без перехода права собственности'", ОбщегоНазначения.КодОсновногоЯзыка());
СтруктураОтгрузкиБезПереходаПраваСобственности =
Новый Структура("ТекстВозможностьРеализацииБезПереходаПраваСобственности", РеализацияБезПереходаПраваСобственности);
ОбластьРеализацияБезПереходаПраваСобственности.Параметры.Заполнить(СтруктураОтгрузкиБезПереходаПраваСобственности);
ТабличныйДокумент.Вывести(ОбластьРеализацияБезПереходаПраваСобственности);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьГрафикОплатыСоглашениеСКлиентом(ДанныеПечати,Макет,ТабличныйДокумент)
ОбластьГрафикОплатыЗаголовок = Макет.ПолучитьОбласть("ГрафикОплатыЗаголовок");
ОбластьЭтапыОплатыШапка = Макет.ПолучитьОбласть("ШапкаТаблицыЭтапыОплатыВариантОплаты");
ОбластьФормаОплаты = Макет.ПолучитьОбласть("ФормаОплаты");
ОбластьЭтапыОплатыСтрока = Макет.ПолучитьОбласть("СтрокаТаблицыЭтапыОплатыВариантОплаты");
ОбластьПодвалЭтапыОплаты = Макет.ПолучитьОбласть("ПодвалЭтапыОплаты");
ТабличныйДокумент.Вывести(ОбластьГрафикОплатыЗаголовок);
СтруктураДанныхТекстФормаОплаты = Новый Структура("ТекстФормаОплаты",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Форма оплаты: %1.'", ОбщегоНазначения.КодОсновногоЯзыка()),ДанныеПечати.ФормаОплаты));
ОбластьФормаОплаты.Параметры.Заполнить(СтруктураДанныхТекстФормаОплаты);
ТабличныйДокумент.Вывести(ОбластьФормаОплаты);
ТабличныйДокумент.Вывести(ОбластьЭтапыОплатыШапка);
Если ЗначениеЗаполнено(ДанныеПечати.ГрафикОплаты) Тогда
ЭтапыОплаты = ДанныеПечати.ЭтапыГрафик;
Иначе
ЭтапыОплаты = ДанныеПечати.ЭтапыСоглашение;
КонецЕсли;
Для каждого ЭтапОплаты Из ЭтапыОплаты.Выгрузить() Цикл
ЗаполнитьЗначенияСвойств(ОбластьЭтапыОплатыСтрока.Параметры,ЭтапОплаты);
ТабличныйДокумент.Вывести(ОбластьЭтапыОплатыСтрока);
КонецЦикла;
ТабличныйДокумент.Вывести(ОбластьПодвалЭтапыОплаты);
КонецПроцедуры
Процедура ЗаполнитьТабличныйДокументСоглашениеСКлиентом(ТабличныйДокумент, Запрос, ОбъектыПечати) Экспорт
МассивРезультатовЗапроса = Запрос.ВыполнитьПакет();
РезультатЗапроса = МассивРезультатовЗапроса[0];
ДанныеПечати = РезультатЗапроса.Выбрать();
ДанныеПечати.Следующий();
Макет = УправлениеПечатью.МакетПечатнойФормы("Справочник.СоглашенияСКлиентами.ПФ_MXL_СоглашениеСКлиентом");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ТекстЗаголовка = ДанныеПечати.Наименование;
Если Не ПустаяСтрока(ДанныеПечати.Номер) Тогда
ТекстЗаголовка = ТекстЗаголовка + " № " + ДанныеПечати.Номер;
КонецЕсли;
Если Не ДанныеПечати.Дата = Дата(1,1,1) Тогда
ТекстЗаголовка = ТекстЗаголовка + " " + НСтр("ru = 'от'", ОбщегоНазначения.КодОсновногоЯзыка()) + " " + Формат(ДанныеПечати.Дата,"ДЛФ=DD");
КонецЕсли;
СтруктураДанныхШапки = Новый Структура("ТекстЗаголовка", ТекстЗаголовка);
ОбластьЗаголовок.Параметры.Заполнить(СтруктураДанныхШапки);
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьЗаголовок, ДанныеПечати.Ссылка);
ТабличныйДокумент.Вывести(ОбластьЗаголовок);
ЗаполнитьРеквизитыШапкиДокументСоглашениеСКлиентом(ДанныеПечати,Макет,ТабличныйДокумент);
ЗаполнитьГрафикОплатыСоглашениеСКлиентом(ДанныеПечати,Макет,ТабличныйДокумент);
ЗаполнитьСкидкиНаценкиСоглашениеСКлиентом(МассивРезультатовЗапроса[1], Макет, ТабличныйДокумент)
КонецПроцедуры
Процедура ЗаполнитьСкидкиНаценкиСоглашениеСКлиентом(ДанныеПечати,Макет,ТабличныйДокумент)
ОбластьУсловияСкидок = Макет.ПолучитьОбласть("УсловияСкидок");
ОбластьСтрокаСкидки = Макет.ПолучитьОбласть("СтрокаСкидки");
СкидкиНаценки = ДанныеПечати.Выгрузить();
Если СкидкиНаценки.Количество() <> 0 Тогда
ТабличныйДокумент.Вывести(ОбластьУсловияСкидок);
КонецЕсли;
Для каждого СкидкаНаценка Из СкидкиНаценки Цикл
СтруктураДанныхСтрокаСкидки = Новый Структура("НаименованиеСкидки", " • " + СкидкаНаценка.Представление);
ОбластьСтрокаСкидки.Параметры.Заполнить(СтруктураДанныхСтрокаСкидки);
ТабличныйДокумент.Вывести(ОбластьСтрокаСкидки);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область ТекущиеДела
Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
ОбщиеПараметрыЗапросов = ТекущиеДелаСлужебный.ОбщиеПараметрыЗапросов();
ЗаполнитьИндивидуальныеСоглашенияСКлиентами(ТекущиеДела, ОбщиеПараметрыЗапросов);
ЗаполнитьТиповыеСоглашенияСКлиентами(ТекущиеДела, ОбщиеПараметрыЗапросов);
КонецПроцедуры
Процедура ЗаполнитьИндивидуальныеСоглашенияСКлиентами(ТекущиеДела, ОбщиеПараметрыЗапросов)
Доступность =
(ОбщиеПараметрыЗапросов.ЭтоПолноправныйПользователь
Или ПравоДоступа("Просмотр", Метаданные.Справочники.СоглашенияСКлиентами))
И ПравоДоступа("Изменение", Метаданные.Справочники.СоглашенияСКлиентами)
И ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
Если НЕ Доступность Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВЫБОР
| КОГДА СоглашениеСКлиентом.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.НеСогласовано)
| ТОГДА СоглашениеСКлиентом.Ссылка
| КОНЕЦ) КАК ИндивидуальныеСоглашенияСКлиентамиНаСогласовании,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВЫБОР
| КОГДА
| СоглашениеСКлиентом.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.НеСогласовано)
| И ((СоглашениеСКлиентом.ДатаНачалаДействия <> ДАТАВРЕМЯ(1,1,1) И
| СоглашениеСКлиентом.ДатаНачалаДействия < &ДатаАктуальности)
| ИЛИ (СоглашениеСКлиентом.ДатаОкончанияДействия <> ДАТАВРЕМЯ(1,1,1) И
| СоглашениеСКлиентом.ДатаОкончанияДействия < &ДатаАктуальности))
| ТОГДА
| СоглашениеСКлиентом.Ссылка
|
| КОГДА СоглашениеСКлиентом.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.Действует)
| И ((СоглашениеСКлиентом.ДатаОкончанияДействия <> ДАТАВРЕМЯ(1,1,1) И
| СоглашениеСКлиентом.ДатаОкончанияДействия < &ДатаАктуальности))
| ТОГДА
| СоглашениеСКлиентом.Ссылка
|
| КОГДА СоглашениеСКлиентом.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.Действует)
| И ((СоглашениеСКлиентом.ДатаНачалаДействия <> ДАТАВРЕМЯ(1,1,1) И
| СоглашениеСКлиентом.ДатаНачалаДействия > &ДатаАктуальности))
| ТОГДА
| СоглашениеСКлиентом.Ссылка
| КОНЕЦ) КАК ИндивидуальныеСоглашенияСКлиентамиПросроченные
|ИЗ
| Справочник.СоглашенияСКлиентами КАК СоглашениеСКлиентом
|ГДЕ
| СоглашениеСКлиентом.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.Закрыто)
| И (НЕ СоглашениеСКлиентом.Типовое)
| И СоглашениеСКлиентом.Менеджер = &Пользователь
| И (НЕ СоглашениеСКлиентом.ПометкаУдаления)";
Результат = ТекущиеДелаСлужебный.ЧисловыеПоказателиТекущихДел(Запрос, ОбщиеПараметрыЗапросов);
ИмяФормы = "Справочник.СоглашенияСКлиентами.Форма.ФормаСпискаИндивидуальныхСоглашений";
ДелоРодитель = ТекущиеДела.Добавить();
ДелоРодитель.Идентификатор = "ИндивидуальныеСоглашенияСКлиентами";
ДелоРодитель.Представление = НСтр("ru = 'Индивидуальные соглашения с клиентами'");
ДелоРодитель.Владелец = Метаданные.Подсистемы.Продажи;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Состояние", Перечисления.СостоянияСоглашенийСКлиентами.ОжидаетсяСогласование);
ПараметрыОтбора.Вставить("Актуальность", "");
ПараметрыОтбора.Вставить("ДатаСобытия", ОбщиеПараметрыЗапросов.ПустаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыОтбора.Вставить("Регулярность", "");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ИндивидуальныеСоглашенияСКлиентамиНаСогласовании";
Дело.ЕстьДела = Результат.ИндивидуальныеСоглашенияСКлиентамиНаСогласовании > 0;
Дело.Представление = НСтр("ru = 'Соглашения на согласовании'");
Дело.Количество = Результат.ИндивидуальныеСоглашенияСКлиентамиНаСогласовании;
Дело.Важное = Ложь;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = Новый Структура("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Дело.Владелец = "ИндивидуальныеСоглашенияСКлиентами";
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Состояние", Неопределено);
ПараметрыОтбора.Вставить("Актуальность", "Просроченные");
ПараметрыОтбора.Вставить("ДатаСобытия", ОбщиеПараметрыЗапросов.ПустаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыОтбора.Вставить("Регулярность", "");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ИндивидуальныеСоглашенияСКлиентамиПросроченные";
Дело.ЕстьДела = Результат.ИндивидуальныеСоглашенияСКлиентамиПросроченные > 0;
Дело.Представление = НСтр("ru = 'Просроченные соглашения'");
Дело.Количество = Результат.ИндивидуальныеСоглашенияСКлиентамиПросроченные;
Дело.Важное = Истина;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = Новый Структура("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Дело.Владелец = "ИндивидуальныеСоглашенияСКлиентами";
Если Результат.ИндивидуальныеСоглашенияСКлиентамиПросроченные > 0
Или Результат.ИндивидуальныеСоглашенияСКлиентамиНаСогласовании > 0 Тогда
ДелоРодитель.ЕстьДела = Истина;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьТиповыеСоглашенияСКлиентами(ТекущиеДела, ОбщиеПараметрыЗапросов)
Доступность =
ОбщиеПараметрыЗапросов.ЭтоПолноправныйПользователь
Или ПравоДоступа("Просмотр", Метаданные.Справочники.СоглашенияСКлиентами)
И ПравоДоступа("Изменение", Метаданные.Справочники.СоглашенияСКлиентами)
И ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
Если НЕ Доступность Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВЫБОР
| КОГДА СоглашениеСКлиентом.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.НеСогласовано)
| ТОГДА СоглашениеСКлиентом.Ссылка
| КОНЕЦ) КАК ТиповыеСоглашенияСКлиентамиНаСогласовании,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВЫБОР
| КОГДА
| СоглашениеСКлиентом.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.НеСогласовано)
| И ((СоглашениеСКлиентом.ДатаНачалаДействия <> ДАТАВРЕМЯ(1,1,1) И
| СоглашениеСКлиентом.ДатаНачалаДействия < &ДатаАктуальности)
| ИЛИ (СоглашениеСКлиентом.ДатаОкончанияДействия <> ДАТАВРЕМЯ(1,1,1) И
| СоглашениеСКлиентом.ДатаОкончанияДействия < &ДатаАктуальности))
| ТОГДА
| СоглашениеСКлиентом.Ссылка
|
| КОГДА СоглашениеСКлиентом.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.Действует)
| И ((СоглашениеСКлиентом.ДатаОкончанияДействия <> ДАТАВРЕМЯ(1,1,1) И
| СоглашениеСКлиентом.ДатаОкончанияДействия < &ДатаАктуальности))
| ТОГДА
| СоглашениеСКлиентом.Ссылка
|
| КОГДА СоглашениеСКлиентом.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.Действует)
| И ((СоглашениеСКлиентом.ДатаНачалаДействия <> ДАТАВРЕМЯ(1,1,1) И
| СоглашениеСКлиентом.ДатаНачалаДействия > &ДатаАктуальности))
| ТОГДА
| СоглашениеСКлиентом.Ссылка
| КОНЕЦ) КАК ТиповыеСоглашенияСКлиентамиПросроченные
|ИЗ
| Справочник.СоглашенияСКлиентами КАК СоглашениеСКлиентом
|ГДЕ
| СоглашениеСКлиентом.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.Закрыто)
| И СоглашениеСКлиентом.Типовое
| И СоглашениеСКлиентом.Менеджер = &Пользователь
| И (НЕ СоглашениеСКлиентом.ПометкаУдаления)";
Результат = ТекущиеДелаСлужебный.ЧисловыеПоказателиТекущихДел(Запрос, ОбщиеПараметрыЗапросов);
ИмяФормы = "Справочник.СоглашенияСКлиентами.Форма.ФормаСпискаТиповыхСоглашений";
ДелоРодитель = ТекущиеДела.Добавить();
ДелоРодитель.Идентификатор = "ТиповыеСоглашенияСКлиентами";
ДелоРодитель.Представление = НСтр("ru = 'Типовые соглашения с клиентами'");
ДелоРодитель.Владелец = Метаданные.Подсистемы.Продажи;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Состояние", Перечисления.СостоянияСоглашенийСКлиентами.ОжидаетсяСогласование);
ПараметрыОтбора.Вставить("Актуальность", "");
ПараметрыОтбора.Вставить("ДатаСобытия", ОбщиеПараметрыЗапросов.ПустаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыОтбора.Вставить("Регулярность", "");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ТиповыеСоглашенияСКлиентамиНаСогласовании";
Дело.ЕстьДела = Результат.ТиповыеСоглашенияСКлиентамиНаСогласовании > 0;
Дело.Представление = НСтр("ru = 'Соглашения на согласовании'");
Дело.Количество = Результат.ТиповыеСоглашенияСКлиентамиНаСогласовании;
Дело.Важное = Ложь;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = Новый Структура("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Дело.Владелец = "ТиповыеСоглашенияСКлиентами";
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Состояние", Неопределено);
ПараметрыОтбора.Вставить("Актуальность", "Просроченные");
ПараметрыОтбора.Вставить("ДатаСобытия", ОбщиеПараметрыЗапросов.ПустаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыОтбора.Вставить("Регулярность", "");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ТиповыеСоглашенияСКлиентамиПросроченные";
Дело.ЕстьДела = Результат.ТиповыеСоглашенияСКлиентамиПросроченные > 0;
Дело.Представление = НСтр("ru = 'Просроченные соглашения'");
Дело.Количество = Результат.ТиповыеСоглашенияСКлиентамиПросроченные;
Дело.Важное = Истина;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = Новый Структура("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Дело.Владелец = "ТиповыеСоглашенияСКлиентами";
Если Результат.ТиповыеСоглашенияСКлиентамиНаСогласовании > 0
Или Результат.ТиповыеСоглашенияСКлиентамиПросроченные > 0 Тогда
ДелоРодитель.ЕстьДела = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Отчеты
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КомандаОтчет = Отчеты.ВыполнениеУсловийСоглашенийСКлиентами.ДобавитьКомандуВыполнениеУсловийСоглашенийСКлиентами(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаЭлемента,ФормаСпискаИндивидуальныхСоглашений";
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаОтчет, "Типовое", Ложь, ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
КомандаОтчет = Отчеты.ОтклоненияОтУсловийПродаж.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаЭлемента,ФормаСпискаИндивидуальныхСоглашений";
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаОтчет, "Типовое", Ложь, ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
КомандаОтчет = Отчеты.РезультатыСогласованияПродажи.ДобавитьКомандуРезультатыСогласованияСоглашенияСКлиентами(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаЭлемента,ФормаСпискаИндивидуальныхСоглашений";
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаОтчет, "Типовое", Ложь, ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
КомандаОтчет = Отчеты.УсловияПродаж.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаЭлемента,ФормаСписка,ФормаСпискаТиповыхСоглашений,ФормаСпискаИндивидуальныхСоглашений";
КонецЕсли;
КомандаОтчет = Отчеты.УсловияПродаж2_5.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаЭлемента,ФормаСписка,ФормаСпискаТиповыхСоглашений,ФормаСпискаИндивидуальныхСоглашений";
КонецЕсли;
КомандаОтчет = Отчеты.ДействующиеРетроБонусыПоСоглашению.ДобавитьКомандуОтчета(
КомандыОтчетов,
"ДействующиеРетроБонусыПоСоглашениюКонтекст");
Если КомандаОтчет <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
КомандаОтчет,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.РеализацияКлиенту,
ВидСравненияКомпоновкиДанных.Равно);
КомандаОтчет.ВидимостьВФормах = "ФормаЭлемента,ФормаСписка,ФормаСпискаТиповыхСоглашений,ФормаСпискаИндивидуальныхСоглашений";
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ШаблоныСообщений
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриФормированииСообщения(Сообщение, ПредметСообщения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, ПредметСообщения) Экспорт
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли