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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// Функция определяет кассу ККМ по умолчанию для РМК. Ищется касса ККМ с типом фискальный регистратор, 
// настроенная для текущего рабочего места по заданной организации. Если задан второй параметр, то 
// будет возвращена именно эта касса ККМ в случае, если по ней существует настройка для текущего рабочего места.
//
// Параметры:
//  Организация - СправочникСсылка.Организации -
//  ПредпочтительнаяКассаККМ - Неопределено, СправочникСсылка.КассыККМ -
//
// Возвращаемое значение:
//  СправочникСсылка.КассыККМ, Неопределено -
//
Функция КассаККМФискальныйРегистраторПоОрганизацииДляРМКПоУмолчанию(Знач Организация, Знач ПредпочтительнаяКассаККМ = Неопределено) Экспорт

	КассаККМ = Неопределено;
	
	КассыККМ = КассыККМПоОрганизацииДляРМК(Организация, Перечисления.ТипыКассККМ.ФискальныйРегистратор);
	Если КассыККМ.Количество() Тогда
		Если ЗначениеЗаполнено(ПредпочтительнаяКассаККМ) 
			И КассыККМ.Найти(ПредпочтительнаяКассаККМ) <> Неопределено  Тогда
			КассаККМ = ПредпочтительнаяКассаККМ;
		Иначе
			КассаККМ = КассыККМ[0];
		КонецЕсли;
	КонецЕсли;

	Возврат КассаККМ;

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

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

	КассыККМ = Новый Массив;

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

	Выборка = Запрос.Выполнить().Выбрать();

	Пока Выборка.Следующий() Цикл
		КассыККМ.Добавить(Выборка.КассаККМ);
	КонецЦикла;

	Возврат КассыККМ;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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