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