Складские ячейки / Модуль менеджера

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

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

// Возвращает имена блокируемых реквизитов для механизма блокирования реквизитов БСП.
//
// Возвращаемое значение:
//	Массив - имена блокируемых реквизитов.
//
Функция ПолучитьБлокируемыеРеквизитыОбъекта() Экспорт

	Результат = Новый Массив;
	
	Результат.Добавить("Владелец");
 	Результат.Добавить("Помещение");

	Возврат Результат;

КонецФункции

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

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

КонецФункции

#Область Команды

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

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

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

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

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

	Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(Владелец)";

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

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

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

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

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

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

// Заполняет список команд печати.
// 
// Параметры:
//   КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	Если ПравоДоступа("Просмотр", Метаданные.Обработки.ПечатьЭтикетокИЦенников) Тогда
		
		// Печать этикеток
		КомандаПечати = КомандыПечати.Добавить();
		КомандаПечати.Обработчик = "УправлениеПечатьюУТКлиент.ПечатьЭтикетокСкладскиеЯчейки";
		КомандаПечати.МенеджерПечати = "";
		КомандаПечати.Идентификатор = "ЭтикеткиСкладскиеЯчейки";
		КомандаПечати.Представление = НСтр("ru = 'Печать этикеток'");
		
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

#КонецЕсли
#КонецЕсли

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