Контрагенты / Модуль менеджера

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

#Область ДляВызоваИзДругихПодсистем

// СтандартныеПодсистемы.УправлениеДоступом

// Параметры:
//   Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение.
//
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

	Ограничение.Текст =
	"ПрисоединитьДополнительныеТаблицы
	|ЭтотСписок КАК Т
	|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИерархияПартнеров КАК Т2 
	|	ПО Т2.Родитель = Т.Партнер
	|;
	|РазрешитьЧтение
	|ГДЕ
	|	ЗначениеРазрешено(Т2.Партнер)
	|;
	|РазрешитьИзменениеЕслиРазрешеноЧтение
	|ГДЕ
	|	ЗначениеРазрешено(Партнер)";
	
	Ограничение.ТекстДляВнешнихПользователей =
	"ПрисоединитьДополнительныеТаблицы
	|ЭтотСписок КАК ЭтотСписок
	|
	|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИерархияПартнеров КАК ИерархияПартнеров 
	|	ПО ИерархияПартнеров.Родитель = ЭтотСписок.Партнер
	|
	|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВнешниеПользователи КАК ВнешниеПользователиПартнеры
	|	ПО ВнешниеПользователиПартнеры.ОбъектАвторизации = ИерархияПартнеров.Партнер
	|
	|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров 
	|	ПО КонтактныеЛицаПартнеров.Владелец = ЭтотСписок.Партнер
	|
	|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВнешниеПользователи КАК ВнешниеПользователиКонтактныеЛица 
	|	ПО ВнешниеПользователиКонтактныеЛица.ОбъектАвторизации = КонтактныеЛицаПартнеров.Ссылка
	|;
	|РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(ВнешниеПользователиПартнеры.Ссылка)
	|	ИЛИ ЗначениеРазрешено(ВнешниеПользователиКонтактныеЛица.Ссылка)";

КонецПроцедуры

// Конец СтандартныеПодсистемы.УправлениеДоступом

#КонецОбласти

// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
//  Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт

КонецПроцедуры

Функция СокрЮрНаименованиеНаДату(Контрагент, ДатаСведений) Экспорт
	
	Если НЕ ЗначениеЗаполнено(Контрагент)
		ИЛИ ТипЗнч(Контрагент) <> Тип("СправочникСсылка.Контрагенты") Тогда
		Возврат "";
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(ДатаСведений) Тогда
		Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контрагент, "НаименованиеПолное");
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.Параметры.Вставить("Контрагент", Контрагент);
	Запрос.Параметры.Вставить("ДатаСведений", ДатаСведений);
	Запрос.Текст ="
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
	|	ИсторияНаименованийКонтрагентов.СокращенноеНаименование КАК СокращенноеНаименование
	|ПОМЕСТИТЬ ИсторическоеЗначениеНаименования
	|ИЗ
	|	Справочник.Контрагенты.ИсторияНаименований КАК ИсторияНаименованийКонтрагентов
	|ГДЕ
	|	ИсторияНаименованийКонтрагентов.Ссылка = &Контрагент
	|	И ИсторияНаименованийКонтрагентов.Период <= &ДатаСведений
	|
	|УПОРЯДОЧИТЬ ПО
	|	ИсторияНаименованийКонтрагентов.Период УБЫВ
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ЕСТЬNULL(ИсторическоеЗначениеНаименования.СокращенноеНаименование, Контрагенты.НаименованиеПолное) КАК НаименованиеПолное
	|ИЗ
	|	Справочник.Контрагенты КАК Контрагенты
	|		ЛЕВОЕ СОЕДИНЕНИЕ ИсторическоеЗначениеНаименования КАК ИсторическоеЗначениеНаименования
	|		ПО (ИСТИНА)
	|ГДЕ
	|	Контрагенты.Ссылка = &Контрагент";
	
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Следующий() Тогда
		Возврат Выборка.НаименованиеПолное;
	Иначе
		Возврат "";
	КонецЕсли;
	
КонецФункции

// Возвращает имена реквизитов, которые не должны отображаться в списке реквизитов обработки ГрупповоеИзменениеОбъектов.
//
//	Возвращаемое значение:
//		Массив - массив имен реквизитов.
//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
	
	НеРедактируемыеРеквизиты = Новый Массив;
	НеРедактируемыеРеквизиты.Добавить("ЮридическоеФизическоеЛицо");
	НеРедактируемыеРеквизиты.Добавить("ОбособленноеПодразделение");
	НеРедактируемыеРеквизиты.Добавить("ГоловнойКонтрагент");
	НеРедактируемыеРеквизиты.Добавить("НаименованиеПолное");
	НеРедактируемыеРеквизиты.Добавить("ИсторияНаименований.*");
	ПартнерыИКонтрагентыЛокализация.ДополнитьРеквизитыНеРедактируемыеВГрупповойОбработкеКонтрагент(НеРедактируемыеРеквизиты);
	Возврат НеРедактируемыеРеквизиты;
	
КонецФункции

// Определяет список команд создания на основании.
//
// Параметры:
//  КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
//  Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
	
	БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	Справочники.СоглашенияСКлиентами.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	
