Регистрация цен номенклатуры поставщика / Модуль объекта

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

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ИИЦИАЛИЗАЦИИ И ЗАПОЛНЕНИЯ РЕГИСТРАЦИИ ЦЕН ПОСТАВЩИКА

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

// Заполняет регистрацию цен номенклатуры поставщика на основании соглашения с партнером.
//
// Параметры:
//  Основание - Ссылка на партнера.
//
Процедура ЗаполнитьДокументНаОснованииСоглашенияСПоставщиком(Основание)
	
	Запрос = Новый Запрос("
		|ВЫБРАТЬ
		|	СоглашениеСПоставщиком.Партнер КАК Партнер,
		|	СоглашениеСПоставщиком.Ссылка  КАК Соглашение
		|ИЗ
		|	Справочник.СоглашенияСПоставщиками КАК СоглашениеСПоставщиком
		|ГДЕ
		|	СоглашениеСПоставщиком.Ссылка = &Ссылка
		|");
		
	Запрос.УстановитьПараметр("Ссылка", Основание);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Выборка.Следующий();
	ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка);
	
КонецПроцедуры

// Заполняет регистрацию цен в соответствии с отбором
//
// Параметры:
// ДанныеЗаполнения - Структура - Структура со значениями отбора.
//
Процедура ЗаполнитьДокументПоОтбору(Знач ДанныеЗаполнения)
	
	Если ДанныеЗаполнения.Свойство("Соглашение") Тогда
		
		Соглашение = ДанныеЗаполнения.Соглашение;
		ЗаполнитьДокументНаОснованииСоглашенияСПоставщиком(Соглашение);
		
	ИначеЕсли ДанныеЗаполнения.Свойство("Партнер") Тогда
		
		ЗаполнитьДокументНаОснованииПартнера(ДанныеЗаполнения.Партнер);
		
	КонецЕсли;
	
КонецПроцедуры

// Инициализирует установку цен номенклатуры партнеров.
//
Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)

	Ответственный = Пользователи.ТекущийПользователь();

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

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

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

Процедура ПриЗаписи(Отказ)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
	ПроведениеДокументов.ПриЗаписиДокумента(ЭтотОбъект, Отказ);
	
КонецПроцедуры

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
	
	ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);

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

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	
	ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);
	
КонецПроцедуры

Процедура ОбработкаУдаленияПроведения(Отказ)
	
	ПроведениеДокументов.ОбработкаУдаленияПроведенияДокумента(ЭтотОбъект, Отказ);
	
КонецПроцедуры

Процедура ПриКопировании(ОбъектКопирования)

	ИнициализироватьДокумент();

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

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

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

#КонецЕсли

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