From 865c25baf5057a13a6110e00e9174836334eef4e Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Tue, 6 Oct 2026 09:40:57 +0500 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=BA=D1=80=D1=8B=D1=82=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B7=D0=B0=D0=B4=D0=BE=D0=BB=D0=B6=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B8=20=D0=BF=D0=BE=20=D1=80=D0=BE=D0=B4?= =?UTF-8?q?=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=D1=81=D0=BA=D0=BE=D0=B9=20=D0=BF?= =?UTF-8?q?=D0=BB=D0=B0=D1=82=D0=B5=20=D0=BA=D0=B0=D1=81=D1=81=D0=BE=D0=B2?= =?UTF-8?q?=D1=8B=D0=BC=20=D0=BF=D0=BE=D1=81=D1=82=D1=83=D0=BF=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ПС_ВзаиморасчетыПоРодительскойПлате.mdo | 190 ++++ .../src/ChartsOfAccounts/ЕПСБУ/ЕПСБУ.mdo | 18 + .../src/CommonModules/ПС_РаботаСКонтрагентами/Module.bsl | 66 ++ .../ПС_РазборПлатежейПоРодительскойПлате/Module.bsl | 575 +++++++++++ .../ПС_РазборПлатежейПоРодительскойПлате.mdo | 7 + .../src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl | 98 +- .../src/Configuration/Configuration.mdo | 6 + .../Forms/Форма/Form.form | 951 +++++++++++++++++- .../Forms/Форма/Module.bsl | 286 +++++- .../ПС_УправлениеРасчетамиПоРодительскойПлате.mdo | 37 +- .../src/Documents/КассовоеПоступление/ObjectModule.bsl | 130 +++ .../src/Documents/КассовоеПоступление/КассовоеПоступление.mdo | 175 ++++ .../ПС_ПередачаЗадолженностиВЦБ/Forms/ФормаДокумента/Form.form | 305 +++++- .../Forms/ФормаДокумента/Module.bsl | 196 ++++ .../src/Documents/ПС_ПередачаЗадолженностиВЦБ/ObjectModule.bsl | 53 +- .../ПС_ПередачаЗадолженностиВЦБ.mdo | 45 + .../Forms/ФормаДокумента/Form.form | 127 +++ .../Forms/ФормаДокумента/Module.bsl | 25 + .../ПС_ПринятиеЗадолженностиОтУчреждения/ObjectModule.bsl | 80 +- .../ПС_ПринятиеЗадолженностиОтУчреждения.mdo | 50 +- .../ПС_ВидыОперацийПоВзаиморасчетам.mdo | 36 + .../ПС_ОборотнаяВедомостьПоРодительскойПлате/ObjectModule.bsl | 85 ++ .../Templates/ОсновнаяСхема/Template.dcs | 296 ++++++ .../ПС_ОборотнаяВедомостьПоРодительскойПлате.mdo | 22 + 24 files changed, 3627 insertions(+), 232 deletions(-) create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/AccumulationRegisters/ПС_ВзаиморасчетыПоРодительскойПлате/ПС_ВзаиморасчетыПоРодительскойПлате.mdo create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/ChartsOfAccounts/ЕПСБУ/ЕПСБУ.mdo create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/ПС_РазборПлатежейПоРодительскойПлате.mdo create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/ObjectModule.bsl create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/КассовоеПоступление.mdo create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Enums/ПС_ВидыОперацийПоВзаиморасчетам/ПС_ВидыОперацийПоВзаиморасчетам.mdo create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ОборотнаяВедомостьПоРодительскойПлате/ObjectModule.bsl create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ОборотнаяВедомостьПоРодительскойПлате/Templates/ОсновнаяСхема/Template.dcs create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ОборотнаяВедомостьПоРодительскойПлате/ПС_ОборотнаяВедомостьПоРодительскойПлате.mdo diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/AccumulationRegisters/ПС_ВзаиморасчетыПоРодительскойПлате/ПС_ВзаиморасчетыПоРодительскойПлате.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/AccumulationRegisters/ПС_ВзаиморасчетыПоРодительскойПлате/ПС_ВзаиморасчетыПоРодительскойПлате.mdo new file mode 100644 index 0000000..4aa9238 --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/AccumulationRegisters/ПС_ВзаиморасчетыПоРодительскойПлате/ПС_ВзаиморасчетыПоРодительскойПлате.mdo @@ -0,0 +1,190 @@ + + + + + + + + + + + ПС_ВзаиморасчетыПоРодительскойПлате + + ru + Взаиморасчеты по родительской плате + + true + Managed + true + + Сумма + + ru + Сумма + + + Number + + 15 + 2 + + + + + Use + + + ВидОперации + + ru + Вид операции + + + EnumRef.ПС_ВидыОперацийПоВзаиморасчетам + + + + Use + + + ИДСтроки + + ru + ИД строки (квитанции) + + + String + + 25 + + + + + Use + + + ДокументПередачи + + ru + Документ передачи + + + DocumentRef.ПС_ПередачаЗадолженностиВЦБ + + + + Use + + + Организация + + ru + Организация (ЦБ) + + + CatalogRef.Организации + + + + Use + true + + + Учреждение + + ru + Учреждение-отправитель + + + CatalogRef.Контрагенты + + + + Use + true + + + Плательщик + + ru + Плательщик (родитель) + + + CatalogRef.Контрагенты + + + + Use + true + + + Ребенок + + ru + Ребенок + + + CatalogRef.Дети + + + + Use + true + + + Договор + + ru + Договор + + + CatalogRef.Договоры + + + + Use + true + + + ИФО + + ru + ИФО + + + CatalogRef.ИсточникиФинансовогоОбеспечения + + + + Use + true + + + КФО + + ru + КФО + + + EnumRef.КВД + + + + Use + true + + + КПС + + ru + КПС + + + CatalogRef.КлассификационныеПризнакиСчетов + + + + Use + true + + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/ChartsOfAccounts/ЕПСБУ/ЕПСБУ.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/ChartsOfAccounts/ЕПСБУ/ЕПСБУ.mdo new file mode 100644 index 0000000..8cdd8cc --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/ChartsOfAccounts/ЕПСБУ/ЕПСБУ.mdo @@ -0,0 +1,18 @@ + + + + + + + + + + + + ЕПСБУ + Adopted + + Checked + + true + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РаботаСКонтрагентами/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РаботаСКонтрагентами/Module.bsl index 8ad524a..1fca46d 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РаботаСКонтрагентами/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РаботаСКонтрагентами/Module.bsl @@ -103,4 +103,70 @@ КонецФункции +// Поиск организации, соответствующей контрагенту, по ИНН. +// +// Операция, обратная КонтрагентПоОрганизации. В документах начисления и передачи +// учреждение (сад) представлено ссылкой на справочник Организации, а в документах +// принятия, в регистре взаиморасчётов и в отборах пульта управления - ссылкой на +// справочник Контрагенты. Сопоставление выполняется по ИНН. +// +// Параметры: +// Контрагент - CatalogRef.Контрагенты - контрагент, для которого ищем организацию. +// ИмяПоляПодсказки - Строка - имя реквизита для сообщения пользователю. +// +// Возвращаемое значение: +// CatalogRef.Организации - если найдена ровно одна организация с ИНН контрагента. +// Пустая ссылка - в остальных случаях (нет ИНН / нет организации / найдено несколько). +// Причина выводится пользователю. +// +Функция ОрганизацияПоКонтрагенту(Контрагент, ИмяПоляПодсказки = "") Экспорт + + ПустаяОрганизация = Справочники.Организации.ПустаяСсылка(); + Если НЕ ЗначениеЗаполнено(Контрагент) Тогда + Возврат ПустаяОрганизация; + КонецЕсли; + + Подсказка = ?(ПустаяСтрока(ИмяПоляПодсказки), "Организация", + "Поле """ + ИмяПоляПодсказки + """"); + + // Сопоставление выполняем запросом по ИНН: прямое чтение реквизита заимствованного + // справочника Контрагенты в расширении не разбирается анализатором. + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Организации.Ссылка КАК Ссылка + |ИЗ + | Справочник.Организации КАК Организации + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты + | ПО Контрагенты.ИНН = Организации.ИНН + |ГДЕ + | Контрагенты.Ссылка = &Контрагент + | И НЕ Организации.ПометкаУдаления"; + Запрос.УстановитьПараметр("Контрагент", Контрагент); + + Представление = Строка(Контрагент); + + РезультатЗапроса = Запрос.Выполнить(); + Если РезультатЗапроса.Пустой() Тогда + ОбщегоНазначения.СообщитьПользователю( + "Не найдена организация с тем же ИНН, что у контрагента (" + Представление + ").|" + + Подсказка + " не определена - отбор по учреждению не применён."); + Возврат ПустаяОрганизация; + КонецЕсли; + + Выборка = РезультатЗапроса.Выбрать(); + Выборка.Следующий(); + ПервыйНайденный = Выборка.Ссылка; + + Если Выборка.Следующий() Тогда + ОбщегоНазначения.СообщитьПользователю( + "Найдено несколько организаций с тем же ИНН, что у контрагента (" + Представление + ").|" + + Подсказка + " не определена - отбор по учреждению не применён."); + Возврат ПустаяОрганизация; + КонецЕсли; + + Возврат ПервыйНайденный; + +КонецФункции + #КонецОбласти diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl new file mode 100644 index 0000000..7d720e1 --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl @@ -0,0 +1,575 @@ +// ПС_РазборПлатежейПоРодительскойПлате: идентификация ребёнка и его контрагента по назначению платежа +// в строках табличной части "Расшифровка платежа" документа КассовоеПоступление (БГУ 2.0). +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +// Заполняет контрагента, ребёнка, договор, счёт расчётов и КОСГУ назначения платежа +// в строках расшифровки платежа документа с признаком "Родительская плата" +// по тексту назначения платежа (реквизит "Примечание"). +// Уже заполненные значения не перезаписываются, нераспознанные строки остаются пустыми, +// по каждой такой строке выводится диагностическое сообщение. +// +// Параметры: +// ДокументОбъект - ДокументОбъект.КассовоеПоступление - записываемый документ. +// +// Возвращаемое значение: +// Структура - итоги разбора: +// * ВсегоСтрок - Число - количество строк расшифровки платежа; +// * Заполнено - Число - количество строк с заполненным контрагентом; +// * НеРаспознано - Число - количество строк, по которым контрагент не определён. +// +Функция ЗаполнитьКонтрагентовПоНазначениюПлатежа(ДокументОбъект) Экспорт + + Результат = Новый Структура("ВсегоСтрок, Заполнено, НеРаспознано", 0, 0, 0); + Результат.ВсегоСтрок = ДокументОбъект.РасшифровкаПлатежа.Количество(); + + Если НЕ ДокументОбъект.РодительскаяПлата Тогда + Возврат Результат; + КонецЕсли; + + // Первый проход: разбор назначения платежа, без обращения к базе. + РазобранныеСтроки = Новый Массив; + КодыПоиска = Новый Массив; + + Для Каждого СтрокаПлатежа Из ДокументОбъект.РасшифровкаПлатежа Цикл + + Если ЗначениеЗаполнено(СтрокаПлатежа.Ребенок) Тогда + Результат.Заполнено = Результат.Заполнено + 1; + Продолжить; + КонецЕсли; + + ДанныеПлатежа = РазобратьНазначениеПлатежа(СтрокаПлатежа.Примечание); + ДанныеПлатежа.Вставить("СтрокаПлатежа", СтрокаПлатежа); + РазобранныеСтроки.Добавить(ДанныеПлатежа); + + Для Каждого Код Из КодыПоискаРебенка(ДанныеПлатежа.ЛицевойСчет) Цикл + КодыПоиска.Добавить(Код); + КонецЦикла; + + КонецЦикла; + + Если РазобранныеСтроки.Количество() = 0 Тогда + Возврат Результат; + КонецЕсли; + + // Один запрос на весь документ: дети по распознанным лицевым счетам. + ДетиПоСчетам = ДетиПоЛицевымСчетам(КодыПоиска); + + // Второй проход: отбор строк, по которым ребёнок и его контрагент определены однозначно. + СтрокиКЗаполнению = Новый Массив; + Контрагенты = Новый Соответствие; + + Для Каждого ДанныеПлатежа Из РазобранныеСтроки Цикл + + СтрокаПлатежа = ДанныеПлатежа.СтрокаПлатежа; + Ребенок = РебенокПоЛицевомуСчету(ДетиПоСчетам, ДанныеПлатежа.ЛицевойСчет); + + Если Ребенок = Неопределено + Или НЕ ЗначениеЗаполнено(Ребенок.Контрагент) Тогда + Результат.НеРаспознано = Результат.НеРаспознано + 1; + ОбщегоНазначения.СообщитьПользователю( + СтрШаблон("Кассовое поступление %1, строка %2: контрагент не определён - %3.", + Строка(ДокументОбъект.Номер), СтрокаПлатежа.НомерСтроки, + ПричинаНераспознанногоРебенка(ДанныеПлатежа.ЛицевойСчет, Ребенок))); + Продолжить; + КонецЕсли; + + СтрокаКЗаполнению = Новый Структура("СтрокаПлатежа, Ребенок, Контрагент"); + СтрокаКЗаполнению.СтрокаПлатежа = СтрокаПлатежа; + СтрокаКЗаполнению.Ребенок = Ребенок.Ссылка; + СтрокаКЗаполнению.Контрагент = Ребенок.Контрагент; + СтрокиКЗаполнению.Добавить(СтрокаКЗаполнению); + + Контрагенты.Вставить(Ребенок.Контрагент, Истина); + + КонецЦикла; + + Если СтрокиКЗаполнению.Количество() = 0 Тогда + Возврат Результат; + КонецЕсли; + + // Счёт расчётов и КОСГУ родительской платы: типовая загрузка реестров их не определяет, + // а для проводок по счёту 205.31 они обязательны. + СчетРасчетов = ПланыСчетов.ЕПСБУ.НайтиПоКоду("205.31"); + Если НЕ ЗначениеЗаполнено(СчетРасчетов) Тогда + ОбщегоНазначения.СообщитьПользователю( + СтрШаблон("Кассовое поступление %1: в плане счетов ЕПСБУ не найден счёт 205.31 - счёт расчётов не заполнен.", + Строка(ДокументОбъект.Номер))); + КонецЕсли; + + КОСГУНазначениеПлатежа = Справочники.КОСГУ.НайтиПоКоду("131"); + Если НЕ ЗначениеЗаполнено(КОСГУНазначениеПлатежа) Тогда + ОбщегоНазначения.СообщитьПользователю( + СтрШаблон("Кассовое поступление %1: в справочнике КОСГУ не найден код 131 - КОСГУ назначения платежа не заполнен.", + Строка(ДокументОбъект.Номер))); + КонецЕсли; + + // Договоры определяются одним запросом сразу по всем контрагентам документа. + Договоры = ДоговорыПоКонтрагентам(Контрагенты, ДокументОбъект, СчетРасчетов); + + Результат.Заполнено = Результат.Заполнено + ЗаполнитьСтрокиРасшифровки( + СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа); + + Возврат Результат; + +КонецФункции + +// Разбирает текст назначения платежа и определяет лицевой счёт ребёнка. +// Обращения к базе здесь нет: поиск ребёнка выполняет вызывающий код одним запросом на весь документ. +// +// Параметры: +// ТекстНазначения - Строка - назначение платежа (реквизит "Примечание" строки расшифровки платежа). +// +// Возвращаемое значение: +// Структура - результат разбора: +// * ЛицевойСчет - Строка - распознанный лицевой счёт ребёнка; пустая строка, если не распознан; +// * ФИО - Строка - ФИО ребёнка из назначения платежа; пустая строка, если не распознано. +// +Функция РазобратьНазначениеПлатежа(ТекстНазначения) Экспорт + + Результат = Новый Структура; + Результат.Вставить("ЛицевойСчет", ""); + Результат.Вставить("ФИО", ""); + + Если НЕ ЗначениеЗаполнено(ТекстНазначения) Тогда + Возврат Результат; + КонецЕсли; + + Результат.ЛицевойСчет = ОпределитьЛицевойСчетРебенка(ТекстНазначения); + Результат.ФИО = ОпределитьФИОИзНазначения(ТекстНазначения); + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Определяет договоры для контрагентов документа. +// +// Параметры: +// Контрагенты - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты (дети) документа. +// ДокументОбъект - ДокументОбъект.КассовоеПоступление - документ, по дате и организации которого ищутся остатки. +// СчетРасчетов - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы (205.31). +// +// Возвращаемое значение: +// Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - договоры по контрагентам, +// определённые однозначно. +// +Функция ДоговорыПоКонтрагентам(Контрагенты, ДокументОбъект, СчетРасчетов) + + КонтрагентыМассив = Новый Массив; + Для Каждого Элемент Из Контрагенты Цикл + КонтрагентыМассив.Добавить(Элемент.Ключ); + КонецЦикла; + + Результат = Новый Соответствие; + Неоднозначные = Новый Соответствие; + КоличествоДоговоров = Новый Соответствие; + + // 1. Договоры из остатков по счёту 205.31 - приоритетный источник. + ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ДокументОбъект, СчетРасчетов, Результат, Неоднозначные); + + // 2. Для остальных контрагентов - единственный договор, отобранный по реквизиту "Контрагент". + ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, Результат, Неоднозначные, КоличествоДоговоров); + + // 3. Диагностика по контрагентам, для которых договор определить не удалось. + Для Каждого Элемент Из Контрагенты Цикл + + Если Результат[Элемент.Ключ] <> Неопределено Тогда + Продолжить; + КонецЕсли; + + Если Неоднозначные[Элемент.Ключ] <> Неопределено Тогда + ОбщегоНазначения.СообщитьПользователю( + СтрШаблон("Кассовое поступление %1: по контрагенту %2 в остатках счёта 205.31 найдено несколько договоров, договор не заполнен.", + Строка(ДокументОбъект.Номер), Строка(Элемент.Ключ))); + Продолжить; + КонецЕсли; + + Количество = КоличествоДоговоров[Элемент.Ключ]; + Если Количество = Неопределено Тогда + Количество = 0; + КонецЕсли; + + ОбщегоНазначения.СообщитьПользователю( + СтрШаблон("Кассовое поступление %1: по контрагенту %2 найдено договоров - %3, договор не заполнен.", + Строка(ДокументОбъект.Номер), Строка(Элемент.Ключ), Количество)); + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Дополняет результат договорами, найденными в остатках по счёту 205.31. +// +// Параметры: +// КонтрагентыМассив - Массив из СправочникСсылка.Контрагенты - контрагенты (дети), по которым ищутся остатки. +// ДокументОбъект - ДокументОбъект.КассовоеПоступление - документ, по дате и организации которого ищутся остатки. +// Счет20531 - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы (205.31). +// Результат - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - дополняется найденными договорами. +// Неоднозначные - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты с несколькими договорами в остатках. +// +Процедура ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ДокументОбъект, Счет20531, Результат, Неоднозначные) + + Если НЕ ЗначениеЗаполнено(Счет20531) Тогда + Возврат; + КонецЕсли; + + // Порядок субконто берём из настройки самого счёта: субконто1 - контрагенты, субконто2 - договоры. + ВидыСубконто = Новый Массив; + Для Каждого СтрокаСубконто Из Счет20531.ВидыСубконто Цикл + ВидыСубконто.Добавить(СтрокаСубконто.ВидСубконто); + КонецЦикла; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ РАЗЛИЧНЫЕ + | Остатки.Субконто1 КАК Контрагент, + | Остатки.Субконто2 КАК Договор + |ИЗ + | РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Остатки( + | &Дата, + | Счет В ИЕРАРХИИ (&Счет20531), + | &ВидыСубконто, + | Организация = &Организация И Субконто1 В (&Контрагенты)) КАК Остатки + |ГДЕ + | Остатки.СуммаОстаток <> 0"; + Запрос.УстановитьПараметр("Дата", ДокументОбъект.Дата); + Запрос.УстановитьПараметр("Счет20531", Счет20531); + Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто); + Запрос.УстановитьПараметр("Контрагенты", КонтрагентыМассив); + Запрос.УстановитьПараметр("Организация", ДокументОбъект.Организация); + + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + + Если НЕ ЗначениеЗаполнено(Выборка.Договор) Тогда + Продолжить; + КонецЕсли; + + НайденныйДоговор = Результат[Выборка.Контрагент]; + Если НайденныйДоговор = Неопределено Тогда + Результат.Вставить(Выборка.Контрагент, Выборка.Договор); + ИначеЕсли НайденныйДоговор <> Выборка.Договор Тогда + Неоднозначные.Вставить(Выборка.Контрагент, Истина); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +// Дополняет результат единственным договором, отобранным по реквизиту "Контрагент". +// +// Параметры: +// КонтрагентыМассив - Массив из СправочникСсылка.Контрагенты - контрагенты (дети), по которым отбираются договоры. +// Результат - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - дополняется найденными договорами. +// Неоднозначные - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты с неоднозначным договором. +// КоличествоДоговоров - Соответствие из СправочникСсылка.Контрагенты, Число - количество найденных договоров. +// +Процедура ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, Результат, Неоднозначные, КоличествоДоговоров) + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Договоры.Контрагент КАК Контрагент, + | Договоры.Ссылка КАК Договор + |ИЗ + | Справочник.Договоры КАК Договоры + |ГДЕ + | НЕ Договоры.ПометкаУдаления + | И Договоры.Контрагент В (&Контрагенты) + |УПОРЯДОЧИТЬ ПО + | Договоры.Контрагент"; + Запрос.УстановитьПараметр("Контрагенты", КонтрагентыМассив); + + Найденные = Новый Соответствие; + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + + ДоговорыКонтрагента = Найденные[Выборка.Контрагент]; + Если ДоговорыКонтрагента = Неопределено Тогда + ДоговорыКонтрагента = Новый Массив; + Найденные.Вставить(Выборка.Контрагент, ДоговорыКонтрагента); + КонецЕсли; + ДоговорыКонтрагента.Добавить(Выборка.Договор); + + КонецЦикла; + + Для Каждого Элемент Из Найденные Цикл + + КоличествоДоговоров.Вставить(Элемент.Ключ, Элемент.Значение.Количество()); + + Если Элемент.Значение.Количество() = 1 + И Результат[Элемент.Ключ] = Неопределено + И Неоднозначные[Элемент.Ключ] = Неопределено Тогда + Результат.Вставить(Элемент.Ключ, Элемент.Значение[0]); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +// Заполняет реквизиты строк расшифровки платежа по результатам разбора назначения. +// КОСГУ "000", проставленный типовой загрузкой реестров, заменяется принудительно; +// остальные заполненные значения не перезаписываются. +// +// Параметры: +// СтрокиКЗаполнению - Массив из Структура - строки, по которым определён ребёнок и контрагент. +// Договоры - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - +// договоры, определённые по контрагентам однозначно. +// СчетРасчетов - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы. +// КОСГУНазначениеПлатежа - СправочникСсылка.КОСГУ - КОСГУ назначения платежа. +// +// Возвращаемое значение: +// Число - количество заполненных строк расшифровки платежа. +// +Функция ЗаполнитьСтрокиРасшифровки(СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа) + + // Типовая загрузка реестров прописывает в КОСГУ назначения платежа код "000" - + // для родительской платы его нужно заменить принудительно. + КОСГУНеУказан = Справочники.КОСГУ.НайтиПоКоду("000"); + + Заполнено = 0; + + Для Каждого СтрокаКЗаполнению Из СтрокиКЗаполнению Цикл + + СтрокаРасшифровки = СтрокаКЗаполнению.СтрокаПлатежа; + + СтрокаРасшифровки.Ребенок = СтрокаКЗаполнению.Ребенок; + СтрокаРасшифровки.Контрагент = СтрокаКЗаполнению.Контрагент; + + Договор = Договоры[СтрокаКЗаполнению.Контрагент]; + Если Договор = Неопределено Тогда + Договор = Справочники.Договоры.ПустаяСсылка(); + КонецЕсли; + СтрокаРасшифровки.Договор = Договор; + + Если НЕ ЗначениеЗаполнено(СтрокаРасшифровки.СчетРасчетов) И ЗначениеЗаполнено(СчетРасчетов) Тогда + СтрокаРасшифровки.СчетРасчетов = СчетРасчетов; + КонецЕсли; + + КОСГУСтроки = СтрокаРасшифровки.КОСГУНазначениеПлатежа; + КОСГУПустой = НЕ ЗначениеЗаполнено(КОСГУСтроки) + Или (ЗначениеЗаполнено(КОСГУНеУказан) И КОСГУСтроки = КОСГУНеУказан); + Если ЗначениеЗаполнено(КОСГУНазначениеПлатежа) И КОСГУПустой Тогда + СтрокаРасшифровки.КОСГУНазначениеПлатежа = КОСГУНазначениеПлатежа; + КонецЕсли; + + Заполнено = Заполнено + 1; + + КонецЦикла; + + Возврат Заполнено; + +КонецФункции + +// Определяет лицевой счёт ребёнка по тексту назначения платежа. +// Лицевой счёт идёт после последнего вхождения "л/с" и может начинаться с буквы "Х" или "Г". +// +// Параметры: +// ТекстНазначения - Строка - назначение платежа. +// +// Возвращаемое значение: +// Строка - лицевой счёт ребёнка (возможно, с буквой "Х"/"Г" на первом месте); пустая строка, если не найден. +// +Функция ОпределитьЛицевойСчетРебенка(ТекстНазначения) + + // Латинские "X"/"x" приводим к кириллической "Х": в реестрах встречаются оба варианта. + Текст = СтрЗаменить(ВРЕГ(ТекстНазначения), "X", "Х"); + + Позиция = СтрНайти(Текст, "Л/С", НаправлениеПоиска.СКонца); + ДлинаПрефикса = 3; + Если Позиция = 0 Тогда + Позиция = СтрНайти(Текст, "ЛС", НаправлениеПоиска.СКонца); + ДлинаПрефикса = 2; + КонецЕсли; + Если Позиция = 0 Тогда + Возврат ""; + КонецЕсли; + + Фрагмент = СокрЛП(Сред(Текст, Позиция + ДлинаПрефикса, 20)); + + Буква = ""; + Если Лев(Фрагмент, 1) = "Х" Или Лев(Фрагмент, 1) = "Г" Тогда + Буква = Лев(Фрагмент, 1); + Фрагмент = Сред(Фрагмент, 2); + КонецЕсли; + + Цифры = ""; + Для Индекс = 1 По СтрДлина(Фрагмент) Цикл + Символ = Сред(Фрагмент, Индекс, 1); + Если НЕ СимволЯвляетсяЦифрой(Символ) Тогда + Прервать; + КонецЕсли; + Цифры = Цифры + Символ; + КонецЦикла; + + Возврат Буква + Цифры; + +КонецФункции + +// Возвращает ФИО ребёнка из текста назначения платежа (4-я часть, разделитель - запятая). +// Для поиска используется пара "Фамилия Имя", как в реестрах. +// +// Параметры: +// ТекстНазначения - Строка - назначение платежа. +// +// Возвращаемое значение: +// Строка - ФИО ребёнка; пустая строка, если часть не найдена. +// +Функция ОпределитьФИОИзНазначения(ТекстНазначения) + + Части = СтрРазделить(ТекстНазначения, ","); + Если Части.Количество() < 4 Тогда + Возврат ""; + КонецЕсли; + + ФИО = СокрЛП(Части[3]); + + Слова = СтрРазделить(ФИО, " ", Ложь); + Если Слова.Количество() >= 2 Тогда + Возврат Слова[0] + " " + Слова[1]; + КонецЕсли; + + Возврат ФИО; + +КонецФункции + +// Возвращает варианты лицевого счёта для поиска в справочнике детей. +// В справочнике код может храниться как с буквой "Х"/"Г", так и без неё. +// +// Параметры: +// ЛицевойСчет - Строка - лицевой счёт, распознанный в назначении платежа. +// +// Возвращаемое значение: +// Массив из Строка - варианты кода; пустой массив, если лицевой счёт не распознан. +// +Функция КодыПоискаРебенка(ЛицевойСчет) + + Коды = Новый Массив; + Если НЕ ЗначениеЗаполнено(ЛицевойСчет) Тогда + Возврат Коды; + КонецЕсли; + + // Код справочника хранится дополненным пробелами до длины 15, поэтому нормализуем обе стороны сравнения. + ЛицевойСчет = СокрЛП(ЛицевойСчет); + Коды.Добавить(ЛицевойСчет); + Если Лев(ЛицевойСчет, 1) = "Х" Или Лев(ЛицевойСчет, 1) = "Г" Тогда + Коды.Добавить(СокрЛП(Сред(ЛицевойСчет, 2))); + КонецЕсли; + + Возврат Коды; + +КонецФункции + +// Загружает детей по лицевым счетам одним запросом. +// Лицевой счёт уникален для ЦБ и всех подшефных учреждений, поэтому отбор по организации не применяется. +// +// Параметры: +// Коды - Массив из Строка - варианты лицевых счетов, распознанные в строках документа. +// +// Возвращаемое значение: +// Соответствие из Строка, Структура - найденные дети по коду: Ссылка, Наименование, Контрагент. +// +Функция ДетиПоЛицевымСчетам(Коды) + + Результат = Новый Соответствие; + Если Коды.Количество() = 0 Тогда + Возврат Результат; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Дети.Код КАК Код, + | Дети.Ссылка КАК Ссылка, + | Дети.Наименование КАК Наименование, + | Дети.Контрагент КАК Контрагент + |ИЗ + | Справочник.Дети КАК Дети + |ГДЕ + | НЕ Дети.ПометкаУдаления + | И Дети.Код В (&Коды)"; + Запрос.УстановитьПараметр("Коды", Коды); + + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + Результат.Вставить(СокрЛП(Выборка.Код), Новый Структура("Ссылка, Наименование, Контрагент", + Выборка.Ссылка, Выборка.Наименование, Выборка.Контрагент)); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Находит ребёнка в заранее загруженном соответствии по распознанному лицевому счёту. +// +// Параметры: +// ДетиПоСчетам - Соответствие из Строка, Структура - дети, загруженные по лицевым счетам документа. +// ЛицевойСчет - Строка - лицевой счёт, распознанный в назначении платежа. +// +// Возвращаемое значение: +// Структура, Неопределено - Ссылка, Наименование, Контрагент найденного ребёнка; +// Неопределено, если ребёнок не найден. +// +Функция РебенокПоЛицевомуСчету(ДетиПоСчетам, ЛицевойСчет) + + Для Каждого Код Из КодыПоискаРебенка(ЛицевойСчет) Цикл + Ребенок = ДетиПоСчетам[Код]; + Если Ребенок <> Неопределено Тогда + Возврат Ребенок; + КонецЕсли; + КонецЦикла; + + Возврат Неопределено; + +КонецФункции + +// Формирует причину, по которой контрагент в строке не определён. +// +// Параметры: +// ЛицевойСчет - Строка - распознанный лицевой счёт ребёнка. +// Ребенок - Структура, Неопределено - найденный ребёнок (если найден, но без контрагента). +// +// Возвращаемое значение: +// Строка - текст причины. +// +Функция ПричинаНераспознанногоРебенка(ЛицевойСчет, Ребенок) + + Если Ребенок <> Неопределено Тогда + Возврат СтрШаблон("у ребёнка %1 не заполнен контрагент", Ребенок.Наименование); + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(ЛицевойСчет) Тогда + Возврат "не удалось определить лицевой счёт ребёнка"; + КонецЕсли; + + Возврат СтрШаблон("не найден ребёнок с лицевым счётом %1", ЛицевойСчет); + +КонецФункции + +// Определяет, является ли символ цифрой. +// +// Параметры: +// Символ - Строка - проверяемый символ. +// +// Возвращаемое значение: +// Булево - Истина, если символ является цифрой. +// +Функция СимволЯвляетсяЦифрой(Символ) + + Если НЕ ЗначениеЗаполнено(Символ) Тогда + Возврат Ложь; + КонецЕсли; + + Возврат СтрНайти("0123456789", Символ) > 0; + +КонецФункции + +#КонецОбласти + +#КонецЕсли diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/ПС_РазборПлатежейПоРодительскойПлате.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/ПС_РазборПлатежейПоРодительскойПлате.mdo new file mode 100644 index 0000000..325dbec --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/ПС_РазборПлатежейПоРодительскойПлате.mdo @@ -0,0 +1,7 @@ + + + ПС_РазборПлатежейПоРодительскойПлате + true + true + true + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl index 6397413..46b786d 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl @@ -57,55 +57,37 @@ КонецФункции -// Возвращает КЭК, определяющий экономический смысл операции по счёту 304.04 -// ("Внутриведомственные расчеты"): для доходной операции это КЭК счёта 401.10 -// проводок документа-основания. Если проводок по 401.10 в основании нет -// (например, основание - документ передачи задолженности), берётся КЭК счёта 304.04. -// Автоматически такой КЭК не определяется - соответствующих сопоставлений в справочниках нет. -// -// Параметры: -// ДокументИсточник - ДокументСсылка.НачислениеРодительскойПлаты, ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ - проведённый документ, проводки которого используются как источник данных. +// Возвращает счёт, корреспондирующий со счётом расчётов по доходам (205.31), +// по умолчанию: 304.04 (внутриведомственные расчёты). // // Возвращаемое значение: -// СправочникСсылка.КОСГУ - КЭК счёта 401.10 (или 304.04) проводок документа-источника; пустая ссылка, если проводок нет. +// ПланСчетовСсылка.ЕПСБУ - счёт по умолчанию; пустая ссылка, если счёт не найден в плане счетов. // -Функция КЭКПоЭкономическомуСмыслу(ДокументИсточник) Экспорт +Функция СчетКорреспондентПоУмолчанию() Экспорт - Если НЕ ЗначениеЗаполнено(ДокументИсточник) Тогда + Счет = ПланыСчетов.ЕПСБУ.НайтиПоКоду("304.04"); + Если Счет = Неопределено Тогда + Возврат ПланыСчетов.ЕПСБУ.ПустаяСсылка(); + КонецЕсли; + + Возврат Счет; + +КонецФункции + +// Возвращает КЭК корреспондирующего счёта по умолчанию: 131 +// (доходы от оказания платных услуг). Значение редактируется пользователем в документе. +// +// Возвращаемое значение: +// СправочникСсылка.КОСГУ - КЭК по умолчанию; пустая ссылка, если КЭК не найден. +// +Функция КЭККорреспондентПоУмолчанию() Экспорт + + КЭК = Справочники.КОСГУ.НайтиПоКоду("131"); + Если КЭК = Неопределено Тогда Возврат Справочники.КОСГУ.ПустаяСсылка(); КонецЕсли; - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ ПЕРВЫЕ 1 - | ВЫБОР - | КОГДА Проводки.СчетДт.Код = ""401.10"" ИЛИ Проводки.СчетКт.Код = ""401.10"" - | ТОГДА 0 - | ИНАЧЕ 1 - | КОНЕЦ КАК Приоритет, - | ВЫБОР - | КОГДА Проводки.СчетДт.Код В (""401.10"", ""304.04"") - | ТОГДА Проводки.КЭКДт - | ИНАЧЕ Проводки.КЭККт - | КОНЕЦ КАК КЭК - |ИЗ - | РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ДвиженияССубконто КАК Проводки - |ГДЕ - | Проводки.Регистратор = &ДокументИсточник - | И (Проводки.СчетДт.Код В (""401.10"", ""304.04"") - | ИЛИ Проводки.СчетКт.Код В (""401.10"", ""304.04"")) - | - |УПОРЯДОЧИТЬ ПО - | Приоритет, - | Проводки.НомерСтроки"; - Запрос.УстановитьПараметр("ДокументИсточник", ДокументИсточник); - - Выборка = Запрос.Выполнить().Выбрать(); - Если НЕ Выборка.Следующий() Тогда - Возврат Справочники.КОСГУ.ПустаяСсылка(); - КонецЕсли; - - Возврат Выборка.КЭК; + Возврат КЭК; КонецФункции @@ -120,15 +102,23 @@ // ДокументСсылка - ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ, ДокументСсылка.ПС_ПринятиеЗадолженностиОтУчреждения - печатаемый документ. // // Возвращаемое значение: -// ТабличныйДокумент - печатная форма; пустой табличный документ, если документ не проведён или макет не найден. +// ТабличныйДокумент - печатная форма; пустой табличный документ, если документ не записан, не проведён, нет проводок или не найден макет. // Функция ПечатьИзвещения0504805(ДокументСсылка) Экспорт ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.АвтоМасштаб = Истина; + Если НЕ ЗначениеЗаполнено(ДокументСсылка) Тогда + ОбщегоНазначения.СообщитьПользователю( + "Печатная форма извещения не сформирована: документ не записан в базу. Запишите документ и повторите печать."); + Возврат ТабличныйДокумент; + КонецЕсли; + ДокументОбъект = ДокументСсылка.ПолучитьОбъект(); Если ДокументОбъект = Неопределено Тогда + ОбщегоНазначения.СообщитьПользователю( + "Печатная форма извещения не сформирована: не удалось прочитать документ."); Возврат ТабличныйДокумент; КонецЕсли; @@ -152,7 +142,24 @@ + ". Основание: " + Строка(ДокументОбъект.ДокументПередачи) + "."; КонецЕсли; - Если Макет = Неопределено ИЛИ НЕ ДокументОбъект.Проведен Тогда + Если Макет = Неопределено Тогда + ОбщегоНазначения.СообщитьПользователю( + "Печатная форма извещения не сформирована: в документе не найден макет печатной формы."); + Возврат ТабличныйДокумент; + КонецЕсли; + + Если НЕ ДокументОбъект.Проведен Тогда + ОбщегоНазначения.СообщитьПользователю( + "Печатная форма извещения формируется по проводкам документа, поэтому печатается" + + " только проведённый документ. Проведите документ и повторите печать."); + Возврат ТабличныйДокумент; + КонецЕсли; + + Проводки = ПроводкиИзвещения(ДокументСсылка); + Если Проводки.Количество() = 0 Тогда + ОбщегоНазначения.СообщитьПользователю( + "По документу не найдено проводок в регистре бухгалтерии - печатная форма" + + " извещения не сформирована."); Возврат ТабличныйДокумент; КонецЕсли; @@ -170,7 +177,6 @@ ТабличныйДокумент.Вывести(Макет.ПолучитьОбласть("Шапка")); - Проводки = ПроводкиИзвещения(ДокументСсылка); ИтогоСумма = 0; Для Каждого Проводка Из Проводки Цикл @@ -197,7 +203,7 @@ ЗаполнитьПодписиСтороны(ОбластьПодвал.Параметры, СторонаПечати, ДокументОбъект); ТабличныйДокумент.Вывести(ОбластьПодвал); - УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, 1, Новый Соответствие, ДокументСсылка); + УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, 1, Новый СписокЗначений, ДокументСсылка); Возврат ТабличныйДокумент; diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo index a2b6c66..78973e8 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo @@ -48,6 +48,7 @@ Role.БазовыеПраваБГУ CommonModule.ПС_РаботаСКонтрагентами CommonModule.ПС_УчетРодительскойПлаты + CommonModule.ПС_РазборПлатежейПоРодительскойПлате CommonForm.УстановкаСтатусаПлатежноРасчетногоДокумента Catalog.Контрагенты Catalog.Договоры @@ -64,11 +65,16 @@ Document.НачислениеРодительскойПлаты Document.ПС_ПередачаЗадолженностиВЦБ Document.ПС_ПринятиеЗадолженностиОтУчреждения + Document.КассовоеПоступление Enum.КВД + Enum.ПС_ВидыОперацийПоВзаиморасчетам + Report.ПС_ОборотнаяВедомостьПоРодительскойПлате DataProcessor.ПС_УправлениеРасчетамиПоРодительскойПлате InformationRegister.ПлательщикиПоУслугамДДУ InformationRegister.ФИОФизическихЛиц InformationRegister.ДокументыФизическихЛиц AccumulationRegister.ТабельУчетаПосещаемостиДетей + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате + ChartOfAccounts.ЕПСБУ AccountingRegister.ЖурналПроводокЕПСБУ diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form index 25bb2b4..bbfeaf5 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form @@ -1,5 +1,9 @@ + + <key>ru</key> + <value>Управление расчетами по родительской плате</value> + ГруппаФильтры 9 @@ -53,7 +57,7 @@ 14 <key>ru</key> - <value>Организация</value> + <value>Организация (ЦБ)</value> true true @@ -139,11 +143,11 @@ - ПолеЦБ - 20 + ПолеУчреждение + 305 <key>ru</key> - <value>ЦБ</value> + <value>Учреждение (сад)</value> true true @@ -151,11 +155,11 @@ true - Объект.ЦБ + Объект.Учреждение - ПолеЦБРасширеннаяПодсказка - 22 + ПолеУчреждениеРасширеннаяПодсказка + 307 Label true true @@ -164,8 +168,8 @@ - ПолеЦБКонтекстноеМеню - 21 + ПолеУчреждениеКонтекстноеМеню + 306 true InputField @@ -214,6 +218,33 @@ UserCmds Auto + + ОборотнаяВедомость + 308 + true + true + + true + + + ОборотнаяВедомостьРасширеннаяПодсказка + 309 + Label + true + true + + Left + + + UsualButton + Form.Command.ОборотнаяВедомость + Normal + Auto + true + true + UserCmds + Auto + true true @@ -657,6 +688,43 @@ Normal + + ДокументыПринятияПередачаСальдо + 313 + + <key>ru</key> + <value>Начальное сальдо</value> + + true + true + + true + + + ДокументыПринятия.ПередачаСальдо + + + ТаблицаДокументыПринятияДокументыПринятияПередачаСальдоРасширеннаяПодсказка + 315 + Label + true + true + + Left + + + + ТаблицаДокументыПринятияДокументыПринятияПередачаСальдоКонтекстноеМеню + 314 + true + + CheckBoxField + Auto + true + Left + true + + ТаблицаДокументыПринятияКоманднаяПанель 105 @@ -1182,6 +1250,43 @@ true + + ДокументыПередачиПередачаСальдо + 310 + + <key>ru</key> + <value>Начальное сальдо</value> + + true + true + + true + + + ДокументыПередачи.ПередачаСальдо + + + ТаблицаДокументыПередачиДокументыПередачиПередачаСальдоРасширеннаяПодсказка + 312 + Label + true + true + + Left + + + + ТаблицаДокументыПередачиДокументыПередачиПередачаСальдоКонтекстноеМеню + 311 + true + + CheckBoxField + Auto + true + Left + true + + ТаблицаДокументыПередачиКоманднаяПанель 62 @@ -2414,6 +2519,47 @@ Normal + + ТаблицаОстатковВыводТаблицаОстатковВывод6 + 58 + true + true + + true + + + ТаблицаОстатков.Счет + + + ТаблицаОстатковВыводТаблицаОстатковВывод6РасширеннаяПодсказка + 60 + Label + true + true + + Left + + + + ТаблицаОстатковВыводТаблицаОстатковВывод6КонтекстноеМеню + 59 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + ТаблицаОстатковВыводТаблицаОстатковВывод2 46 @@ -2578,47 +2724,6 @@ Normal - - ТаблицаОстатковВыводТаблицаОстатковВывод6 - 58 - true - true - - true - - - ТаблицаОстатков.Счет - - - ТаблицаОстатковВыводТаблицаОстатковВывод6РасширеннаяПодсказка - 60 - Label - true - true - - Left - - - - ТаблицаОстатковВыводТаблицаОстатковВывод6КонтекстноеМеню - 59 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - ТаблицаОстатковВыводКоманднаяПанель 28 @@ -2763,6 +2868,518 @@ auto + + СтраницаКассовыеПоступления + 316 + + ТаблицаКассовыеПоступления + 318 + true + true + + true + + + КассовыеПоступления + + None + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления + 331 + true + true + + true + + + КассовыеПоступления.Ссылка + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияРасширеннаяПодсказка + 333 + Label + true + true + + Left + + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияКонтекстноеМеню + 332 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления1 + 334 + true + true + + true + + + КассовыеПоступления.Дата + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления1РасширеннаяПодсказка + 336 + Label + true + true + + Left + + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления1КонтекстноеМеню + 335 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления2 + 337 + true + true + + true + + + КассовыеПоступления.Номер + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления2РасширеннаяПодсказка + 339 + Label + true + true + + Left + + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления2КонтекстноеМеню + 338 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления3 + 340 + true + true + + true + + + КассовыеПоступления.Организация + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления3РасширеннаяПодсказка + 342 + Label + true + true + + Left + + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления3КонтекстноеМеню + 341 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления4 + 343 + true + true + + true + + + КассовыеПоступления.СуммаДокумента + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления4РасширеннаяПодсказка + 345 + Label + true + true + + Left + + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления4КонтекстноеМеню + 344 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления5 + 346 + true + true + + true + + + КассовыеПоступления.Проведен + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления5РасширеннаяПодсказка + 348 + Label + true + true + + Left + + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления5КонтекстноеМеню + 347 + true + + CheckBoxField + Auto + true + Left + true + + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления6 + 349 + true + true + + true + + + КассовыеПоступления.ПометкаУдаления + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления6РасширеннаяПодсказка + 351 + Label + true + true + + Left + + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления6КонтекстноеМеню + 350 + true + + CheckBoxField + Auto + true + Left + true + + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления7 + 352 + true + true + + true + + + КассовыеПоступления.СтрокВсего + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления7РасширеннаяПодсказка + 354 + Label + true + true + + Left + + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления7КонтекстноеМеню + 353 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления8 + 355 + true + true + + true + + + КассовыеПоступления.СтрокНеРаспознано + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления8РасширеннаяПодсказка + 357 + Label + true + true + + Left + + + + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления8КонтекстноеМеню + 356 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаКассовыеПоступленияКоманднаяПанель + 319 + Left + true + + + ТаблицаКассовыеПоступленияСтрокаПоиска + 322 + + ТаблицаКассовыеПоступленияСтрокаПоискаРасширеннаяПодсказка + 324 + Label + true + true + + Left + + + + ТаблицаКассовыеПоступленияСтрокаПоискаКонтекстноеМеню + 323 + true + + ТаблицаКассовыеПоступления + + true + + + + ТаблицаКассовыеПоступленияСостояниеПросмотра + 328 + + ТаблицаКассовыеПоступленияСостояниеПросмотраРасширеннаяПодсказка + 330 + Label + true + true + + Left + + + + ТаблицаКассовыеПоступленияСостояниеПросмотраКонтекстноеМеню + 329 + true + + ViewStatusAddition + ТаблицаКассовыеПоступления + + true + + + + ТаблицаКассовыеПоступленияУправлениеПоиском + 325 + + ТаблицаКассовыеПоступленияУправлениеПоискомРасширеннаяПодсказка + 327 + Label + true + true + + Left + + + + ТаблицаКассовыеПоступленияУправлениеПоискомКонтекстноеМеню + 326 + true + + SearchControlAddition + ТаблицаКассовыеПоступления + + true + + + + ТаблицаКассовыеПоступленияРасширеннаяПодсказка + 321 + Label + true + true + + Left + + + + ТаблицаКассовыеПоступленияКонтекстноеМеню + 320 + true + + true + true + true + true + true + MultiRow + Auto +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + true + Auto + Auto + true + true + true + true + AsFileRef + true + + true +
+ true + true + + true + + + <key>ru</key> + <value>Кассовые поступления</value> + + + СтраницаКассовыеПоступленияРасширеннаяПодсказка + 317 + Label + true + true + + Left + + + Page + + Auto + auto + +
true true @@ -3165,6 +3782,23 @@ true + + ПередачаСальдо + + <key>ru</key> + <value>Начальное сальдо</value> + + 53 + + Boolean + + + true + + + true + + ДокументыПринятия @@ -3365,6 +3999,23 @@ true + + ПередачаСальдо + + <key>ru</key> + <value>Начальное сальдо</value> + + 54 + + Boolean + + + true + + + true + + Начисления @@ -3711,6 +4362,190 @@ + + КассовыеПоступления + + <key>ru</key> + <value>КассовыеПоступления</value> + + 55 + + ValueTable + + + true + + + true + + + Ссылка + + <key>ru</key> + <value>Ссылка</value> + + 56 + + DocumentRef.КассовоеПоступление + + + true + + + true + + + + Дата + + <key>ru</key> + <value>Дата</value> + + 57 + + Date + + + + true + + + true + + + + Номер + + <key>ru</key> + <value>Номер</value> + + 58 + + String + + 50 + + + + true + + + true + + + + Организация + + <key>ru</key> + <value>Организация</value> + + 59 + + CatalogRef.Организации + + + true + + + true + + + + СуммаДокумента + + <key>ru</key> + <value>СуммаДокумента</value> + + 60 + + Number + + 15 + 2 + + + + true + + + true + + + + Проведен + + <key>ru</key> + <value>Проведен</value> + + 61 + + Boolean + + + true + + + true + + + + ПометкаУдаления + + <key>ru</key> + <value>ПометкаУдаления</value> + + 62 + + Boolean + + + true + + + true + + + + СтрокВсего + + <key>ru</key> + <value>Строк всего</value> + + 63 + + Number + + 10 + + + + true + + + true + + + + СтрокНеРаспознано + + <key>ru</key> + <value>Строк не распознано</value> + + 64 + + Number + + 10 + + + + true + + + true + + + Обновить @@ -3727,6 +4562,22 @@ </handler> </action> </formCommands> + <formCommands> + <name>ОборотнаяВедомость</name> + <title> + <key>ru</key> + <value>Оборотная ведомость</value> + + 3 + + true + + + + ОборотнаяВедомость + + + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl index 68806c3..2819528 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl @@ -6,8 +6,14 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - Если НЕ ЗначениеЗаполнено(Объект.Период) Тогда - Объект.Период = НачалоМесяца(ТекущаяДатаСеанса()); + Если НЕ ЗначениеЗаполнено(Объект.Период.ДатаНачала) + ИЛИ НЕ ЗначениеЗаполнено(Объект.Период.ДатаОкончания) Тогда + Объект.Период.Вариант = ВариантСтандартногоПериода.ЭтотМесяц; + КонецЕсли; + + // Пульт ведётся со стороны ЦБ, поэтому по умолчанию подставляем организацию ЦБ. + Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда + Объект.Организация = Константы.ОрганизацияЦентрализованнаяБухгалтерия.Получить(); КонецЕсли; ОбновитьТаблицыНаСервере(); @@ -27,6 +33,41 @@ КонецПроцедуры +// Открывает оборотную ведомость по расчетам по родительской плате. +// +// В отчёт передаются текущие отборы пульта (организация, учреждение, ИФО) и границы периода. +// Значения попадают в отчёт через штатный параметр формы отчёта "Отбор": для полей набора +// данных это отбор, для параметров компоновки (НачалоПериода, КонецПериода) - значения. +// +&НаКлиенте +Процедура ОборотнаяВедомость(Команда) + + Если НЕ ПериодЗаполненНаСервере() Тогда + Возврат; + КонецЕсли; + + Отбор = Новый Структура; + + Если ЗначениеЗаполнено(Объект.Организация) Тогда + Отбор.Вставить("Организация", Объект.Организация); + КонецЕсли; + + Если ЗначениеЗаполнено(Объект.Учреждение) Тогда + Отбор.Вставить("Учреждение", Объект.Учреждение); + КонецЕсли; + + Если ЗначениеЗаполнено(Объект.ИФО) Тогда + Отбор.Вставить("ИФО", Объект.ИФО); + КонецЕсли; + + Отбор.Вставить("НачалоПериода", Объект.Период.ДатаНачала); + Отбор.Вставить("КонецПериода", Объект.Период.ДатаОкончания); + + ПараметрыФормы = Новый Структура("Отбор", Отбор); + ОткрытьФорму("Отчет.ПС_ОборотнаяВедомостьПоРодительскойПлате.Форма", ПараметрыФормы); + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -37,18 +78,65 @@ &НаСервере Процедура ОбновитьТаблицыНаСервере() - ЗаполнитьНачисления(); - ЗаполнитьДокументыПередачи(); + Если НЕ ПериодЗаполненНаСервере() Тогда + ОчиститьТаблицы(); + Возврат; + КонецЕсли; + + // Отборы формы заданы в терминах ЦБ: Организация - это ЦБ (справочник Организации), + // Учреждение - сад (справочник Контрагенты). Документы начисления и передачи хранят + // сад как Организацию, а ЦБ в документе передачи - как Контрагента. Приводим значения + // отбора к типам, которые есть в документах, сопоставлением по ИНН. + ЦБКонтрагент = Неопределено; + Если ЗначениеЗаполнено(Объект.Организация) Тогда + ЦБКонтрагент = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(Объект.Организация, "Организация (ЦБ)"); + Если НЕ ЗначениеЗаполнено(ЦБКонтрагент) Тогда + ОчиститьТаблицы(); + Возврат; + КонецЕсли; + КонецЕсли; + + СадОрганизация = Неопределено; + Если ЗначениеЗаполнено(Объект.Учреждение) Тогда + СадОрганизация = ПС_РаботаСКонтрагентами.ОрганизацияПоКонтрагенту(Объект.Учреждение, "Учреждение (сад)"); + Если НЕ ЗначениеЗаполнено(СадОрганизация) Тогда + ОчиститьТаблицы(); + Возврат; + КонецЕсли; + КонецЕсли; + + ЗаполнитьНачисления(СадОрганизация); + ЗаполнитьДокументыПередачи(ЦБКонтрагент, СадОрганизация); ЗаполнитьДокументыПринятия(); - ЗаполнитьСверку(); + ЗаполнитьСверку(ЦБКонтрагент, СадОрганизация); ЗаполнитьТаблицуОстатков(); + ЗаполнитьКассовыеПоступления(); + +КонецПроцедуры + +// Очищает таблицы формы. Вызывается, когда значения отборов не удалось сопоставить +// с данными документов; причина уже выведена пользователю. +// +&НаСервере +Процедура ОчиститьТаблицы() + + Начисления.Очистить(); + ДокументыПередачи.Очистить(); + ДокументыПринятия.Очистить(); + Сверка.Очистить(); + ТаблицаОстатков.Очистить(); + КассовыеПоступления.Очистить(); КонецПроцедуры // Заполняет таблицу формы Начисления по установленным фильтрам. // +// Параметры: +// СадОрганизация - CatalogRef.Организации, Неопределено - учреждение (сад) в виде +// организации; Неопределено - отбор по учреждению не задан. +// &НаСервере -Процедура ЗаполнитьНачисления() +Процедура ЗаполнитьНачисления(СадОрганизация) Начисления.Очистить(); @@ -60,24 +148,25 @@ | Документы.Номер КАК Номер, | Документы.Организация КАК Организация, | Документы.ИФО КАК ИФО, - | Документы.Период КАК Период, + | Документы.НачалоПериода КАК Период, | Документы.СуммаДокумента КАК СуммаДокумента, | Документы.Проведен КАК Проведен, | Документы.ПометкаУдаления КАК ПометкаУдаления |ИЗ | Документ.НачислениеРодительскойПлаты КАК Документы |ГДЕ - | (&Период = ДАТАВРЕМЯ(1, 1, 1) - | ИЛИ Документы.Период >= &Период) - | И (&Организация = НЕОПРЕДЕЛЕНО - | ИЛИ Документы.Организация = &Организация) + | Документы.НачалоПериода >= &НачалоПериода + | И Документы.НачалоПериода <= &КонецПериода + | И (&Сад = НЕОПРЕДЕЛЕНО + | ИЛИ Документы.Организация = &Сад) | И (&ИФО = НЕОПРЕДЕЛЕНО - | ИЛИ Документы.ИФО = &ИФО) + | ИЛИ Документы.ИФО = &ИФО) |УПОРЯДОЧИТЬ ПО | Документы.Дата УБЫВ"; - Запрос.УстановитьПараметр("Период", Объект.Период); - Запрос.УстановитьПараметр("Организация", ?(ЗначениеЗаполнено(Объект.Организация), Объект.Организация, Неопределено)); + Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала); + Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания); + Запрос.УстановитьПараметр("Сад", СадОрганизация); Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено)); Выборка = Запрос.Выполнить().Выбрать(); @@ -89,8 +178,14 @@ // Заполняет таблицу формы ДокументыПередачи по установленным фильтрам. // +// Параметры: +// ЦБКонтрагент - CatalogRef.Контрагенты, Неопределено - ЦБ в виде контрагента +// (документ передачи хранит ЦБ именно так); Неопределено - отбор не задан. +// СадОрганизация - CatalogRef.Организации, Неопределено - учреждение (сад) в виде +// организации; Неопределено - отбор по учреждению не задан. +// &НаСервере -Процедура ЗаполнитьДокументыПередачи() +Процедура ЗаполнитьДокументыПередачи(ЦБКонтрагент, СадОрганизация) ДокументыПередачи.Очистить(); @@ -105,26 +200,28 @@ | Документы.ИФО КАК ИФО, | Документы.Период КАК Период, | Документы.СуммаДокумента КАК СуммаДокумента, + | Документы.ПередачаСальдо КАК ПередачаСальдо, | Документы.Проведен КАК Проведен, | Документы.ПометкаУдаления КАК ПометкаУдаления |ИЗ | Документ.ПС_ПередачаЗадолженностиВЦБ КАК Документы |ГДЕ - | (&Период = ДАТАВРЕМЯ(1, 1, 1) - | ИЛИ Документы.Период >= &Период) - | И (&Организация = НЕОПРЕДЕЛЕНО - | ИЛИ Документы.Организация = &Организация) - | И (&ИФО = НЕОПРЕДЕЛЕНО - | ИЛИ Документы.ИФО = &ИФО) + | Документы.Период >= &НачалоПериода + | И Документы.Период <= &КонецПериода | И (&ЦБ = НЕОПРЕДЕЛЕНО - | ИЛИ Документы.ЦБ = &ЦБ) + | ИЛИ Документы.ЦБ = &ЦБ) + | И (&Сад = НЕОПРЕДЕЛЕНО + | ИЛИ Документы.Организация = &Сад) + | И (&ИФО = НЕОПРЕДЕЛЕНО + | ИЛИ Документы.ИФО = &ИФО) |УПОРЯДОЧИТЬ ПО | Документы.Дата УБЫВ"; - Запрос.УстановитьПараметр("Период", Объект.Период); - Запрос.УстановитьПараметр("Организация", ?(ЗначениеЗаполнено(Объект.Организация), Объект.Организация, Неопределено)); + Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала); + Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания); + Запрос.УстановитьПараметр("ЦБ", ЦБКонтрагент); + Запрос.УстановитьПараметр("Сад", СадОрганизация); Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено)); - Запрос.УстановитьПараметр("ЦБ", ?(ЗначениеЗаполнено(Объект.ЦБ), Объект.ЦБ, Неопределено)); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл @@ -151,22 +248,27 @@ | Документы.ИФО КАК ИФО, | Документы.Период КАК Период, | Документы.СуммаДокумента КАК СуммаДокумента, + | Документы.ПередачаСальдо КАК ПередачаСальдо, | Документы.Проведен КАК Проведен, | Документы.ПометкаУдаления КАК ПометкаУдаления |ИЗ | Документ.ПС_ПринятиеЗадолженностиОтУчреждения КАК Документы |ГДЕ - | (&Период = ДАТАВРЕМЯ(1, 1, 1) - | ИЛИ Документы.Период >= &Период) + | Документы.Период >= &НачалоПериода + | И Документы.Период <= &КонецПериода | И (&Организация = НЕОПРЕДЕЛЕНО - | ИЛИ Документы.Организация = &Организация) + | ИЛИ Документы.Организация = &Организация) + | И (&Учреждение = НЕОПРЕДЕЛЕНО + | ИЛИ Документы.Учреждение = &Учреждение) | И (&ИФО = НЕОПРЕДЕЛЕНО - | ИЛИ Документы.ИФО = &ИФО) + | ИЛИ Документы.ИФО = &ИФО) |УПОРЯДОЧИТЬ ПО | Документы.Дата УБЫВ"; - Запрос.УстановитьПараметр("Период", Объект.Период); + Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала); + Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания); Запрос.УстановитьПараметр("Организация", ?(ЗначениеЗаполнено(Объект.Организация), Объект.Организация, Неопределено)); + Запрос.УстановитьПараметр("Учреждение", ?(ЗначениеЗаполнено(Объект.Учреждение), Объект.Учреждение, Неопределено)); Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено)); Выборка = Запрос.Выполнить().Выбрать(); @@ -179,8 +281,14 @@ // Заполняет таблицу формы Сверка: сопоставляет суммы наших документов передачи // и принятия. Приёмка связана с передачей через реквизит ДокументПередачи. // +// Параметры: +// ЦБКонтрагент - CatalogRef.Контрагенты, Неопределено - ЦБ в виде контрагента +// (документ передачи хранит ЦБ именно так); Неопределено - отбор не задан. +// СадОрганизация - CatalogRef.Организации, Неопределено - учреждение (сад) в виде +// организации; Неопределено - отбор по учреждению не задан. +// &НаСервере -Процедура ЗаполнитьСверку() +Процедура ЗаполнитьСверку(ЦБКонтрагент, СадОрганизация) Сверка.Очистить(); @@ -215,22 +323,23 @@ | ПО Передача.Ссылка = ВТПринято.ДокументПередачи |ГДЕ | НЕ Передача.ПометкаУдаления - | И (&Период = ДАТАВРЕМЯ(1, 1, 1) - | ИЛИ Передача.Период >= &Период) - | И (&Организация = НЕОПРЕДЕЛЕНО - | ИЛИ Передача.Организация = &Организация) - | И (&ИФО = НЕОПРЕДЕЛЕНО - | ИЛИ Передача.ИФО = &ИФО) + | И Передача.Период >= &НачалоПериода + | И Передача.Период <= &КонецПериода | И (&ЦБ = НЕОПРЕДЕЛЕНО | ИЛИ Передача.ЦБ = &ЦБ) + | И (&Сад = НЕОПРЕДЕЛЕНО + | ИЛИ Передача.Организация = &Сад) + | И (&ИФО = НЕОПРЕДЕЛЕНО + | ИЛИ Передача.ИФО = &ИФО) |УПОРЯДОЧИТЬ ПО | Передача.Период, | Передача.Организация"; - Запрос.УстановитьПараметр("Период", Объект.Период); - Запрос.УстановитьПараметр("Организация", ?(ЗначениеЗаполнено(Объект.Организация), Объект.Организация, Неопределено)); + Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала); + Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания); + Запрос.УстановитьПараметр("ЦБ", ЦБКонтрагент); + Запрос.УстановитьПараметр("Сад", СадОрганизация); Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено)); - Запрос.УстановитьПараметр("ЦБ", ?(ЗначениеЗаполнено(Объект.ЦБ), Объект.ЦБ, Неопределено)); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл @@ -247,8 +356,14 @@ ТаблицаОстатков.Очистить(); - НачалоПериода = Объект.Период; - КонецПериода = КонецМесяца(Объект.Период); + Если ЗначениеЗаполнено(Объект.Учреждение) Тогда + ОбщегоНазначения.СообщитьПользователю( + "Остатки и обороты по счетам ведутся без разреза по учреждению," + + " поэтому отбор по учреждению на эту страницу не влияет."); + КонецЕсли; + + НачалоПериода = Объект.Период.ДатаНачала; + КонецПериода = Объект.Период.ДатаОкончания; Запрос = Новый Запрос; Запрос.Текст = @@ -294,10 +409,19 @@ |СГРУППИРОВАТЬ ПО | ОстаткиИОбороты.ИФО"; + Счет205 = ПланыСчетов.ЕПСБУ.НайтиПоКоду("205.31"); + Счет304 = ПланыСчетов.ЕПСБУ.НайтиПоКоду("304.04"); + Если Счет205 = Неопределено ИЛИ Счет304 = Неопределено Тогда + ОбщегоНазначения.СообщитьПользователю( + "Остатки и обороты не рассчитаны: в плане счетов ЕПСБУ не найден счет" + + " 205.31 и/или 304.04."); + Возврат; + КонецЕсли; + Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода); Запрос.УстановитьПараметр("КонецПериода", КонецПериода); - Запрос.УстановитьПараметр("Счет205", ПланыСчетов.ЕПСБУ.НайтиПоКоду("205.31")); - Запрос.УстановитьПараметр("Счет304", ПланыСчетов.ЕПСБУ.НайтиПоКоду("304.04")); + Запрос.УстановитьПараметр("Счет205", Счет205); + Запрос.УстановитьПараметр("Счет304", Счет304); Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено)); Выборка = Запрос.Выполнить().Выбрать(); @@ -307,4 +431,78 @@ КонецПроцедуры +// Заполняет таблицу формы КассовыеПоступления: документы с признаком "Родительская плата" за период +// по установленным отборам. +// Колонка "Строк не распознано" показывает строки расшифровки платежа, в которых не определён ребёнок, - +// именно они требуют ручного доввода. +// +&НаСервере +Процедура ЗаполнитьКассовыеПоступления() + + КассовыеПоступления.Очистить(); + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Поступления.Ссылка КАК Ссылка, + | Поступления.Дата КАК Дата, + | Поступления.Номер КАК Номер, + | Поступления.Организация КАК Организация, + | Поступления.СуммаДокумента КАК СуммаДокумента, + | Поступления.Проведен КАК Проведен, + | Поступления.ПометкаУдаления КАК ПометкаУдаления, + | КОЛИЧЕСТВО(СтрокиПлатежа.НомерСтроки) КАК СтрокВсего, + | КОЛИЧЕСТВО(СтрокиПлатежа.Ребенок) КАК СтрокРаспознано + |ИЗ + | Документ.КассовоеПоступление КАК Поступления + | ЛЕВОЕ СОЕДИНЕНИЕ Документ.КассовоеПоступление.РасшифровкаПлатежа КАК СтрокиПлатежа + | ПО СтрокиПлатежа.Ссылка = Поступления.Ссылка + |ГДЕ + | Поступления.РодительскаяПлата + | И Поступления.Дата >= &НачалоПериода + | И Поступления.Дата <= &КонецПериода + | И (&Организация = НЕОПРЕДЕЛЕНО + | ИЛИ Поступления.Организация = &Организация) + |СГРУППИРОВАТЬ ПО + | Поступления.Ссылка, + | Поступления.Дата, + | Поступления.Номер, + | Поступления.Организация, + | Поступления.СуммаДокумента, + | Поступления.Проведен, + | Поступления.ПометкаУдаления + |УПОРЯДОЧИТЬ ПО + | Поступления.Дата УБЫВ"; + Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала); + Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания); + Запрос.УстановитьПараметр("Организация", + ?(ЗначениеЗаполнено(Объект.Организация), Объект.Организация, Неопределено)); + + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + НоваяСтрока = КассовыеПоступления.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка); + НоваяСтрока.СтрокНеРаспознано = Выборка.СтрокВсего - Выборка.СтрокРаспознано; + КонецЦикла; + +КонецПроцедуры + +// Проверяет, что в периоде заданы обе границы. Если нет - выводит сообщение пользователю. +// +// Возвращаемое значение: +// Булево - Истина, если период заполнен. +// +&НаСервере +Функция ПериодЗаполненНаСервере() + + Если ЗначениеЗаполнено(Объект.Период.ДатаНачала) И ЗначениеЗаполнено(Объект.Период.ДатаОкончания) Тогда + Возврат Истина; + КонецЕсли; + + ОбщегоНазначения.СообщитьПользователю( + "Не задан период. Укажите период в поле «Период» и повторите действие."); + Возврат Ложь; + +КонецФункции + #КонецОбласти diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/ПС_УправлениеРасчетамиПоРодительскойПлате.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/ПС_УправлениеРасчетамиПоРодительскойПлате.mdo index 2939630..ecc8ba7 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/ПС_УправлениеРасчетамиПоРодительскойПлате.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/ПС_УправлениеРасчетамиПоРодительскойПлате.mdo @@ -7,23 +7,16 @@ ПС_УправлениеРасчетамиПоРодительскойПлате ru - Управление расчётами по родительской плате + Управление расчетами по родительской плате true DataProcessor.ПС_УправлениеРасчетамиПоРодительскойПлате.Form.Форма - - Период - - Date - - Date - - - - - Организация + + ru + Организация (ЦБ) + CatalogRef.Организации @@ -38,11 +31,11 @@ - - ЦБ + + Учреждение ru - ЦБ (получатель) + Учреждение (сад) CatalogRef.Контрагенты @@ -50,11 +43,23 @@ + + Период + + ru + Период + + + StandardPeriod + + + + Форма ru - Управление расчётами по родительской плате + Управление расчетами по родительской плате diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/ObjectModule.bsl new file mode 100644 index 0000000..c9aae48 --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/ObjectModule.bsl @@ -0,0 +1,130 @@ +// Расширение модуля объекта документа КассовоеПоступление: идентификация контрагента (ребёнка) +// по назначению платежа в строках табличной части "Расшифровка платежа". +// Работает только для документов с признаком "Родительская плата": +// автозаполнение контрагента и договора в строках расшифровки. + +#Область ОбработчикиСобытий + +#Если Сервер Тогда + +&После("ПередЗаписью") +Процедура ПС_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ПС_РазборПлатежейПоРодительскойПлате.ЗаполнитьКонтрагентовПоНазначениюПлатежа(ЭтотОбъект); + +КонецПроцедуры + +&После("ОбработкаПроведения") +Процедура ПС_ОбработкаПроведения(Отказ, РежимПроведения) + + Если НЕ РодительскаяПлата Тогда + Возврат; + КонецЕсли; + + // Оплата закрывает задолженность, принятую от учреждения. Переплата допускается - + // она даёт отрицательный (кредитовый) остаток по ребёнку. Строки без определённого + // ребёнка или договора пропускаются: это не оплата родительской платы. + Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Очистить(); + Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина; + + СтрокиОплаты = Новый Массив; + Дети = Новый Массив; + + Для Каждого СтрокаРасшифровки Из РасшифровкаПлатежа Цикл + + Если НЕ ЗначениеЗаполнено(СтрокаРасшифровки.Ребенок) + Или НЕ ЗначениеЗаполнено(СтрокаРасшифровки.Договор) Тогда + Продолжить; + КонецЕсли; + + СтрокиОплаты.Добавить(СтрокаРасшифровки); + Дети.Добавить(СтрокаРасшифровки.Ребенок); + + КонецЦикла; + + Если СтрокиОплаты.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + // Сады детей загружаем одним запросом, контрагента сада ищем по одному разу на сад: + // обращение к базе внутри цикла по строкам недопустимо. + ОрганизацииСадов = ПС_ОрганизацииСадовДетей(Дети); + КонтрагентыСадов = Новый Соответствие; + + Для Каждого СтрокаРасшифровки Из СтрокиОплаты Цикл + + ОрганизацияСада = ОрганизацииСадов[СтрокаРасшифровки.Ребенок]; + + КонтрагентСада = КонтрагентыСадов[ОрганизацияСада]; + Если КонтрагентСада = Неопределено Тогда + КонтрагентСада = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(ОрганизацияСада, "Учреждение"); + КонтрагентыСадов.Вставить(ОрганизацияСада, КонтрагентСада); + КонецЕсли; + + Движение = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьРасход(); + Движение.Период = Дата; + Движение.Организация = Организация; + Движение.Учреждение = КонтрагентСада; + Движение.Плательщик = СтрокаРасшифровки.Контрагент; + Движение.Ребенок = СтрокаРасшифровки.Ребенок; + Движение.Договор = СтрокаРасшифровки.Договор; + Движение.ИФО = ИФО; + Движение.КФО = СтрокаРасшифровки.КФО; + Движение.КПС = СтрокаРасшифровки.КБКНазначениеПлатежа; + Движение.Сумма = СтрокаРасшифровки.Сумма; + Движение.ВидОперации = Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.Оплата; + + КонецЦикла; + +КонецПроцедуры + +#КонецЕсли + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Если Сервер Тогда + +// Возвращает организации детских садов по детям одним запросом. +// +// Параметры: +// Дети - Массив из СправочникСсылка.Дети - дети, по которым нужно определить сад. +// +// Возвращаемое значение: +// Соответствие из СправочникСсылка.Дети, СправочникСсылка.Организации - организация сада по ребёнку. +// +Функция ПС_ОрганизацииСадовДетей(Дети) + + Результат = Новый Соответствие; + Если Дети.Количество() = 0 Тогда + Возврат Результат; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Дети.Ссылка КАК Ссылка, + | Дети.Организация КАК Организация + |ИЗ + | Справочник.Дети КАК Дети + |ГДЕ + | Дети.Ссылка В (&Дети)"; + Запрос.УстановитьПараметр("Дети", Дети); + + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + Результат.Вставить(Выборка.Ссылка, Выборка.Организация); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +#КонецЕсли + +#КонецОбласти diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/КассовоеПоступление.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/КассовоеПоступление.mdo new file mode 100644 index 0000000..a43a348 --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/КассовоеПоступление.mdo @@ -0,0 +1,175 @@ + + + + + + + + + + КассовоеПоступление + Adopted + + Checked + Extended + + true + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате + + РодительскаяПлата + Adopted + + Checked + + + Checked + Boolean + + + + + + Организация + Adopted + + Checked + + + Checked + CatalogRef.Организации + + + + + + КорСчет + Adopted + + Checked + + + Checked + ChartOfAccountsRef.ЕПСБУ + + + + + + ИФО + Adopted + + Checked + + + Checked + CatalogRef.ИсточникиФинансовогоОбеспечения + + + + + + + + + + РасшифровкаПлатежа + Adopted + + Checked + + + Примечание + Adopted + + Checked + + + Checked + String + + + 254 + + + + + + Контрагент + Adopted + + Checked + + + Checked + CatalogRef.Контрагенты + + + + + + Договор + Adopted + + Checked + + + Checked + CatalogRef.Договоры + + + + + + КОСГУНазначениеПлатежа + Adopted + + Checked + + + Checked + CatalogRef.КОСГУ + + + + + + СчетРасчетов + Adopted + + Checked + + + Checked + ChartOfAccountsRef.ЕПСБУ + + + + + + Ребенок + Adopted + + Checked + + + Checked + CatalogRef.Дети + + + + + + КФО + Adopted + + Checked + + + Checked + EnumRef.КВД + + + + + + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Forms/ФормаДокумента/Form.form b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Forms/ФормаДокумента/Form.form index 4e0a74b..f452bac 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Forms/ФормаДокумента/Form.form +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Forms/ФормаДокумента/Form.form @@ -4,7 +4,7 @@ ГруппаОрганизаций 71 - ГруппаОрганизацииИДокумента + ГруппаОрганизацииИПериода 96 Организация @@ -55,52 +55,6 @@ Normal - - ДокументНачисления - 19 - true - true - - true - - - Объект.ДокументНачисления - - - OnChange - ДокументНачисленияПриИзменении - - - ДокументНачисленияРасширеннаяПодсказка - 21 - Label - true - true - - Left - - - - ДокументНачисленияКонтекстноеМеню - 20 - true - - InputField - EnterOnInput - true - Left - true - - true - true - true - true - true - true - true - Normal - - Период 13 @@ -150,10 +104,10 @@ <key>ru</key> - <value>Группа организации и документа</value> + <value>Группа организации и периода</value> - ГруппаОрганизацииИДокументаРасширеннаяПодсказка + ГруппаОрганизацииИПериодаРасширеннаяПодсказка 97 Label true @@ -918,6 +872,93 @@ ГруппаСтраницыОперации 94 + + ПередачаСальдо + 98 + + <key>ru</key> + <value>Передача начального сальдо</value> + + true + true + + true + + + Объект.ПередачаСальдо + + + OnChange + ПередачаСальдоПриИзменении + + + ПередачаСальдоРасширеннаяПодсказка + 100 + Label + true + true + + Left + + + + ПередачаСальдоКонтекстноеМеню + 99 + true + + CheckBoxField + Enter + true + Left + true + + + + ДокументНачисления + 19 + true + true + + true + + + Объект.ДокументНачисления + + + OnChange + ДокументНачисленияПриИзменении + + + ДокументНачисленияРасширеннаяПодсказка + 21 + Label + true + true + + Left + + + + ДокументНачисленияКонтекстноеМеню + 20 + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + true + Normal + + ИФО 22 @@ -1005,6 +1046,130 @@ Normal + + ГруппаКорреспондентующегоСчёта + 109 + + СчетКорреспондент + 101 + + <key>ru</key> + <value>Счет </value> + + true + true + + true + + + Объект.СчетКорреспондент + + + СчетКорреспондентРасширеннаяПодсказка + 103 + Label + true + true + + Left + + + + СчетКорреспондентКонтекстноеМеню + 102 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + КЭККорреспондент + 104 + + <key>ru</key> + <value>КЭК</value> + + true + true + + true + + + Объект.КЭККорреспондент + + + КЭККорреспондентРасширеннаяПодсказка + 106 + Label + true + true + + Left + + + + КЭККорреспондентКонтекстноеМеню + 105 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Корреспондентующий счёт</value> + + + ГруппаКорреспондентующегоСчётаРасширеннаяПодсказка + 110 + Label + true + true + + Left + + + UsualGroup + + Auto + Auto + NormalSeparation + true + true + true + Auto + Auto + + Комментарий 87 @@ -1258,6 +1423,32 @@ UserCmds Auto + + ЗаполнитьПоОстаткам20531 + 107 + true + true + + true + + + ФормаЗаполнитьПоОстаткам20531РасширеннаяПодсказка + 108 + Label + true + true + + Left + + + Form.Command.ЗаполнитьПоОстаткам20531 + Normal + Auto + true + true + UserCmds + Auto + Left true
@@ -1343,6 +1534,22 @@ + + ЗаполнитьПоОстаткам20531 + + <key>ru</key> + <value>Заполнить по остаткам счета 205.31</value> + + 4 + + true + + + + ЗаполнитьПоОстаткам20531 + + + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Forms/ФормаДокумента/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Forms/ФормаДокумента/Module.bsl index 14f0fec..23b1ffb 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Forms/ФормаДокумента/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Forms/ФормаДокумента/Module.bsl @@ -12,6 +12,12 @@ // КПС определяется автоматически по настройкам учётной политики. Элементы.ЗадолженностьКПС.ТолькоПросмотр = Истина; + // Счёт, корреспондирующий со счётом 205.31, и его КЭК: значения по умолчанию. + // В режиме передачи начального сальдо скрывается документ начисления и появляется + // команда заполнения по остаткам счёта 205.31. + ЗаполнитьКорреспондирующийСчетПоУмолчанию(); + ОбновитьВидимостьРеквизитовРежимаСальдо(); + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда Основание = Неопределено; Если Параметры.Свойство("Основание", Основание) @@ -105,10 +111,27 @@ КонецПроцедуры +&НаКлиенте +Процедура ЗаполнитьПоОстаткам20531(Команда) + + ЗаполнитьПоОстаткам20531НаСервере(); + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиСобытийЭлементовФормы +&НаКлиенте +Процедура ПередачаСальдоПриИзменении(Элемент) + + // В режиме сальдо поле документа начисления скрывается, команда заполнения по остаткам - показывается. + РежимСальдо = (Объект.ПередачаСальдо = Истина); + Элементы.ЗаполнитьПоОстаткам20531.Видимость = РежимСальдо; + Элементы.ДокументНачисления.Видимость = НЕ РежимСальдо; + +КонецПроцедуры + &НаКлиенте Процедура ДокументНачисленияПриИзменении(Элемент) @@ -139,6 +162,179 @@ КонецФункции +&НаСервере +Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию() + + Если НЕ ЗначениеЗаполнено(Объект.СчетКорреспондент) Тогда + Объект.СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию(); + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(Объект.КЭККорреспондент) Тогда + Объект.КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьВидимостьРеквизитовРежимаСальдо() + + // В режиме начального сальдо документ начисления не используется: его поле скрывается, + // а вместо него доступна команда заполнения по остаткам счёта 205.31. + РежимСальдо = (Объект.ПередачаСальдо = Истина); + Элементы.ЗаполнитьПоОстаткам20531.Видимость = РежимСальдо; + Элементы.ДокументНачисления.Видимость = НЕ РежимСальдо; + +КонецПроцедуры + +// Заполняет табличную часть "Задолженность" остатками счёта 205.31 на дату документа +// по организации (учреждению-саду). Строки доступны для ручной правки. +// +&НаСервере +Процедура ЗаполнитьПоОстаткам20531НаСервере() + + Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда + ОбщегоНазначения.СообщитьПользователю( + "Заполнение по остаткам невозможно: не заполнена организация (учреждение-сад)."); + Возврат; + КонецЕсли; + + Счет20531 = ПланыСчетов.ЕПСБУ.НайтиПоКоду("205.31"); + Если Счет20531 = Неопределено Тогда + ОбщегоНазначения.СообщитьПользователю( + "Заполнение по остаткам невозможно: в плане счетов ЕПСБУ не найден счет 205.31."); + Возврат; + КонецЕсли; + + // Порядок субконто берём из настройки самого счёта: субконто1 - первое субконто счёта. + ВидыСубконто = Новый Массив; + Для Каждого СтрокаСубконто Из Счет20531.ВидыСубконто Цикл + ВидыСубконто.Добавить(СтрокаСубконто.ВидСубконто); + КонецЦикла; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Остатки.Субконто1 КАК Контрагент, + | Остатки.Субконто2 КАК Договор, + | Дети.Ссылка КАК Ребенок, + | Остатки.КПС КАК КПС, + | Остатки.ИФО КАК ИФО, + | Остатки.КФО КАК КФО, + | Остатки.СуммаОстаток КАК Сумма + |ИЗ + | РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Остатки( + | &Дата, + | Счет В ИЕРАРХИИ (&Счет20531), + | &ВидыСубконто, + | Организация = &Организация) КАК Остатки + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Дети КАК Дети + | ПО Дети.Контрагент = Остатки.Субконто1 + |ГДЕ + | Остатки.СуммаОстаток <> 0 + | + |УПОРЯДОЧИТЬ ПО + | Остатки.Субконто1, + | Остатки.Субконто2"; + Запрос.УстановитьПараметр("Дата", Объект.Дата); + Запрос.УстановитьПараметр("Счет20531", Счет20531); + Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто); + Запрос.УстановитьПараметр("Организация", Объект.Организация); + + Выборка = Запрос.Выполнить().Выбрать(); + + Объект.Задолженность.Очистить(); + + ЗначенияИФО = Новый Соответствие; + ЗначенияКФО = Новый Соответствие; + + Пока Выборка.Следующий() Цикл + + ЗначенияИФО.Вставить(Выборка.ИФО, Истина); + ЗначенияКФО.Вставить(Выборка.КФО, Истина); + + НоваяСтрока = Объект.Задолженность.Добавить(); + НоваяСтрока.Контрагент = Выборка.Контрагент; + НоваяСтрока.Договор = Выборка.Договор; + НоваяСтрока.Ребенок = Выборка.Ребенок; + НоваяСтрока.КПС = Выборка.КПС; + НоваяСтрока.Сумма = Выборка.Сумма; + + КонецЦикла; + + Если Объект.Задолженность.Количество() = 0 Тогда + ВывестиДиагностикуЗаполненияПоОстаткам(Счет20531); + Возврат; + КонецЕсли; + + Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма"); + + // Разрезов ИФО и КФО в табличной части нет - они задаются на весь документ, + // поэтому переносим их в шапку, если в остатках они единственные. + ЗаполнитьИФОиКФОПоОстаткам(ЗначенияИФО, ЗначенияКФО); + + Если ЗначенияИФО.Количество() > 1 ИЛИ ЗначенияКФО.Количество() > 1 Тогда + ОбщегоНазначения.СообщитьПользователю( + "Остатки найдены в разрезе нескольких ИФО и/или КФО, а в документе ИФО и КФО задаются" + + " на весь документ. Проверьте их заполнение и при необходимости перенесите" + + " сальдо отдельными документами."); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьИФОиКФОПоОстаткам(ЗначенияИФО, ЗначенияКФО) + + Если ЗначенияКФО.Количество() = 1 И НЕ ЗначениеЗаполнено(Объект.КФО) Тогда + Для Каждого КлючИЗначение Из ЗначенияКФО Цикл + Объект.КФО = КлючИЗначение.Ключ; + КонецЦикла; + КонецЕсли; + + Если ЗначенияИФО.Количество() = 1 И НЕ ЗначениеЗаполнено(Объект.ИФО) Тогда + Для Каждого КлючИЗначение Из ЗначенияИФО Цикл + Объект.ИФО = КлючИЗначение.Ключ; + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ВывестиДиагностикуЗаполненияПоОстаткам(Счет20531) + + // Проверяем, есть ли вообще остатки по счёту на дату документа - без отборов + // по организации и субконто. Это позволяет понять, что именно не совпало. + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | КОЛИЧЕСТВО(*) КАК ВсегоСтрок + |ИЗ + | РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Остатки( + | &Дата, + | Счет В ИЕРАРХИИ (&Счет20531), , ) КАК Остатки"; + Запрос.УстановитьПараметр("Дата", Объект.Дата); + Запрос.УстановитьПараметр("Счет20531", Счет20531); + + Выборка = Запрос.Выполнить().Выбрать(); + ВсегоСтрок = 0; + Если Выборка.Следующий() Тогда + ВсегоСтрок = Выборка.ВсегоСтрок; + КонецЕсли; + + ДатаДокумента = Формат(Объект.Дата, "ДЛФ=DD"); + + Если ВсегоСтрок = 0 Тогда + ОбщегоНазначения.СообщитьПользователю( + "Остатков по счёту " + Счет20531.Код + " на " + ДатаДокумента + + " нет ни по одной организации. Проверьте дату документа."); + Иначе + ОбщегоНазначения.СообщитьПользователю( + "Остатки по счёту " + Счет20531.Код + " на " + ДатаДокумента + " есть (" + + ВсегоСтрок + " стр.), но не отобраны по организации " + Строка(Объект.Организация) + + " и/или по субконто счёта. Проверьте организацию в документе."); + КонецЕсли; + +КонецПроцедуры + &НаСервере Процедура ЗаполнитьПоДокументуНачисленияНаСервере(ДокументНачисленияСсылка) diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/ObjectModule.bsl index 2cb8006..cf187a4 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/ObjectModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/ObjectModule.bsl @@ -82,17 +82,20 @@ Движения.ЖурналПроводокЕПСБУ.Записывать = Истина; Движения.ЖурналПроводокЕПСБУ.ДополнительныеСвойства.Вставить("НеФормироватьУчетныеДанныеИзПроводок"); - СчетДт = БухгалтерскийУчет.СчетПоКоду("304.04", Дата, Организация); СчетКт = БухгалтерскийУчет.СчетПоКоду("205.31", Дата, Организация); - ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт); - // КЭК счёта 304.04 несёт экономический смысл операции: для доходной операции это КЭК - // счёта 401.10 проводок документа начисления. Автоматически он не определяется. - КЭК30404 = ПС_УчетРодительскойПлаты.КЭКПоЭкономическомуСмыслу(ДокументНачисления); - Если НЕ ЗначениеЗаполнено(КЭК30404) Тогда - КЭК30404 = КЭКПроводки(СчетДт, "Дт", ЦБ); + // Счёт, корреспондирующий со счётом расчётов по доходам, и его КЭК задаются реквизитами + // документа (по умолчанию 304.04 и 131) и могут быть изменены пользователем. + СчетДт = СчетКорреспондент; + Если НЕ ЗначениеЗаполнено(СчетДт) Тогда + ОбщегоНазначения.СообщитьПользователю( + "Не заполнен счёт, корреспондирующий со счётом 205.31. Проведение невозможно.", + , "СчетКорреспондент", "Объект", Отказ); + Возврат; КонецЕсли; + ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт); + // КПС строк наследуется из проводок документа начисления (см. ЗаполнитьКПССтрок), // КЭК счёта 205.31 определяется по настройкам счёта и типу контрагента (подстатья КОСГУ). Для Каждого СтрокаЗадолженности Из Задолженность Цикл @@ -106,7 +109,7 @@ Движение.СчетКт = СчетКт; Движение.КПСДт = СтрокаЗадолженности.КПС; Движение.КПСКт = СтрокаЗадолженности.КПС; - Движение.КЭКДт = КЭК30404; + Движение.КЭКДт = КЭККорреспондент; Движение.КЭККт = КЭКПроводки(СчетКт, "Кт", СтрокаЗадолженности.Контрагент, СтрокаЗадолженности.Договор); Движение.Сумма = СтрокаЗадолженности.Сумма; Движение.ЖурналОпераций = ЖурналОпераций; @@ -141,6 +144,8 @@ ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект); + ЗаполнитьРеквизитыПоУмолчанию(); + СуммаДокумента = Задолженность.Итог("Сумма"); ЗаполнитьКПССтрок(); @@ -156,7 +161,7 @@ ОбщегоНазначения.СообщитьПользователю("Не заполнен получатель - ЦБ (администратор доходов)", , "ЦБ", "Объект", Отказ); КонецЕсли; - Если НЕ ЗначениеЗаполнено(ДокументНачисления) Тогда + Если НЕ ПередачаСальдо И НЕ ЗначениеЗаполнено(ДокументНачисления) Тогда ОбщегоНазначения.СообщитьПользователю("Не заполнен документ начисления родительской платы", , "ДокументНачисления", "Объект", Отказ); КонецЕсли; @@ -169,9 +174,12 @@ Иначе Для Каждого СтрокаЗадолженности Из Задолженность Цикл Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.КПС) Тогда - ОбщегоНазначения.СообщитьПользователю( - "Не заполнен КПС строки табличной части ""Задолженность"". Заполнение возможно только на основании проведённого документа начисления родительской платы.", - , "Задолженность", "Объект", Отказ); + ТекстСообщения = "Не заполнен КПС строки табличной части ""Задолженность""."; + Если НЕ ПередачаСальдо Тогда + ТекстСообщения = ТекстСообщения + + " Заполнение возможно только на основании проведённого документа начисления родительской платы."; + КонецЕсли; + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Задолженность", "Объект", Отказ); Прервать; КонецЕсли; КонецЦикла; @@ -188,11 +196,32 @@ #Область СлужебныеПроцедурыИФункции +// Заполняет счёт, корреспондирующий со счётом расчётов по доходам (205.31), и его КЭК +// значениями по умолчанию, если они не заданы пользователем. +// +Процедура ЗаполнитьРеквизитыПоУмолчанию() + + Если НЕ ЗначениеЗаполнено(СчетКорреспондент) Тогда + СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию(); + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(КЭККорреспондент) Тогда + КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию(); + КонецЕсли; + +КонецПроцедуры + // Заполняет строки табличной части "Задолженность" КПС, унаследованным // из проводок документа начисления родительской платы. // Процедура ЗаполнитьКПССтрок() + // В режиме передачи начального сальдо КПС строк заполняется по остаткам счёта 205.31, + // а не по проводкам документа начисления. + Если ПередачаСальдо Тогда + Возврат; + КонецЕсли; + ПС_УчетРодительскойПлаты.ЗаполнитьРеквизитыУчетаПоПроводкам(ЭтотОбъект, ДокументНачисления); КонецПроцедуры diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/ПС_ПередачаЗадолженностиВЦБ.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/ПС_ПередачаЗадолженностиВЦБ.mdo index 47b9828..bb5da20 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/ПС_ПередачаЗадолженностиВЦБ.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/ПС_ПередачаЗадолженностиВЦБ.mdo @@ -177,6 +177,51 @@ Use Use + + ПередачаСальдо + + ru + Передача начального сальдо + + + Boolean + + + + + Use + Use + + + КЭККорреспондент + + ru + КЭК корреспондирующего счета + + + CatalogRef.КОСГУ + + + + + Use + Use + + + СчетКорреспондент + + ru + Счет корреспондирующий + + + ChartOfAccountsRef.ЕПСБУ + + + + + Use + Use + ФормаДокумента diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Forms/ФормаДокумента/Form.form b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Forms/ФормаДокумента/Form.form index 5c15b16..3e49597 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Forms/ФормаДокумента/Form.form +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Forms/ФормаДокумента/Form.form @@ -1014,6 +1014,133 @@ Normal + + ПередачаСальдо + 94 + + <key>ru</key> + <value>Передача начального сальдо</value> + + true + true + + true + + + Объект.ПередачаСальдо + + + ПередачаСальдоРасширеннаяПодсказка + 96 + Label + true + true + + Left + + + + ПередачаСальдоКонтекстноеМеню + 95 + true + + CheckBoxField + Enter + true + Left + true + + + + СчетКорреспондент + 97 + + <key>ru</key> + <value>Счет корреспондирующий</value> + + true + true + + true + + + Объект.СчетКорреспондент + + + СчетКорреспондентРасширеннаяПодсказка + 99 + Label + true + true + + Left + + + + СчетКорреспондентКонтекстноеМеню + 98 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + КЭККорреспондент + 100 + + <key>ru</key> + <value>КЭК корреспондирующего счета</value> + + true + true + + true + + + Объект.КЭККорреспондент + + + КЭККорреспондентРасширеннаяПодсказка + 102 + Label + true + true + + Left + + + + КЭККорреспондентКонтекстноеМеню + 101 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + true true diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Forms/ФормаДокумента/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Forms/ФормаДокумента/Module.bsl index d68a28f..1246c2e 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Forms/ФормаДокумента/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Forms/ФормаДокумента/Module.bsl @@ -12,6 +12,10 @@ // КПС определяется автоматически по настройкам учётной политики. Элементы.ЗадолженностьКПС.ТолькоПросмотр = Истина; + // Счёт, корреспондирующий со счётом 205.31, и его КЭК: значения по умолчанию + // (в режиме начального сальдо наследуются из документа передачи). + ЗаполнитьКорреспондирующийСчетПоУмолчанию(); + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда Основание = Неопределено; Если Параметры.Свойство("Основание", Основание) @@ -115,6 +119,19 @@ КонецФункции +&НаСервере +Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию() + + Если НЕ ЗначениеЗаполнено(Объект.СчетКорреспондент) Тогда + Объект.СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию(); + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(Объект.КЭККорреспондент) Тогда + Объект.КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию(); + КонецЕсли; + +КонецПроцедуры + &НаСервере Процедура ЗаполнитьПоДокументуПередачиНаСервере(ДокументПередачиСсылка) @@ -168,6 +185,14 @@ Объект.Ответственный = ВыборкаШапка.Ответственный; Объект.Период = ВыборкаШапка.Период; Объект.ДокументПередачи = ДокументПередачиСсылка; + + // Режим начального сальдо и корреспондирующий счёт с КЭК наследуются от документа передачи. + РеквизитыПередачи = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументПередачиСсылка, + "ПередачаСальдо, СчетКорреспондент, КЭККорреспондент"); + Объект.ПередачаСальдо = РеквизитыПередачи.ПередачаСальдо; + Объект.СчетКорреспондент = РеквизитыПередачи.СчетКорреспондент; + Объект.КЭККорреспондент = РеквизитыПередачи.КЭККорреспондент; + Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО") Тогда Объект.ИФО = ВыборкаШапка.ИФО; КонецЕсли; diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ObjectModule.bsl index dbe1936..81d6d1a 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ObjectModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ObjectModule.bsl @@ -2,6 +2,8 @@ // Сторона ЦБ: Дт 205.31.56X — Кт 304.04.130. // Проводки формируются в процедуре ОбработкаПроведения прямым заполнением // набора записей регистра бухгалтерии ЖурналПроводокЕПСБУ. +// Кроме проводок документ формирует приход в регистре накопления +// ПС_ВзаиморасчетыПоРодительскойПлате (принятая от учреждения задолженность). #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда @@ -26,7 +28,10 @@ | ПередачаЗадолженности.ИФО КАК ИФО, | ПередачаЗадолженности.Ответственный КАК Ответственный, | ПередачаЗадолженности.Период КАК Период, - | ПередачаЗадолженности.КФО КАК КФО + | ПередачаЗадолженности.КФО КАК КФО, + | ПередачаЗадолженности.ПередачаСальдо КАК ПередачаСальдо, + | ПередачаЗадолженности.СчетКорреспондент КАК СчетКорреспондент, + | ПередачаЗадолженности.КЭККорреспондент КАК КЭККорреспондент |ИЗ | Документ.ПС_ПередачаЗадолженностиВЦБ КАК ПередачаЗадолженности |ГДЕ @@ -49,6 +54,10 @@ Период = ВыборкаШапка.Период; КФО = ВыборкаШапка.КФО; ДокументПередачи = ДанныеЗаполнения; + // Режим начального сальдо и корреспондирующий счёт с КЭК наследуются от передачи. + ПередачаСальдо = ВыборкаШапка.ПередачаСальдо; + СчетКорреспондент = ВыборкаШапка.СчетКорреспондент; + КЭККорреспондент = ВыборкаШапка.КЭККорреспондент; // Учёт по ИФО ведётся только при включённой функциональной опции. Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО") Тогда ИФО = ВыборкаШапка.ИФО; @@ -88,17 +97,23 @@ Движения.ЖурналПроводокЕПСБУ.Записывать = Истина; Движения.ЖурналПроводокЕПСБУ.ДополнительныеСвойства.Вставить("НеФормироватьУчетныеДанныеИзПроводок"); - СчетДт = БухгалтерскийУчет.СчетПоКоду("205.31", Дата, Организация); - СчетКт = БухгалтерскийУчет.СчетПоКоду("304.04", Дата, Организация); - ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт); + Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Очистить(); + Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина; - // КЭК счёта 304.04 несёт экономический смысл операции и берётся из проводок документа передачи - // (КЭК счёта 401.10, унаследованный от документа начисления). Автоматически он не определяется. - КЭК30404 = ПС_УчетРодительскойПлаты.КЭКПоЭкономическомуСмыслу(ДокументПередачи); - Если НЕ ЗначениеЗаполнено(КЭК30404) Тогда - КЭК30404 = КЭКПроводки(СчетКт, "Кт", Учреждение); + СчетДт = БухгалтерскийУчет.СчетПоКоду("205.31", Дата, Организация); + + // Счёт, корреспондирующий со счётом расчётов по доходам, и его КЭК наследуются + // из документа передачи (заполняются при вводе на основании). + СчетКт = СчетКорреспондент; + Если НЕ ЗначениеЗаполнено(СчетКт) Тогда + ОбщегоНазначения.СообщитьПользователю( + "Не заполнен счёт, корреспондирующий со счётом 205.31. Проведение невозможно.", + , "СчетКорреспондент", "Объект", Отказ); + Возврат; КонецЕсли; + ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт); + // КПС строк наследуется из проводок документа передачи (см. ЗаполнитьКПССтрок), // КЭК счёта 205.31 определяется по настройкам счёта и типу контрагента (подстатья КОСГУ). Для Каждого СтрокаЗадолженности Из Задолженность Цикл @@ -113,7 +128,7 @@ Движение.КПСДт = СтрокаЗадолженности.КПС; Движение.КПСКт = СтрокаЗадолженности.КПС; Движение.КЭКДт = КЭКПроводки(СчетДт, "Дт", СтрокаЗадолженности.Контрагент, СтрокаЗадолженности.Договор); - Движение.КЭККт = КЭК30404; + Движение.КЭККт = КЭККорреспондент; Движение.Сумма = СтрокаЗадолженности.Сумма; Движение.ЖурналОпераций = ЖурналОпераций; Движение.Содержание = "Принятие задолженности по родительской плате от учреждения"; @@ -122,6 +137,24 @@ Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Договоры] = СтрокаЗадолженности.Договор; Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.КорреспондентыПоВнутреннимРасчетам] = Учреждение; + // Взаиморасчеты по родительской плате: принятая от учреждения задолженность. + ДвижениеПС = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьПриход(); + ДвижениеПС.Период = Дата; + ДвижениеПС.Организация = Организация; + ДвижениеПС.Учреждение = Учреждение; + ДвижениеПС.Плательщик = СтрокаЗадолженности.Контрагент; + ДвижениеПС.Ребенок = СтрокаЗадолженности.Ребенок; + ДвижениеПС.Договор = СтрокаЗадолженности.Договор; + ДвижениеПС.ИФО = ИФО; + ДвижениеПС.КФО = КФО; + ДвижениеПС.КПС = СтрокаЗадолженности.КПС; + ДвижениеПС.Сумма = СтрокаЗадолженности.Сумма; + ДвижениеПС.ВидОперации = ?(ПередачаСальдо, + Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.НачальноеСальдо, + Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.ПринятоОтУчреждения); + ДвижениеПС.ИДСтроки = СтрокаЗадолженности.ИДСтроки; + ДвижениеПС.ДокументПередачи = ДокументПередачи; + КонецЦикла; // В конфигурации есть подписка на событие "ОбработкаПроведения" (ЗаписатьТаблицуПроводок), @@ -136,6 +169,7 @@ Процедура ОбработкаУдаленияПроведения(Отказ) Движения.ЖурналПроводокЕПСБУ.Записывать = Истина; + Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина; КонецПроцедуры @@ -147,6 +181,8 @@ ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект); + ЗаполнитьРеквизитыПоУмолчанию(); + СуммаДокумента = Задолженность.Итог("Сумма"); ЗаполнитьКПССтрок(); @@ -175,9 +211,12 @@ Иначе Для Каждого СтрокаЗадолженности Из Задолженность Цикл Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.КПС) Тогда - ОбщегоНазначения.СообщитьПользователю( - "Не заполнен КПС строки табличной части ""Задолженность"". Заполнение возможно только на основании проведённого документа передачи задолженности.", - , "Задолженность", "Объект", Отказ); + ТекстСообщения = "Не заполнен КПС строки табличной части ""Задолженность""."; + Если НЕ ПередачаСальдо Тогда + ТекстСообщения = ТекстСообщения + + " Заполнение возможно только на основании проведённого документа передачи задолженности."; + КонецЕсли; + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Задолженность", "Объект", Отказ); Прервать; КонецЕсли; КонецЦикла; @@ -194,6 +233,21 @@ #Область СлужебныеПроцедурыИФункции +// Заполняет счёт, корреспондирующий со счётом расчётов по доходам (205.31), и его КЭК +// значениями по умолчанию, если они не заданы пользователем. +// +Процедура ЗаполнитьРеквизитыПоУмолчанию() + + Если НЕ ЗначениеЗаполнено(СчетКорреспондент) Тогда + СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию(); + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(КЭККорреспондент) Тогда + КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию(); + КонецЕсли; + +КонецПроцедуры + // Заполняет строки табличной части "Задолженность" КПС, унаследованным // из проводок документа передачи задолженности. // diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ПС_ПринятиеЗадолженностиОтУчреждения.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ПС_ПринятиеЗадолженностиОтУчреждения.mdo index 7667fa8..5e14160 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ПС_ПринятиеЗадолженностиОтУчреждения.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ПС_ПринятиеЗадолженностиОтУчреждения.mdo @@ -10,7 +10,7 @@ ПС_ПринятиеЗадолженностиОтУчреждения ru - Принятие начислений от учреждения + Принятие в ЦБ начислений от учреждения true DontUse @@ -22,7 +22,7 @@ ru - Принятие начислений от учреждения (ЦБ) + Принятия в ЦБ начислений от учреждения String 9 @@ -31,6 +31,7 @@ true Document.ПС_ПринятиеЗадолженностиОтУчреждения.Form.ФормаДокумента AccountingRegister.ЖурналПроводокЕПСБУ + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате true true @@ -177,6 +178,51 @@ Use Use + + ПередачаСальдо + + ru + Передача начального сальдо + + + Boolean + + + + + Use + Use + + + КЭККорреспондент + + ru + КЭК корреспондирующего счета + + + CatalogRef.КОСГУ + + + + + Use + Use + + + СчетКорреспондент + + ru + Счет корреспондирующий + + + ChartOfAccountsRef.ЕПСБУ + + + + + Use + Use + ФормаДокумента diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Enums/ПС_ВидыОперацийПоВзаиморасчетам/ПС_ВидыОперацийПоВзаиморасчетам.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Enums/ПС_ВидыОперацийПоВзаиморасчетам/ПС_ВидыОперацийПоВзаиморасчетам.mdo new file mode 100644 index 0000000..08364cd --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Enums/ПС_ВидыОперацийПоВзаиморасчетам/ПС_ВидыОперацийПоВзаиморасчетам.mdo @@ -0,0 +1,36 @@ + + + + + + + + ПС_ВидыОперацийПоВзаиморасчетам + + ru + Виды операций по взаиморасчетам + + true + BothWays + + ПринятоОтУчреждения + + ru + Принято от учреждения + + + + Оплата + + ru + Оплата родительской платы + + + + НачальноеСальдо + + ru + Начальное сальдо + + + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ОборотнаяВедомостьПоРодительскойПлате/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ОборотнаяВедомостьПоРодительскойПлате/ObjectModule.bsl new file mode 100644 index 0000000..7b359c3 --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ОборотнаяВедомостьПоРодительскойПлате/ObjectModule.bsl @@ -0,0 +1,85 @@ +#Область ОбработчикиСобытий + +// Настраивает отчёт перед компоновкой результата. +// +Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) + + УстановитьВыбранныеПоля(); + УстановитьПериодПоУмолчанию(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Задаёт выбранные поля отчёта: учреждение и показатели оборотной ведомости. +// +// Состав колонок задаётся кодом, потому что в макете схемы выбранным полем задано только +// учреждение, а добавить показатели в вариант настроек средствами метаданных нельзя. +// Группировки и отборы при этом остаются настраиваемыми: все измерения набора данных +// (учреждение, плательщик, ребенок, договор, период задолженности, ИФО, КФО, КПС) +// доступны в настройках отчёта. +// +Процедура УстановитьВыбранныеПоля() + + ВыбранныеПоля = КомпоновщикНастроек.Настройки.Выбор.Элементы; + ВыбранныеПоля.Очистить(); + + ИменаПолей = Новый Массив; + ИменаПолей.Добавить("Учреждение"); + ИменаПолей.Добавить("СуммаНачальныйОстаток"); + ИменаПолей.Добавить("СуммаПриход"); + ИменаПолей.Добавить("СуммаРасход"); + ИменаПолей.Добавить("СуммаКонечныйОстаток"); + + Для Каждого ИмяПоля Из ИменаПолей Цикл + ВыбранноеПоле = ВыбранныеПоля.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); + ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля); + КонецЦикла; + +КонецПроцедуры + +// Заполняет границы периода текущим месяцем, если они не заданы пользователем. +// +Процедура УстановитьПериодПоУмолчанию() + + ЗначенияПараметров = КомпоновщикНастроек.Настройки.ПараметрыДанных; + + Если ПериодЗадан(ЗначенияПараметров) Тогда + Возврат; + КонецЕсли; + + ТекущийМесяц = Новый СтандартныйПериод(ВариантСтандартногоПериода.ЭтотМесяц); + ЗначенияПараметров.УстановитьЗначениеПараметра( + Новый ПараметрКомпоновкиДанных("НачалоПериода"), ТекущийМесяц.ДатаНачала); + ЗначенияПараметров.УстановитьЗначениеПараметра( + Новый ПараметрКомпоновкиДанных("КонецПериода"), ТекущийМесяц.ДатаОкончания); + +КонецПроцедуры + +// Проверяет, что в настройках заданы обе границы периода. +// +// Параметры: +// ЗначенияПараметров - ЗначенияПараметровДанныхКомпоновкиДанных - настройки параметров данных. +// +// Возвращаемое значение: +// Булево - Истина, если обе границы периода заполнены. +// +Функция ПериодЗадан(ЗначенияПараметров) + + ЗначениеНачалаПериода = ЗначенияПараметров.НайтиЗначениеПараметра( + Новый ПараметрКомпоновкиДанных("НачалоПериода")); + ЗначениеКонцаПериода = ЗначенияПараметров.НайтиЗначениеПараметра( + Новый ПараметрКомпоновкиДанных("КонецПериода")); + + Если ЗначениеНачалаПериода = Неопределено ИЛИ ЗначениеКонцаПериода = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + + Возврат ЗначениеЗаполнено(ЗначениеНачалаПериода.Значение) + И ЗначениеЗаполнено(ЗначениеКонцаПериода.Значение); + +КонецФункции + +#КонецОбласти diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ОборотнаяВедомостьПоРодительскойПлате/Templates/ОсновнаяСхема/Template.dcs b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ОборотнаяВедомостьПоРодительскойПлате/Templates/ОсновнаяСхема/Template.dcs new file mode 100644 index 0000000..1c03a46 --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ОборотнаяВедомостьПоРодительскойПлате/Templates/ОсновнаяСхема/Template.dcs @@ -0,0 +1,296 @@ + + + + ИсточникДанных1 + Local + + + НаборДанных1 + + Организация + Организация + Организация + + d5p1:CatalogRef.Организации + + + + Учреждение + Учреждение + Учреждение + + d5p1:CatalogRef.Контрагенты + + + + Плательщик + Плательщик + Плательщик + + d5p1:CatalogRef.Контрагенты + + + + Ребенок + Ребенок + Ребенок + + d5p1:CatalogRef.Дети + + + + Договор + Договор + Договор + + d5p1:CatalogRef.Договоры + + + + ИФО + ИФО + ИФО + + d5p1:CatalogRef.ИсточникиФинансовогоОбеспечения + + + + КФО + КФО + КФО + + d5p1:EnumRef.КВД + + + + КПС + КПС + КПС + + d5p1:CatalogRef.КлассификационныеПризнакиСчетов + + + + СуммаНачальныйОстаток + СуммаНачальныйОстаток + СуммаНачальныйОстаток + + xs:decimal + + 15 + 2 + Any + + + + + СуммаПриход + СуммаПриход + СуммаПриход + + xs:decimal + + 15 + 2 + Any + + + + + СуммаРасход + СуммаРасход + СуммаРасход + + xs:decimal + + 15 + 2 + Any + + + + + СуммаКонечныйОстаток + СуммаКонечныйОстаток + СуммаКонечныйОстаток + + xs:decimal + + 15 + 2 + Any + + + + ИсточникДанных1 + ВЫБРАТЬ + Взаиморасчеты.Организация КАК Организация, + Взаиморасчеты.Учреждение КАК Учреждение, + Взаиморасчеты.Плательщик КАК Плательщик, + Взаиморасчеты.Ребенок КАК Ребенок, + Взаиморасчеты.Договор КАК Договор, + Взаиморасчеты.ИФО КАК ИФО, + Взаиморасчеты.КФО КАК КФО, + Взаиморасчеты.КПС КАК КПС, + Взаиморасчеты.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток, + Взаиморасчеты.СуммаПриход КАК СуммаПриход, + Взаиморасчеты.СуммаРасход КАК СуммаРасход, + Взаиморасчеты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток +ИЗ + РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто) КАК Взаиморасчеты + + + СуммаКонечныйОстаток + Сумма(СуммаКонечныйОстаток) + + + СуммаНачальныйОстаток + Сумма(СуммаНачальныйОстаток) + + + СуммаПриход + Сумма(СуммаПриход) + + + СуммаРасход + Сумма(СуммаРасход) + + + НачалоПериода + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Начало периода</v8:content> + </v8:item> + + + xs:dateTime + + DateTime + + + 0001-01-01T00:00:00 + false + Always + + + КонецПериода + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Конец периода</v8:content> + </v8:item> + + + xs:dateTime + + DateTime + + + 0001-01-01T00:00:00 + false + Always + + + + + Учреждение + + + + + НачалоПериода + 0001-01-01T00:00:00 + + + КонецПериода + 0001-01-01T00:00:00 + + + + + + Учреждение + Items + None + + + + + + Основной + По учреждениям + + + + Учреждение + + + Ребенок + + + СуммаНачальныйОстаток + + + СуммаПриход + + + СуммаРасход + + + СуммаКонечныйОстаток + + + + + false + НачалоПериода + + Custom + 0001-01-01T00:00:00 + + 72cd9cbb-7fe9-43fa-b89a-8648efdb95e6 + + + false + КонецПериода + + Custom + 0001-01-01T00:00:00 + + d45e92ce-0652-44e0-9cb7-6765030106ee + + + + + + Учреждение + Items + None + + + + + + + + + + + + Ребенок + Items + None + + + + + + + + + + + + + \ No newline at end of file diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ОборотнаяВедомостьПоРодительскойПлате/ПС_ОборотнаяВедомостьПоРодительскойПлате.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ОборотнаяВедомостьПоРодительскойПлате/ПС_ОборотнаяВедомостьПоРодительскойПлате.mdo new file mode 100644 index 0000000..8441a79 --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ОборотнаяВедомостьПоРодительскойПлате/ПС_ОборотнаяВедомостьПоРодительскойПлате.mdo @@ -0,0 +1,22 @@ + + + + + + + ПС_ОборотнаяВедомостьПоРодительскойПлате + + ru + Оборотная ведомость по расчетам по родительской плате + + true + Report.ПС_ОборотнаяВедомостьПоРодительскойПлате.Template.ОсновнаяСхема + + ОсновнаяСхема + + ru + Основная схема + + DataCompositionSchema + +