КонецПроцедуры

// Определяет настройки начального заполнения элементов
//
// Параметры:
//  Настройки - Структура - настройки заполнения:
//   * ПриНачальномЗаполненииЭлемента - Булево - Если Истина, то для каждого элемента будет
//      вызвана процедура индивидуального заполнения ПриНачальномЗаполненииЭлемента.
Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт
	
	Настройки.ПриНачальномЗаполненииЭлемента = Истина;
	
КонецПроцедуры

// Вызывается при начальном заполнении справочника.
//
// Параметры:
//  КодыЯзыков - Массив - список языков конфигурации. Актуально для мультиязычных конфигураций.
//  Элементы   - ТаблицаЗначений - данные заполнения. Состав колонок соответствует набору реквизитов
//                                 справочника.
//  ТабличныеЧасти - Структура - Ключ - Имя табличной части объекта.
//                               Значение - Выгрузка в таблицу значений пустой табличной части.
//
Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт

	КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
	
	#Область РозничныйПокупатель
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "РозничныйПокупатель";
	Элемент.Наименование = НСтр("ru = 'Розничный покупатель'", КодОсновногоЯзыка);
	Элемент.НаименованиеПолное = НСтр("ru = 'Розничный покупатель'", КодОсновногоЯзыка);
	Элемент.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо;
	Элемент.ГоловнойКонтрагент = Справочники.Контрагенты.РозничныйПокупатель;
	Элемент.Партнер = Справочники.Партнеры.РозничныйПокупатель;
	Элемент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо;
	#КонецОбласти

КонецПроцедуры

// Вызывается при начальном заполнении создаваемого элемента.
//
// Параметры:
//  Объект                  - СправочникОбъект.Контрагенты - заполняемый объект.
//  Данные                  - СтрокаТаблицыЗначений - данные заполнения.
//  ДополнительныеПараметры - Структура - Дополнительные параметры.
//
Процедура ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры) Экспорт
	
	
	
КонецПроцедуры

#КонецОбласти

#КонецЕсли

#Область ОбработчикиСобытий

Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	ДанныеВыбора = ПартнерыИКонтрагентыВызовСервера.КонтрагентыДанныеВыбора(Параметры);
	
КонецПроцедуры

Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
	
	Если ВидФормы = "ФормаВыбора" Тогда
		
		Если ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровКакКонтрагентов") Тогда
			
			ИспользоватьПолнотекстовыйПоиск = ОбщегоНазначенияУТВызовСервера.ИспользуетсяПолнотекстовыйПоиск("ИспользоватьПолнотекстовыйПоиск");
			
			Если ИспользоватьПолнотекстовыйПоиск Тогда
				ВыбраннаяФорма       = "ФормаВыбораИспользуютсяТолькоПартнеры";
			Иначе
				ВыбраннаяФорма       = "ФормаВыбораИспользуютсяТолькоПартнерыБезПолнотекстовогоПоиска";
			КонецЕсли;
			
			СтандартнаяОбработка = Ложь;
			
		КонецЕсли;
		
	КонецЕсли;
	
	Если ВидФормы = "ФормаОбъекта" Тогда
		Если ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровКакКонтрагентов") Тогда
			СтандартнаяОбработка = Ложь;
			Если Параметры.Свойство("Ключ") И ЗначениеЗаполнено(Параметры.Ключ) Тогда
				ПартнерыИКонтрагентыВызовСервера.ДанныеКонтрагентаДляОткрытияФормыПартнера(Параметры);
				ВыбраннаяФорма = "Справочник.Партнеры.Форма.ФормаЭлементаРеквизитыКонтрагента";
			Иначе
				ВыбраннаяФорма = "Справочник.Партнеры.Форма.ПомощникНового";
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область СлужебныеПроцедурыИФункции

#Область ПервоначальноеЗаполнениеИБ

// Заполняет предопределенные элементы справочника "Контрагенты".
//
Процедура ЗаполнитьПредопределенныхКонтрагентов() Экспорт
	
	СправочникОбъект = Справочники.Контрагенты.РозничныйПокупатель.ПолучитьОбъект();
	СправочникОбъект.НаименованиеПолное = НСтр("ru = 'Розничный покупатель'", ОбщегоНазначения.КодОсновногоЯзыка());
	СправочникОбъект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо;
	СправочникОбъект.Партнер = Справочники.Партнеры.РозничныйПокупатель;
	СправочникОбъект.Записать();
	
КонецПроцедуры

#КонецОбласти

#Область Отчеты

