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