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