// Определяет список команд отчетов.
//
// Параметры:
//   КомандыОтчетов - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.КомандыОтчетов
//   Параметры - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.Параметры
//
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
	
	КомандаОтчет = ВзаиморасчетыСервер.ВедомостьРасчетовСПартнерами_ДобавитьКомандуОтчета(КомандыОтчетов);
	Если КомандаОтчет <> Неопределено Тогда
		КомандаОтчет.ВидимостьВФормах = "ФормаЭлемента,ФормаСписка,ФормаСпискаПараметрическая";
	КонецЕсли;
	
	Если КомандаОтчет <> Неопределено Тогда
		КомандаОтчет.ВидимостьВФормах = "ФормаЭлемента,ФормаСписка,ФормаСпискаПараметрическая";
	КонецЕсли;
	
	КомандаОтчет = Отчеты.ДействующиеРетроБонусыКлиента.ДобавитьКомандуОтчета(
		КомандыОтчетов, Параметры, "ДействующиеРетроБонусыПоКонтрагентуКонтекст");
	Если КомандаОтчет <> Неопределено Тогда
		
		Представление = НСтр("ru = 'Действующие ретро-бонусы по клиенту'");
		КомандаОтчет.Представление = Представление;
		
	КонецЕсли;
	
	КомандаОтчет = Отчеты.ДействующиеРетроБонусыПоставщиков.ДобавитьКомандуОтчета(
		КомандыОтчетов, Параметры, "ДействующиеРетроБонусыПоставщиковКонтекст");
	Если КомандаОтчет <> Неопределено Тогда
		
		Представление = НСтр("ru = 'Действующие ретро-бонусы поставщика'");
		КомандаОтчет.Представление = Представление;
		
	КонецЕсли;
	
	ПартнерыИКонтрагентыЛокализация.ДобавитьКомандыОтчетов_Контрагенты(КомандыОтчетов, Параметры);
	
КонецПроцедуры

#КонецОбласти

#Область Печать

// Заполняет список команд печати.
// 
// Параметры:
//   КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт



КонецПроцедуры

#КонецОбласти

#Область ШаблоныСообщений

// Вызывается при подготовке шаблонов сообщений и позволяет переопределить список реквизитов и вложений.
//
// Параметры:
//  Реквизиты               - ДеревоЗначений - список реквизитов шаблона:
//         * Имя            - Строка - Уникальное имя общего реквизита.
//         * Представление  - Строка - Представление общего реквизита.
//         * Тип            - Тип    - Тип реквизита. По умолчанию строка.
//         * Формат         - Строка - Формат вывода значения для чисел, дат, строк и булевых значений.
//  Вложения                - ТаблицаЗначений - печатные формы и вложения:
//         * Имя            - Строка - Уникальное имя вложения.
//         * Представление  - Строка - Представление варианта.
//         * ТипФайла       - Строка - Тип вложения, который соответствует расширению файла: "pdf", "png", "jpg", mxl"
//                                      и др.
//  ДополнительныеПараметры - Структура - дополнительные сведения о шаблоне сообщений.
//
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
	
КонецПроцедуры

// Вызывается в момент создания сообщений по шаблону для заполнения значений реквизитов и вложений.
//
// Параметры:
//  Сообщение - Структура - структура с ключами:
//    * ЗначенияРеквизитов - Соответствие из КлючИЗначение- список используемых в шаблоне реквизитов:
//      * Ключ     - Строка - имя реквизита в шаблоне;
//      * Значение - Строка - значение заполнения в шаблоне.
//    * ЗначенияОбщихРеквизитов - Соответствие из КлючИЗначение - список используемых в шаблоне общих реквизитов:
//      * Ключ     - Строка - имя реквизита в шаблоне;
//      * Значение - Строка - значение заполнения в шаблоне.
//    * Вложения - Соответствие из КлючИЗначение - значения реквизитов
//      * Ключ     - Строка - имя вложения в шаблоне;
//      * Значение - ДвоичныеДанные, Строка - двоичные данные или адрес во временном хранилище вложения.
//  ПредметСообщения - ЛюбаяСсылка - ссылка на объект являющийся источником данных.
//  ДополнительныеПараметры - Структура -  Дополнительная информация о шаблоне сообщения.
//
Процедура ПриФормированииСообщения(Сообщение, ПредметСообщения, ДополнительныеПараметры) Экспорт
	
КонецПроцедуры

// Заполняет список получателей SMS при отправке сообщения сформированного по шаблону.
//
// Параметры:
//   ПолучателиSMS - ТаблицаЗначений - список получается SMS:
//     * НомерТелефона - Строка - номер телефона, куда будет отправлено сообщение SMS.
//     * Представление - Строка - представление получателя сообщения SMS.
//     * Контакт       - СправочникСсылка - контакт, которому принадлежит номер телефона.
//  ПредметСообщения - ЛюбаяСсылка - ссылка на объект являющийся источником данных.
//
Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт
	
КонецПроцедуры

// Заполняет список получателей письма при отправки сообщения сформированного по шаблону.
//
// Параметры:
//   ПолучателиПисьма - ТаблицаЗначений - список получается письма:
//     * Адрес           - Строка - адрес электронной почты получателя.
//     * Представление   - Строка - представление получается письма.
//     * ВариантОтправки - Строка - Варианты отправки письма: "Кому", "Копия", "СкрытаяКопия", "ОбратныйАдреса";
//  ПредметСообщения - ЛюбаяСсылка - ссылка на объект являющийся источником данных.
//
Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, ПредметСообщения) Экспорт
	
КонецПроцедуры

#КонецОбласти

#КонецОбласти

#КонецЕсли

Связанные материалы