4980 lines
324 KiB
Plaintext
4980 lines
324 KiB
Plaintext
|
||
#Область ПрограммныйИнтерфейс
|
||
|
||
// Создает платежные документы, либо формирует данные заполнения для создания одного платежного документа.
|
||
//
|
||
// Параметры:
|
||
// СтрокиГрафика - Массив - Ключи записей графика платежей
|
||
// ТипДокумента - Строка - Тип создаваемых документов. Если не задан, будет определен автоматически.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// ОткрыватьФормуПомощника - Булево - Признак необходимости открытия формы помощника создания документов
|
||
// ДокументКСозданию - Структура - Данные заполнения единственного документа
|
||
// ДлительнаяОперация - Структура - Длительная операция создания нескольких документов
|
||
// АдресСтрокГрафика - Строка - Адрес временного хранилища, в котором содержатся оплачиваемые строки графика.
|
||
//
|
||
Функция ОплатитьСтрокиГрафика(СтрокиГрафика, ТипДокумента) Экспорт
|
||
|
||
//++ Локализация
|
||
|
||
|
||
//-- Локализация
|
||
Возврат Неопределено;
|
||
|
||
КонецФункции
|
||
|
||
// Формирует варианты наименования юридического лица в соответствии с его организационно-правовой формой.
|
||
//
|
||
// Параметры:
|
||
// Наименование - Строка - Наименование юр. лица.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура - Наименование, РабочееНаименование, ПолноеНаименование.
|
||
//
|
||
Функция НаименованиеОрганизации(Знач Наименование) Экспорт
|
||
|
||
Наименование = СокрЛП(Наименование);
|
||
|
||
СтруктураНаименования = Новый Структура("Наименование, СокращенноеНаименование, ПолноеНаименование",
|
||
Наименование, Наименование, Наименование);
|
||
|
||
//++ Локализация
|
||
Если УбратьИзНаименованияОрганизационнуюФорму(Наименование, НСтр("ru='ООО'")) Тогда
|
||
ОрганизационноПравоваяФорма = НСтр("ru='Общество с ограниченной ответственностью'");
|
||
ОрганизационноПравоваяФормаСокращенно = НСтр("ru='ООО'");
|
||
ИначеЕсли УбратьИзНаименованияОрганизационнуюФорму(Наименование, НСтр("ru='ОАО'")) Тогда
|
||
ОрганизационноПравоваяФорма = НСтр("ru='Открытое акционерное общество'");
|
||
ОрганизационноПравоваяФормаСокращенно = НСтр("ru='ОАО'");
|
||
ИначеЕсли УбратьИзНаименованияОрганизационнуюФорму(Наименование, НСтр("ru='ЗАО'")) Тогда
|
||
ОрганизационноПравоваяФорма = НСтр("ru='Закрытое акционерное общество'");
|
||
ОрганизационноПравоваяФормаСокращенно = НСтр("ru='ЗАО'");
|
||
ИначеЕсли УбратьИзНаименованияОрганизационнуюФорму(Наименование, НСтр("ru='ИП'")) Тогда
|
||
ОрганизационноПравоваяФорма = НСтр("ru='Индивидуальный предприниматель'");
|
||
ОрганизационноПравоваяФормаСокращенно = НСтр("ru='ИП'");
|
||
ИначеЕсли УбратьИзНаименованияОрганизационнуюФорму(Наименование, НСтр("ru='Общество с ограниченной ответственностью'")) Тогда
|
||
ОрганизационноПравоваяФорма = НСтр("ru='Общество с ограниченной ответственностью'");
|
||
ОрганизационноПравоваяФормаСокращенно = НСтр("ru='ООО'");
|
||
ИначеЕсли УбратьИзНаименованияОрганизационнуюФорму(Наименование, НСтр("ru='Открытое акционерное общество'")) Тогда
|
||
ОрганизационноПравоваяФорма = НСтр("ru='Открытое акционерное общество'");
|
||
ОрганизационноПравоваяФормаСокращенно = НСтр("ru='ОАО'");
|
||
ИначеЕсли УбратьИзНаименованияОрганизационнуюФорму(Наименование, НСтр("ru='Закрытое акционерное общество'")) Тогда
|
||
ОрганизационноПравоваяФорма = НСтр("ru='Закрытое акционерное общество'");
|
||
ОрганизационноПравоваяФормаСокращенно = НСтр("ru='ЗАО'");
|
||
ИначеЕсли УбратьИзНаименованияОрганизационнуюФорму(Наименование, НСтр("ru='Индивидуальный предприниматель'")) Тогда
|
||
ОрганизационноПравоваяФорма = НСтр("ru='Индивидуальный предприниматель'");
|
||
ОрганизационноПравоваяФормаСокращенно = НСтр("ru='ИП'");
|
||
Иначе
|
||
ОрганизационноПравоваяФорма = "";
|
||
ОрганизационноПравоваяФормаСокращенно = "";
|
||
КонецЕсли;
|
||
|
||
Если НЕ ПустаяСтрока(ОрганизационноПравоваяФорма) Тогда
|
||
КоличествоКавычек = СтрЧислоВхождений(Наименование, """");
|
||
Если КоличествоКавычек > 1 Тогда
|
||
// Наименование организации внутри внешних кавычек
|
||
ПозицияПервойКавычки = СтрНайти(Наименование, """");
|
||
ПозицияПоследнейКавычки = 0;
|
||
|
||
ВремНаименование = Наименование;
|
||
|
||
ПозицияКавычки = ПозицияПервойКавычки;
|
||
Пока ПозицияКавычки > 0 Цикл
|
||
ПозицияПоследнейКавычки = ПозицияПоследнейКавычки + ПозицияКавычки;
|
||
ВремНаименование = Сред(ВремНаименование, ПозицияКавычки + 1);
|
||
ПозицияКавычки = СтрНайти(ВремНаименование, """");
|
||
КонецЦикла;
|
||
|
||
Наименование = Сред(Наименование, ПозицияПервойКавычки + 1, ПозицияПоследнейКавычки - ПозицияПервойКавычки - 1);
|
||
Если НЕ КоличествоКавычек%2 = 0 Тогда
|
||
Наименование = Наименование + """";
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если НЕ ЗначениеЗаполнено(ОрганизационноПравоваяФорма) Тогда
|
||
ПолноеНаименование = Наименование;
|
||
Иначе
|
||
ПолноеНаименование = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 ""%2""",
|
||
ОрганизационноПравоваяФорма, Наименование);
|
||
КонецЕсли;
|
||
|
||
СокращенноеНаименование = Наименование + ?(ПустаяСтрока(ОрганизационноПравоваяФормаСокращенно), "", " ")
|
||
+ ОрганизационноПравоваяФормаСокращенно;
|
||
|
||
СтруктураНаименования = Новый Структура("Наименование, СокращенноеНаименование, ПолноеНаименование",
|
||
Наименование, СокращенноеНаименование, ПолноеНаименование);
|
||
//-- Локализация
|
||
|
||
Возврат СтруктураНаименования;
|
||
|
||
КонецФункции
|
||
|
||
// Функция получает валюту, соответствующую номеру банковского счета.
|
||
// 6-8 разряды номера банковского счета соответствуют коду валюты.
|
||
// Для рублей используется код 810.
|
||
//
|
||
// Параметры:
|
||
// НомерСчета - Число - Номер банковского счета.
|
||
//
|
||
// Возвращаемое значение:
|
||
// СправочникСсылка.Валюты - Валюта банковского счета.
|
||
//
|
||
Функция ПолучитьВалютуПоНомеруСчета(НомерСчета) Экспорт
|
||
|
||
Валюта = Справочники.Валюты.ПустаяСсылка();
|
||
|
||
//++ Локализация
|
||
УстановитьПривилегированныйРежим(Истина);
|
||
|
||
КодВалюты = Сред(НомерСчета, 6, 3);
|
||
Если КодВалюты = "810" Тогда
|
||
КодВалюты = "643";
|
||
КонецЕсли;
|
||
|
||
Запрос = Новый Запрос("
|
||
|ВЫБРАТЬ
|
||
| Валюты.Ссылка КАК Валюта
|
||
|ИЗ
|
||
| Справочник.Валюты КАК Валюты
|
||
|ГДЕ
|
||
| Валюты.Код = &КодВалюты
|
||
|");
|
||
Запрос.УстановитьПараметр("КодВалюты", КодВалюты);
|
||
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
Если Выборка.Следующий() Тогда
|
||
Валюта = Выборка.Валюта;
|
||
КонецЕсли;
|
||
//-- Локализация
|
||
|
||
Возврат Валюта;
|
||
|
||
КонецФункции
|
||
|
||
// Формирует описание реквизитов объекта, заполняемых по статистике их использования.
|
||
//
|
||
// Параметры:
|
||
// ОписаниеРеквизитов - см. ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов.
|
||
//
|
||
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
|
||
|
||
//++ Локализация
|
||
Если ПолучитьФункциональнуюОпцию("ИспользоватьВыплатыСамозанятым") Тогда
|
||
|
||
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
|
||
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Организация, Контрагент, ХозяйственнаяОперация, СписокКонтрагентов";
|
||
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Договор";
|
||
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Организация, Контрагент, ХозяйственнаяОперация";
|
||
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
|
||
"ОперацияССамозанятым", Параметры);
|
||
|
||
КонецЕсли;
|
||
//-- Локализация
|
||
|
||
КонецПроцедуры
|
||
|
||
// Формирует описание реквизитов объекта, заполняемых по статистике их использования.
|
||
//
|
||
// Параметры:
|
||
// ОписаниеРеквизитов - см. ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов.
|
||
//
|
||
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПриобретенияПоСтатистике(ОписаниеРеквизитов) Экспорт
|
||
|
||
//++ Локализация
|
||
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
|
||
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда =
|
||
"Организация, Контрагент, ХозяйственнаяОперация, Договор, НалогообложениеНДС";
|
||
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены =
|
||
"Организация, Контрагент, ХозяйственнаяОперация, НалогообложениеНДС";
|
||
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
|
||
"ОперацияССамозанятым", Параметры);
|
||
//-- Локализация
|
||
|
||
КонецПроцедуры
|
||
|
||
// Список хозяйственных операций, доступных для документа основания.
|
||
//
|
||
// Параметры:
|
||
// ДокументОснование - ДокументСсылка, СправочникСсылка - основание, по которому создан документ.
|
||
// СписокОпераций - СписокЗначений из ПеречислениеСсылка.ХозяйственныеОперации, Неопределено - доступные операции по основанию.
|
||
//
|
||
Процедура ПолучитьДоступныеХозяйственныеОперацииПоОснованию(ДокументОснование, СписокОпераций = Неопределено) Экспорт
|
||
|
||
Если СписокОпераций = Неопределено Тогда
|
||
СписокОпераций = Новый СписокЗначений;
|
||
КонецЕсли;
|
||
|
||
//++ Локализация
|
||
Если ЗначениеЗаполнено(ДокументОснование) Тогда
|
||
|
||
ТипОснования = ТипЗнч(ДокументОснование);
|
||
|
||
Если ТипОснования = Тип("ДокументСсылка.ЗаявлениеОВвозеТоваров") Тогда
|
||
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПеречислениеВБюджет);
|
||
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ВыемкаДенежныхСредствИзКассыККМ") Тогда
|
||
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзДругойКассы);
|
||
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
//-- Локализация
|
||
|
||
КонецПроцедуры
|
||
|
||
// Процедура проверяет возможность корреспонденции между банковскими счетами, указанными в договоре
|
||
//
|
||
// Параметры:
|
||
// ДоговорОбъект - СправочникОбъект - договор, по которому нужно получить возможные корреспонденции
|
||
// Отказ - Булево - Признак отказа от продолжения работы.
|
||
//
|
||
Процедура ПроверитьДоговорНаВозможностьКорреспонденцииСоСчетомЦифровогоРубля(ДоговорОбъект, Отказ) Экспорт
|
||
|
||
ПараметрыКорреспонденции =
|
||
ПараметрыКорреспонденцииСоСчетомЦифровогорубля(ДоговорОбъект.БанковскийСчет,
|
||
ДоговорОбъект.БанковскийСчетКонтрагента);
|
||
|
||
Если Не ПараметрыКорреспонденции.ДопустимаКорреспонденцияСоСчетомЦифровогоРубля Тогда
|
||
|
||
ИмяЭлементаПозиционирования =
|
||
?(ПараметрыКорреспонденции.КоррСчетЦифровогоРубля, "БанковскийСчет", "БанковскийСчетКонтрагента");
|
||
|
||
ТекстОшибки = НСтр("ru = 'Расчетный счет не может корреспондировать со счетом цифрового рубля.
|
||
|Укажите другой счет'");
|
||
|
||
ОбщегоНазначения.СообщитьПользователю(
|
||
ТекстОшибки,
|
||
ДоговорОбъект,
|
||
ИмяЭлементаПозиционирования,
|
||
,
|
||
Отказ);
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Функция определяет:
|
||
// -допустимость корреспонденции со счетом цифрового рубля,
|
||
// -является ли корр. счет счетом цифрового рубля.
|
||
//
|
||
// Параметры:
|
||
// БанковскийСчет - СправочникСсылка.БанковскиеСчетаОрганизаций,
|
||
// СправочникСсылка.БанковскиеСчетаКонтрагентов - проверяемый счет.
|
||
// КорБанковскийСчет - СправочникСсылка.БанковскиеСчетаОрганизаций,
|
||
// СправочникСсылка.БанковскиеСчетаКонтрагентов - проверяемый кор. счет.
|
||
//
|
||
// Возвращаемое значение:
|
||
// -Структура - параметры корреспонденции со счетом цифрового рубля:
|
||
// *ДопустимаКорреспонденцияСоСчетомЦифровогоРубля - Булево - признак допустимости корресп. со счетом цифрового рубля
|
||
// *КоррСчетЦифровогоРубля - Булево - признак того, что в качестве корр счета используется счет цифрового рубля.
|
||
//
|
||
Функция ПараметрыКорреспонденцииСоСчетомЦифровогорубля(БанковскийСчет, КорБанковскийСчет) Экспорт
|
||
|
||
ПараметрыКорреспонденции = Новый Структура;
|
||
ПараметрыКорреспонденции.Вставить("ДопустимаКорреспонденцияСоСчетомЦифровогоРубля", Истина);
|
||
ПараметрыКорреспонденции.Вставить("КоррСчетЦифровогоРубля", Ложь);
|
||
|
||
Если Не ЗначениеЗаполнено(БанковскийСчет)
|
||
ИЛИ Не ЗначениеЗаполнено(КорБанковскийСчет) Тогда
|
||
Возврат ПараметрыКорреспонденции;
|
||
КонецЕсли;
|
||
|
||
МассивБанковскихСчетов = ОбщегоНазначенияКлиентСервер.МассивЗначений(БанковскийСчет, КорБанковскийСчет);
|
||
ДанныеБанковскихСчетов = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(МассивБанковскихСчетов, "СчетЦифровогоРубля");
|
||
|
||
КоррСчетЦифровогоРубля = ДанныеБанковскихСчетов.Получить(КорБанковскийСчет);
|
||
СчетЦифровогоРубля = ДанныеБанковскихСчетов.Получить(БанковскийСчет);
|
||
|
||
ПараметрыКорреспонденции.ДопустимаКорреспонденцияСоСчетомЦифровогоРубля =
|
||
(СчетЦифровогоРубля И КоррСчетЦифровогоРубля)
|
||
ИЛИ (Не СчетЦифровогоРубля И НЕ КоррСчетЦифровогоРубля);
|
||
ПараметрыКорреспонденции.КоррСчетЦифровогоРубля = КоррСчетЦифровогоРубля;
|
||
|
||
Возврат ПараметрыКорреспонденции;
|
||
|
||
КонецФункции
|
||
|
||
// Добавляет команды создания банковских счетов на форму.
|
||
//
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения - форма, в группу которой будут добавлены команды создания банковских счетов.
|
||
// СправочникМетаданные - ОбъектМетаданных - метаданные справочника для проверки прав доступа.
|
||
//
|
||
Процедура ДобавитьКомандыСозданияБанковскихСчетов(Форма, СправочникМетаданные) Экспорт
|
||
|
||
ГруппаСоздать = Форма.Элементы.Найти("ГруппаСоздать");
|
||
Если ГруппаСоздать = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Если Не ПравоДоступа("Добавление", СправочникМетаданные) Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
КомандыДобавления = Новый Соответствие;
|
||
КомандыДобавления.Вставить("СоздатьБанковскийСчет", "Создать");
|
||
ГруппаСоздать.Вид = ВидГруппыФормы.ГруппаКнопок;
|
||
|
||
//++ Локализация
|
||
ГруппаСоздать.Вид = ВидГруппыФормы.Подменю;
|
||
ГруппаСоздать.Картинка = БиблиотекаКартинок.СоздатьЭлементСписка;
|
||
КомандыДобавления.Очистить();
|
||
КомандыДобавления.Вставить("СоздатьСчетЦифровогоРубля", НСтр("ru = 'Счет цифрового рубля'"));
|
||
КомандыДобавления.Вставить("СоздатьБанковскийСчет", НСтр("ru = 'Банковский счет'"));
|
||
//-- Локализация
|
||
|
||
Для Каждого ОписаниеКоманды Из КомандыДобавления Цикл
|
||
КомандаСоздания = Форма.Команды.Добавить(ОписаниеКоманды.Ключ);
|
||
КомандаСоздания.Действие = "Подключаемый_СоздатьБанковскийСчет";
|
||
КнопкаКоманды = Форма.Элементы.Добавить(ОписаниеКоманды.Ключ, Тип("КнопкаФормы"), ГруппаСоздать);
|
||
КнопкаКоманды.Заголовок = ОписаниеКоманды.Значение;
|
||
КнопкаКоманды.ИмяКоманды = ОписаниеКоманды.Ключ;
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Добавляет доступные формы оплаты
|
||
//
|
||
// Параметры:
|
||
// ФормыОплаты - Массив из ПеречислениеСсылка.ФормыОплаты - список форм оплаты.
|
||
//
|
||
Процедура ДобавитьДоступныеФормыОплаты(ФормыОплаты) Экспорт
|
||
|
||
//++ Локализация
|
||
ФормыОплаты.Добавить(Перечисления.ФормыОплаты.СистемаБыстрыхПлатежей);
|
||
//-- Локализация
|
||
|
||
Возврат;
|
||
|
||
КонецПроцедуры
|
||
|
||
//++ Локализация
|
||
|
||
#Область ИнтерфейсныеЭлементы
|
||
|
||
// Функция формирует массив хозяйственных операций, для которых доступно перечисление в бюджет.
|
||
//
|
||
// Возвращаемое значение:
|
||
// - Массив из ПеречислениеСсылка.ХозяйственныеОперации.
|
||
//
|
||
Функция МассивОперацийПеречисленияВБюджет() Экспорт
|
||
|
||
МассивОпераций = Новый Массив;
|
||
МассивОпераций.Добавить(Перечисления.ХозяйственныеОперации.ОплатаПоставщику);
|
||
МассивОпераций.Добавить(Перечисления.ХозяйственныеОперации.ВозвратОплатыКлиенту);
|
||
МассивОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПеречислениеТаможне);
|
||
МассивОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПеречислениеВБюджет);
|
||
МассивОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПрочаяВыдачаДенежныхСредств);
|
||
МассивОпераций.Добавить(Перечисления.ХозяйственныеОперации.ОплатаПоКредитам);
|
||
|
||
МассивОпераций.Добавить(Перечисления.ХозяйственныеОперации.ВозвратНалогов);
|
||
|
||
Возврат МассивОпераций;
|
||
|
||
КонецФункции
|
||
|
||
// Процедура устанавливает видимость выбора операции оплаты таможенного платежа в форме.
|
||
//
|
||
// Параметры:
|
||
// Поле - ПолеФормы - Поле формы для выбора хозяйственной операции.
|
||
//
|
||
Процедура УстановитьВидимостьОперацииПеречислениеТаможне(Поле) Экспорт
|
||
|
||
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьИмпортныеЗакупки") Тогда
|
||
ЭлементСписка = Поле.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ПеречислениеТаможне);
|
||
Если ЭлементСписка <> Неопределено Тогда
|
||
Поле.СписокВыбора.Удалить(ЭлементСписка);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Процедура устанавливает видимость выбора операций выдачи и погашения займов сотрудникам в форме.
|
||
//
|
||
// Параметры:
|
||
// Поле - ПолеФормы - Поле формы для выбора хозяйственной операции.
|
||
//
|
||
Процедура УстановитьВидимостьОперацийЗаймамСотрудникам(Поле) Экспорт
|
||
|
||
ОперацииПоЗаймамДоступны = Не ПолучитьФункциональнуюОпцию("УправлениеТорговлей");
|
||
|
||
|
||
Если Не ОперацииПоЗаймамДоступны Тогда
|
||
ЭлементСписка = Поле.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ВыдачаЗаймаСотруднику);
|
||
Если ЭлементСписка <> Неопределено Тогда
|
||
Поле.СписокВыбора.Удалить(ЭлементСписка);
|
||
КонецЕсли;
|
||
ЭлементСписка = Поле.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ПогашениеЗаймаСотрудником);
|
||
Если ЭлементСписка <> Неопределено Тогда
|
||
Поле.СписокВыбора.Удалить(ЭлементСписка);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Подмена префикса организации префиксом кассовой книги
|
||
//
|
||
// Параметры:
|
||
// Источник - ДокументОбъект - ПКО, РКО, Кассовая книга
|
||
// СтандартнаяОбработка - Булево - флаг стандартной обработки подписки
|
||
// Префикс - Строка - префикс объекта, который нужно изменить.
|
||
//
|
||
Процедура УстановитьПрефиксКассовойКнигиНомеруДокументаПриУстановкеНовогоНомера(Источник, СтандартнаяОбработка, Префикс) Экспорт
|
||
|
||
РеквизитыПрефиксации = "";
|
||
Если ТипЗнч(Источник) = Тип("ДокументОбъект.ЛистКассовойКниги")
|
||
Или ТипЗнч(Источник) = Тип("ДокументОбъект.ИнвентаризацияНаличныхДенежныхСредств") Тогда
|
||
РеквизитыПрефиксации = ПолучитьПрефиксациюКассыКассовойКниги(Источник.КассоваяКнига);
|
||
ИначеЕсли ТипЗнч(Источник) = Тип("ДокументОбъект.ПриходныйКассовыйОрдер")
|
||
Или ТипЗнч(Источник) = Тип("ДокументОбъект.РасходныйКассовыйОрдер") Тогда
|
||
РеквизитыПрефиксации = ПолучитьПрефиксациюКассыКассовойКниги(Источник.Касса);
|
||
КонецЕсли;
|
||
|
||
Если ЗначениеЗаполнено(РеквизитыПрефиксации)
|
||
И ЗначениеЗаполнено(РеквизитыПрефиксации.ИспользоватьПрефикс)
|
||
И РеквизитыПрефиксации.ИспользоватьПрефикс Тогда
|
||
|
||
ПрефиксКассовойКниги = СтроковыеФункцииКлиентСервер.ДополнитьСтроку(РеквизитыПрефиксации.Префикс, 2, "0", "Слева");
|
||
Префикс = ПрефиксКассовойКниги + Прав(Префикс, СтрДлина(Префикс) - 2);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Сброс номера документа при необходимости его изменения
|
||
//
|
||
// Параметры:
|
||
// Источник - ДокументОбъект - ПКО, РКО, Кассовая книга
|
||
// Отказ - Булево - флаг отказа
|
||
// РежимЗаписи - РежимЗаписиДокумента - Режим записи
|
||
// РежимПроведения - РежимПроведенияДокумента - Режим проведения.
|
||
//
|
||
Процедура ПроверитьНомерДокументаПоДатеОрганизацииКассовойКнигеПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
|
||
|
||
Если Источник.ОбменДанными.Загрузка Тогда
|
||
Возврат;
|
||
ИначеЕсли Источник.ЭтоНовый() Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ПрефиксацияОбъектовСобытия.ПроверитьНомерДокументаПоДатеИОрганизации(Источник, Отказ, РежимЗаписи, РежимПроведения);
|
||
|
||
РеквизитыПрефиксацииДоИзменения = "";
|
||
РеквизитыПрефиксацииПослеИзменения = "";
|
||
|
||
Если ТипЗнч(Источник) = Тип("ДокументОбъект.ЛистКассовойКниги")
|
||
Или ТипЗнч(Источник) = Тип("ДокументОбъект.ИнвентаризацияНаличныхДенежныхСредств") Тогда
|
||
|
||
КассоваяКнигаСсылка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Источник.Ссылка, "КассоваяКнига");
|
||
РеквизитыПрефиксацииДоИзменения = ПолучитьПрефиксациюКассыКассовойКниги(КассоваяКнигаСсылка);
|
||
|
||
РеквизитыПрефиксацииПослеИзменения = ПолучитьПрефиксациюКассыКассовойКниги(Источник.КассоваяКнига);
|
||
|
||
ИначеЕсли ТипЗнч(Источник) = Тип("ДокументОбъект.ПриходныйКассовыйОрдер")
|
||
Или ТипЗнч(Источник) = Тип("ДокументОбъект.РасходныйКассовыйОрдер") Тогда
|
||
|
||
КассаСсылка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Источник.Ссылка, "Касса");
|
||
РеквизитыПрефиксацииДоИзменения = ПолучитьПрефиксациюКассыКассовойКниги(КассаСсылка);
|
||
|
||
РеквизитыПрефиксацииПослеИзменения = ПолучитьПрефиксациюКассыКассовойКниги(Источник.Касса);
|
||
КонецЕсли;
|
||
|
||
ПрефиксДоИзменения = ?(
|
||
ЗначениеЗаполнено(РеквизитыПрефиксацииДоИзменения)
|
||
И ЗначениеЗаполнено(РеквизитыПрефиксацииДоИзменения.ИспользоватьПрефикс)
|
||
И РеквизитыПрефиксацииДоИзменения.ИспользоватьПрефикс,
|
||
РеквизитыПрефиксацииДоИзменения.Префикс,
|
||
"");
|
||
|
||
ПрефиксПослеИзменения = ?(
|
||
ЗначениеЗаполнено(РеквизитыПрефиксацииПослеИзменения)
|
||
И ЗначениеЗаполнено(РеквизитыПрефиксацииПослеИзменения.ИспользоватьПрефикс)
|
||
И РеквизитыПрефиксацииПослеИзменения.ИспользоватьПрефикс,
|
||
РеквизитыПрефиксацииПослеИзменения.Префикс,
|
||
"");
|
||
|
||
Если ПрефиксДоИзменения <> ПрефиксПослеИзменения Тогда
|
||
Источник.Номер = "";
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Устанавливает параметры выбора договора с заказчиком в рамках кооперации ГОЗ
|
||
//
|
||
// Параметры:
|
||
// Элемент - ПолеФормы - Поле ввода договора.
|
||
// ДополнительныеПараметры - Структура - Набор дополнительных параметров
|
||
//
|
||
Процедура УстановитьПараметрыВыбораДоговораСЗаказчиком(Элемент, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
ПараметрыВыбораДоговора = Новый Массив;
|
||
|
||
ПараметрыВыбораДоговора.Добавить(Новый ПараметрВыбора("Отбор.ПлатежиПо275ФЗ", Истина));
|
||
ПараметрыВыбораДоговора.Добавить(Новый ПараметрВыбора("Отбор.ДоговорСУчастникомГОЗ", Истина));
|
||
ПараметрыВыбораДоговора.Добавить(Новый ПараметрВыбора("Отбор.ПометкаУдаления", Ложь));
|
||
ПараметрыВыбораДоговора.Добавить(Новый ПараметрВыбора("Отбор.ПодходитДляПодбораВДоговорЗаказчика", Истина));
|
||
|
||
Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура") Тогда
|
||
Для Каждого ДополнительныйПараметр Из ДополнительныеПараметры Цикл
|
||
ПараметрыВыбораДоговора.Добавить(Новый ПараметрВыбора("Отбор." + ДополнительныйПараметр.Ключ, ДополнительныйПараметр.Значение));
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
Элемент.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораДоговора);
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#Область ЗаполнениеДокументов
|
||
|
||
// Проверяет корреспонденцию между банковскими счетами.
|
||
//
|
||
// Параметры:
|
||
// ДокументОбъект - ДокументОбъект - документ, для которого необходимо выполнить проверку корреспонденции
|
||
// Отказ - Булево - Признак отказа от продолжения работы
|
||
// ХозяйственнаяОперацияДокумента - ПеречислениеСсылка.ХозяйственныеОперации - хозяйственная операция документа
|
||
// ОшибкиЗаполнения - Строка - Строка, накапливающая ошибки проверок.
|
||
//
|
||
Процедура ПроверитьКорреспонденциюБанковскихСчетов(ДокументОбъект, Отказ, ХозяйственнаяОперацияДокумента, ОшибкиЗаполнения = "") Экспорт
|
||
|
||
ПараметрыПроверкиКорреспонденции = Неопределено;
|
||
Если Не ДокументОбъект.ДополнительныеСвойства.Свойство(
|
||
"ПараметрыПроверкиКорреспонденцииБанковскихСчетов", ПараметрыПроверкиКорреспонденции) Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Операции = Перечисления.ХозяйственныеОперации;
|
||
|
||
ИмяЭлементаПозиционирования = ПараметрыПроверкиКорреспонденции.ИмяЭлементаБанковскийСчет;
|
||
КорСчетОрганизацииЦифровогоРубля = ПараметрыПроверкиКорреспонденции.КорСчетОрганизацииЦифровогоРубля;
|
||
КорСчетКонтрагентаЦифровогоРубля = ПараметрыПроверкиКорреспонденции.КорСчетКонтрагентаЦифровогоРубля;
|
||
|
||
КорреспонденцияСЦифровымСчетом = ПараметрыПроверкиКорреспонденции.СчетЦифровогоРубляОрганизации ИЛИ
|
||
КорСчетОрганизацииЦифровогоРубля ИЛИ
|
||
КорСчетКонтрагентаЦифровогоРубля;
|
||
|
||
РазныйХарактерСчетовОрганизация = ?(КорСчетОрганизацииЦифровогоРубля,
|
||
ПараметрыПроверкиКорреспонденции.РасчетныйСчетОрганизации,
|
||
ПараметрыПроверкиКорреспонденции.СчетЦифровогоРубляОрганизации);
|
||
|
||
РазныйХарактерСчетовКонтрагент = ?(КорСчетКонтрагентаЦифровогоРубля,
|
||
ПараметрыПроверкиКорреспонденции.РасчетныйСчетОрганизации,
|
||
ПараметрыПроверкиКорреспонденции.СчетЦифровогоРубляОрганизации);
|
||
|
||
// Разрешаются корреспонденции только между счетами ЦР
|
||
ОперацииМеждуОрганизациями = Новый Массив;
|
||
|
||
// Операции СБДС
|
||
ОперацииМеждуОрганизациями.Добавить(Операции.ВозвратДенежныхСредствВДругуюОрганизацию);
|
||
ОперацииМеждуОрганизациями.Добавить(Операции.ОплатаДенежныхСредствВДругуюОрганизацию);
|
||
|
||
// Операции ПБДС
|
||
ОперацииМеждуОрганизациями.Добавить(Операции.ВозвратДенежныхСредствОтДругойОрганизации);
|
||
ОперацииМеждуОрганизациями.Добавить(Операции.ПоступлениеДенежныхСредствИзДругойОрганизации);
|
||
|
||
// Операции СБДС и ПБДС
|
||
ОперацииМеждуОрганизациями.Добавить(Операции.ВнутренняяПередачаДенежныхСредств);
|
||
|
||
ОперацииОрганизацияКонтрагент = Новый Массив;
|
||
|
||
// Операции СБДС
|
||
ОперацииОрганизацияКонтрагент.Добавить(Операции.ВозвратОплатыКлиенту);
|
||
ОперацииОрганизацияКонтрагент.Добавить(Операции.ВыдачаДенежныхСредствПодотчетнику);
|
||
ОперацииОрганизацияКонтрагент.Добавить(Операции.ВыплатаЗарплатыНаЛицевыеСчета);
|
||
ОперацииОрганизацияКонтрагент.Добавить(Операции.ВыплатаЗарплатыПоЗарплатномуПроекту);
|
||
ОперацииОрганизацияКонтрагент.Добавить(Операции.ВыплатаЗарплаты);
|
||
ОперацииОрганизацияКонтрагент.Добавить(Операции.ПеречислениеТаможне);
|
||
ОперацииОрганизацияКонтрагент.Добавить(Операции.ОплатаПоставщику);
|
||
ОперацииОрганизацияКонтрагент.Добавить(Операции.ПеречислениеВБюджет);
|
||
ОперацииОрганизацияКонтрагент.Добавить(Операции.ПрочаяВыдачаДенежныхСредств);
|
||
|
||
// Операции ПБДС
|
||
ОперацииОрганизацияКонтрагент.Добавить(Операции.ПоступлениеОплатыОтКлиента);
|
||
ОперацииОрганизацияКонтрагент.Добавить(Операции.ПрочееПоступлениеДенежныхСредств);
|
||
ОперацииОрганизацияКонтрагент.Добавить(Операции.ВозвратДенежныхСредствОтПоставщика);
|
||
ОперацииОрганизацияКонтрагент.Добавить(Операции.ВозвратДенежныхСредствОтПодотчетника);
|
||
ОперацииОрганизацияКонтрагент.Добавить(Операции.ВозвратДенежныхСредствОтАрендодателя);
|
||
ОперацииОрганизацияКонтрагент.Добавить(Операции.ВозвратНеперечисленныхДС);
|
||
ОперацииОрганизацияКонтрагент.Добавить(Операции.ВозвратНеперечисленнойЗарплатыПоЗарплатномуПроекту);
|
||
ОперацииОрганизацияКонтрагент.Добавить(Операции.ВозвратНалогов);
|
||
|
||
// Запрещены корреспонденции со счетом ЦР
|
||
ЗапрещенныеОперации = Новый Массив;
|
||
|
||
// Операции СБДС
|
||
ЗапрещенныеОперации.Добавить(Операции.СнятиеНаличныхДенежныхСредств);
|
||
ЗапрещенныеОперации.Добавить(Операции.ПеречислениеНаДепозиты);
|
||
ЗапрещенныеОперации.Добавить(Операции.КонвертацияВалюты);
|
||
ЗапрещенныеОперации.Добавить(Операции.ВозвратОплатыКлиентуНаПлатежнуюКарту);
|
||
ЗапрещенныеОперации.Добавить(Операции.ВозвратОплатыНаПлатежнуюКарту);
|
||
ЗапрещенныеОперации.Добавить(Операции.ОплатаПоКредитам);
|
||
ЗапрещенныеОперации.Добавить(Операции.ВыдачаЗаймаСотруднику);
|
||
ЗапрещенныеОперации.Добавить(Операции.ВыдачаЗаймов);
|
||
|
||
// Операции ПБДС
|
||
ЗапрещенныеОперации.Добавить(Операции.ПоступлениеДенежныхСредствИзКассыНаРасчетныйСчет);
|
||
ЗапрещенныеОперации.Добавить(Операции.ПоступлениеОплатыПоПлатежнойКарте);
|
||
ЗапрещенныеОперации.Добавить(Операции.ПоступлениеДенежныхСредствПоКредитам);
|
||
ЗапрещенныеОперации.Добавить(Операции.ПоступлениеДенежныхСредствПоДепозитам);
|
||
ЗапрещенныеОперации.Добавить(Операции.ПогашениеЗаймаСотрудником);
|
||
ЗапрещенныеОперации.Добавить(Операции.ПоступлениеДенежныхСредствПоЗаймамВыданным);
|
||
|
||
ЭтоОперацияМеждуОрганизациями = Не ОперацииМеждуОрганизациями.Найти(ХозяйственнаяОперацияДокумента) = Неопределено;
|
||
ЭтоОперацияОрганизацияКонтрагент = Не ОперацииОрганизацияКонтрагент.Найти(ХозяйственнаяОперацияДокумента) = Неопределено;
|
||
ЭтоЗапрещеннаяОперация = Не ЗапрещенныеОперации.Найти(ХозяйственнаяОперацияДокумента) = Неопределено;
|
||
|
||
НедопустимаяКорреспонденцияСОрганизацией = ЭтоОперацияМеждуОрганизациями И РазныйХарактерСчетовОрганизация;
|
||
НедопустимаяКорреспонденцияСКонтрагентом = ЭтоОперацияОрганизацияКонтрагент И РазныйХарактерСчетовКонтрагент;
|
||
|
||
Если ЭтоЗапрещеннаяОперация Тогда
|
||
|
||
Если КорСчетОрганизацииЦифровогоРубля Тогда
|
||
ИмяЭлементаПозиционирования = ПараметрыПроверкиКорреспонденции.ИмяЭлементаКорБанковскийСчет;
|
||
ИначеЕсли КорСчетКонтрагентаЦифровогоРубля Тогда
|
||
ИмяЭлементаПозиционирования = "БанковскийСчетКонтрагента";
|
||
КонецЕсли;
|
||
|
||
// Для позиционирования на счете, который не является счетом цифрового рубля
|
||
ИначеЕсли НедопустимаяКорреспонденцияСОрганизацией И НЕ КорСчетОрганизацииЦифровогоРубля Тогда
|
||
ИмяЭлементаПозиционирования = ПараметрыПроверкиКорреспонденции.ИмяЭлементаКорБанковскийСчет;
|
||
ИначеЕсли НедопустимаяКорреспонденцияСКонтрагентом И НЕ КорСчетКонтрагентаЦифровогоРубля Тогда
|
||
ИмяЭлементаПозиционирования = "БанковскийСчетКонтрагента";
|
||
КонецЕсли;
|
||
|
||
Если НедопустимаяКорреспонденцияСОрганизацией
|
||
ИЛИ НедопустимаяКорреспонденцияСКонтрагентом Тогда
|
||
|
||
// позиционирование на элементе расчетного счета
|
||
Текст = НСтр("ru = 'Расчетный счет не может корреспондировать со счетом цифрового рубля.
|
||
|Укажите другой счет'");
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, Текст);
|
||
|
||
ОбщегоНазначения.СообщитьПользователю(
|
||
Текст,
|
||
ДокументОбъект,
|
||
ИмяЭлементаПозиционирования,
|
||
,
|
||
Отказ);
|
||
|
||
КонецЕсли;
|
||
|
||
Если ЭтоЗапрещеннаяОперация И КорреспонденцияСЦифровымСчетом Тогда
|
||
|
||
// позиционирование на элементе счета цифрового рубля
|
||
Текст = СтрШаблон(НСтр("ru = 'Счет цифрового рубля не может быть использован для хозяйственной операции ""%1"".
|
||
|Укажите другой счет'"),
|
||
ХозяйственнаяОперацияДокумента);
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, Текст);
|
||
|
||
ОбщегоНазначения.СообщитьПользователю(
|
||
Текст,
|
||
ДокументОбъект,
|
||
ИмяЭлементаПозиционирования,
|
||
,
|
||
Отказ);
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращает параметры проверки корреспонденции между банковскими счетами для документов.
|
||
//
|
||
// Параметры:
|
||
// Объект - ДокументОбъект.ПоступлениеБезналичныхДенежныхСредств,
|
||
// ДокументОбъект.СписаниеБезналичныхДенежныхСредств - Документ, движения которого следует исключить.
|
||
// ИмяРеквизитаКорБанкСчетОрганизации - Строка - имя реквизита кор. банковского счета организации.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// *СчетЦифровогоРубляОрганизации - Булево - признак счета цифрового рубля
|
||
// *РасчетныйСчетОрганизации - Булево - признак, если счет не является цифровым
|
||
// *КорСчетОрганизацииЦифровогоРубля - Булево - признак счета цифрового рубля
|
||
// *КорСчетКонтрагентаЦифровогоРубля - Булево - признак счета цифрового рубля
|
||
// *ИмяЭлементаБанковскийСчет - Строка - имя элемента банковского счета
|
||
// *ИмяЭлементаКорБанковскийСчет - Строка - имя элемента корреспондирующего банковского счета
|
||
//
|
||
Функция ПараметрыПроверкиКорреспонденцииМеждуБанковскимиСчетами(Объект, ИмяРеквизитаКорБанкСчетОрганизации) Экспорт
|
||
|
||
КорБанковскийСчетОрганизации = Объект[ИмяРеквизитаКорБанкСчетОрганизации];
|
||
МассивБанковскихСчетов = ОбщегоНазначенияКлиентСервер.МассивЗначений(
|
||
Объект.БанковскийСчет, КорБанковскийСчетОрганизации, Объект.БанковскийСчетКонтрагента);
|
||
ДанныеБанковскихСчетов =
|
||
ОбщегоНазначения.ЗначениеРеквизитаОбъектов(МассивБанковскихСчетов, "СчетЦифровогоРубля");
|
||
|
||
БанковскийСчетЦифровогоРубля = ?(ЗначениеЗаполнено(Объект.БанковскийСчет),
|
||
ДанныеБанковскихСчетов.Получить(Объект.БанковскийСчет),
|
||
Ложь);
|
||
КорСчетОрганизацииЦифровогоРубля = ?(ЗначениеЗаполнено(КорБанковскийСчетОрганизации),
|
||
ДанныеБанковскихСчетов.Получить(КорБанковскийСчетОрганизации),
|
||
Ложь);
|
||
КорСчетКонтрагентаЦифровогоРубля = ?(ЗначениеЗаполнено(Объект.БанковскийСчетКонтрагента),
|
||
ДанныеБанковскихСчетов.Получить(Объект.БанковскийСчетКонтрагента),
|
||
Ложь);
|
||
|
||
ПараметрыПроверки = Новый Структура;
|
||
ПараметрыПроверки.Вставить("СчетЦифровогоРубляОрганизации", БанковскийСчетЦифровогоРубля = Истина);
|
||
ПараметрыПроверки.Вставить("РасчетныйСчетОрганизации", БанковскийСчетЦифровогоРубля = Ложь);
|
||
ПараметрыПроверки.Вставить("КорСчетОрганизацииЦифровогоРубля", КорСчетОрганизацииЦифровогоРубля);
|
||
ПараметрыПроверки.Вставить("КорСчетКонтрагентаЦифровогоРубля", КорСчетКонтрагентаЦифровогоРубля);
|
||
ПараметрыПроверки.Вставить("ИмяЭлементаБанковскийСчет", "БанковскийСчет");
|
||
ПараметрыПроверки.Вставить("ИмяЭлементаКорБанковскийСчет", ИмяРеквизитаКорБанкСчетОрганизации);
|
||
|
||
Возврат ПараметрыПроверки;
|
||
|
||
КонецФункции
|
||
|
||
|
||
// Процедура заполняет документ на основании уведомления о зачислении валюты
|
||
//
|
||
// Параметры:
|
||
// ДокументОснование - ДокументСсылка.УведомлениеОЗачисленииВалюты - Документ - основание
|
||
// ДокументОбъект - ДокументОбъект - Текущий документ
|
||
// ДанныеЗаполнения - Структура - Данные заполнения.
|
||
//
|
||
Процедура ЗаполнитьДокументПоУведомлениюОЗачисленииВалюты(Знач ДокументОснование, ДокументОбъект, ДанныеЗаполнения) Экспорт
|
||
|
||
ТекстЗапроса = "
|
||
|ВЫБРАТЬ
|
||
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеречислениеДенежныхСредствНаДругойСчет) КАК ХозяйственнаяОперация,
|
||
| ЗНАЧЕНИЕ(Перечисление.ТипыПлатежныхДокументов.РаспоряжениеОбОбязательнойПродаже) КАК ТипПлатежногоДокумента,
|
||
| ДанныеДокумента.Организация КАК Организация,
|
||
| ДанныеДокумента.БанковскийСчет.Подразделение КАК Подразделение,
|
||
| ДанныеДокумента.Валюта КАК Валюта,
|
||
| ДанныеДокумента.Ссылка КАК УведомлениеОЗачисленииВалюты,
|
||
| ДанныеДокумента.Ссылка КАК ДокументОснование,
|
||
|
|
||
| ДанныеДокумента.БанковскийСчет КАК БанковскийСчет,
|
||
| ДанныеДокумента.БанковскийСчет.ОсновнойБанковскийСчет КАК БанковскийСчетПолучатель,
|
||
|
|
||
| ДенежныеСредства.СуммаОстаток КАК СуммаДокумента
|
||
|ИЗ
|
||
| Документ.УведомлениеОЗачисленииВалюты КАК ДанныеДокумента
|
||
|
|
||
| ЛЕВОЕ СОЕДИНЕНИЕ
|
||
| РегистрНакопления.ДенежныеСредстваКВыплате.Остатки(,
|
||
| ЗаявкаНаРасходованиеДенежныхСредств = &Ссылка
|
||
| ) КАК ДенежныеСредства
|
||
| ПО
|
||
| ИСТИНА
|
||
|
|
||
|ГДЕ
|
||
| ДанныеДокумента.Ссылка = &Ссылка
|
||
|";
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст = ТекстЗапроса;
|
||
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
|
||
|
||
РезультатЗапроса = Запрос.Выполнить();
|
||
Если РезультатЗапроса.Пустой() Тогда
|
||
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||
НСтр("ru = 'Не требуется вводить ""Списание безналичных ДС"" на основании документа %1'"),
|
||
ДокументОснование);
|
||
ВызватьИсключение Текст;
|
||
Иначе
|
||
ДанныеЗаполнения = Новый Структура;
|
||
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
|
||
ДанныеЗаполнения.Вставить(Колонка.Имя);
|
||
КонецЦикла;
|
||
|
||
Выборка = РезультатЗапроса.Выбрать();
|
||
Выборка.Следующий();
|
||
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
|
||
// Очищает реквизиты платежей в бюджет после проверки даты применения Приказа 58н
|
||
//
|
||
// Параметры:
|
||
// Объект - ДокументОбъект - Документ оплаты.
|
||
// ПредыдущийПериод - Дата - исходный период (до изменения)
|
||
// НовыйПериод - Дата - новый период.
|
||
//
|
||
Процедура ПриИзмененииПравилПлатежейВБюджет(Объект, ПредыдущийПериод, НовыйПериод) Экспорт
|
||
|
||
Если Не Объект.ПеречислениеВБюджет Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ДействовалиНовыеПравила = ПлатежиВБюджетКлиентСервер.ДействуетПриказ58н_202604(ПредыдущийПериод);
|
||
ДействуютНовыеПравила = ПлатежиВБюджетКлиентСервер.ДействуетПриказ58н_202604(НовыйПериод);
|
||
|
||
Если ДействовалиНовыеПравила <> ДействуютНовыеПравила Тогда
|
||
ПлатежиВБюджет.РеквизитыПлатежаВБюджетПоУмолчанию(Объект);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Выбирает перечень КПП подразделений организации
|
||
//
|
||
// Параметры:
|
||
// Организация - СправочникСсылка.Организации - Организация, для которой определяет перечень КПП.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Массив из Структура - содержит:
|
||
// * КПП - Строка - КПП филиала
|
||
// * Подразделение - Строка, Неопределено - Филиал, имеющий регистрацию в налоговом органе
|
||
// * РегистрацияСсылка - СправочникСсылка.РегистрацииВНалоговомОргане - Регистрация филиала
|
||
//
|
||
Функция СписокКППОрганизации(Организация) Экспорт
|
||
|
||
СписокВыбораКПП = Новый Массив;
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст = "
|
||
|ВЫБРАТЬ
|
||
| Регистрации.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница,
|
||
| Регистрации.РегистрацияВНалоговомОргане КАК РегистрацияВНалоговомОргане
|
||
|ПОМЕСТИТЬ КППКрупнейшегоНалогоплательщика
|
||
|ИЗ
|
||
| РегистрСведений.КрупнейшийНалогоплательщикИсторияРегистрацийВНалоговомОргане.СрезПоследних(, СтруктурнаяЕдиница = &Организация) КАК Регистрации
|
||
|;
|
||
|
|
||
|////////////////////////////////////////////////////////////////////////////////
|
||
|ВЫБРАТЬ
|
||
| ЕСТЬNULL(Регистрации.РегистрацияВНалоговомОргане.КПП, """") КАК КПП,
|
||
| ЕСТЬNULL(Регистрации.Подразделение.Наименование, """") КАК Подразделение,
|
||
| Регистрации.РегистрацияВНалоговомОргане КАК РегистрацияСсылка
|
||
|ПОМЕСТИТЬ КППОрганизаций
|
||
|ИЗ
|
||
| РегистрСведений.РегистрацииВНалоговомОргане.СрезПоследних(, Организация = &Организация) КАК Регистрации
|
||
|
|
||
|ОБЪЕДИНИТЬ ВСЕ
|
||
|
|
||
|ВЫБРАТЬ
|
||
| ЕСТЬNULL(Организации.РегистрацияВНалоговомОргане.КПП, ""0""),
|
||
| Организации.Наименование,
|
||
| Организации.РегистрацияВНалоговомОргане
|
||
|ИЗ
|
||
| Справочник.Организации КАК Организации
|
||
|ГДЕ
|
||
| Организации.ГоловнаяОрганизация = &Организация
|
||
| И Организации.ОбособленноеПодразделение
|
||
| И НЕ Организации.ПометкаУдаления
|
||
| И Организации.РегистрацияВНалоговомОргане <> ЗНАЧЕНИЕ(Справочник.РегистрацииВНалоговомОргане.ПустаяСсылка)
|
||
| И Организации.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОрганизацийПодразделений.Действует)
|
||
|
|
||
|ОБЪЕДИНИТЬ ВСЕ
|
||
|
|
||
|ВЫБРАТЬ
|
||
| ЕСТЬNULL(Регистрации.РегистрацияВНалоговомОргане.КПП, """") КАК КПП,
|
||
| ЕСТЬNULL(Регистрации.Подразделение.Наименование, """") КАК Подразделение,
|
||
| Регистрации.РегистрацияВНалоговомОргане КАК РегистрацияСсылка
|
||
|ИЗ
|
||
| РегистрСведений.РегистрацииВНалоговомОргане.СрезПоследних(
|
||
| , Организация.ГоловнаяОрганизация = &Организация И Организация <> &Организация) КАК Регистрации
|
||
|
|
||
|ОБЪЕДИНИТЬ ВСЕ
|
||
|
|
||
|ВЫБРАТЬ
|
||
| КППКрупнейшегоНалогоплательщика.РегистрацияВНалоговомОргане.КПП,
|
||
| """",
|
||
| КППКрупнейшегоНалогоплательщика.РегистрацияВНалоговомОргане
|
||
|ИЗ
|
||
| КППКрупнейшегоНалогоплательщика КАК КППКрупнейшегоНалогоплательщика
|
||
|
|
||
|ИНДЕКСИРОВАТЬ ПО
|
||
| КПП
|
||
|;
|
||
|//////////////////////////////////////////////
|
||
|ВЫБРАТЬ
|
||
| Организации.КПП КАК КПП
|
||
|ПОМЕСТИТЬ КПППредприятия
|
||
|ИЗ
|
||
| Справочник.Организации КАК Организации
|
||
|ГДЕ
|
||
| Организации.Ссылка = &Организация
|
||
|;
|
||
|
|
||
|////////////////////////////////////////////////////////////////////////////////
|
||
|ВЫБРАТЬ
|
||
| КППОрганизаций.КПП КАК КПП,
|
||
| КППОрганизаций.Подразделение КАК Подразделение,
|
||
| КППОрганизаций.РегистрацияСсылка КАК РегистрацияСсылка
|
||
|ИЗ
|
||
| КППОрганизаций КАК КППОрганизаций
|
||
|ГДЕ
|
||
| НЕ КППОрганизаций.КПП В
|
||
| (ВЫБРАТЬ
|
||
| КПППредприятия.КПП КАК КПП
|
||
| ИЗ
|
||
| КПППредприятия КАК КПППредприятия)
|
||
|;
|
||
|
|
||
|////////////////////////////////////////////////////////////////////////////////
|
||
|ВЫБРАТЬ
|
||
| КПППредприятия.КПП КАК КПП
|
||
|ИЗ
|
||
| КПППредприятия КАК КПППредприятия
|
||
|";
|
||
|
||
Запрос.УстановитьПараметр("Организация", Организация);
|
||
|
||
Результат = Запрос.ВыполнитьПакет();
|
||
|
||
Выборка = Результат[Результат.ВГраница()].Выбрать();
|
||
Если Выборка.Следующий() Тогда
|
||
КПП = Новый Структура("КПП, Подразделение, РегистрацияСсылка");
|
||
ЗаполнитьЗначенияСвойств(КПП, Выборка);
|
||
СписокВыбораКПП.Добавить(КПП);
|
||
КонецЕсли;
|
||
|
||
Выборка = Результат[Результат.ВГраница() - 1].Выбрать();
|
||
Пока Выборка.Следующий() Цикл
|
||
Если ЗначениеЗаполнено(Выборка.КПП) Тогда
|
||
КПП = Новый Структура("КПП, Подразделение, РегистрацияСсылка");
|
||
ЗаполнитьЗначенияСвойств(КПП, Выборка);
|
||
СписокВыбораКПП.Добавить(КПП);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Возврат СписокВыбораКПП;
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#Область ОбменСБанками
|
||
|
||
// Загружает электронную выписку банка
|
||
//
|
||
// Параметры:
|
||
// ЭлектроннаяВыпискаБанка - Ссылка - Электронная выписка банка
|
||
//
|
||
Процедура РазобратьВыпискуБанка(ЭлектроннаяВыпискаБанка) Экспорт
|
||
|
||
Перем ДеревоВыписки;
|
||
// ЭлектронноеВзаимодействие.ОбменСБанками
|
||
ОбменСБанками.ПолучитьДанныеВыпискиБанкаДеревоЗначений(ЭлектроннаяВыпискаБанка, ДеревоВыписки);
|
||
// Конец ЭлектронноеВзаимодействие.ОбменСБанками
|
||
|
||
КлиентБанк = Обработки.КлиентБанк.Создать();
|
||
КлиентБанк.ЗаполнитьТаблицуСчетовЗагрузки();
|
||
|
||
КлиентБанк.СоздаватьКонтрагентов = Истина;
|
||
КлиентБанк.ПроводитьДокументы = Истина;
|
||
|
||
СтрокаСчета = Неопределено;
|
||
Если ДеревоВыписки.Строки.Количество() Тогда
|
||
Выписки = ДеревоВыписки.Строки[0];
|
||
|
||
Если Выписки.Строки.Количество() Тогда
|
||
Выписка = Выписки.Строки[0];
|
||
|
||
СтрокаНомерСчета = Выписка.Строки.Найти("Выписки.НомерСтроки.НомерСчета", "ПолныйПуть");
|
||
Если СтрокаНомерСчета <> Неопределено Тогда
|
||
|
||
СчетаВыписки = КлиентБанк.БанковскиеСчета.НайтиСтроки(Новый Структура("НомерСчета", СтрокаНомерСчета.Значение));
|
||
Если СчетаВыписки.Количество() Тогда
|
||
СтрокаСчета = СчетаВыписки[0];
|
||
СтрокаФайла = КлиентБанк.Файлы.Добавить();
|
||
ЗаполнитьЗначенияСвойств(СтрокаФайла, СтрокаСчета);
|
||
СтрокаФайла.БанковскийСчет = СтрокаСчета.Ссылка;
|
||
СтрокаФайла.АдресХранилищаФайла = ПоместитьВоВременноеХранилище(ДеревоВыписки, Новый УникальныйИдентификатор);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если СтрокаСчета <> Неопределено Тогда
|
||
КлиентБанк.ЗагрузитьПлатежиПоСчету(СтрокаСчета, Новый УникальныйИдентификатор, Истина);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
|
||
#Область Бюджет
|
||
|
||
// Проверяет корректность заполнения налоговых реквизитов
|
||
//
|
||
// Параметры:
|
||
// Объект - ДокументОбъект - Документ оплаты.
|
||
// Отказ - Булево - Признак отказа от продолжения работы
|
||
// НепроверяемыеРеквизиты - Массив из Строка - Непроверяемые реквизиты документа
|
||
// ФлагОбменСБанками - Булево - используется обмен с банком
|
||
// ОшибкиЗаполнения - Строка - Накопленное описание ошибок.
|
||
//
|
||
Процедура ПроверитьЗаполнениеНалоговыхРеквизитов(Объект, Отказ, НепроверяемыеРеквизиты, ФлагОбменСБанками = Ложь, ОшибкиЗаполнения = "") Экспорт
|
||
|
||
ХозяйственнаяОперация = Объект.ХозяйственнаяОперация;
|
||
ПеречислениеВБюджет = Объект.ПеречислениеВБюджет;
|
||
ВидПеречисленияВБюджет = Объект.ВидПеречисленияВБюджет;
|
||
СтатусСоставителя = Объект.СтатусСоставителя;
|
||
Дата = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
|
||
|
||
ДатаНачалаПримененияПриказа126н = Константы.ДатаНачалаПримененияПриказа126н.Получить();
|
||
|
||
ПараметрыПроверкиЗаполнения = Новый Структура;
|
||
ПараметрыПроверкиЗаполнения.Вставить("ПрименениеПриказа107н",
|
||
Дата >= Константы.ДатаНачалаПримененияПриказа107н.Получить());
|
||
ПараметрыПроверкиЗаполнения.Вставить("ПрименениеПриказа126н",
|
||
ДатаНачалаПримененияПриказа126н <> '00010101'
|
||
И Дата >= ДатаНачалаПримененияПриказа126н);
|
||
ПараметрыПроверкиЗаполнения.Вставить("ПрименениеПриказа58н",
|
||
ПлатежиВБюджетКлиентСервер.ДействуетПриказ58н_202604(Дата));
|
||
|
||
МассивОпераций = МассивОперацийПеречисленияВБюджет();
|
||
|
||
Если ПеречислениеВБюджет И МассивОпераций.Найти(ХозяйственнаяОперация) <> Неопределено Тогда
|
||
|
||
// Проверки, общие для всех видов перечислений в бюджет
|
||
Если ПлатежиВБюджетКлиентСервер.СтатусыПлательщика(
|
||
ПараметрыПроверкиЗаполнения.ПрименениеПриказа107н, Дата).НайтиПоЗначению(СтатусСоставителя) = Неопределено Тогда
|
||
|
||
ТекстОшибки = НСтр("ru = 'Неверное значение поля ""Статус плательщика""'");
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
ДоступныеСтатусыПлательщика = ПлатежиВБюджетКлиентСервер.ДоступныеСтатусыПлательщикаПоВидуПлатежа(ВидПеречисленияВБюджет, Объект.КодБК, Объект.Дата);
|
||
|
||
Если ПараметрыПроверкиЗаполнения.ПрименениеПриказа58н
|
||
И ДоступныеСтатусыПлательщика.НайтиПоЗначению(Объект.СтатусСоставителя) = Неопределено Тогда
|
||
|
||
СтрокаДоступныхСтатусов = СтрСоединить(ДоступныеСтатусыПлательщика.ВыгрузитьЗначения(), ", ");
|
||
ТекстОшибки =
|
||
СтрШаблон(НСтр("ru = 'В поле ""Статус плательщика"" следует указать одно из доступных значений: %1'"), СтрокаДоступныхСтатусов);
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , "НадписьРеквизитыПлатежаВБюджет", , Отказ);
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
Если ПараметрыПроверкиЗаполнения.ПрименениеПриказа126н Тогда
|
||
НепроверяемыеРеквизиты.Добавить("ПоказательТипа");
|
||
КонецЕсли;
|
||
|
||
Если ВидПеречисленияВБюджет = Перечисления.ВидыПеречисленийВБюджет.НалоговыйПлатеж Тогда
|
||
ПроверитьЗаполнениеРеквизитовНалоговыхПлатежей(Объект, ПараметрыПроверкиЗаполнения, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения);
|
||
ИначеЕсли ВидПеречисленияВБюджет = Перечисления.ВидыПеречисленийВБюджет.ТаможенныйПлатеж Тогда
|
||
ПроверитьЗаполнениеРеквизитовТаможенныхПлатежей(Объект, ПараметрыПроверкиЗаполнения, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения);
|
||
ИначеЕсли ВидПеречисленияВБюджет = Перечисления.ВидыПеречисленийВБюджет.ИнойПлатеж Тогда
|
||
ПроверитьЗаполнениеРеквизитовИныхПлатежейВБюджет(Объект, ПараметрыПроверкиЗаполнения, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Проверяет корректность заполнения реквизитов платежа в бюджет согласно 148н
|
||
//
|
||
// Параметры:
|
||
// Объект - ДокументОбъект - Документ оплаты.
|
||
// Отказ - Булево - Признак отказа от продолжения работы.
|
||
//
|
||
Процедура ПроверитьИННиКППНаСоответствие148н(Объект, Отказ) Экспорт
|
||
|
||
Если Объект.Дата < ПлатежиВБюджетКлиентСервер.НачалоДействияУказания3844У() Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
РеквизитыПлательщика = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Организация, "ИНН, КПП");
|
||
Если ТипЗнч(Объект) = Тип("ДокументОбъект.СписаниеБезналичныхДенежныхСредств")
|
||
И ЗначениеЗаполнено(Объект.РегистрацияВНалоговомОргане) Тогда
|
||
РеквизитыПлательщика.КПП = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.РегистрацияВНалоговомОргане, "КПП");
|
||
КонецЕсли;
|
||
|
||
РеквизитыПолучателя = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.БанковскийСчетКонтрагента, "Владелец.ИНН, Владелец.КПП");
|
||
|
||
Если Лев(РеквизитыПлательщика.ИНН, 2) = "00" Тогда
|
||
ТекстОшибки = НСтр("ru = 'Первые две цифры ИНН плательщика не могут быть ""00""'");
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Объект,,, Отказ);
|
||
КонецЕсли;
|
||
|
||
Если Лев(РеквизитыПлательщика.КПП, 2) = "00" Тогда
|
||
ТекстОшибки = НСтр("ru = 'Первые две цифры КПП плательщика не могут быть ""00""'");
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Объект,,, Отказ);
|
||
КонецЕсли;
|
||
|
||
Если Лев(РеквизитыПолучателя.ВладелецИНН, 2) = "00" Тогда
|
||
ТекстОшибки = НСтр("ru = 'Первые две цифры ИНН получателя не могут быть ""00""'");
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Объект, "Контрагент",, Отказ);
|
||
КонецЕсли;
|
||
|
||
Если Лев(РеквизитыПолучателя.ВладелецКПП, 2) = "00" Тогда
|
||
ТекстОшибки = НСтр("ru = 'Первые две цифры КПП получателя не могут быть ""00""'");
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Объект, "Контрагент",, Отказ);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
|
||
//-- Локализация
|
||
|
||
#Область ВыплатыСамозанятым
|
||
|
||
// Изменяет свойства элементов, связанных с операцией с самозанятыми, в документах "Приобретение товаров и услуг"
|
||
// и "Приобретение услуг и прочих активов".
|
||
//
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения - форма, в которой изменяется отображение.
|
||
//
|
||
Процедура НастроитьЭлементыОперацииССамозанятым(Форма, ЕстьПривязкаЧека = Истина) Экспорт
|
||
|
||
//++ Локализация
|
||
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьВыплатыСамозанятым") Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Элементы = Форма.Элементы;
|
||
Объект = Форма.Объект; // ДанныеФормыСтруктура
|
||
|
||
ВидыКонтрагентов = Новый Массив;
|
||
ВидыКонтрагентов.Добавить(Перечисления.ЮрФизЛицо.ИндивидуальныйПредприниматель);
|
||
ВидыКонтрагентов.Добавить(Перечисления.ЮрФизЛицо.ФизЛицо);
|
||
|
||
Элементы.ОперацияССамозанятым.Видимость =
|
||
ВидыКонтрагентов.Найти(Форма.КонтрагентЮрФизЛицо) <> Неопределено
|
||
И (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика
|
||
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки);
|
||
|
||
Если ЕстьПривязкаЧека Тогда
|
||
Элементы.СтатусЧекаСамозанятого.Видимость = Объект.ОперацияССамозанятым;
|
||
КонецЕсли;
|
||
|
||
Если Объект.ОперацияССамозанятым Тогда
|
||
Элементы.НалогообложениеНДС.Видимость = Ложь;
|
||
КонецЕсли;
|
||
//-- Локализация
|
||
|
||
Возврат;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Отключает флаг закупки у самозанятого в документах приобретения: "Приобретение товаров и услуг"
|
||
// и "Приобретение услуг и прочих активов".
|
||
//
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения - форма документа приобретения.
|
||
//
|
||
Процедура ЗаполнитьПризнакЗакупкиУСамозанятого(Форма) Экспорт
|
||
|
||
//++ Локализация
|
||
|
||
Объект = Форма.Объект;
|
||
|
||
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьВыплатыСамозанятым") Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Если Не ((Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика
|
||
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки)
|
||
И (Форма.КонтрагентЮрФизЛицо = Перечисления.ЮрФизЛицо.ИндивидуальныйПредприниматель
|
||
ИЛИ Форма.КонтрагентЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо)) Тогда
|
||
Объект.ОперацияССамозанятым = Ложь;
|
||
КонецЕсли;
|
||
//-- Локализация
|
||
|
||
Возврат;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Заполняет документ при изменении флага "Операция с самозанятым".
|
||
//
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения - форма документа.
|
||
//
|
||
Процедура ОперацияССамозанятымПриИзменении(Форма, ЕстьПривязкаЧека = Истина) Экспорт
|
||
|
||
//++ Локализация
|
||
|
||
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьВыплатыСамозанятым") Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Объект = Форма.Объект;
|
||
Элементы = Форма.Элементы;
|
||
|
||
ВзаиморасчетыРаботаСФормами.ФормаПриИзмененииРеквизитов(Форма, "Контрагент");
|
||
|
||
Если Объект.ОперацияССамозанятым Тогда
|
||
Объект.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС;
|
||
Иначе
|
||
|
||
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоСсылке(Объект.Ссылка);
|
||
ПараметрыЗаполнения = МенеджерОбъекта.ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект);
|
||
УчетНДСУП.ЗаполнитьНалогообложениеНДСЗакупки(Объект.НалогообложениеНДС, ПараметрыЗаполнения, Неопределено);
|
||
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСЗакупки(
|
||
Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, Неопределено);
|
||
|
||
КонецЕсли;
|
||
|
||
НастроитьЭлементыОперацииССамозанятым(Форма, ЕстьПривязкаЧека);
|
||
|
||
Если ЕстьПривязкаЧека Тогда
|
||
|
||
Если Форма.ОперацияССамозанятым <> Объект.ОперацияССамозанятым Тогда
|
||
УстановитьСтатусЗагрузкиЧеков(Форма);
|
||
КонецЕсли;
|
||
|
||
Форма.ОперацияССамозанятым = Объект.ОперацияССамозанятым;
|
||
|
||
КонецЕсли;
|
||
|
||
//-- Локализация
|
||
|
||
Возврат;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Устанавливает статус загрузки чеков в форме документов приобретения: "Приобретение товаров и услуг"
|
||
// и "Приобретение услуг и прочих активов".
|
||
//
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения - форма документа приобретения.
|
||
//
|
||
Процедура УстановитьСтатусЗагрузкиЧеков(Форма) Экспорт
|
||
|
||
//++ Локализация
|
||
|
||
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьВыплатыСамозанятым") Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Объект = Форма.Объект; // ДанныеФормыСтруктура
|
||
Элементы = Форма.Элементы;
|
||
|
||
Если Не Объект.ОперацияССамозанятым Тогда
|
||
|
||
Форма.ЧекиСамозанятого.Очистить();
|
||
Форма.СтатусЧекаСамозанятого = "";
|
||
Возврат;
|
||
|
||
КонецЕсли;
|
||
|
||
ЦветТекстаСтатусЗагрузкиЧеков = ЦветаСтиля.ГиперссылкаЦвет;
|
||
|
||
Чеки = Новый Массив;
|
||
|
||
Форма.ЧекиСамозанятого.Очистить();
|
||
ЗаполнитьЧекиСамозанятого(Объект.Ссылка, Форма.ЧекиСамозанятого);
|
||
|
||
Для Каждого ТекущийЧек Из Форма.ЧекиСамозанятого Цикл
|
||
Чеки.Добавить(СтрШаблон("№%1", ТекущийЧек.НомерЧека));
|
||
КонецЦикла;
|
||
|
||
Если Чеки.Количество() = 0 Тогда
|
||
|
||
СтатусЗагрузкиЧеков = НСтр("ru='Загрузить чек'");
|
||
ЦветТекстаСтатусЗагрузкиЧеков = ЦветаСтиля.ЦветТекстаПроблема;
|
||
|
||
Иначе
|
||
|
||
СтрокаЧеков = СтрСоединить(Чеки, ", ");
|
||
СтатусЗагрузкиЧеков = СтрШаблон(НСтр("ru = '%1 %2'"), ?(Чеки.Количество() > 1, НСтр("ru = 'Чеки:'"), НСтр("ru = 'Чек'")), СтрокаЧеков);
|
||
|
||
КонецЕсли;
|
||
|
||
Форма.СтатусЧекаСамозанятого = СтроковыеФункции.ФорматированнаяСтрока(СтатусЗагрузкиЧеков);
|
||
Элементы.СтатусЧекаСамозанятого.ЦветТекста = ЦветТекстаСтатусЗагрузкиЧеков;
|
||
|
||
//-- Локализация
|
||
|
||
Возврат;
|
||
|
||
КонецПроцедуры
|
||
|
||
//++ Локализация
|
||
|
||
// Сохраняет чек самозанятого в присоединенных файлах документа.
|
||
//
|
||
// Параметры:
|
||
// Документ - ДокументСсылка.ПриобретениеТоваровУслуг, ДокументСсылка.ПриобретениеУслугПрочихАктивов - будущий
|
||
// документ, владелец файла.
|
||
// ДанныеЧека - Структура - Данные чека:
|
||
// * НомерЧека - Строка - номер чека.
|
||
// * СсылкаНаЧек - Строка - ссылка на чек.
|
||
// * ЧекСамозанятого - ДвоичныеДанные - файл чека в виде двоичных данных.
|
||
Процедура СохранитьЧекСамозанятого(Документ, ДанныеЧека) Экспорт
|
||
|
||
Если Не ПустаяСтрока(ДанныеЧека.ЧекСамозанятого) Тогда
|
||
|
||
ИмяФайла = СтрШаблон(НСтр("ru = '№%1'"), ДанныеЧека.НомерЧека);
|
||
|
||
ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла("Описание");
|
||
ПараметрыФайла.ВладелецФайлов = Документ;
|
||
ПараметрыФайла.ИмяБезРасширения = ИмяФайла;
|
||
ПараметрыФайла.РасширениеБезТочки = "jpg";
|
||
ПараметрыФайла.ВремяИзмененияУниверсальное = ТекущаяУниверсальнаяДата();
|
||
ПараметрыФайла.Вставить("ЭтоЧекСамозанятого", Истина);
|
||
ПараметрыФайла.Вставить("СсылкаНаЧек", ДанныеЧека.СсылкаНаЧек);
|
||
ПараметрыФайла.Служебный = Ложь;
|
||
|
||
АдресФайла = ПоместитьВоВременноеХранилище(ДанныеЧека.ЧекСамозанятого);
|
||
РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, АдресФайла);
|
||
|
||
ИначеЕсли Не ПустаяСтрока(ДанныеЧека.СсылкаНаЧек) Тогда
|
||
ДобавитьЧекСамозанятогоИзИнтернета(
|
||
ДанныеЧека.СсылкаНаЧек, Документ);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Создает ссылку на скаченный файл чека самозанятого по переданной ссылке
|
||
//
|
||
// Параметры:
|
||
// СсылкаНаЧек - Строка - URL на чек самозанятого на сайте ФНС
|
||
// Документ - ДокументСсылка.ПриобретениеТоваровУслуг, ДокументСсылка.ПриобретениеУслугПрочихАктивов - Ссылка на
|
||
// документ, к которому присоединяется файл.
|
||
//
|
||
Процедура ДобавитьЧекСамозанятогоИзИнтернета(СсылкаНаЧек, Документ) Экспорт
|
||
|
||
Адрес = СсылкаНаЧек;
|
||
|
||
ПараметрыПолучения = ПолучениеФайловИзИнтернетаКлиентСервер.ПараметрыПолученияФайла();
|
||
ПараметрыПолучения.Таймаут = 1260;
|
||
|
||
Результат = ПолучениеФайловИзИнтернета.СкачатьФайлВоВременноеХранилище(Адрес, ПараметрыПолучения);
|
||
|
||
Если Результат.Статус Тогда
|
||
|
||
ИмяФайла = СтрШаблон(НСтр("ru='№%1'"), НомерЧекаИзСсылки(СсылкаНаЧек));
|
||
|
||
ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла("Описание");
|
||
ПараметрыФайла.ВладелецФайлов = Документ;
|
||
ПараметрыФайла.ИмяБезРасширения = ИмяФайла;
|
||
ПараметрыФайла.РасширениеБезТочки = "jpg";
|
||
ПараметрыФайла.ВремяИзмененияУниверсальное = ТекущаяУниверсальнаяДата();
|
||
ПараметрыФайла.Служебный = Ложь;
|
||
ПараметрыФайла.Вставить("ЭтоЧекСамозанятого", Истина);
|
||
ПараметрыФайла.Вставить("СсылкаНаЧек", СсылкаНаЧек);
|
||
РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, Результат.Путь);
|
||
|
||
УдалитьИзВременногоХранилища(Результат.Путь);
|
||
|
||
Иначе
|
||
ТекстОшибки = НСтр("ru = 'Не удалось скачать чек самозанятого.
|
||
|Описание: %1
|
||
|URL: %2'");
|
||
Если Результат.Свойство("КодСостояния") Тогда
|
||
ТекстОшибки = ТекстОшибки + Символы.ПС + НСтр("ru = 'Код ошибки: %3'");
|
||
ТекстОшибки = СтрШаблон(ТекстОшибки, Результат.СообщениеОбОшибке, Адрес, Результат.КодСостояния);
|
||
Иначе
|
||
ТекстОшибки = СтрШаблон(ТекстОшибки, Результат.СообщениеОбОшибке, Адрес);
|
||
КонецЕсли;
|
||
ЗаписьЖурналаРегистрации(НСтр("ru = 'Получение чека самозанятого по ссылке'"), УровеньЖурналаРегистрации.Ошибка, , , ТекстОшибки);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Функция возвращает номер чека из ссылки на чек на сайте ФНС
|
||
//
|
||
// Параметры:
|
||
// СсылкаНаЧек - Строка - URL на чек самозанятого на сайте ФНС
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка - Номер чека
|
||
//
|
||
Функция НомерЧекаИзСсылки(СсылкаНаЧек) Экспорт
|
||
|
||
ЧастьСсылкиНаЧек = СтрЗаменить(СсылкаНаЧек, ДенежныеСредстваПовтИспРФ.АдресСервисаФНС(), "");
|
||
МассивЧастейСсылки = СтрРазделить(ЧастьСсылкиНаЧек, "/");
|
||
|
||
ИНН = ИННИзСсылкиНаЧек(МассивЧастейСсылки);
|
||
|
||
НомерЧека = "";
|
||
ПредыдущееЗначение = "";
|
||
СоответствуетУсловиям = Ложь;
|
||
// Номер чека идет после ИНН и перед "print"
|
||
Для Каждого ЧастьСсылки Из МассивЧастейСсылки Цикл
|
||
Если ЗначениеЗаполнено(НомерЧека) И ЧастьСсылки = "print" Тогда
|
||
СоответствуетУсловиям = Истина;
|
||
КонецЕсли;
|
||
Если ПредыдущееЗначение = ИНН Тогда
|
||
НомерЧека = ЧастьСсылки;
|
||
КонецЕсли;
|
||
ПредыдущееЗначение = ЧастьСсылки;
|
||
КонецЦикла;
|
||
Если Не СоответствуетУсловиям Тогда
|
||
НомерЧека = "";
|
||
КонецЕсли;
|
||
|
||
Возврат НомерЧека;
|
||
|
||
КонецФункции
|
||
|
||
// Получает ИНН контрагента из ссылки на чек самозанятого.
|
||
//
|
||
// Параметры:
|
||
// МассивЧастейСсылки - Массив из Строка - Массив, полученный в результате разделения ссылки на чек по символу "/".
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка - ИНН
|
||
//
|
||
Функция ИННИзСсылкиНаЧек(МассивЧастейСсылки) Экспорт
|
||
|
||
ИНН = "";
|
||
Для Каждого ЧастьСсылки Из МассивЧастейСсылки Цикл
|
||
|
||
Если ЧастьСсылки <> ""
|
||
И СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(ЧастьСсылки) Тогда
|
||
ТекстОшибки = "";
|
||
СоответствуетТребованиям =
|
||
РегламентированныеДанныеКлиентСервер.ИННСоответствуетТребованиям(ЧастьСсылки, Ложь, ТекстОшибки);
|
||
Если СоответствуетТребованиям Тогда
|
||
ИНН = ЧастьСсылки;
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
Возврат ИНН;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает адрес сервиса ФНС с чеками
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка - адрес страницы
|
||
//
|
||
Функция АдресСервисаФНС() Экспорт
|
||
|
||
ИспользуетсяТестовыйРежим = Ложь;
|
||
ОбменСБанкамиПереопределяемый.ПроверитьИспользованиеТестовогоРежима(ИспользуетсяТестовыйРежим);
|
||
Если Не ИспользуетсяТестовыйРежим Тогда
|
||
Возврат "https://lknpd.nalog.ru";
|
||
Иначе
|
||
Возврат "https://lknpd-adp.gnivc.ru";
|
||
КонецЕсли;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает признак, что счет открыт в Сбербанке
|
||
//
|
||
// Параметры:
|
||
// БанковскийСчет - СправочникСсылка.БанковскиеСчетаОрганизаций - Ссылка на банковский счет, который стоит проверить.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево - Истина, если счет открыт в Сбербанке
|
||
//
|
||
Функция ЭтоСчетСбербанка(БанковскийСчет) Экспорт
|
||
|
||
РеквизитыСчета = Справочники.БанковскиеСчетаОрганизаций.ПолучитьРеквизитыБанковскогоСчетаОрганизации(БанковскийСчет);
|
||
ЭтоСчетСбербанка = Ложь;
|
||
|
||
БИК = РеквизитыСчета.БИК;
|
||
Макет = Справочники.НастройкиОбменСБанками.ПолучитьМакет("СписокБанков");
|
||
Макет.КодЯзыка = Метаданные.Языки.Русский.КодЯзыка;
|
||
|
||
Для Индекс = 1 По Макет.ВысотаТаблицы Цикл
|
||
БИКБанка = Макет.Область(Индекс, 2).Текст;
|
||
Если БИК <> БИКБанка Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
СпособОбмена = Макет.Область(Индекс, 3).Текст;
|
||
Если СпособОбмена = "Сбербанк" Тогда
|
||
ЭтоСчетСбербанка = Истина;
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Возврат ЭтоСчетСбербанка;
|
||
|
||
КонецФункции
|
||
|
||
// Очищает неиспользуемые реквизиты при оплате самозанятым.
|
||
//
|
||
// Параметры:
|
||
// ДокументОбъект - ДокументОбъект.ЗаявкаНаРасходованиеДенежныхСредств,
|
||
// ДокументОбъект.СписаниеБезналичныхДенежныхСредств - текущий объект.
|
||
//
|
||
Процедура ОчиститьНеиспользуемыеРеквизитыОплатыСамозанятым(ДокументОбъект) Экспорт
|
||
|
||
Если ДокументОбъект.ОперацияССамозанятым Тогда
|
||
|
||
ДокументОбъект.ПеречислениеВБюджет = Ложь;
|
||
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Процедура устанавливает параметры выбора для счета для списка контрагентов
|
||
//
|
||
// Параметры:
|
||
// Объект - ДанныеФормыСтруктура - Текущий объект
|
||
// Элемент - ПолеФормы - Поле для ввода банковского счета.
|
||
//
|
||
Процедура УстановитьПараметрыВыбораБанковскихСчетаСпискаКонтрагентов(Объект, Элемент) Экспорт
|
||
|
||
СвязиПараметров = Новый Массив;
|
||
СвязиПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Владелец", "Элементы.БанковскиеСчетаСпискаКонтрагентов.ТекущиеДанные.Контрагент"));
|
||
|
||
Если Объект.ПлатежСКонвертацией Тогда
|
||
СвязиПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.ВалютаДенежныхСредств", "Объект.Валюта"));
|
||
КонецЕсли;
|
||
|
||
Элемент.СвязиПараметровВыбора = Новый ФиксированныйМассив(СвязиПараметров);
|
||
|
||
КонецПроцедуры
|
||
|
||
//-- Локализация
|
||
|
||
#КонецОбласти
|
||
|
||
#Область СистемаБыстрыхПлатежей
|
||
|
||
// Возвращает платежную ссылку b2b.
|
||
//
|
||
// Параметры:
|
||
// ДокументСсылка - ДокументСсылка - Документ, для который выполняется поиск платежной ссылки.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка, Неопределено - Платежная ссылка b2b
|
||
Функция ПлатежнаяСсылкаb2b(ДокументСсылка) Экспорт
|
||
|
||
Результат = Неопределено;
|
||
|
||
//++ Локализация
|
||
Если ПереводыСБПb2b.ЧтениеПереводовСБПДоступно() Тогда
|
||
|
||
ДанныеПлатежа = РегистрыСведений.ИдентификаторыОперацийСБПb2b.ДанныеПлатежнойСсылки(ДокументСсылка);
|
||
|
||
Если ДанныеПлатежа <> Неопределено Тогда
|
||
Результат = ДанныеПлатежа.ПлатежнаяСсылка;
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
//-- Локализация
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает двоичные данные платежные ссылки СБП b2b.
|
||
//
|
||
// Параметры:
|
||
// ДокументСсылка - ДокументСсылка - Документ, для который выполняется поиск платежной ссылки.
|
||
// Размер - Число - Размер картинки QR-кода.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Неопределено, ДвоичныеДанные - Изображение QRКода СБПb2b
|
||
Функция ИзображениеQRКодаСБПb2b(ДокументСсылка, Размер = 200) Экспорт
|
||
|
||
ДвоичныеДанные = Неопределено;
|
||
|
||
//++ Локализация
|
||
|
||
ПлатежнаяСсылка = ПлатежнаяСсылкаb2b(ДокументСсылка);
|
||
|
||
Если ПлатежнаяСсылка <> Неопределено Тогда
|
||
|
||
ДвоичныеДанные = СистемаБыстрыхПлатежей.ИзображениеQRКодаСБП(ПлатежнаяСсылка, Размер, 0);
|
||
|
||
Если ТипЗнч(ДвоичныеДанные) <> Тип("ДвоичныеДанные") Тогда
|
||
Шаблон = Нстр("ru = 'Не удалось сформировать QR-код для документа %1.
|
||
|Технические подробности см. в журнале регистрации.'");
|
||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, ДокументСсылка);
|
||
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
//-- Локализация
|
||
|
||
Возврат ДвоичныеДанные;
|
||
|
||
КонецФункции
|
||
|
||
// Добавляет команду "Обновить статус оплаты СБП" на форму документа.
|
||
//
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения - Форма документа.
|
||
// ПараметрыКоманды - см. НовыйПараметрыКомандыОбновленияСтатусаОплатыСБП.
|
||
//
|
||
Процедура ДобавитьКомандуОбновленияСтатусаОплатыСБП(Форма, ПараметрыКоманды) Экспорт
|
||
|
||
//++ Локализация
|
||
СистемаБыстрыхПлатежейУТ.ДобавитьКомандуОбновленияСтатусаОплатыСБП(Форма, ПараметрыКоманды);
|
||
//-- Локализация
|
||
|
||
Возврат;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращает структуру параметров команды обновления статуса оплаты СБП.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * Родитель - Неопределено - форма документа или группа на форме.
|
||
// * МестоРасположения - Неопределено - элемент, перед которым будет расположена команда.
|
||
Функция НовыйПараметрыКомандыОбновленияСтатусаОплатыСБП() Экспорт
|
||
|
||
ПараметрыКоманды = Новый Структура;
|
||
ПараметрыКоманды.Вставить("Родитель", Неопределено);
|
||
ПараметрыКоманды.Вставить("МестоРасположения", Неопределено);
|
||
|
||
Возврат ПараметрыКоманды;
|
||
|
||
КонецФункции
|
||
|
||
// Проверяет получателя, указанного в документе, и получателя, указанного в платежной ссылке СБП.
|
||
//
|
||
// Параметры:
|
||
// ДокументОбъект - ДокументОбъект - Документ, содержащий входящую платежную ссылку СБП.
|
||
// РежимЗаписи - РежимЗаписиДокумента - режим записи документа.
|
||
// Отказ - Булево - признак отказа от записи.
|
||
//
|
||
Процедура ПроверитьПолучателяПлатежныхСсылокСБП(ДокументОбъект, РежимЗаписи, Отказ) Экспорт
|
||
|
||
//++ Локализация
|
||
Если РежимЗаписи <> РежимЗаписиДокумента.Проведение Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
УстановитьПривилегированныйРежим(Истина);
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| ВходящиеПлатежныеСсылкиСБП.ДокументОперации КАК ДокументОперации,
|
||
| ВходящиеПлатежныеСсылкиСБП.ПлатежнаяСсылка КАК ПлатежнаяСсылка,
|
||
| ВходящиеПлатежныеСсылкиСБП.НастройкаПодключения КАК НастройкаПодключения,
|
||
| ВходящиеПлатежныеСсылкиСБП.ИНН КАК ИНН,
|
||
| ВходящиеПлатежныеСсылкиСБП.НомерСчета КАК СчетПолучателя,
|
||
| ВходящиеПлатежныеСсылкиСБП.ПроверкаПройдена КАК ПроверкаПройдена
|
||
|ИЗ
|
||
| РегистрСведений.ВходящиеПлатежныеСсылкиСБП КАК ВходящиеПлатежныеСсылкиСБП
|
||
|ГДЕ
|
||
| ВходящиеПлатежныеСсылкиСБП.ДокументОперации = &ДокументОперации";
|
||
|
||
Запрос.УстановитьПараметр("ДокументОперации", ДокументОбъект.Ссылка);
|
||
|
||
Результат = Запрос.Выполнить();
|
||
|
||
Если Результат.Пустой() Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Попытка
|
||
|
||
Блокировка = Новый БлокировкаДанных;
|
||
ЭлементБлокировки = Блокировка.Добавить(Метаданные.РегистрыСведений.ВходящиеПлатежныеСсылкиСБП.ПолноеИмя());
|
||
ЭлементБлокировки.УстановитьЗначение("ДокументОперации", ДокументОбъект.Ссылка);
|
||
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
|
||
Блокировка.Заблокировать();
|
||
|
||
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоСсылке(ДокументОбъект.Ссылка);
|
||
ПараметрыМеханизма = МенеджерОбъекта.ПараметрыВзаиморасчеты(ДокументОбъект);
|
||
|
||
Если ТипЗнч(ПараметрыМеханизма) = Тип("Массив") Тогда
|
||
МассивПараметров = ПараметрыМеханизма;
|
||
Иначе
|
||
МассивПараметров = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ПараметрыМеханизма);
|
||
КонецЕсли;
|
||
|
||
ПараметрыПроверки = ДенежныеСредстваКлиентСерверЛокализация.ПараметрыПроверкиПолучателяПлатежнойСсылки();
|
||
|
||
Для Каждого Реквизиты Из МассивПараметров Цикл
|
||
|
||
Если Реквизиты.ТипРасчетов <> Перечисления.ТипыРасчетовСПартнерами.РасчетыСПоставщиком Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
|
||
Контрагент = ОбщегоНазначенияУТКлиентСервер.ДанныеПоПути(ДокументОбъект, Реквизиты.Контрагент);
|
||
|
||
Если ЗначениеЗаполнено(Контрагент) Тогда
|
||
ПараметрыПроверки.ИНН = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контрагент, "ИНН");
|
||
КонецЕсли;
|
||
|
||
СчетКонтрагента = ОбщегоНазначенияУТКлиентСервер.ДанныеПоПути(ДокументОбъект, Реквизиты.БанковскийСчетКонтрагента);
|
||
|
||
Если ЗначениеЗаполнено(СчетКонтрагента) Тогда
|
||
ПараметрыПроверки.НомерСчета = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СчетКонтрагента, "НомерСчета");
|
||
КонецЕсли;
|
||
|
||
Прервать;
|
||
|
||
КонецЦикла;
|
||
|
||
Выборка = Результат.Выбрать();
|
||
|
||
Пока Выборка.Следующий() Цикл
|
||
|
||
СсылкаКорректная = ДенежныеСредстваКлиентСерверЛокализация.ПолучательПлатежнойСсылкиСоответствуетДокументу(
|
||
ПараметрыПроверки, Выборка);
|
||
|
||
Если (Не СсылкаКорректная
|
||
И Выборка.ПроверкаПройдена)
|
||
Или (СсылкаКорректная
|
||
И Не Выборка.ПроверкаПройдена) Тогда
|
||
|
||
Если Не СсылкаКорректная Тогда
|
||
|
||
ТекстСообщения = СтрШаблон(
|
||
НСтр("ru = 'Реквизиты получателя платежа, указанные в платежной ссылке %1, не соответствуют данным получателя в документе.
|
||
|Получатель платежа СБП: ИНН - %2 , счет - %3'"),
|
||
Выборка.ПлатежнаяСсылка, Выборка.ИНН, Выборка.СчетПолучателя);
|
||
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
|
||
|
||
КонецЕсли;
|
||
|
||
НаборЗаписей = РегистрыСведений.ВходящиеПлатежныеСсылкиСБП.СоздатьНаборЗаписей();
|
||
НаборЗаписей.Отбор.ДокументОперации.Установить(Выборка.ДокументОперации);
|
||
НаборЗаписей.Отбор.ПлатежнаяСсылка.Установить(Выборка.ПлатежнаяСсылка);
|
||
НаборЗаписей.Прочитать();
|
||
|
||
Для Каждого Запись Из НаборЗаписей Цикл
|
||
Запись.ПроверкаПройдена = СсылкаКорректная;
|
||
КонецЦикла;
|
||
|
||
НаборЗаписей.Записать();
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
Исключение
|
||
|
||
ТекстСообщения = СтрШаблон(
|
||
НСтр("ru = 'Не удалось выполнить проверку платежных ссылок СБП по причине: %1'"),
|
||
ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , , , Отказ);
|
||
|
||
КонецПопытки;
|
||
|
||
УстановитьПривилегированныйРежим(Ложь);
|
||
//-- Локализация
|
||
|
||
Возврат;
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#КонецОбласти
|
||
|
||
//++ Локализация
|
||
|
||
#Область СлужебныйПрограммныйИнтерфейс
|
||
|
||
Процедура ЗаполнитьСписокТиповДокумента(Объект, Элемент) Экспорт
|
||
|
||
ТипыДокумента = Перечисления.ТипыПлатежныхДокументов;
|
||
СписокВыбора = Элемент.СписокВыбора;
|
||
|
||
СписокВыбора.Очистить();
|
||
СписокВыбора.Добавить(ТипыДокумента.ПлатежноеПоручение);
|
||
СписокВыбора.Добавить(ТипыДокумента.ИнкассовоеПоручение);
|
||
СписокВыбора.Добавить(ТипыДокумента.ПлатежноеТребование);
|
||
СписокВыбора.Добавить(ТипыДокумента.ПлатежныйОрдер);
|
||
СписокВыбора.Добавить(ТипыДокумента.БанковскийОрдер);
|
||
|
||
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеречислениеДенежныхСредствНаДругойСчет
|
||
И ПолучитьФункциональнуюОпцию("ИспользоватьВалютныеПлатежи") Тогда
|
||
СписокВыбора.Добавить(ТипыДокумента.РаспоряжениеОбОбязательнойПродаже);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура УправлениеЭлементамиФормыПриЧтенииСозданииНаСервере(Форма) Экспорт
|
||
|
||
ИмяОбъекта = "";
|
||
Если Форма.Параметры.Свойство("Ключ") Тогда
|
||
ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипЗнч(Форма.Параметры.Ключ));
|
||
Если ОбъектМетаданных <> Неопределено Тогда
|
||
ИмяОбъекта = ОбъектМетаданных.Имя;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если Не ЗначениеЗаполнено(ИмяОбъекта) Тогда
|
||
ВызватьИсключение НСтр("ru = 'Не удалось выполнить настройку полей формы'");
|
||
КонецЕсли;
|
||
|
||
НастройкиПолейФормыЛокализация = ДенежныеСредстваСервер.ИнициализироватьНастройкиПолейФормы();
|
||
|
||
МодульЛокализацииОбъекта = ОбщегоНазначения.ОбщийМодуль(ИмяОбъекта + "Локализация");
|
||
МодульЛокализацииОбъекта.ЗаполнитьНастройкиПолейФормы(НастройкиПолейФормыЛокализация);
|
||
|
||
НастройкиПолейФормы = Форма.РеквизитФормыВЗначение("НастройкиПолей");
|
||
ОбщегоНазначенияУТ.ДобавитьСтрокиВТаблицу(НастройкиПолейФормы, НастройкиПолейФормыЛокализация);
|
||
Форма.ЗначениеВРеквизитФормы(НастройкиПолейФормы, "НастройкиПолей");
|
||
|
||
ЗависимостиПолейФормы = ДенежныеСредстваСервер.ЗависимостиПолейФормы(НастройкиПолейФормы);
|
||
Форма.ЗначениеВРеквизитФормы(ЗависимостиПолейФормы, "ЗависимостиПолей");
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПриСозданииФормыСпискаПрисоединенныхФайлов(Форма) Экспорт
|
||
|
||
Если ДокументыСПередачейФайловВБанк().Найти(ТипЗнч(Форма.ВладелецФайла)) <> Неопределено Тогда
|
||
СхемаЗапроса = Новый СхемаЗапроса;
|
||
СхемаЗапроса.УстановитьТекстЗапроса(Форма.Список.ТекстЗапроса);
|
||
СхемаЗапроса.ПакетЗапросов[0].Операторы[0].ВыбираемыеПоля.Добавить("Файлы.ДляПередачиВБанк");
|
||
Форма.Список.ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();
|
||
|
||
НовыйЭлемент = Форма.Элементы.Добавить("СписокДляПередачиВБанк", Тип("ПолеФормы"), Форма.Элементы.Список);
|
||
НовыйЭлемент.ПутьКДанным = "Список.ДляПередачиВБанк";
|
||
НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка;
|
||
Форма.Элементы.Переместить(НовыйЭлемент, Форма.Элементы.Список, Форма.Элементы.СписокНомерКартинкиПодписанЗашифрован);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПриСозданииФормыЭлементаПрисоединенныхФайлов(Форма) Экспорт
|
||
|
||
Если ДокументыСПередачейФайловВБанк().Найти(ТипЗнч(Форма.Объект.ВладелецФайла)) <> Неопределено Тогда
|
||
НовыйЭлемент = Форма.Элементы.Добавить("ДляПередачиВБанк", Тип("ПолеФормы"), Форма.Элементы.ГруппаОбщиеДанные);
|
||
НовыйЭлемент.ПутьКДанным = "Объект.ДляПередачиВБанк";
|
||
НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка;
|
||
НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;
|
||
Форма.Элементы.Переместить(НовыйЭлемент, Форма.Элементы.ГруппаОбщиеДанные, Форма.Элементы.Наименование0);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция НадписьФайлыДляПередачиВБанк(Ссылка) Экспорт
|
||
|
||
ТекстНадписи = НСтр("ru='Файлы для передачи в банк'");
|
||
|
||
Если ЗначениеЗаполнено(Ссылка) Тогда
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст = "
|
||
|ВЫБРАТЬ
|
||
| КОЛИЧЕСТВО(*) КАК Количество
|
||
|ИЗ
|
||
| %ИмяТаблицы%
|
||
|ГДЕ
|
||
| ВладелецФайла = &Ссылка
|
||
| И ДляПередачиВБанк
|
||
| И НЕ ПометкаУдаления
|
||
|";
|
||
|
||
ИмяТаблицы = "Справочник." + Ссылка.Метаданные().Имя + "ПрисоединенныеФайлы";
|
||
Запрос.Текст = СтрЗаменить(Запрос.Текст, "%ИмяТаблицы%", ИмяТаблицы);
|
||
Запрос.УстановитьПараметр("Ссылка", Ссылка);
|
||
|
||
ТекстНадписи = ТекстНадписи + " (" + Запрос.Выполнить().Выгрузить()[0].Количество + ")";
|
||
КонецЕсли;
|
||
|
||
Возврат ТекстНадписи;
|
||
|
||
КонецФункции
|
||
|
||
#Область РеквизитыПлательщикаПолучателя
|
||
|
||
// Заполняет реквизиты плательщика в объекте документа на указанную дату.
|
||
//
|
||
// Параметры:
|
||
// ДокументОбъект - ДокументОбъект.ЗаявкаНаРасходованиеДенежныхСредств, ДокументОбъект.СписаниеБезналичныхДенежныхСредств, ДанныеФормыСтруктура -
|
||
// документ, в который заполняются реквизиты плательщика
|
||
// Дата - Дата - дата, на которую определяются реквизиты плательщика
|
||
//
|
||
Процедура ЗаполнитьРеквизитыПлательщика(ДокументОбъект, Дата) Экспорт
|
||
|
||
СтруктураРеквизитовПлательщика = РеквизитыПлательщика(ДокументОбъект, Дата);
|
||
ЗаполнитьЗначенияСвойств(ДокументОбъект, СтруктураРеквизитовПлательщика);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Обновляет реквизиты плательщика в форме объекта на указанную дату.
|
||
//
|
||
// Параметры:
|
||
// ДокументОбъект - ДокументОбъект.ЗаявкаНаРасходованиеДенежныхСредств, ДокументОбъект.СписаниеБезналичныхДенежныхСредств, ДанныеФормыСтруктура -
|
||
// документ, в котором обновляются реквизиты плательщика
|
||
// Дата - Дата - Дата, на которую актуализируются реквизиты плательщика
|
||
//
|
||
Процедура ОбновитьРеквизитыПлательщика(ДокументОбъект, Дата) Экспорт
|
||
|
||
РеквизитыПлательщика = РеквизитыПлательщика(ДокументОбъект, Дата);
|
||
ПреобразоватьПустойРеквизитПлательщика(ДокументОбъект.ПеречислениеВБюджет, ДокументОбъект.ИННПлательщика);
|
||
ПреобразоватьПустойРеквизитПлательщика(ДокументОбъект.ПеречислениеВБюджет, ДокументОбъект.КПППлательщика);
|
||
ДокументОбъект.ТекстПлательщика = РеквизитыПлательщика.ТекстПлательщика;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращает реквизиты плательщика для указанного объекта.
|
||
//
|
||
// Параметры:
|
||
// Объект - ДокументОбъект.ЗаявкаНаРасходованиеДенежныхСредств,
|
||
// ДокументОбъект.СписаниеБезналичныхДенежныхСредств - документ оплаты.
|
||
// - ДанныеФормыСтруктура - структура с данными документа.
|
||
// - Структура - данные плательщика и платежа:
|
||
// * Организация - СправочникСсылка.Организации - плательщик.
|
||
// * БанковскийСчет - СправочникСсылка.БанковскиеСчетаОрганизаций - банковский счет плательщика.
|
||
// * ПеречислениеВБюджет - Булево - признак перечисления денежных средств в бюджет.
|
||
// * ТипНалога - СправочникСсылка.ВидыНалоговВзносов - тип налога при перечислении в бюджет, используется при Истина в ПеречислениеВБюджет.
|
||
// * КодБК - Строка - КБК при перечислении в бюджет, используется при Истина в ПеречислениеВБюджет.
|
||
// Дата - Дата - дата, на которую формируются реквизиты
|
||
//
|
||
// Возвращаемое значение:
|
||
// см. ДанныеПлательщика
|
||
//
|
||
Функция РеквизитыПлательщика(Объект, Дата) Экспорт
|
||
|
||
Результат = ДанныеПлательщика(Объект.Организация, Объект.БанковскийСчет, Дата, Объект.ПеречислениеВБюджет);
|
||
|
||
Если Объект.ПеречислениеВБюджет Тогда
|
||
|
||
ИНН = Результат.ИННПлательщика;
|
||
ИНН = СтрЗаменить(ИНН, "0", "");
|
||
|
||
Если ПустаяСтрока(ИНН) Тогда
|
||
Результат.ИННПлательщика = "0";
|
||
КонецЕсли;
|
||
|
||
КПП = Результат.КПППлательщика;
|
||
КПП = СтрЗаменить(КПП, "0", "");
|
||
|
||
Если (ПустаяСтрока(КПП)
|
||
Или Результат.ИННПлательщика = "0") Тогда
|
||
Результат.КПППлательщика = "0";
|
||
КонецЕсли;
|
||
|
||
Если ПлатежиВБюджетКлиентСервер.ДействуетПриказ58н_202604(Дата)
|
||
И (Объект.ТипНалога = Справочники.ВидыНалоговВзносов.ЕдиныйНалоговыйПлатеж
|
||
Или ПлатежиВБюджетКлиентСервер.ЭтоЕдиныйНалоговыйПлатеж(Объект.КодБК))
|
||
И СтрДлина(Результат.ИННПлательщика) <> 5 Тогда
|
||
Результат.КПППлательщика = "0";
|
||
КонецЕсли;
|
||
|
||
Иначе
|
||
|
||
Если Лев(Результат.ИННПлательщика, 2) = "00" Тогда
|
||
Результат.ИННПлательщика = "0";
|
||
КонецЕсли;
|
||
|
||
Если Лев(Результат.КПППлательщика, 2) = "00" Тогда
|
||
Результат.КПППлательщика = "0";
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает значение основных реквизитов плательщика.
|
||
//
|
||
// Параметры:
|
||
// Организация - СправочникСсылка.Организации - организация.
|
||
// БанковскийСчет - СправочникСсылка.БанковскиеСчетаОрганизаций - банковский счет.
|
||
// НаДату - Дата - дата актуальности данных
|
||
// ЭтоПеречислениеВБюджет - Булево - признак перечисления в бюджет
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура - данные плательщика:
|
||
// * ИННПлательщика - Строка - ИНН.
|
||
// * КПППлательщика - Строка - КПП.
|
||
// * ТекстПлательщика - Строка - наименование плательщика в печатных документах.
|
||
//
|
||
Функция ДанныеПлательщика(Организация, БанковскийСчет, НаДату, ЭтоПеречислениеВБюджет) Экспорт
|
||
|
||
Результат = Новый Структура;
|
||
Результат.Вставить("ИННПлательщика", "");
|
||
Результат.Вставить("КПППлательщика", "");
|
||
Результат.Вставить("ТекстПлательщика", "");
|
||
|
||
Если ЗначениеЗаполнено(Организация) Тогда
|
||
|
||
Отбор = ДенежныеСредстваСервер.ПараметрыДляПоискаДанныхСторонДокумента();
|
||
Отбор.Дата = ?(НаДату = Дата('00010101'), ТекущаяДатаСеанса(), НаДату);
|
||
Отбор.Организация = Организация;
|
||
|
||
РеквизитыСторон = ДенежныеСредстваСервер.СведенияОПолучателеПлательщикеПоСтруктуре(Истина, Отбор);
|
||
|
||
Результат.ИННПлательщика = РеквизитыСторон.ИННПлательщика;
|
||
Результат.КПППлательщика = РеквизитыСторон.КПППлательщика;
|
||
Результат.ТекстПлательщика = РеквизитыСторон.НаименованиеСокращенноеПлательщика;
|
||
|
||
Если ЗначениеЗаполнено(БанковскийСчет) Тогда
|
||
|
||
Если ЭтоПеречислениеВБюджет Тогда
|
||
ТекстКорреспондента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(БанковскийСчет, "ТекстКорреспондентаБюджет");
|
||
Иначе
|
||
ТекстКорреспондента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(БанковскийСчет, "ТекстКорреспондента");
|
||
КонецЕсли;
|
||
|
||
Если ЗначениеЗаполнено(ТекстКорреспондента) Тогда
|
||
Результат.ТекстПлательщика = ТекстКорреспондента;
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Устанавливает текст надписи с реквизитами стороны (плательщика или получателя) на форме в зависимости от выбранной хозяйственной операции.
|
||
//
|
||
// Параметры:
|
||
// ЭтоПлательщик - Булево - признак того, что сторона является плательщиком.
|
||
// Форма - ФормаКлиентскогоПриложения - форма документа.
|
||
// РеквизитыСтороны - см. ОписаниеРеквизитовСтороныДляПроверки
|
||
//
|
||
Процедура УстановитьНадписьРеквизитыПлательщикаПолучателя(ЭтоПлательщик, Форма, РеквизитыСтороны) Экспорт
|
||
|
||
Объект = Форма.Объект;
|
||
|
||
Если ЗначениеЗаполнено(РеквизитыСтороны.Объект) Тогда
|
||
ТекстНадписи = НадписьРеквизитыПлательщикаПолучателя(
|
||
РеквизитыСтороны.ИНН, РеквизитыСтороны.КПП, РеквизитыСтороны.Наименование, РеквизитыСтороны.ЮрФизЛицо, ЭтоПлательщик, Объект.ПеречислениеВБюджет);
|
||
Иначе
|
||
ТекстНадписи = "";
|
||
КонецЕсли;
|
||
|
||
Если СтрДлина(ТекстНадписи) > 70 Тогда
|
||
ТекстНадписи = Лев(ТекстНадписи, 70) + "...";
|
||
КонецЕсли;
|
||
|
||
Если ЭтоПлательщик Тогда
|
||
Форма.НадписьРеквизитыПлательщика = ТекстНадписи;
|
||
Иначе
|
||
Форма.НадписьРеквизитыПолучателя = ТекстНадписи;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Проверяет реквизиты плательщика или получателя и обновляет надпись на форме в зависимости от наличия ошибок заполнения
|
||
//
|
||
// Параметры:
|
||
// ЭтоПлательщик - Булево - Истина для проверки плательщика, Ложь для получателя
|
||
// Форма - ФормаКлиентскогоПриложения - Форма, содержащая проверяемые данные
|
||
// РеквизитыСтороны - см. ОписаниеРеквизитовСтороныДляПроверки
|
||
//
|
||
Процедура ПроверитьРеквизитыПлательщикаПолучателя(ЭтоПлательщик, Форма, РеквизитыСтороны) Экспорт
|
||
|
||
Объект = Форма.Объект;
|
||
Ошибка = Ложь;
|
||
|
||
Если Объект.ПеречислениеВБюджет
|
||
И ЭтоПлательщик Тогда
|
||
ОшибкиЗаполнения = ПлатежиВБюджет.ОшибкиЗаполненияРеквизитовПлательщика(Объект, РеквизитыСтороны, Ложь, Ошибка);
|
||
ИначеЕсли Объект.ПеречислениеВБюджет
|
||
И Не ЭтоПлательщик Тогда
|
||
ОшибкиЗаполнения = ПлатежиВБюджет.ОшибкиЗаполненияРеквизитовПолучателя(Объект, РеквизитыСтороны, Ложь, Ошибка);
|
||
Иначе
|
||
ОшибкиЗаполнения = ОшибкиЗаполненияРеквизитовПлательщикаПолучателя(ЭтоПлательщик, Объект, РеквизитыСтороны, Ложь, Ошибка);
|
||
КонецЕсли;
|
||
|
||
Если ЭтоПлательщик Тогда
|
||
ЭлементФормы = Форма.Элементы.НадписьРеквизитыПлательщика;
|
||
Иначе
|
||
ЭлементФормы = Форма.Элементы.НадписьРеквизитыПолучателя;
|
||
КонецЕсли;
|
||
|
||
Если ОшибкиЗаполнения.Количество() <> 0 Тогда
|
||
ЭлементФормы.ЦветТекста = ЦветаСтиля.РезультатПроблемаЦвет;
|
||
ЭлементФормы.Подсказка = СтрСоединить(ОшибкиЗаполнения, Символы.ПС);
|
||
Иначе
|
||
ЭлементФормы.ЦветТекста = ЦветаСтиля.ГиперссылкаЦвет;
|
||
ЭлементФормы.Подсказка = "";
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Проверяет корректность заполнения реквизитов плательщика (ИНН, КПП, наименование плательщика)
|
||
// и формирует массив описаний найденных ошибок.
|
||
//
|
||
// Параметры:
|
||
// ЭтоПлательщик - Булево - Истина для проверки плательщика, Ложь для получателя
|
||
// ДокументОбъект - ДокументОбъект.ЗаявкаНаРасходованиеДенежныхСредств, ДокументОбъект.СписаниеБезналичныхДенежныхСредств, ДанныеФормыСтруктура -
|
||
// документ, содержащий проверяемые реквизиты плательщика
|
||
// РеквизитыСтороны - см. ОписаниеРеквизитовСтороныДляПроверки
|
||
// ВыводитьСообщение - Булево - если Истина, выводит сообщения пользователю об ошибках
|
||
// Отказ - Булево - признак отмены проведения документа (используется при выводе сообщений при проведении)
|
||
//
|
||
// Возвращаемое значение:
|
||
// Массив из Строка - массив текстовых описаний найденных ошибок заполнения
|
||
Функция ОшибкиЗаполненияРеквизитовПлательщикаПолучателя(ЭтоПлательщик, ДокументОбъект, РеквизитыСтороны, ВыводитьСообщение, Отказ = Ложь) Экспорт
|
||
|
||
ОшибкиЗаполнения = Новый Массив;
|
||
|
||
Если Не ЗначениеЗаполнено(РеквизитыСтороны.Объект) Тогда
|
||
Возврат ОшибкиЗаполнения;
|
||
КонецЕсли;
|
||
|
||
ИНН = СокрЛП(РеквизитыСтороны.ИНН);
|
||
КПП = СокрЛП(РеквизитыСтороны.КПП);
|
||
|
||
Если ПустаяСтрока(РеквизитыСтороны.Наименование) Тогда
|
||
|
||
Если ЭтоПлательщик Тогда
|
||
ОшибкиЗаполнения.Добавить(НСтр("ru = 'Наименование плательщика не заполнено'"));
|
||
Иначе
|
||
ОшибкиЗаполнения.Добавить(НСтр("ru = 'Наименование получателя не заполнено'"));
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
Если ЭтоПлательщик
|
||
Или (Не ЭтоПлательщик И Не ДокументОбъект.ПеречислениеВБюджет) Тогда
|
||
ЭтоЮрЛицо = СтрДлина(ИНН) = 10;
|
||
ЭтоФизЛицо = СтрДлина(ИНН) = 12;
|
||
ЭтоИнЮрЛицо = СтрДлина(ИНН) = 5;
|
||
Иначе
|
||
ЭтоЮрЛицо = (РеквизитыСтороны.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо);
|
||
ЭтоФизЛицо = (РеквизитыСтороны.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо
|
||
Или РеквизитыСтороны.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ИндивидуальныйПредприниматель);
|
||
ЭтоИнЮрЛицо = (РеквизитыСтороны.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицоНеРезидент);
|
||
КонецЕсли;
|
||
|
||
НулевойИНН = (ИНН = "0");
|
||
|
||
ПолеИНН = ?(ЭтоПлательщик, НСтр("ru = 'ИНН плательщика'"), НСтр("ru = 'ИНН получателя'"));
|
||
ПолеКПП = ?(ЭтоПлательщик, НСтр("ru = 'КПП плательщика'"), НСтр("ru = 'КПП получателя'"));
|
||
|
||
Если ЭтоИнЮрЛицо Тогда
|
||
|
||
Если НЕ СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(ИНН) Тогда
|
||
|
||
Шаблон = НСтр("ru = '%1 должен состоять только из цифр'");
|
||
ОшибкиЗаполнения.Добавить(СтрШаблон(Шаблон, ПолеИНН));
|
||
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли Не НулевойИНН И ИНН <> "" И Не ЭтоИнЮрЛицо И Не ДокументОбъект.ПеречислениеВБюджет Тогда
|
||
|
||
ТекстОшибки = "";
|
||
|
||
Если Не РегламентированныеДанныеКлиентСервер.ИННСоответствуетТребованиям(ИНН,
|
||
?(Не ЭтоЮрЛицо И Не ЭтоФизЛицо И Не ЭтоИнЮрЛицо, РеквизитыСтороны.ЮрФизЛицо <> Перечисления.ЮрФизЛицо.ИндивидуальныйПредприниматель И РеквизитыСтороны.ЮрФизЛицо <> Перечисления.ЮрФизЛицо.ФизЛицо, ЭтоЮрЛицо),
|
||
ТекстОшибки) Тогда
|
||
ОшибкиЗаполнения.Добавить(СтрЗаменить(ТекстОшибки, НСтр("ru = 'ИНН'"), ПолеИНН));
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
Если Лев(ИНН, 2) = "00" Тогда
|
||
|
||
Шаблон = НСтр("ru = 'Первый и второй знаки %1 не могут одновременно принимать значение ""0""'");
|
||
ОшибкиЗаполнения.Добавить(СтрШаблон(Шаблон, ПолеИНН));
|
||
|
||
КонецЕсли;
|
||
|
||
Если Лев(КПП, 2) = "00" Тогда
|
||
|
||
Шаблон = НСтр("ru = 'Первый и второй знаки %1 не могут одновременно принимать значение ""0""'");
|
||
ОшибкиЗаполнения.Добавить(СтрШаблон(Шаблон, ПолеКПП));
|
||
|
||
КонецЕсли;
|
||
|
||
Если ЭтоЮрЛицо И КПП <> "" И СтрДлина(КПП) <> 9
|
||
И Не ДокументОбъект.ПеречислениеВБюджет Тогда
|
||
|
||
Шаблон = НСтр("ru = '%1 должен содержать 9 символов'");
|
||
ОшибкиЗаполнения.Добавить(СтрШаблон(Шаблон, ПолеКПП));
|
||
|
||
КонецЕсли;
|
||
|
||
Если ЭтоФизЛицо И КПП <> "" И КПП <> "0" Тогда
|
||
|
||
Шаблон = НСтр("ru = '%1 для физлица не заполняется'");
|
||
ОшибкиЗаполнения.Добавить(СтрШаблон(Шаблон, ПолеКПП));
|
||
|
||
КонецЕсли;
|
||
|
||
Если ВыводитьСообщение Тогда
|
||
|
||
Если ЭтоПлательщик Тогда
|
||
Поле = "НадписьРеквизитыПлательщика";
|
||
Иначе
|
||
Поле = "НадписьРеквизитыПолучателя";
|
||
КонецЕсли;
|
||
|
||
Для Каждого ТекстОшибки Из ОшибкиЗаполнения Цикл
|
||
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , Поле, , Отказ);
|
||
КонецЦикла;
|
||
|
||
КонецЕсли;
|
||
|
||
Возврат ОшибкиЗаполнения;
|
||
|
||
КонецФункции
|
||
|
||
// Заполняет реквизиты получателя (ИНН, КПП, Наименование) на форме в зависимости от выбранной хозяйственной операции.
|
||
//
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения - Форма документа для заполнения реквизитов
|
||
// Дата - Дата - Дата актуальности данных получателя
|
||
// Получатель - СправочникСсылка.Контрагенты, СправочникСсылка.Организации, СправочникСсылка.ФизическиеЛица, Неопределено - Контрагент-получатель
|
||
// СчетПолучателя - СправочникСсылка.БанковскиеСчетаОрганизаций, СправочникСсылка.БанковскиеСчетаКонтрагентов, Неопределено - Счет получателя
|
||
//
|
||
Процедура ЗаполнитьРеквизитыПолучателя(Форма, Дата, Получатель, СчетПолучателя) Экспорт
|
||
|
||
Результат = ДанныеПолучателя(Получатель, СчетПолучателя, Дата);
|
||
Форма.ИННПолучателя = Результат.ИННПолучателя;
|
||
Форма.КПППолучателя = Результат.КПППолучателя;
|
||
Форма.ТекстПолучателя = Результат.ТекстПолучателя;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Формирует структуру с данными получателя: ИНН, КПП и наименование.
|
||
//
|
||
// Параметры:
|
||
// Получатель - СправочникСсылка.Контрагенты, СправочникСсылка.Организации, СправочникСсылка.ФизическиеЛица, Неопределено - ссылка на получателя
|
||
// БанковскийСчет - СправочникСсылка.БанковскиеСчетаКонтрагентов, СправочникСсылка.БанковскиеСчетаОрганизаций, Неопределено - банковский счет получателя
|
||
// НаДату - Дата - дата актуальности данных
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * ИННПолучателя - Строка - ИНН получателя
|
||
// * КПППолучателя - Строка - КПП получателя
|
||
// * ТекстПолучателя - Строка - наименование получателя
|
||
//
|
||
Функция ДанныеПолучателя(Получатель, БанковскийСчет, НаДату) Экспорт
|
||
|
||
Результат = Новый Структура;
|
||
Результат.Вставить("ИННПолучателя", "");
|
||
Результат.Вставить("КПППолучателя", "");
|
||
Результат.Вставить("ТекстПолучателя", "");
|
||
|
||
Если ЗначениеЗаполнено(Получатель) Тогда
|
||
|
||
Отбор = ДенежныеСредстваСервер.ПараметрыДляПоискаДанныхСторонДокумента();
|
||
Отбор.Дата = ?(НаДату = Дата('00010101'), ТекущаяДатаСеанса(), НаДату);
|
||
Отбор.Контрагент = Получатель;
|
||
|
||
РеквизитыСторон = ДенежныеСредстваСервер.СведенияОПолучателеПлательщикеПоСтруктуре(Истина, Отбор);
|
||
|
||
Результат.ИННПолучателя = РеквизитыСторон.ИННПолучателя;
|
||
Результат.КПППолучателя = РеквизитыСторон.КПППолучателя;
|
||
|
||
Если ТипЗнч(Получатель) = Тип("СправочникСсылка.Организации") Тогда
|
||
Результат.ТекстПолучателя = РеквизитыСторон.НаименованиеСокращенноеПолучателя;
|
||
Иначе
|
||
Результат.ТекстПолучателя = РеквизитыСторон.НаименованиеПолноеПолучателя;
|
||
КонецЕсли;
|
||
|
||
Если ЗначениеЗаполнено(БанковскийСчет) Тогда
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
|
||
| БанковскиеСчетаКонтрагентов.ИННКорреспондента КАК ИНН,
|
||
| БанковскиеСчетаКонтрагентов.КППКорреспондента КАК КПП,
|
||
| БанковскиеСчетаКонтрагентов.ТекстКорреспондента КАК Наименование
|
||
|ИЗ
|
||
| Справочник.БанковскиеСчетаКонтрагентов КАК БанковскиеСчетаКонтрагентов
|
||
|ГДЕ
|
||
| БанковскиеСчетаКонтрагентов.Ссылка = &Ссылка
|
||
|
|
||
|ОБЪЕДИНИТЬ ВСЕ
|
||
|
|
||
|ВЫБРАТЬ
|
||
| """",
|
||
| """",
|
||
| БанковскиеСчетаОрганизаций.ТекстКорреспондента
|
||
|ИЗ
|
||
| Справочник.БанковскиеСчетаОрганизаций КАК БанковскиеСчетаОрганизаций
|
||
|ГДЕ
|
||
| БанковскиеСчетаОрганизаций.Ссылка = &Ссылка";
|
||
|
||
Запрос.УстановитьПараметр("Ссылка", БанковскийСчет);
|
||
|
||
РезультатЗапроса = Запрос.Выполнить().Выбрать();
|
||
|
||
Пока РезультатЗапроса.Следующий() Цикл
|
||
|
||
Если ЗначениеЗаполнено(РезультатЗапроса.ИНН) Тогда
|
||
Результат.ИННПолучателя = РезультатЗапроса.ИНН;
|
||
КонецЕсли;
|
||
|
||
Если ЗначениеЗаполнено(РезультатЗапроса.КПП) Тогда
|
||
Результат.КПППолучателя = РезультатЗапроса.КПП;
|
||
КонецЕсли;
|
||
|
||
Если ЗначениеЗаполнено(РезультатЗапроса.Наименование) Тогда
|
||
Результат.ТекстПолучателя = РезультатЗапроса.Наименование;
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Формирует строковое представление реквизитов плательщика (ИНН, КПП и Наименование) с учетом локализации.
|
||
//
|
||
// Параметры:
|
||
// ИНН - Строка - идентификационный номер налогоплательщика
|
||
// КПП - Строка - код причины постановки на учет
|
||
// ТекстКорреспондента - Строка - наименование или описание корреспондента
|
||
// ЮрФизЛицо - ПеречислениеСсылка.ЮрФизЛицо - тип контрагента (юрлицо, физлицо, ИП, юрлицо (нерезидент))
|
||
// ЭтоПлательщик - Булево - признак, что это плательщик, а не получатель
|
||
// ЭтоПеречислениеВБюджет - Булево - признак перечисления средств в бюджет
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка - отформатированная строка с реквизитами плательщика
|
||
//
|
||
Функция НадписьРеквизитыПлательщикаПолучателя(ИНН, КПП, ТекстКорреспондента, ЮрФизЛицо, ЭтоПлательщик = Ложь, ЭтоПеречислениеВБюджет = Ложь) Экспорт
|
||
|
||
ШаблонНадписи = НСтр("ru = 'ИНН %1%2, %3'");
|
||
|
||
СтрокаИНН = ?(ПустаяСтрока(ИНН), НСтр("ru = '<не указан>'"), СокрЛП(ИНН));
|
||
|
||
СтрокаКПП = ", " + НСтр("ru = 'КПП'");
|
||
|
||
Если Не ЗначениеЗаполнено(КПП) Тогда
|
||
|
||
Если ЭтоПлательщик Тогда
|
||
|
||
Если Не ЭтоПеречислениеВБюджет И СтрДлина(СокрЛП(ИНН)) = 12 Тогда
|
||
СтрокаКПП = "";
|
||
Иначе
|
||
СтрокаКПП = СтрокаКПП + " " + НСтр("ru = '<не указан>'");
|
||
КонецЕсли;
|
||
|
||
Иначе
|
||
|
||
Если ЮрФизЛицо = Перечисления.ЮрФизЛицо.ИндивидуальныйПредприниматель
|
||
Или ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо Тогда
|
||
СтрокаКПП = "";
|
||
Иначе
|
||
СтрокаКПП = СтрокаКПП + " " + НСтр("ru = '<не указан>'");
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
Иначе
|
||
СтрокаКПП = СтрокаКПП + " " + КПП;
|
||
КонецЕсли;
|
||
|
||
СтрокаТекстКорреспондента = СокрЛП(ТекстКорреспондента);
|
||
|
||
Возврат СтрШаблон(ШаблонНадписи,
|
||
СтрокаИНН,
|
||
СтрокаКПП,
|
||
СтрокаТекстКорреспондента);
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает структуру с набором реквизитов стороны для проверки.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * ИНН - Строка - ИНН стороны
|
||
// * КПП - Строка - КПП стороны
|
||
// * Наименование - Строка - Наименование стороны
|
||
// * Объект - Произвольный - Объект стороны
|
||
// * ЮрФизЛицо - ПеречислениеСсылка.ЮрФизЛицо - Признак юр./физ. лица
|
||
//
|
||
Функция ОписаниеРеквизитовСтороныДляПроверки() Экспорт
|
||
|
||
РеквизитыСтороны = Новый Структура;
|
||
РеквизитыСтороны.Вставить("ИНН", "");
|
||
РеквизитыСтороны.Вставить("КПП", "");
|
||
РеквизитыСтороны.Вставить("Наименование", "");
|
||
РеквизитыСтороны.Вставить("Объект", Неопределено);
|
||
РеквизитыСтороны.Вставить("ЮрФизЛицо", Перечисления.ЮрФизЛицо.ПустаяСсылка());
|
||
|
||
Возврат РеквизитыСтороны;
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
|
||
// Проверяет корректность заполнения поля "Код вида дохода".
|
||
//
|
||
// Параметры:
|
||
// Объект - ДокументОбъект.ЗаявкаНаРасходованиеДенежныхСредств, ДокументОбъект.СписаниеБезналичныхДенежныхСредств - документ,
|
||
// для которого выполняется проверка.
|
||
// ХозяйственнаяОперация - ПеречислениеСсылка.ХозяйственныеОперации - операция документа
|
||
// Отказ - Булево - признак наличия ошибки
|
||
//
|
||
Процедура ПроверитьЗаполнениеКодаВидаДохода(Объект, ХозяйственнаяОперация, Отказ) Экспорт
|
||
|
||
Если Не ЗначениеЗаполнено(Объект.КодВидаДохода) Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Коды = ПлатежиВБюджетКлиентСервер.КодыВидовДохода(Объект.Дата,
|
||
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыплатаЗарплатыПоЗарплатномуПроекту
|
||
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыплатаЗарплатыНаЛицевыеСчета);
|
||
|
||
Если Коды.НайтиПоЗначению(Объект.КодВидаДохода) = Неопределено Тогда
|
||
|
||
ТекстСообщения = НСтр("ru = 'Значение в поле ""КВД"" отсутствует в списке выбора.'");
|
||
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, Объект, "КодВидаДохода", , Отказ);
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращает ссылку на созданный документ "Зачисление ДС на лицевые счета", формирует документ по данным файла
|
||
//
|
||
// Параметры:
|
||
// ДвоичныеДанныеФайла - ДвоичныеДанные - Файл в виде двоичных данных
|
||
// БанковскийСчет - СправочникСсылка.БанковскиеСчетаОрганизаций - Банковский счет
|
||
//
|
||
// Возвращаемое значение:
|
||
// Неопределено, ДокументСсылка.ПодтверждениеЗачисленияЗарплаты - подтверждение зачисления денежных средств
|
||
Функция ФормированиеПодтвержденияЗачисленияДенежныхСредств(ДвоичныеДанныеФайла, БанковскийСчет) Экспорт
|
||
|
||
ЧтениеXML = Новый ЧтениеXML;
|
||
ЧтениеXML.ОткрытьПоток(ДвоичныеДанныеФайла.ОткрытьПотокДляЧтения());
|
||
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
|
||
|
||
ДанныеЗаполнения = ОбменСБанкамиУТ.ДанныеПодтвержденияЗачисленияИзXDTO(ОбъектXDTO);
|
||
|
||
ЧтениеXML.Закрыть();
|
||
|
||
ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5);
|
||
ХешированиеДанных.Добавить(ДвоичныеДанныеФайла);
|
||
ХешСумма = СтрЗаменить(ХешированиеДанных.ХешСумма, " ", "");
|
||
|
||
ДанныеЗаполнения.Вставить("ХешФайла", ХешСумма);
|
||
|
||
НомерСчета = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(БанковскийСчет, "НомерСчета");
|
||
|
||
Если ДанныеЗаполнения.РасчетныйСчетОрганизации <> НомерСчета Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
|
||
Если Не ЗначениеЗаполнено(ДанныеЗаполнения.ПервичныйДокумент) Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
|
||
Отбор = Новый Структура("ФизическоеЛицо", Справочники.ФизическиеЛица.ПустаяСсылка());
|
||
ОшибочныеСтроки = ДанныеЗаполнения.Сотрудники.НайтиСтроки(Отбор);
|
||
|
||
Для каждого ТекСтрока Из ОшибочныеСтроки Цикл
|
||
ДанныеЗаполнения.Сотрудники.Удалить(ТекСтрока);
|
||
КонецЦикла;
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||
| ВложенныйЗапрос.Документ КАК Документ,
|
||
| ВложенныйЗапрос.Приоритет КАК Приоритет
|
||
|ИЗ
|
||
| (ВЫБРАТЬ
|
||
| ПодтверждениеЗачисленияЗарплаты.Ссылка КАК Документ,
|
||
| 0 КАК Приоритет
|
||
| ИЗ
|
||
| Документ.ПодтверждениеЗачисленияЗарплаты КАК ПодтверждениеЗачисленияЗарплаты
|
||
| ГДЕ
|
||
| ПодтверждениеЗачисленияЗарплаты.ХешФайла = &ХешФайла
|
||
| И ПодтверждениеЗачисленияЗарплаты.ПервичныйДокумент = &ПервичныйДокумент
|
||
|
|
||
| ОБЪЕДИНИТЬ ВСЕ
|
||
|
|
||
| ВЫБРАТЬ
|
||
| ПодтверждениеЗачисленияЗарплаты.Ссылка,
|
||
| 1
|
||
| ИЗ
|
||
| Документ.ПодтверждениеЗачисленияЗарплаты КАК ПодтверждениеЗачисленияЗарплаты
|
||
| ГДЕ
|
||
| ПодтверждениеЗачисленияЗарплаты.ПервичныйДокумент = &ПервичныйДокумент) КАК ВложенныйЗапрос
|
||
|
|
||
|УПОРЯДОЧИТЬ ПО
|
||
| Приоритет";
|
||
|
||
Запрос.УстановитьПараметр("ПервичныйДокумент", ДанныеЗаполнения.ПервичныйДокумент);
|
||
Запрос.УстановитьПараметр("ХешФайла", ХешСумма);
|
||
|
||
Результат = Запрос.Выполнить();
|
||
|
||
Если Не Результат.Пустой() Тогда
|
||
|
||
Выборка = Результат.Выбрать();
|
||
Выборка.Следующий();
|
||
ДокументОбъект = Выборка.Документ.ПолучитьОбъект();
|
||
|
||
Иначе
|
||
ДокументОбъект = Документы.ПодтверждениеЗачисленияЗарплаты.СоздатьДокумент();
|
||
КонецЕсли;
|
||
|
||
Если ДокументОбъект.Проведен Тогда
|
||
Возврат ДокументОбъект.Ссылка;
|
||
КонецЕсли;
|
||
|
||
Если ДокументОбъект.ПометкаУдаления Тогда
|
||
ДокументОбъект.УстановитьПометкуУдаления(Ложь);
|
||
КонецЕсли;
|
||
|
||
ДокументОбъект.Заполнить(ДанныеЗаполнения);
|
||
|
||
ЕстьОшибки = ДокументОбъект.ПроверитьЗаполнение();
|
||
|
||
ОшибкиЗагрузки = "";
|
||
|
||
Если ДокументОбъект.Сотрудники.Количество() <> ДанныеЗаполнения.КоличествоЗаписей Тогда
|
||
ДенежныеСредстваСервер.ДобавитьОшибкуЗаполнения(ОшибкиЗагрузки,
|
||
НСтр("ru = 'Количество строк в документе не совпадает с контрольными данными.'"));
|
||
ЕстьОшибки = Истина;
|
||
КонецЕсли;
|
||
|
||
Если ДанныеЗаполнения.СуммаИтого <> Неопределено
|
||
И ДокументОбъект.Сотрудники.Итог("Сумма") <> ДанныеЗаполнения.СуммаИтого Тогда
|
||
ДенежныеСредстваСервер.ДобавитьОшибкуЗаполнения(ОшибкиЗагрузки,
|
||
НСтр("ru = 'Сумма, зачисленная по документу, не совпадает с контрольными данными.'"));
|
||
ЕстьОшибки = Истина;
|
||
КонецЕсли;
|
||
|
||
Если ЕстьОшибки Тогда
|
||
ДенежныеСредстваСервер.ДобавитьОшибкуЗаполнения(ОшибкиЗагрузки,
|
||
ДокументОбъект.ДополнительныеСвойства.ОшибкиЗаполнения);
|
||
КонецЕсли;
|
||
|
||
ДокументОбъект.ОшибкиЗагрузки = СокрЛП(ОшибкиЗагрузки);
|
||
|
||
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
|
||
|
||
Если Не ЕстьОшибки Тогда
|
||
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
|
||
КонецЕсли;
|
||
|
||
Возврат ДокументОбъект.Ссылка;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает таблицу физических лиц, созданную по данным ФИО.
|
||
//
|
||
// Параметры:
|
||
// Сотрудники - ТаблицаЗначений - таблица сотрудников для получения ссылок:
|
||
// * Фамилия - Строка - фамилия сотрудника
|
||
// * Имя - Строка - имя сотрудника
|
||
// * Отчество - Строка - отчество сотрудника
|
||
// * НомерЛицевогоСчета - Строка - номер лицевого счета сотрудника
|
||
// * НомерСтроки - Строка - идентификатор номера строки в таблице
|
||
//
|
||
// Возвращаемое значение:
|
||
// ТаблицаЗначений - Физические лица с номерами лицевых счетов:
|
||
// * ФизическоеЛицо - СправочникСсылка.ФизическиеЛица - ссылка на справочник для ФИО
|
||
// * НомерЛицевогоСчета - Строка - номер лицевого счета ФИО
|
||
// * НомерСтроки - Строка - идентификатор номера строки в передаваемой таблице сотрудников
|
||
//
|
||
Функция ФизическиеЛицаЛицевыхСчетов(Сотрудники) Экспорт
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| ВЫРАЗИТЬ(Сотрудники.Фамилия КАК СТРОКА(50)) КАК Фамилия,
|
||
| ВЫРАЗИТЬ(Сотрудники.Имя КАК СТРОКА(50)) КАК Имя,
|
||
| ВЫРАЗИТЬ(Сотрудники.Отчество КАК СТРОКА(50)) КАК Отчество,
|
||
| Сотрудники.НомерЛицевогоСчета КАК НомерЛицевогоСчета,
|
||
| Сотрудники.НомерСтроки КАК НомерСтроки
|
||
|ПОМЕСТИТЬ ДанныеСотрудников
|
||
|ИЗ
|
||
| &Сотрудники КАК Сотрудники
|
||
|;
|
||
|
|
||
|////////////////////////////////////////////////////////////////////////////////
|
||
|ВЫБРАТЬ
|
||
| ФИОФизическихЛиц.ФизическоеЛицо КАК ФизическоеЛицо,
|
||
| ДанныеСотрудников.НомерЛицевогоСчета КАК НомерЛицевогоСчета,
|
||
| ДанныеСотрудников.НомерСтроки КАК НомерСтроки
|
||
|ИЗ
|
||
| ДанныеСотрудников КАК ДанныеСотрудников
|
||
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизическихЛиц КАК ФИОФизическихЛиц
|
||
| ПО ДанныеСотрудников.Фамилия = ФИОФизическихЛиц.Фамилия
|
||
| И ДанныеСотрудников.Имя = ФИОФизическихЛиц.Имя
|
||
| И ДанныеСотрудников.Отчество = ФИОФизическихЛиц.Отчество
|
||
|";
|
||
|
||
Запрос.УстановитьПараметр("Сотрудники", Сотрудники);
|
||
|
||
Возврат Запрос.Выполнить().Выгрузить();
|
||
|
||
КонецФункции
|
||
|
||
// Проверяет наличие выполненной выгрузки реестра в банк на перечисление ДС физическим лицам в измененном документе и
|
||
// выдает пользователю вопрос.
|
||
//
|
||
// Параметры:
|
||
// ТекущийОбъект - ДокументОбъект.СписаниеБезналичныхДенежныхСредств - проверяемый документ.
|
||
// Отказ - Булево - если Отказ будет ИСТИНА, то программа прекратит выполнения после обработчика, из которого вызвана
|
||
// процедура.
|
||
// ФлагОбменСБанками - Булево - признак запуска проверки в момент обмена с банком
|
||
//
|
||
Процедура ПроверитьВыгрузкуРеестраНаЗачислениеДенежныхСредств(ТекущийОбъект, Отказ, ФлагОбменСБанками) Экспорт
|
||
|
||
Если НЕ (ТекущийОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику
|
||
И ТекущийОбъект.СписокФизЛиц) Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
КонтрольныеРеквизиты = Новый Массив;
|
||
КонтрольныеРеквизиты.Добавить("Организация");
|
||
КонтрольныеРеквизиты.Добавить("Номер");
|
||
КонтрольныеРеквизиты.Добавить("Дата");
|
||
КонтрольныеРеквизиты.Добавить("ЛицевыеСчетаСотрудников");
|
||
КонтрольныеРеквизиты.Добавить("БанковскийСчет");
|
||
КонтрольныеРеквизиты.Добавить("Валюта");
|
||
КонтрольныеРеквизиты.Добавить("ОтделениеБанка");
|
||
КонтрольныеРеквизиты.Добавить("ФилиалОтделенияБанка");
|
||
КонтрольныеРеквизиты.Добавить("НомерВходящегоДокумента");
|
||
КонтрольныеРеквизиты.Добавить("ДатаВходящегоДокумента");
|
||
КонтрольныеРеквизиты.Добавить("СуммаДокумента");
|
||
КонтрольныеРеквизиты.Добавить("НомерДоговораСБанком");
|
||
КонтрольныеРеквизиты.Добавить("ДатаДоговораСБанком");
|
||
КонтрольныеРеквизиты.Добавить("ВидЗачисления");
|
||
КонтрольныеРеквизиты.Добавить("КодировкаФайла");
|
||
|
||
Если ТекущийОбъект.ДатаВыгрузкиРеестра <> '00010101' Тогда
|
||
|
||
Если ДокументИзменен(ТекущийОбъект, КонтрольныеРеквизиты)
|
||
И НЕ ДенежныеСредстваСервер.СуществуютЗачисленияДСНаЛицевыеСчета(ТекущийОбъект.Ссылка) Тогда
|
||
|
||
ТекстСообщения = НСтр("ru = 'Данные изменились с последней выгрузки реестра в банк и могут повлиять на процесс зачисления денежных средств.'");
|
||
|
||
Если Не ФлагОбменСБанками Тогда
|
||
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращает первичный документ для документа "Зачисление ДС на лицевые счета" по уникальному идентификатору.
|
||
//
|
||
// Параметры:
|
||
// Идентификатор - Строка - уникальный идентификатор объекта в информационной базе.
|
||
//
|
||
// Возвращаемое значение:
|
||
// - ОпределяемыйТип.ДокументЗачисленияЗарплаты
|
||
//
|
||
Функция ПервичныйДокументПоИдентификатору(Идентификатор) Экспорт
|
||
|
||
ИдентификаторДокумента = Новый УникальныйИдентификатор(Идентификатор);
|
||
ПервичныйДокументСсылка = Документы.СписаниеБезналичныхДенежныхСредств.ПолучитьСсылку(ИдентификаторДокумента);
|
||
|
||
|
||
Возврат ПервичныйДокументСсылка;
|
||
|
||
КонецФункции
|
||
|
||
|
||
// Проверяет счет на соответствие лицевому счету при казначейском сопровождении.
|
||
//
|
||
// Параметры:
|
||
// Объект - ФормаКлиентскогоПриложения - форма, на которой выполняется проверка.
|
||
//
|
||
Процедура ПроверитьЛицевойСчетКазначейскогоСопровождения(Объект) Экспорт
|
||
|
||
|
||
КонецПроцедуры
|
||
|
||
// Корректирует номер документа на основании письма ЦБ России № 59-Т от 03.04.2013.
|
||
//
|
||
// Параметры:
|
||
// Объект - ДокументОбъект.СписаниеБезналичныхДенежныхСредств, ДокументОбъект.ПоступлениеБезналичныхДенежныхСредств -
|
||
// документ, в котором выполняется корректировка.
|
||
//
|
||
Процедура ИзменитьНомерПлатежногоПоручения(Объект) Экспорт
|
||
|
||
ПоследниеТриСимвола = Прав(СокрЛП(Объект.Номер), 3);
|
||
ЭтоПлатежныйДокументКВыгрузке = (ТипЗнч(Объект) = Тип("ДокументОбъект.СписаниеБезналичныхДенежныхСредств")
|
||
И Объект.ТипПлатежногоДокумента = Перечисления.ТипыПлатежныхДокументов.ПлатежноеПоручение)
|
||
ИЛИ (ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеБезналичныхДенежныхСредств")
|
||
И Объект.ТипПлатежногоДокумента = Перечисления.ТипыПлатежныхДокументов.ПлатежноеТребование);
|
||
|
||
Если ПоследниеТриСимвола = "000"
|
||
И ЭтоПлатежныйДокументКВыгрузке
|
||
И Не (ЗначениеЗаполнено(Объект.НомерВходящегоДокумента)
|
||
ИЛИ ЗначениеЗаполнено(Объект.ДатаВходящегоДокумента)) Тогда
|
||
|
||
ПозицияДефис = Найти(Объект.Номер, "-");
|
||
ОсновнойПрефикс = ?(ПозицияДефис > 0, Лев(Объект.Номер, ПозицияДефис), "");
|
||
ПользовательскийПрефикс = ПрефиксацияОбъектовКлиентСервер.ПользовательскийПрефикс(Объект.Номер);
|
||
Префикс = ОсновнойПрефикс + ПользовательскийПрефикс;
|
||
|
||
ДлинаНомера = СтрДлина(СокрЛП(Объект.Номер)) - СтрДлина(Префикс);
|
||
НомерДокумента = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Объект.Номер, Истина, Истина);
|
||
НомерДокумента = ?(НомерДокумента = "", 0, Число(НомерДокумента));
|
||
|
||
ПараметрыНомера = Новый Структура;
|
||
ПараметрыНомера.Вставить("Номер", НомерДокумента);
|
||
ПараметрыНомера.Вставить("Префикс", Префикс);
|
||
ПараметрыНомера.Вставить("Длина", ДлинаНомера);
|
||
|
||
УвеличитьНомерПлатежногоДокумента(Объект, ПараметрыНомера);
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Определяет свойства полей формы в зависимости от данных
|
||
//
|
||
// Параметры:
|
||
// Настройки - см. ДенежныеСредстваСервер.ИнициализироватьНастройкиПолейФормы.
|
||
//
|
||
Процедура ЗаполнитьНастройкиПолейФормы(Настройки) Экспорт
|
||
|
||
Финансы = ФинансоваяОтчетностьСервер;
|
||
|
||
ОтборВыплатаСамозанятому = ДенежныеСредстваСервер.ОтборВыплатаСамозанятому();
|
||
ОтборСписокКонтрагентов = ДенежныеСредстваСервер.ОтборСписокКонтрагентов(ОтборВыплатаСамозанятому);
|
||
|
||
// Оплата самозанятому
|
||
Элемент = Настройки.Добавить();
|
||
Элемент.Поля.Добавить("ОперацияССамозанятым");
|
||
Финансы.НовыйОтбор(Элемент.Условие, "ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ОплатаПоставщику);
|
||
|
||
ГруппаИли = Финансы.НовыйОтбор(Элемент.Условие, , , Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
|
||
ГруппаИли.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
|
||
|
||
Финансы.СкопироватьОтбор(ОтборСписокКонтрагентов, ГруппаИли);
|
||
Финансы.НовыйОтбор(ГруппаИли, "Дополнительно.КонтрагентЮрФизЛицо", Перечисления.ЮрФизЛицо.ФизЛицо);
|
||
Финансы.НовыйОтбор(ГруппаИли, "Дополнительно.КонтрагентЮрФизЛицо", Перечисления.ЮрФизЛицо.ИндивидуальныйПредприниматель);
|
||
Финансы.НовыйОтбор(ГруппаИли, "ОперацияССамозанятым", Истина);
|
||
Элемент.Свойства.Вставить("Видимость");
|
||
|
||
// Получатель
|
||
Элемент = Настройки.Добавить();
|
||
Элемент.Поля.Добавить("ЛокализацияГруппаПолучатель");
|
||
Финансы.СкопироватьОтбор(ОтборВыплатаСамозанятому, Элемент.Условие);
|
||
Элемент.Свойства.Вставить("Видимость");
|
||
|
||
Элемент = Настройки.Добавить();
|
||
Элемент.Поля.Добавить("Получатель");
|
||
Финансы.СкопироватьОтбор(ОтборВыплатаСамозанятому, Элемент.Условие);
|
||
Элемент.Свойства.Вставить("Заголовок", НСтр("ru = 'Самозанятый'"));
|
||
|
||
Элемент = Настройки.Добавить();
|
||
Элемент.Поля.Добавить("Получатель");
|
||
Финансы.СкопироватьОтбор(ОтборВыплатаСамозанятому, Элемент.Условие);
|
||
Финансы.НовыйОтбор(Элемент.Условие, "СписокКонтрагентов", Ложь);
|
||
Элемент.Свойства.Вставить("Видимость");
|
||
|
||
// Пустой контрагент
|
||
Элемент = Настройки.Добавить();
|
||
Элемент.Поля.Добавить("ПустойКонтрагент");
|
||
Финансы.СкопироватьОтбор(ОтборСписокКонтрагентов, Элемент.Условие);
|
||
Элемент.Свойства.Вставить("Видимость");
|
||
|
||
// ПлатежиПо275ФЗ
|
||
Элемент = Настройки.Добавить();
|
||
Элемент.Поля.Добавить("ПлатежиПо275ФЗ");
|
||
ГруппаНе = Финансы.НовыйОтбор(Элемент.Условие,,, Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
|
||
ГруппаНе.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаНе;
|
||
Финансы.СкопироватьОтбор(ОтборВыплатаСамозанятому, ГруппаНе);
|
||
|
||
ГруппаНеХозОперации = Финансы.НовыйОтбор(Элемент.Условие,,, Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
|
||
ГруппаНеХозОперации.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаНе;
|
||
ГруппаИлиХозОперации = Финансы.НовыйОтбор(ГруппаНеХозОперации, , , Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
|
||
ГруппаИлиХозОперации.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
|
||
Финансы.НовыйОтбор(ГруппаИлиХозОперации, "ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ВыдачаЗаймов);
|
||
Финансы.НовыйОтбор(ГруппаИлиХозОперации, "ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ВыдачаЗаймаСотруднику);
|
||
|
||
Элемент.Свойства.Вставить("Видимость");
|
||
|
||
#Область РасшифровкаПлатежа
|
||
// Контрагент
|
||
Элемент = Настройки.Добавить();
|
||
Элемент.Поля.Добавить("РасшифровкаПлатежа.Контрагент");
|
||
Финансы.СкопироватьОтбор(ОтборСписокКонтрагентов, Элемент.Условие);
|
||
Элемент.Свойства.Вставить("Видимость");
|
||
|
||
// ГруппаНДС
|
||
Элемент = Настройки.Добавить();
|
||
Элемент.Поля.Добавить("ГруппаНДС");
|
||
Финансы.СкопироватьОтбор(ОтборВыплатаСамозанятому, Элемент.Условие);
|
||
Элемент.Свойства.Вставить("Видимость", Ложь);
|
||
#КонецОбласти
|
||
|
||
#Область БанковскиеСчетаКонтрагентов
|
||
Элемент = Настройки.Добавить();
|
||
Элемент.Поля.Добавить("БанковскиеСчетаСпискаКонтрагентов");
|
||
Финансы.СкопироватьОтбор(ОтборСписокКонтрагентов, Элемент.Условие);
|
||
Элемент.Свойства.Вставить("Видимость");
|
||
|
||
Элемент = Настройки.Добавить();
|
||
Элемент.Поля.Добавить("БанковскиеСчетаСпискаКонтрагентовКонтрагент");
|
||
Финансы.СкопироватьОтбор(ОтборВыплатаСамозанятому, Элемент.Условие);
|
||
Элемент.Свойства.Вставить("Заголовок", "Самозанятый");
|
||
|
||
Элемент = Настройки.Добавить();
|
||
Элемент.Поля.Добавить("БанковскиеСчетаСпискаКонтрагентовБанковскийСчетКонтрагента");
|
||
Финансы.СкопироватьОтбор(ОтборВыплатаСамозанятому, Элемент.Условие);
|
||
Элемент.Свойства.Вставить("Заголовок", "Счет");
|
||
#КонецОбласти
|
||
|
||
КонецПроцедуры
|
||
|
||
// Процедура устанавливает параметры выбора для контрагента.
|
||
//
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения - форма документа.
|
||
// Объект - ДанныеФормыСтруктура - Текущий объект
|
||
// Элемент - ПолеФормы - Поле для ввода контрагента.
|
||
//
|
||
Процедура УстановитьПараметрыВыбораКонтрагента(Форма, Объект, Элемент) Экспорт
|
||
|
||
Элемент.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Устанавливает код вида дохода для самозанятого.
|
||
//
|
||
// Параметры:
|
||
// Объект - ДокументОбъект - документ, в котором выполняется установка.
|
||
//
|
||
Процедура УстановитьКодВидаДоходаСамозанятого(Объект) Экспорт
|
||
|
||
Если (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ОплатаПоставщику
|
||
И Объект.ОперацияССамозанятым)
|
||
И Не Объект.СписокКонтрагентов Тогда
|
||
|
||
ВидКонтрагента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Контрагент, "ЮрФизЛицо");
|
||
|
||
Если ВидКонтрагента = Перечисления.ЮрФизЛицо.ФизЛицо Тогда
|
||
Объект.КодВидаДохода = "1";
|
||
Иначе
|
||
Объект.КодВидаДохода = "";
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Выполняет изменение данных объекта и реквизитов формы при изменении переключателя списка контрагентов.
|
||
//
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения - форма, в которой выполняется изменение.
|
||
//
|
||
Процедура ПриИзмененииПризнакаСпискаКонтрагентов(Форма) Экспорт
|
||
|
||
Форма.Объект.СписокКонтрагентов = Булево(Форма.СписокКонтрагентов);
|
||
|
||
Форма.Объект.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
|
||
Форма.Объект.БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПустаяСсылка();
|
||
|
||
Если Булево(Форма.СписокКонтрагентов) Тогда
|
||
|
||
Форма.Объект.КодВидаДохода = "";
|
||
|
||
Форма.ДоговорКонтрагента = Неопределено;
|
||
Форма.Объект.Договор = Неопределено;
|
||
Форма.Объект.ИдентификаторПлатежа = "";
|
||
ДенежныеСредстваСервер.ЗаполнитьДанныеОбъектаРасчетовРасшифровкиПлатежа(Форма.Объект);
|
||
|
||
КонецЕсли;
|
||
|
||
УстановитьПереключательРасшифровки(Форма);
|
||
|
||
ЗаполнитьКонтрагентаРасшифровкиПлатежа(Форма.Объект);
|
||
ЗаполнитьРеестрКонтрагентов(Форма.Объект);
|
||
ДенежныеСредстваСерверЛокализация.УстановитьПараметрыВыбораБанковскихСчетаСпискаКонтрагентов(
|
||
Форма.Объект, Форма.Элементы.БанковскиеСчетаСпискаКонтрагентовБанковскийСчетКонтрагента);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Выполняет изменение данных объекта и реквизитов формы при изменении хозяйственной операции.
|
||
//
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения - форма, в которой выполняется изменение операции.
|
||
//
|
||
Процедура ПриИзмененииХозяйственнойОперации(Форма) Экспорт
|
||
|
||
Если Форма.Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ОплатаПоставщику
|
||
И Форма.Объект.ОперацияССамозанятым Тогда
|
||
|
||
ТипКонтрагента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Форма.Объект.Контрагент, "ЮридическоеФизическоеЛицо");
|
||
Если ТипКонтрагента <> Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо Тогда
|
||
Форма.Объект.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
|
||
Форма.Объект.БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПустаяСсылка();
|
||
КонецЕсли;
|
||
|
||
Форма.Объект.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС;
|
||
|
||
Иначе
|
||
Форма.СписокКонтрагентов = 0;
|
||
Форма.Объект.СписокКонтрагентов = Булево(Форма.СписокКонтрагентов);
|
||
Форма.Объект.ОперацияССамозанятым = Ложь;
|
||
КонецЕсли;
|
||
|
||
УстановитьКодВидаДоходаСамозанятого(Форма.Объект);
|
||
|
||
ДенежныеСредстваКлиентСерверЛокализация.УстановитьПараметрыВыбораПолучателя(Форма, Форма.Объект, Форма.Элементы.Получатель);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Переключает вид расшифровки платежа на форме: без разбиения/списком.
|
||
//
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения - форма, в которой выполняется переключение вида расшифровки.
|
||
//
|
||
Процедура УстановитьПереключательРасшифровки(Форма) Экспорт
|
||
|
||
Форма.ПереключательРасшифровки = ?(Форма.Объект.РасшифровкаПлатежа.Количество() > 1, 1, Форма.Объект.СписокКонтрагентов Или Форма.ЭтоПодборЗаявок);
|
||
|
||
Если Форма.ПереключательРасшифровки Тогда
|
||
Форма.Элементы.СтраницыРасшифровки.ТекущаяСтраница = Форма.Элементы.РасшифровкаСписком;
|
||
Иначе
|
||
Форма.Элементы.СтраницыРасшифровки.ТекущаяСтраница = Форма.Элементы.РасшифровкаБезРазбиения;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Заполняет таблицу реестра контрагентов по расшифровке платежа.
|
||
//
|
||
// Параметры:
|
||
// Объект - ДокументОбъект - исходные данные для формирования реестра контрагентов.
|
||
//
|
||
Процедура ЗаполнитьРеестрКонтрагентов(Объект) Экспорт
|
||
|
||
Если Не Объект.СписокКонтрагентов Тогда
|
||
|
||
Объект.БанковскиеСчетаСпискаКонтрагентов.Очистить();
|
||
Возврат;
|
||
|
||
КонецЕсли;
|
||
|
||
НовыйРеестр = РеестрКонтрагентов(Объект);
|
||
Объект.БанковскиеСчетаСпискаКонтрагентов.Очистить();
|
||
Объект.БанковскиеСчетаСпискаКонтрагентов.Загрузить(НовыйРеестр);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращает реестр контрагентов по расшифровке платежа.
|
||
//
|
||
// Параметры:
|
||
// Объект - ДокументОбъект, Структура - исходные данные с таблицей "Расшифровка платежа" для формирования реестра контрагентов.
|
||
//
|
||
// Возвращаемое значение:
|
||
// см. НоваяТаблицаБанковскихСчетовСпискаКонтрагентов.
|
||
//
|
||
Функция РеестрКонтрагентов(Объект) Экспорт
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| Расчеты.Сумма КАК Сумма,
|
||
| Расчеты.Контрагент КАК Контрагент,
|
||
| Расчеты.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
|
||
| Расчеты.ОбъектРасчетов КАК ОбъектРасчетов
|
||
|ПОМЕСТИТЬ Платежи
|
||
|ИЗ
|
||
| &Расчеты КАК Расчеты
|
||
|;
|
||
|
|
||
|////////////////////////////////////////////////////////////////////////////////
|
||
|ВЫБРАТЬ
|
||
| Реестр.Контрагент КАК Контрагент,
|
||
| Реестр.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента
|
||
|ПОМЕСТИТЬ ИсходныйРеестр
|
||
|ИЗ
|
||
| &Реестр КАК Реестр
|
||
|;
|
||
|
|
||
|////////////////////////////////////////////////////////////////////////////////
|
||
|ВЫБРАТЬ
|
||
| ИсходныйРеестр.Контрагент КАК Контрагент,
|
||
| ИсходныйРеестр.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
|
||
| БанковскиеСчетаКонтрагентов.ВалютаДенежныхСредств КАК Валюта
|
||
|ИЗ
|
||
| ИсходныйРеестр КАК ИсходныйРеестр
|
||
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчетаКонтрагентов КАК БанковскиеСчетаКонтрагентов
|
||
| ПО ИсходныйРеестр.БанковскийСчетКонтрагента = БанковскиеСчетаКонтрагентов.Ссылка
|
||
|;
|
||
|
|
||
|////////////////////////////////////////////////////////////////////////////////
|
||
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||
| Платежи.Контрагент КАК Контрагент,
|
||
| ОбъектыРасчетов.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента
|
||
|ИЗ
|
||
| Платежи КАК Платежи
|
||
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
|
||
| ПО Платежи.ОбъектРасчетов = ОбъектыРасчетов.Ссылка
|
||
|ГДЕ
|
||
| ОбъектыРасчетов.БанковскийСчетКонтрагента <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаКонтрагентов.ПустаяСсылка)
|
||
|;
|
||
|
|
||
|////////////////////////////////////////////////////////////////////////////////
|
||
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||
| Платежи.Контрагент КАК Контрагент,
|
||
| БанковскиеСчетаКонтрагентов.Ссылка КАК БанковскийСчетКонтрагента,
|
||
| БанковскиеСчетаКонтрагентов.Банк КАК Банк
|
||
|ИЗ
|
||
| Платежи КАК Платежи
|
||
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчетаКонтрагентов КАК БанковскиеСчетаКонтрагентов
|
||
| ПО Платежи.Контрагент = БанковскиеСчетаКонтрагентов.Владелец
|
||
| И Платежи.ВалютаВзаиморасчетов = БанковскиеСчетаКонтрагентов.ВалютаДенежныхСредств
|
||
|ГДЕ
|
||
| НЕ БанковскиеСчетаКонтрагентов.ПометкаУдаления
|
||
| И НЕ БанковскиеСчетаКонтрагентов.Закрыт
|
||
|;
|
||
|
|
||
|////////////////////////////////////////////////////////////////////////////////
|
||
|ВЫБРАТЬ
|
||
| Платежи.Контрагент КАК Контрагент,
|
||
| СУММА(Платежи.Сумма) КАК Сумма,
|
||
| Платежи.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов
|
||
|ИЗ
|
||
| Платежи КАК Платежи
|
||
|
|
||
|СГРУППИРОВАТЬ ПО
|
||
| Платежи.Контрагент,
|
||
| Платежи.ВалютаВзаиморасчетов";
|
||
|
||
ТаблицаКонтрагентов = Объект.РасшифровкаПлатежа.Выгрузить(, "ОбъектРасчетов, Контрагент, Сумма, ВалютаВзаиморасчетов");
|
||
ТаблицаКонтрагентов.Свернуть("ОбъектРасчетов, Контрагент, ВалютаВзаиморасчетов", "Сумма");
|
||
|
||
Запрос.УстановитьПараметр("Расчеты", ТаблицаКонтрагентов);
|
||
Запрос.УстановитьПараметр("Реестр", Объект.БанковскиеСчетаСпискаКонтрагентов.Выгрузить(, "Контрагент, БанковскийСчетКонтрагента"));
|
||
|
||
РезультатЗапроса = Запрос.ВыполнитьПакет();
|
||
|
||
ВыборкаРасшифровкаПлатежа = РезультатЗапроса[РезультатЗапроса.ВГраница()].Выбрать();
|
||
БанковскиеСчета = РезультатЗапроса[РезультатЗапроса.ВГраница() - 1].Выгрузить();
|
||
БанковскиеСчетаПоОбъектуРасчетов = РезультатЗапроса[РезультатЗапроса.ВГраница() - 2].Выгрузить();
|
||
БанковскиеСчетаПоРеестру = РезультатЗапроса[РезультатЗапроса.ВГраница() - 3].Выгрузить();
|
||
|
||
ОбщегоНазначенияУТ.УничтожитьВременныеТаблицы(Запрос.МенеджерВременныхТаблиц);
|
||
|
||
БанкПолучателя = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.БанковскийСчетКонтрагента, "Банк");
|
||
Результат = НоваяТаблицаБанковскихСчетовСпискаКонтрагентов();
|
||
|
||
Пока ВыборкаРасшифровкаПлатежа.Следующий() Цикл
|
||
|
||
НоваяСтрока = Результат.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаРасшифровкаПлатежа);
|
||
|
||
Если Не ЗначениеЗаполнено(НоваяСтрока.Контрагент) Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
|
||
ПараметрыОтбора = Новый Структура;
|
||
ПараметрыОтбора.Вставить("Контрагент", НоваяСтрока.Контрагент);
|
||
СчетаПоОбъектуРасчетовНайденныеСтроки = БанковскиеСчетаПоОбъектуРасчетов.НайтиСтроки(ПараметрыОтбора);
|
||
|
||
Если СчетаПоОбъектуРасчетовНайденныеСтроки.Количество() = 1 Тогда
|
||
|
||
НоваяСтрока.БанковскийСчетКонтрагента = СчетаПоОбъектуРасчетовНайденныеСтроки[0].БанковскийСчетКонтрагента;
|
||
Продолжить;
|
||
|
||
КонецЕсли;
|
||
|
||
ПараметрыОтбора = Новый Структура;
|
||
ПараметрыОтбора.Вставить("Контрагент", НоваяСтрока.Контрагент);
|
||
ПараметрыОтбора.Вставить("Валюта", ВыборкаРасшифровкаПлатежа.ВалютаВзаиморасчетов);
|
||
ИсходныйРеестрНайденныеСтроки = БанковскиеСчетаПоРеестру.НайтиСтроки(ПараметрыОтбора);
|
||
|
||
Если ИсходныйРеестрНайденныеСтроки.Количество() = 1 Тогда
|
||
|
||
НоваяСтрока.БанковскийСчетКонтрагента = ИсходныйРеестрНайденныеСтроки[0].БанковскийСчетКонтрагента;
|
||
Продолжить;
|
||
|
||
КонецЕсли;
|
||
|
||
ПараметрыОтбора = Новый Структура;
|
||
ПараметрыОтбора.Вставить("Контрагент", НоваяСтрока.Контрагент);
|
||
СчетаНайденныеСтроки = БанковскиеСчета.НайтиСтроки(ПараметрыОтбора);
|
||
|
||
Если СчетаНайденныеСтроки.Количество() = 1 Тогда
|
||
НоваяСтрока.БанковскийСчетКонтрагента = СчетаНайденныеСтроки[0].БанковскийСчетКонтрагента;
|
||
ИначеЕсли СчетаНайденныеСтроки.Количество() > 1 Тогда
|
||
|
||
ПараметрыОтбора = Новый Структура;
|
||
ПараметрыОтбора.Вставить("Контрагент", НоваяСтрока.Контрагент);
|
||
ПараметрыОтбора.Вставить("Банк", БанкПолучателя);
|
||
|
||
СчетаНайденныеСтрокиПоБанку = БанковскиеСчета.НайтиСтроки(ПараметрыОтбора);
|
||
|
||
Если СчетаНайденныеСтрокиПоБанку.Количество() = 1 Тогда
|
||
НоваяСтрока.БанковскийСчетКонтрагента = СчетаНайденныеСтрокиПоБанку[0].БанковскийСчетКонтрагента;
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Выполняет проверку заполнения документа при расчетах с самозанятыми.
|
||
//
|
||
// Параметры:
|
||
// ДокументОбъект - ДокументОбъект - документ, в котором выполняется проверка.
|
||
// Ошибка - Булево - признак ошибки при проверке.
|
||
// ФлагОбменСБанками - Булево - признак выполнения обмена с банком.
|
||
// ОшибкиЗаполнения - Строка - строки с ошибками.
|
||
//
|
||
Процедура ПроверитьЗаполнениеОплатыСамозанятому(ДокументОбъект, Ошибка, ФлагОбменСБанками = Ложь, ОшибкиЗаполнения = "") Экспорт
|
||
|
||
Если Не (ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ОплатаПоставщику
|
||
И ДокументОбъект.ОперацияССамозанятым)Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ПроверитьОбъектыРасчетовССамозанятыми(ДокументОбъект, Ошибка, ФлагОбменСБанками, ОшибкиЗаполнения);
|
||
ПроверитьРеестрКонтрагентов(ДокументОбъект, Ошибка, ФлагОбменСБанками, ОшибкиЗаполнения);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Заполняет контрагента по строке в табличную части "Расшифровка платежа".
|
||
//
|
||
// Параметры:
|
||
// ДокументОбъект - ДокументОбъект.СписаниеБезналичныхДенежныхСредств,
|
||
// ДокументОбъект.ЗаявкаНаРасходованиеДенежныхСредств - объект, в котором выполняется заполнение.
|
||
//
|
||
Процедура ЗаполнитьКонтрагентаРасшифровкиПлатежа(ДокументОбъект) Экспорт
|
||
|
||
Если Не ДокументОбъект.СписокКонтрагентов Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| РасшифровкаПлатежа.НомерСтроки КАК НомерСтроки,
|
||
| РасшифровкаПлатежа.ОбъектРасчетов КАК ОбъектРасчетов,
|
||
| РасшифровкаПлатежа.Партнер КАК Партнер
|
||
|ПОМЕСТИТЬ РасшифровкаПлатежей
|
||
|ИЗ
|
||
| &РасшифровкаПлатежа КАК РасшифровкаПлатежа
|
||
|;
|
||
|
|
||
|////////////////////////////////////////////////////////////////////////////////
|
||
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
|
||
| РасшифровкаПлатежей.НомерСтроки КАК НомерСтроки,
|
||
| ОбъектыРасчетов.Контрагент КАК Контрагент,
|
||
| 0 КАК Приоритет
|
||
|ИЗ
|
||
| РасшифровкаПлатежей КАК РасшифровкаПлатежей
|
||
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
|
||
| ПО РасшифровкаПлатежей.ОбъектРасчетов = ОбъектыРасчетов.Ссылка
|
||
|ГДЕ
|
||
| ОбъектыРасчетов.Контрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
|
||
|
|
||
|ОБЪЕДИНИТЬ ВСЕ
|
||
|
|
||
|ВЫБРАТЬ
|
||
| РасшифровкаПлатежей.НомерСтроки,
|
||
| Контрагенты.Ссылка,
|
||
| 1
|
||
|ИЗ
|
||
| РасшифровкаПлатежей КАК РасшифровкаПлатежей
|
||
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
|
||
| ПО РасшифровкаПлатежей.Партнер = Контрагенты.Партнер
|
||
|
|
||
|УПОРЯДОЧИТЬ ПО
|
||
| Приоритет";
|
||
|
||
Запрос.УстановитьПараметр("РасшифровкаПлатежа", ДокументОбъект.РасшифровкаПлатежа.Выгрузить(, "НомерСтроки, ОбъектРасчетов, Партнер"));
|
||
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
|
||
|
||
Для Каждого СтрокаРасшифровки Из ДокументОбъект.РасшифровкаПлатежа Цикл
|
||
|
||
Если Не ЗначениеЗаполнено(СтрокаРасшифровки.Контрагент) Тогда
|
||
|
||
Если ЗначениеЗаполнено(СтрокаРасшифровки.ОбъектРасчетов) Тогда
|
||
СтрокаРасшифровки.Контрагент = КонтрагентИзТаблицы(РезультатЗапроса, СтрокаРасшифровки.НомерСтроки, 0);
|
||
ИначеЕсли ЗначениеЗаполнено(СтрокаРасшифровки.Партнер) Тогда
|
||
СтрокаРасшифровки.Контрагент = КонтрагентИзТаблицы(РезультатЗапроса, СтрокаРасшифровки.НомерСтроки, 1);
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращает пустую структуру с параметрами для выполнения процедуры при изменении контрагента.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * Контрагент - СправочникСсылка.Контрагенты - измененный контрагент.
|
||
// * БанковскийСчетКонтрагента - СправочникСсылка.БанковскиеСчетаКонтрагентов - банковский счет контрагента.
|
||
// * ЗаполнитьРасшифровкуПоКонтрагенту - Булево - признак заполнения табличной части "Расшифровка платежа" по контрагенту.
|
||
// * ТекущийПартнер - Неопределено, СправочникСсылка.Партнеры - значение партнера.
|
||
// * ТекущаяСтрокаРасшифровки - Неопределено, ДанныеФормыЭлементКоллекции - строка в табличной части "Расшифровка платежа".
|
||
//
|
||
Функция НовыйПараметрыПриИзмененииКонтрагента() Экспорт
|
||
|
||
Параметры = Новый Структура;
|
||
Параметры.Вставить("Контрагент", Справочники.Контрагенты.ПустаяСсылка());
|
||
Параметры.Вставить("БанковскийСчетКонтрагента", Справочники.БанковскиеСчетаКонтрагентов.ПустаяСсылка());
|
||
Параметры.Вставить("ЗаполнитьРасшифровкуПоКонтрагенту", Истина);
|
||
Параметры.Вставить("ТекущийПартнер", Неопределено);
|
||
Параметры.Вставить("ТекущаяСтрокаРасшифровки", Неопределено);
|
||
|
||
Возврат Параметры;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает структуру параметров для процедуры при изменении контрагента табличной части "Расшифровка платежа" в форме документа.
|
||
//
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения - форма документа, в котором выполняется изменение.
|
||
// ИдентификаторСтроки - Число - идентификатор текущей строки табличной части.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Неопределено,
|
||
// см. НовыйПараметрыПриИзмененииКонтрагента.
|
||
//
|
||
Функция ПараметрыПриИзмененииКонтрагентаВРасшифровкеПлатежа(Форма, ИдентификаторСтроки) Экспорт
|
||
|
||
СтрокаТабличнойЧасти = Форма.Объект.РасшифровкаПлатежа.НайтиПоИдентификатору(ИдентификаторСтроки);
|
||
|
||
Если СтрокаТабличнойЧасти = Неопределено Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
|
||
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПустаяСсылка();
|
||
ТекущийПартнер = ?(ЗначениеЗаполнено(СтрокаТабличнойЧасти.Партнер), СтрокаТабличнойЧасти.Партнер, Неопределено);
|
||
|
||
Если ЗначениеЗаполнено(ТекущийПартнер) Тогда
|
||
|
||
Если Не ПартнерыИКонтрагенты.КонтрагентДоступенДляВыбораДляПартнера(ТекущийПартнер, СтрокаТабличнойЧасти.Контрагент) Тогда
|
||
ТекущийПартнер = Неопределено;
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
Параметры = НовыйПараметрыПриИзмененииКонтрагента();
|
||
Параметры.Вставить("Контрагент", СтрокаТабличнойЧасти.Контрагент);
|
||
Параметры.Вставить("БанковскийСчетКонтрагента", БанковскийСчетКонтрагента);
|
||
Параметры.Вставить("ЗаполнитьРасшифровкуПоКонтрагенту", Истина);
|
||
Параметры.Вставить("ТекущийПартнер", ТекущийПартнер);
|
||
Параметры.Вставить("ТекущаяСтрокаРасшифровки", СтрокаТабличнойЧасти);
|
||
|
||
Возврат Параметры;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает структуру параметров для процедуры при изменении партнера табличной части "Расшифровка платежа" в форме документа.
|
||
//
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения - форма документа, в котором выполняется изменение.
|
||
// ИдентификаторСтроки - Число - идентификатор текущей строки табличной части.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Неопределено,
|
||
// см. НовыйПараметрыПриИзмененииКонтрагента.
|
||
//
|
||
Функция ПараметрыПриИзмененииПартнераВРасшифровкеПлатежа(Форма, ИдентификаторСтроки) Экспорт
|
||
|
||
СтрокаТабличнойЧасти = Форма.Объект.РасшифровкаПлатежа.НайтиПоИдентификатору(ИдентификаторСтроки);
|
||
|
||
Если СтрокаТабличнойЧасти = Неопределено Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
|
||
Параметры = НовыйПараметрыПриИзмененииКонтрагента();
|
||
|
||
Если Форма.Объект.СписокКонтрагентов Тогда
|
||
|
||
СписокКонтрагентов = ПартнерыИКонтрагенты.ПолучитьВсехКонтрагентовПартнера(СтрокаТабличнойЧасти.Партнер);
|
||
ИсключитьИзСпискаКонтрагентовЮрЛица(СписокКонтрагентов);
|
||
|
||
Если СписокКонтрагентов.Найти(СтрокаТабличнойЧасти.Контрагент) <> Неопределено Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
|
||
ТекущийКонтрагент = Справочники.Контрагенты.ПустаяСсылка();
|
||
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(СтрокаТабличнойЧасти.Партнер, ТекущийКонтрагент);
|
||
|
||
// если у партнера определено несколько контрагентов, то ТекущийКонтрагент будет пустым
|
||
// возмем среди контрагентов только физлицо, если оно одно
|
||
Если Не ЗначениеЗаполнено(ТекущийКонтрагент)
|
||
И СписокКонтрагентов.Количество() = 1 Тогда
|
||
ТекущийКонтрагент = СписокКонтрагентов[0];
|
||
КонецЕсли;
|
||
|
||
ВидКонтрагента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекущийКонтрагент, "ЮридическоеФизическоеЛицо");
|
||
|
||
Если ВидКонтрагента = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо Тогда
|
||
СтрокаТабличнойЧасти.Контрагент = ТекущийКонтрагент;
|
||
Иначе
|
||
СтрокаТабличнойЧасти.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
|
||
КонецЕсли;
|
||
|
||
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПустаяСсылка();
|
||
|
||
Параметры.Вставить("Контрагент", СтрокаТабличнойЧасти.Контрагент);
|
||
Параметры.Вставить("БанковскийСчетКонтрагента", БанковскийСчетКонтрагента);
|
||
Параметры.Вставить("ЗаполнитьРасшифровкуПоКонтрагенту", Истина);
|
||
Параметры.Вставить("ТекущийПартнер", СтрокаТабличнойЧасти.Партнер);
|
||
Параметры.Вставить("ТекущаяСтрокаРасшифровки", СтрокаТабличнойЧасти);
|
||
|
||
Иначе
|
||
|
||
Параметры.Вставить("Контрагент", Форма.Объект.Контрагент);
|
||
Параметры.Вставить("БанковскийСчетКонтрагента", Форма.Объект.БанковскийСчетКонтрагента);
|
||
Параметры.Вставить("ЗаполнитьРасшифровкуПоКонтрагенту", Истина);
|
||
Параметры.Вставить("ТекущийПартнер", СтрокаТабличнойЧасти.Партнер);
|
||
Параметры.Вставить("ТекущаяСтрокаРасшифровки", СтрокаТабличнойЧасти);
|
||
|
||
КонецЕсли;
|
||
|
||
Возврат Параметры;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ИнициализироватьБанковскиеСчетаСпискаКонтрагентов(Объект, ДанныеЗаполнения = Неопределено) Экспорт
|
||
|
||
Если (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ОплатаПоставщику
|
||
И Объект.ОперацияССамозанятым)
|
||
ИЛИ (ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
|
||
И ДанныеЗаполнения.Свойство("ХозяйственнаяОперация")
|
||
И (ДанныеЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ОплатаПоставщику
|
||
И ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ДанныеЗаполнения, "ОперацияССамозанятым")
|
||
И ДанныеЗаполнения.ОперацияССамозанятым)) Тогда
|
||
|
||
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
|
||
И ДанныеЗаполнения.Свойство("СписокКонтрагентов") Тогда
|
||
Объект.СписокКонтрагентов = ДанныеЗаполнения.СписокКонтрагентов;
|
||
КонецЕсли;
|
||
|
||
ЗаполнитьРеестрКонтрагентов(Объект);
|
||
|
||
Иначе
|
||
Объект.БанковскиеСчетаСпискаКонтрагентов.Очистить();
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Выполняет очистку реквизитов оплаты с самозанятым.
|
||
//
|
||
// Параметры:
|
||
// Объект - ДанныеФормыСтруктура - документ объект.
|
||
//
|
||
Процедура ОчиститьРеквизитыОплатыСамозанятому(Объект) Экспорт
|
||
|
||
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьВыплатыСамозанятым")
|
||
И Объект.ОперацияССамозанятым Тогда
|
||
|
||
Если Объект.РасшифровкаПлатежа.Количество() > 1
|
||
И Объект.СписокКонтрагентов Тогда
|
||
Объект.РасшифровкаПлатежа.Очистить();
|
||
КонецЕсли;
|
||
|
||
Объект.ОперацияССамозанятым = Ложь;
|
||
Объект.СписокКонтрагентов = Ложь;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
|
||
// Выполняет проверку признака "Договор с плательщиком НПД" в договоре и "Операция с самозанятым" объекта расчетов в
|
||
// табличной части "Расшифровка платежа".
|
||
//
|
||
// Параметры:
|
||
// Объект - ДокументОбъект.ЗаявкаНаРасходованиеДенежныхСредств, ДокументОбъект.СписаниеБезналичныхДенежныхСредств - документ,
|
||
// в котором выполняется проверка.
|
||
// Ошибка - Булево - признак ошибки при проверке.
|
||
// ФлагОбменСБанками - Булево - признак выполнения процедуры в момент выполнения обработки обмена с банком.
|
||
// ОшибкиЗаполнения - Строка - строка с ошибками.
|
||
//
|
||
Процедура ПроверитьЗаполнениеДокументаСФлагомСамозанятого(Объект, Ошибка, ФлагОбменСБанками = Ложь, ОшибкиЗаполнения = "") Экспорт
|
||
|
||
КонтрагентЮрФизЛицо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Контрагент, "ЮрФизЛицо");
|
||
ДокументСФлагом = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ОплатаПоставщику
|
||
И (КонтрагентЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо
|
||
ИЛИ КонтрагентЮрФизЛицо = Перечисления.ЮрФизЛицо.ИндивидуальныйПредприниматель
|
||
ИЛИ Объект.СписокКонтрагентов);
|
||
|
||
Если Не ДокументСФлагом Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Таблица = Объект.РасшифровкаПлатежа.Выгрузить(, "ОбъектРасчетов, НомерСтроки");
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| ИсходныеДанные.ОбъектРасчетов КАК ОбъектРасчетов,
|
||
| ИсходныеДанные.НомерСтроки КАК НомерСтроки
|
||
|ПОМЕСТИТЬ ТаблицаДанных
|
||
|ИЗ
|
||
| &ИсходныеДанные КАК ИсходныеДанные
|
||
|;
|
||
|
|
||
|////////////////////////////////////////////////////////////////////////////////
|
||
|ВЫБРАТЬ
|
||
| ТаблицаДанных.НомерСтроки КАК НомерСтроки,
|
||
| ЕСТЬNULL(НЕ ДоговорыКонтрагентов.ДоговорССамозанятым, ЛОЖЬ) КАК ОшибкаДоговора,
|
||
| ЕСТЬNULL(НЕ ОбъектыРасчетов.ОперацияССамозанятым, ЛОЖЬ) КАК ОшибкаОбъектаРасчетов,
|
||
| ВЫБОР
|
||
| КОГДА &Признак = ИСТИНА
|
||
| И НЕ ОбъектыРасчетов.НалогообложениеНДС ЕСТЬ NULL
|
||
| ТОГДА ВЫБОР
|
||
| КОГДА ОбъектыРасчетов.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС)
|
||
| ТОГДА ЛОЖЬ
|
||
| ИНАЧЕ ИСТИНА КОНЕЦ
|
||
| ИНАЧЕ ЛОЖЬ
|
||
| КОНЕЦ КАК ОшибкаРежимаНалогообложения
|
||
|ИЗ
|
||
| ТаблицаДанных КАК ТаблицаДанных
|
||
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
|
||
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|
||
| ПО ОбъектыРасчетов.Договор = ДоговорыКонтрагентов.Ссылка
|
||
| ПО ТаблицаДанных.ОбъектРасчетов = ОбъектыРасчетов.Ссылка
|
||
|ГДЕ
|
||
| ЕСТЬNULL(ДоговорыКонтрагентов.ДоговорССамозанятым,
|
||
| ЕСТЬNULL(ОбъектыРасчетов.ОперацияССамозанятым,
|
||
| ВЫБОР
|
||
| КОГДА &Признак = ИСТИНА
|
||
| И НЕ ОбъектыРасчетов.НалогообложениеНДС ЕСТЬ NULL
|
||
| ТОГДА ВЫБОР
|
||
| КОГДА ОбъектыРасчетов.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС)
|
||
| ТОГДА ИСТИНА
|
||
| ИНАЧЕ ЛОЖЬ КОНЕЦ
|
||
| ИНАЧЕ &Признак
|
||
| КОНЕЦ)) <> &Признак";
|
||
|
||
Запрос.УстановитьПараметр("ИсходныеДанные", Таблица);
|
||
Запрос.УстановитьПараметр("Признак", Объект.ОперацияССамозанятым);
|
||
|
||
УстановитьПривилегированныйРежим(Истина);
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
УстановитьПривилегированныйРежим(Ложь);
|
||
|
||
Если Запрос.МенеджерВременныхТаблиц <> Неопределено Тогда
|
||
ОбщегоНазначенияУТ.УничтожитьВременныеТаблицы(Запрос.МенеджерВременныхТаблиц);
|
||
КонецЕсли;
|
||
|
||
Пока Выборка.Следующий() Цикл
|
||
|
||
ТекстыСообщений = Новый Массив;
|
||
|
||
Если Объект.ОперацияССамозанятым Тогда
|
||
|
||
ТекстыСообщений.Добавить(НСтр("ru = 'В строке №%1 введены не корректные данные для документа с признаком оплаты самозанятому:'"));
|
||
|
||
Если Выборка.ОшибкаДоговора Тогда
|
||
ТекстыСообщений.Добавить(НСтр("ru = 'заполнен договор без признака ""Договор с плательщиком НПД"".'"));
|
||
ИмяРеквизита = "Договор";
|
||
ИначеЕсли Выборка.ОшибкаОбъектаРасчетов Тогда
|
||
ТекстыСообщений.Добавить(НСтр("ru = 'заполнен объект расчетов без признака ""Операция с самозанятым"".'"));
|
||
ИмяРеквизита = "ОбъектРасчетов";
|
||
Иначе
|
||
ТекстыСообщений.Добавить(НСтр("ru = 'заполнен объект расчетов с не применяемым режимом налогообложения.'"));
|
||
ИмяРеквизита = "";
|
||
КонецЕсли;
|
||
|
||
Иначе
|
||
|
||
Если ПолучитьФункциональнуюОпцию("ИспользоватьВыплатыСамозанятым") Тогда
|
||
ТекстыСообщений.Добавить(НСтр("ru = 'В строке №%1 введены не корректные данные для документа без признака оплаты самозанятому:'"));
|
||
Иначе
|
||
ТекстыСообщений.Добавить(НСтр("ru = 'В строке №%1 необходимо скорректировать объект, созданный при включенной настройке ""Выплаты самозанятым"" или создать новый:'"));
|
||
КонецЕсли;
|
||
|
||
Если Выборка.ОшибкаДоговора Тогда
|
||
ТекстыСообщений.Добавить(НСтр("ru = 'заполнен договор с признаком ""Договор с плательщиком НПД"".'"));
|
||
ИмяРеквизита = "Договор";
|
||
Иначе
|
||
ТекстыСообщений.Добавить(НСтр("ru = 'заполнен объект расчетов с признаком ""Операция с самозанятым"".'"));
|
||
ИмяРеквизита = "ОбъектРасчетов";
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
Текст = СтрШаблон(СтрСоединить(ТекстыСообщений, Символы.ПС), Выборка.НомерСтроки);
|
||
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, Текст);
|
||
Иначе
|
||
|
||
Если Объект.СписокКонтрагентов
|
||
ИЛИ Объект.РасшифровкаПлатежа.Количество() > 1 Тогда
|
||
Поле = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("РасшифровкаПлатежа", Выборка.НомерСтроки, ИмяРеквизита);
|
||
Иначе
|
||
Поле = СтрШаблон("РасшифровкаБезРазбиения%1", ИмяРеквизита);
|
||
КонецЕсли;
|
||
|
||
ОбщегоНазначения.СообщитьПользователю(Текст, Объект, Поле, , Ошибка);
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
ПроверитьЗаполнениеОплатыСамозанятому(Объект, Ошибка, ФлагОбменСБанками, ОшибкиЗаполнения);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Проверяет заполнение банковских реквизитов.
|
||
//
|
||
// Параметры:
|
||
// Объект - СправочникОбъект.БанковскиеСчетаОрганизаций, СправочникОбъект.БанковскиеСчетаКонтрагентов - банковский счет.
|
||
// Отказ - Булево - признак ошибки.
|
||
// ВалютныйСчет - Булево - признак валютного счета.
|
||
Процедура ПроверитьЗаполнениеБанковскихРеквизитов(Объект, Отказ, ВалютныйСчет) Экспорт
|
||
|
||
НациональныеРеквизитыБанковскихСчетов = ПолучитьФункциональнуюОпцию("НациональныеРеквизитыБанковскихСчетов");
|
||
|
||
Если Не ЗначениеЗаполнено(Объект.Банк)
|
||
И Не Объект.РучноеИзменениеРеквизитовБанка Тогда
|
||
|
||
ТекстОшибки = НСтр("ru = 'Поле ""Банк"" не заполнено.'");
|
||
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, Объект, "Банк", , Отказ);
|
||
|
||
ИначеЕсли Не ЗначениеЗаполнено(Объект.Банк)
|
||
И Объект.РучноеИзменениеРеквизитовБанка Тогда
|
||
|
||
Если НациональныеРеквизитыБанковскихСчетов Тогда
|
||
|
||
ОбязательныеРеквизитыПлатежа = Новый Соответствие;
|
||
|
||
Если Не Объект.ИностранныйБанк Тогда
|
||
ОбязательныеРеквизитыПлатежа.Вставить("БИКБанка", НСтр("ru = 'БИК'"));
|
||
ИначеЕсли Не ЗначениеЗаполнено(Объект.БИКБанка) Тогда
|
||
ОбязательныеРеквизитыПлатежа.Вставить("СВИФТБанка", НСтр("ru = 'Код / SWIFT BIC'"));
|
||
КонецЕсли;
|
||
|
||
ОбязательныеРеквизитыПлатежа.Вставить("НаименованиеБанка", НСтр("ru = 'Наименование'"));
|
||
ОбязательныеРеквизитыПлатежа.Вставить("ГородБанка", НСтр("ru = 'Город'"));
|
||
|
||
Если Не Объект.ИностранныйБанк
|
||
И Не ВалютныйСчет Тогда
|
||
ОбязательныеРеквизитыПлатежа.Вставить("КоррСчетБанка", НСтр("ru = 'Корр. счет'"));
|
||
КонецЕсли;
|
||
|
||
ПараметрыСообщения = НовыеПараметрыВыводаСообщения();
|
||
ПараметрыСообщения.Текст = НСтр("ru = 'Поле ""%1"" не заполнено.'");
|
||
|
||
ПараметрыДопСообщения = НовыеПараметрыВыводаСообщения();
|
||
ПараметрыДопСообщения.Текст = НСтр("ru = 'Необходимо заполнить поле ""Банк"" или банковские реквизиты счета:'");
|
||
ПараметрыДопСообщения.КлючДанных = Объект;
|
||
ПараметрыДопСообщения.Поле = "Банк";
|
||
|
||
ВывестиОшибкуПроверкиБанковскихРеквизитов(Объект, Отказ, ОбязательныеРеквизитыПлатежа, ПараметрыСообщения, ПараметрыДопСообщения);
|
||
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли ЗначениеЗаполнено(Объект.Банк) Тогда
|
||
|
||
ДанныеБанка = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Банк, "Код, СВИФТБИК, Наименование, КоррСчет, Город, ИНН");
|
||
|
||
ОбязательныеРеквизитыПлатежа = Новый Соответствие;
|
||
|
||
Если Не Объект.ИностранныйБанк Тогда
|
||
ОбязательныеРеквизитыПлатежа.Вставить("Код", НСтр("ru = 'БИК'"));
|
||
ИначеЕсли Не ЗначениеЗаполнено(ДанныеБанка.Код) Тогда
|
||
ОбязательныеРеквизитыПлатежа.Вставить("СВИФТБИК", НСтр("ru = 'Код / SWIFT BIC'"));
|
||
КонецЕсли;
|
||
|
||
ОбязательныеРеквизитыПлатежа.Вставить("Наименование", НСтр("ru = 'Наименование'"));
|
||
ОбязательныеРеквизитыПлатежа.Вставить("Город", НСтр("ru = 'Город'"));
|
||
|
||
Если Не Объект.ИностранныйБанк
|
||
И ЗначениеЗаполнено(Объект.ВалютаДенежныхСредств)
|
||
И ДанныеБанка.ИНН <> "" Тогда
|
||
ОбязательныеРеквизитыПлатежа.Вставить("КоррСчет", НСтр("ru = 'Корр. счет'"));
|
||
КонецЕсли;
|
||
|
||
ПараметрыСообщения = НовыеПараметрыВыводаСообщения();
|
||
ПараметрыСообщения.Текст = НСтр("ru = 'Поле ""%1"" у банка не заполнено.'");
|
||
ПараметрыСообщения.КлючДанных = Объект.Банк;
|
||
ПараметрыСообщения.ПутьКДанным = "Объект";
|
||
|
||
ПараметрыДопСообщения = НовыеПараметрыВыводаСообщения();
|
||
ПараметрыДопСообщения.Текст = НСтр("ru = 'Необходимо заполнить реквизиты банка:'");
|
||
ПараметрыДопСообщения.КлючДанных = Объект;
|
||
ПараметрыДопСообщения.Поле = "Банк";
|
||
|
||
ВывестиОшибкуПроверкиБанковскихРеквизитов(ДанныеБанка, Отказ, ОбязательныеРеквизитыПлатежа, ПараметрыСообщения, ПараметрыДопСообщения);
|
||
|
||
КонецЕсли;
|
||
|
||
Если Не ЗначениеЗаполнено(Объект.БанкДляРасчетов)
|
||
И Объект.РучноеИзменениеРеквизитовБанкаДляРасчетов Тогда
|
||
|
||
Если НациональныеРеквизитыБанковскихСчетов Тогда
|
||
|
||
ОбязательныеРеквизитыПлатежа = Новый Соответствие;
|
||
|
||
Если Не ЭтоИностранныйБанкРасчетов(Объект.СтранаБанкаДляРасчетов) Тогда
|
||
ОбязательныеРеквизитыПлатежа.Вставить("БИКБанкаДляРасчетов", НСтр("ru = 'БИК'"));
|
||
ИначеЕсли Не ЗначениеЗаполнено(Объект.БИКБанкаДляРасчетов) Тогда
|
||
ОбязательныеРеквизитыПлатежа.Вставить("СВИФТБанкаДляРасчетов", НСтр("ru = 'Код / SWIFT BIC'"));
|
||
КонецЕсли;
|
||
|
||
ОбязательныеРеквизитыПлатежа.Вставить("НаименованиеБанкаДляРасчетов", НСтр("ru = 'Наименование'"));
|
||
ОбязательныеРеквизитыПлатежа.Вставить("ГородБанкаДляРасчетов", НСтр("ru = 'Город'"));
|
||
|
||
Если Не Объект.ИностранныйБанк
|
||
И Не ВалютныйСчет Тогда
|
||
ОбязательныеРеквизитыПлатежа.Вставить("КоррСчетБанкаДляРасчетов", НСтр("ru = 'Корр. счет'"));
|
||
КонецЕсли;
|
||
|
||
ПараметрыСообщения = НовыеПараметрыВыводаСообщения();
|
||
ПараметрыСообщения.Текст = НСтр("ru = 'Поле ""%1"" банка-корреспондента не заполнено.'");
|
||
|
||
ПараметрыДопСообщения = НовыеПараметрыВыводаСообщения();
|
||
ПараметрыДопСообщения.Текст = НСтр("ru = 'Необходимо заполнить поле ""Банк корреспондент"" или реквизиты банка-корреспондента счета:'");
|
||
ПараметрыДопСообщения.КлючДанных = Объект;
|
||
ПараметрыДопСообщения.Поле = "БанкДляРасчетов";
|
||
|
||
ВывестиОшибкуПроверкиБанковскихРеквизитов(Объект, Отказ, ОбязательныеРеквизитыПлатежа, ПараметрыСообщения, ПараметрыДопСообщения);
|
||
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли ЗначениеЗаполнено(Объект.БанкДляРасчетов) Тогда
|
||
|
||
ДанныеБанка = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.БанкДляРасчетов, "Код, СВИФТБИК, Наименование, КоррСчет, Город, КодСтраны, ИНН");
|
||
СтранаБанкаДляРасчетов = ДенежныеСредстваСервер.СтранаБанкаПоКоду(ДанныеБанка.КодСтраны);
|
||
|
||
ОбязательныеРеквизитыПлатежа = Новый Соответствие;
|
||
|
||
Если Не ЭтоИностранныйБанкРасчетов(СтранаБанкаДляРасчетов) Тогда
|
||
ОбязательныеРеквизитыПлатежа.Вставить("Код", НСтр("ru = 'БИК'"));
|
||
ИначеЕсли Не ЗначениеЗаполнено(ДанныеБанка.Код) Тогда
|
||
ОбязательныеРеквизитыПлатежа.Вставить("СВИФТБИК", НСтр("ru = 'Код / SWIFT BIC'"));
|
||
КонецЕсли;
|
||
|
||
ОбязательныеРеквизитыПлатежа.Вставить("Наименование", НСтр("ru = 'Наименование'"));
|
||
ОбязательныеРеквизитыПлатежа.Вставить("Город", НСтр("ru = 'Город'"));
|
||
|
||
Если Не Объект.ИностранныйБанк
|
||
И ЗначениеЗаполнено(Объект.ВалютаДенежныхСредств)
|
||
И ДанныеБанка.ИНН <> "" Тогда
|
||
ОбязательныеРеквизитыПлатежа.Вставить("КоррСчет", НСтр("ru = 'Корр. счет'"));
|
||
КонецЕсли;
|
||
|
||
ПараметрыСообщения = НовыеПараметрыВыводаСообщения();
|
||
ПараметрыСообщения.Текст = НСтр("ru = 'Поле ""%1"" у банка-корреспондента не заполнено.'");
|
||
ПараметрыСообщения.КлючДанных = Объект.БанкДляРасчетов;
|
||
ПараметрыСообщения.ПутьКДанным = "Объект";
|
||
|
||
ПараметрыДопСообщения = НовыеПараметрыВыводаСообщения();
|
||
ПараметрыДопСообщения.Текст = НСтр("ru = 'Необходимо заполнить реквизиты банка-корреспондента:'");
|
||
ПараметрыДопСообщения.КлючДанных = Объект;
|
||
ПараметрыДопСообщения.Поле = "БанкДляРасчетов";
|
||
|
||
ВывестиОшибкуПроверкиБанковскихРеквизитов(ДанныеБанка, Отказ, ОбязательныеРеквизитыПлатежа, ПараметрыСообщения, ПараметрыДопСообщения);
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
#Область СистемаБыстрыхПлатежей
|
||
|
||
// Возвращает признак доступности платежной ссылки в документе по форме оплаты.
|
||
//
|
||
// Параметры:
|
||
// ДокументСсылка - ДокументСсылка - документ, по которому определяется доступность платежной ссылки.
|
||
// ФормаОплаты - ПеречислениеСсылка.ФормыОплаты - форма оплаты.
|
||
// Входящая - Булево - признак направления платежной ссылки.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево
|
||
Функция ДоступнаГиперссылкаСБП(ДокументСсылка, ФормаОплаты, Входящая) Экспорт
|
||
|
||
Если Не Входящая Тогда
|
||
КомандаОтображается = ВключенаГенерацияПлатежнойСсылкиСБППоДокументу(ДокументСсылка);
|
||
Иначе
|
||
КомандаОтображается = Истина;
|
||
КонецЕсли;
|
||
|
||
Возврат КомандаОтображается
|
||
И (ФормаОплаты = Перечисления.ФормыОплаты.ПустаяСсылка()
|
||
Или ФормаОплаты = Перечисления.ФормыОплаты.СистемаБыстрыхПлатежей)
|
||
И ДокументСсылка <> Неопределено
|
||
И ?(Входящая, СистемаБыстрыхПлатежейУТ.ДоступноДобавлениеВходящейСсылкиПоДокументу(ДокументСсылка), СистемаБыстрыхПлатежейУТ.ПереводыСБППоДокументуДоступны(ДокументСсылка));
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает признак использования команды генерации платежной ссылки СБП по документу.
|
||
//
|
||
// Параметры:
|
||
// ДокументСсылка - ОпределяемыйТип.ДокументОперацииСБП - Документ, включенный в список документов, по которым доступно
|
||
// генерации платежной ссылки по умолчанию.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево - Включена генерация платежной ссылки СБППо документу.
|
||
Функция ВключенаГенерацияПлатежнойСсылкиСБППоДокументу(ДокументСсылка) Экспорт
|
||
|
||
ХранилищеНастроекСБП = Константы.НастройкиОтображенияКомандПлатежныхСистем.Получить();
|
||
НастройкиВидимости = ХранилищеНастроекСБП.Получить(); // ФиксированноеСоответствие
|
||
|
||
Результат = Истина;
|
||
|
||
Если НастройкиВидимости <> Неопределено Тогда
|
||
|
||
НастройкиВидимостиСБП = НастройкиВидимости.Получить("СистемаБыстрыхПлатежей");
|
||
|
||
Если НастройкиВидимостиСБП <> Неопределено Тогда
|
||
Видимость = НастройкиВидимостиСБП.Получить(ДокументСсылка.Метаданные().ПолноеИмя())
|
||
Иначе
|
||
Видимость = НастройкиВидимости.Получить(ДокументСсылка.Метаданные().ПолноеИмя());
|
||
КонецЕсли;
|
||
|
||
Результат = ?(Видимость = Неопределено, Ложь, Видимость);
|
||
|
||
КонецЕсли;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#КонецОбласти
|
||
|
||
#Область СлужебныеПроцедурыИФункции
|
||
|
||
Функция ПолучитьПрефиксациюКассыКассовойКниги(Ссылка)
|
||
|
||
РеквизитыПрефиксации = Новый Структура("ИспользоватьПрефикс, Префикс");
|
||
|
||
Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.КассовыеКниги") Тогда
|
||
РеквизитыПрефиксации = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "ИспользоватьПрефикс, Префикс");
|
||
ИначеЕсли ТипЗнч(Ссылка) = Тип("СправочникСсылка.Кассы") Тогда
|
||
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "КассоваяКнига.ИспользоватьПрефикс, КассоваяКнига.Префикс");
|
||
РеквизитыПрефиксации.Вставить("ИспользоватьПрефикс", Реквизиты.КассоваяКнигаИспользоватьПрефикс);
|
||
РеквизитыПрефиксации.Вставить("Префикс", Реквизиты.КассоваяКнигаПрефикс);
|
||
КонецЕсли;
|
||
|
||
Возврат РеквизитыПрефиксации;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки)
|
||
|
||
ОшибкиЗаполнения = ОшибкиЗаполнения + "
|
||
|" + ТекстОшибки;
|
||
|
||
КонецПроцедуры
|
||
|
||
|
||
Функция ДокументыСПередачейФайловВБанк()
|
||
|
||
ТипыДокументов = Новый Массив;
|
||
ТипыДокументов.Добавить(Тип("ДокументСсылка.СправкаОПодтверждающихДокументах"));
|
||
ТипыДокументов.Добавить(Тип("ДокументСсылка.СписаниеБезналичныхДенежныхСредств"));
|
||
|
||
Возврат ТипыДокументов;
|
||
|
||
КонецФункции
|
||
|
||
Функция УбратьИзНаименованияОрганизационнуюФорму(Наименование, ИмяОрганизационнойФормы)
|
||
|
||
Результат = Ложь;
|
||
|
||
Наименование = СокрЛП(Наименование);
|
||
|
||
ДлинаНаименования = СтрДлина(Наименование);
|
||
ДлинаОрганизационнойФормы = СтрДлина(ИмяОрганизационнойФормы);
|
||
|
||
Если Лев(Наименование, ДлинаОрганизационнойФормы) = ИмяОрганизационнойФормы Тогда
|
||
Наименование = СокрЛ(Сред(Наименование, ДлинаОрганизационнойФормы + 1));
|
||
Результат = Истина;
|
||
КонецЕсли;
|
||
|
||
Если Прав(Наименование, ДлинаОрганизационнойФормы) = ИмяОрганизационнойФормы Тогда
|
||
Наименование = СокрП(Лев(Наименование, ДлинаНаименования - ДлинаОрганизационнойФормы - 1));
|
||
Результат = Истина;
|
||
КонецЕсли;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает признак модифицированности документа
|
||
//
|
||
// Параметры:
|
||
// ДокументОбъект - ДокументОбъект.СписаниеБезналичныхДенежныхСредств - проверяемый документ.
|
||
// ОсновныеРеквизиты - Массив из Строка - список имен метаданных ДокументОбъект для проверки изменений.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево
|
||
//
|
||
Функция ДокументИзменен(ДокументОбъект, ОсновныеРеквизиты)
|
||
|
||
ДокументСсылка = ДокументОбъект.Ссылка;
|
||
МетаданныеДокумента = ДокументСсылка.Метаданные();
|
||
|
||
Для Каждого ТекущийРеквизит Из ОсновныеРеквизиты Цикл
|
||
|
||
Если МетаданныеДокумента.Реквизиты.Найти(ТекущийРеквизит) <> Неопределено Тогда
|
||
|
||
Если ДокументСсылка[ТекущийРеквизит] <> ДокументОбъект[ТекущийРеквизит] Тогда
|
||
Возврат Истина;
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
Если МетаданныеДокумента.ТабличныеЧасти.Найти(ТекущийРеквизит) <> Неопределено Тогда
|
||
|
||
ВсегоОбъект = ДокументОбъект[ТекущийРеквизит].Количество();
|
||
ВсегоСсылка = ДокументСсылка[ТекущийРеквизит].Количество();
|
||
|
||
Если ВсегоСсылка <> ВсегоОбъект Тогда
|
||
Возврат Истина;
|
||
КонецЕсли;
|
||
|
||
ТабличнаяЧасть = МетаданныеДокумента.ТабличныеЧасти[ТекущийРеквизит];
|
||
|
||
Индекс = 0;
|
||
|
||
Пока Индекс < ВсегоОбъект Цикл
|
||
|
||
СтрокаТабличнойЧастиОбъекта = ДокументОбъект[ТекущийРеквизит][Индекс];
|
||
СтрокаТабличнойЧастиСсылки = ДокументОбъект[ТекущийРеквизит][Индекс];
|
||
|
||
Для Каждого Реквизит Из ТабличнаяЧасть.Реквизиты Цикл
|
||
|
||
Если СтрокаТабличнойЧастиОбъекта[Реквизит.Имя] <> СтрокаТабличнойЧастиСсылки[Реквизит.Имя] Тогда
|
||
Возврат Истина;
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
Индекс = Индекс + 1;
|
||
|
||
КонецЦикла;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
Возврат Ложь;
|
||
|
||
КонецФункции
|
||
|
||
#Область БюджетСлужебные
|
||
|
||
// Проверка заполнения реквизитов налоговых платежей в документе.
|
||
//
|
||
// Параметры:
|
||
// Объект - ДокументОбъект - Документ оплаты.
|
||
// ПараметрыПроверкиЗаполнения - Структура - Параметры проверки заполнения:
|
||
// * ПрименениеПриказа107н - Булево - Признак применения приказа 107н.
|
||
// * ПрименениеПриказа126н - Булево - Признак применения приказа 126н.
|
||
// * ЕдиныйНалоговыйПлатеж - Булево - Признак единого налогового платежа.
|
||
// * ПрименениеПриказа58н - Булево - Признак применения приказа 58н.
|
||
// Отказ - Булево - Признак отказа от продолжения работы
|
||
// ФлагОбменСБанками - Булево - используется обмен с банком
|
||
// ОшибкиЗаполнения - Строка - Накопленное описание ошибок.
|
||
//
|
||
Процедура ПроверитьЗаполнениеРеквизитовНалоговыхПлатежей(Объект, ПараметрыПроверкиЗаполнения, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения)
|
||
|
||
ВидПеречисленияВБюджет = Объект.ВидПеречисленияВБюджет;
|
||
ПоказательОснования = Объект.ПоказательОснования;
|
||
ПоказательПериода = Объект.ПоказательПериода;
|
||
ПоказательТипа = Объект.ПоказательТипа;
|
||
ПоказательНомера = Объект.ПоказательНомера;
|
||
ПоказательДаты = Объект.ПоказательДаты;
|
||
|
||
ПроверитьЗаполнениеКБК(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверкиЗаполнения);
|
||
ПроверитьЗаполнениеОКТМО(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверкиЗаполнения);
|
||
ПроверитьЗаполнениеУИН(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения);
|
||
ПроверитьЗаполнениеПоказателяПериода(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения);
|
||
ПроверитьЗаполнениеПоказателяНомера(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверкиЗаполнения);
|
||
ПроверитьЗаполнениеПоказателяДаты(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверкиЗаполнения);
|
||
|
||
ДействуетПриказ199н_202110 = ПлатежиВБюджетКлиентСервер.ДействуетПриказ199н_202110(Объект.Дата);
|
||
ДействуетПриказ199н_202302 = ПлатежиВБюджетКлиентСервер.ДействуетПриказ199н_202302(Объект.Дата);
|
||
|
||
Если ПлатежиВБюджет.ИспользуетсяЕдиныйНалоговыйПлатеж(Объект.Организация, Объект.Дата)
|
||
И Объект.ТипНалога = Справочники.ВидыНалоговВзносов.ЕдиныйНалоговыйПлатеж Тогда
|
||
КодБК = ВидыНалоговВзносовЛокализация.КБКПоВидуНалоговогоОбязательства(Объект.ТипНалога, , Объект.Дата);
|
||
Если Не ПустаяСтрока(Объект.КодБК) И СокрЛП(Объект.КодБК) <> КодБК Тогда
|
||
ТекстОшибки = НСтр("ru = 'КБК не соответствует реквизитам единого налогового платежа'");
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет", , Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Если (ПоказательОснования <> "0" ИЛИ ПоказательПериода <> "0" ИЛИ ПоказательНомера <> "0" ИЛИ ПоказательДаты <> "0") Тогда
|
||
ТекстОшибки = НСтр("ru = 'При перечислении в бюджет единого налогового платежа следует указать ""0"" в полях:
|
||
| ""Основание"", ""Период"", ""Номер документа"" и ""Дата документа""'");
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если ПараметрыПроверкиЗаполнения.ПрименениеПриказа58н
|
||
И Объект.СтатусСоставителя <> "01" Тогда
|
||
|
||
ТекстОшибки = НСтр("ru = 'В поле ""Статус плательщика"" следует указать значение ""01""'");
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , "НадписьРеквизитыПлатежаВБюджет", , Отказ);
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли ДействуетПриказ199н_202302
|
||
И Объект.СтатусСоставителя <> "01"
|
||
И Объект.СтатусСоставителя <> "27" Тогда
|
||
|
||
ТекстОшибки =
|
||
НСтр("ru = 'В поле ""Статус плательщика"" следует указать значение ""01"" (для кредитных организаций ""27"")'");
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , "НадписьРеквизитыПлатежаВБюджет", , Отказ);
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли Объект.ТипНалога = Справочники.ВидыНалоговВзносов.ОбеспечительныйПлатежСПОТ Тогда
|
||
КодБК = ВидыНалоговВзносовЛокализация.КБКПоВидуНалоговогоОбязательства(Объект.ТипНалога, , Объект.Дата);
|
||
Если Не ПустаяСтрока(Объект.КодБК) И СокрЛП(Объект.КодБК) <> КодБК Тогда
|
||
ТекстОшибки = НСтр("ru = 'КБК не соответствует реквизитам обеспечительного платежа'");
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет");
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли ПлатежиВБюджетКлиентСервер.ПлатежАдминистрируетсяНалоговымиОрганами(Объект.КодБК)
|
||
И Не ПараметрыПроверкиЗаполнения.ПрименениеПриказа58н
|
||
И ДействуетПриказ199н_202302
|
||
И Объект.СтатусСоставителя <> "01"
|
||
И Объект.СтатусСоставителя <> "02"
|
||
И Объект.СтатусСоставителя <> "13"
|
||
И Объект.СтатусСоставителя <> "27" Тогда
|
||
|
||
ТекстОшибки =
|
||
НСтр("ru = 'В поле ""Статус плательщика"" следует указать значение ""01"", ""13"" (для кредитных организаций ""27"") или ""02"" (для уведомления об исчисленных суммах налога)'");
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , "НадписьРеквизитыПлатежаВБюджет", , Отказ);
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
Если ПлатежиВБюджетКлиентСервер.ОснованияПлатежа(
|
||
ВидПеречисленияВБюджет, ПараметрыПроверкиЗаполнения.ПрименениеПриказа107н, Объект.Дата).НайтиПоЗначению(ПоказательОснования) = Неопределено
|
||
И ПоказательТипа <> "0" Тогда
|
||
ТекстОшибки = НСтр("ru = 'Неверное значение поля ""Основание""'");
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если Не ПараметрыПроверкиЗаполнения.ПрименениеПриказа126н Тогда
|
||
Если ПлатежиВБюджетКлиентСервер.ТипыПлатежа(ВидПеречисленияВБюджет, ПараметрыПроверкиЗаполнения.ПрименениеПриказа107н).НайтиПоЗначению(ПоказательТипа) = Неопределено
|
||
И ПоказательТипа <> "0" Тогда
|
||
ТекстОшибки = НСтр("ru = 'Неверно указано значение в поле ""Тип платежа""'");
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если СтрНайти("АП,АР", ПоказательОснования) > 0
|
||
И Не ПараметрыПроверкиЗаполнения.ПрименениеПриказа58н Тогда
|
||
Если ЗначениеЗаполнено(ПоказательПериода)
|
||
И ПоказательПериода <> "0" Тогда
|
||
ТекстОшибки = НСтр("ru = 'При основании платежа ""АП"" или ""АР"" следует указать ""0"" в поле ""Период""'");
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли СтрНайти("ТП,ЗД", ПоказательОснования) > 0
|
||
И Не ПараметрыПроверкиЗаполнения.ПрименениеПриказа58н Тогда
|
||
Если ЗначениеЗаполнено(ПоказательНомера)
|
||
И ПоказательНомера <> "0"
|
||
И (НЕ ДействуетПриказ199н_202110
|
||
ИЛИ ДействуетПриказ199н_202110
|
||
И ПоказательОснования = "ТП") Тогда
|
||
ТекстОшибки = СтрШаблон(НСтр("ru = 'При основании платежа ""%1"" необходимо указывать ""0"" в поле ""Номер""'"), ПоказательОснования);
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
ПоказательДатыСтрокой = ПоказательДаты;
|
||
Если Лев(ПоказательДатыСтрокой, 1) = "0"
|
||
И Сред(ПоказательДатыСтрокой, 2, 2) = " ." Тогда
|
||
ПоказательДатыСтрокой = "0";
|
||
КонецЕсли;
|
||
|
||
Если ПустаяСтрока(СтрЗаменить(ПоказательДатыСтрокой, ".", "")) Тогда
|
||
ПоказательДатыСтрокой = "";
|
||
КонецЕсли;
|
||
|
||
Если ПоказательОснования = "ЗД" Тогда
|
||
Если ЗначениеЗаполнено(ПоказательДатыСтрокой)
|
||
И ПоказательДатыСтрокой <> "0"
|
||
И (НЕ ДействуетПриказ199н_202110
|
||
ИЛИ ДействуетПриказ199н_202110
|
||
И ПоказательНомера = "0") Тогда
|
||
ТекстОшибки = НСтр("ru = 'При основании платежа ""ЗД"" следует указать ""0"" в поле ""Дата""'");
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если ПоказательОснования = "ЗД"
|
||
И ДействуетПриказ199н_202110 Тогда
|
||
|
||
Если ПоказательНомера <> "0" Тогда
|
||
|
||
Префикс = Лев(ПоказательНомера, 2);
|
||
|
||
Если СтрНайти("ТР,ПР,АП,АР", Префикс) = 0 Тогда
|
||
|
||
ТекстОшибки = НСтр("ru = 'Необходимо указать номер документа с префиксом (ТР, ПР, АП или АР)'");
|
||
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
Если ПоказательДатыСтрокой = "0" Тогда
|
||
|
||
ТекстОшибки = НСтр("ru = 'Необходимо указать дату документа'");
|
||
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Проверка заполнения реквизитов таможенных платежей в документе.
|
||
//
|
||
// Параметры:
|
||
// Объект - ДокументОбъект - Документ оплаты.
|
||
// ПараметрыПроверкиЗаполнения - Структура - Параметры проверки заполнения:
|
||
// * ПрименениеПриказа107н - Булево - Признак применения приказа 107н.
|
||
// * ПрименениеПриказа126н - Булево - Признак применения приказа 126н.
|
||
// * ЕдиныйНалоговыйПлатеж - Булево - Признак единого налогового платежа.
|
||
// * ПрименениеПриказа58н - Булево - Признак применения приказа 58н.
|
||
// Отказ - Булево - Признак отказа от продолжения работы
|
||
// ФлагОбменСБанками - Булево - используется обмен с банком
|
||
// ОшибкиЗаполнения - Строка - Накопленное описание ошибок.
|
||
//
|
||
Процедура ПроверитьЗаполнениеРеквизитовТаможенныхПлатежей(Объект, ПараметрыПроверкиЗаполнения, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения)
|
||
|
||
ВидПеречисленияВБюджет = Объект.ВидПеречисленияВБюджет;
|
||
ПоказательОснования = Объект.ПоказательОснования;
|
||
ПоказательТипа = Объект.ПоказательТипа;
|
||
|
||
ПроверитьЗаполнениеКБК(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверкиЗаполнения);
|
||
ПроверитьЗаполнениеОКТМО(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверкиЗаполнения);
|
||
ПроверитьЗаполнениеУИН(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения);
|
||
ПроверитьЗаполнениеКодТаможенногоОргана(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверкиЗаполнения);
|
||
ПроверитьЗаполнениеПоказателяНомера(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверкиЗаполнения);
|
||
ПроверитьЗаполнениеПоказателяДаты(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверкиЗаполнения);
|
||
|
||
Если ПараметрыПроверкиЗаполнения.ПрименениеПриказа58н
|
||
И Не ЗначениеЗаполнено(Объект.ПоказательОснования) Тогда
|
||
ТекстОшибки = НСтр("ru = 'Поле ""Основание"" не заполнено'");
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
ИначеЕсли ПлатежиВБюджетКлиентСервер.ОснованияПлатежа(
|
||
ВидПеречисленияВБюджет, ПараметрыПроверкиЗаполнения.ПрименениеПриказа107н,
|
||
?(Объект.Дата = Дата('00010101'), ТекущаяДатаСеанса(), Объект.Дата)).НайтиПоЗначению(ПоказательОснования) = Неопределено
|
||
И ПоказательТипа <> "0" Тогда
|
||
ТекстОшибки = НСтр("ru = 'Неверное значение поля ""Основание""'");
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если Не ПараметрыПроверкиЗаполнения.ПрименениеПриказа126н Тогда
|
||
Если ПлатежиВБюджетКлиентСервер.ТипыПлатежа(ВидПеречисленияВБюджет, ПараметрыПроверкиЗаполнения.ПрименениеПриказа107н).НайтиПоЗначению(ПоказательТипа) = Неопределено
|
||
И ПоказательТипа <> "0" Тогда
|
||
ТекстОшибки = НСтр("ru = 'Неверно указано значение в поле ""Тип платежа""'");
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Проверка заполнения реквизитов иных платежей в бюджет в документе.
|
||
//
|
||
// Параметры:
|
||
// Объект - ДокументОбъект - Документ оплаты
|
||
// ПараметрыПроверкиЗаполнения - Структура - Параметры проверки заполнения:
|
||
// * ПрименениеПриказа107н - Булево - Признак применения приказа 107н.
|
||
// * ПрименениеПриказа126н - Булево - Признак применения приказа 126н.
|
||
// * ЕдиныйНалоговыйПлатеж - Булево - Признак единого налогового платежа.
|
||
// * ПрименениеПриказа58н - Булево - Признак применения приказа 58н.
|
||
// Отказ - Булево - Признак отказа от продолжения работы
|
||
// ФлагОбменСБанками - Булево - используется обмен с банком
|
||
// ОшибкиЗаполнения - Строка - Накопленное описание ошибок.
|
||
//
|
||
Процедура ПроверитьЗаполнениеРеквизитовИныхПлатежейВБюджет(Объект, ПараметрыПроверкиЗаполнения, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения)
|
||
|
||
СтруктураПолей = Новый Структура;
|
||
СтруктураПолей.Вставить("ПоказательПериода", "Период");
|
||
СтруктураПолей.Вставить("ПоказательНомера", НСтр("ru='Номер документа'"));
|
||
СтруктураПолей.Вставить("ПоказательДаты", НСтр("ru='Дата документа'"));
|
||
|
||
ПроверитьЗаполнениеКБК(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверкиЗаполнения);
|
||
ПроверитьЗаполнениеОКТМО(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверкиЗаполнения);
|
||
ПроверитьЗаполнениеУИН(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения);
|
||
ПроверитьЗаполнениеПоказателяНомера(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверкиЗаполнения);
|
||
ПроверитьЗаполнениеПоказателяДаты(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверкиЗаполнения);
|
||
|
||
Если Не ПараметрыПроверкиЗаполнения.ПрименениеПриказа58н
|
||
И Объект.СтатусСоставителя = "08" Тогда
|
||
Для каждого ЭлементСтруктуры Из СтруктураПолей Цикл
|
||
Если Объект[ЭлементСтруктуры.Ключ] <> "0" Тогда
|
||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||
НСтр("ru = 'При статусе плательщика ""08"" следует указать ""0"" в поле ""%1""'"),
|
||
ЭлементСтруктуры.Значение);
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПроверитьЗаполнениеПоказателяПериода(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения)
|
||
ПоказательПериода = Объект.ПоказательПериода;
|
||
ПоказательОснования = Объект.ПоказательОснования;
|
||
|
||
ОшибкаЗаполненияПериода = Ложь;
|
||
РасшифровкаОшибки = "";
|
||
|
||
Если Не ЗначениеЗаполнено(Объект.ПоказательПериода) Тогда
|
||
ТекстОшибки = НСтр("ru = 'Поле ""Период"" не заполнено'");
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если ПлатежиВБюджетКлиентСервер.ДействуетПриказ199н_202110(Объект.Дата) Тогда
|
||
|
||
ПоказателиДляПроверкиКонкретнойДаты = "РС,ОТ,РТ,ВУ,ПБ,ИН";
|
||
ПоказателиДляПроверки = "ТП,ЗД";
|
||
|
||
Иначе
|
||
|
||
ПоказателиДляПроверкиКонкретнойДаты = "ТР,РС,ОТ,РТ,ВУ,ПБ,ПР";
|
||
ПоказателиДляПроверки = "ТП,ЗД";
|
||
|
||
КонецЕсли;
|
||
|
||
Если ЗначениеЗаполнено(ПоказательПериода) Тогда
|
||
Если СтрНайти(ПоказателиДляПроверки, ПоказательОснования) > 0 И ПоказательПериода <> "0" Тогда
|
||
ПериодичностьНалога = Сред((ПоказательПериода), 1, 2);
|
||
|
||
НомерПериода = Сред((ПоказательПериода), 4, 2);
|
||
НомерПериода = ?(ПустаяСтрока(НомерПериода), 0, Число(НомерПериода));
|
||
|
||
ГодПериода = Сред((ПоказательПериода), 7, 4);
|
||
ГодПериода = ?(ПустаяСтрока(ГодПериода), 0, Число(ГодПериода));
|
||
|
||
Если СтрНайти("МС,КВ,ПЛ,ГД", ПериодичностьНалога) > 0 Тогда
|
||
Если СтрДлина(ПоказательПериода) - СтрДлина(СтрЗаменить(ПоказательПериода, ".", "")) <> 2
|
||
ИЛИ ГодПериода < 2000 Тогда
|
||
ОшибкаЗаполненияПериода = Истина;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если ПериодичностьНалога = "МС" Тогда
|
||
Если НомерПериода < 1
|
||
ИЛИ НомерПериода > 12 Тогда
|
||
ОшибкаЗаполненияПериода = Истина;
|
||
РасшифровкаОшибки = Нстр("ru = 'четвертый и пятый знак периода платежа заполнены некорректно,
|
||
|для месячных платежей необходимо заполнить порядковый номер месяца (с 1 по 12).'");
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли ПериодичностьНалога = "КВ" Тогда
|
||
Если НомерПериода < 1
|
||
ИЛИ НомерПериода > 4 Тогда
|
||
ОшибкаЗаполненияПериода = Истина;
|
||
РасшифровкаОшибки = Нстр("ru = 'четвертый и пятый знак периода платежа заполнены некорректно,
|
||
|для квартальных платежей необходимо заполнить порядковый номер квартала (с 1 по 4).'");
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли ПериодичностьНалога = "ПЛ" Тогда
|
||
Если НомерПериода < 1
|
||
ИЛИ НомерПериода > 2 Тогда
|
||
ОшибкаЗаполненияПериода = Истина;
|
||
РасшифровкаОшибки = Нстр("ru = 'четвертый и пятый знак периода платежа заполнены некорректно,
|
||
|для полугодовых платежей необходимо заполнить порядковый номер полугодия (01 или 02).'");
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли ПериодичностьНалога = "ГД" Тогда
|
||
Если НомерПериода <> 0 Тогда
|
||
ОшибкаЗаполненияПериода = Истина;
|
||
РасшифровкаОшибки = Нстр("ru = 'четвертый и пятый знак периода платежа заполнены некорректно
|
||
|для годовых платежей необходимо заполнить значением 00.'");
|
||
КонецЕсли;
|
||
|
||
Иначе
|
||
ПроверитьДатуПериода(Объект, ОшибкаЗаполненияПериода);
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли СтрНайти(ПоказателиДляПроверкиКонкретнойДаты, ПоказательОснования) > 0
|
||
И ПоказательПериода <> "0" Тогда
|
||
|
||
ПериодичностьНалога = Сред((ПоказательПериода), 1, 2);
|
||
|
||
Если СтрНайти("МС,КВ,ПЛ,ГД", ПериодичностьНалога) > 0 Тогда
|
||
ОшибкаЗаполненияПериода = Истина;
|
||
РасшифровкаОшибки = Нстр("ru = 'необходимо указать конкретный период платежа.'");
|
||
Иначе
|
||
ПроверитьДатуПериода(Объект, ОшибкаЗаполненияПериода);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если ОшибкаЗаполненияПериода Тогда
|
||
ТекстОшибки = НСтр("ru = 'Неверно указано значение в поле ""Период""'");
|
||
|
||
Если РасшифровкаОшибки <> "" Тогда
|
||
ТекстОшибки = ТекстОшибки + ":" + Символы.ПС + РасшифровкаОшибки;
|
||
КонецЕсли;
|
||
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецПроцедуры
|
||
|
||
Процедура ПроверитьЗаполнениеКБК(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверки)
|
||
|
||
КБК = Объект.КодБК;
|
||
НомерСчетаПолучателя = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.БанковскийСчетКонтрагента, "НомерСчета");
|
||
|
||
Если Объект.ВидПеречисленияВБюджет = Перечисления.ВидыПеречисленийВБюджет.ИнойПлатеж
|
||
И ПустаяСтрока(КБК)
|
||
И Лев(НомерСчетаПолучателя, 5) <> "03100"
|
||
И ПараметрыПроверки.ПрименениеПриказа58н Тогда
|
||
|
||
ТекстОшибки = НСтр("ru = 'КБК должен состоять из 20 знаков или ""0""'");
|
||
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
|
||
Возврат;
|
||
|
||
ИначеЕсли Объект.ВидПеречисленияВБюджет = Перечисления.ВидыПеречисленийВБюджет.ИнойПлатеж
|
||
И СокрЛП(КБК) = "0"
|
||
И Лев(НомерСчетаПолучателя, 5) <> "03100"
|
||
И ПараметрыПроверки.ПрименениеПриказа58н Тогда
|
||
Возврат;
|
||
ИначеЕсли Объект.ВидПеречисленияВБюджет = Перечисления.ВидыПеречисленийВБюджет.ИнойПлатеж
|
||
И СокрЛП(КБК) = "0"
|
||
И Не ПараметрыПроверки.ПрименениеПриказа58н Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ТекстОшибки = "";
|
||
|
||
// Проверим валидность введенного кода
|
||
Если СтрДлина(СокрП(КБК)) <> 20 Тогда
|
||
|
||
ТекстОшибки = НСтр("ru = 'КБК должен состоять из 20 знаков'");
|
||
|
||
// Допустимы символы 0123456789АБВГДЕЖИКЛМНПРСТУФЦЧШЩЭЮЯABCDEFGHIJKLMNPQRSTUVWYZ
|
||
ИначеЕсли Не СтроковыеФункцииКлиентСервер.ТолькоЛатиницаВСтроке(ВРег(КБК), Истина, "0123456789АБВГДЕЖИКЛМНПРСТУФЦЧШЩЭЮЯ")
|
||
Или СтрНайти(ВРег(КБК), "O") > 0
|
||
Или СтрНайти(ВРег(КБК), "X") > 0 Тогда
|
||
|
||
ТекстОшибки = НСтр("ru = 'В КБК допустимо вводить только цифры и буквы (8 - 17 разряды, кроме ""О"" и ""Х"")'");
|
||
|
||
ИначеЕсли ПустаяСтрока(СокрЛП(СтрЗаменить(КБК, "0", ""))) Тогда
|
||
|
||
ТекстОшибки = НСтр("ru = 'Все знаки КБК не могут одновременно принимать значение ""0""'");
|
||
|
||
КонецЕсли;
|
||
|
||
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПроверитьЗаполнениеОКТМО(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверки)
|
||
|
||
КодОКАТО = Объект.КодОКАТО;
|
||
ТекстОшибки = "";
|
||
|
||
Если ПустаяСтрока(КодОКАТО)
|
||
И ПараметрыПроверки.ПрименениеПриказа58н Тогда
|
||
|
||
ТекстОшибки = НСтр("ru = 'ОКТМО должен состоять из 8 знаков или ""0""'");
|
||
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
// Проверим валидность введенного кода
|
||
Если СтрДлина(СокрЛП(КодОКАТО)) > 1 И ПустаяСтрока(СокрЛП(СтрЗаменить(КодОКАТО, "0", ""))) Тогда
|
||
|
||
ТекстОшибки = НСтр("ru = 'Все знаки ОКТМО не могут одновременно принимать значение ""0""'");
|
||
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПроверитьЗаполнениеУИН(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения)
|
||
|
||
УИН = Объект.ИдентификаторПлатежа;
|
||
|
||
ТекстОшибки = "";
|
||
|
||
// Проверим валидность введенного кода
|
||
Если СтрДлина(СокрП(УИН)) <> 20 И СтрДлина(СокрП(УИН)) <> 25 И СтрДлина(СокрП(УИН)) <> 1 И СтрДлина(СокрП(УИН)) <> 0
|
||
И СтрДлина(СокрЛП(УИН)) <> 4 Тогда
|
||
|
||
ТекстОшибки = НСтр("ru = 'УИН должен состоять из 20 или 25 знаков.
|
||
|В случае отсутствия Уникального идентификатора начисления указывается значение ""0"".'");
|
||
|
||
ИначеЕсли ПустаяСтрока(СокрЛП(СтрЗаменить(УИН, "0", ""))) И СтрДлина(СокрП(УИН)) <> 0 И СокрП(УИН) <> "0" Тогда
|
||
|
||
ТекстОшибки = НСтр("ru = 'Все знаки УИН не могут одновременно принимать значение ""0""'");
|
||
|
||
КонецЕсли;
|
||
|
||
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
|
||
ТекстОшибки,
|
||
Объект,
|
||
"ИдентификаторПлатежа",
|
||
,
|
||
Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПроверитьДатуПериода(Объект, ОшибкаЗаполненияПериода)
|
||
|
||
ПоказательПериода = Объект.ПоказательПериода;
|
||
|
||
ПозицияПериода = СтрНайти(СокрЛП(ПоказательПериода),".");
|
||
ПозицияГода = СтрНайти(Сред(СокрЛП(ПоказательПериода), ПозицияПериода + 1), ".") + ПозицияПериода;
|
||
|
||
ДатаПериода = Лев(СокрЛП(ПоказательПериода), ПозицияПериода - 1);
|
||
НомерПериода = Сред(СокрЛП(ПоказательПериода), ПозицияПериода + 1, ПозицияГода - ПозицияПериода - 1);
|
||
ГодПериода = Сред(СокрЛП(ПоказательПериода), ПозицияГода + 1);
|
||
|
||
Попытка
|
||
ДатаПоказателя = Дата(Число(ГодПериода), Число(НомерПериода), Число(ДатаПериода));
|
||
Исключение
|
||
ОшибкаЗаполненияПериода = Истина;
|
||
КонецПопытки
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПроверитьЗаполнениеКодТаможенногоОргана(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверки)
|
||
|
||
КодТаможенногоОргана = Объект.ПоказательПериода;
|
||
|
||
ТекстОшибки = "";
|
||
|
||
Если ПараметрыПроверки.ПрименениеПриказа58н
|
||
И ПустаяСтрока(КодТаможенногоОргана) Тогда
|
||
|
||
ТекстОшибки = НСтр("ru = 'Код таможенного органа должен состоять из 8 знаков или ""0""'");
|
||
|
||
ИначеЕсли ПустаяСтрока(КодТаможенногоОргана) Тогда
|
||
|
||
ТекстОшибки = НСтр("ru = 'Поле ""Код таможенного органа"" не заполнено'");
|
||
|
||
ИначеЕсли ПустаяСтрока(СокрЛП(СтрЗаменить(КодТаможенногоОргана, "0", "")))
|
||
И СокрЛП(КодТаможенногоОргана) <> "0" Тогда
|
||
|
||
ТекстОшибки = НСтр("ru = 'Все знаки Кода таможенного органа не могут одновременно принимать значение ""0""'");
|
||
|
||
ИначеЕсли СтрДлина(СокрП(КодТаможенногоОргана)) <> 8
|
||
И СокрП(КодТаможенногоОргана) <> "0" Тогда
|
||
|
||
ТекстОшибки = НСтр("ru = 'Код таможенного органа должен состоять из 8 знаков'");
|
||
|
||
КонецЕсли;
|
||
|
||
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПроверитьЗаполнениеПоказателяНомера(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверки)
|
||
|
||
ВидПлатежа = Объект.ВидПеречисленияВБюджет;
|
||
ПоказательНомера = Объект.ПоказательНомера;
|
||
ПоказательОснования = Объект.ПоказательОснования;
|
||
ТекстОшибки = "";
|
||
|
||
Если ВидПлатежа = Перечисления.ВидыПеречисленийВБюджет.ИнойПлатеж
|
||
И Не ПараметрыПроверки.ПрименениеПриказа58н Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Если Не ЗначениеЗаполнено(ПоказательНомера) Тогда
|
||
ТекстОшибки = НСтр("ru = 'Поле ""Номер документа"" не заполнено'");
|
||
ИначеЕсли ПараметрыПроверки.ПрименениеПриказа58н
|
||
И ПоказательНомера = "0"
|
||
И (Объект.СтатусСоставителя = "05" Или Объект.СтатусСоставителя = "19" Или Объект.СтатусСоставителя = "28" Или Объект.СтатусСоставителя = "32")
|
||
И СокрП(Объект.ИННПлательщика) = "0"
|
||
И (СокрП(Объект.ИдентификаторПлатежа) = "0" Или Объект.ИдентификаторПлатежа = "") Тогда
|
||
ТекстОшибки = НСтр("ru = 'Поле ""Номер документа"" должно быть заполнено конкретным значением и не ""0""'");
|
||
ИначеЕсли ПараметрыПроверки.ПрименениеПриказа58н
|
||
И ПоказательОснования <> "0" И ПоказательОснования <> "00"
|
||
И ПоказательНомера = "0" Тогда
|
||
ТекстОшибки = НСтр("ru = 'Поле ""Номер документа"" должно быть заполнено конкретным значением и не ""0""'");
|
||
КонецЕсли;
|
||
|
||
Если Не ПустаяСтрока(ТекстОшибки) Тогда
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПроверитьЗаполнениеПоказателяДаты(Объект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения, ПараметрыПроверки)
|
||
|
||
ВидПлатежа = Объект.ВидПеречисленияВБюджет;
|
||
ПоказательДаты = Объект.ПоказательДаты;
|
||
ПоказательОснования = Объект.ПоказательОснования;
|
||
ТекстОшибки = "";
|
||
|
||
Если ВидПлатежа = Перечисления.ВидыПеречисленийВБюджет.ИнойПлатеж
|
||
И Не ПараметрыПроверки.ПрименениеПриказа58н Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Если Не ЗначениеЗаполнено(ПоказательДаты) Тогда
|
||
ТекстОшибки = НСтр("ru = 'Поле ""Дата документа"" не заполнено'");
|
||
ИначеЕсли ПараметрыПроверки.ПрименениеПриказа58н
|
||
И ПоказательОснования = "00"
|
||
И ПоказательДаты <> "00" Тогда
|
||
ТекстОшибки = НСтр("ru = 'Поле ""Дата документа"" должно быть заполнено значением ""00""'");
|
||
КонецЕсли;
|
||
|
||
Если Не ПустаяСтрока(ТекстОшибки) Тогда
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "НадписьРеквизитыПлатежаВБюджет",, Отказ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
|
||
Процедура ПроверитьРеестрКонтрагентовПоРасшифровкеПлатежа(
|
||
ДокументОбъект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения)
|
||
|
||
РеестрПолучателей = ДокументОбъект.БанковскиеСчетаСпискаКонтрагентов.Выгрузить(, "НомерСтроки, Контрагент, Сумма");
|
||
ТаблицаПолучателей = РеестрПолучателей.Скопировать();
|
||
ТаблицаПолучателей.Свернуть("Контрагент", "Сумма");
|
||
|
||
РасшифровкаПлатежа = ДокументОбъект.РасшифровкаПлатежа.Выгрузить(, "Контрагент, Сумма");
|
||
РасшифровкаПлатежа.Свернуть("Контрагент", "Сумма");
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| СписокКонтрагентов.Контрагент КАК Контрагент,
|
||
| СписокКонтрагентов.Сумма КАК Сумма
|
||
|ПОМЕСТИТЬ ТаблицаПолучателей
|
||
|ИЗ
|
||
| &СписокКонтрагентов КАК СписокКонтрагентов
|
||
|;
|
||
|
|
||
|////////////////////////////////////////////////////////////////////////////////
|
||
|ВЫБРАТЬ
|
||
| РасшифровкаПлатежа.Контрагент КАК Контрагент,
|
||
| РасшифровкаПлатежа.Сумма КАК Сумма
|
||
|ПОМЕСТИТЬ ТаблицаРасшифровка
|
||
|ИЗ
|
||
| &РасшифровкаПлатежа КАК РасшифровкаПлатежа
|
||
|;
|
||
|
|
||
|////////////////////////////////////////////////////////////////////////////////
|
||
|ВЫБРАТЬ
|
||
| ТаблицаПолучателей.Контрагент КАК КонтрагентПолучатель,
|
||
| ТаблицаПолучателей.Сумма КАК СуммаПолучатель,
|
||
| ТаблицаРасшифровка.Контрагент КАК КонтрагентРасшифровка,
|
||
| ТаблицаРасшифровка.Сумма КАК СуммаРасшифровка
|
||
|ПОМЕСТИТЬ ПолнаяТаблица
|
||
|ИЗ
|
||
| ТаблицаРасшифровка КАК ТаблицаРасшифровка
|
||
| ПОЛНОЕ СОЕДИНЕНИЕ ТаблицаПолучателей КАК ТаблицаПолучателей
|
||
| ПО ТаблицаРасшифровка.Контрагент = ТаблицаПолучателей.Контрагент
|
||
|;
|
||
|
|
||
|////////////////////////////////////////////////////////////////////////////////
|
||
|ВЫБРАТЬ
|
||
| ПолнаяТаблица.КонтрагентПолучатель КАК Контрагент,
|
||
| ИСТИНА КАК ОтсутствуетПоставщик,
|
||
| ЛОЖЬ КАК ОтсутствуетПолучатель,
|
||
| ЛОЖЬ КАК ОшибкаСуммы
|
||
|ИЗ
|
||
| ПолнаяТаблица КАК ПолнаяТаблица
|
||
|ГДЕ
|
||
| ПолнаяТаблица.КонтрагентРасшифровка ЕСТЬ NULL
|
||
|
|
||
|ОБЪЕДИНИТЬ ВСЕ
|
||
|
|
||
|ВЫБРАТЬ
|
||
| ПолнаяТаблица.КонтрагентРасшифровка,
|
||
| ЛОЖЬ,
|
||
| ИСТИНА,
|
||
| ЛОЖЬ
|
||
|ИЗ
|
||
| ПолнаяТаблица КАК ПолнаяТаблица
|
||
|ГДЕ
|
||
| ПолнаяТаблица.КонтрагентПолучатель ЕСТЬ NULL
|
||
|
|
||
|ОБЪЕДИНИТЬ ВСЕ
|
||
|
|
||
|ВЫБРАТЬ
|
||
| ПолнаяТаблица.КонтрагентПолучатель,
|
||
| ЛОЖЬ,
|
||
| ЛОЖЬ,
|
||
| ИСТИНА
|
||
|ИЗ
|
||
| ПолнаяТаблица КАК ПолнаяТаблица
|
||
|ГДЕ
|
||
| ПолнаяТаблица.КонтрагентПолучатель = ПолнаяТаблица.КонтрагентРасшифровка
|
||
| И ПолнаяТаблица.СуммаПолучатель <> ПолнаяТаблица.СуммаРасшифровка";
|
||
|
||
Запрос.УстановитьПараметр("СписокКонтрагентов", ТаблицаПолучателей);
|
||
Запрос.УстановитьПараметр("РасшифровкаПлатежа", РасшифровкаПлатежа);
|
||
|
||
РезультатЗапроса = Запрос.Выполнить().Выбрать();
|
||
ОбщегоНазначенияУТ.УничтожитьВременныеТаблицы(Запрос.МенеджерВременныхТаблиц);
|
||
|
||
Пока РезультатЗапроса.Следующий() Цикл
|
||
|
||
ТекстыСообщений = Новый Массив;
|
||
|
||
Если РезультатЗапроса.ОтсутствуетПоставщик Тогда
|
||
|
||
ПараметрыОтбора = Новый Структура("Контрагент", РезультатЗапроса.Контрагент);
|
||
СписокСтрок = РеестрПолучателей.НайтиСтроки(ПараметрыОтбора);
|
||
|
||
Для Каждого СтрокаОшибки Из СписокСтрок Цикл
|
||
|
||
ТекстШаблон = НСтр("ru = 'В строке %1 введен получатель, которого нет в расшифровке платежа'");
|
||
ТекстСообщения = СтрШаблон(ТекстШаблон, СтрокаОшибки.НомерСтроки);
|
||
ТекстыСообщений.Добавить(ТекстСообщения);
|
||
|
||
КонецЦикла;
|
||
|
||
ИначеЕсли РезультатЗапроса.ОтсутствуетПолучатель Тогда
|
||
|
||
ТекстШаблон = НСтр("ru = 'В реестре отсутствует получатель ""%1""'");
|
||
ТекстСообщения = СтрШаблон(ТекстШаблон, РезультатЗапроса.Контрагент);
|
||
ТекстыСообщений.Добавить(ТекстСообщения);
|
||
|
||
ИначеЕсли РезультатЗапроса.ОшибкаСуммы Тогда
|
||
|
||
ТекстШаблон = НСтр("ru = 'Сумма в реестре по получателю ""%1"" отличается от расшифровки платежа'");
|
||
ТекстСообщения = СтрШаблон(ТекстШаблон, РезультатЗапроса.Контрагент);
|
||
ТекстыСообщений.Добавить(ТекстСообщения);
|
||
|
||
КонецЕсли;
|
||
|
||
Если ТекстыСообщений.Количество() <> 0 Тогда
|
||
|
||
Для Каждого ТекущееСообщение Из ТекстыСообщений Цикл
|
||
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекущееСообщение);
|
||
Иначе
|
||
ОбщегоНазначения.СообщитьПользователю(
|
||
ТекущееСообщение, ДокументОбъект, "БанковскиеСчетаСпискаКонтрагентов", , Отказ);
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Таблица банковских счетов списка контрагентов.
|
||
//
|
||
// Возвращаемое значение:
|
||
// ТаблицаЗначений - таблица банковских счетов списка контрагентов:
|
||
// * Контрагент - СправочникСсылка.Контрагенты - контрагент.
|
||
// * БанковскийСчетКонтрагента - СправочникСсылка.БанковскиеСчетаКонтрагентов - банковский счет контрагента.
|
||
// * Сумма - Число - сумма списания.
|
||
//
|
||
Функция НоваяТаблицаБанковскихСчетовСпискаКонтрагентов()
|
||
|
||
Таблица = Новый ТаблицаЗначений;
|
||
Таблица.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
|
||
Таблица.Колонки.Добавить("БанковскийСчетКонтрагента", Новый ОписаниеТипов("СправочникСсылка.БанковскиеСчетаКонтрагентов"));
|
||
Таблица.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
|
||
|
||
Возврат Таблица;
|
||
|
||
КонецФункции
|
||
|
||
// Выполняет проверку реестра контрагентов.
|
||
//
|
||
// Параметры:
|
||
// ДокументОбъект - ДокументОбъект - документ, в котором выполняется проверка.
|
||
// Ошибка - Булево - признак ошибки при проверке.
|
||
// ФлагОбменСБанками - Булево - признак выполнения процедуры в момент выполнения обработки обмена с банком.
|
||
// ОшибкиЗаполнения - Строка - строка с ошибками.
|
||
//
|
||
Процедура ПроверитьРеестрКонтрагентов(ДокументОбъект, Ошибка, ФлагОбменСБанками, ОшибкиЗаполнения)
|
||
|
||
Если Не ДокументОбъект.СписокКонтрагентов Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ПроверитьРеестрКонтрагентовПоРасшифровкеПлатежа(ДокументОбъект, Ошибка, ФлагОбменСБанками, ОшибкиЗаполнения);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Выполняет проверку объектов расчета с самозанятыми.
|
||
//
|
||
// Параметры:
|
||
// ДокументОбъект - ДокументОбъект - документ, в котором выполняется проверка.
|
||
// Ошибка - Булево - признак ошибки при проверке.
|
||
// ФлагОбменСБанками - Булево - признак выполнения процедуры в момент выполнения обработки обмена с банком.
|
||
// ОшибкиЗаполнения - Строка - строка с ошибками.
|
||
//
|
||
Процедура ПроверитьОбъектыРасчетовССамозанятыми(ДокументОбъект, Ошибка, ФлагОбменСБанками, ОшибкиЗаполнения)
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| ТаблицаРасшифровка.НомерСтроки КАК НомерСтроки,
|
||
| ТаблицаРасшифровка.ОбъектРасчетов КАК ОбъектРасчетов
|
||
|ПОМЕСТИТЬ РасшифровкаПлатежа
|
||
|ИЗ
|
||
| &ТаблицаРасшифровка КАК ТаблицаРасшифровка
|
||
|;
|
||
|
|
||
|////////////////////////////////////////////////////////////////////////////////
|
||
|ВЫБРАТЬ
|
||
| РасшифровкаПлатежа.НомерСтроки КАК НомерСтроки,
|
||
| ОбъектыРасчетов.ТипСсылки КАК ТипСсылки
|
||
|ИЗ
|
||
| РасшифровкаПлатежа КАК РасшифровкаПлатежа
|
||
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
|
||
| ПО РасшифровкаПлатежа.ОбъектРасчетов = ОбъектыРасчетов.Ссылка
|
||
|ГДЕ
|
||
| ТИПЗНАЧЕНИЯ(ОбъектыРасчетов.Объект) В(&ТипыОбъектов)";
|
||
|
||
СписокОбъектов = Новый Массив;
|
||
СписокОбъектов.Добавить(Тип("ДокументСсылка.ОтчетКомиссионера"));
|
||
СписокОбъектов.Добавить(Тип("ДокументСсылка.АвансовыйОтчет"));
|
||
|
||
Запрос.УстановитьПараметр("ТипыОбъектов", СписокОбъектов);
|
||
Запрос.УстановитьПараметр("ТаблицаРасшифровка", ДокументОбъект.РасшифровкаПлатежа.Выгрузить());
|
||
|
||
РезультатЗапроса = Запрос.Выполнить().Выбрать();
|
||
|
||
Если Запрос.МенеджерВременныхТаблиц <> Неопределено Тогда
|
||
ОбщегоНазначенияУТ.УничтожитьВременныеТаблицы(Запрос.МенеджерВременныхТаблиц);
|
||
КонецЕсли;
|
||
|
||
Пока РезультатЗапроса.Следующий() Цикл
|
||
|
||
Если ДокументОбъект.РасшифровкаПлатежа.Количество() = 1
|
||
И Не ДокументОбъект.СписокКонтрагентов Тогда
|
||
|
||
ТекстШаблон = НСтр("ru = 'Введен недопустимый объект расчета с самозанятыми ""%1""'");
|
||
ТекстСообщения = СтрШаблон(ТекстШаблон, РезультатЗапроса.ТипСсылки);
|
||
|
||
Иначе
|
||
|
||
ТекстШаблон = НСтр("ru = 'В строке %1 введен недопустимый объект расчета с самозанятыми ""%2""'");
|
||
ТекстСообщения = СтрШаблон(ТекстШаблон, РезультатЗапроса.НомерСтроки, РезультатЗапроса.ТипСсылки);
|
||
|
||
КонецЕсли;
|
||
|
||
Поле = "РасшифровкаПлатежа[" + (РезультатЗапроса.НомерСтроки - 1) + "].ОбъектРасчетов";
|
||
|
||
Если ФлагОбменСБанками Тогда
|
||
ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстСообщения);
|
||
Иначе
|
||
ОбщегоНазначения.СообщитьПользователю(
|
||
ТекстСообщения, ДокументОбъект, Поле, , Ошибка);
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция КонтрагентИзТаблицы(Таблица, НомерСтроки, Приоритет)
|
||
|
||
Контрагент = Справочники.Контрагенты.ПустаяСсылка();
|
||
|
||
ПараметрыОтбора = Новый Структура;
|
||
ПараметрыОтбора.Вставить("НомерСтроки", НомерСтроки);
|
||
ПараметрыОтбора.Вставить("Приоритет", Приоритет);
|
||
|
||
НайденноеЗначение = Таблица.НайтиСтроки(ПараметрыОтбора);
|
||
|
||
Если НайденноеЗначение.Количество() = 1 Тогда
|
||
Контрагент = НайденноеЗначение[0].Контрагент;
|
||
КонецЕсли;
|
||
|
||
Возврат Контрагент;
|
||
|
||
КонецФункции
|
||
|
||
#Область ВыплатыСамозанятым
|
||
|
||
Процедура ЗаполнитьЧекиСамозанятого(Ссылка, ТаблицаЧеков = Неопределено) Экспорт
|
||
|
||
Если ТаблицаЧеков = Неопределено Тогда
|
||
ТаблицаЧеков = НоваяТаблицаЧековСамозанятых();
|
||
КонецЕсли;
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.УстановитьПараметр("Ссылка", Ссылка);
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| ПрисоединенныеФайлы.Наименование КАК НомерЧека,
|
||
| ПрисоединенныеФайлы.СсылкаНаЧек КАК СсылкаНаЧек,
|
||
| ПрисоединенныеФайлы.Ссылка КАК ФайлЧека
|
||
|ИЗ
|
||
| &ПрисоединенныеФайлы КАК ПрисоединенныеФайлы
|
||
|ГДЕ
|
||
| ПрисоединенныеФайлы.ВладелецФайла = &Ссылка
|
||
| И ПрисоединенныеФайлы.ЭтоЧекСамозанятого
|
||
| И НЕ ПрисоединенныеФайлы.ПометкаУдаления";
|
||
|
||
СсылкаПрисоединенныхФайлов = РаботаСФайлами.НоваяСсылкаНаФайл(Ссылка);
|
||
ИмяДокумента = ОбщегоНазначения.ИмяТаблицыПоСсылке(СсылкаПрисоединенныхФайлов);
|
||
|
||
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ПрисоединенныеФайлы", ИмяДокумента);
|
||
|
||
Результат = Запрос.Выполнить();
|
||
|
||
Если Не Результат.Пустой() Тогда
|
||
|
||
Выборка = Результат.Выбрать();
|
||
|
||
Пока Выборка.Следующий() Цикл
|
||
|
||
Чек = ТаблицаЧеков.Добавить();
|
||
ЗаполнитьЗначенияСвойств(Чек, Выборка);
|
||
Чек.НомерЧека = СтрЗаменить(Чек.НомерЧека, "№", "");
|
||
|
||
КонецЦикла;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция НоваяТаблицаЧековСамозанятых()
|
||
|
||
Таблица = Новый ТаблицаЗначений;
|
||
Таблица.Колонки.Добавить("НомерЧека", Новый ОписаниеТипов("Строка"));
|
||
Таблица.Колонки.Добавить("СсылкаНаЧек", Новый ОписаниеТипов("Строка"));
|
||
|
||
ТипыФайлов = Новый Массив;
|
||
ТипыФайлов.Добавить(Тип("СправочникСсылка.ПриобретениеТоваровУслугПрисоединенныеФайлы"));
|
||
ТипыФайлов.Добавить(Тип("СправочникСсылка.ПриобретениеУслугПрочихАктивовПрисоединенныеФайлы"));
|
||
Таблица.Колонки.Добавить("ФайлЧека", Новый ОписаниеТипов(ТипыФайлов));
|
||
|
||
Возврат Таблица
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
Процедура ВывестиОшибкуПроверкиБанковскихРеквизитов(ДанныеБанка, Отказ, РеквизитыБанка, СвойстваСообщения, СвойстваДополнительногоСообщения = Неопределено)
|
||
|
||
ТекстЗаголовка = "";
|
||
|
||
Если ЗначениеЗаполнено(СвойстваДополнительногоСообщения) Тогда
|
||
ТекстЗаголовка = СвойстваДополнительногоСообщения.Текст;
|
||
КонецЕсли;
|
||
|
||
Для Каждого РеквизитБанка Из РеквизитыБанка Цикл
|
||
|
||
Если Не ЗначениеЗаполнено(ДанныеБанка[РеквизитБанка.Ключ]) Тогда
|
||
|
||
Если ТекстЗаголовка <> "" Тогда
|
||
|
||
ОбщегоНазначения.СообщитьПользователю(
|
||
ТекстЗаголовка, СвойстваДополнительногоСообщения.КлючДанных, СвойстваДополнительногоСообщения.Поле, , Отказ);
|
||
ТекстЗаголовка = "";
|
||
|
||
КонецЕсли;
|
||
|
||
ТекстОшибки = СтрШаблон(СвойстваСообщения.Текст, РеквизитБанка.Значение);
|
||
ОбщегоНазначения.СообщитьПользователю(
|
||
Символы.Таб + ТекстОшибки, СвойстваСообщения.КлючДанных, РеквизитБанка.Ключ, СвойстваСообщения.ПутьКДанным, Отказ);
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция НовыеПараметрыВыводаСообщения()
|
||
|
||
Результат = Новый Структура;
|
||
Результат.Вставить("Текст", "");
|
||
Результат.Вставить("Поле", "");
|
||
Результат.Вставить("КлючДанных", Неопределено);
|
||
Результат.Вставить("ПутьКДанным", "");
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ИсключитьИзСпискаКонтрагентовЮрЛица(Список)
|
||
|
||
Если Список.Количество() = 0 Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
|
||
| Контрагенты.Ссылка КАК Контрагент
|
||
|ИЗ
|
||
| Справочник.Контрагенты КАК Контрагенты
|
||
|ГДЕ
|
||
| Контрагенты.ЮридическоеФизическоеЛицо = ЗНАЧЕНИЕ(Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо)
|
||
| И Контрагенты.Ссылка В (&Ссылка)";
|
||
|
||
Запрос.УстановитьПараметр("Ссылка", Список);
|
||
|
||
РезультатЗапроса = Запрос.Выполнить();
|
||
|
||
Если РезультатЗапроса.Пустой() Тогда
|
||
Список = Новый Массив;
|
||
Иначе
|
||
Список = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Контрагент");
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ЭтоИностранныйБанкРасчетов(СтранаБанка)
|
||
|
||
Результат = Истина;
|
||
|
||
Если Не ЗначениеЗаполнено(СтранаБанка)
|
||
Или СтранаБанка = Справочники.СтраныМира.Россия Тогда
|
||
Результат = Ложь;
|
||
КонецЕсли;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Процедура УвеличитьНомерПлатежногоДокумента(Объект, ПараметрыНомера)
|
||
|
||
НовыйНомер = ПараметрыНомера.Номер + 1;
|
||
НомерДокумента = Формат(НовыйНомер, "ЧГ=0");
|
||
|
||
Пока СтрДлина(НомерДокумента) < ПараметрыНомера.Длина Цикл
|
||
НомерДокумента = "0" + НомерДокумента;
|
||
КонецЦикла;
|
||
|
||
НомерДокумента = ПараметрыНомера.Префикс + НомерДокумента;
|
||
|
||
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоСсылке(Объект.Ссылка);
|
||
|
||
Если МенеджерОбъекта.ЭтоУникальныйНомерДокумента(Объект.Дата, НомерДокумента) Тогда
|
||
Объект.Номер = НомерДокумента;
|
||
Иначе
|
||
|
||
ПараметрыНомера.Номер = НовыйНомер;
|
||
УвеличитьНомерПлатежногоДокумента(Объект, ПараметрыНомера);
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
#Область РеквизитыПлательщика
|
||
|
||
Процедура ПреобразоватьПустойРеквизитПлательщика(ЭтоПеречислениеВБюджет, ЗначениеРеквизита)
|
||
|
||
Если ЗначениеРеквизита = "" И ЭтоПеречислениеВБюджет Тогда
|
||
ЗначениеРеквизита = "0";
|
||
ИначеЕсли ЗначениеРеквизита = "0" И Не ЭтоПеречислениеВБюджет Тогда
|
||
ЗначениеРеквизита = "";
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#КонецОбласти
|
||
//-- Локализация
|