From 7a3a13531dd50689285e084e8f802e1de967675e Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Wed, 14 Oct 2026 22:59:22 +0500 Subject: [PATCH 01/19] =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B0=D1=8F=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D1=87=D0=B0:=20=D0=BE=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D1=82=D0=BA=D0=B8=20=D0=B2=D0=B7=D0=B0=D0=B8=D0=BC=D0=BE=D1=80?= =?UTF-8?q?=D0=B0=D1=81=D1=87=D1=91=D1=82=D0=BE=D0=B2=20=D1=81=20=D0=B4?= =?UTF-8?q?=D0=B5=D1=82=D1=8C=D0=BC=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=8F=D1=82=D1=81=D1=8F=20=D0=B2=20=D1=81=D0=B0?= =?UTF-8?q?=D0=B4=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Постановка новой концепции: ЦБ собирает поступившие платежи и передаёт их в сады, сады принимают поступившие платежи (по одному документу на сад), остатки формируются в садах. Бухгалтерские записи и порядок поступления средств не меняются, документы переименовываются. Приведены открытые вопросы к согласованию. --- ...татки взаиморасчётов с детьми в садах (БГУ 2.0).md | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 docs/ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md diff --git a/docs/ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md b/docs/ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md new file mode 100644 index 0000000..25f651d --- /dev/null +++ b/docs/ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md @@ -0,0 +1,67 @@ +# ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0) + +**Ветка:** `feature/ostatki-v-sadah` +**Статус:** черновик — требует подтверждения заказчиком и внутреннего согласования +**Дата:** 14.10.2026 +**Основание:** замечание заказчика к следствию текущей схемы — остатки по взаиморасчётам с детьми формируются в ЦБ; заказчик хочет видеть их в детских садах + +--- + +## 1. Суть изменения + +### 1.1. Как было (схема «Передача начислений в ЦБ») + +1. Сад начисляет плату типовым документом «Начисление родительской платы». +2. Сад передаёт задолженность в ЦБ документом `ПС_ПередачаЗадолженностиВЦБ` (Дт 304.04 — Кт 205.31). +3. ЦБ принимает задолженность документом `ПС_ПринятиеЗадолженностиОтУчреждения` (Дт 205.31 — Кт 304.04). +4. Реестр платежей из СУФД загружается в «Кассовое поступление», расшифровка платежа идентифицируется автоматически. +5. **Остатки взаиморасчётов с детьми формируются в ЦБ** — на стороне централизованной бухгалтерии. + +### 1.2. Как стало + +1. Платежи приходят **в ЦБ** — «Кассовое поступление» с автозаполнением расшифровки платежа. **Эта часть не меняется.** +2. ЦБ **собирает поступившие суммы** — с кредита счёта 205.31 — и заполняет ими документ, который **передаёт поступившие платежи в сады**. Механизм тот же: внутриведомственные расчёты, бухгалтерская запись та же. +3. На основании документа передачи в **каждом саду** создаётся свой документ **принятия поступивших платежей из ЦБ**. Документов столько, сколько садов в выписке: по выписке ЦБ за один день платежи поступают в адрес нескольких садов. +4. **Остатки взаиморасчётов с детьми формируются в садах.** Сады смотрят их **типовыми отчётами** — отдельная доработка не требуется. + +Итог: меняются экономические смыслы и наименования документов; бухгалтерские записи и порядок поступления средств сохраняются. + +--- + +## 2. Переименование документов + +| Сейчас | Стало (предложение) | Сторона | Роль в новой схеме | +|---|---|---|---| +| `ПС_ПринятиеЗадолженностиОтУчреждения` | `ПС_ПередачаПоступившихПлатежейВУчреждения` | ЦБ → сады | ЦБ собирает поступившие платежи и передаёт их в сады | +| `ПС_ПередачаЗадолженностиВЦБ` | `ПС_ПринятиеПоступившихПлатежейИзЦБ` | сад ← ЦБ | Сад принимает поступившие платежи из ЦБ; вводится на основании документа передачи, по одному на сад | + +Наименования — предложение, требуют подтверждения. + +--- + +## 3. Что не меняется + +- **Поступление средств:** «Кассовое поступление», автозаполнение расшифровки платежа, идентификация ребёнка по лицевому счёту, счёт расчётов 205.31, КОСГУ 131. +- **Бухгалтерские записи** внутриведомственных расчётов. +- **Наши регистры и отчёты:** `AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате`, `Report.ПС_ВедомостьЦБПоРодительскойПлате` — пока не трогаем. +- **Типовые отчёты** сады используют как есть. + +--- + +## 4. Открытые вопросы (нужно подтверждение) + +1. **Наименования документов** — принять предложенные или дать свои. +2. **Бухгалтерские записи.** Сохраняются ли направления «как есть» — у ЦБ Дт 205.31 — Кт 304.04, у сада Дт 304.04 — Кт 205.31 — при том, что смысловые роли документов поменялись местами. +3. **Печать извещения (ф. 0504805).** Остаётся ли, и на каком из двух документов. +4. **Режим «Начальное сальдо»** (сейчас — в документе сада). Где он живёт в новой схеме и что переносит. +5. **Пульт `ПС_УправлениеРасчетамиПоРодительскойПлате`.** Страницы «Сверка «передано / принято»», «Остатки и обороты» и другие — остаются как есть или пересматриваются. Формально пульт не отчёт и не регистр, поэтому уточняется отдельно. +6. **Имя отчёта** `ПС_ВедомостьЦБПоРодительскойПлате` — назван «по ЦБ», а остатки уезжают в сады. Оставляем без изменений «пока» или переименовываем. + +--- + +## 5. Что предстоит сделать (заготовка, план — позже) + +- Переименовать объекты метаданных и проследить цепочку ссылок: формы, роли, подсистемы, движения регистров, макеты печатных форм, настройки вариантов отчётов. +- Перестроить логику заполнения: ЦБ собирает поступившие суммы, сады принимают — по одному документу на сад. +- Проверить регламент загрузки реестров и работу пульта. +- Обновить комплект документации (памятка, руководство пользователя, руководство по эксплуатации) под новую схему. From 14e23346a91885ae678e49f4a542116e90d7c227 Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Wed, 14 Oct 2026 23:21:30 +0500 Subject: [PATCH 02/19] =?UTF-8?q?=D0=9A=D0=BE=D0=BD=D1=86=D0=B5=D0=BF?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=C2=AB=D0=BE=D1=81=D1=82=D0=B0=D1=82=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B2=20=D1=81=D0=B0=D0=B4=D0=B0=D1=85=C2=BB=20=D1=81?= =?UTF-8?q?=D0=BE=D0=B3=D0=BB=D0=B0=D1=81=D0=BE=D0=B2=D0=B0=D0=BD=D0=B0:?= =?UTF-8?q?=20=D1=81=D0=BD=D1=8F=D1=82=D1=8B=20=D0=BE=D1=82=D0=BA=D1=80?= =?UTF-8?q?=D1=8B=D1=82=D1=8B=D0=B5=20=D0=B2=D0=BE=D0=BF=D1=80=D0=BE=D1=81?= =?UTF-8?q?=D1=8B,=20=D0=B7=D0=B0=D1=84=D0=B8=D0=BA=D1=81=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D1=8B=20=D1=80=D0=B5=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Наименования документов приняты - Бухгалтерские записи сохраняются: в ЦБ передавалась дебиторская задолженность, обратно передаётся кредиторская - Извещение ф. 0504805 остаётся у обоих документов - Режим «Начальное сальдо» убирается: обороты переносятся в обратную сторону, сальдо нет - Пульт не трогаем - Отчёт остаётся инструментом контроля ЦБ: при полной передаче платежей остатки нулевые --- ...татки взаиморасчётов с детьми в садах (БГУ 2.0).md | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/docs/ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md b/docs/ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md index 25f651d..619f968 100644 --- a/docs/ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md +++ b/docs/ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md @@ -1,7 +1,7 @@ # ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0) **Ветка:** `feature/ostatki-v-sadah` -**Статус:** черновик — требует подтверждения заказчиком и внутреннего согласования +**Статус:** концепция согласована; план доработки и рабочая документация — отдельным шагом **Дата:** 14.10.2026 **Основание:** замечание заказчика к следствию текущей схемы — остатки по взаиморасчётам с детьми формируются в ЦБ; заказчик хочет видеть их в детских садах @@ -28,40 +28,46 @@ --- -## 2. Переименование документов +## 2. Переименование документов (согласовано) -| Сейчас | Стало (предложение) | Сторона | Роль в новой схеме | +| Сейчас | Стало | Сторона | Роль в новой схеме | |---|---|---|---| | `ПС_ПринятиеЗадолженностиОтУчреждения` | `ПС_ПередачаПоступившихПлатежейВУчреждения` | ЦБ → сады | ЦБ собирает поступившие платежи и передаёт их в сады | | `ПС_ПередачаЗадолженностиВЦБ` | `ПС_ПринятиеПоступившихПлатежейИзЦБ` | сад ← ЦБ | Сад принимает поступившие платежи из ЦБ; вводится на основании документа передачи, по одному на сад | -Наименования — предложение, требуют подтверждения. +Наименования согласованы — отражают суть документов. --- ## 3. Что не меняется - **Поступление средств:** «Кассовое поступление», автозаполнение расшифровки платежа, идентификация ребёнка по лицевому счёту, счёт расчётов 205.31, КОСГУ 131. -- **Бухгалтерские записи** внутриведомственных расчётов. -- **Наши регистры и отчёты:** `AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате`, `Report.ПС_ВедомостьЦБПоРодительскойПлате` — пока не трогаем. +- **Бухгалтерские записи** внутриведомственных расчётов. Направления сохраняются буквально: у ЦБ Дт 205.31 — Кт 304.04, у сада Дт 304.04 — Кт 205.31. В сторону ЦБ передавалась дебиторская задолженность, обратно передаётся кредиторская — поэтому записи не меняются. +- **Печать извещения (ф. 0504805)** — остаётся у обоих документов, как и было. +- **Пульт** `ПС_УправлениеРасчетамиПоРодительскойПлате` — не трогаем: он работает с теми же документами и счетами, меняются только наименования документов. +- **Наши регистры** (`AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате`) — пока не трогаем. - **Типовые отчёты** сады используют как есть. --- -## 4. Открытые вопросы (нужно подтверждение) +## 4. Что убираем -1. **Наименования документов** — принять предложенные или дать свои. -2. **Бухгалтерские записи.** Сохраняются ли направления «как есть» — у ЦБ Дт 205.31 — Кт 304.04, у сада Дт 304.04 — Кт 205.31 — при том, что смысловые роли документов поменялись местами. -3. **Печать извещения (ф. 0504805).** Остаётся ли, и на каком из двух документов. -4. **Режим «Начальное сальдо»** (сейчас — в документе сада). Где он живёт в новой схеме и что переносит. -5. **Пульт `ПС_УправлениеРасчетамиПоРодительскойПлате`.** Страницы «Сверка «передано / принято»», «Остатки и обороты» и другие — остаются как есть или пересматриваются. Формально пульт не отчёт и не регистр, поэтому уточняется отдельно. -6. **Имя отчёта** `ПС_ВедомостьЦБПоРодительскойПлате` — назван «по ЦБ», а остатки уезжают в сады. Оставляем без изменений «пока» или переименовываем. +**Режим «Начальное сальдо»** — сейчас он живёт в документе сада вместе с командой «Заполнить по остаткам счёта 205.31». Надобность отпала: обороты переносятся в обратную сторону, сальдо там нет. --- -## 5. Что предстоит сделать (заготовка, план — позже) +## 5. Изменение роли отчёта -- Переименовать объекты метаданных и проследить цепочку ссылок: формы, роли, подсистемы, движения регистров, макеты печатных форм, настройки вариантов отчётов. -- Перестроить логику заполнения: ЦБ собирает поступившие суммы, сады принимают — по одному документу на сад. -- Проверить регламент загрузки реестров и работу пульта. -- Обновить комплект документации (памятка, руководство пользователя, руководство по эксплуатации) под новую схему. +`Report.ПС_ВедомостьЦБПоРодительскойПлате` раньше служил ЦБ для контроля взаиморасчётов по родительской плате. Теперь взаиморасчёты остаются в садах, и назначение отчёта смещается: он остаётся **инструментом ЦБ для контроля правильности формирования и проведения документов**. Критерий — если все поступившие платежи переданы в сады, остатки по отчёту должны быть нулевыми. + +Имя отчёта сохраняется; при необходимости переименуем отдельным решением. + +--- + +## 6. Что предстоит сделать (заготовка, план — позже) + +- Переименовать два документа метаданных и проследить цепочку ссылок: формы, роли, подсистемы, движения регистров, макеты печатных форм, настройки вариантов отчётов. +- Убрать из документа сада режим «Начальное сальдо» и команду заполнения по остаткам. +- Перестроить логику заполнения: ЦБ собирает поступившие суммы с кредита 205.31 и передаёт их в сады; в садах принимают — по одному документу на сад. +- Проверить печать извещения на обоих документах. +- Обновить рабочую документацию (памятка, руководство пользователя, руководство по эксплуатации) под новую схему. From a10e0f4e315da349bdc32b2832a23c7ca3c627b9 Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Wed, 14 Oct 2026 23:31:59 +0500 Subject: [PATCH 03/19] =?UTF-8?q?=D0=9F=D0=BB=D0=B0=D0=BD=20=D0=B4=D0=BE?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B8=20=D0=BF=D0=BE=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=86=D0=B5=D0=BF=D1=86=D0=B8=D0=B8=20=C2=AB?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B0=D1=82=D0=BA=D0=B8=20=D0=B2=20=D1=81?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D1=85=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ревизия обоих документов и их связей выполнена. В плане: переименование документов с полной цепочкой ссылок, смена ролей и логики заполнения, снятие режима «Начальное сальдо», неизменные проводки и печать, нетронутые регистры/отчёты/пульт, проверка и обновление документации. Отдельно — четыре открытых вопроса к плану. --- ...атки взаиморасчётов с детьми в садах (БГУ 2.0).md | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 docs/ПЛАН. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md diff --git a/docs/ПЛАН. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md b/docs/ПЛАН. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md new file mode 100644 index 0000000..3de7aab --- /dev/null +++ b/docs/ПЛАН. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md @@ -0,0 +1,110 @@ +# ПЛАН. Остатки взаиморасчётов с детьми в садах (БГУ 2.0) + +**Ветка:** `feature/ostatki-v-sadah` +**Основание:** `docs/ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md` +**Дата:** 14.10.2026 +**Статус:** черновик плана — шаги согласовать до начала правок + +--- + +## 0. Ревизия выполнена + +Проведён разбор обоих документов и их связей. Ниже — что именно затронет работа. + +**Документы и их текущая роль:** + +| Роль сейчас | Объект | Проводка | Движения по регистрам | +|---|---|---|---| +| ЦБ принимает задолженность | `ПС_ПринятиеЗадолженностиОтУчреждения` | Дт 205.31 — Кт 304.04 | Журнал проводок **и** регистр взаиморасчётов (приход) | +| Сад передаёт задолженность | `ПС_ПередачаЗадолженностиВЦБ` | Дт 304.04 — Кт 205.31 | только Журнал проводок | + +**Цепочка «ввод на основании»:** «Начисление родительской платы» → `ПС_ПередачаЗадолженностиВЦБ` (через `basedOn`) → `ПС_ПринятиеЗадолженностиОтУчреждения` (командой формы). + +**Ссылки, которые надо пройти при переименовании:** + +1. `Configuration.mdo` — состав документов. +2. `Roles\ПС_ОсновнаяРоль\Rights.rights` — два блока прав. +3. Подсистема `РодительскаяПлата.mdo` — состав содержимого. +4. `НачислениеРодительскойПлаты.mdo` — свойство `basedOn`. +5. Типы реквизитов `ДокументПередачи`: в `.mdo` ЦБ-документа и в регистре `ПС_ВзаиморасчетыПоРодительскойПлате`. +6. Код: `Тип("ДокументСсылка.…")`, тексты запросов `Документ.…`, `Документы.….СформироватьПечатныеФормыИзвещений`, `Документы.….ПолучитьМакет`, `ОткрытьФорму("Документ.….Форма.ФормаДокумента")` — в обоих документах, в общем модуле `ПС_УчетРодительскойПлаты`, в пульте, в форме «Начисления родительской платы». +7. Ключи параметров печати в `ПС_УчетРодительскойПлаты` (`ПАРАМЕТРЫ_ПЕЧАТИ_…`). +8. Типы в `.form`: `DocumentObject.…` в формах документов, `DocumentRef.…` в форме пульта. +9. Модули объектов и форм, модули менеджеров обоих документов, макеты печатных форм. + +**Не затрагивается:** `ПС_РаботаСКонтрагентами`, `ПС_РазборПлатежейПоРодительскойПлате`, отчёт `ПС_ВедомостьЦБПоРодительскойПлате` (работает с регистром, а не с документами), интерфейс подсистемы, определяемые типы, подписки на события. + +--- + +## 1. Переименование документов + +| Сейчас | Стало | +|---|---| +| `ПС_ПринятиеЗадолженностиОтУчреждения` | `ПС_ПередачаПоступившихПлатежейВУчреждения` | +| `ПС_ПередачаЗадолженностиВЦБ` | `ПС_ПринятиеПоступившихПлатежейИзЦБ` | + +Порядок работ: сначала переименование в метаданных, затем проход по цепочке ссылок из п. 0, затем код. Перед началом — переключить EDT на ветку и убедиться, что проект собирается. + +--- + +## 2. Смена ролей и логики заполнения + +- **ЦБ-документ** (`ПС_ПередачаПоступившихПлатежейВУчреждения`) — теперь источник: собирает поступившие суммы с кредита 205.31 и заполняет ими табличную часть для передачи в сады. +- **Сад-документы** (`ПС_ПринятиеПоступившихПлатежейИзЦБ`) — вводятся **на основании** ЦБ-документа, **по одному на сад** (в выписке ЦБ за день платежи идут в адрес нескольких садов). +- Перестроить цепочку «ввод на основании»: снять у «Начисления родительской платы» основание на сад-документ (сейчас `basedOn` указывает именно на него), настроить основание ЦБ-документ → сад-документы. +- Проверить и поправить автозаполнение реквизитов при вводе на основании: организация, учреждение, ИФО, КФО, суммы. + +--- + +## 3. Снятие режима «Начальное сальдо» + +Убирается полностью: + +- **Сад-документ:** реквизит `ПередачаСальдо`, команда `ЗаполнитьПоОстаткам20531` и её обработчик `ЗаполнитьПоОстаткам20531НаСервере`, процедуры `ОбновитьВидимостьРеквизитовРежимаСальдо` и `ПередачаСальдоПриИзменении`, связанные элементы формы. +- **ЦБ-документ:** реквизит `ПередачаСальдо` и ветка `ВидОперации = НачальноеСальдо` при формировании движений. +- **Перечисление** `ПС_ВидыОперацийПоВзаиморасчетам` — решить, убирать ли значение «Начальное сальдо». + +--- + +## 4. Проводки и печать — без изменений + +- Проводки сохраняются буквально: у ЦБ Дт 205.31 — Кт 304.04, у сада Дт 304.04 — Кт 205.31. В ЦБ сторону уходила дебиторская задолженность, обратно возвращается кредиторская. +- Извещение ф. 0504805 — у обоих документов, как и было. Макеты и их имена не меняются. + +--- + +## 5. Регистры и отчёты — не трогаем + +- Структура регистра `ПС_ВзаиморасчетыПоРодительскойПлате` и отчёт `ПС_ВедомостьЦБПоРодительскойПлате` остаются как есть. +- Проверить, что движения регистра по-прежнему формирует ЦБ-документ (сейчас их пишет он, у сад-документа движений нет) и что после переименований измерения заполняются корректно. +- Критерий для отчёта: при полной передаче платежей в сады остатки нулевые. + +--- + +## 6. Пульт — не трогаем + +- В форме пульта четыре запроса и типы реквизитов ссылаются на документы. После переименования их надо поправить механически, логику не менять. + +--- + +## 7. Проверка + +- Переработать приёмочные сценарии под новую схему: загрузка реестра → ЦБ собирает поступившие суммы → передача в сады → приём в каждом саду → нулевые остатки у ЦБ. +- Прогнать проверку маркеров EDT по изменённым объектам. + +--- + +## 8. Документация + +- **Убрать «Начальное сальдо»** из памятки (раздел 4) и руководства пользователя (п. 3.2) — режима больше нет. +- Переписать схему в руководстве пользователя и руководстве по эксплуатации под новую модель, переименовать документы во всех упоминаниях. +- Обновлять шар и `docs/` синхронно, после стабилизации результата. + +--- + +## Открытые вопросы к плану + +1. **Из чего заполняется ЦБ-документ** — собирать суммы из расшифровки «Кассового поступления» автоматически (по команде или при записи) или заполнять вручную? +2. **Движения регистра взаиморасчётов** — остаются за ЦБ-документом или переезжают на сад-документ? От этого зависит, где видны остатки в нашем отчёте. +3. **Значение «Начальное сальдо»** в перечислении видов операций — убирать или оставлять как историческое. +4. **`basedOn` у «Начисления родительской платы»** — снимать ли полностью: в новой схеме начисление не является основанием для сад-документа. From 061e46d8f06c45231b9bbb668f3c7f2e6d46f0a0 Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Thu, 15 Oct 2026 00:10:33 +0500 Subject: [PATCH 04/19] =?UTF-8?q?=D0=9F=D0=BB=D0=B0=D0=BD:=20=D1=80=D0=B5?= =?UTF-8?q?=D1=88=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BD=D1=86=D0=B5=D0=BF=D1=86=D0=B8=D0=B8=20=C2=AB=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D1=82=D0=BA=D0=B8=20=D0=B2=20=D1=81=D0=B0=D0=B4?= =?UTF-8?q?=D0=B0=D1=85=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ЦБ-документ передачи заполняется из остатков регистра накопления (не из расшифровки кассового поступления) - Регистр взаиморасчётов пишется только ЦБ-документами и должен давать нулевые остатки - Режим «Начальное сальдо» искореняется полностью, включая значение перечисления - Ввод на основании разворачивается: ЦБ-документ передачи первичен, сад-документы вводятся по нему Открытым оставлен один пункт — направление движений регистра у «Кассового поступления». --- ...атки взаиморасчётов с детьми в садах (БГУ 2.0).md | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/docs/ПЛАН. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md b/docs/ПЛАН. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md index 3de7aab..2f46b51 100644 --- a/docs/ПЛАН. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md +++ b/docs/ПЛАН. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md @@ -3,7 +3,7 @@ **Ветка:** `feature/ostatki-v-sadah` **Основание:** `docs/ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md` **Дата:** 14.10.2026 -**Статус:** черновик плана — шаги согласовать до начала правок +**Статус:** решения по плану получены; один пункт требует подтверждения (см. конец документа) --- @@ -49,20 +49,22 @@ ## 2. Смена ролей и логики заполнения -- **ЦБ-документ** (`ПС_ПередачаПоступившихПлатежейВУчреждения`) — теперь источник: собирает поступившие суммы с кредита 205.31 и заполняет ими табличную часть для передачи в сады. +- **ЦБ-документ** (`ПС_ПередачаПоступившихПлатежейВУчреждения`) — источник. Заполняется **из остатков регистра накопления** `ПС_ВзаиморасчетыПоРодительскойПлате`: в документ попадают поступившие платежи, ещё не переданные в сады. + - Почему не из расшифровки «Кассового поступления»: тогда пришлось бы отдельно контролировать, чтобы платежи одного поступления не уехали в несколько передач. Через регистр контроль не нужен — предыдущая передача выбирает остатки, следующая их уже не видит. + - Условие корректности — последовательность проведения: каждую следующую передачу проводить после предыдущей по дате. - **Сад-документы** (`ПС_ПринятиеПоступившихПлатежейИзЦБ`) — вводятся **на основании** ЦБ-документа, **по одному на сад** (в выписке ЦБ за день платежи идут в адрес нескольких садов). -- Перестроить цепочку «ввод на основании»: снять у «Начисления родительской платы» основание на сад-документ (сейчас `basedOn` указывает именно на него), настроить основание ЦБ-документ → сад-документы. +- **«Ввод на основании» разворачивается в обратную сторону:** снять `basedOn` у «Начисления родительской платы» (сейчас он указывает на сад-документ); первым заполняется ЦБ-документ передачи, а сад-документы вводятся по нему. - Проверить и поправить автозаполнение реквизитов при вводе на основании: организация, учреждение, ИФО, КФО, суммы. --- ## 3. Снятие режима «Начальное сальдо» -Убирается полностью: +Искореняется полностью: - **Сад-документ:** реквизит `ПередачаСальдо`, команда `ЗаполнитьПоОстаткам20531` и её обработчик `ЗаполнитьПоОстаткам20531НаСервере`, процедуры `ОбновитьВидимостьРеквизитовРежимаСальдо` и `ПередачаСальдоПриИзменении`, связанные элементы формы. - **ЦБ-документ:** реквизит `ПередачаСальдо` и ветка `ВидОперации = НачальноеСальдо` при формировании движений. -- **Перечисление** `ПС_ВидыОперацийПоВзаиморасчетам` — решить, убирать ли значение «Начальное сальдо». +- **Перечисление** `ПС_ВидыОперацийПоВзаиморасчетам` — значение «Начальное сальдо» удаляется. --- @@ -73,11 +75,11 @@ --- -## 5. Регистры и отчёты — не трогаем +## 5. Регистр взаиморасчётов и отчёт -- Структура регистра `ПС_ВзаиморасчетыПоРодительскойПлате` и отчёт `ПС_ВедомостьЦБПоРодительскойПлате` остаются как есть. -- Проверить, что движения регистра по-прежнему формирует ЦБ-документ (сейчас их пишет он, у сад-документа движений нет) и что после переименований измерения заполняются корректно. -- Критерий для отчёта: при полной передаче платежей в сады остатки нулевые. +- Регистр `ПС_ВзаиморасчетыПоРодительскойПлате` — главный инструмент контроля ЦБ: он должен показать, что **все данные о платежах уехали из ЦБ**. Пишется **только документами ЦБ** — «Кассовым поступлением» и «Передачей платежей»; сад-документы в него **не пишут**. +- Когда все документы проведены в правильной последовательности, регистр даёт **нулевые остатки**. +- Структуру регистра и отчёт `ПС_ВедомостьЦБПоРодительскойПлате` не трогаем. Отчёт остаётся средством контроля: нулевые остатки означают, что всё передано. --- @@ -89,7 +91,7 @@ ## 7. Проверка -- Переработать приёмочные сценарии под новую схему: загрузка реестра → ЦБ собирает поступившие суммы → передача в сады → приём в каждом саду → нулевые остатки у ЦБ. +- Переработать приёмочные сценарии под новую схему: загрузка реестра → ЦБ собирает поступившие суммы → передача в сады → приём в каждом саду → нулевые остатки по регистру. - Прогнать проверку маркеров EDT по изменённым объектам. --- @@ -102,9 +104,19 @@ --- -## Открытые вопросы к плану +## Решения по вопросам плана (согласовано) -1. **Из чего заполняется ЦБ-документ** — собирать суммы из расшифровки «Кассового поступления» автоматически (по команде или при записи) или заполнять вручную? -2. **Движения регистра взаиморасчётов** — остаются за ЦБ-документом или переезжают на сад-документ? От этого зависит, где видны остатки в нашем отчёте. -3. **Значение «Начальное сальдо»** в перечислении видов операций — убирать или оставлять как историческое. -4. **`basedOn` у «Начисления родительской платы»** — снимать ли полностью: в новой схеме начисление не является основанием для сад-документа. +1. **Источник заполнения ЦБ-документа** — остатки регистра накопления, а не расшифровка «Кассового поступления». Контроль дублей не нужен: предыдущая передача снимает остатки, следующая их не видит; требуется лишь соблюдать последовательность проведения по дате. +2. **Движения регистра** — остаются за ЦБ-документами: «Кассовым поступлением» и «Передачей платежей». Сад-документы движений в регистр не делают. +3. **«Начальное сальдо»** — искореняется полностью, включая значение в перечислении видов операций. +4. **`basedOn`** — разворачивается: первым заполняется ЦБ-документ передачи, на его основании вводятся документы приёма платежей в садах. + +--- + +## Требует подтверждения (один пункт) + +**Направление движений регистра.** Чтобы передачу можно было заполнять из остатков, а регистр обнулялся при полной передаче, нужно: «Кассовое поступление» даёт **приход** (поступившие платежи копятся у ЦБ), «Передача платежей» — **расход** (отдаём в сады). Тогда всё сходится в ноль. + +Сейчас в коде наоборот: «Кассовое поступление» пишет **расход** (вид операции «Оплата» — платёж закрывал задолженность перед ЦБ). То есть в новой схеме направление движения у «Кассового поступления» меняется на противоположное — это уже не «ничего не меняется в части поступления средств». + +Подтверди этот момент: меняем направление у «Кассового поступления» на приход — или ты видишь механику иначе? From 3aa47428f1831f8b417bc0be29038048ff5a2e00 Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Thu, 15 Oct 2026 00:19:04 +0500 Subject: [PATCH 05/19] =?UTF-8?q?=D0=94=D0=BE=D0=BA=D1=83=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=B0=D1=86=D0=B8=D1=8F:=20=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D1=80=D0=B6=D0=B4=D0=B5=D0=BD=D0=BE=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=B4=D0=B2=D0=B8=D0=B6=D0=B5=D0=BD=D0=B8=D0=B9=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B3=D0=B8=D1=81=D1=82=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - «Кассовое поступление» — приход, «Передача платежей» — расход; регистр обнуляется при полной передаче - В плане раздел «Требует подтверждения» заменён на подтверждённое решение - В постановке уточнено: в «Кассовом поступлении» меняется только направление движения по регистру --- ...§А. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md | 3 ++- ...�. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md | 10 ++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/docs/ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md b/docs/ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md index 619f968..e7ea60b 100644 --- a/docs/ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md +++ b/docs/ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md @@ -19,7 +19,7 @@ ### 1.2. Как стало -1. Платежи приходят **в ЦБ** — «Кассовое поступление» с автозаполнением расшифровки платежа. **Эта часть не меняется.** +1. Платежи приходят **в ЦБ** — «Кассовое поступление» с автозаполнением расшифровки платежа. Идентификация платежа и заполнение расшифровки не меняются; разворачивается только направление движения по регистру взаиморасчётов (см. план). 2. ЦБ **собирает поступившие суммы** — с кредита счёта 205.31 — и заполняет ими документ, который **передаёт поступившие платежи в сады**. Механизм тот же: внутриведомственные расчёты, бухгалтерская запись та же. 3. На основании документа передачи в **каждом саду** создаётся свой документ **принятия поступивших платежей из ЦБ**. Документов столько, сколько садов в выписке: по выписке ЦБ за один день платежи поступают в адрес нескольких садов. 4. **Остатки взаиморасчётов с детьми формируются в садах.** Сады смотрят их **типовыми отчётами** — отдельная доработка не требуется. @@ -42,6 +42,7 @@ ## 3. Что не меняется - **Поступление средств:** «Кассовое поступление», автозаполнение расшифровки платежа, идентификация ребёнка по лицевому счёту, счёт расчётов 205.31, КОСГУ 131. +- **Направление движений регистра взаиморасчётов меняется:** «Кассовое поступление» даёт **приход** (поступившие платежи копятся у ЦБ), «Передача платежей» — **расход** (отдаём в сады). Так регистр обнуляется, когда всё передано. - **Бухгалтерские записи** внутриведомственных расчётов. Направления сохраняются буквально: у ЦБ Дт 205.31 — Кт 304.04, у сада Дт 304.04 — Кт 205.31. В сторону ЦБ передавалась дебиторская задолженность, обратно передаётся кредиторская — поэтому записи не меняются. - **Печать извещения (ф. 0504805)** — остаётся у обоих документов, как и было. - **Пульт** `ПС_УправлениеРасчетамиПоРодительскойПлате` — не трогаем: он работает с теми же документами и счетами, меняются только наименования документов. diff --git a/docs/ПЛАН. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md b/docs/ПЛАН. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md index 2f46b51..d398059 100644 --- a/docs/ПЛАН. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md +++ b/docs/ПЛАН. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md @@ -3,7 +3,7 @@ **Ветка:** `feature/ostatki-v-sadah` **Основание:** `docs/ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md` **Дата:** 14.10.2026 -**Статус:** решения по плану получены; один пункт требует подтверждения (см. конец документа) +**Статус:** решения получены полностью; можно начинать правки --- @@ -113,10 +113,8 @@ --- -## Требует подтверждения (один пункт) +## Направление движений регистра (подтверждено) -**Направление движений регистра.** Чтобы передачу можно было заполнять из остатков, а регистр обнулялся при полной передаче, нужно: «Кассовое поступление» даёт **приход** (поступившие платежи копятся у ЦБ), «Передача платежей» — **расход** (отдаём в сады). Тогда всё сходится в ноль. +«Кассовое поступление» даёт **приход** — поступившие платежи копятся у ЦБ. «Передача платежей» даёт **расход** — отдаём в сады. Регистр обнуляется, когда всё передано. -Сейчас в коде наоборот: «Кассовое поступление» пишет **расход** (вид операции «Оплата» — платёж закрывал задолженность перед ЦБ). То есть в новой схеме направление движения у «Кассового поступления» меняется на противоположное — это уже не «ничего не меняется в части поступления средств». - -Подтверди этот момент: меняем направление у «Кассового поступления» на приход — или ты видишь механику иначе? +Это разворот относительно текущего кода: сейчас «Кассовое поступление» пишет расход (вид операции «Оплата» — платёж закрывал задолженность перед ЦБ). Направление меняется вместе с наименованиями: логика следует сути. From b708bfec68bdb7365110377450a74b372b6cb999 Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Tue, 20 Oct 2026 16:11:32 +0500 Subject: [PATCH 06/19] =?UTF-8?q?=D0=9E=D1=81=D1=82=D0=B0=D1=82=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B2=D0=B7=D0=B0=D0=B8=D0=BC=D0=BE=D1=80=D0=B0=D1=81?= =?UTF-8?q?=D1=87=D1=91=D1=82=D0=BE=D0=B2=20=D1=81=20=D0=B4=D0=B5=D1=82?= =?UTF-8?q?=D1=8C=D0=BC=D0=B8=20=D0=B2=20=D1=81=D0=B0=D0=B4=D0=B0=D1=85:?= =?UTF-8?q?=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B8=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=BE=D0=B2=20=D0=B8=20=D1=80=D0=B0=D0=B7=D0=B2?= =?UTF-8?q?=D0=BE=D1=80=D0=BE=D1=82=20=D1=81=D1=85=D0=B5=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Переименование документов расширения: - ПС_ПринятиеЗадолженностиОтУчреждения -> ПС_ПередачаПоступившихПлатежейВУчреждения (ЦБ передаёт поступившие платежи в сады) - ПС_ПередачаЗадолженностиВЦБ -> ПС_ПринятиеПоступившихПлатежейИзЦБ (сад принимает поступившие платежи из ЦБ) Схема и логика: - ЦБ-документ заполняется из остатков регистра ПС_ВзаиморасчетыПоРодительскойПлате (поступившие, но ещё не переданные платежи) - сад-документы вводятся на основании ЦБ-документа, по одному на учреждение - развёрнуто направление движений регистра: «Кассовое поступление» — приход, «Передача платежей» — расход - в проводке по 304.04 ЦБ определяется по организации документа передачи - убран режим «Начальное сальдо»: реквизиты, команды, значение перечисления ПС_ВидыОперацийПоВзаиморасчетам - снят basedOn у документа «Начисление родительской платы» Рабочее место ПС_УправлениеРасчетамиПоРодительскойПлате: - типы колонок таблиц приведены в соответствие с запросами - элементам колонок таблиц присвоены осмысленные имена - сбор поступивших платежей выполняется на конец дня Обновлены роль ПС_ОсновнаяРоль, состав подсистемы РодительскаяПлата, Configuration.mdo --- .../ПС_ВзаиморасчетыПоРодительскойПлате.mdo | 2 +- .../src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl | 274 ++- .../src/Configuration/Configuration.mdo | 4 +- .../Forms/Форма/Form.form | 2004 ++++++++--------- .../Forms/Форма/Module.bsl | 280 ++- .../src/Documents/КассовоеПоступление/ObjectModule.bsl | 11 +- .../Forms/ФормаДокумента/Module.bsl | 2 +- .../НачислениеРодительскойПлаты.mdo | 1 - .../Forms/ФормаДокумента/Module.bsl | 438 ---- .../Forms/ФормаДокумента/Form.form | 272 +-- .../Forms/ФормаДокумента/Module.bsl | 309 +++ .../ManagerModule.bsl | 4 +- .../ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl | 193 ++ .../Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель}/Template.mxlx | 16 +- .../ПС_ПередачаПоступившихПлатежейВУчреждения.mdo} | 71 +- .../Forms/ФормаДокумента/Module.bsl | 232 -- .../ПС_ПринятиеЗадолженностиОтУчреждения/ObjectModule.bsl | 290 --- .../Forms/ФормаДокумента/Form.form | 120 +- .../Forms/ФормаДокумента/Module.bsl | 200 ++ .../ManagerModule.bsl | 4 +- .../ObjectModule.bsl | 149 +- .../Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП}/Template.mxlx | 16 +- .../ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo} | 59 +- .../ПС_ВидыОперацийПоВзаиморасчетам.mdo | 15 +- .../src/Roles/ПС_ОсновнаяРоль/Rights.rights | 4 +- .../Subsystems/РодительскаяПлата/РодительскаяПлата.mdo | 4 +- 26 files changed, 2363 insertions(+), 2611 deletions(-) delete mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Forms/ФормаДокумента/Module.bsl rename 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/{ПС_ПринятиеЗадолженностиОтУчреждения => ПС_ПередачаПоступившихПлатежейВУчреждения}/Forms/ФормаДокумента/Form.form (89%) create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Module.bsl rename 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/{ПС_ПринятиеЗадолженностиОтУчреждения => ПС_ПередачаПоступившихПлатежейВУчреждения}/ManagerModule.bsl (84%) create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl rename 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/{ПС_ПередачаЗадолженностиВЦБ/Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП => ПС_ПередачаПоступившихПлатежейВУчреждения/Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель}/Template.mxlx (99%) rename 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/{ПС_ПринятиеЗадолженностиОтУчреждения/ПС_ПринятиеЗадолженностиОтУчреждения.mdo => ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo} (82%) delete mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Forms/ФормаДокумента/Module.bsl delete mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ObjectModule.bsl rename 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/{ПС_ПередачаЗадолженностиВЦБ => ПС_ПринятиеПоступившихПлатежейИзЦБ}/Forms/ФормаДокумента/Form.form (92%) create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Forms/ФормаДокумента/Module.bsl rename 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/{ПС_ПередачаЗадолженностиВЦБ => ПС_ПринятиеПоступившихПлатежейИзЦБ}/ManagerModule.bsl (85%) rename 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/{ПС_ПередачаЗадолженностиВЦБ => ПС_ПринятиеПоступившихПлатежейИзЦБ}/ObjectModule.bsl (62%) rename 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/{ПС_ПринятиеЗадолженностиОтУчреждения/Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель => ПС_ПринятиеПоступившихПлатежейИзЦБ/Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП}/Template.mxlx (99%) rename 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/{ПС_ПередачаЗадолженностиВЦБ/ПС_ПередачаЗадолженностиВЦБ.mdo => ПС_ПринятиеПоступившихПлатежейИзЦБ/ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo} (89%) diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/AccumulationRegisters/ПС_ВзаиморасчетыПоРодительскойПлате/ПС_ВзаиморасчетыПоРодительскойПлате.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/AccumulationRegisters/ПС_ВзаиморасчетыПоРодительскойПлате/ПС_ВзаиморасчетыПоРодительскойПлате.mdo index 4aa9238..b4f85b3 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/AccumulationRegisters/ПС_ВзаиморасчетыПоРодительскойПлате/ПС_ВзаиморасчетыПоРодительскойПлате.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/AccumulationRegisters/ПС_ВзаиморасчетыПоРодительскойПлате/ПС_ВзаиморасчетыПоРодительскойПлате.mdo @@ -69,7 +69,7 @@ Документ передачи - DocumentRef.ПС_ПередачаЗадолженностиВЦБ + DocumentRef.ПС_ПринятиеПоступившихПлатежейИзЦБ diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl index 46b786d..e7f7f16 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl @@ -1,62 +1,9 @@ // ПС_УчетРодительскойПлаты: общая логика учёта родительской платы -// для документов ПС_ПередачаЗадолженностиВЦБ и ПС_ПринятиеЗадолженностиОтУчреждения. +// для документов ПС_ПередачаПоступившихПлатежейВУчреждения (ЦБ) и ПС_ПринятиеПоступившихПлатежейИзЦБ (учреждение). #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс -// Заполняет КФО документа и КПС строк табличной части "Задолженность" реквизитами учёта, -// определёнными по проводкам документа-источника. -// -// КПС берётся со стороны счёта расчётов по доходам (205.31) - он переносится вместе -// с задолженностью, поэтому одинаков для дебета и кредита проводки передачи. -// -// Параметры: -// ДокументОбъект - ДокументОбъект.ПС_ПередачаЗадолженностиВЦБ, ДокументОбъект.ПС_ПринятиеЗадолженностиОтУчреждения - документ, реквизиты учёта которого заполняются. -// ДокументИсточник - ДокументСсылка.НачислениеРодительскойПлаты, ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ - проведённый документ, проводки которого используются как источник данных. -// -// Возвращаемое значение: -// Булево - Истина, если реквизиты заполнены; Ложь, если у документа-источника нет проводок по счёту расчётов по доходам. -// -Функция ЗаполнитьРеквизитыУчетаПоПроводкам(ДокументОбъект, ДокументИсточник) Экспорт - - Если НЕ ЗначениеЗаполнено(ДокументИсточник) Тогда - Возврат Ложь; - КонецЕсли; - - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ ПЕРВЫЕ 1 - | Проводки.КФО КАК КФО, - | ВЫБОР - | КОГДА Проводки.СчетДт.Код = ""205.31"" - | ТОГДА Проводки.КПСДт - | ИНАЧЕ Проводки.КПСКт - | КОНЕЦ КАК КПС - |ИЗ - | РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ДвиженияССубконто КАК Проводки - |ГДЕ - | Проводки.Регистратор = &ДокументИсточник - | И (Проводки.СчетДт.Код = ""205.31"" - | ИЛИ Проводки.СчетКт.Код = ""205.31"") - | - |УПОРЯДОЧИТЬ ПО - | Проводки.НомерСтроки"; - Запрос.УстановитьПараметр("ДокументИсточник", ДокументИсточник); - - Выборка = Запрос.Выполнить().Выбрать(); - Если НЕ Выборка.Следующий() Тогда - Возврат Ложь; - КонецЕсли; - - ДокументОбъект.КФО = Выборка.КФО; - Для Каждого СтрокаЗадолженности Из ДокументОбъект.Задолженность Цикл - СтрокаЗадолженности.КПС = Выборка.КПС; - КонецЦикла; - - Возврат Истина; - -КонецФункции - // Возвращает счёт, корреспондирующий со счётом расчётов по доходам (205.31), // по умолчанию: 304.04 (внутриведомственные расчёты). // @@ -94,15 +41,20 @@ // Формирует печатную форму извещения (ф. 0504805, ред. 103н) по документу подсистемы. // // Вёрстка и набор областей повторяют типовую печатную форму документа ИзвещениеИсходящее. -// Заполняется та сторона, от которой печатается извещение: для передачи задолженности - -// отправитель (учреждение), для принятия - получатель (централизованная бухгалтерия). +// Заполняется та сторона, от которой печатается извещение: для передачи поступивших платежей - +// отправитель (централизованная бухгалтерия), для принятия платежей - получатель (учреждение). // Суммы и счета берутся из проводок документа, поэтому печатается только проведённый документ. // +// Документ передачи платежей ЦБ охватывает несколько учреждений, поэтому из него формируется +// отдельное извещение на каждое учреждение, присутствующее в табличной части "Задолженность". +// // Параметры: -// ДокументСсылка - ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ, ДокументСсылка.ПС_ПринятиеЗадолженностиОтУчреждения - печатаемый документ. +// ДокументСсылка - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения, +// ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ - печатаемый документ. // // Возвращаемое значение: -// ТабличныйДокумент - печатная форма; пустой табличный документ, если документ не записан, не проведён, нет проводок или не найден макет. +// ТабличныйДокумент - печатная форма; пустой табличный документ, если документ не записан, +// не проведён, нет проводок или не найден макет. // Функция ПечатьИзвещения0504805(ДокументСсылка) Экспорт @@ -122,32 +74,6 @@ Возврат ТабличныйДокумент; КонецЕсли; - Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ") Тогда - ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПС_ПередачаЗадолженностиВЦБ_Извещение0504805"; - Макет = Документы.ПС_ПередачаЗадолженностиВЦБ.ПолучитьМакет("ПФ_MXL_Извещение0504805_103н_ПС_РП"); - СторонаПечати = "Отправитель"; - Отправитель = ДокументОбъект.Организация; - Получатель = ДокументОбъект.ЦБ; - Пояснение = "Передача задолженности по родительской плате за " - + Формат(ДокументОбъект.Период, "ДФ=MMMM yyyy") - + ". Основание: " + Строка(ДокументОбъект.ДокументНачисления) + "."; - Иначе - ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПС_ПринятиеЗадолженности_Извещение0504805"; - Макет = Документы.ПС_ПринятиеЗадолженностиОтУчреждения.ПолучитьМакет("ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель"); - СторонаПечати = "Получатель"; - Отправитель = ДокументОбъект.Учреждение; - Получатель = ДокументОбъект.Организация; - Пояснение = "Принятие задолженности по родительской плате за " - + Формат(ДокументОбъект.Период, "ДФ=MMMM yyyy") - + ". Основание: " + Строка(ДокументОбъект.ДокументПередачи) + "."; - КонецЕсли; - - Если Макет = Неопределено Тогда - ОбщегоНазначения.СообщитьПользователю( - "Печатная форма извещения не сформирована: в документе не найден макет печатной формы."); - Возврат ТабличныйДокумент; - КонецЕсли; - Если НЕ ДокументОбъект.Проведен Тогда ОбщегоНазначения.СообщитьПользователю( "Печатная форма извещения формируется по проводкам документа, поэтому печатается" @@ -163,16 +89,124 @@ Возврат ТабличныйДокумент; КонецЕсли; + Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ") Тогда + + // Учреждение принимает поступившие платежи из ЦБ: печатается сторона получателя. + ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПС_ПринятиеПоступившихПлатежейИзЦБ_Извещение0504805"; + Макет = Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.ПолучитьМакет("ПФ_MXL_Извещение0504805_103н_ПС_РП"); + Если Макет = Неопределено Тогда + ОбщегоНазначения.СообщитьПользователю( + "Печатная форма извещения не сформирована: в документе не найден макет печатной формы."); + Возврат ТабличныйДокумент; + КонецЕсли; + + ДокументПередачи = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументСсылка, "ДокументПередачи").ДокументПередачи; + Отправитель = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументПередачи, "Организация").Организация; + + ПараметрыИзвещения = НоваяСтруктураИзвещения("Получатель", Отправитель, + ДокументОбъект.Организация, + "Принятие поступивших платежей по родительской плате за " + + Формат(ДокументОбъект.Период, "ДФ=MMMM yyyy") + + ". Основание: " + Строка(ДокументПередачи) + "."); + + ВывестиИзвещение(ТабличныйДокумент, Макет, ДокументСсылка, ДокументОбъект, ПараметрыИзвещения, Проводки); + + Иначе + + // ЦБ передаёт поступившие платежи: печатается сторона отправителя, + // отдельное извещение на каждое учреждение документа. + ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПС_ПередачаПоступившихПлатежейВУчреждения_Извещение0504805"; + Макет = Документы.ПС_ПередачаПоступившихПлатежейВУчреждения.ПолучитьМакет("ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель"); + Если Макет = Неопределено Тогда + ОбщегоНазначения.СообщитьПользователю( + "Печатная форма извещения не сформирована: в документе не найден макет печатной формы."); + Возврат ТабличныйДокумент; + КонецЕсли; + + Учреждения = УчрежденияДокументаПередачи(ДокументОбъект); + Если Учреждения.Количество() = 0 Тогда + ОбщегоНазначения.СообщитьПользователю( + "Печатная форма извещения не сформирована: в табличной части ""Задолженность""" + + " не заполнены учреждения."); + Возврат ТабличныйДокумент; + КонецЕсли; + + Для Каждого Учреждение Из Учреждения Цикл + + ПроводкиУчреждения = ПроводкиПоУчреждению(Проводки, Учреждение); + Если ПроводкиУчреждения.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + + ПараметрыИзвещения = НоваяСтруктураИзвещения("Отправитель", ДокументОбъект.Организация, + Учреждение, + "Передача поступивших платежей по родительской плате за " + + Формат(ДокументОбъект.Период, "ДФ=MMMM yyyy") + + ". Основание: " + Строка(ДокументСсылка) + "."); + + ВывестиИзвещение(ТабличныйДокумент, Макет, ДокументСсылка, ДокументОбъект, ПараметрыИзвещения, ПроводкиУчреждения); + + КонецЦикла; + + КонецЕсли; + + УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, 1, Новый СписокЗначений, ДокументСсылка); + + Возврат ТабличныйДокумент; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Формирует структуру параметров одного извещения для вывода. +// +// Параметры: +// СторонаПечати - Строка - "Отправитель" или "Получатель". +// Отправитель - СправочникСсылка.Организации, СправочникСсылка.Контрагенты - отправитель извещения. +// Получатель - СправочникСсылка.Организации, СправочникСсылка.Контрагенты - получатель извещения. +// Пояснение - Строка - пояснение к извещению. +// +// Возвращаемое значение: +// Структура - параметры извещения. +// +Функция НоваяСтруктураИзвещения(СторонаПечати, Отправитель, Получатель, Пояснение) + + ПараметрыИзвещения = Новый Структура; + ПараметрыИзвещения.Вставить("СторонаПечати", СторонаПечати); + ПараметрыИзвещения.Вставить("Отправитель", Отправитель); + ПараметрыИзвещения.Вставить("Получатель", Получатель); + ПараметрыИзвещения.Вставить("Пояснение", Пояснение); + + Возврат ПараметрыИзвещения; + +КонецФункции + +// Выводит в табличный документ одно извещение по переданным проводкам. +// +// Параметры: +// ТабличныйДокумент - ТабличныйДокумент - печатная форма, в которую выводится извещение. +// Макет - ТабличныйДокумент - макет печатной формы извещения. +// ДокументСсылка - ДокументСсылка - печатаемый документ. +// ДокументОбъект - ДокументОбъект - печатаемый документ. +// ПараметрыИзвещения - Структура - параметры извещения, см. НоваяСтруктураИзвещения. +// Проводки - ТаблицаЗначений - проводки извещения, см. ПроводкиИзвещения. +// +Процедура ВывестиИзвещение(ТабличныйДокумент, Макет, ДокументСсылка, ДокументОбъект, ПараметрыИзвещения, Проводки) + + СторонаПечати = ПараметрыИзвещения.СторонаПечати; + ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьЗаголовок.Параметры.Номер = РегистрыСведений.НастройкиПечатиПрефиксаНомера .ПолучитьНомерДляПечатиПоСсылкеИдентификаторуДокумента(ДокументСсылка, ДокументОбъект.Номер); ОбластьЗаголовок.Параметры.Дата = ДокументОбъект.Дата; - ЗаполнитьРеквизитыСтороны(ОбластьЗаголовок.Параметры, "Отправитель", Отправитель); - ЗаполнитьРеквизитыСтороны(ОбластьЗаголовок.Параметры, "Получатель", Получатель); + ЗаполнитьРеквизитыСтороны(ОбластьЗаголовок.Параметры, "Отправитель", ПараметрыИзвещения.Отправитель); + ЗаполнитьРеквизитыСтороны(ОбластьЗаголовок.Параметры, "Получатель", ПараметрыИзвещения.Получатель); ТабличныйДокумент.Вывести(ОбластьЗаголовок); ОбластьПояснение = Макет.ПолучитьОбласть("ПояснениеМБТ"); - ОбластьПояснение.Параметры.ПояснениеМБТ = Пояснение; + ОбластьПояснение.Параметры.ПояснениеМБТ = ПараметрыИзвещения.Пояснение; ТабличныйДокумент.Вывести(ОбластьПояснение); ТабличныйДокумент.Вывести(Макет.ПолучитьОбласть("Шапка")); @@ -203,15 +237,65 @@ ЗаполнитьПодписиСтороны(ОбластьПодвал.Параметры, СторонаПечати, ДокументОбъект); ТабличныйДокумент.Вывести(ОбластьПодвал); - УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, 1, Новый СписокЗначений, ДокументСсылка); +КонецПроцедуры - Возврат ТабличныйДокумент; +// Возвращает список учреждений, присутствующих в табличной части "Задолженность" документа передачи. +// +// Параметры: +// ДокументОбъект - ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения - документ передачи платежей. +// +// Возвращаемое значение: +// Массив из СправочникСсылка.Контрагенты - уникальные учреждения в порядке появления в табличной части. +// +Функция УчрежденияДокументаПередачи(ДокументОбъект) + + Учреждения = Новый Массив; + Для Каждого СтрокаЗадолженности Из ДокументОбъект.Задолженность Цикл + Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.Учреждение) Тогда + Продолжить; + КонецЕсли; + Если Учреждения.Найти(СтрокаЗадолженности.Учреждение) = Неопределено Тогда + Учреждения.Добавить(СтрокаЗадолженности.Учреждение); + КонецЕсли; + КонецЦикла; + + Возврат Учреждения; КонецФункции -#КонецОбласти +// Возвращает проводки документа, относящиеся к указанному учреждению. +// +// Учреждение определяется по субконто кредита счёта расчётов (304.04), поэтому проверяются +// все позиции субконто. +// +// Параметры: +// Проводки - ТаблицаЗначений - проводки документа, см. ПроводкиИзвещения. +// Учреждение - СправочникСсылка.Контрагенты - учреждение, по которому отбираются проводки. +// +// Возвращаемое значение: +// ТаблицаЗначений - проводки указанного учреждения, колонки как у Проводки. +// +Функция ПроводкиПоУчреждению(Проводки, Учреждение) -#Область СлужебныеПроцедурыИФункции + Результат = Проводки.Скопировать(); + СтрокиДляУдаления = Новый Массив; + + Для Каждого Проводка Из Результат Цикл + Если Проводка.СубконтоКт1 = Учреждение + ИЛИ Проводка.СубконтоКт2 = Учреждение + ИЛИ Проводка.СубконтоКт3 = Учреждение Тогда + Продолжить; + КонецЕсли; + СтрокиДляУдаления.Добавить(Проводка); + КонецЦикла; + + Для Каждого Проводка Из СтрокиДляУдаления Цикл + Результат.Удалить(Проводка); + КонецЦикла; + + Возврат Результат; + +КонецФункции // Заполняет реквизиты стороны извещения (отправителя или получателя) для области "Заголовок". // @@ -393,7 +477,8 @@ // ДокументСсылка - ДокументСсылка - печатаемый документ. // // Возвращаемое значение: -// ТаблицаЗначений - колонки: СчетДт, КПСДт, КЭКДт, СчетКт, КПСКт, КЭККт, КФО, Сумма, Содержание. +// ТаблицаЗначений - колонки: СчетДт, КПСДт, КЭКДт, СчетКт, КПСКт, КЭККт, КФО, Сумма, Содержание, +// СубконтоКт1, СубконтоКт2, СубконтоКт3. // Функция ПроводкиИзвещения(ДокументСсылка) @@ -408,7 +493,10 @@ | Проводки.КЭККт КАК КЭККт, | Проводки.КФО КАК КФО, | Проводки.Сумма КАК Сумма, - | Проводки.Содержание КАК Содержание + | Проводки.Содержание КАК Содержание, + | Проводки.СубконтоКт1 КАК СубконтоКт1, + | Проводки.СубконтоКт2 КАК СубконтоКт2, + | Проводки.СубконтоКт3 КАК СубконтоКт3 |ИЗ | РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ДвиженияССубконто(, , Регистратор = &ДокументСсылка) КАК Проводки | diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo index 4e79839..8b55e71 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo @@ -72,8 +72,8 @@ Catalog.Пользователи Catalog.КОСГУ Document.НачислениеРодительскойПлаты - Document.ПС_ПередачаЗадолженностиВЦБ - Document.ПС_ПринятиеЗадолженностиОтУчреждения + Document.ПС_ПринятиеПоступившихПлатежейИзЦБ + Document.ПС_ПередачаПоступившихПлатежейВУчреждения Document.КассовоеПоступление Enum.КВД Enum.ПС_ВидыОперацийПоВзаиморасчетам diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form index bbfeaf5..5e2da5a 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form @@ -282,9 +282,523 @@ СтраницаДокументы 5 + + ТаблицаДокументыПередачи + 61 + + <key>ru</key> + <value>Передачи поступивших платежей в учреждения</value> + + + Style.FieldSelectionBackColor + + + Style.NormalTextFont + true + + true + true + + true + + + ДокументыПередачи + + Top + + ТаблицаДокументыПередачиСсылка + 367 + true + true + + true + + + ДокументыПередачи.Ссылка + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиСсылкаРасширеннаяПодсказка + 369 + Label + true + true + + Left + + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиСсылкаКонтекстноеМеню + 368 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаДокументыПередачиДата + 370 + true + true + + true + + + ДокументыПередачи.Дата + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиДатаРасширеннаяПодсказка + 372 + Label + true + true + + Left + + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиДатаКонтекстноеМеню + 371 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаДокументыПередачиНомер + 373 + true + true + + true + + + ДокументыПередачи.Номер + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиНомерРасширеннаяПодсказка + 375 + Label + true + true + + Left + + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиНомерКонтекстноеМеню + 374 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаДокументыПередачиОрганизация + 376 + + <key>ru</key> + <value>ЦБ</value> + + true + true + + true + + + ДокументыПередачи.Организация + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиОрганизацияРасширеннаяПодсказка + 378 + Label + true + true + + Left + + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиОрганизацияКонтекстноеМеню + 377 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаДокументыПередачиСуммаДокумента + 379 + true + true + + true + + + ДокументыПередачи.СуммаДокумента + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиСуммаДокументаРасширеннаяПодсказка + 381 + Label + true + true + + Left + + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиСуммаДокументаКонтекстноеМеню + 380 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаДокументыПередачиИФО + 382 + true + true + + true + + + ДокументыПередачи.ИФО + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиИФОРасширеннаяПодсказка + 384 + Label + true + true + + Left + + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиИФОКонтекстноеМеню + 383 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаДокументыПередачиПериод + 385 + true + true + + true + + + ДокументыПередачи.Период + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиПериодРасширеннаяПодсказка + 387 + Label + true + true + + Left + + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиПериодКонтекстноеМеню + 386 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаДокументыПередачиПроведен + 388 + true + true + + true + + + ДокументыПередачи.Проведен + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиПроведенРасширеннаяПодсказка + 390 + Label + true + true + + Left + + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиПроведенКонтекстноеМеню + 389 + true + + CheckBoxField + Auto + true + Left + true + + + + ТаблицаДокументыПередачиПометкаУдаления + 391 + true + true + + true + + + ДокументыПередачи.ПометкаУдаления + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиПометкаУдаленияРасширеннаяПодсказка + 393 + Label + true + true + + Left + + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиПометкаУдаленияКонтекстноеМеню + 392 + true + + CheckBoxField + Auto + true + Left + true + + + + ТаблицаДокументыПередачиКоманднаяПанель + 62 + Left + true + + + OnActivateRow + ТаблицаДокументыПередачиПриАктивизацииСтроки + + + ТаблицаДокументыПередачиСтрокаПоиска + 65 + + ТаблицаДокументыПередачиСтрокаПоискаРасширеннаяПодсказка + 67 + Label + true + true + + Left + + + + ТаблицаДокументыПередачиСтрокаПоискаКонтекстноеМеню + 66 + true + + ТаблицаДокументыПередачи + + true + + + + ТаблицаДокументыПередачиСостояниеПросмотра + 71 + + ТаблицаДокументыПередачиСостояниеПросмотраРасширеннаяПодсказка + 73 + Label + true + true + + Left + + + + ТаблицаДокументыПередачиСостояниеПросмотраКонтекстноеМеню + 72 + true + + ViewStatusAddition + ТаблицаДокументыПередачи + + true + + + + ТаблицаДокументыПередачиУправлениеПоиском + 68 + + ТаблицаДокументыПередачиУправлениеПоискомРасширеннаяПодсказка + 70 + Label + true + true + + Left + + + + ТаблицаДокументыПередачиУправлениеПоискомКонтекстноеМеню + 69 + true + + SearchControlAddition + ТаблицаДокументыПередачи + + true + + + + ТаблицаДокументыПередачиРасширеннаяПодсказка + 64 + Label + true + true + + Left + + + + ТаблицаДокументыПередачиКонтекстноеМеню + 63 + 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 +
ТаблицаДокументыПринятия 104 + + <key>ru</key> + <value>Принятия поступивших платежей из ЦБ</value> + + + Style.FieldSelectionBackColor + + + Style.NormalTextFont + true + true true @@ -293,10 +807,10 @@ ДокументыПринятия - None + Top - ТаблицаДокументыПринятияТаблицаДокументыПринятия - 117 + ТаблицаДокументыПринятияСсылка + 394 true true @@ -306,8 +820,8 @@ ДокументыПринятия.Ссылка - ТаблицаДокументыПринятияТаблицаДокументыПринятияРасширеннаяПодсказка - 119 + ТаблицаДокументыПринятияТаблицаДокументыПринятияСсылкаРасширеннаяПодсказка + 396 Label true true @@ -316,8 +830,8 @@ - ТаблицаДокументыПринятияТаблицаДокументыПринятияКонтекстноеМеню - 118 + ТаблицаДокументыПринятияТаблицаДокументыПринятияСсылкаКонтекстноеМеню + 395 true InputField @@ -336,8 +850,8 @@ - ТаблицаДокументыПринятияТаблицаДокументыПринятия1 - 120 + ТаблицаДокументыПринятияДата + 397 true true @@ -347,8 +861,8 @@ ДокументыПринятия.Дата - ТаблицаДокументыПринятияТаблицаДокументыПринятия1РасширеннаяПодсказка - 122 + ТаблицаДокументыПринятияТаблицаДокументыПринятияДатаРасширеннаяПодсказка + 399 Label true true @@ -357,8 +871,8 @@ - ТаблицаДокументыПринятияТаблицаДокументыПринятия1КонтекстноеМеню - 121 + ТаблицаДокументыПринятияТаблицаДокументыПринятияДатаКонтекстноеМеню + 398 true InputField @@ -377,8 +891,8 @@ - ТаблицаДокументыПринятияТаблицаДокументыПринятия2 - 123 + ТаблицаДокументыПринятияНомер + 400 true true @@ -388,8 +902,8 @@ ДокументыПринятия.Номер - ТаблицаДокументыПринятияТаблицаДокументыПринятия2РасширеннаяПодсказка - 125 + ТаблицаДокументыПринятияТаблицаДокументыПринятияНомерРасширеннаяПодсказка + 402 Label true true @@ -398,8 +912,8 @@ - ТаблицаДокументыПринятияТаблицаДокументыПринятия2КонтекстноеМеню - 124 + ТаблицаДокументыПринятияТаблицаДокументыПринятияНомерКонтекстноеМеню + 401 true InputField @@ -418,8 +932,8 @@ - ТаблицаДокументыПринятияТаблицаДокументыПринятия3 - 126 + ТаблицаДокументыПринятияОрганизация + 403 true true @@ -429,8 +943,8 @@ ДокументыПринятия.Организация - ТаблицаДокументыПринятияТаблицаДокументыПринятия3РасширеннаяПодсказка - 128 + ТаблицаДокументыПринятияТаблицаДокументыПринятияОрганизацияРасширеннаяПодсказка + 405 Label true true @@ -439,8 +953,8 @@ - ТаблицаДокументыПринятияТаблицаДокументыПринятия3КонтекстноеМеню - 127 + ТаблицаДокументыПринятияТаблицаДокументыПринятияОрганизацияКонтекстноеМеню + 404 true InputField @@ -459,197 +973,8 @@ - ТаблицаДокументыПринятияТаблицаДокументыПринятия4 - 129 - true - true - - true - - - ДокументыПринятия.Учреждение - - - ТаблицаДокументыПринятияТаблицаДокументыПринятия4РасширеннаяПодсказка - 131 - Label - true - true - - Left - - - - ТаблицаДокументыПринятияТаблицаДокументыПринятия4КонтекстноеМеню - 130 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаДокументыПринятияТаблицаДокументыПринятия5 - 132 - true - true - - true - - - ДокументыПринятия.ИФО - - - ТаблицаДокументыПринятияТаблицаДокументыПринятия5РасширеннаяПодсказка - 134 - Label - true - true - - Left - - - - ТаблицаДокументыПринятияТаблицаДокументыПринятия5КонтекстноеМеню - 133 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаДокументыПринятияТаблицаДокументыПринятия6 - 135 - true - true - - true - - - ДокументыПринятия.Период - - - ТаблицаДокументыПринятияТаблицаДокументыПринятия6РасширеннаяПодсказка - 137 - Label - true - true - - Left - - - - ТаблицаДокументыПринятияТаблицаДокументыПринятия6КонтекстноеМеню - 136 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаДокументыПринятияТаблицаДокументыПринятия7 - 138 - true - true - - true - - - ДокументыПринятия.Проведен - - - ТаблицаДокументыПринятияТаблицаДокументыПринятия7РасширеннаяПодсказка - 140 - Label - true - true - - Left - - - - ТаблицаДокументыПринятияТаблицаДокументыПринятия7КонтекстноеМеню - 139 - true - - CheckBoxField - Auto - true - Left - true - - - - ТаблицаДокументыПринятияТаблицаДокументыПринятия8 - 141 - true - true - - true - - - ДокументыПринятия.ПометкаУдаления - - - ТаблицаДокументыПринятияТаблицаДокументыПринятия8РасширеннаяПодсказка - 143 - Label - true - true - - Left - - - - ТаблицаДокументыПринятияТаблицаДокументыПринятия8КонтекстноеМеню - 142 - true - - CheckBoxField - Auto - true - Left - true - - - - ТаблицаДокументыПринятияТаблицаДокументыПринятия9 - 144 + ТаблицаДокументыПринятияСуммаДокумента + 406 true true @@ -659,8 +984,8 @@ ДокументыПринятия.СуммаДокумента - ТаблицаДокументыПринятияТаблицаДокументыПринятия9РасширеннаяПодсказка - 146 + ТаблицаДокументыПринятияТаблицаДокументыПринятияСуммаДокументаРасширеннаяПодсказка + 408 Label true true @@ -669,8 +994,8 @@ - ТаблицаДокументыПринятияТаблицаДокументыПринятия9КонтекстноеМеню - 145 + ТаблицаДокументыПринятияТаблицаДокументыПринятияСуммаДокументаКонтекстноеМеню + 407 true InputField @@ -689,23 +1014,19 @@ - ДокументыПринятияПередачаСальдо - 313 - - <key>ru</key> - <value>Начальное сальдо</value> - + ТаблицаДокументыПринятияИФО + 409 true true true - ДокументыПринятия.ПередачаСальдо + ДокументыПринятия.ИФО - ТаблицаДокументыПринятияДокументыПринятияПередачаСальдоРасширеннаяПодсказка - 315 + ТаблицаДокументыПринятияТаблицаДокументыПринятияИФОРасширеннаяПодсказка + 411 Label true true @@ -714,8 +1035,90 @@ - ТаблицаДокументыПринятияДокументыПринятияПередачаСальдоКонтекстноеМеню - 314 + ТаблицаДокументыПринятияТаблицаДокументыПринятияИФОКонтекстноеМеню + 410 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаДокументыПринятияПериод + 412 + true + true + + true + + + ДокументыПринятия.Период + + + ТаблицаДокументыПринятияТаблицаДокументыПринятияПериодРасширеннаяПодсказка + 414 + Label + true + true + + Left + + + + ТаблицаДокументыПринятияТаблицаДокументыПринятияПериодКонтекстноеМеню + 413 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаДокументыПринятияПроведен + 415 + true + true + + true + + + ДокументыПринятия.Проведен + + + ТаблицаДокументыПринятияТаблицаДокументыПринятияПроведенРасширеннаяПодсказка + 417 + Label + true + true + + Left + + + + ТаблицаДокументыПринятияТаблицаДокументыПринятияПроведенКонтекстноеМеню + 416 true CheckBoxField @@ -725,6 +1128,121 @@ true + + ТаблицаДокументыПринятияПометкаУдаления + 418 + true + true + + true + + + ДокументыПринятия.ПометкаУдаления + + + ТаблицаДокументыПринятияТаблицаДокументыПринятияПометкаУдаленияРасширеннаяПодсказка + 420 + Label + true + true + + Left + + + + ТаблицаДокументыПринятияТаблицаДокументыПринятияПометкаУдаленияКонтекстноеМеню + 419 + true + + CheckBoxField + Auto + true + Left + true + + + + ТаблицаДокументыПринятияЦБ + 421 + true + true + + true + + + ДокументыПринятия.ЦБ + + + ТаблицаДокументыПринятияТаблицаДокументыПринятияЦБРасширеннаяПодсказка + 423 + Label + true + true + + Left + + + + ТаблицаДокументыПринятияТаблицаДокументыПринятияЦБКонтекстноеМеню + 422 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаДокументыПринятияДокументПередачи + 424 + true + true + + true + + + ДокументыПринятия.ДокументПередачи + + + ТаблицаДокументыПринятияТаблицаДокументыПринятияДокументПередачиРасширеннаяПодсказка + 426 + Label + true + true + + Left + + + + ТаблицаДокументыПринятияТаблицаДокументыПринятияДокументПередачиКонтекстноеМеню + 425 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + ТаблицаДокументыПринятияКоманднаяПанель 105 @@ -844,568 +1362,6 @@ true - - ТаблицаДокументыПередачи - 61 - true - true - - true - - - ДокументыПередачи - - None - - ТаблицаДокументыПередачиТаблицаДокументыПередачи - 74 - true - true - - true - - - ДокументыПередачи.Ссылка - - - ТаблицаДокументыПередачиТаблицаДокументыПередачиРасширеннаяПодсказка - 76 - Label - true - true - - Left - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачиКонтекстноеМеню - 75 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи1 - 77 - true - true - - true - - - ДокументыПередачи.Дата - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи1РасширеннаяПодсказка - 79 - Label - true - true - - Left - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи1КонтекстноеМеню - 78 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи2 - 80 - true - true - - true - - - ДокументыПередачи.Номер - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи2РасширеннаяПодсказка - 82 - Label - true - true - - Left - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи2КонтекстноеМеню - 81 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи3 - 83 - true - true - - true - - - ДокументыПередачи.Организация - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи3РасширеннаяПодсказка - 85 - Label - true - true - - Left - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи3КонтекстноеМеню - 84 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи4 - 86 - true - true - - true - - - ДокументыПередачи.ЦБ - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи4РасширеннаяПодсказка - 88 - Label - true - true - - Left - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи4КонтекстноеМеню - 87 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи5 - 89 - true - true - - true - - - ДокументыПередачи.ИФО - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи5РасширеннаяПодсказка - 91 - Label - true - true - - Left - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи5КонтекстноеМеню - 90 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи6 - 92 - true - true - - true - - - ДокументыПередачи.Период - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи6РасширеннаяПодсказка - 94 - Label - true - true - - Left - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи6КонтекстноеМеню - 93 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи7 - 95 - true - true - - true - - - ДокументыПередачи.СуммаДокумента - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи7РасширеннаяПодсказка - 97 - Label - true - true - - Left - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи7КонтекстноеМеню - 96 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи8 - 98 - true - true - - true - - - ДокументыПередачи.Проведен - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи8РасширеннаяПодсказка - 100 - Label - true - true - - Left - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи8КонтекстноеМеню - 99 - true - - CheckBoxField - Auto - true - Left - true - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи9 - 101 - true - true - - true - - - ДокументыПередачи.ПометкаУдаления - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи9РасширеннаяПодсказка - 103 - Label - true - true - - Left - - - - ТаблицаДокументыПередачиТаблицаДокументыПередачи9КонтекстноеМеню - 102 - true - - CheckBoxField - Auto - true - Left - true - - - - ДокументыПередачиПередачаСальдо - 310 - - <key>ru</key> - <value>Начальное сальдо</value> - - true - true - - true - - - ДокументыПередачи.ПередачаСальдо - - - ТаблицаДокументыПередачиДокументыПередачиПередачаСальдоРасширеннаяПодсказка - 312 - Label - true - true - - Left - - - - ТаблицаДокументыПередачиДокументыПередачиПередачаСальдоКонтекстноеМеню - 311 - true - - CheckBoxField - Auto - true - Left - true - - - - ТаблицаДокументыПередачиКоманднаяПанель - 62 - Left - true - - - ТаблицаДокументыПередачиСтрокаПоиска - 65 - - ТаблицаДокументыПередачиСтрокаПоискаРасширеннаяПодсказка - 67 - Label - true - true - - Left - - - - ТаблицаДокументыПередачиСтрокаПоискаКонтекстноеМеню - 66 - true - - ТаблицаДокументыПередачи - - true - - - - ТаблицаДокументыПередачиСостояниеПросмотра - 71 - - ТаблицаДокументыПередачиСостояниеПросмотраРасширеннаяПодсказка - 73 - Label - true - true - - Left - - - - ТаблицаДокументыПередачиСостояниеПросмотраКонтекстноеМеню - 72 - true - - ViewStatusAddition - ТаблицаДокументыПередачи - - true - - - - ТаблицаДокументыПередачиУправлениеПоиском - 68 - - ТаблицаДокументыПередачиУправлениеПоискомРасширеннаяПодсказка - 70 - Label - true - true - - Left - - - - ТаблицаДокументыПередачиУправлениеПоискомКонтекстноеМеню - 69 - true - - SearchControlAddition - ТаблицаДокументыПередачи - - true - - - - ТаблицаДокументыПередачиРасширеннаяПодсказка - 64 - Label - true - true - - Left - - - - ТаблицаДокументыПередачиКонтекстноеМеню - 63 - 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 @@ -1447,8 +1403,8 @@ None - ТаблицаНачисленияТаблицаНачисления - 241 + ТаблицаНачисленияСсылка + 427 true true @@ -1458,8 +1414,8 @@ Начисления.Ссылка - ТаблицаНачисленияТаблицаНачисленияРасширеннаяПодсказка - 243 + ТаблицаНачисленияТаблицаНачисленияСсылкаРасширеннаяПодсказка + 429 Label true true @@ -1468,8 +1424,8 @@ - ТаблицаНачисленияТаблицаНачисленияКонтекстноеМеню - 242 + ТаблицаНачисленияТаблицаНачисленияСсылкаКонтекстноеМеню + 428 true InputField @@ -1488,8 +1444,8 @@ - ТаблицаНачисленияТаблицаНачисления1 - 244 + ТаблицаНачисленияДата + 430 true true @@ -1499,8 +1455,8 @@ Начисления.Дата - ТаблицаНачисленияТаблицаНачисления1РасширеннаяПодсказка - 246 + ТаблицаНачисленияТаблицаНачисленияДатаРасширеннаяПодсказка + 432 Label true true @@ -1509,8 +1465,8 @@ - ТаблицаНачисленияТаблицаНачисления1КонтекстноеМеню - 245 + ТаблицаНачисленияТаблицаНачисленияДатаКонтекстноеМеню + 431 true InputField @@ -1529,8 +1485,8 @@ - ТаблицаНачисленияТаблицаНачисления2 - 247 + ТаблицаНачисленияНомер + 433 true true @@ -1540,8 +1496,8 @@ Начисления.Номер - ТаблицаНачисленияТаблицаНачисления2РасширеннаяПодсказка - 249 + ТаблицаНачисленияТаблицаНачисленияНомерРасширеннаяПодсказка + 435 Label true true @@ -1550,8 +1506,8 @@ - ТаблицаНачисленияТаблицаНачисления2КонтекстноеМеню - 248 + ТаблицаНачисленияТаблицаНачисленияНомерКонтекстноеМеню + 434 true InputField @@ -1570,8 +1526,8 @@ - ТаблицаНачисленияТаблицаНачисления3 - 250 + ТаблицаНачисленияОрганизация + 436 true true @@ -1581,8 +1537,8 @@ Начисления.Организация - ТаблицаНачисленияТаблицаНачисления3РасширеннаяПодсказка - 252 + ТаблицаНачисленияТаблицаНачисленияОрганизацияРасширеннаяПодсказка + 438 Label true true @@ -1591,8 +1547,8 @@ - ТаблицаНачисленияТаблицаНачисления3КонтекстноеМеню - 251 + ТаблицаНачисленияТаблицаНачисленияОрганизацияКонтекстноеМеню + 437 true InputField @@ -1611,8 +1567,8 @@ - ТаблицаНачисленияТаблицаНачисления4 - 253 + ТаблицаНачисленияИФО + 463 true true @@ -1622,8 +1578,8 @@ Начисления.ИФО - ТаблицаНачисленияТаблицаНачисления4РасширеннаяПодсказка - 255 + ТаблицаНачисленияТаблицаНачисленияИФОРасширеннаяПодсказка + 465 Label true true @@ -1632,8 +1588,8 @@ - ТаблицаНачисленияТаблицаНачисления4КонтекстноеМеню - 254 + ТаблицаНачисленияТаблицаНачисленияИФОКонтекстноеМеню + 464 true InputField @@ -1652,8 +1608,8 @@ - ТаблицаНачисленияТаблицаНачисления5 - 256 + ТаблицаНачисленияПериод + 466 true true @@ -1663,8 +1619,8 @@ Начисления.Период - ТаблицаНачисленияТаблицаНачисления5РасширеннаяПодсказка - 258 + ТаблицаНачисленияТаблицаНачисленияПериодРасширеннаяПодсказка + 468 Label true true @@ -1673,8 +1629,8 @@ - ТаблицаНачисленияТаблицаНачисления5КонтекстноеМеню - 257 + ТаблицаНачисленияТаблицаНачисленияПериодКонтекстноеМеню + 467 true InputField @@ -1693,8 +1649,8 @@ - ТаблицаНачисленияТаблицаНачисления6 - 259 + ТаблицаНачисленияСуммаДокумента + 469 true true @@ -1704,8 +1660,8 @@ Начисления.СуммаДокумента - ТаблицаНачисленияТаблицаНачисления6РасширеннаяПодсказка - 261 + ТаблицаНачисленияТаблицаНачисленияСуммаДокументаРасширеннаяПодсказка + 471 Label true true @@ -1714,8 +1670,8 @@ - ТаблицаНачисленияТаблицаНачисления6КонтекстноеМеню - 260 + ТаблицаНачисленияТаблицаНачисленияСуммаДокументаКонтекстноеМеню + 470 true InputField @@ -1734,8 +1690,8 @@ - ТаблицаНачисленияТаблицаНачисления7 - 262 + ТаблицаНачисленияПроведен + 472 true true @@ -1745,8 +1701,8 @@ Начисления.Проведен - ТаблицаНачисленияТаблицаНачисления7РасширеннаяПодсказка - 264 + ТаблицаНачисленияТаблицаНачисленияПроведенРасширеннаяПодсказка + 474 Label true true @@ -1755,8 +1711,8 @@ - ТаблицаНачисленияТаблицаНачисления7КонтекстноеМеню - 263 + ТаблицаНачисленияТаблицаНачисленияПроведенКонтекстноеМеню + 473 true CheckBoxField @@ -1767,8 +1723,8 @@ - ТаблицаНачисленияТаблицаНачисления8 - 265 + ТаблицаНачисленияПометкаУдаления + 475 true true @@ -1778,8 +1734,8 @@ Начисления.ПометкаУдаления - ТаблицаНачисленияТаблицаНачисления8РасширеннаяПодсказка - 267 + ТаблицаНачисленияТаблицаНачисленияПометкаУдаленияРасширеннаяПодсказка + 477 Label true true @@ -1788,8 +1744,8 @@ - ТаблицаНачисленияТаблицаНачисления8КонтекстноеМеню - 266 + ТаблицаНачисленияТаблицаНачисленияПометкаУдаленияКонтекстноеМеню + 476 true CheckBoxField @@ -1959,8 +1915,8 @@ None - ТаблицаСверкаТаблицаСверка - 281 + ТаблицаСверкаДокументПередачи + 439 true true @@ -1970,8 +1926,8 @@ Сверка.ДокументПередачи - ТаблицаСверкаТаблицаСверкаРасширеннаяПодсказка - 283 + ТаблицаСверкаТаблицаСверкаДокументПередачиРасширеннаяПодсказка + 441 Label true true @@ -1980,8 +1936,8 @@ - ТаблицаСверкаТаблицаСверкаКонтекстноеМеню - 282 + ТаблицаСверкаТаблицаСверкаДокументПередачиКонтекстноеМеню + 440 true InputField @@ -1994,14 +1950,13 @@ true true true - true true Normal - ТаблицаСверкаТаблицаСверка1 - 284 + ТаблицаСверкаПериод + 442 true true @@ -2011,8 +1966,8 @@ Сверка.Период - ТаблицаСверкаТаблицаСверка1РасширеннаяПодсказка - 286 + ТаблицаСверкаТаблицаСверкаПериодРасширеннаяПодсказка + 444 Label true true @@ -2021,8 +1976,8 @@ - ТаблицаСверкаТаблицаСверка1КонтекстноеМеню - 285 + ТаблицаСверкаТаблицаСверкаПериодКонтекстноеМеню + 443 true InputField @@ -2041,8 +1996,8 @@ - ТаблицаСверкаТаблицаСверка2 - 287 + ТаблицаСверкаСад + 445 true true @@ -2052,8 +2007,8 @@ Сверка.Сад - ТаблицаСверкаТаблицаСверка2РасширеннаяПодсказка - 289 + ТаблицаСверкаТаблицаСверкаСадРасширеннаяПодсказка + 447 Label true true @@ -2062,8 +2017,8 @@ - ТаблицаСверкаТаблицаСверка2КонтекстноеМеню - 288 + ТаблицаСверкаТаблицаСверкаСадКонтекстноеМеню + 446 true InputField @@ -2076,14 +2031,13 @@ true true true - true true Normal - ТаблицаСверкаТаблицаСверка3 - 290 + ТаблицаСверкаЦБ + 448 true true @@ -2093,8 +2047,8 @@ Сверка.ЦБ - ТаблицаСверкаТаблицаСверка3РасширеннаяПодсказка - 292 + ТаблицаСверкаТаблицаСверкаЦБРасширеннаяПодсказка + 450 Label true true @@ -2103,8 +2057,8 @@ - ТаблицаСверкаТаблицаСверка3КонтекстноеМеню - 291 + ТаблицаСверкаТаблицаСверкаЦБКонтекстноеМеню + 449 true InputField @@ -2117,14 +2071,13 @@ true true true - true true Normal - ТаблицаСверкаТаблицаСверка4 - 293 + ТаблицаСверкаСуммаПередано + 451 true true @@ -2134,8 +2087,8 @@ Сверка.СуммаПередано - ТаблицаСверкаТаблицаСверка4РасширеннаяПодсказка - 295 + ТаблицаСверкаТаблицаСверкаСуммаПереданоРасширеннаяПодсказка + 453 Label true true @@ -2144,8 +2097,8 @@ - ТаблицаСверкаТаблицаСверка4КонтекстноеМеню - 294 + ТаблицаСверкаТаблицаСверкаСуммаПереданоКонтекстноеМеню + 452 true InputField @@ -2164,8 +2117,8 @@ - ТаблицаСверкаТаблицаСверка5 - 296 + ТаблицаСверкаСуммаПринято + 454 true true @@ -2175,8 +2128,8 @@ Сверка.СуммаПринято - ТаблицаСверкаТаблицаСверка5РасширеннаяПодсказка - 298 + ТаблицаСверкаТаблицаСверкаСуммаПринятоРасширеннаяПодсказка + 456 Label true true @@ -2185,8 +2138,8 @@ - ТаблицаСверкаТаблицаСверка5КонтекстноеМеню - 297 + ТаблицаСверкаТаблицаСверкаСуммаПринятоКонтекстноеМеню + 455 true InputField @@ -2205,8 +2158,8 @@ - ТаблицаСверкаТаблицаСверка6 - 299 + ТаблицаСверкаРасхождение + 457 true true @@ -2216,8 +2169,8 @@ Сверка.Расхождение - ТаблицаСверкаТаблицаСверка6РасширеннаяПодсказка - 301 + ТаблицаСверкаТаблицаСверкаРасхождениеРасширеннаяПодсказка + 459 Label true true @@ -2226,8 +2179,8 @@ - ТаблицаСверкаТаблицаСверка6КонтекстноеМеню - 300 + ТаблицаСверкаТаблицаСверкаРасхождениеКонтекстноеМеню + 458 true InputField @@ -2246,8 +2199,8 @@ - ТаблицаСверкаТаблицаСверка7 - 302 + ТаблицаСверкаПередачаПроведена + 460 true true @@ -2257,8 +2210,8 @@ Сверка.ПередачаПроведена - ТаблицаСверкаТаблицаСверка7РасширеннаяПодсказка - 304 + ТаблицаСверкаТаблицаСверкаПередачаПроведенаРасширеннаяПодсказка + 462 Label true true @@ -2267,8 +2220,8 @@ - ТаблицаСверкаТаблицаСверка7КонтекстноеМеню - 303 + ТаблицаСверкаТаблицаСверкаПередачаПроведенаКонтекстноеМеню + 461 true CheckBoxField @@ -2438,8 +2391,8 @@ None - ТаблицаОстатковВыводТаблицаОстатковВывод - 40 + ТаблицаОстатковВыводИФО + 478 true true @@ -2449,8 +2402,8 @@ ТаблицаОстатков.ИФО - ТаблицаОстатковВыводТаблицаОстатковВыводРасширеннаяПодсказка - 42 + ТаблицаОстатковВыводТаблицаОстатковВыводИФОРасширеннаяПодсказка + 480 Label true true @@ -2459,8 +2412,8 @@ - ТаблицаОстатковВыводТаблицаОстатковВыводКонтекстноеМеню - 41 + ТаблицаОстатковВыводТаблицаОстатковВыводИФОКонтекстноеМеню + 479 true InputField @@ -2479,8 +2432,8 @@ - ТаблицаОстатковВыводТаблицаОстатковВывод1 - 43 + ТаблицаОстатковВыводОрганизация + 481 true true @@ -2490,8 +2443,8 @@ ТаблицаОстатков.Организация - ТаблицаОстатковВыводТаблицаОстатковВывод1РасширеннаяПодсказка - 45 + ТаблицаОстатковВыводТаблицаОстатковВыводОрганизацияРасширеннаяПодсказка + 483 Label true true @@ -2500,8 +2453,8 @@ - ТаблицаОстатковВыводТаблицаОстатковВывод1КонтекстноеМеню - 44 + ТаблицаОстатковВыводТаблицаОстатковВыводОрганизацияКонтекстноеМеню + 482 true InputField @@ -2520,8 +2473,8 @@ - ТаблицаОстатковВыводТаблицаОстатковВывод6 - 58 + ТаблицаОстатковВыводСчет + 484 true true @@ -2531,8 +2484,8 @@ ТаблицаОстатков.Счет - ТаблицаОстатковВыводТаблицаОстатковВывод6РасширеннаяПодсказка - 60 + ТаблицаОстатковВыводТаблицаОстатковВыводСчетРасширеннаяПодсказка + 486 Label true true @@ -2541,8 +2494,8 @@ - ТаблицаОстатковВыводТаблицаОстатковВывод6КонтекстноеМеню - 59 + ТаблицаОстатковВыводТаблицаОстатковВыводСчетКонтекстноеМеню + 485 true InputField @@ -2561,8 +2514,8 @@ - ТаблицаОстатковВыводТаблицаОстатковВывод2 - 46 + ТаблицаОстатковВыводСуммаНачальныйОстаток + 487 true true @@ -2572,8 +2525,8 @@ ТаблицаОстатков.СуммаНачальныйОстаток - ТаблицаОстатковВыводТаблицаОстатковВывод2РасширеннаяПодсказка - 48 + ТаблицаОстатковВыводТаблицаОстатковВыводСуммаНачальныйОстатокРасширеннаяПодсказка + 489 Label true true @@ -2582,8 +2535,8 @@ - ТаблицаОстатковВыводТаблицаОстатковВывод2КонтекстноеМеню - 47 + ТаблицаОстатковВыводТаблицаОстатковВыводСуммаНачальныйОстатокКонтекстноеМеню + 488 true InputField @@ -2602,8 +2555,8 @@ - ТаблицаОстатковВыводТаблицаОстатковВывод3 - 49 + ТаблицаОстатковВыводСуммаОборотДт + 490 true true @@ -2613,8 +2566,8 @@ ТаблицаОстатков.СуммаОборотДт - ТаблицаОстатковВыводТаблицаОстатковВывод3РасширеннаяПодсказка - 51 + ТаблицаОстатковВыводТаблицаОстатковВыводСуммаОборотДтРасширеннаяПодсказка + 492 Label true true @@ -2623,8 +2576,8 @@ - ТаблицаОстатковВыводТаблицаОстатковВывод3КонтекстноеМеню - 50 + ТаблицаОстатковВыводТаблицаОстатковВыводСуммаОборотДтКонтекстноеМеню + 491 true InputField @@ -2643,8 +2596,8 @@ - ТаблицаОстатковВыводТаблицаОстатковВывод4 - 52 + ТаблицаОстатковВыводСуммаОборотКт + 493 true true @@ -2654,8 +2607,8 @@ ТаблицаОстатков.СуммаОборотКт - ТаблицаОстатковВыводТаблицаОстатковВывод4РасширеннаяПодсказка - 54 + ТаблицаОстатковВыводТаблицаОстатковВыводСуммаОборотКтРасширеннаяПодсказка + 495 Label true true @@ -2664,8 +2617,8 @@ - ТаблицаОстатковВыводТаблицаОстатковВывод4КонтекстноеМеню - 53 + ТаблицаОстатковВыводТаблицаОстатковВыводСуммаОборотКтКонтекстноеМеню + 494 true InputField @@ -2684,8 +2637,8 @@ - ТаблицаОстатковВыводТаблицаОстатковВывод5 - 55 + ТаблицаОстатковВыводСуммаКонечныйОстаток + 496 true true @@ -2695,8 +2648,8 @@ ТаблицаОстатков.СуммаКонечныйОстаток - ТаблицаОстатковВыводТаблицаОстатковВывод5РасширеннаяПодсказка - 57 + ТаблицаОстатковВыводТаблицаОстатковВыводСуммаКонечныйОстатокРасширеннаяПодсказка + 498 Label true true @@ -2705,8 +2658,8 @@ - ТаблицаОстатковВыводТаблицаОстатковВывод5КонтекстноеМеню - 56 + ТаблицаОстатковВыводТаблицаОстатковВыводСуммаКонечныйОстатокКонтекстноеМеню + 497 true InputField @@ -2884,8 +2837,8 @@ None - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления - 331 + ТаблицаКассовыеПоступленияСсылка + 499 true true @@ -2895,8 +2848,8 @@ КассовыеПоступления.Ссылка - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияРасширеннаяПодсказка - 333 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияСсылкаРасширеннаяПодсказка + 501 Label true true @@ -2905,8 +2858,8 @@ - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияКонтекстноеМеню - 332 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияСсылкаКонтекстноеМеню + 500 true InputField @@ -2925,8 +2878,8 @@ - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления1 - 334 + ТаблицаКассовыеПоступленияДата + 502 true true @@ -2936,8 +2889,8 @@ КассовыеПоступления.Дата - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления1РасширеннаяПодсказка - 336 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияДатаРасширеннаяПодсказка + 504 Label true true @@ -2946,8 +2899,8 @@ - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления1КонтекстноеМеню - 335 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияДатаКонтекстноеМеню + 503 true InputField @@ -2966,8 +2919,8 @@ - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления2 - 337 + ТаблицаКассовыеПоступленияНомер + 505 true true @@ -2977,8 +2930,8 @@ КассовыеПоступления.Номер - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления2РасширеннаяПодсказка - 339 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияНомерРасширеннаяПодсказка + 507 Label true true @@ -2987,8 +2940,8 @@ - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления2КонтекстноеМеню - 338 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияНомерКонтекстноеМеню + 506 true InputField @@ -3007,8 +2960,8 @@ - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления3 - 340 + ТаблицаКассовыеПоступленияОрганизация + 508 true true @@ -3018,8 +2971,8 @@ КассовыеПоступления.Организация - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления3РасширеннаяПодсказка - 342 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияОрганизацияРасширеннаяПодсказка + 510 Label true true @@ -3028,8 +2981,8 @@ - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления3КонтекстноеМеню - 341 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияОрганизацияКонтекстноеМеню + 509 true InputField @@ -3048,8 +3001,8 @@ - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления4 - 343 + ТаблицаКассовыеПоступленияСуммаДокумента + 511 true true @@ -3059,8 +3012,8 @@ КассовыеПоступления.СуммаДокумента - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления4РасширеннаяПодсказка - 345 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияСуммаДокументаРасширеннаяПодсказка + 513 Label true true @@ -3069,8 +3022,8 @@ - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления4КонтекстноеМеню - 344 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияСуммаДокументаКонтекстноеМеню + 512 true InputField @@ -3089,8 +3042,8 @@ - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления5 - 346 + ТаблицаКассовыеПоступленияПроведен + 514 true true @@ -3100,8 +3053,8 @@ КассовыеПоступления.Проведен - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления5РасширеннаяПодсказка - 348 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияПроведенРасширеннаяПодсказка + 516 Label true true @@ -3110,8 +3063,8 @@ - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления5КонтекстноеМеню - 347 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияПроведенКонтекстноеМеню + 515 true CheckBoxField @@ -3122,8 +3075,8 @@ - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления6 - 349 + ТаблицаКассовыеПоступленияПометкаУдаления + 517 true true @@ -3133,8 +3086,8 @@ КассовыеПоступления.ПометкаУдаления - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления6РасширеннаяПодсказка - 351 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияПометкаУдаленияРасширеннаяПодсказка + 519 Label true true @@ -3143,8 +3096,8 @@ - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления6КонтекстноеМеню - 350 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияПометкаУдаленияКонтекстноеМеню + 518 true CheckBoxField @@ -3155,8 +3108,8 @@ - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления7 - 352 + ТаблицаКассовыеПоступленияСтрокВсего + 520 true true @@ -3166,8 +3119,8 @@ КассовыеПоступления.СтрокВсего - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления7РасширеннаяПодсказка - 354 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияСтрокВсегоРасширеннаяПодсказка + 522 Label true true @@ -3176,8 +3129,8 @@ - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления7КонтекстноеМеню - 353 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияСтрокВсегоКонтекстноеМеню + 521 true InputField @@ -3196,8 +3149,8 @@ - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления8 - 355 + ТаблицаКассовыеПоступленияСтрокНеРаспознано + 523 true true @@ -3207,8 +3160,8 @@ КассовыеПоступления.СтрокНеРаспознано - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления8РасширеннаяПодсказка - 357 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияСтрокНеРаспознаноРасширеннаяПодсказка + 525 Label true true @@ -3217,8 +3170,8 @@ - ТаблицаКассовыеПоступленияТаблицаКассовыеПоступления8КонтекстноеМеню - 356 + ТаблицаКассовыеПоступленияТаблицаКассовыеПоступленияСтрокНеРаспознаноКонтекстноеМеню + 524 true InputField @@ -3607,7 +3560,7 @@ 14 - DocumentRef.ПС_ПередачаЗадолженностиВЦБ + DocumentRef.ПС_ПередачаПоступившихПлатежейВУчреждения true @@ -3673,23 +3626,6 @@ true - - ЦБ - - <key>ru</key> - <value>ЦБ</value> - - 18 - - CatalogRef.Контрагенты - - - true - - - true - - ИФО @@ -3824,7 +3760,7 @@ 24 - DocumentRef.ПС_ПринятиеЗадолженностиОтУчреждения + DocumentRef.ПС_ПринятиеПоступившихПлатежейИзЦБ true @@ -3877,7 +3813,7 @@ Организация <key>ru</key> - <value>Организация (ЦБ)</value> + <value>Получатель (учреждение)</value> 27 @@ -4016,6 +3952,40 @@ true + + ЦБ + + <key>ru</key> + <value>ЦБ</value> + + 65 + + CatalogRef.Контрагенты + + + true + + + true + + + + ДокументПередачи + + <key>ru</key> + <value>Документ передачи</value> + + 66 + + DocumentRef.ПС_ПередачаПоступившихПлатежейВУчреждения + + + true + + + true + + Начисления @@ -4220,7 +4190,7 @@ 45 - DocumentRef.ПС_ПередачаЗадолженностиВЦБ + DocumentRef.ПС_ПередачаПоступившихПлатежейВУчреждения true @@ -4255,7 +4225,7 @@ 47 - CatalogRef.Организации + CatalogRef.Контрагенты true @@ -4272,7 +4242,7 @@ 48 - CatalogRef.Контрагенты + CatalogRef.Организации true diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl index 4f8c366..ec1bef8 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl @@ -22,6 +22,26 @@ #КонецОбласти +#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаДокументыПередачи + +// Сужает таблицу принятий до принятий по выбранному документу передачи. +// Документ передачи берётся из текущей строки таблицы "Документы передачи": +// у одного документа передачи может быть несколько документов принятия (по одному на сад). +// +&НаКлиенте +Процедура ТаблицаДокументыПередачиПриАктивизацииСтроки(Элемент) + + ТекущиеДанные = Элемент.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ЗаполнитьПринятияПоПередачеНаСервере(ТекущиеДанные.Ссылка); + +КонецПроцедуры + +#КонецОбласти + #Область ОбработчикиКомандФормы // Обновляет данные таблиц формы по установленным фильтрам. @@ -80,37 +100,64 @@ Возврат; КонецЕсли; - // Отборы формы заданы в терминах ЦБ: Организация - это ЦБ (справочник Организации), - // Учреждение - сад (справочник Контрагенты). Документы начисления и передачи хранят - // сад как Организацию, а ЦБ в документе передачи - как Контрагента. Приводим значения - // отбора к типам, которые есть в документах, сопоставлением по ИНН. - ЦБКонтрагент = Неопределено; - Если ЗначениеЗаполнено(Объект.Организация) Тогда - ЦБКонтрагент = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(Объект.Организация, "Организация (ЦБ)"); - Если НЕ ЗначениеЗаполнено(ЦБКонтрагент) Тогда - ОчиститьТаблицы(); - Возврат; - КонецЕсли; + Отборы = ОтборыДокументовНаСервере(); + Если Отборы = Неопределено Тогда + ОчиститьТаблицы(); + Возврат; КонецЕсли; - СадОрганизация = Неопределено; - Если ЗначениеЗаполнено(Объект.Учреждение) Тогда - СадОрганизация = ПС_РаботаСКонтрагентами.ОрганизацияПоКонтрагенту(Объект.Учреждение, "Учреждение (сад)"); - Если НЕ ЗначениеЗаполнено(СадОрганизация) Тогда - ОчиститьТаблицы(); - Возврат; - КонецЕсли; - КонецЕсли; - - ЗаполнитьНачисления(СадОрганизация); - ЗаполнитьДокументыПередачи(ЦБКонтрагент, СадОрганизация); - ЗаполнитьДокументыПринятия(); - ЗаполнитьСверку(ЦБКонтрагент, СадОрганизация); + ЗаполнитьНачисления(Отборы.СадОрганизация); + ЗаполнитьДокументыПередачи(Отборы.ЦБОрганизация, Отборы.СадКонтрагент); + ЗаполнитьДокументыПринятия(Отборы.ЦБКонтрагент, Отборы.СадОрганизация); + ЗаполнитьСверку(Отборы.ЦБОрганизация, Отборы.СадКонтрагент); ЗаполнитьТаблицуОстатков(); ЗаполнитьКассовыеПоступления(); КонецПроцедуры +// Приводит отборы формы (ЦБ и учреждение) к значениям, в терминах которых они хранятся +// в документах. +// +// Отборы формы заданы в терминах ЦБ: Организация - это ЦБ (справочник Организации), +// Учреждение - сад (справочник Контрагенты). В документах те же стороны хранятся +// по-разному: документ передачи платежей хранит ЦБ как Организацию, а сад - как +// Контрагента в табличной части "Задолженность"; документ принятия - наоборот. +// Приводим значения отбора к типам, которые есть в документах, сопоставлением по ИНН. +// +// Возвращаемое значение: +// Структура - отборы документов: ЦБОрганизация, ЦБКонтрагент, СадОрганизация, +// СадКонтрагент. Неопределено - отбор не удалось сопоставить с данными +// документов (причина уже выведена пользователю). +// +&НаСервере +Функция ОтборыДокументовНаСервере() + + Отборы = Новый Структура; + Отборы.Вставить("ЦБОрганизация"); + Отборы.Вставить("ЦБКонтрагент"); + Отборы.Вставить("СадОрганизация"); + Отборы.Вставить("СадКонтрагент"); + + Если ЗначениеЗаполнено(Объект.Организация) Тогда + Отборы.ЦБОрганизация = Объект.Организация; + Отборы.ЦБКонтрагент = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(Объект.Организация, "Организация (ЦБ)"); + Если НЕ ЗначениеЗаполнено(Отборы.ЦБКонтрагент) Тогда + Возврат Неопределено; + КонецЕсли; + КонецЕсли; + + Если ЗначениеЗаполнено(Объект.Учреждение) Тогда + Отборы.СадКонтрагент = Объект.Учреждение; + Отборы.СадОрганизация = ПС_РаботаСКонтрагентами.ОрганизацияПоКонтрагенту(Объект.Учреждение, "Учреждение (сад)"); + Если НЕ ЗначениеЗаполнено(Отборы.СадОрганизация) Тогда + Возврат Неопределено; + КонецЕсли; + КонецЕсли; + + Возврат Отборы; + +КонецФункции + // Очищает таблицы формы. Вызывается, когда значения отборов не удалось сопоставить // с данными документов; причина уже выведена пользователю. // @@ -174,18 +221,77 @@ КонецПроцедуры // Заполняет таблицу формы ДокументыПередачи по установленным фильтрам. +// Таблица показывает документы передачи поступивших платежей в учреждения (документ ЦБ). // // Параметры: -// ЦБКонтрагент - CatalogRef.Контрагенты, Неопределено - ЦБ в виде контрагента -// (документ передачи хранит ЦБ именно так); Неопределено - отбор не задан. -// СадОрганизация - CatalogRef.Организации, Неопределено - учреждение (сад) в виде -// организации; Неопределено - отбор по учреждению не задан. +// ЦБОрганизация - CatalogRef.Организации - ЦБ в виде организации (документ передачи +// хранит ЦБ в реквизите "Организация"); Неопределено - отбор не задан. +// СадКонтрагент - CatalogRef.Контрагенты - учреждение (сад) в табличной части +// "Задолженность"; Неопределено - отбор по учреждению не задан. // &НаСервере -Процедура ЗаполнитьДокументыПередачи(ЦБКонтрагент, СадОрганизация) +Процедура ЗаполнитьДокументыПередачи(ЦБОрганизация, СадКонтрагент) ДокументыПередачи.Очистить(); + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ РАЗЛИЧНЫЕ + | Документы.Ссылка КАК Ссылка, + | Документы.Дата КАК Дата, + | Документы.Номер КАК Номер, + | Документы.Организация КАК Организация, + | Документы.ИФО КАК ИФО, + | Документы.Период КАК Период, + | Документы.СуммаДокумента КАК СуммаДокумента, + | Документы.Проведен КАК Проведен, + | Документы.ПометкаУдаления КАК ПометкаУдаления + |ИЗ + | Документ.ПС_ПередачаПоступившихПлатежейВУчреждения КАК Документы + | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПС_ПередачаПоступившихПлатежейВУчреждения.Задолженность КАК Строки + | ПО Документы.Ссылка = Строки.Ссылка + |ГДЕ + | Документы.Период >= &НачалоПериода + | И Документы.Период <= &КонецПериода + | И (&ЦБОрганизация = НЕОПРЕДЕЛЕНО + | ИЛИ Документы.Организация = &ЦБОрганизация) + | И (&СадКонтрагент = НЕОПРЕДЕЛЕНО + | ИЛИ Строки.Учреждение = &СадКонтрагент) + | И (&ИФО = НЕОПРЕДЕЛЕНО + | ИЛИ Документы.ИФО = &ИФО) + |УПОРЯДОЧИТЬ ПО + | Документы.Дата УБЫВ"; + + Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала); + Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания); + Запрос.УстановитьПараметр("ЦБОрганизация", ЦБОрганизация); + Запрос.УстановитьПараметр("СадКонтрагент", СадКонтрагент); + Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено)); + + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + ЗаполнитьЗначенияСвойств(ДокументыПередачи.Добавить(), Выборка); + КонецЦикла; + +КонецПроцедуры + +// Заполняет таблицу формы ДокументыПринятия по установленным фильтрам. +// Таблица показывает документы принятия поступивших платежей из ЦБ (документ учреждения). +// +// Параметры: +// ЦБКонтрагент - CatalogRef.Контрагенты - ЦБ в виде контрагента (документ принятия +// хранит ЦБ в реквизите "ЦБ"); Неопределено - отбор не задан. +// СадОрганизация - CatalogRef.Организации - учреждение (сад) в виде организации +// (документ принятия хранит сад в реквизите "Организация"); +// Неопределено - отбор по учреждению не задан. +// ДокументПередачи - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения - документ +// передачи, по которому отбираются принятия; Неопределено - отбор не задан. +// +&НаСервере +Процедура ЗаполнитьДокументыПринятия(ЦБКонтрагент, СадОрганизация, ДокументПередачи = Неопределено) + + ДокументыПринятия.Очистить(); + Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ @@ -197,76 +303,31 @@ | Документы.ИФО КАК ИФО, | Документы.Период КАК Период, | Документы.СуммаДокумента КАК СуммаДокумента, - | Документы.ПередачаСальдо КАК ПередачаСальдо, + | Документы.ДокументПередачи КАК ДокументПередачи, | Документы.Проведен КАК Проведен, | Документы.ПометкаУдаления КАК ПометкаУдаления |ИЗ - | Документ.ПС_ПередачаЗадолженностиВЦБ КАК Документы - |ГДЕ - | Документы.Период >= &НачалоПериода - | И Документы.Период <= &КонецПериода - | И (&ЦБ = НЕОПРЕДЕЛЕНО - | ИЛИ Документы.ЦБ = &ЦБ) - | И (&Сад = НЕОПРЕДЕЛЕНО - | ИЛИ Документы.Организация = &Сад) - | И (&ИФО = НЕОПРЕДЕЛЕНО - | ИЛИ Документы.ИФО = &ИФО) - |УПОРЯДОЧИТЬ ПО - | Документы.Дата УБЫВ"; - - Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала); - Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания); - Запрос.УстановитьПараметр("ЦБ", ЦБКонтрагент); - Запрос.УстановитьПараметр("Сад", СадОрганизация); - Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено)); - - Выборка = Запрос.Выполнить().Выбрать(); - Пока Выборка.Следующий() Цикл - ЗаполнитьЗначенияСвойств(ДокументыПередачи.Добавить(), Выборка); - КонецЦикла; - -КонецПроцедуры - -// Заполняет таблицу формы ДокументыПринятия по установленным фильтрам. -// -&НаСервере -Процедура ЗаполнитьДокументыПринятия() - - ДокументыПринятия.Очистить(); - - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ - | Документы.Ссылка КАК Ссылка, - | Документы.Дата КАК Дата, - | Документы.Номер КАК Номер, - | Документы.Организация КАК Организация, - | Документы.Учреждение КАК Учреждение, - | Документы.ИФО КАК ИФО, - | Документы.Период КАК Период, - | Документы.СуммаДокумента КАК СуммаДокумента, - | Документы.ПередачаСальдо КАК ПередачаСальдо, - | Документы.Проведен КАК Проведен, - | Документы.ПометкаУдаления КАК ПометкаУдаления - |ИЗ - | Документ.ПС_ПринятиеЗадолженностиОтУчреждения КАК Документы + | Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ КАК Документы |ГДЕ | Документы.Период >= &НачалоПериода | И Документы.Период <= &КонецПериода | И (&Организация = НЕОПРЕДЕЛЕНО | ИЛИ Документы.Организация = &Организация) - | И (&Учреждение = НЕОПРЕДЕЛЕНО - | ИЛИ Документы.Учреждение = &Учреждение) + | И (&ЦБ = НЕОПРЕДЕЛЕНО + | ИЛИ Документы.ЦБ = &ЦБ) | И (&ИФО = НЕОПРЕДЕЛЕНО | ИЛИ Документы.ИФО = &ИФО) + | И (&ДокументПередачи = НЕОПРЕДЕЛЕНО + | ИЛИ Документы.ДокументПередачи = &ДокументПередачи) |УПОРЯДОЧИТЬ ПО | Документы.Дата УБЫВ"; Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала); Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания); - Запрос.УстановитьПараметр("Организация", ?(ЗначениеЗаполнено(Объект.Организация), Объект.Организация, Неопределено)); - Запрос.УстановитьПараметр("Учреждение", ?(ЗначениеЗаполнено(Объект.Учреждение), Объект.Учреждение, Неопределено)); + Запрос.УстановитьПараметр("Организация", СадОрганизация); + Запрос.УстановитьПараметр("ЦБ", ЦБКонтрагент); Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено)); + Запрос.УстановитьПараметр("ДокументПередачи", ДокументПередачи); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл @@ -275,17 +336,37 @@ КонецПроцедуры -// Заполняет таблицу формы Сверка: сопоставляет суммы наших документов передачи -// и принятия. Приёмка связана с передачей через реквизит ДокументПередачи. +// Заполняет таблицу принятий по документу передачи, выбранному в таблице "Документы передачи". // // Параметры: -// ЦБКонтрагент - CatalogRef.Контрагенты, Неопределено - ЦБ в виде контрагента -// (документ передачи хранит ЦБ именно так); Неопределено - отбор не задан. -// СадОрганизация - CatalogRef.Организации, Неопределено - учреждение (сад) в виде -// организации; Неопределено - отбор по учреждению не задан. +// ДокументПередачи - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения - документ +// передачи, по которому отбираются принятия. // &НаСервере -Процедура ЗаполнитьСверку(ЦБКонтрагент, СадОрганизация) +Процедура ЗаполнитьПринятияПоПередачеНаСервере(ДокументПередачи) + + Отборы = ОтборыДокументовНаСервере(); + Если Отборы = Неопределено Тогда + ДокументыПринятия.Очистить(); + Возврат; + КонецЕсли; + + ЗаполнитьДокументыПринятия(Отборы.ЦБКонтрагент, Отборы.СадОрганизация, ДокументПередачи); + +КонецПроцедуры + +// Заполняет таблицу формы Сверка: сопоставляет суммы переданных платежей (документ ЦБ) +// и принятых учреждениями (документы принятия). Приёмка связана с передачей через +// реквизит ДокументПередачи документа принятия. +// +// Параметры: +// ЦБОрганизация - CatalogRef.Организации - ЦБ в виде организации (документ передачи +// хранит ЦБ в реквизите "Организация"); Неопределено - отбор не задан. +// СадКонтрагент - CatalogRef.Контрагенты - учреждение (сад) в табличной части +// "Задолженность"; Неопределено - отбор по учреждению не задан. +// +&НаСервере +Процедура ЗаполнитьСверку(ЦБОрганизация, СадКонтрагент) Сверка.Очистить(); @@ -296,7 +377,7 @@ | СУММА(Принятие.СуммаДокумента) КАК СуммаПринято |ПОМЕСТИТЬ ВТПринято |ИЗ - | Документ.ПС_ПринятиеЗадолженностиОтУчреждения КАК Принятие + | Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ КАК Принятие |ГДЕ | НЕ Принятие.ПометкаУдаления |СГРУППИРОВАТЬ ПО @@ -305,27 +386,28 @@ | ДокументПередачи |; | - |ВЫБРАТЬ + |ВЫБРАТЬ РАЗЛИЧНЫЕ | Передача.Ссылка КАК ДокументПередачи, | Передача.Период КАК Период, - | Передача.Организация КАК Сад, - | Передача.ЦБ КАК ЦБ, + | Передача.Организация КАК ЦБ, | Передача.СуммаДокумента КАК СуммаПередано, | ЕСТЬNULL(ВТПринято.СуммаПринято, 0) КАК СуммаПринято, | Передача.СуммаДокумента - ЕСТЬNULL(ВТПринято.СуммаПринято, 0) КАК Расхождение, | Передача.Проведен КАК ПередачаПроведена |ИЗ - | Документ.ПС_ПередачаЗадолженностиВЦБ КАК Передача + | Документ.ПС_ПередачаПоступившихПлатежейВУчреждения КАК Передача | ЛЕВОЕ СОЕДИНЕНИЕ ВТПринято КАК ВТПринято | ПО Передача.Ссылка = ВТПринято.ДокументПередачи + | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПС_ПередачаПоступившихПлатежейВУчреждения.Задолженность КАК Строки + | ПО Передача.Ссылка = Строки.Ссылка |ГДЕ | НЕ Передача.ПометкаУдаления | И Передача.Период >= &НачалоПериода | И Передача.Период <= &КонецПериода | И (&ЦБ = НЕОПРЕДЕЛЕНО - | ИЛИ Передача.ЦБ = &ЦБ) + | ИЛИ Передача.Организация = &ЦБ) | И (&Сад = НЕОПРЕДЕЛЕНО - | ИЛИ Передача.Организация = &Сад) + | ИЛИ Строки.Учреждение = &Сад) | И (&ИФО = НЕОПРЕДЕЛЕНО | ИЛИ Передача.ИФО = &ИФО) |УПОРЯДОЧИТЬ ПО @@ -334,8 +416,8 @@ Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала); Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания); - Запрос.УстановитьПараметр("ЦБ", ЦБКонтрагент); - Запрос.УстановитьПараметр("Сад", СадОрганизация); + Запрос.УстановитьПараметр("ЦБ", ЦБОрганизация); + Запрос.УстановитьПараметр("Сад", СадКонтрагент); Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено)); Выборка = Запрос.Выполнить().Выбрать(); diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/ObjectModule.bsl index c9aae48..124c63b 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/ObjectModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/ObjectModule.bsl @@ -25,9 +25,10 @@ Возврат; КонецЕсли; - // Оплата закрывает задолженность, принятую от учреждения. Переплата допускается - - // она даёт отрицательный (кредитовый) остаток по ребёнку. Строки без определённого - // ребёнка или договора пропускаются: это не оплата родительской платы. + // Поступившие платежи копятся у ЦБ: приход по регистру взаиморасчётов. + // Передача платежей в сады списывает их расходом, поэтому остаток регистра + // показывает, сколько поступило и ещё не передано в учреждения. Строки без + // определённого ребёнка или договора пропускаются: это не плата за детский сад. Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Очистить(); Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина; @@ -65,7 +66,7 @@ КонтрагентыСадов.Вставить(ОрганизацияСада, КонтрагентСада); КонецЕсли; - Движение = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьРасход(); + Движение = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьПриход(); Движение.Период = Дата; Движение.Организация = Организация; Движение.Учреждение = КонтрагентСада; @@ -76,7 +77,7 @@ Движение.КФО = СтрокаРасшифровки.КФО; Движение.КПС = СтрокаРасшифровки.КБКНазначениеПлатежа; Движение.Сумма = СтрокаРасшифровки.Сумма; - Движение.ВидОперации = Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.Оплата; + Движение.ВидОперации = Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.ПоступлениеПлатежа; КонецЦикла; diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/НачислениеРодительскойПлаты/Forms/ФормаДокумента/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/НачислениеРодительскойПлаты/Forms/ФормаДокумента/Module.bsl index 54c114e..bf5033e 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/НачислениеРодительскойПлаты/Forms/ФормаДокумента/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/НачислениеРодительскойПлаты/Forms/ФормаДокумента/Module.bsl @@ -112,7 +112,7 @@ КонецЕсли; ПараметрыФормы = Новый Структура("Основание", Объект.Ссылка); - ОткрытьФорму("Документ.ПС_ПередачаЗадолженностиВЦБ.Форма.ФормаДокумента", + ОткрытьФорму("Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ.Форма.ФормаДокумента", ПараметрыФормы, ЭтотОбъект); diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/НачислениеРодительскойПлаты/НачислениеРодительскойПлаты.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/НачислениеРодительскойПлаты/НачислениеРодительскойПлаты.mdo index 650385c..a1e2a22 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/НачислениеРодительскойПлаты/НачислениеРодительскойПлаты.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/НачислениеРодительскойПлаты/НачислениеРодительскойПлаты.mdo @@ -12,7 +12,6 @@ Checked - Document.ПС_ПередачаЗадолженностиВЦБ ФормаДокумента Adopted diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Forms/ФормаДокумента/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Forms/ФормаДокумента/Module.bsl deleted file mode 100644 index 23b1ffb..0000000 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Forms/ФормаДокумента/Module.bsl +++ /dev/null @@ -1,438 +0,0 @@ -// ПС_ПередачаЗадолженностиВЦБ: модуль формы документа. - -#Область ОбработчикиСобытийФормы - -&НаСервере -Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - БухгалтерскиеОперацииСервер.ПриСозданииНаСервере(Отказ, СтандартнаяОбработка, Элементы.БухгалтерскаяОперация); - - // ИФО показывается только при включённом учёте по ИФО (как в типовых документах). - Элементы.ИФО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО"); - // КПС определяется автоматически по настройкам учётной политики. - Элементы.ЗадолженностьКПС.ТолькоПросмотр = Истина; - - // Счёт, корреспондирующий со счётом 205.31, и его КЭК: значения по умолчанию. - // В режиме передачи начального сальдо скрывается документ начисления и появляется - // команда заполнения по остаткам счёта 205.31. - ЗаполнитьКорреспондирующийСчетПоУмолчанию(); - ОбновитьВидимостьРеквизитовРежимаСальдо(); - - Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда - Основание = Неопределено; - Если Параметры.Свойство("Основание", Основание) - И ТипЗнч(Основание) = Тип("ДокументСсылка.НачислениеРодительскойПлаты") Тогда - Объект.ДокументНачисления = Основание; - ЗаполнитьПоДокументуНачисленияНаСервере(Основание); - КонецЕсли; - - Если НЕ ЗначениеЗаполнено(Объект.ЦБ) Тогда - Объект.ЦБ = ПС_РаботаСКонтрагентами.КонтрагентЦБПоУмолчанию(); - КонецЕсли; - КонецЕсли; - -КонецПроцедуры - -&НаСервере -Процедура ПриЧтенииНаСервере(ТекущийОбъект) - - БухгалтерскиеОперацииСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект, Элементы.БухгалтерскаяОперация); - -КонецПроцедуры - -&НаКлиенте -Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) - - БухгалтерскиеОперацииКлиент.ПередЗаписью(Отказ, ПараметрыЗаписи, ЭтотОбъект); - -КонецПроцедуры - -&НаСервере -Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) - - БухгалтерскиеОперацииСервер.ПередЗаписью(Отказ, ТекущийОбъект, ПараметрыЗаписи, ЭтотОбъект); - -КонецПроцедуры - -&НаКлиенте -Процедура ПослеЗаписи(ПараметрыЗаписи) - - БухгалтерскиеОперацииКлиент.ПослеЗаписи(ПараметрыЗаписи, ЭтотОбъект); - -КонецПроцедуры - -&НаСервере -Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) - - БухгалтерскиеОперацииСервер.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); - -КонецПроцедуры - -#КонецОбласти - -#Область ОбработчикиКомандФормы - -&НаКлиенте -Процедура ПечатьИзвещения(Команда) - - ТабличныйДокумент = ПечатьИзвещенияНаСервере(Объект.Ссылка); - ТабличныйДокумент.Показать("Извещение (ф. 0504805, ред. 103н)"); - -КонецПроцедуры - -&НаКлиенте -Процедура ПросмотрБухгалтерскихЗаписей(Команда) - - ОткрытьБухгалтерскиеЗаписиДокумента(Объект.Ссылка); - -КонецПроцедуры - -&НаКлиенте -Процедура ПС_СоздатьПринятиеЗадолженностиНаОсновании(Команда) - - Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда - СообщениеПользователю = Новый СообщениеПользователю; - СообщениеПользователю.Текст = "Сначала запишите и проведите документ передачи."; - СообщениеПользователю.Сообщить(); - Возврат; - КонецЕсли; - - Если НЕ Объект.Проведен Тогда - СообщениеПользователю = Новый СообщениеПользователю; - СообщениеПользователю.Текст = "Перед созданием принятия документ передачи должен быть проведён."; - СообщениеПользователю.Сообщить(); - Возврат; - КонецЕсли; - - ПараметрыФормы = Новый Структура("Основание", Объект.Ссылка); - ОткрытьФорму("Документ.ПС_ПринятиеЗадолженностиОтУчреждения.Форма.ФормаДокумента", - ПараметрыФормы, - ЭтотОбъект); - -КонецПроцедуры - -&НаКлиенте -Процедура ЗаполнитьПоОстаткам20531(Команда) - - ЗаполнитьПоОстаткам20531НаСервере(); - -КонецПроцедуры - -#КонецОбласти - -#Область ОбработчикиСобытийЭлементовФормы - -&НаКлиенте -Процедура ПередачаСальдоПриИзменении(Элемент) - - // В режиме сальдо поле документа начисления скрывается, команда заполнения по остаткам - показывается. - РежимСальдо = (Объект.ПередачаСальдо = Истина); - Элементы.ЗаполнитьПоОстаткам20531.Видимость = РежимСальдо; - Элементы.ДокументНачисления.Видимость = НЕ РежимСальдо; - -КонецПроцедуры - -&НаКлиенте -Процедура ДокументНачисленияПриИзменении(Элемент) - - Если ЗначениеЗаполнено(Объект.ДокументНачисления) Тогда - ЗаполнитьПоДокументуНачисленияНаСервере(Объект.ДокументНачисления); - Иначе - Объект.Задолженность.Очистить(); - Объект.СуммаДокумента = 0; - КонецЕсли; - -КонецПроцедуры - -&НаКлиенте -Процедура ЗадолженностьПриИзменении(Элемент) - - Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма"); - -КонецПроцедуры - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -&НаСервере -Функция ПечатьИзвещенияНаСервере(ДокументСсылка) - - Возврат Документы.ПС_ПередачаЗадолженностиВЦБ.СформироватьПечатныеФормыИзвещений(ДокументСсылка); - -КонецФункции - -&НаСервере -Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию() - - Если НЕ ЗначениеЗаполнено(Объект.СчетКорреспондент) Тогда - Объект.СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию(); - КонецЕсли; - - Если НЕ ЗначениеЗаполнено(Объект.КЭККорреспондент) Тогда - Объект.КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию(); - КонецЕсли; - -КонецПроцедуры - -&НаСервере -Процедура ОбновитьВидимостьРеквизитовРежимаСальдо() - - // В режиме начального сальдо документ начисления не используется: его поле скрывается, - // а вместо него доступна команда заполнения по остаткам счёта 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.Код + " на " + ДатаДокумента + " есть (" - + ВсегоСтрок + " стр.), но не отобраны по организации " + Строка(Объект.Организация) - + " и/или по субконто счёта. Проверьте организацию в документе."); - КонецЕсли; - -КонецПроцедуры - -&НаСервере -Процедура ЗаполнитьПоДокументуНачисленияНаСервере(ДокументНачисленияСсылка) - - Если НЕ ЗначениеЗаполнено(ДокументНачисленияСсылка) Тогда - Возврат; - КонецЕсли; - - // Заполнение возможно только на основании проведённого документа начисления. - Если НЕ ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументНачисленияСсылка, "Проведен") Тогда - ОбщегоНазначения.СообщитьПользователю( - "Заполнение документа возможно только на основании проведённого документа начисления родительской платы."); - Возврат; - КонецЕсли; - - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ - | НачислениеРодительскойПлаты.Организация КАК Организация, - | НачислениеРодительскойПлаты.ИФО КАК ИФО, - | НачислениеРодительскойПлаты.Ответственный КАК Ответственный, - | НачислениеРодительскойПлаты.НачалоПериода КАК НачалоПериода, - | НачислениеРодительскойПлаты.Дата КАК ДатаДокумента - |ИЗ - | Документ.НачислениеРодительскойПлаты КАК НачислениеРодительскойПлаты - |ГДЕ - | НачислениеРодительскойПлаты.Ссылка = &Ссылка - |; - | - |//////////////////////////////////////////////////////////////////////////////// - |ВЫБРАТЬ - | НачислениеРодительскойПлатыНачисления.Контрагент КАК Контрагент, - | НачислениеРодительскойПлатыНачисления.ДоговорКонтрагента КАК Договор, - | НачислениеРодительскойПлатыНачисления.Ребенок КАК Ребенок, - | НачислениеРодительскойПлатыНачисления.ИДСтроки КАК ИДСтроки, - | НачислениеРодительскойПлатыНачисления.Сумма КАК Сумма - |ИЗ - | Документ.НачислениеРодительскойПлаты.Начисления КАК НачислениеРодительскойПлатыНачисления - |ГДЕ - | НачислениеРодительскойПлатыНачисления.Ссылка = &Ссылка"; - Запрос.УстановитьПараметр("Ссылка", ДокументНачисленияСсылка); - - Результаты = Запрос.ВыполнитьПакет(); - - ВыборкаШапка = Результаты[0].Выбрать(); - Если НЕ ВыборкаШапка.Следующий() Тогда - Возврат; - КонецЕсли; - - Объект.Организация = ВыборкаШапка.Организация; - Объект.Ответственный = ВыборкаШапка.Ответственный; - Объект.ДокументНачисления = ДокументНачисленияСсылка; - Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО") Тогда - Объект.ИФО = ВыборкаШапка.ИФО; - КонецЕсли; - - Если ЗначениеЗаполнено(ВыборкаШапка.НачалоПериода) Тогда - Объект.Период = ВыборкаШапка.НачалоПериода; - Иначе - Объект.Период = НачалоМесяца(ВыборкаШапка.ДатаДокумента); - КонецЕсли; - - Объект.ЦБ = ПС_РаботаСКонтрагентами.КонтрагентЦБПоУмолчанию(); - - Объект.Задолженность.Очистить(); - Объект.СуммаДокумента = 0; - - ВыборкаСтроки = Результаты[1].Выбрать(); - Пока ВыборкаСтроки.Следующий() Цикл - - НоваяСтрока = Объект.Задолженность.Добавить(); - НоваяСтрока.Контрагент = ВыборкаСтроки.Контрагент; - НоваяСтрока.Договор = ВыборкаСтроки.Договор; - НоваяСтрока.Ребенок = ВыборкаСтроки.Ребенок; - НоваяСтрока.ИДСтроки = ВыборкаСтроки.ИДСтроки; - НоваяСтрока.Сумма = ВыборкаСтроки.Сумма; - - Объект.СуммаДокумента = Объект.СуммаДокумента + ВыборкаСтроки.Сумма; - - КонецЦикла; - - // КФО документа и КПС строк - из проводок документа начисления. - ПС_УчетРодительскойПлаты.ЗаполнитьРеквизитыУчетаПоПроводкам(Объект, ДокументНачисленияСсылка); - -КонецПроцедуры - -&НаКлиенте -Процедура ОткрытьБухгалтерскиеЗаписиДокумента(ДокументСсылка) - - ПараметрыФормы = Новый Структура; - Отбор = Новый Структура("Регистратор", ДокументСсылка); - ПараметрыФормы.Вставить("Отбор", Отбор); - - ОткрытьФорму("РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ФормаСписка", - ПараметрыФормы, - ЭтотОбъект, - УникальныйИдентификатор); - -КонецПроцедуры - -#КонецОбласти - diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Forms/ФормаДокумента/Form.form b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Form.form similarity index 89% rename from 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Forms/ФормаДокумента/Form.form rename to 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Form.form index 3e49597..da0cc52 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Forms/ФормаДокумента/Form.form +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Form.form @@ -51,52 +51,6 @@ Normal - - ДокументПередачи - 22 - true - true - - true - - - Объект.ДокументПередачи - - - OnChange - ДокументПередачиПриИзменении - - - ДокументПередачиРасширеннаяПодсказка - 24 - Label - true - true - - Left - - - - ДокументПередачиКонтекстноеМеню - 23 - true - - InputField - EnterOnInput - true - Left - true - - true - true - true - true - true - true - true - Normal - - Период 16 @@ -255,48 +209,6 @@ Normal - - Учреждение - 13 - true - true - - true - - - Объект.Учреждение - - - УчреждениеРасширеннаяПодсказка - 15 - Label - true - true - - Left - - - - УчреждениеКонтекстноеМеню - 14 - true - - InputField - EnterOnInput - true - Left - true - - true - true - true - true - true - true - true - Normal - - true true @@ -452,6 +364,47 @@ true + + ЗадолженностьУчреждение + 103 + true + true + + true + + + Объект.Задолженность.Учреждение + + + ЗадолженностьЗадолженностьУчреждениеРасширеннаяПодсказка + 105 + Label + true + true + + Left + + + + ЗадолженностьЗадолженностьУчреждениеКонтекстноеМеню + 104 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + ЗадолженностьГруппаКонтрагента 92 @@ -1014,43 +967,6 @@ Normal - - ПередачаСальдо - 94 - - <key>ru</key> - <value>Передача начального сальдо</value> - - true - true - - true - - - Объект.ПередачаСальдо - - - ПередачаСальдоРасширеннаяПодсказка - 96 - Label - true - true - - Left - - - - ПередачаСальдоКонтекстноеМеню - 95 - true - - CheckBoxField - Enter - true - Left - true - - СчетКорреспондент 97 @@ -1323,6 +1239,58 @@ UserCmds Auto + + ЗаполнитьПоПоступившимПлатежам + 106 + true + true + + true + + + ФормаЗаполнитьПоПоступившимПлатежамРасширеннаяПодсказка + 107 + Label + true + true + + Left + + + Form.Command.ЗаполнитьПоПоступившимПлатежам + Normal + Auto + true + true + UserCmds + Auto + + + СоздатьПринятиеПлатежей + 108 + true + true + + true + + + ФормаСоздатьПринятиеПлатежейРасширеннаяПодсказка + 109 + Label + true + true + + Left + + + Form.Command.СоздатьПринятиеПлатежей + Normal + Auto + true + true + UserCmds + Auto + Left true @@ -1343,7 +1311,7 @@ Объект 1 - DocumentObject.ПС_ПринятиеЗадолженностиОтУчреждения + DocumentObject.ПС_ПередачаПоступившихПлатежейВУчреждения true @@ -1392,11 +1360,63 @@ + + ЗаполнитьПоПоступившимПлатежам + + <key>ru</key> + <value>Заполнить по поступившим платежам</value> + + 3 + + true + + + + ЗаполнитьПоПоступившимПлатежам + + + + + СоздатьПринятиеПлатежей + + <key>ru</key> + <value>Создать приём платежей</value> + + 4 + + true + + + + СоздатьПринятиеПлатежей + + + + + BeforeWrite + ПередЗаписью + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + AfterWrite + ПослеЗаписи + true diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Module.bsl new file mode 100644 index 0000000..466c0e9 --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Module.bsl @@ -0,0 +1,309 @@ +// ПС_ПередачаПоступившихПлатежейВУчреждения: модуль формы документа. + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + БухгалтерскиеОперацииСервер.ПриСозданииНаСервере(Отказ, СтандартнаяОбработка, Элементы.БухгалтерскаяОперация); + + // ИФО показывается только при включённом учёте по ИФО (как в типовых документах). + Элементы.ИФО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО"); + // КПС определяется автоматически по настройкам учётной политики. + Элементы.ЗадолженностьКПС.ТолькоПросмотр = Истина; + + // Счёт, корреспондирующий со счётом 205.31, и его КЭК: значения по умолчанию. + ЗаполнитьКорреспондирующийСчетПоУмолчанию(); + + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) + И НЕ ЗначениеЗаполнено(Объект.Организация) Тогда + Объект.Организация = Константы.ОрганизацияЦентрализованнаяБухгалтерия.Получить(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + БухгалтерскиеОперацииСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект, Элементы.БухгалтерскаяОперация); + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + + БухгалтерскиеОперацииКлиент.ПередЗаписью(Отказ, ПараметрыЗаписи, ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + БухгалтерскиеОперацииСервер.ПередЗаписью(Отказ, ТекущийОбъект, ПараметрыЗаписи, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + БухгалтерскиеОперацииКлиент.ПослеЗаписи(ПараметрыЗаписи, ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + БухгалтерскиеОперацииСервер.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыЗадолженность + +&НаКлиенте +Процедура ЗадолженностьПриИзменении(Элемент) + + Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма"); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПечатьИзвещения(Команда) + + ТабличныйДокумент = ПечатьИзвещенияНаСервере(Объект.Ссылка); + ТабличныйДокумент.Показать("Извещение (ф. 0504805, ред. 103н) - отправитель"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПросмотрБухгалтерскихЗаписей(Команда) + + ОткрытьБухгалтерскиеЗаписиДокумента(Объект.Ссылка); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьПоПоступившимПлатежам(Команда) + + ЗаполнитьПоПоступившимПлатежамНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура СоздатьПринятиеПлатежей(Команда) + + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда + СообщениеПользователю = Новый СообщениеПользователю; + СообщениеПользователю.Текст = "Сначала запишите документ передачи платежей."; + СообщениеПользователю.Сообщить(); + Возврат; + КонецЕсли; + + Если НЕ Объект.Проведен Тогда + СообщениеПользователю = Новый СообщениеПользователю; + СообщениеПользователю.Текст = "Перед созданием приёма платежей документ передачи должен быть проведён."; + СообщениеПользователю.Сообщить(); + Возврат; + КонецЕсли; + + // По каждому учреждению табличной части открывается форма нового документа принятия: + // строки подбираются по саду документа, записывает документы пользователь. + ОрганизацииСадов = ОрганизацииСадовНаСервере(); + Если ОрганизацииСадов.Количество() = 0 Тогда + СообщениеПользователю = Новый СообщениеПользователю; + СообщениеПользователю.Текст = "В табличной части ""Задолженность"" не заполнены учреждения (получатели)."; + СообщениеПользователю.Сообщить(); + Возврат; + КонецЕсли; + + Для Каждого ОрганизацияСада Из ОрганизацииСадов Цикл + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ДокументПередачи", Объект.Ссылка); + ПараметрыФормы.Вставить("ОрганизацияСада", ОрганизацияСада); + + ОткрытьФорму("Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ.Форма.ФормаДокумента", + ПараметрыФормы, + ЭтотОбъект, + Строка(Объект.Ссылка) + ":" + Строка(ОрганизацияСада)); + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция ПечатьИзвещенияНаСервере(ДокументСсылка) + + Возврат Документы.ПС_ПередачаПоступившихПлатежейВУчреждения.СформироватьПечатныеФормыИзвещений(ДокументСсылка); + +КонецФункции + +&НаСервере +Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию() + + Если НЕ ЗначениеЗаполнено(Объект.СчетКорреспондент) Тогда + Объект.СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию(); + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(Объект.КЭККорреспондент) Тогда + Объект.КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию(); + КонецЕсли; + +КонецПроцедуры + +// Подбирает в табличную часть "Задолженность" поступившие платежи, ещё не переданные +// в учреждения: остатки регистра накопления ПС_ВзаиморасчетыПоРодительскойПлате. +// Предыдущая передача выбирает остатки, поэтому следующая их уже не видит. +// +&НаСервере +Процедура ЗаполнитьПоПоступившимПлатежамНаСервере() + + Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда + ОбщегоНазначения.СообщитьПользователю( + "Заполнение невозможно: не заполнена организация (ЦБ)."); + Возврат; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Остатки.Учреждение КАК Учреждение, + | Остатки.Плательщик КАК Контрагент, + | Остатки.Договор КАК Договор, + | Остатки.Ребенок КАК Ребенок, + | Остатки.КПС КАК КПС, + | Остатки.ИФО КАК ИФО, + | Остатки.КФО КАК КФО, + | Остатки.СуммаОстаток КАК Сумма + |ИЗ + | РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Остатки( + | &МоментВремени, + | Организация = &Организация) КАК Остатки + |ГДЕ + | Остатки.СуммаОстаток <> 0 + | + |УПОРЯДОЧИТЬ ПО + | Остатки.Учреждение, + | Остатки.Плательщик, + | Остатки.Договор"; + // Поступившие платежи собираются на границу конца дня документа: кассовые поступления + // по умолчанию датируются 23:59:59 и при моменте времени, равном началу дня документа, + // в остатки не попадали. + Запрос.УстановитьПараметр("МоментВремени", КонецДня(Объект.Дата) + 1); + Запрос.УстановитьПараметр("Организация", Объект.Организация); + + Выборка = Запрос.Выполнить().Выбрать(); + + Объект.Задолженность.Очистить(); + Объект.СуммаДокумента = 0; + + ЗначенияИФО = Новый Соответствие; + ЗначенияКФО = Новый Соответствие; + + Пока Выборка.Следующий() Цикл + + ЗначенияИФО.Вставить(Выборка.ИФО, Истина); + ЗначенияКФО.Вставить(Выборка.КФО, Истина); + + НоваяСтрока = Объект.Задолженность.Добавить(); + НоваяСтрока.Учреждение = Выборка.Учреждение; + НоваяСтрока.Контрагент = Выборка.Контрагент; + НоваяСтрока.Договор = Выборка.Договор; + НоваяСтрока.Ребенок = Выборка.Ребенок; + НоваяСтрока.КПС = Выборка.КПС; + НоваяСтрока.Сумма = Выборка.Сумма; + + КонецЦикла; + + Если Объект.Задолженность.Количество() = 0 Тогда + ОбщегоНазначения.СообщитьПользователю( + "Поступивших платежей, ещё не переданных в учреждения, не найдено."); + Возврат; + КонецЕсли; + + Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма"); + + // Разрезов ИФО и КФО в табличной части нет - они задаются на весь документ, + // поэтому переносим их в шапку, если в остатках они единственные. + ЗаполнитьИФОиКФОПоОстаткам(ЗначенияИФО, ЗначенияКФО); + + Если ЗначенияИФО.Количество() > 1 ИЛИ ЗначенияКФО.Количество() > 1 Тогда + ОбщегоНазначения.СообщитьПользователю( + "Поступившие платежи найдены в разрезе нескольких ИФО и/или КФО, а в документе ИФО и КФО" + + " задаются на весь документ. Передайте их отдельными документами."); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьИФОиКФОПоОстаткам(ЗначенияИФО, ЗначенияКФО) + + Если ЗначенияКФО.Количество() = 1 И НЕ ЗначениеЗаполнено(Объект.КФО) Тогда + Для Каждого КлючИЗначение Из ЗначенияКФО Цикл + Объект.КФО = КлючИЗначение.Ключ; + КонецЦикла; + КонецЕсли; + + Если ЗначенияИФО.Количество() = 1 И НЕ ЗначениеЗаполнено(Объект.ИФО) Тогда + Для Каждого КлючИЗначение Из ЗначенияИФО Цикл + Объект.ИФО = КлючИЗначение.Ключ; + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьБухгалтерскиеЗаписиДокумента(ДокументСсылка) + + ПараметрыФормы = Новый Структура; + Отбор = Новый Структура("Регистратор", ДокументСсылка); + ПараметрыФормы.Вставить("Отбор", Отбор); + + ОткрытьФорму("РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ФормаСписка", + ПараметрыФормы, + ЭтотОбъект, + УникальныйИдентификатор); + +КонецПроцедуры + +// Возвращает организации садов (учреждений), представленных в табличной части "Задолженность". +// Учреждение хранится в документе контрагентом, поэтому организация ищется по ИНН. +// +// Возвращаемое значение: +// Массив из СправочникСсылка.Организации - организации получателей в порядке появления в табличной части. +// +&НаСервере +Функция ОрганизацииСадовНаСервере() + + Учреждения = Новый Массив; + Для Каждого СтрокаЗадолженности Из Объект.Задолженность Цикл + Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.Учреждение) Тогда + Продолжить; + КонецЕсли; + Если Учреждения.Найти(СтрокаЗадолженности.Учреждение) = Неопределено Тогда + Учреждения.Добавить(СтрокаЗадолженности.Учреждение); + КонецЕсли; + КонецЦикла; + + Организации = Новый Массив; + Для Каждого Учреждение Из Учреждения Цикл + Организация = ПС_РаботаСКонтрагентами.ОрганизацияПоКонтрагенту(Учреждение, "Получатель (учреждение)"); + Если ЗначениеЗаполнено(Организация) Тогда + Организации.Добавить(Организация); + КонецЕсли; + КонецЦикла; + + Возврат Организации; + +КонецФункции + +#КонецОбласти diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ManagerModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ManagerModule.bsl similarity index 84% rename from 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ManagerModule.bsl rename to 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ManagerModule.bsl index 8d79c13..79f8095 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ManagerModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ManagerModule.bsl @@ -1,4 +1,4 @@ -// ПС_ПринятиеЗадолженностиОтУчреждения: модуль менеджера. +// ПС_ПередачаПоступившихПлатежейВУчреждения: модуль менеджера. // Печатная форма извещения (ф. 0504805, ред. 103н) - сторона получателя (централизованная бухгалтерия). // Заполнение макета выполняет общая логика подсистемы: ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805. @@ -10,7 +10,7 @@ // Вызывается из модуля формы документа кнопкой "Печать". // // Параметры: -// ДокументСсылка - ДокументСсылка.ПС_ПринятиеЗадолженностиОтУчреждения - печатаемый документ. +// ДокументСсылка - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения - печатаемый документ. // // Возвращаемое значение: // ТабличныйДокумент diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl new file mode 100644 index 0000000..ead9bd1 --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl @@ -0,0 +1,193 @@ +// ПС_ПередачаПоступившихПлатежейВУчреждения: модуль объекта. +// Сторона ЦБ: Дт 205.31.56X — Кт 304.04.130. +// Проводки формируются в процедуре ОбработкаПроведения прямым заполнением +// набора записей регистра бухгалтерии ЖурналПроводокЕПСБУ. +// Документ собирает поступившие платежи (приход в регистре накопления +// ПС_ВзаиморасчетыПоРодительскойПлате, сделанный кассовыми поступлениями) +// и передаёт их учреждениям — расход по тому же регистру. Пока передано не всё, +// остаток регистра ненулевой; он и служит контролем полноты передачи. + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ОбработкаПроведения(Отказ, РежимПроведения) + + Движения.ЖурналПроводокЕПСБУ.Очистить(); + Движения.ЖурналПроводокЕПСБУ.Записывать = Истина; + Движения.ЖурналПроводокЕПСБУ.ДополнительныеСвойства.Вставить("НеФормироватьУчетныеДанныеИзПроводок"); + + Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Очистить(); + Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина; + + СчетДт = БухгалтерскийУчет.СчетПоКоду("205.31", Дата, Организация); + + // Счёт, корреспондирующий со счётом расчётов по доходам, и его КЭК задаются + // реквизитами документа (по умолчанию 304.04 и 131) и могут быть изменены пользователем. + СчетКт = СчетКорреспондент; + Если НЕ ЗначениеЗаполнено(СчетКт) Тогда + ОбщегоНазначения.СообщитьПользователю( + "Не заполнен счёт, корреспондирующий со счётом 205.31. Проведение невозможно.", + , "СчетКорреспондент", "Объект", Отказ); + Возврат; + КонецЕсли; + + ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт); + + // КПС строк заполняется при подборе поступивших платежей (см. модуль формы), + // КЭК счёта 205.31 определяется по настройкам счёта и типу контрагента (подстатья КОСГУ). + Для Каждого СтрокаЗадолженности Из Задолженность Цикл + + Движение = Движения.ЖурналПроводокЕПСБУ.Добавить(); + Движение.Период = Дата; + Движение.Организация = Организация; + Движение.ИФО = ИФО; + Движение.КФО = КФО; + Движение.СчетДт = СчетДт; + Движение.СчетКт = СчетКт; + Движение.КПСДт = СтрокаЗадолженности.КПС; + Движение.КПСКт = СтрокаЗадолженности.КПС; + Движение.КЭКДт = КЭКПроводки(СчетДт, "Дт", СтрокаЗадолженности.Контрагент, СтрокаЗадолженности.Договор); + Движение.КЭККт = КЭККорреспондент; + Движение.Сумма = СтрокаЗадолженности.Сумма; + Движение.ЖурналОпераций = ЖурналОпераций; + Движение.Содержание = "Передача поступивших платежей по родительской плате в учреждение"; + + Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты] = СтрокаЗадолженности.Контрагент; + Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Договоры] = СтрокаЗадолженности.Договор; + Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.КорреспондентыПоВнутреннимРасчетам] = СтрокаЗадолженности.Учреждение; + + // Взаиморасчёты: переданные в учреждение поступившие платежи списываются расходом. + ДвижениеПС = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьРасход(); + ДвижениеПС.Период = Дата; + ДвижениеПС.Организация = Организация; + ДвижениеПС.Учреждение = СтрокаЗадолженности.Учреждение; + ДвижениеПС.Плательщик = СтрокаЗадолженности.Контрагент; + ДвижениеПС.Ребенок = СтрокаЗадолженности.Ребенок; + ДвижениеПС.Договор = СтрокаЗадолженности.Договор; + ДвижениеПС.ИФО = ИФО; + ДвижениеПС.КФО = КФО; + ДвижениеПС.КПС = СтрокаЗадолженности.КПС; + ДвижениеПС.Сумма = СтрокаЗадолженности.Сумма; + ДвижениеПС.ВидОперации = Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.ПередачаВУчреждение; + ДвижениеПС.ИДСтроки = СтрокаЗадолженности.ИДСтроки; + + КонецЦикла; + + // В конфигурации есть подписка на событие "ОбработкаПроведения" (ЗаписатьТаблицуПроводок), + // которая выполняется после модуля объекта и перезаписывает проводки документа: если таблица + // проводок не передана, набор записей регистра очищается. Поэтому передаём сформированную + // таблицу через ДополнительныеСвойства.ДанныеАвтоПроведения.ТаблицаПроводок. + БухгалтерскиеОперацииСервер.ИнициализироватьБухгалтерскиеОперации(ЭтотОбъект); + ДополнительныеСвойства.ДанныеАвтоПроведения.ТаблицаПроводок = Движения.ЖурналПроводокЕПСБУ.Выгрузить(); + +КонецПроцедуры + +Процедура ОбработкаУдаленияПроведения(Отказ) + + Движения.ЖурналПроводокЕПСБУ.Записывать = Истина; + Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина; + +КонецПроцедуры + +Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект); + + ЗаполнитьРеквизитыПоУмолчанию(); + + СуммаДокумента = Задолженность.Итог("Сумма"); + +КонецПроцедуры + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + + Если НЕ ЗначениеЗаполнено(Организация) Тогда + ОбщегоНазначения.СообщитьПользователю("Не заполнена организация (ЦБ)", , "Организация", "Объект", Отказ); + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(КФО) Тогда + ОбщегоНазначения.СообщитьПользователю("Не заполнен КФО", , "КФО", "Объект", Отказ); + КонецЕсли; + + Если Задолженность.Количество() = 0 Тогда + ОбщегоНазначения.СообщитьПользователю("Не заполнена табличная часть ""Задолженность""", , "Задолженность", "Объект", Отказ); + Иначе + Для Каждого СтрокаЗадолженности Из Задолженность Цикл + Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.Учреждение) Тогда + ОбщегоНазначения.СообщитьПользователю( + "Не заполнено учреждение в строке табличной части ""Задолженность"".", + , "Задолженность", "Объект", Отказ); + Прервать; + КонецЕсли; + Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.КПС) Тогда + ОбщегоНазначения.СообщитьПользователю( + "Не заполнен КПС строки табличной части ""Задолженность""." + + " Заполните строки по поступившим платежам.", + , "Задолженность", "Объект", Отказ); + Прервать; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + СуммаПоТаблице = Задолженность.Итог("Сумма"); + Если СуммаДокумента <> СуммаПоТаблице Тогда + ОбщегоНазначения.СообщитьПользователю("Сумма документа не совпадает с итогом по табличной части", , "СуммаДокумента", "Объект", Отказ); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Заполняет счёт, корреспондирующий со счётом расчётов по доходам (205.31), и его КЭК +// значениями по умолчанию, если они не заданы пользователем. +// +Процедура ЗаполнитьРеквизитыПоУмолчанию() + + Если НЕ ЗначениеЗаполнено(СчетКорреспондент) Тогда + СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию(); + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(КЭККорреспондент) Тогда + КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию(); + КонецЕсли; + +КонецПроцедуры + +// Возвращает КЭК проводки, определённый по настройкам счёта +// и типу контрагента (подстатья КОСГУ). +// +// Параметры: +// Счет - ПланСчетовСсылка.ЕПСБУ - счёт проводки. +// ДтКт - Строка - сторона проводки: "Дт" или "Кт". +// Субконто1 - Произвольный - значение первого субконто проводки. +// Субконто2 - Произвольный - значение второго субконто проводки. +// +// Возвращаемое значение: +// СправочникСсылка.КОСГУ - КЭК проводки. +// +Функция КЭКПроводки(Счет, ДтКт, Субконто1 = Неопределено, Субконто2 = Неопределено) + + ПараметрыКЭК = БухгалтерскийУчетКлиентСервер.ПараметрыРасчетаКЭКПроводки(); + ПараметрыКЭК.Организация = Организация; + ПараметрыКЭК.ИФО = ИФО; + ПараметрыКЭК.КФО = КФО; + ПараметрыКЭК.Дата = Дата; + ПараметрыКЭК.Счет = Счет; + ПараметрыКЭК.ДтКт = ДтКт; + ПараметрыКЭК.Субконто1 = Субконто1; + ПараметрыКЭК.Субконто2 = Субконто2; + + Возврат БухгалтерскийУчет.КЭКПроводки(ПараметрыКЭК); + +КонецФункции + +#КонецОбласти + +#КонецЕсли diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП/Template.mxlx b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель/Template.mxlx similarity index 99% rename from 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП/Template.mxlx rename to 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель/Template.mxlx index 8d17fed..b80a0c7 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП/Template.mxlx +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель/Template.mxlx @@ -1186,12 +1186,7 @@ 2 59 - - - ru - - - + @@ -2360,12 +2355,7 @@ 2 59 - - - ru - - - + @@ -3992,6 +3982,8 @@ -1 + #000080 + #000080 Solid diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ПС_ПринятиеЗадолженностиОтУчреждения.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo similarity index 82% rename from 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ПС_ПринятиеЗадолженностиОтУчреждения.mdo rename to 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo index 5e14160..5995bb3 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ПС_ПринятиеЗадолженностиОтУчреждения.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo @@ -7,10 +7,10 @@ - ПС_ПринятиеЗадолженностиОтУчреждения + ПС_ПередачаПоступившихПлатежейВУчреждения ru - Принятие в ЦБ начислений от учреждения + Передача поступивших платежей в учреждения true DontUse @@ -18,18 +18,18 @@ Use ru - Принятие задолженности от учреждения + Передача поступивших платежей в учреждение ru - Принятия в ЦБ начислений от учреждения + Передачи поступивших платежей в учреждения String 9 Variable true true - Document.ПС_ПринятиеЗадолженностиОтУчреждения.Form.ФормаДокумента + Document.ПС_ПередачаПоступившихПлатежейВУчреждения.Form.ФормаДокумента AccountingRegister.ЖурналПроводокЕПСБУ AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате true @@ -38,7 +38,7 @@ Организация ru - Организация (ЦБ) + Отправитель (ЦБ) CatalogRef.Организации @@ -64,21 +64,6 @@ Use Use - - Учреждение - - ru - Учреждение-отправитель - - - CatalogRef.Контрагенты - - - - - Use - Use - Период @@ -116,21 +101,6 @@ Use Use - - ДокументПередачи - - ru - Документ передачи - - - DocumentRef.ПС_ПередачаЗадолженностиВЦБ - - - - - Use - Use - Ответственный @@ -178,21 +148,6 @@ Use Use - - ПередачаСальдо - - ru - Передача начального сальдо - - - Boolean - - - - - Use - Use - КЭККорреспондент @@ -327,6 +282,20 @@ Use Use + + Учреждение + + ru + Получатель (учреждение) + + + CatalogRef.Контрагенты + + + + Use + Use + ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Forms/ФормаДокумента/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Forms/ФормаДокумента/Module.bsl deleted file mode 100644 index 1246c2e..0000000 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Forms/ФормаДокумента/Module.bsl +++ /dev/null @@ -1,232 +0,0 @@ -// ПС_ПринятиеЗадолженностиОтУчреждения: модуль формы документа. - -#Область ОбработчикиСобытийФормы - -&НаСервере -Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - БухгалтерскиеОперацииСервер.ПриСозданииНаСервере(Отказ, СтандартнаяОбработка, Элементы.БухгалтерскаяОперация); - - // ИФО показывается только при включённом учёте по ИФО (как в типовых документах). - Элементы.ИФО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО"); - // КПС определяется автоматически по настройкам учётной политики. - Элементы.ЗадолженностьКПС.ТолькоПросмотр = Истина; - - // Счёт, корреспондирующий со счётом 205.31, и его КЭК: значения по умолчанию - // (в режиме начального сальдо наследуются из документа передачи). - ЗаполнитьКорреспондирующийСчетПоУмолчанию(); - - Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда - Основание = Неопределено; - Если Параметры.Свойство("Основание", Основание) - И ТипЗнч(Основание) = Тип("ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ") Тогда - Объект.ДокументПередачи = Основание; - ЗаполнитьПоДокументуПередачиНаСервере(Основание); - КонецЕсли; - - Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда - Объект.Организация = Константы.ОрганизацияЦентрализованнаяБухгалтерия.Получить(); - КонецЕсли; - КонецЕсли; - -КонецПроцедуры - -&НаСервере -Процедура ПриЧтенииНаСервере(ТекущийОбъект) - - БухгалтерскиеОперацииСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект, Элементы.БухгалтерскаяОперация); - -КонецПроцедуры - -&НаКлиенте -Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) - - БухгалтерскиеОперацииКлиент.ПередЗаписью(Отказ, ПараметрыЗаписи, ЭтотОбъект); - -КонецПроцедуры - -&НаСервере -Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) - - БухгалтерскиеОперацииСервер.ПередЗаписью(Отказ, ТекущийОбъект, ПараметрыЗаписи, ЭтотОбъект); - -КонецПроцедуры - -&НаКлиенте -Процедура ПослеЗаписи(ПараметрыЗаписи) - - БухгалтерскиеОперацииКлиент.ПослеЗаписи(ПараметрыЗаписи, ЭтотОбъект); - -КонецПроцедуры - -&НаСервере -Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) - - БухгалтерскиеОперацииСервер.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); - -КонецПроцедуры - -#КонецОбласти - -#Область ОбработчикиКомандФормы - -&НаКлиенте -Процедура ПечатьИзвещения(Команда) - - ТабличныйДокумент = ПечатьИзвещенияНаСервере(Объект.Ссылка); - ТабличныйДокумент.Показать("Извещение (ф. 0504805, ред. 103н) - получатель"); - -КонецПроцедуры - -&НаКлиенте -Процедура ПросмотрБухгалтерскихЗаписей(Команда) - - ОткрытьБухгалтерскиеЗаписиДокумента(Объект.Ссылка); - -КонецПроцедуры - -#КонецОбласти - -#Область ОбработчикиСобытийЭлементовФормы - -&НаКлиенте -Процедура ДокументПередачиПриИзменении(Элемент) - - Если ЗначениеЗаполнено(Объект.ДокументПередачи) Тогда - ЗаполнитьПоДокументуПередачиНаСервере(Объект.ДокументПередачи); - Иначе - Объект.Задолженность.Очистить(); - Объект.СуммаДокумента = 0; - КонецЕсли; - -КонецПроцедуры - -&НаКлиенте -Процедура ЗадолженностьПриИзменении(Элемент) - - Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма"); - -КонецПроцедуры - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -&НаСервере -Функция ПечатьИзвещенияНаСервере(ДокументСсылка) - - Возврат Документы.ПС_ПринятиеЗадолженностиОтУчреждения.СформироватьПечатныеФормыИзвещений(ДокументСсылка); - -КонецФункции - -&НаСервере -Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию() - - Если НЕ ЗначениеЗаполнено(Объект.СчетКорреспондент) Тогда - Объект.СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию(); - КонецЕсли; - - Если НЕ ЗначениеЗаполнено(Объект.КЭККорреспондент) Тогда - Объект.КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию(); - КонецЕсли; - -КонецПроцедуры - -&НаСервере -Процедура ЗаполнитьПоДокументуПередачиНаСервере(ДокументПередачиСсылка) - - Если НЕ ЗначениеЗаполнено(ДокументПередачиСсылка) Тогда - Возврат; - КонецЕсли; - - // Заполнение возможно только на основании проведённого документа передачи. - Если НЕ ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументПередачиСсылка, "Проведен") Тогда - ОбщегоНазначения.СообщитьПользователю( - "Заполнение документа возможно только на основании проведённого документа передачи задолженности."); - Возврат; - КонецЕсли; - - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ - | ПередачаЗадолженности.ЦБ КАК Организация, - | ПередачаЗадолженности.Организация КАК Учреждение, - | ПередачаЗадолженности.ИФО КАК ИФО, - | ПередачаЗадолженности.Ответственный КАК Ответственный, - | ПередачаЗадолженности.Период КАК Период - |ИЗ - | Документ.ПС_ПередачаЗадолженностиВЦБ КАК ПередачаЗадолженности - |ГДЕ - | ПередачаЗадолженности.Ссылка = &Ссылка - |; - | - |//////////////////////////////////////////////////////////////////////////////// - |ВЫБРАТЬ - | ПередачаЗадолженностиЗадолженность.Контрагент КАК Контрагент, - | ПередачаЗадолженностиЗадолженность.Договор КАК Договор, - | ПередачаЗадолженностиЗадолженность.Ребенок КАК Ребенок, - | ПередачаЗадолженностиЗадолженность.ИДСтроки КАК ИДСтроки, - | ПередачаЗадолженностиЗадолженность.Сумма КАК Сумма - |ИЗ - | Документ.ПС_ПередачаЗадолженностиВЦБ.Задолженность КАК ПередачаЗадолженностиЗадолженность - |ГДЕ - | ПередачаЗадолженностиЗадолженность.Ссылка = &Ссылка"; - Запрос.УстановитьПараметр("Ссылка", ДокументПередачиСсылка); - - Результаты = Запрос.ВыполнитьПакет(); - - ВыборкаШапка = Результаты[0].Выбрать(); - Если НЕ ВыборкаШапка.Следующий() Тогда - Возврат; - КонецЕсли; - - Объект.Организация = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(ВыборкаШапка.Организация, "Организация (ЦБ)"); - Объект.Учреждение = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(ВыборкаШапка.Учреждение, "Учреждение-отправитель"); - Объект.Ответственный = ВыборкаШапка.Ответственный; - Объект.Период = ВыборкаШапка.Период; - Объект.ДокументПередачи = ДокументПередачиСсылка; - - // Режим начального сальдо и корреспондирующий счёт с КЭК наследуются от документа передачи. - РеквизитыПередачи = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументПередачиСсылка, - "ПередачаСальдо, СчетКорреспондент, КЭККорреспондент"); - Объект.ПередачаСальдо = РеквизитыПередачи.ПередачаСальдо; - Объект.СчетКорреспондент = РеквизитыПередачи.СчетКорреспондент; - Объект.КЭККорреспондент = РеквизитыПередачи.КЭККорреспондент; - - Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО") Тогда - Объект.ИФО = ВыборкаШапка.ИФО; - КонецЕсли; - - Объект.Задолженность.Очистить(); - Объект.СуммаДокумента = 0; - - ВыборкаСтроки = Результаты[1].Выбрать(); - Пока ВыборкаСтроки.Следующий() Цикл - - НоваяСтрока = Объект.Задолженность.Добавить(); - ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаСтроки); - Объект.СуммаДокумента = Объект.СуммаДокумента + ВыборкаСтроки.Сумма; - - КонецЦикла; - - // КФО документа и КПС строк - из проводок документа передачи. - ПС_УчетРодительскойПлаты.ЗаполнитьРеквизитыУчетаПоПроводкам(Объект, ДокументПередачиСсылка); - -КонецПроцедуры - -&НаКлиенте -Процедура ОткрытьБухгалтерскиеЗаписиДокумента(ДокументСсылка) - - ПараметрыФормы = Новый Структура; - Отбор = Новый Структура("Регистратор", ДокументСсылка); - ПараметрыФормы.Вставить("Отбор", Отбор); - - ОткрытьФорму("РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ФормаСписка", - ПараметрыФормы, - ЭтотОбъект, - УникальныйИдентификатор); - -КонецПроцедуры - -#КонецОбласти - diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ObjectModule.bsl deleted file mode 100644 index 81d6d1a..0000000 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/ObjectModule.bsl +++ /dev/null @@ -1,290 +0,0 @@ -// ПС_ПринятиеЗадолженностиОтУчреждения: модуль объекта. -// Сторона ЦБ: Дт 205.31.56X — Кт 304.04.130. -// Проводки формируются в процедуре ОбработкаПроведения прямым заполнением -// набора записей регистра бухгалтерии ЖурналПроводокЕПСБУ. -// Кроме проводок документ формирует приход в регистре накопления -// ПС_ВзаиморасчетыПоРодительскойПлате (принятая от учреждения задолженность). - -#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда - -#Область ОбработчикиСобытий - -Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) - - Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ") Тогда - - // Заполнение возможно только на основании проведённого документа передачи. - Если НЕ ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеЗаполнения, "Проведен") Тогда - ОбщегоНазначения.СообщитьПользователю( - "Заполнение документа возможно только на основании проведённого документа передачи задолженности."); - Возврат; - КонецЕсли; - - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ - | ПередачаЗадолженности.ЦБ КАК Организация, - | ПередачаЗадолженности.Организация КАК Учреждение, - | ПередачаЗадолженности.ИФО КАК ИФО, - | ПередачаЗадолженности.Ответственный КАК Ответственный, - | ПередачаЗадолженности.Период КАК Период, - | ПередачаЗадолженности.КФО КАК КФО, - | ПередачаЗадолженности.ПередачаСальдо КАК ПередачаСальдо, - | ПередачаЗадолженности.СчетКорреспондент КАК СчетКорреспондент, - | ПередачаЗадолженности.КЭККорреспондент КАК КЭККорреспондент - |ИЗ - | Документ.ПС_ПередачаЗадолженностиВЦБ КАК ПередачаЗадолженности - |ГДЕ - | ПередачаЗадолженности.Ссылка = &Ссылка"; - Запрос.УстановитьПараметр("Ссылка", ДанныеЗаполнения); - ВыборкаШапка = Запрос.Выполнить().Выбрать(); - Если ВыборкаШапка.Следующий() Тогда - // Организация на стороне ЦБ — берём организацию-получатель из передачи (это и есть ЦБ). - ОрганизацияЦБ = ВыборкаШапка.Организация; - Если ЗначениеЗаполнено(ОрганизацияЦБ) Тогда - Организация = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(ОрганизацияЦБ, "Организация (ЦБ)"); - КонецЕсли; - // Учреждение-отправитель (ПБС) — берём организацию-отправитель из передачи - // (там тип CatalogRef.Организации), а в нашем документе нужен CatalogRef.Контрагенты. - УчреждениеОрганизация = ВыборкаШапка.Учреждение; - Если ЗначениеЗаполнено(УчреждениеОрганизация) Тогда - Учреждение = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(УчреждениеОрганизация, "Учреждение-отправитель"); - КонецЕсли; - Ответственный = ВыборкаШапка.Ответственный; - Период = ВыборкаШапка.Период; - КФО = ВыборкаШапка.КФО; - ДокументПередачи = ДанныеЗаполнения; - // Режим начального сальдо и корреспондирующий счёт с КЭК наследуются от передачи. - ПередачаСальдо = ВыборкаШапка.ПередачаСальдо; - СчетКорреспондент = ВыборкаШапка.СчетКорреспондент; - КЭККорреспондент = ВыборкаШапка.КЭККорреспондент; - // Учёт по ИФО ведётся только при включённой функциональной опции. - Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО") Тогда - ИФО = ВыборкаШапка.ИФО; - КонецЕсли; - КонецЕсли; - - ЗапросСтроки = Новый Запрос; - ЗапросСтроки.Текст = - "ВЫБРАТЬ - | ПередачаЗадолженностиЗадолженность.Контрагент КАК Контрагент, - | ПередачаЗадолженностиЗадолженность.Договор КАК Договор, - | ПередачаЗадолженностиЗадолженность.Ребенок КАК Ребенок, - | ПередачаЗадолженностиЗадолженность.ИДСтроки КАК ИДСтроки, - | ПередачаЗадолженностиЗадолженность.Сумма КАК Сумма - |ИЗ - | Документ.ПС_ПередачаЗадолженностиВЦБ.Задолженность КАК ПередачаЗадолженностиЗадолженность - |ГДЕ - | ПередачаЗадолженностиЗадолженность.Ссылка = &Ссылка"; - ЗапросСтроки.УстановитьПараметр("Ссылка", ДанныеЗаполнения); - ВыборкаСтроки = ЗапросСтроки.Выполнить().Выбрать(); - Пока ВыборкаСтроки.Следующий() Цикл - НоваяСтрока = Задолженность.Добавить(); - ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаСтроки); - СуммаДокумента = СуммаДокумента + ВыборкаСтроки.Сумма; - КонецЦикла; - - // КФО документа и КПС строк - из проводок документа передачи. - ПС_УчетРодительскойПлаты.ЗаполнитьРеквизитыУчетаПоПроводкам(ЭтотОбъект, ДанныеЗаполнения); - - КонецЕсли; - -КонецПроцедуры - -Процедура ОбработкаПроведения(Отказ, РежимПроведения) - - Движения.ЖурналПроводокЕПСБУ.Очистить(); - Движения.ЖурналПроводокЕПСБУ.Записывать = Истина; - Движения.ЖурналПроводокЕПСБУ.ДополнительныеСвойства.Вставить("НеФормироватьУчетныеДанныеИзПроводок"); - - Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Очистить(); - Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина; - - СчетДт = БухгалтерскийУчет.СчетПоКоду("205.31", Дата, Организация); - - // Счёт, корреспондирующий со счётом расчётов по доходам, и его КЭК наследуются - // из документа передачи (заполняются при вводе на основании). - СчетКт = СчетКорреспондент; - Если НЕ ЗначениеЗаполнено(СчетКт) Тогда - ОбщегоНазначения.СообщитьПользователю( - "Не заполнен счёт, корреспондирующий со счётом 205.31. Проведение невозможно.", - , "СчетКорреспондент", "Объект", Отказ); - Возврат; - КонецЕсли; - - ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт); - - // КПС строк наследуется из проводок документа передачи (см. ЗаполнитьКПССтрок), - // КЭК счёта 205.31 определяется по настройкам счёта и типу контрагента (подстатья КОСГУ). - Для Каждого СтрокаЗадолженности Из Задолженность Цикл - - Движение = Движения.ЖурналПроводокЕПСБУ.Добавить(); - Движение.Период = Дата; - Движение.Организация = Организация; - Движение.ИФО = ИФО; - Движение.КФО = КФО; - Движение.СчетДт = СчетДт; - Движение.СчетКт = СчетКт; - Движение.КПСДт = СтрокаЗадолженности.КПС; - Движение.КПСКт = СтрокаЗадолженности.КПС; - Движение.КЭКДт = КЭКПроводки(СчетДт, "Дт", СтрокаЗадолженности.Контрагент, СтрокаЗадолженности.Договор); - Движение.КЭККт = КЭККорреспондент; - Движение.Сумма = СтрокаЗадолженности.Сумма; - Движение.ЖурналОпераций = ЖурналОпераций; - Движение.Содержание = "Принятие задолженности по родительской плате от учреждения"; - - Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты] = СтрокаЗадолженности.Контрагент; - Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Договоры] = СтрокаЗадолженности.Договор; - Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.КорреспондентыПоВнутреннимРасчетам] = Учреждение; - - // Взаиморасчеты по родительской плате: принятая от учреждения задолженность. - ДвижениеПС = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьПриход(); - ДвижениеПС.Период = Дата; - ДвижениеПС.Организация = Организация; - ДвижениеПС.Учреждение = Учреждение; - ДвижениеПС.Плательщик = СтрокаЗадолженности.Контрагент; - ДвижениеПС.Ребенок = СтрокаЗадолженности.Ребенок; - ДвижениеПС.Договор = СтрокаЗадолженности.Договор; - ДвижениеПС.ИФО = ИФО; - ДвижениеПС.КФО = КФО; - ДвижениеПС.КПС = СтрокаЗадолженности.КПС; - ДвижениеПС.Сумма = СтрокаЗадолженности.Сумма; - ДвижениеПС.ВидОперации = ?(ПередачаСальдо, - Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.НачальноеСальдо, - Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.ПринятоОтУчреждения); - ДвижениеПС.ИДСтроки = СтрокаЗадолженности.ИДСтроки; - ДвижениеПС.ДокументПередачи = ДокументПередачи; - - КонецЦикла; - - // В конфигурации есть подписка на событие "ОбработкаПроведения" (ЗаписатьТаблицуПроводок), - // которая выполняется после модуля объекта и перезаписывает проводки документа: если таблица - // проводок не передана, набор записей регистра очищается. Поэтому передаём сформированную - // таблицу через ДополнительныеСвойства.ДанныеАвтоПроведения.ТаблицаПроводок. - БухгалтерскиеОперацииСервер.ИнициализироватьБухгалтерскиеОперации(ЭтотОбъект); - ДополнительныеСвойства.ДанныеАвтоПроведения.ТаблицаПроводок = Движения.ЖурналПроводокЕПСБУ.Выгрузить(); - -КонецПроцедуры - -Процедура ОбработкаУдаленияПроведения(Отказ) - - Движения.ЖурналПроводокЕПСБУ.Записывать = Истина; - Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина; - -КонецПроцедуры - -Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) - - Если ОбменДанными.Загрузка Тогда - Возврат; - КонецЕсли; - - ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект); - - ЗаполнитьРеквизитыПоУмолчанию(); - - СуммаДокумента = Задолженность.Итог("Сумма"); - ЗаполнитьКПССтрок(); - -КонецПроцедуры - -Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) - - Если НЕ ЗначениеЗаполнено(Организация) Тогда - ОбщегоНазначения.СообщитьПользователю("Не заполнена организация (ЦБ)", , "Организация", "Объект", Отказ); - КонецЕсли; - - Если НЕ ЗначениеЗаполнено(Учреждение) Тогда - ОбщегоНазначения.СообщитьПользователю("Не заполнено учреждение (сад-отправитель)", , "Учреждение", "Объект", Отказ); - КонецЕсли; - - Если НЕ ЗначениеЗаполнено(ДокументПередачи) Тогда - ОбщегоНазначения.СообщитьПользователю("Не заполнен документ передачи задолженности", , "ДокументПередачи", "Объект", Отказ); - КонецЕсли; - - Если НЕ ЗначениеЗаполнено(КФО) Тогда - ОбщегоНазначения.СообщитьПользователю("Не заполнен КФО", , "КФО", "Объект", Отказ); - КонецЕсли; - - Если Задолженность.Количество() = 0 Тогда - ОбщегоНазначения.СообщитьПользователю("Не заполнена табличная часть ""Задолженность""", , "Задолженность", "Объект", Отказ); - Иначе - Для Каждого СтрокаЗадолженности Из Задолженность Цикл - Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.КПС) Тогда - ТекстСообщения = "Не заполнен КПС строки табличной части ""Задолженность""."; - Если НЕ ПередачаСальдо Тогда - ТекстСообщения = ТекстСообщения - + " Заполнение возможно только на основании проведённого документа передачи задолженности."; - КонецЕсли; - ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Задолженность", "Объект", Отказ); - Прервать; - КонецЕсли; - КонецЦикла; - КонецЕсли; - - СуммаПоТаблице = Задолженность.Итог("Сумма"); - Если СуммаДокумента <> СуммаПоТаблице Тогда - ОбщегоНазначения.СообщитьПользователю("Сумма документа не совпадает с итогом по табличной части", , "СуммаДокумента", "Объект", Отказ); - КонецЕсли; - -КонецПроцедуры - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -// Заполняет счёт, корреспондирующий со счётом расчётов по доходам (205.31), и его КЭК -// значениями по умолчанию, если они не заданы пользователем. -// -Процедура ЗаполнитьРеквизитыПоУмолчанию() - - Если НЕ ЗначениеЗаполнено(СчетКорреспондент) Тогда - СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию(); - КонецЕсли; - - Если НЕ ЗначениеЗаполнено(КЭККорреспондент) Тогда - КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию(); - КонецЕсли; - -КонецПроцедуры - -// Заполняет строки табличной части "Задолженность" КПС, унаследованным -// из проводок документа передачи задолженности. -// -Процедура ЗаполнитьКПССтрок() - - ПС_УчетРодительскойПлаты.ЗаполнитьРеквизитыУчетаПоПроводкам(ЭтотОбъект, ДокументПередачи); - -КонецПроцедуры - -// Возвращает КЭК проводки, определённый по настройкам счёта -// и типу контрагента (подстатья КОСГУ). -// -// Параметры: -// Счет - ПланСчетовСсылка.ЕПСБУ - счёт проводки. -// ДтКт - Строка - сторона проводки: "Дт" или "Кт". -// Субконто1 - Произвольный - значение первого субконто проводки. -// Субконто2 - Произвольный - значение второго субконто проводки. -// -// Возвращаемое значение: -// СправочникСсылка.КОСГУ - КЭК проводки. -// -Функция КЭКПроводки(Счет, ДтКт, Субконто1 = Неопределено, Субконто2 = Неопределено) - - ПараметрыКЭК = БухгалтерскийУчетКлиентСервер.ПараметрыРасчетаКЭКПроводки(); - ПараметрыКЭК.Организация = Организация; - ПараметрыКЭК.ИФО = ИФО; - ПараметрыКЭК.КФО = КФО; - ПараметрыКЭК.Дата = Дата; - ПараметрыКЭК.Счет = Счет; - ПараметрыКЭК.ДтКт = ДтКт; - ПараметрыКЭК.Субконто1 = Субконто1; - ПараметрыКЭК.Субконто2 = Субконто2; - - Возврат БухгалтерскийУчет.КЭКПроводки(ПараметрыКЭК); - -КонецФункции - -#КонецОбласти - -#КонецЕсли diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Forms/ФормаДокумента/Form.form b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Forms/ФормаДокумента/Form.form similarity index 92% rename from 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Forms/ФормаДокумента/Form.form rename to 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Forms/ФормаДокумента/Form.form index f452bac..ed4f03d 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/Forms/ФормаДокумента/Form.form +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Forms/ФормаДокумента/Form.form @@ -873,27 +873,23 @@ ГруппаСтраницыОперации 94 - ПередачаСальдо - 98 - - <key>ru</key> - <value>Передача начального сальдо</value> - + ДокументПередачи + 111 true true true - Объект.ПередачаСальдо + Объект.ДокументПередачи OnChange - ПередачаСальдоПриИзменении + ДокументПередачиПриИзменении - ПередачаСальдоРасширеннаяПодсказка - 100 + ДокументПередачиРасширеннаяПодсказка + 113 Label true true @@ -902,49 +898,12 @@ - ПередачаСальдоКонтекстноеМеню - 99 - true - - CheckBoxField - Enter - true - Left - true - - - - ДокументНачисления - 19 - true - true - - true - - - Объект.ДокументНачисления - - - OnChange - ДокументНачисленияПриИзменении - - - ДокументНачисленияРасширеннаяПодсказка - 21 - Label - true - true - - Left - - - - ДокументНачисленияКонтекстноеМеню - 20 + ДокументПередачиКонтекстноеМеню + 112 true InputField - EnterOnInput + Enter true Left true @@ -952,7 +911,6 @@ true true true - true true true true @@ -1398,16 +1356,16 @@ Auto - СоздатьПринятиеЗадолженностиНаОсновании - 77 + ЗаполнитьПоДокументуПередачи + 114 true true true - ФормаСоздатьПринятиеЗадолженностиНаОснованииРасширеннаяПодсказка - 78 + ФормаЗаполнитьПоДокументуПередачиРасширеннаяПодсказка + 115 Label true true @@ -1415,33 +1373,7 @@ Left - Form.Command.СоздатьПринятиеЗадолженностиНаОсновании - Normal - Auto - true - true - UserCmds - Auto - - - ЗаполнитьПоОстаткам20531 - 107 - true - true - - true - - - ФормаЗаполнитьПоОстаткам20531РасширеннаяПодсказка - 108 - Label - true - true - - Left - - - Form.Command.ЗаполнитьПоОстаткам20531 + Form.Command.ЗаполнитьПоДокументуПередачи Normal Auto true @@ -1469,7 +1401,7 @@ Объект 1 - DocumentObject.ПС_ПередачаЗадолженностиВЦБ + DocumentObject.ПС_ПринятиеПоступившихПлатежейИзЦБ true @@ -1519,10 +1451,10 @@ - СоздатьПринятиеЗадолженностиНаОсновании + ЗаполнитьПоДокументуПередачи <key>ru</key> - <value>Создать принятие на основании</value> + <value>Заполнить по документу передачи</value> 3 @@ -1530,23 +1462,7 @@ - ПС_СоздатьПринятиеЗадолженностиНаОсновании - - - - - ЗаполнитьПоОстаткам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 new file mode 100644 index 0000000..0fc5819 --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Forms/ФормаДокумента/Module.bsl @@ -0,0 +1,200 @@ +// ПС_ПринятиеПоступившихПлатежейИзЦБ: модуль формы документа. + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + БухгалтерскиеОперацииСервер.ПриСозданииНаСервере(Отказ, СтандартнаяОбработка, Элементы.БухгалтерскаяОперация); + + // ИФО показывается только при включённом учёте по ИФО (как в типовых документах). + Элементы.ИФО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО"); + // КПС определяется автоматически по настройкам учётной политики. + Элементы.ЗадолженностьКПС.ТолькоПросмотр = Истина; + + // Счёт, корреспондирующий со счётом 205.31, и его КЭК: значения по умолчанию. + ЗаполнитьКорреспондирующийСчетПоУмолчанию(); + + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда + + // Сад (получатель) задаётся при открытии формы из документа передачи платежей: + // до заполнения он должен быть известен, иначе строки не подберутся. + ОрганизацияСада = Неопределено; + Если Параметры.Свойство("ОрганизацияСада", ОрганизацияСада) + И ЗначениеЗаполнено(ОрганизацияСада) Тогда + Объект.Организация = ОрганизацияСада; + КонецЕсли; + + // Форма открывается командой "Создать приём платежей" документа передачи: + // из него переносятся реквизиты учёта, а строки подбираются по саду документа. + ДокументПередачи = Неопределено; + Если Параметры.Свойство("ДокументПередачи", ДокументПередачи) + И ТипЗнч(ДокументПередачи) = Тип("ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения") Тогда + ДокументОбъект = РеквизитФормыВЗначение("Объект"); + ДокументОбъект.Заполнить(ДокументПередачи); + ЗначениеВРеквизитФормы(ДокументОбъект, "Объект"); + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(Объект.ЦБ) Тогда + Объект.ЦБ = ПС_РаботаСКонтрагентами.КонтрагентЦБПоУмолчанию(); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + БухгалтерскиеОперацииСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект, Элементы.БухгалтерскаяОперация); + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + + БухгалтерскиеОперацииКлиент.ПередЗаписью(Отказ, ПараметрыЗаписи, ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + БухгалтерскиеОперацииСервер.ПередЗаписью(Отказ, ТекущийОбъект, ПараметрыЗаписи, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + БухгалтерскиеОперацииКлиент.ПослеЗаписи(ПараметрыЗаписи, ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + БухгалтерскиеОперацииСервер.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ДокументПередачиПриИзменении(Элемент) + + // При смене документа передачи строки подбираются заново по саду документа. + Если ЗначениеЗаполнено(Объект.ДокументПередачи) + И ЗначениеЗаполнено(Объект.Организация) Тогда + ЗаполнитьПоДокументуПередачиНаСервере(); + Иначе + Объект.Задолженность.Очистить(); + Объект.СуммаДокумента = 0; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыЗадолженность + +&НаКлиенте +Процедура ЗадолженностьПриИзменении(Элемент) + + Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма"); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПечатьИзвещения(Команда) + + ТабличныйДокумент = ПечатьИзвещенияНаСервере(Объект.Ссылка); + ТабличныйДокумент.Показать("Извещение (ф. 0504805, ред. 103н) - получатель"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПросмотрБухгалтерскихЗаписей(Команда) + + ОткрытьБухгалтерскиеЗаписиДокумента(Объект.Ссылка); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьПоДокументуПередачи(Команда) + + Если НЕ ЗначениеЗаполнено(Объект.ДокументПередачи) Тогда + СообщениеПользователю = Новый СообщениеПользователю; + СообщениеПользователю.Текст = "Не заполнен документ передачи платежей."; + СообщениеПользователю.Сообщить(); + Возврат; + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда + СообщениеПользователю = Новый СообщениеПользователю; + СообщениеПользователю.Текст = "Укажите организацию (учреждение-сад), чтобы подобрать строки."; + СообщениеПользователю.Сообщить(); + Возврат; + КонецЕсли; + + ЗаполнитьПоДокументуПередачиНаСервере(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция ПечатьИзвещенияНаСервере(ДокументСсылка) + + Возврат Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.СформироватьПечатныеФормыИзвещений(ДокументСсылка); + +КонецФункции + +&НаСервере +Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию() + + Если НЕ ЗначениеЗаполнено(Объект.СчетКорреспондент) Тогда + Объект.СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию(); + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(Объект.КЭККорреспондент) Тогда + Объект.КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию(); + КонецЕсли; + +КонецПроцедуры + +// Подбирает строки табличной части "Задолженность" из документа передачи по саду +// документа (реквизит "Организация"). +// +&НаСервере +Процедура ЗаполнитьПоДокументуПередачиНаСервере() + + ДокументОбъект = РеквизитФормыВЗначение("Объект"); + ДокументОбъект.Заполнить(Объект.ДокументПередачи); + ЗначениеВРеквизитФормы(ДокументОбъект, "Объект"); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьБухгалтерскиеЗаписиДокумента(ДокументСсылка) + + ПараметрыФормы = Новый Структура; + Отбор = Новый Структура("Регистратор", ДокументСсылка); + ПараметрыФормы.Вставить("Отбор", Отбор); + + ОткрытьФорму("РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ФормаСписка", + ПараметрыФормы, + ЭтотОбъект, + УникальныйИдентификатор); + +КонецПроцедуры + +#КонецОбласти diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/ManagerModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ManagerModule.bsl similarity index 85% rename from 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/ManagerModule.bsl rename to 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ManagerModule.bsl index 6e8988f..774f7df 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/ManagerModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ManagerModule.bsl @@ -1,4 +1,4 @@ -// ПС_ПередачаЗадолженностиВЦБ: модуль менеджера. +// ПС_ПринятиеПоступившихПлатежейИзЦБ: модуль менеджера. // Печатная форма извещения (ф. 0504805, ред. 103н) - сторона отправителя (учреждение). // Заполнение макета выполняет общая логика подсистемы: ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805. @@ -10,7 +10,7 @@ // Вызывается из модуля формы документа кнопкой "Печать". // // Параметры: -// ДокументСсылка - ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ - печатаемый документ. +// ДокументСсылка - ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ - печатаемый документ. // // Возвращаемое значение: // ТабличныйДокумент diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl similarity index 62% rename from 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/ObjectModule.bsl rename to 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl index cf187a4..8cfe99a 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/ObjectModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl @@ -1,7 +1,10 @@ -// ПС_ПередачаЗадолженностиВЦБ: модуль объекта. +// ПС_ПринятиеПоступившихПлатежейИзЦБ: модуль объекта. // Сторона детского сада: Дт 304.04.130 — Кт 205.31.66X. // Проводки формируются в процедуре ОбработкаПроведения прямым заполнением // набора записей регистра бухгалтерии ЖурналПроводокЕПСБУ. +// Документ вводится на основании документа передачи платежей ЦБ и принимает +// в саду поступившие платежи этого сада. В регистр взаиморасчётов не пишет: +// его ведёт только ЦБ. #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда @@ -9,68 +12,40 @@ Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) - Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.НачислениеРодительскойПлаты") Тогда + Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения") Тогда - // Заполнение возможно только на основании проведённого документа начисления. + // Заполнение возможно только на основании проведённого документа передачи. Если НЕ ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеЗаполнения, "Проведен") Тогда ОбщегоНазначения.СообщитьПользователю( - "Заполнение документа возможно только на основании проведённого документа начисления родительской платы."); + "Заполнение документа возможно только на основании проведённого документа передачи платежей."); Возврат; КонецЕсли; - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ - | НачислениеРодительскойПлаты.Организация КАК Организация, - | НачислениеРодительскойПлаты.ИФО КАК ИФО, - | НачислениеРодительскойПлаты.Ответственный КАК Ответственный, - | НачислениеРодительскойПлаты.НачалоПериода КАК НачалоПериода, - | НачислениеРодительскойПлаты.Дата КАК ДатаДокумента - |ИЗ - | Документ.НачислениеРодительскойПлаты КАК НачислениеРодительскойПлаты - |ГДЕ - | НачислениеРодительскойПлаты.Ссылка = &Ссылка"; - Запрос.УстановитьПараметр("Ссылка", ДанныеЗаполнения); - ВыборкаШапка = Запрос.Выполнить().Выбрать(); - Если ВыборкаШапка.Следующий() Тогда - Организация = ВыборкаШапка.Организация; - Ответственный = ВыборкаШапка.Ответственный; - ДокументНачисления = ДанныеЗаполнения; - // Учёт по ИФО ведётся только при включённой функциональной опции. - Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО") Тогда - ИФО = ВыборкаШапка.ИФО; - КонецЕсли; - Если ЗначениеЗаполнено(ВыборкаШапка.НачалоПериода) Тогда - Период = ВыборкаШапка.НачалоПериода; - Иначе - Период = НачалоМесяца(ВыборкаШапка.ДатаДокумента); - КонецЕсли; + РеквизитыПередачи = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДанныеЗаполнения, + "Дата, Период, ИФО, КФО, Ответственный, СчетКорреспондент, КЭККорреспондент, Организация"); + + ДокументПередачи = ДанныеЗаполнения; + Дата = РеквизитыПередачи.Дата; + Период = РеквизитыПередачи.Период; + КФО = РеквизитыПередачи.КФО; + Ответственный = РеквизитыПередачи.Ответственный; + СчетКорреспондент = РеквизитыПередачи.СчетКорреспондент; + КЭККорреспондент = РеквизитыПередачи.КЭККорреспондент; + Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО") Тогда + ИФО = РеквизитыПередачи.ИФО; КонецЕсли; - ЦБ = ПС_РаботаСКонтрагентами.КонтрагентЦБПоУмолчанию(); + // Отправитель (ЦБ) определяется по организации документа передачи: в документе передачи + // ЦБ хранится организацией, а в документе сада - контрагентом, сопоставляем по ИНН. + ЦБ = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(РеквизитыПередачи.Организация, "Отправитель (ЦБ)"); - ЗапросСтроки = Новый Запрос; - ЗапросСтроки.Текст = - "ВЫБРАТЬ - | НачислениеРодительскойПлатыНачисления.Контрагент КАК Контрагент, - | НачислениеРодительскойПлатыНачисления.ДоговорКонтрагента КАК Договор, - | НачислениеРодительскойПлатыНачисления.Ребенок КАК Ребенок, - | НачислениеРодительскойПлатыНачисления.ИДСтроки КАК ИДСтроки, - | НачислениеРодительскойПлатыНачисления.Сумма КАК Сумма - |ИЗ - | Документ.НачислениеРодительскойПлаты.Начисления КАК НачислениеРодительскойПлатыНачисления - |ГДЕ - | НачислениеРодительскойПлатыНачисления.Ссылка = &Ссылка"; - ЗапросСтроки.УстановитьПараметр("Ссылка", ДанныеЗаполнения); - ВыборкаСтроки = ЗапросСтроки.Выполнить().Выбрать(); - Пока ВыборкаСтроки.Следующий() Цикл - НоваяСтрока = Задолженность.Добавить(); - ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаСтроки); - СуммаДокумента = СуммаДокумента + ВыборкаСтроки.Сумма; - КонецЦикла; + // Строки подбираются по саду документа: сад задаётся реквизитом "Организация". + // Если сад ещё не указан, строки заполняются командой формы после его выбора. + ЗаполнитьСтрокиПоДокументуПередачи(ДанныеЗаполнения); - // КФО документа и КПС строк - из проводок документа начисления. - ПС_УчетРодительскойПлаты.ЗаполнитьРеквизитыУчетаПоПроводкам(ЭтотОбъект, ДанныеЗаполнения); + // Реквизиты и табличная часть заполнены вручную, стандартное заполнение не требуется: + // оно скопировало бы строки всех садов и организацию централизованной бухгалтерии. + СтандартнаяОбработка = Ложь; КонецЕсли; @@ -96,7 +71,7 @@ ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт); - // КПС строк наследуется из проводок документа начисления (см. ЗаполнитьКПССтрок), + // КПС строк наследуется из строк документа передачи (см. ЗаполнитьСтрокиПоДокументуПередачи), // КЭК счёта 205.31 определяется по настройкам счёта и типу контрагента (подстатья КОСГУ). Для Каждого СтрокаЗадолженности Из Задолженность Цикл @@ -113,7 +88,7 @@ Движение.КЭККт = КЭКПроводки(СчетКт, "Кт", СтрокаЗадолженности.Контрагент, СтрокаЗадолженности.Договор); Движение.Сумма = СтрокаЗадолженности.Сумма; Движение.ЖурналОпераций = ЖурналОпераций; - Движение.Содержание = "Передача задолженности по родительской плате в ЦБ"; + Движение.Содержание = "Принятие поступивших платежей по родительской плате из ЦБ"; Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.КорреспондентыПоВнутреннимРасчетам] = ЦБ; Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты] = СтрокаЗадолженности.Контрагент; @@ -147,7 +122,6 @@ ЗаполнитьРеквизитыПоУмолчанию(); СуммаДокумента = Задолженность.Итог("Сумма"); - ЗаполнитьКПССтрок(); КонецПроцедуры @@ -161,8 +135,8 @@ ОбщегоНазначения.СообщитьПользователю("Не заполнен получатель - ЦБ (администратор доходов)", , "ЦБ", "Объект", Отказ); КонецЕсли; - Если НЕ ПередачаСальдо И НЕ ЗначениеЗаполнено(ДокументНачисления) Тогда - ОбщегоНазначения.СообщитьПользователю("Не заполнен документ начисления родительской платы", , "ДокументНачисления", "Объект", Отказ); + Если НЕ ЗначениеЗаполнено(ДокументПередачи) Тогда + ОбщегоНазначения.СообщитьПользователю("Не заполнен документ передачи платежей", , "ДокументПередачи", "Объект", Отказ); КонецЕсли; Если НЕ ЗначениеЗаполнено(КФО) Тогда @@ -174,12 +148,10 @@ Иначе Для Каждого СтрокаЗадолженности Из Задолженность Цикл Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.КПС) Тогда - ТекстСообщения = "Не заполнен КПС строки табличной части ""Задолженность""."; - Если НЕ ПередачаСальдо Тогда - ТекстСообщения = ТекстСообщения - + " Заполнение возможно только на основании проведённого документа начисления родительской платы."; - КонецЕсли; - ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Задолженность", "Объект", Отказ); + ОбщегоНазначения.СообщитьПользователю( + "Не заполнен КПС строки табличной части ""Задолженность""." + + " Заполните строки по документу передачи.", + , "Задолженность", "Объект", Отказ); Прервать; КонецЕсли; КонецЦикла; @@ -211,18 +183,53 @@ КонецПроцедуры -// Заполняет строки табличной части "Задолженность" КПС, унаследованным -// из проводок документа начисления родительской платы. +// Подбирает строки табличной части "Задолженность" из документа передачи по саду +// документа (реквизит "Организация"). Если сад не указан, табличная часть очищается. // -Процедура ЗаполнитьКПССтрок() +// Параметры: +// ДокументПередачиСсылка - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения - документ-основание. +// +Процедура ЗаполнитьСтрокиПоДокументуПередачи(ДокументПередачиСсылка) - // В режиме передачи начального сальдо КПС строк заполняется по остаткам счёта 205.31, - // а не по проводкам документа начисления. - Если ПередачаСальдо Тогда + Задолженность.Очистить(); + СуммаДокумента = 0; + + Если НЕ ЗначениеЗаполнено(ДокументПередачиСсылка) ИЛИ НЕ ЗначениеЗаполнено(Организация) Тогда Возврат; КонецЕсли; - ПС_УчетРодительскойПлаты.ЗаполнитьРеквизитыУчетаПоПроводкам(ЭтотОбъект, ДокументНачисления); + // В документе передачи сад хранится контрагентом (как в регистре взаиморасчётов), + // а в документе сада - организацией, поэтому сопоставляем по ИНН. + КонтрагентСада = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(Организация, "Учреждение"); + Если НЕ ЗначениеЗаполнено(КонтрагентСада) Тогда + Возврат; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | СтрокиПередачи.Контрагент КАК Контрагент, + | СтрокиПередачи.Договор КАК Договор, + | СтрокиПередачи.Ребенок КАК Ребенок, + | СтрокиПередачи.ИДСтроки КАК ИДСтроки, + | СтрокиПередачи.Сумма КАК Сумма, + | СтрокиПередачи.КПС КАК КПС + |ИЗ + | Документ.ПС_ПередачаПоступившихПлатежейВУчреждения.Задолженность КАК СтрокиПередачи + |ГДЕ + | СтрокиПередачи.Ссылка = &ДокументПередачи + | И СтрокиПередачи.Учреждение = &Учреждение"; + Запрос.УстановитьПараметр("ДокументПередачи", ДокументПередачиСсылка); + Запрос.УстановитьПараметр("Учреждение", КонтрагентСада); + + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + + НоваяСтрока = Задолженность.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка); + СуммаДокумента = СуммаДокумента + Выборка.Сумма; + + КонецЦикла; КонецПроцедуры diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель/Template.mxlx b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП/Template.mxlx similarity index 99% rename from 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель/Template.mxlx rename to 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП/Template.mxlx index 946b071..5b2391b 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеЗадолженностиОтУчреждения/Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель/Template.mxlx +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Templates/ПФ_MXL_Извещение0504805_103н_ПС_РП/Template.mxlx @@ -1186,12 +1186,7 @@ 2 59 - - - ru - - - + @@ -2360,12 +2355,7 @@ 2 59 - - - ru - - - + @@ -3992,8 +3982,6 @@ -1 - #000080 - #000080 Solid diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/ПС_ПередачаЗадолженностиВЦБ.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo similarity index 89% rename from 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/ПС_ПередачаЗадолженностиВЦБ.mdo rename to 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo index bb5da20..ace4a31 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаЗадолженностиВЦБ/ПС_ПередачаЗадолженностиВЦБ.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo @@ -7,10 +7,10 @@ - ПС_ПередачаЗадолженностиВЦБ + ПС_ПринятиеПоступившихПлатежейИзЦБ ru - Передача начислений в ЦБ + Принятие поступивших платежей из ЦБ true DontUse @@ -18,18 +18,18 @@ Use ru - Передача задолженности в ЦБ + Принятие поступивших платежей из ЦБ ru - Передача начислений в ЦБ + Принятия поступивших платежей из ЦБ String 9 Variable true true - Document.ПС_ПередачаЗадолженностиВЦБ.Form.ФормаДокумента + Document.ПС_ПринятиеПоступившихПлатежейИзЦБ.Form.ФормаДокумента AccountingRegister.ЖурналПроводокЕПСБУ true true @@ -37,7 +37,7 @@ Организация ru - Организация + Получатель (учреждение) CatalogRef.Организации @@ -52,7 +52,7 @@ ЦБ ru - ЦБ (получатель) + Отправитель (ЦБ) CatalogRef.Контрагенты @@ -100,21 +100,6 @@ Use Use - - ДокументНачисления - - ru - Документ начисления - - - DocumentRef.НачислениеРодительскойПлаты - - - - - Use - Use - ИФО @@ -177,21 +162,6 @@ Use Use - - ПередачаСальдо - - ru - Передача начального сальдо - - - Boolean - - - - - Use - Use - КЭККорреспондент @@ -222,6 +192,21 @@ Use Use + + ДокументПередачи + + ru + Документ передачи платежей + + + DocumentRef.ПС_ПередачаПоступившихПлатежейВУчреждения + + + + + Use + Use + ФормаДокумента diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Enums/ПС_ВидыОперацийПоВзаиморасчетам/ПС_ВидыОперацийПоВзаиморасчетам.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Enums/ПС_ВидыОперацийПоВзаиморасчетам/ПС_ВидыОперацийПоВзаиморасчетам.mdo index 08364cd..434f469 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Enums/ПС_ВидыОперацийПоВзаиморасчетам/ПС_ВидыОперацийПоВзаиморасчетам.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Enums/ПС_ВидыОперацийПоВзаиморасчетам/ПС_ВидыОперацийПоВзаиморасчетам.mdo @@ -13,24 +13,17 @@ true BothWays - ПринятоОтУчреждения + ПередачаВУчреждение ru - Принято от учреждения + Передача в учреждение - Оплата + ПоступлениеПлатежа ru - Оплата родительской платы - - - - НачальноеСальдо - - ru - Начальное сальдо + Поступление родительской платы diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ОсновнаяРоль/Rights.rights b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ОсновнаяРоль/Rights.rights index eb67030..f1d6baf 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ОсновнаяРоль/Rights.rights +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ОсновнаяРоль/Rights.rights @@ -4,7 +4,7 @@ false false - Document.ПС_ПередачаЗадолженностиВЦБ + Document.ПС_ПринятиеПоступившихПлатежейИзЦБ Read true @@ -27,7 +27,7 @@ - Document.ПС_ПринятиеЗадолженностиОтУчреждения + Document.ПС_ПередачаПоступившихПлатежейВУчреждения Read true diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Subsystems/ТаксиПлатноеОбразование/Subsystems/РодительскаяПлата/РодительскаяПлата.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Subsystems/ТаксиПлатноеОбразование/Subsystems/РодительскаяПлата/РодительскаяПлата.mdo index 54e2369..1475459 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Subsystems/ТаксиПлатноеОбразование/Subsystems/РодительскаяПлата/РодительскаяПлата.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Subsystems/ТаксиПлатноеОбразование/Subsystems/РодительскаяПлата/РодительскаяПлата.mdo @@ -8,8 +8,8 @@ Extended true - Document.ПС_ПередачаЗадолженностиВЦБ - Document.ПС_ПринятиеЗадолженностиОтУчреждения + Document.ПС_ПринятиеПоступившихПлатежейИзЦБ + Document.ПС_ПередачаПоступившихПлатежейВУчреждения DataProcessor.ПС_УправлениеРасчетамиПоРодительскойПлате Subsystem.ТаксиПлатноеОбразование From 9deb24451fe1a54f2e8259a1e1e2e05fac205b93 Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Thu, 22 Oct 2026 11:54:33 +0500 Subject: [PATCH 07/19] =?UTF-8?q?=D0=92=D0=BD=D1=83=D1=82=D1=80=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D0=B8=D0=B9=20=D0=AD=D0=94=D0=9E=20=D0=B8=D0=B7?= =?UTF-8?q?=D0=B2=D0=B5=D1=89=D0=B5=D0=BD=D0=B8=D0=B9=200504805:=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D1=8B=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B0=D1=87=D0=B8/=D0=BF=D1=80=D0=B8=D0=BD?= =?UTF-8?q?=D1=8F=D1=82=D0=B8=D1=8F=20=D0=B8=20=D0=BD=D0=B0=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=B9=D0=BA=D0=B0=20=D0=AD=D0=94=D0=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Документы ПС_ПередачаПоступившихПлатежейВУчреждения и ПС_ПринятиеПоступившихПлатежейИзЦБ: адресность (один сад на документ), реквизиты-организации, печатные формы, участие во внутреннем ЭДО. - Общие модули расширения: ПС_ВнутреннийЭДОИзвещений, ВнутреннийЭДОПереопределяемый, ВнутренниеЭлектронныеДокументыБГУ, ПС_ИдентификаторыОбъектовЭДО. - Автоматическое аннулирование электронного документа при изменении учетного документа. - Определяемый тип ОснованиеВнутреннегоЭлектронногоДокумента расширен нашими документами. - Эксперимент с инициализацией идентификаторов объектов метаданных результата не дал: БСП не поддерживает идентификаторы объектов расширений в неразделенной базе. Решено переходить на типовые извещения (ИзвещениеИсходящее / ИзвещениеВходящее). - Удален неиспользуемый общий модуль ПС_РаботаСКонтрагентами. --- .../ПС_ВзаиморасчетыПоРодительскойПлате.mdo | 4 +- .../CommonModules/ВнутренниеЭлектронныеДокументыБГУ/Module.bsl | 33 +++ .../ВнутренниеЭлектронныеДокументыБГУ.mdo | 17 ++ .../src/CommonModules/ВнутреннийЭДОПереопределяемый/Module.bsl | 57 +++++ .../ВнутреннийЭДОПереопределяемый.mdo | 17 ++ .../src/CommonModules/ПС_ВнутреннийЭДОИзвещений/Module.bsl | 175 +++++++++++++ .../ПС_ВнутреннийЭДОИзвещений.mdo} | 6 +- .../src/CommonModules/ПС_ИдентификаторыОбъектовЭДО/Module.bsl | 238 ++++++++++++++++++ .../ПС_ИдентификаторыОбъектовЭДО.mdo | 7 + .../src/CommonModules/ПС_РаботаСКонтрагентами/Module.bsl | 172 ------------- .../ПС_РазборПлатежейПоРодительскойПлате/Module.bsl | 1 + .../src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl | 89 +------ .../src/Configuration/Configuration.mdo | 8 +- .../Forms/Форма/Form.form | 148 ++++++++--- .../Forms/Форма/Module.bsl | 139 +++++----- .../ПС_УправлениеРасчетамиПоРодительскойПлате/ObjectModule.bsl | 23 +- .../ПС_УправлениеРасчетамиПоРодительскойПлате.mdo | 2 +- .../ОснованиеВнутреннегоЭлектронногоДокумента.mdo | 21 ++ .../src/Documents/КассовоеПоступление/ObjectModule.bsl | 12 +- .../Forms/ФормаДокумента/Form.form | 86 ++++--- .../Forms/ФормаДокумента/Module.bsl | 100 ++++---- .../ManagerModule.bsl | 40 +++ .../ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl | 26 +- .../ПС_ПередачаПоступившихПлатежейВУчреждения.mdo | 33 +-- .../Forms/ФормаДокумента/Module.bsl | 29 ++- .../ПС_ПринятиеПоступившихПлатежейИзЦБ/ManagerModule.bsl | 40 +++ .../ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl | 29 ++- .../ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo | 2 +- 28 files changed, 1048 insertions(+), 506 deletions(-) create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутренниеЭлектронныеДокументыБГУ/Module.bsl create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутренниеЭлектронныеДокументыБГУ/ВнутренниеЭлектронныеДокументыБГУ.mdo create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутреннийЭДОПереопределяемый/Module.bsl create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутреннийЭДОПереопределяемый/ВнутреннийЭДОПереопределяемый.mdo create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_ВнутреннийЭДОИзвещений/Module.bsl rename 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/{ПС_РаботаСКонтрагентами/ПС_РаботаСКонтрагентами.mdo => ПС_ВнутреннийЭДОИзвещений/ПС_ВнутреннийЭДОИзвещений.mdo} (61%) create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_ИдентификаторыОбъектовЭДО/Module.bsl create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_ИдентификаторыОбъектовЭДО/ПС_ИдентификаторыОбъектовЭДО.mdo delete mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РаботаСКонтрагентами/Module.bsl create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DefinedTypes/ОснованиеВнутреннегоЭлектронногоДокумента/ОснованиеВнутреннегоЭлектронногоДокумента.mdo diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/AccumulationRegisters/ПС_ВзаиморасчетыПоРодительскойПлате/ПС_ВзаиморасчетыПоРодительскойПлате.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/AccumulationRegisters/ПС_ВзаиморасчетыПоРодительскойПлате/ПС_ВзаиморасчетыПоРодительскойПлате.mdo index b4f85b3..867abac 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/AccumulationRegisters/ПС_ВзаиморасчетыПоРодительскойПлате/ПС_ВзаиморасчетыПоРодительскойПлате.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/AccumulationRegisters/ПС_ВзаиморасчетыПоРодительскойПлате/ПС_ВзаиморасчетыПоРодительскойПлате.mdo @@ -93,10 +93,10 @@ Учреждение ru - Учреждение-отправитель + Учреждение (сад) - CatalogRef.Контрагенты + CatalogRef.Организации diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутренниеЭлектронныеДокументыБГУ/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутренниеЭлектронныеДокументыБГУ/Module.bsl new file mode 100644 index 0000000..32e87a4 --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутренниеЭлектронныеДокументыБГУ/Module.bsl @@ -0,0 +1,33 @@ +// ВнутренниеЭлектронныеДокументыБГУ: расширение. +// Дополняет состав документов, обрабатываемых внутренним ЭДО БГУ, документами +// учёта родительской платы: передачей поступивших платежей в учреждение и +// принятием поступивших платежей из ЦБ. + +#Область ПрограммныйИнтерфейс + +// Определяет, обрабатывается ли учётный документ механизмом внутреннего ЭДО БГУ. +// В типовой список типов БГУ документы расширения не входят, поэтому дополняем результат. +// +// Параметры: +// ТипИсточника - Тип - тип ссылки или объекта учётного документа. +// +// Возвращаемое значение: +// Булево - Истина, если документ обрабатывается внутренним ЭДО БГУ. +// +&Вместо("ЭтоВнутреннийДокументЭДО") +Функция ПС_ЭтоВнутреннийДокументЭДО(ТипИсточника) Экспорт + + Результат = ПродолжитьВызов(ТипИсточника); + + Если НЕ Результат Тогда + Результат = ТипИсточника = Тип("ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения") + ИЛИ ТипИсточника = Тип("ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения") + ИЛИ ТипИсточника = Тип("ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ") + ИЛИ ТипИсточника = Тип("ДокументОбъект.ПС_ПринятиеПоступившихПлатежейИзЦБ"); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +#КонецОбласти diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутренниеЭлектронныеДокументыБГУ/ВнутренниеЭлектронныеДокументыБГУ.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутренниеЭлектронныеДокументыБГУ/ВнутренниеЭлектронныеДокументыБГУ.mdo new file mode 100644 index 0000000..f9e47ba --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутренниеЭлектронныеДокументыБГУ/ВнутренниеЭлектронныеДокументыБГУ.mdo @@ -0,0 +1,17 @@ + + + ВнутренниеЭлектронныеДокументыБГУ + Adopted + + Checked + Checked + Checked + Checked + Checked + Checked + Checked + + true + true + true + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутреннийЭДОПереопределяемый/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутреннийЭДОПереопределяемый/Module.bsl new file mode 100644 index 0000000..e04041a --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутреннийЭДОПереопределяемый/Module.bsl @@ -0,0 +1,57 @@ +// ВнутреннийЭДОПереопределяемый: расширение. +// Адресация электронных извещений по учреждению (саду). + +#Область СлужебныеПроцедурыИФункции + +// Дополняет параметры нового электронного документа: электронное извещение по передаче +// платежей адресуется учреждению-получателю, а не ЦБ. +// +// Маршрут подписания выбирается по ключу настройки внутреннего ЭДО +// (организация + вид документа + команда печати), поэтому без адресации по саду +// для всех садов получался бы один общий маршрут, и подписать извещение +// руководителем конкретного сада было бы невозможно. +// +// Параметры: +// ПараметрыДокумента - Структура - параметры открытия электронного документа, +// см. ВнутреннийЭДОКлиентСервер.ПараметрыОткрытияЭлектронногоДокумента(). +// +&После("ПриЗаполненииПараметровНовогоЭлектронногоДокумента") +Процедура ПС_ПриЗаполненииПараметровНовогоЭлектронногоДокумента(ПараметрыДокумента) + + УчетныйДокумент = ПараметрыДокумента.УчетныйДокумент; + + Если ТипЗнч(УчетныйДокумент) = Тип("ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения") Тогда + УчетныйДокумент = УчетныйДокумент.Ссылка; + КонецЕсли; + + Если ТипЗнч(УчетныйДокумент) = Тип("ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения") Тогда + Учреждение = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(УчетныйДокумент, "Учреждение").Учреждение; + Если ЗначениеЗаполнено(Учреждение) Тогда + ПараметрыДокумента.Организация = Учреждение; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +// Дополняет получение организации учётного документа для проверок внутреннего ЭДО, +// в том числе для запрета редактирования формы после завершения подписания: +// для документа передачи организацией считается учреждение-получатель. +// +// Параметры: +// Форма - ФормаКлиентскогоПриложения - форма учётного документа. +// Источник - ДокументОбъект - учётный документ. +// Организация - ОпределяемыйТип.Организация - организация учётного документа. +// СтандартнаяОбработка - Булево - Истина, если организация берётся как Источник.Организация. +// +&После("ПриПолученииОрганизацииПоОбъекту") +Процедура ПС_ПриПолученииОрганизацииПоОбъекту(Форма, Источник, Организация, СтандартнаяОбработка) + + Если ТипЗнч(Источник) = Тип("ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения") + И ЗначениеЗаполнено(Источник.Учреждение) Тогда + СтандартнаяОбработка = Ложь; + Организация = Источник.Учреждение; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутреннийЭДОПереопределяемый/ВнутреннийЭДОПереопределяемый.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутреннийЭДОПереопределяемый/ВнутреннийЭДОПереопределяемый.mdo new file mode 100644 index 0000000..b365d59 --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутреннийЭДОПереопределяемый/ВнутреннийЭДОПереопределяемый.mdo @@ -0,0 +1,17 @@ + + + ВнутреннийЭДОПереопределяемый + Adopted + + Checked + Checked + Checked + Checked + Checked + Checked + Checked + + true + true + true + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_ВнутреннийЭДОИзвещений/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_ВнутреннийЭДОИзвещений/Module.bsl new file mode 100644 index 0000000..651932f --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_ВнутреннийЭДОИзвещений/Module.bsl @@ -0,0 +1,175 @@ +#Область ПрограммныйИнтерфейс + +// Вызывается из обработчика "ПриЗаписи" модулей объектов извещений внутреннего ЭДО. +// Аннулирует электронные документы, печатная форма которых перестала соответствовать +// данным учётного документа. Штатный перевод подписанного электронного документа +// в неактуальные возможен только из состояния "Аннулирован". +// +// Параметры: +// Источник - ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения, +// ДокументОбъект.ПС_ПринятиеПоступившихПлатежейИзЦБ - записываемый документ. +// Отказ - Булево - признак отказа от записи документа. +// +Процедура ПС_АннулироватьЭлектронныеДокументыПриИзменении(Источник, Отказ) Экспорт + + Ссылка = Источник.Ссылка; + + Если Ссылка.Пустая() Тогда + Возврат; + КонецЕсли; + + Попытка + ПС_АннулироватьНеактуальныеЭлектронныеДокументы(Ссылка); + Исключение + ЗаписьЖурналаРегистрации( + НСтр("ru = 'Внутренний ЭДО извещений.Аннулирование при изменении документа'"), + УровеньЖурналаРегистрации.Ошибка, + Источник.Метаданные(), + Ссылка, + ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Аннулирует актуальные подписанные электронные документы, печатная форма которых +// отличается от печатной формы учётного документа на текущий момент. +// +// Параметры: +// УчетныйДокумент - ДокументСсылка - извещение, данные которого были изменены. +// +Процедура ПС_АннулироватьНеактуальныеЭлектронныеДокументы(УчетныйДокумент) + + ЭлектронныеДокументы = ВнутреннийЭДО.ЭлектронныеДокументыАктуальные(УчетныйДокумент); + + СостояниеЗавершен = ПредопределенноеЗначение("Перечисление.СостоянияДокументовВнутреннегоЭДО.Завершен"); + СостояниеТребуетсяУточнение = ПредопределенноеЗначение("Перечисление.СостоянияДокументовВнутреннегоЭДО.ТребуетсяУточнение"); + + Для Каждого СтрокаСписка Из ЭлектронныеДокументы Цикл + + Если СтрокаСписка.Состояние <> СостояниеЗавершен + И СтрокаСписка.Состояние <> СостояниеТребуетсяУточнение Тогда + Продолжить; + КонецЕсли; + + ЭлектронныйДокумент = СтрокаСписка.ЭлектронныйДокумент; + + Если НЕ ПС_ПечатнаяФормаОтличаетсяОтПодписанной( + УчетныйДокумент, ЭлектронныйДокумент, СтрокаСписка.ИдентификаторКомандыПечати) Тогда + Продолжить; + КонецЕсли; + + ПараметрыАннулирования = Новый Структура; + ПараметрыАннулирования.Вставить("УчетныйДокумент", УчетныйДокумент); + ПараметрыАннулирования.Вставить("ЭлектронныйДокумент", ЭлектронныйДокумент); + ПараметрыАннулирования.Вставить("ВидПодписи", ПС_ВидПодписиТекущегоПользователя(ЭлектронныйДокумент)); + ПараметрыАннулирования.Вставить("Комментарий", + НСтр("ru = 'Автоматически аннулирован: изменены данные учётного документа'")); + + ВнутреннийЭДО.АннулироватьЭлектронныйДокумент(ПараметрыАннулирования); + + КонецЦикла; + +КонецПроцедуры + +// Определяет, отличается ли сохранённая в электронном документе печатная форма +// от печатной формы учётного документа на текущий момент. +// +// Параметры: +// УчетныйДокумент - ДокументСсылка - извещение. +// ЭлектронныйДокумент - ДокументСсылка.ВнутреннийЭлектронныйДокумент - электронный документ. +// ИдентификаторКомандыПечати - Строка - идентификатор команды печати извещения. +// +// Возвращаемое значение: +// Булево - Истина, если печатные формы различаются. +// +Функция ПС_ПечатнаяФормаОтличаетсяОтПодписанной( + УчетныйДокумент, ЭлектронныйДокумент, ИдентификаторКомандыПечати) + + ОсновнойФайл = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЭлектронныйДокумент, "ОсновнойФайл").ОсновнойФайл; + + Если НЕ ЗначениеЗаполнено(ОсновнойФайл) Тогда + Возврат Ложь; + КонецЕсли; + + ДвоичныеДанныеСохраненнойФормы = РаботаСФайлами.ДвоичныеДанныеФайла(ОсновнойФайл, Ложь); + + Если ДвоичныеДанныеСохраненнойФормы = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + + ПараметрыПечати = Новый Структура; + ПараметрыПечати.Вставить("УчетныйДокумент", УчетныйДокумент); + ПараметрыПечати.Вставить("ИдентификаторКомандыПечати", ИдентификаторКомандыПечати); + + ВнутреннийЭДОПереопределяемый.ПриПолученииТабличногоДокументаАктуальногоДокумента(ПараметрыПечати); + + ТабличныйДокументТекущий = ПС_ТабличныйДокументУчетногоДокумента(ПараметрыПечати); + + Если ТабличныйДокументТекущий.ВысотаТаблицы = 0 Тогда + Возврат Ложь; + КонецЕсли; + + ТабличныйДокументСохраненный = ВнутреннийЭДО.ТабличныйДокументИзДвоичныхДанныхАрхива(ДвоичныеДанныеСохраненнойФормы); + + Возврат НЕ ВнутреннийЭДО.ТабличныеДокументыИдентичны(ТабличныйДокументСохраненный, ТабличныйДокументТекущий); + +КонецФункции + +// Формирует табличный документ печатной формы учётного документа в привилегированном режиме. +// +// Параметры: +// ПараметрыПечати - Структура - параметры печати: УчетныйДокумент, ИдентификаторКомандыПечати. +// +// Возвращаемое значение: +// ТабличныйДокумент - печатная форма учётного документа. +// +Функция ПС_ТабличныйДокументУчетногоДокумента(ПараметрыПечати) + + // Печать учётного документа может обращаться к данным, недоступным пользователю, + // поэтому печатная форма формируется в привилегированном режиме + // с восстановлением исходного значения режима. + ТекущийПривилегированныйРежим = ПривилегированныйРежим(); + УстановитьПривилегированныйРежим(Истина); + + Попытка + ДвоичныеДанные = ВнутреннийЭДО.ДвоичныеДанныеУчетногоДокумента(ПараметрыПечати); + Исключение + УстановитьПривилегированныйРежим(ТекущийПривилегированныйРежим); + ВызватьИсключение; + КонецПопытки; + + УстановитьПривилегированныйРежим(ТекущийПривилегированныйРежим); + + Возврат ВнутреннийЭДО.ТабличныйДокументИзДвоичныхДанныхАрхива(ДвоичныеДанные); + +КонецФункции + +// Возвращает вид подписи текущего пользователя по маршруту электронного документа. +// Если пользователь не является подписантом маршрута, возвращается пустая ссылка - +// аннулирование в этом случае выполняется без отметки строки маршрута. +// +// Параметры: +// ЭлектронныйДокумент - ДокументСсылка.ВнутреннийЭлектронныйДокумент - электронный документ. +// +// Возвращаемое значение: +// ПеречислениеСсылка.ВидыЭлектронныхПодписейБГУ - вид подписи текущего пользователя. +// +Функция ПС_ВидПодписиТекущегоПользователя(ЭлектронныйДокумент) + + СоставМаршрута = ВнутреннийЭДО.СоставМаршрутаПодписанияДокумента(ЭлектронныйДокумент); + + СтрокиПодписанта = СоставМаршрута.НайтиСтроки(Новый Структура("Подписант", Пользователи.ТекущийПользователь())); + + Если СтрокиПодписанта.Количество() > 0 Тогда + Возврат СтрокиПодписанта[0].ВидПодписи; + КонецЕсли; + + Возврат ПредопределенноеЗначение("Перечисление.ВидыЭлектронныхПодписейБГУ.ПустаяСсылка"); + +КонецФункции + +#КонецОбласти diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РаботаСКонтрагентами/ПС_РаботаСКонтрагентами.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_ВнутреннийЭДОИзвещений/ПС_ВнутреннийЭДОИзвещений.mdo similarity index 61% rename from 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РаботаСКонтрагентами/ПС_РаботаСКонтрагентами.mdo rename to 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_ВнутреннийЭДОИзвещений/ПС_ВнутреннийЭДОИзвещений.mdo index 896612e..d5ce782 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РаботаСКонтрагентами/ПС_РаботаСКонтрагентами.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_ВнутреннийЭДОИзвещений/ПС_ВнутреннийЭДОИзвещений.mdo @@ -1,9 +1,9 @@ - - ПС_РаботаСКонтрагентами + + ПС_ВнутреннийЭДОИзвещений ru - ПС Работа с контрагентами + ПС_Внутренний ЭДО извещений true true diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_ИдентификаторыОбъектовЭДО/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_ИдентификаторыОбъектовЭДО/Module.bsl new file mode 100644 index 0000000..ab2fd83 --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_ИдентификаторыОбъектовЭДО/Module.bsl @@ -0,0 +1,238 @@ +#Область ПрограммныйИнтерфейс + +// Обеспечивает наличие в справочнике идентификаторов объектов метаданных записей +// по документам внутреннего ЭДО, созданным в расширении конфигурации. +// +// Настройки внутреннего ЭДО ключуются идентификатором объекта метаданных, который библиотека +// заполняет только по объектам основной конфигурации. Записи по документам расширения создаются +// этой процедурой, а если обновление данных справочника пометило их на удаление, восстанавливаются. +// +// Возвращаемое значение: +// Соответствие из КлючИЗначение - идентификаторы объектов метаданных по их полным именам: +// * Ключ - Строка - полное имя объекта метаданных, например "Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ"; +// * Значение - СправочникСсылка.ИдентификаторыОбъектовМетаданных - идентификатор объекта метаданных. +// +Функция ПС_ОбеспечитьИдентификаторыДокументовЭДО() Экспорт + + ПолныеИменаДокументов = Новый Массив; + ПолныеИменаДокументов.Добавить("Документ.ПС_ПередачаПоступившихПлатежейВУчреждения"); + ПолныеИменаДокументов.Добавить("Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ"); + + СуществующиеЗаписи = ПС_СуществующиеЗаписи(ПолныеИменаДокументов); + + Результат = Новый Соответствие; + + Для Каждого ПолноеИмя Из ПолныеИменаДокументов Цикл + СуществующаяЗапись = СуществующиеЗаписи.Получить(ПолноеИмя); + Результат.Вставить(ПолноеИмя, ПС_ОбеспечитьИдентификаторОбъекта(ПолноеИмя, + СуществующаяЗапись.Ссылка, СуществующаяЗапись.ТребуетсяВосстановление)); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Обеспечивает наличие записи справочника идентификаторов по полному имени объекта метаданных. +// +// Параметры: +// ПолноеИмя - Строка - полное имя объекта метаданных; +// Идентификатор - СправочникСсылка.ИдентификаторыОбъектовМетаданных - найденная запись справочника; +// ТребуетсяВосстановление - Булево - запись помечена на удаление или ее полное имя изменено. +// +// Возвращаемое значение: +// СправочникСсылка.ИдентификаторыОбъектовМетаданных - идентификатор объекта метаданных. +// +Функция ПС_ОбеспечитьИдентификаторОбъекта(ПолноеИмя, Идентификатор, ТребуетсяВосстановление) + + Если ЗначениеЗаполнено(Идентификатор) И НЕ ТребуетсяВосстановление Тогда + Возврат Идентификатор; + КонецЕсли; + + Если ЗначениеЗаполнено(Идентификатор) Тогда + ЗаписьИдентификатора = Идентификатор.ПолучитьОбъект(); + Иначе + ЗаписьИдентификатора = Справочники.ИдентификаторыОбъектовМетаданных.СоздатьЭлемент(); + КонецЕсли; + + ЗаполнитьЗначенияСвойств(ЗаписьИдентификатора, ПС_СвойстваЗаписиИдентификатора(ПолноеИмя)); + // Создание записей справочника предусмотрено только механизмом обновления данных справочника, + // поэтому запись выполняется в режиме загрузки данных. + ЗаписьИдентификатора.ОбменДанными.Загрузка = Истина; + ЗаписьИдентификатора.Записать(); + + Возврат ЗаписьИдентификатора.Ссылка; + +КонецФункции + +// Возвращает записи справочника идентификаторов по полным именам объектов метаданных, +// включая записи, испорченные механизмом обновления данных справочника. +// +// Параметры: +// ПолныеИмена - Массив из Строка - полные имена объектов метаданных. +// +// Возвращаемое значение: +// Соответствие из КлючИЗначение - найденные записи по полным именам объектов метаданных: +// * Ключ - Строка - полное имя объекта метаданных; +// * Значение - Структура: +// ** Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных - найденная запись; +// ** ТребуетсяВосстановление - Булево - запись помечена на удаление или ее полное имя изменено. +// +Функция ПС_СуществующиеЗаписи(ПолныеИмена) + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ИдентификаторыОбъектовМетаданных.Ссылка КАК Ссылка, + | ИдентификаторыОбъектовМетаданных.ПолноеИмя КАК ПолноеИмя, + | ИдентификаторыОбъектовМетаданных.ПометкаУдаления КАК ПометкаУдаления + |ИЗ + | Справочник.ИдентификаторыОбъектовМетаданных КАК ИдентификаторыОбъектовМетаданных + |ГДЕ + | ИдентификаторыОбъектовМетаданных.ПолноеИмя В (&ПолныеИмена) + | ИЛИ ИдентификаторыОбъектовМетаданных.ПолноеИмя ПОДОБНО &ШаблонИзмененногоИмени + |УПОРЯДОЧИТЬ ПО + | ИдентификаторыОбъектовМетаданных.ПометкаУдаления, + | ИдентификаторыОбъектовМетаданных.ПолноеИмя"; + Запрос.УстановитьПараметр("ПолныеИмена", ПолныеИмена); + Запрос.УстановитьПараметр("ШаблонИзмененногоИмени", "?%"); + + Результат = Новый Соответствие; + + Для Каждого ПолноеИмя Из ПолныеИмена Цикл + Запись = Новый Структура("Ссылка, ТребуетсяВосстановление", + Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка(), Ложь); + Результат.Вставить(ПолноеИмя, Запись); + КонецЦикла; + + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + + Запись = Результат.Получить(Выборка.ПолноеИмя); + + Если Запись <> Неопределено И НЕ Выборка.ПометкаУдаления Тогда + Запись.Ссылка = Выборка.Ссылка; + Запись.ТребуетсяВосстановление = Ложь; + Продолжить; + КонецЕсли; + + Если НЕ Выборка.ПометкаУдаления Тогда + Продолжить; + КонецЕсли; + + ПС_ОтметитьИзмененнуюЗапись(Результат, Выборка); + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Отмечает запись справочника идентификаторов как испорченную механизмом обновления данных справочника. +// +// Параметры: +// Результат - Соответствие из КлючИЗначение - см. ПС_СуществующиеЗаписи; +// Выборка - ВыборкаИзРезультатаЗапроса - запись справочника, помеченная на удаление. +// +Процедура ПС_ОтметитьИзмененнуюЗапись(Результат, Выборка) + + Для Каждого КлючИЗначение Из Результат Цикл + + Запись = КлючИЗначение.Значение; + + Если ЗначениеЗаполнено(Запись.Ссылка) + ИЛИ СтрНайти(Выборка.ПолноеИмя, КлючИЗначение.Ключ) = 0 Тогда + Продолжить; + КонецЕсли; + + Запись.Ссылка = Выборка.Ссылка; + Запись.ТребуетсяВосстановление = Истина; + + Возврат; + + КонецЦикла; + +КонецПроцедуры + +// Возвращает значения реквизитов записи справочника идентификаторов объектов метаданных. +// +// Параметры: +// ПолноеИмя - Строка - полное имя объекта метаданных, например "Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ". +// +// Возвращаемое значение: +// Структура - значения реквизитов записи: +// * Наименование - Строка - представление идентификатора объекта метаданных; +// * Имя - Строка - имя объекта метаданных; +// * Синоним - Строка - синоним объекта метаданных; +// * ПолныйСиноним - Строка - полный синоним объекта метаданных; +// * ПолноеИмя - Строка - полное имя объекта метаданных; +// * Родитель - СправочникСсылка.ИдентификаторыОбъектовМетаданных - группа коллекции; +// * ПорядокКоллекции - Число - порядок коллекции объектов метаданных; +// * БезДанных - Булево - Ложь; +// * ЗначениеПустойСсылки - Произвольный - пустая ссылка объекта метаданных; +// * КлючОбъектаМетаданных - ХранилищеЗначения - ключ объекта метаданных; +// * ИмяПредопределенныхДанных - Строка - пустая строка; +// * ПометкаУдаления - Булево - Ложь. +// +Функция ПС_СвойстваЗаписиИдентификатора(ПолноеИмя) + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмя); + + ПозицияТочки = СтрНайти(ПолноеИмя, "."); + ИмяБазовогоТипа = Лев(ПолноеИмя, ПозицияТочки - 1); + ИмяТипаСсылки = ИмяБазовогоТипа + "Ссылка." + ОбъектМетаданных.Имя; + + ОписаниеТипаСсылки = Новый ОписаниеТипов(ИмяТипаСсылки); + + Синоним = ?(ЗначениеЗаполнено(ОбъектМетаданных.Синоним), ОбъектМетаданных.Синоним, ОбъектМетаданных.Имя); + СвойстваКоллекции = ПС_СвойстваКоллекцииОбъектовМетаданных(ИмяБазовогоТипа); + + Свойства = Новый Структура; + Свойства.Вставить("Наименование", Синоним + " (" + СвойстваКоллекции.СинонимВЕдЧисле + ")"); + Свойства.Вставить("Имя", ОбъектМетаданных.Имя); + Свойства.Вставить("Синоним", Синоним); + Свойства.Вставить("ПолныйСиноним", СвойстваКоллекции.СинонимВЕдЧисле + ". " + Синоним); + Свойства.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя()); + Свойства.Вставить("Родитель", + Справочники.ИдентификаторыОбъектовМетаданных.ПолучитьСсылку(СвойстваКоллекции.Идентификатор)); + Свойства.Вставить("ПорядокКоллекции", Число(СвойстваКоллекции.ПорядокКоллекции)); + Свойства.Вставить("БезДанных", Ложь); + Свойства.Вставить("ЗначениеПустойСсылки", ОписаниеТипаСсылки.ПривестиЗначение(Неопределено)); + Свойства.Вставить("КлючОбъектаМетаданных", Новый ХранилищеЗначения(Тип(ИмяТипаСсылки))); + Свойства.Вставить("ИмяПредопределенныхДанных", ""); + Свойства.Вставить("ПометкаУдаления", Ложь); + + Возврат Свойства; + +КонецФункции + +// Возвращает свойства коллекции объектов метаданных по имени базового типа. +// +// Параметры: +// ИмяБазовогоТипа - Строка - имя базового типа объектов метаданных, например "Документ". +// +// Возвращаемое значение: +// СтрокаТаблицыЗначений - свойства коллекции объектов метаданных. +// +Функция ПС_СвойстваКоллекцииОбъектовМетаданных(ИмяБазовогоТипа) + + СвойстваКоллекций = СтандартныеПодсистемыПовтИсп.СвойстваКоллекцийОбъектовМетаданных(Ложь); + + Отбор = Новый Структура("ИмяВЕдЧисле", ИмяБазовогоТипа); + НайденныеСвойства = СвойстваКоллекций.НайтиСтроки(Отбор); + + Если НайденныеСвойства.Количество() = 0 Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не найдены свойства коллекции объектов метаданных ""%1"".'"), + ИмяБазовогоТипа); + КонецЕсли; + + Возврат НайденныеСвойства[0]; + +КонецФункции + +#КонецОбласти diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_ИдентификаторыОбъектовЭДО/ПС_ИдентификаторыОбъектовЭДО.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_ИдентификаторыОбъектовЭДО/ПС_ИдентификаторыОбъектовЭДО.mdo new file mode 100644 index 0000000..a0fc4c4 --- /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 deleted file mode 100644 index 1fca46d..0000000 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РаботаСКонтрагентами/Module.bsl +++ /dev/null @@ -1,172 +0,0 @@ -// Поиск контрагента, соответствующего организации, по ИНН. -// -// Универсальная функция для обоих документов (Передача задолженности в ЦБ -// и Принятие задолженности от учреждения). Реквизиты ЦБ и УчреждениеОтправитель -// имеют тип CatalogRef.Контрагенты, а в связанных документах-основаниях -// соответствующие организации имеют тип CatalogRef.Организации. Чтобы -// обеспечить соответствие, ищем элемент справочника Контрагенты с тем же ИНН. -// -// Параметры: -// Организация - CatalogRef.Организации - организация, для которой ищем контрагента. -// ИмяПоляПодсказки - Строка - имя реквизита формы/документа, которое остаётся -// незаполненным (для сообщения пользователю). Например, -// "ЦБ (получатель)" или "Учреждение-отправитель". -// -// Возвращаемое значение: -// CatalogRef.Контрагенты - если найден ровно один контрагент с ИНН организации. -// Пустая ссылка - в остальных случаях (организация не заполнена / нет ИНН / нет -// контрагента / найдено несколько). При этом пользователю -// выводится сообщение с описанием причины. -// -#Область ПрограммныйИнтерфейс - -Функция КонтрагентПоОрганизации(Организация, ИмяПоляПодсказки = "") Экспорт - - ПустойКонтрагент = Справочники.Контрагенты.ПустаяСсылка(); - Подсказка = ?(ПустаяСтрока(ИмяПоляПодсказки), "Контрагент", - "Поле """ + ИмяПоляПодсказки + """"); - - Если НЕ ЗначениеЗаполнено(Организация) Тогда - ТекстСообщения = "Не указана организация для поиска контрагента.|" - + Подсказка + " не заполнен - выберите контрагента вручную."; - СообщениеПользователю = Новый СообщениеПользователю; - СообщениеПользователю.Текст = ТекстСообщения; - СообщениеПользователю.Сообщить(); - Возврат ПустойКонтрагент; - КонецЕсли; - - ИНН = Организация.ИНН; - Если НЕ ЗначениеЗаполнено(ИНН) Тогда - Представление = Строка(Организация); - ТекстСообщения = "У организации (" + Представление + ") не заполнен ИНН.|" - + Подсказка + " не заполнен - выберите контрагента вручную."; - СообщениеПользователю = Новый СообщениеПользователю; - СообщениеПользователю.Текст = ТекстСообщения; - СообщениеПользователю.Сообщить(); - Возврат ПустойКонтрагент; - КонецЕсли; - - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ - | Контрагенты.Ссылка КАК Ссылка - |ИЗ - | Справочник.Контрагенты КАК Контрагенты - |ГДЕ - | Контрагенты.ИНН = &ИНН - | И НЕ Контрагенты.ПометкаУдаления"; - Запрос.УстановитьПараметр("ИНН", ИНН); - - РезультатЗапроса = Запрос.Выполнить(); - Если РезультатЗапроса.Пустой() Тогда - Представление = Строка(Организация); - ТекстСообщения = "Контрагент с ИНН " + ИНН + " (организация: " + Представление + ") не найден.|" - + Подсказка + " не заполнен - выберите контрагента вручную."; - СообщениеПользователю = Новый СообщениеПользователю; - СообщениеПользователю.Текст = ТекстСообщения; - СообщениеПользователю.Сообщить(); - Возврат ПустойКонтрагент; - КонецЕсли; - - Выборка = РезультатЗапроса.Выбрать(); - Выборка.Следующий(); - ПервыйНайденный = Выборка.Ссылка; - - Если Выборка.Следующий() Тогда - Представление = Строка(Организация); - ТекстСообщения = "Найдено несколько контрагентов с ИНН " + ИНН + " (организация: " + Представление + ").|" - + Подсказка + " не заполнен - выберите контрагента вручную."; - СообщениеПользователю = Новый СообщениеПользователю; - СообщениеПользователю.Текст = ТекстСообщения; - СообщениеПользователю.Сообщить(); - Возврат ПустойКонтрагент; - КонецЕсли; - - Возврат ПервыйНайденный; - -КонецФункции - -// Обёртка для документов учёта родительской платы: возвращает контрагента ЦБ -// по константе ОрганизацияЦентрализованнаяБухгалтерия. -// -// Параметры: -// ИмяПоляПодсказки - Строка - имя реквизита формы/документа для сообщения. -// -// Возвращаемое значение: -// CatalogRef.Контрагенты - контрагент, соответствующий организации ЦБ, -// либо пустая ссылка (с сообщением пользователю). -// -Функция КонтрагентЦБПоУмолчанию(ИмяПоляПодсказки = "ЦБ (получатель)") Экспорт - - ОрганизацияЦБ = Константы.ОрганизацияЦентрализованнаяБухгалтерия.Получить(); - Возврат КонтрагентПоОрганизации(ОрганизацияЦБ, ИмяПоляПодсказки); - -КонецФункции - -// Поиск организации, соответствующей контрагенту, по ИНН. -// -// Операция, обратная КонтрагентПоОрганизации. В документах начисления и передачи -// учреждение (сад) представлено ссылкой на справочник Организации, а в документах -// принятия, в регистре взаиморасчётов и в отборах пульта управления - ссылкой на -// справочник Контрагенты. Сопоставление выполняется по ИНН. -// -// Параметры: -// Контрагент - CatalogRef.Контрагенты - контрагент, для которого ищем организацию. -// ИмяПоляПодсказки - Строка - имя реквизита для сообщения пользователю. -// -// Возвращаемое значение: -// CatalogRef.Организации - если найдена ровно одна организация с ИНН контрагента. -// Пустая ссылка - в остальных случаях (нет ИНН / нет организации / найдено несколько). -// Причина выводится пользователю. -// -Функция ОрганизацияПоКонтрагенту(Контрагент, ИмяПоляПодсказки = "") Экспорт - - ПустаяОрганизация = Справочники.Организации.ПустаяСсылка(); - Если НЕ ЗначениеЗаполнено(Контрагент) Тогда - Возврат ПустаяОрганизация; - КонецЕсли; - - Подсказка = ?(ПустаяСтрока(ИмяПоляПодсказки), "Организация", - "Поле """ + ИмяПоляПодсказки + """"); - - // Сопоставление выполняем запросом по ИНН: прямое чтение реквизита заимствованного - // справочника Контрагенты в расширении не разбирается анализатором. - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ - | Организации.Ссылка КАК Ссылка - |ИЗ - | Справочник.Организации КАК Организации - | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты - | ПО Контрагенты.ИНН = Организации.ИНН - |ГДЕ - | Контрагенты.Ссылка = &Контрагент - | И НЕ Организации.ПометкаУдаления"; - Запрос.УстановитьПараметр("Контрагент", Контрагент); - - Представление = Строка(Контрагент); - - РезультатЗапроса = Запрос.Выполнить(); - Если РезультатЗапроса.Пустой() Тогда - ОбщегоНазначения.СообщитьПользователю( - "Не найдена организация с тем же ИНН, что у контрагента (" + Представление + ").|" - + Подсказка + " не определена - отбор по учреждению не применён."); - Возврат ПустаяОрганизация; - КонецЕсли; - - Выборка = РезультатЗапроса.Выбрать(); - Выборка.Следующий(); - ПервыйНайденный = Выборка.Ссылка; - - Если Выборка.Следующий() Тогда - ОбщегоНазначения.СообщитьПользователю( - "Найдено несколько организаций с тем же ИНН, что у контрагента (" + Представление + ").|" - + Подсказка + " не определена - отбор по учреждению не применён."); - Возврат ПустаяОрганизация; - КонецЕсли; - - Возврат ПервыйНайденный; - -КонецФункции - -#КонецОбласти diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl index 7d720e1..ab77ab9 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl @@ -1,3 +1,4 @@ +ПС_ИдентификаторыОбъектовЭДО.ПС_ОбеспечитьИдентификаторыДокументовЭДО(); // ПС_РазборПлатежейПоРодительскойПлате: идентификация ребёнка и его контрагента по назначению платежа // в строках табличной части "Расшифровка платежа" документа КассовоеПоступление (БГУ 2.0). #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl index e7f7f16..495268f 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl @@ -113,8 +113,8 @@ Иначе - // ЦБ передаёт поступившие платежи: печатается сторона отправителя, - // отдельное извещение на каждое учреждение документа. + // ЦБ передаёт поступившие платежи: печатается сторона отправителя. + // Документ адресный, поэтому извещение одно - по учреждению документа. ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПС_ПередачаПоступившихПлатежейВУчреждения_Извещение0504805"; Макет = Документы.ПС_ПередачаПоступившихПлатежейВУчреждения.ПолучитьМакет("ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель"); Если Макет = Неопределено Тогда @@ -123,30 +123,19 @@ Возврат ТабличныйДокумент; КонецЕсли; - Учреждения = УчрежденияДокументаПередачи(ДокументОбъект); - Если Учреждения.Количество() = 0 Тогда + Если НЕ ЗначениеЗаполнено(ДокументОбъект.Учреждение) Тогда ОбщегоНазначения.СообщитьПользователю( - "Печатная форма извещения не сформирована: в табличной части ""Задолженность""" - + " не заполнены учреждения."); + "Печатная форма извещения не сформирована: не заполнено учреждение (получатель)."); Возврат ТабличныйДокумент; КонецЕсли; - Для Каждого Учреждение Из Учреждения Цикл + ПараметрыИзвещения = НоваяСтруктураИзвещения("Отправитель", ДокументОбъект.Организация, + ДокументОбъект.Учреждение, + "Передача поступивших платежей по родительской плате за " + + Формат(ДокументОбъект.Период, "ДФ=MMMM yyyy") + + ". Основание: " + Строка(ДокументСсылка) + "."); - ПроводкиУчреждения = ПроводкиПоУчреждению(Проводки, Учреждение); - Если ПроводкиУчреждения.Количество() = 0 Тогда - Продолжить; - КонецЕсли; - - ПараметрыИзвещения = НоваяСтруктураИзвещения("Отправитель", ДокументОбъект.Организация, - Учреждение, - "Передача поступивших платежей по родительской плате за " - + Формат(ДокументОбъект.Период, "ДФ=MMMM yyyy") - + ". Основание: " + Строка(ДокументСсылка) + "."); - - ВывестиИзвещение(ТабличныйДокумент, Макет, ДокументСсылка, ДокументОбъект, ПараметрыИзвещения, ПроводкиУчреждения); - - КонецЦикла; + ВывестиИзвещение(ТабличныйДокумент, Макет, ДокументСсылка, ДокументОбъект, ПараметрыИзвещения, Проводки); КонецЕсли; @@ -239,64 +228,6 @@ КонецПроцедуры -// Возвращает список учреждений, присутствующих в табличной части "Задолженность" документа передачи. -// -// Параметры: -// ДокументОбъект - ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения - документ передачи платежей. -// -// Возвращаемое значение: -// Массив из СправочникСсылка.Контрагенты - уникальные учреждения в порядке появления в табличной части. -// -Функция УчрежденияДокументаПередачи(ДокументОбъект) - - Учреждения = Новый Массив; - Для Каждого СтрокаЗадолженности Из ДокументОбъект.Задолженность Цикл - Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.Учреждение) Тогда - Продолжить; - КонецЕсли; - Если Учреждения.Найти(СтрокаЗадолженности.Учреждение) = Неопределено Тогда - Учреждения.Добавить(СтрокаЗадолженности.Учреждение); - КонецЕсли; - КонецЦикла; - - Возврат Учреждения; - -КонецФункции - -// Возвращает проводки документа, относящиеся к указанному учреждению. -// -// Учреждение определяется по субконто кредита счёта расчётов (304.04), поэтому проверяются -// все позиции субконто. -// -// Параметры: -// Проводки - ТаблицаЗначений - проводки документа, см. ПроводкиИзвещения. -// Учреждение - СправочникСсылка.Контрагенты - учреждение, по которому отбираются проводки. -// -// Возвращаемое значение: -// ТаблицаЗначений - проводки указанного учреждения, колонки как у Проводки. -// -Функция ПроводкиПоУчреждению(Проводки, Учреждение) - - Результат = Проводки.Скопировать(); - СтрокиДляУдаления = Новый Массив; - - Для Каждого Проводка Из Результат Цикл - Если Проводка.СубконтоКт1 = Учреждение - ИЛИ Проводка.СубконтоКт2 = Учреждение - ИЛИ Проводка.СубконтоКт3 = Учреждение Тогда - Продолжить; - КонецЕсли; - СтрокиДляУдаления.Добавить(Проводка); - КонецЦикла; - - Для Каждого Проводка Из СтрокиДляУдаления Цикл - Результат.Удалить(Проводка); - КонецЦикла; - - Возврат Результат; - -КонецФункции - // Заполняет реквизиты стороны извещения (отправителя или получателя) для области "Заголовок". // // Параметры: diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo index 8b55e71..20c4ff4 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo @@ -22,7 +22,7 @@ true ПС_ - 8.3.14 + 8.3.24 Customization ManagedApplication PersonalComputer @@ -53,11 +53,15 @@ CommonPicture.Сумма Role.ПС_ОсновнаяРоль Role.БазовыеПраваБГУ - CommonModule.ПС_РаботаСКонтрагентами CommonModule.ПС_УчетРодительскойПлаты CommonModule.ПС_РазборПлатежейПоРодительскойПлате CommonModule.ВариантыОтчетовПереопределяемый + CommonModule.ВнутренниеЭлектронныеДокументыБГУ + CommonModule.ВнутреннийЭДОПереопределяемый + CommonModule.ПС_ВнутреннийЭДОИзвещений + CommonModule.ПС_ИдентификаторыОбъектовЭДО SettingsStorage.ХранилищеВариантовОтчетов + DefinedType.ОснованиеВнутреннегоЭлектронногоДокумента CommonForm.УстановкаСтатусаПлатежноРасчетногоДокумента Catalog.Контрагенты Catalog.Договоры diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form index 5e2da5a..859c548 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form @@ -245,6 +245,37 @@ UserCmds Auto + + КнопкаИнициализироватьИдентификаторыЭДО + 529 + + <key>ru</key> + <value>Инициализировать идентификаторы ЭДО</value> + + true + true + + true + + + ИнициализироватьИдентификаторыЭДОРасширеннаяПодсказка + 530 + Label + true + true + + Left + + + UsualButton + Form.Command.ИнициализироватьИдентификаторыЭДО + Normal + Auto + true + true + UserCmds + Auto + true true @@ -473,6 +504,51 @@ Normal + + ТаблицаДокументыПередачиУчреждение + 526 + + <key>ru</key> + <value>Учреждение (сад)</value> + + true + true + + true + + + ДокументыПередачи.Учреждение + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиУчреждениеРасширеннаяПодсказка + 528 + Label + true + true + + Left + + + + ТаблицаДокументыПередачиТаблицаДокументыПередачиУчреждениеКонтекстноеМеню + 527 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + ТаблицаДокументыПередачиСуммаДокумента 379 @@ -1197,7 +1273,6 @@ true true true - true true Normal @@ -3735,6 +3810,23 @@ true + + Учреждение + + <key>ru</key> + <value>Учреждение (сад)</value> + + 67 + + CatalogRef.Организации + + + true + + + true + + ДокументыПринятия @@ -3826,23 +3918,6 @@ true - - Учреждение - - <key>ru</key> - <value>Учреждение</value> - - 28 - - CatalogRef.Контрагенты - - - true - - - true - - ИФО @@ -3935,23 +4010,6 @@ <common>true</common> </edit> </columns> - <columns> - <name>ПередачаСальдо</name> - <title> - <key>ru</key> - <value>Начальное сальдо</value> - - 54 - - Boolean - - - true - - - true - - ЦБ @@ -3960,7 +4018,7 @@ 65 - CatalogRef.Контрагенты + CatalogRef.Организации true @@ -4225,7 +4283,7 @@ 47 - CatalogRef.Контрагенты + CatalogRef.Организации true @@ -4548,6 +4606,22 @@ + + ИнициализироватьИдентификаторыЭДО + + <key>ru</key> + <value>Инициализировать идентификаторы ЭДО</value> + + 4 + + true + + + + ИнициализироватьИдентификаторыЭДО + + + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl index ec1bef8..376c813 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl @@ -85,6 +85,18 @@ КонецПроцедуры +// Обеспечивает наличие идентификаторов объектов метаданных по документам внутреннего ЭДО. +// +// Команда нужна для разовой проверки механизма внутреннего ЭДО БГУ: без идентификаторов +// документы расширения не попадают в настройки внутреннего ЭДО (см. ПС_ИдентификаторыОбъектовЭДО). +// +&НаКлиенте +Процедура ИнициализироватьИдентификаторыЭДО(Команда) + + ИнициализироватьИдентификаторыЭДОНаСервере(); + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -101,58 +113,52 @@ КонецЕсли; Отборы = ОтборыДокументовНаСервере(); - Если Отборы = Неопределено Тогда - ОчиститьТаблицы(); - Возврат; - КонецЕсли; ЗаполнитьНачисления(Отборы.СадОрганизация); - ЗаполнитьДокументыПередачи(Отборы.ЦБОрганизация, Отборы.СадКонтрагент); - ЗаполнитьДокументыПринятия(Отборы.ЦБКонтрагент, Отборы.СадОрганизация); - ЗаполнитьСверку(Отборы.ЦБОрганизация, Отборы.СадКонтрагент); + ЗаполнитьДокументыПередачи(Отборы.ЦБОрганизация, Отборы.СадОрганизация); + ЗаполнитьДокументыПринятия(Отборы.ЦБОрганизация, Отборы.СадОрганизация); + ЗаполнитьСверку(Отборы.ЦБОрганизация, Отборы.СадОрганизация); ЗаполнитьТаблицуОстатков(); ЗаполнитьКассовыеПоступления(); КонецПроцедуры -// Приводит отборы формы (ЦБ и учреждение) к значениям, в терминах которых они хранятся -// в документах. +// Обеспечивает наличие идентификаторов объектов метаданных по документам внутреннего ЭДО +// и выводит пользователю результат проверки. // -// Отборы формы заданы в терминах ЦБ: Организация - это ЦБ (справочник Организации), -// Учреждение - сад (справочник Контрагенты). В документах те же стороны хранятся -// по-разному: документ передачи платежей хранит ЦБ как Организацию, а сад - как -// Контрагента в табличной части "Задолженность"; документ принятия - наоборот. -// Приводим значения отбора к типам, которые есть в документах, сопоставлением по ИНН. +&НаСервере +Процедура ИнициализироватьИдентификаторыЭДОНаСервере() + + ОбъектОбработки = РеквизитФормыВЗначение("Объект"); + Идентификаторы = ОбъектОбработки.ПС_ИнициализироватьИдентификаторыОбъектовЭДО(); + + ТекстыИдентификаторов = Новый Массив; + + Для Каждого КлючИЗначение Из Идентификаторы Цикл + ТекстыИдентификаторов.Добавить(КлючИЗначение.Ключ + " -> " + Строка(КлючИЗначение.Значение)); + КонецЦикла; + + Сообщение = Новый СообщениеПользователю; + Сообщение.Текст = "Идентификаторы объектов метаданных внутреннего ЭДО: " + + СтрСоединить(ТекстыИдентификаторов, "; "); + Сообщение.Сообщить(); + +КонецПроцедуры + +// Возвращает отборы формы в терминах, в которых они хранятся в документах. +// +// ЦБ и учреждение (сад) хранятся в документах передачи и принятия организациями, +// поэтому значения отборов передаются в запросы как есть. // // Возвращаемое значение: -// Структура - отборы документов: ЦБОрганизация, ЦБКонтрагент, СадОрганизация, -// СадКонтрагент. Неопределено - отбор не удалось сопоставить с данными -// документов (причина уже выведена пользователю). +// Структура - отборы документов: ЦБОрганизация, СадОрганизация. // &НаСервере Функция ОтборыДокументовНаСервере() Отборы = Новый Структура; - Отборы.Вставить("ЦБОрганизация"); - Отборы.Вставить("ЦБКонтрагент"); - Отборы.Вставить("СадОрганизация"); - Отборы.Вставить("СадКонтрагент"); - - Если ЗначениеЗаполнено(Объект.Организация) Тогда - Отборы.ЦБОрганизация = Объект.Организация; - Отборы.ЦБКонтрагент = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(Объект.Организация, "Организация (ЦБ)"); - Если НЕ ЗначениеЗаполнено(Отборы.ЦБКонтрагент) Тогда - Возврат Неопределено; - КонецЕсли; - КонецЕсли; - - Если ЗначениеЗаполнено(Объект.Учреждение) Тогда - Отборы.СадКонтрагент = Объект.Учреждение; - Отборы.СадОрганизация = ПС_РаботаСКонтрагентами.ОрганизацияПоКонтрагенту(Объект.Учреждение, "Учреждение (сад)"); - Если НЕ ЗначениеЗаполнено(Отборы.СадОрганизация) Тогда - Возврат Неопределено; - КонецЕсли; - КонецЕсли; + Отборы.Вставить("ЦБОрганизация", ?(ЗначениеЗаполнено(Объект.Организация), Объект.Организация, Неопределено)); + Отборы.Вставить("СадОрганизация", ?(ЗначениеЗаполнено(Объект.Учреждение), Объект.Учреждение, Неопределено)); Возврат Отборы; @@ -224,23 +230,24 @@ // Таблица показывает документы передачи поступивших платежей в учреждения (документ ЦБ). // // Параметры: -// ЦБОрганизация - CatalogRef.Организации - ЦБ в виде организации (документ передачи -// хранит ЦБ в реквизите "Организация"); Неопределено - отбор не задан. -// СадКонтрагент - CatalogRef.Контрагенты - учреждение (сад) в табличной части -// "Задолженность"; Неопределено - отбор по учреждению не задан. +// ЦБОрганизация - CatalogRef.Организации - ЦБ (документ передачи хранит ЦБ +// в реквизите "Организация"); Неопределено - отбор не задан. +// СадОрганизация - CatalogRef.Организации - учреждение (сад) в реквизите +// "Учреждение"; Неопределено - отбор по учреждению не задан. // &НаСервере -Процедура ЗаполнитьДокументыПередачи(ЦБОрганизация, СадКонтрагент) +Процедура ЗаполнитьДокументыПередачи(ЦБОрганизация, СадОрганизация) ДокументыПередачи.Очистить(); Запрос = Новый Запрос; Запрос.Текст = - "ВЫБРАТЬ РАЗЛИЧНЫЕ + "ВЫБРАТЬ | Документы.Ссылка КАК Ссылка, | Документы.Дата КАК Дата, | Документы.Номер КАК Номер, | Документы.Организация КАК Организация, + | Документы.Учреждение КАК Учреждение, | Документы.ИФО КАК ИФО, | Документы.Период КАК Период, | Документы.СуммаДокумента КАК СуммаДокумента, @@ -248,15 +255,13 @@ | Документы.ПометкаУдаления КАК ПометкаУдаления |ИЗ | Документ.ПС_ПередачаПоступившихПлатежейВУчреждения КАК Документы - | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПС_ПередачаПоступившихПлатежейВУчреждения.Задолженность КАК Строки - | ПО Документы.Ссылка = Строки.Ссылка |ГДЕ | Документы.Период >= &НачалоПериода | И Документы.Период <= &КонецПериода | И (&ЦБОрганизация = НЕОПРЕДЕЛЕНО | ИЛИ Документы.Организация = &ЦБОрганизация) - | И (&СадКонтрагент = НЕОПРЕДЕЛЕНО - | ИЛИ Строки.Учреждение = &СадКонтрагент) + | И (&СадОрганизация = НЕОПРЕДЕЛЕНО + | ИЛИ Документы.Учреждение = &СадОрганизация) | И (&ИФО = НЕОПРЕДЕЛЕНО | ИЛИ Документы.ИФО = &ИФО) |УПОРЯДОЧИТЬ ПО @@ -265,7 +270,7 @@ Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала); Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания); Запрос.УстановитьПараметр("ЦБОрганизация", ЦБОрганизация); - Запрос.УстановитьПараметр("СадКонтрагент", СадКонтрагент); + Запрос.УстановитьПараметр("СадОрганизация", СадОрганизация); Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено)); Выборка = Запрос.Выполнить().Выбрать(); @@ -279,16 +284,15 @@ // Таблица показывает документы принятия поступивших платежей из ЦБ (документ учреждения). // // Параметры: -// ЦБКонтрагент - CatalogRef.Контрагенты - ЦБ в виде контрагента (документ принятия -// хранит ЦБ в реквизите "ЦБ"); Неопределено - отбор не задан. -// СадОрганизация - CatalogRef.Организации - учреждение (сад) в виде организации -// (документ принятия хранит сад в реквизите "Организация"); +// ЦБОрганизация - CatalogRef.Организации - ЦБ (документ принятия хранит ЦБ +// в реквизите "ЦБ"); Неопределено - отбор не задан. +// СадОрганизация - CatalogRef.Организации - учреждение (сад) в реквизите "Организация"; // Неопределено - отбор по учреждению не задан. // ДокументПередачи - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения - документ // передачи, по которому отбираются принятия; Неопределено - отбор не задан. // &НаСервере -Процедура ЗаполнитьДокументыПринятия(ЦБКонтрагент, СадОрганизация, ДокументПередачи = Неопределено) +Процедура ЗаполнитьДокументыПринятия(ЦБОрганизация, СадОрганизация, ДокументПередачи = Неопределено) ДокументыПринятия.Очистить(); @@ -325,7 +329,7 @@ Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала); Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания); Запрос.УстановитьПараметр("Организация", СадОрганизация); - Запрос.УстановитьПараметр("ЦБ", ЦБКонтрагент); + Запрос.УстановитьПараметр("ЦБ", ЦБОрганизация); Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено)); Запрос.УстановитьПараметр("ДокументПередачи", ДокументПередачи); @@ -346,12 +350,8 @@ Процедура ЗаполнитьПринятияПоПередачеНаСервере(ДокументПередачи) Отборы = ОтборыДокументовНаСервере(); - Если Отборы = Неопределено Тогда - ДокументыПринятия.Очистить(); - Возврат; - КонецЕсли; - ЗаполнитьДокументыПринятия(Отборы.ЦБКонтрагент, Отборы.СадОрганизация, ДокументПередачи); + ЗаполнитьДокументыПринятия(Отборы.ЦБОрганизация, Отборы.СадОрганизация, ДокументПередачи); КонецПроцедуры @@ -360,13 +360,13 @@ // реквизит ДокументПередачи документа принятия. // // Параметры: -// ЦБОрганизация - CatalogRef.Организации - ЦБ в виде организации (документ передачи -// хранит ЦБ в реквизите "Организация"); Неопределено - отбор не задан. -// СадКонтрагент - CatalogRef.Контрагенты - учреждение (сад) в табличной части -// "Задолженность"; Неопределено - отбор по учреждению не задан. +// ЦБОрганизация - CatalogRef.Организации - ЦБ (документ передачи хранит ЦБ +// в реквизите "Организация"); Неопределено - отбор не задан. +// СадОрганизация - CatalogRef.Организации - учреждение (сад) в реквизите +// "Учреждение"; Неопределено - отбор по учреждению не задан. // &НаСервере -Процедура ЗаполнитьСверку(ЦБОрганизация, СадКонтрагент) +Процедура ЗаполнитьСверку(ЦБОрганизация, СадОрганизация) Сверка.Очистить(); @@ -386,10 +386,11 @@ | ДокументПередачи |; | - |ВЫБРАТЬ РАЗЛИЧНЫЕ + |ВЫБРАТЬ | Передача.Ссылка КАК ДокументПередачи, | Передача.Период КАК Период, | Передача.Организация КАК ЦБ, + | Передача.Учреждение КАК Сад, | Передача.СуммаДокумента КАК СуммаПередано, | ЕСТЬNULL(ВТПринято.СуммаПринято, 0) КАК СуммаПринято, | Передача.СуммаДокумента - ЕСТЬNULL(ВТПринято.СуммаПринято, 0) КАК Расхождение, @@ -398,8 +399,6 @@ | Документ.ПС_ПередачаПоступившихПлатежейВУчреждения КАК Передача | ЛЕВОЕ СОЕДИНЕНИЕ ВТПринято КАК ВТПринято | ПО Передача.Ссылка = ВТПринято.ДокументПередачи - | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПС_ПередачаПоступившихПлатежейВУчреждения.Задолженность КАК Строки - | ПО Передача.Ссылка = Строки.Ссылка |ГДЕ | НЕ Передача.ПометкаУдаления | И Передача.Период >= &НачалоПериода @@ -407,17 +406,17 @@ | И (&ЦБ = НЕОПРЕДЕЛЕНО | ИЛИ Передача.Организация = &ЦБ) | И (&Сад = НЕОПРЕДЕЛЕНО - | ИЛИ Строки.Учреждение = &Сад) + | ИЛИ Передача.Учреждение = &Сад) | И (&ИФО = НЕОПРЕДЕЛЕНО | ИЛИ Передача.ИФО = &ИФО) |УПОРЯДОЧИТЬ ПО | Передача.Период, - | Передача.Организация"; + | Передача.Учреждение"; Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала); Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания); Запрос.УстановитьПараметр("ЦБ", ЦБОрганизация); - Запрос.УстановитьПараметр("Сад", СадКонтрагент); + Запрос.УстановитьПараметр("Сад", СадОрганизация); Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено)); Выборка = Запрос.Выполнить().Выбрать(); diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/ObjectModule.bsl index 4d76197..308d8d8 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/ObjectModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/ObjectModule.bsl @@ -1,3 +1,24 @@ // Обработка ПС_УправлениеРасчетамиПоРодительскойПлате. // Логика дашборда реализована в модуле управляемой формы (Forms/Форма/Module.bsl). -// Модуль объекта оставлен пустым намеренно. + +#Область ПрограммныйИнтерфейс + +#Если Сервер Или ВнешнееСоединение Или ТолстыйКлиентОбычноеПриложение Тогда + +// Обеспечивает наличие в справочнике идентификаторов объектов метаданных записей +// по документам внутреннего ЭДО, созданным в расширении конфигурации. +// +// Возвращаемое значение: +// Соответствие из КлючИЗначение - идентификаторы объектов метаданных по их полным именам: +// * Ключ - Строка - полное имя объекта метаданных, например "Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ"; +// * Значение - СправочникСсылка.ИдентификаторыОбъектовМетаданных - идентификатор объекта метаданных. +// +Функция ПС_ИнициализироватьИдентификаторыОбъектовЭДО() Экспорт + + Возврат ПС_ИдентификаторыОбъектовЭДО.ПС_ОбеспечитьИдентификаторыДокументовЭДО(); + +КонецФункции + +#КонецЕсли + +#КонецОбласти \ No newline at end of file diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/ПС_УправлениеРасчетамиПоРодительскойПлате.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/ПС_УправлениеРасчетамиПоРодительскойПлате.mdo index ecc8ba7..c00de17 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/ПС_УправлениеРасчетамиПоРодительскойПлате.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/ПС_УправлениеРасчетамиПоРодительскойПлате.mdo @@ -38,7 +38,7 @@ Учреждение (сад) - CatalogRef.Контрагенты + CatalogRef.Организации diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DefinedTypes/ОснованиеВнутреннегоЭлектронногоДокумента/ОснованиеВнутреннегоЭлектронногоДокумента.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DefinedTypes/ОснованиеВнутреннегоЭлектронногоДокумента/ОснованиеВнутреннегоЭлектронногоДокумента.mdo new file mode 100644 index 0000000..f8a0e73 --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DefinedTypes/ОснованиеВнутреннегоЭлектронногоДокумента/ОснованиеВнутреннегоЭлектронногоДокумента.mdo @@ -0,0 +1,21 @@ + + + + + + ОснованиеВнутреннегоЭлектронногоДокумента + Adopted + + Checked + + + Extended + DocumentRef.ПС_ПередачаПоступившихПлатежейВУчреждения + + + Extended + DocumentRef.ПС_ПринятиеПоступившихПлатежейИзЦБ + + + + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/ObjectModule.bsl index 124c63b..9f89306 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/ObjectModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/ObjectModule.bsl @@ -51,25 +51,17 @@ Возврат; КонецЕсли; - // Сады детей загружаем одним запросом, контрагента сада ищем по одному разу на сад: - // обращение к базе внутри цикла по строкам недопустимо. + // Сады детей загружаем одним запросом: обращение к базе внутри цикла по строкам недопустимо. ОрганизацииСадов = ПС_ОрганизацииСадовДетей(Дети); - КонтрагентыСадов = Новый Соответствие; Для Каждого СтрокаРасшифровки Из СтрокиОплаты Цикл ОрганизацияСада = ОрганизацииСадов[СтрокаРасшифровки.Ребенок]; - КонтрагентСада = КонтрагентыСадов[ОрганизацияСада]; - Если КонтрагентСада = Неопределено Тогда - КонтрагентСада = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(ОрганизацияСада, "Учреждение"); - КонтрагентыСадов.Вставить(ОрганизацияСада, КонтрагентСада); - КонецЕсли; - Движение = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьПриход(); Движение.Период = Дата; Движение.Организация = Организация; - Движение.Учреждение = КонтрагентСада; + Движение.Учреждение = ОрганизацияСада; Движение.Плательщик = СтрокаРасшифровки.Контрагент; Движение.Ребенок = СтрокаРасшифровки.Ребенок; Движение.Договор = СтрокаРасшифровки.Договор; diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Form.form b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Form.form index da0cc52..3fbe579 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Form.form +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Form.form @@ -51,6 +51,47 @@ Normal + + Учреждение + 110 + true + true + + true + + + Объект.Учреждение + + + УчреждениеРасширеннаяПодсказка + 112 + Label + true + true + + Left + + + + УчреждениеКонтекстноеМеню + 111 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + Период 16 @@ -364,47 +405,6 @@ true - - ЗадолженностьУчреждение - 103 - true - true - - true - - - Объект.Задолженность.Учреждение - - - ЗадолженностьЗадолженностьУчреждениеРасширеннаяПодсказка - 105 - Label - true - true - - Left - - - - ЗадолженностьЗадолженностьУчреждениеКонтекстноеМеню - 104 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - ЗадолженностьГруппаКонтрагента 92 @@ -1298,6 +1298,10 @@ OnCreateAtServer ПриСозданииНаСервере + + NotificationProcessing + ОбработкаОповещения + true true true diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Module.bsl index 466c0e9..39ca6ce 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Module.bsl @@ -20,6 +20,9 @@ Объект.Организация = Константы.ОрганизацияЦентрализованнаяБухгалтерия.Получить(); КонецЕсли; + // Состояние внутреннего ЭДО (подсистема БГУ): организация документа уже определена. + ОбщегоНазначенияБГУ.ПриСозданииНаСервере(ЭтотОбъект, Объект); + КонецПроцедуры &НаСервере @@ -27,6 +30,8 @@ БухгалтерскиеОперацииСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект, Элементы.БухгалтерскаяОперация); + ОбщегоНазначенияБГУ.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецПроцедуры &НаКлиенте @@ -57,6 +62,25 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + // Обновляет гиперссылку состояния внутреннего ЭДО. + ОбщегоНазначенияБГУКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура Подключаемый_ДекорацияБГУНажатие(Элемент, СтандартнаяОбработка) + + ОбщегоНазначенияБГУКлиент.ДекорацияНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка); + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиСобытийЭлементовТаблицыФормыЗадолженность @@ -111,28 +135,30 @@ Возврат; КонецЕсли; - // По каждому учреждению табличной части открывается форма нового документа принятия: - // строки подбираются по саду документа, записывает документы пользователь. - ОрганизацииСадов = ОрганизацииСадовНаСервере(); - Если ОрганизацииСадов.Количество() = 0 Тогда + // Документ передачи адресный: открывается форма одного документа принятия по учреждению + // документа. Строки подбираются по саду, документ записывает пользователь. + Если НЕ ЗначениеЗаполнено(Объект.Учреждение) Тогда СообщениеПользователю = Новый СообщениеПользователю; - СообщениеПользователю.Текст = "В табличной части ""Задолженность"" не заполнены учреждения (получатели)."; + СообщениеПользователю.Текст = "Не заполнено учреждение (получатель) документа передачи."; СообщениеПользователю.Сообщить(); Возврат; КонецЕсли; - Для Каждого ОрганизацияСада Из ОрганизацииСадов Цикл + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ДокументПередачи", Объект.Ссылка); + ПараметрыФормы.Вставить("ОрганизацияСада", Объект.Учреждение); - ПараметрыФормы = Новый Структура; - ПараметрыФормы.Вставить("ДокументПередачи", Объект.Ссылка); - ПараметрыФормы.Вставить("ОрганизацияСада", ОрганизацияСада); + ОткрытьФорму("Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ.Форма.ФормаДокумента", + ПараметрыФормы, + ЭтотОбъект, + Строка(Объект.Ссылка)); - ОткрытьФорму("Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ.Форма.ФормаДокумента", - ПараметрыФормы, - ЭтотОбъект, - Строка(Объект.Ссылка) + ":" + Строка(ОрганизацияСада)); +КонецПроцедуры - КонецЦикла; +&НаКлиенте +Процедура Подключаемый_ВыполнитьКомандуБГУ(Команда) + + ОбщегоНазначенияБГУКлиент.ВыполнитьПодключаемуюКоманду(Команда, ЭтотОбъект, Объект); КонецПроцедуры @@ -173,10 +199,15 @@ Возврат; КонецЕсли; + Если НЕ ЗначениеЗаполнено(Объект.Учреждение) Тогда + ОбщегоНазначения.СообщитьПользователю( + "Заполнение невозможно: не заполнено учреждение (получатель)."); + Возврат; + КонецЕсли; + Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ - | Остатки.Учреждение КАК Учреждение, | Остатки.Плательщик КАК Контрагент, | Остатки.Договор КАК Договор, | Остатки.Ребенок КАК Ребенок, @@ -187,12 +218,12 @@ |ИЗ | РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Остатки( | &МоментВремени, - | Организация = &Организация) КАК Остатки + | Организация = &Организация + | И Учреждение = &Учреждение) КАК Остатки |ГДЕ | Остатки.СуммаОстаток <> 0 - | + |УПОРЯДОЧИТЬ ПО - | Остатки.Учреждение, | Остатки.Плательщик, | Остатки.Договор"; // Поступившие платежи собираются на границу конца дня документа: кассовые поступления @@ -200,6 +231,7 @@ // в остатки не попадали. Запрос.УстановитьПараметр("МоментВремени", КонецДня(Объект.Дата) + 1); Запрос.УстановитьПараметр("Организация", Объект.Организация); + Запрос.УстановитьПараметр("Учреждение", Объект.Учреждение); Выборка = Запрос.Выполнить().Выбрать(); @@ -215,7 +247,6 @@ ЗначенияКФО.Вставить(Выборка.КФО, Истина); НоваяСтрока = Объект.Задолженность.Добавить(); - НоваяСтрока.Учреждение = Выборка.Учреждение; НоваяСтрока.Контрагент = Выборка.Контрагент; НоваяСтрока.Договор = Выборка.Договор; НоваяСтрока.Ребенок = Выборка.Ребенок; @@ -275,35 +306,4 @@ КонецПроцедуры -// Возвращает организации садов (учреждений), представленных в табличной части "Задолженность". -// Учреждение хранится в документе контрагентом, поэтому организация ищется по ИНН. -// -// Возвращаемое значение: -// Массив из СправочникСсылка.Организации - организации получателей в порядке появления в табличной части. -// -&НаСервере -Функция ОрганизацииСадовНаСервере() - - Учреждения = Новый Массив; - Для Каждого СтрокаЗадолженности Из Объект.Задолженность Цикл - Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.Учреждение) Тогда - Продолжить; - КонецЕсли; - Если Учреждения.Найти(СтрокаЗадолженности.Учреждение) = Неопределено Тогда - Учреждения.Добавить(СтрокаЗадолженности.Учреждение); - КонецЕсли; - КонецЦикла; - - Организации = Новый Массив; - Для Каждого Учреждение Из Учреждения Цикл - Организация = ПС_РаботаСКонтрагентами.ОрганизацияПоКонтрагенту(Учреждение, "Получатель (учреждение)"); - Если ЗначениеЗаполнено(Организация) Тогда - Организации.Добавить(Организация); - КонецЕсли; - КонецЦикла; - - Возврат Организации; - -КонецФункции - #КонецОбласти diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ManagerModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ManagerModule.bsl index 79f8095..c715820 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ManagerModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ManagerModule.bsl @@ -21,6 +21,46 @@ КонецФункции +// Заполняет список команд печати документа. +// +// Параметры: +// КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати. +// +Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт + + КомандаПечати = КомандыПечати.Добавить(); + КомандаПечати.МенеджерПечати = "Документ.ПС_ПередачаПоступившихПлатежейВУчреждения"; + КомандаПечати.Идентификатор = "Извещение0504805"; + КомандаПечати.Представление = "Извещение (ф. 0504805)"; + КомандаПечати.Порядок = 1; + +КонецПроцедуры + +// Формирует печатные формы документа для подсистемы БСП "Печать". +// +// Параметры: +// МассивОбъектов - Массив из ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения - печатаемые документы. +// ПараметрыПечати - Структура - параметры печати. +// КоллекцияПечатныхФорм - ТаблицаЗначений - коллекция печатных форм. +// ОбъектыПечати - Соответствие из КлючИЗначение - соответствие объектов печати. +// ПараметрыВывода - Структура - параметры вывода. +// +Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт + + Если НЕ УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Извещение0504805") Тогда + Возврат; + КонецЕсли; + + Для Каждого ДокументСсылка Из МассивОбъектов Цикл + УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( + КоллекцияПечатныхФорм, + "Извещение0504805", + "Извещение (ф. 0504805)", + ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805(ДокументСсылка)); + КонецЦикла; + +КонецПроцедуры + #КонецОбласти #КонецЕсли diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl index ead9bd1..d6e5f22 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl @@ -55,13 +55,13 @@ Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты] = СтрокаЗадолженности.Контрагент; Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Договоры] = СтрокаЗадолженности.Договор; - Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.КорреспондентыПоВнутреннимРасчетам] = СтрокаЗадолженности.Учреждение; + Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.КорреспондентыПоВнутреннимРасчетам] = Учреждение; // Взаиморасчёты: переданные в учреждение поступившие платежи списываются расходом. ДвижениеПС = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьРасход(); ДвижениеПС.Период = Дата; ДвижениеПС.Организация = Организация; - ДвижениеПС.Учреждение = СтрокаЗадолженности.Учреждение; + ДвижениеПС.Учреждение = Учреждение; ДвижениеПС.Плательщик = СтрокаЗадолженности.Контрагент; ДвижениеПС.Ребенок = СтрокаЗадолженности.Ребенок; ДвижениеПС.Договор = СтрокаЗадолженности.Договор; @@ -104,6 +104,18 @@ КонецПроцедуры +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + // Изменение данных подписанного извещения обесценивает его электронный документ: + // расходящиеся электронные документы аннулируются. + ПС_ВнутреннийЭДОИзвещений.ПС_АннулироватьЭлектронныеДокументыПриИзменении(ЭтотОбъект, Отказ); + +КонецПроцедуры + Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Если НЕ ЗначениеЗаполнено(Организация) Тогда @@ -114,16 +126,14 @@ ОбщегоНазначения.СообщитьПользователю("Не заполнен КФО", , "КФО", "Объект", Отказ); КонецЕсли; + Если НЕ ЗначениеЗаполнено(Учреждение) Тогда + ОбщегоНазначения.СообщитьПользователю("Не заполнено учреждение (получатель)", , "Учреждение", "Объект", Отказ); + КонецЕсли; + Если Задолженность.Количество() = 0 Тогда ОбщегоНазначения.СообщитьПользователю("Не заполнена табличная часть ""Задолженность""", , "Задолженность", "Объект", Отказ); Иначе Для Каждого СтрокаЗадолженности Из Задолженность Цикл - Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.Учреждение) Тогда - ОбщегоНазначения.СообщитьПользователю( - "Не заполнено учреждение в строке табличной части ""Задолженность"".", - , "Задолженность", "Объект", Отказ); - Прервать; - КонецЕсли; Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.КПС) Тогда ОбщегоНазначения.СообщитьПользователю( "Не заполнен КПС строки табличной части ""Задолженность""." diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo index 5995bb3..850ce83 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 @@ -178,6 +178,21 @@ Use Use + + Учреждение + + ru + Получатель (учреждение) + + + CatalogRef.Организации + + + + + Use + Use + ФормаДокумента @@ -282,20 +297,6 @@ Use Use - - Учреждение - - ru - Получатель (учреждение) - - - CatalogRef.Контрагенты - - - - Use - Use - ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Forms/ФормаДокумента/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Forms/ФормаДокумента/Module.bsl index 0fc5819..abee674 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Forms/ФормаДокумента/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Forms/ФормаДокумента/Module.bsl @@ -36,11 +36,14 @@ КонецЕсли; Если НЕ ЗначениеЗаполнено(Объект.ЦБ) Тогда - Объект.ЦБ = ПС_РаботаСКонтрагентами.КонтрагентЦБПоУмолчанию(); + Объект.ЦБ = Константы.ОрганизацияЦентрализованнаяБухгалтерия.Получить(); КонецЕсли; КонецЕсли; + // Состояние внутреннего ЭДО (подсистема БГУ): организация документа уже определена. + ОбщегоНазначенияБГУ.ПриСозданииНаСервере(ЭтотОбъект, Объект); + КонецПроцедуры &НаСервере @@ -48,6 +51,8 @@ БухгалтерскиеОперацииСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект, Элементы.БухгалтерскаяОперация); + ОбщегоНазначенияБГУ.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецПроцедуры &НаКлиенте @@ -78,10 +83,25 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + // Обновляет гиперссылку состояния внутреннего ЭДО (подсистема БГУ). + ОбщегоНазначенияБГУКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник); + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиСобытийЭлементовШапкиФормы +&НаКлиенте +Процедура Подключаемый_ДекорацияБГУНажатие(Элемент, СтандартнаяОбработка) + + ОбщегоНазначенияБГУКлиент.ДекорацияНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка); + +КонецПроцедуры + &НаКлиенте Процедура ДокументПередачиПриИзменении(Элемент) @@ -147,6 +167,13 @@ КонецПроцедуры +&НаКлиенте +Процедура Подключаемый_ВыполнитьКомандуБГУ(Команда) + + ОбщегоНазначенияБГУКлиент.ВыполнитьПодключаемуюКоманду(Команда, ЭтотОбъект, Объект); + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ManagerModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ManagerModule.bsl index 774f7df..6b681ab 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ManagerModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ManagerModule.bsl @@ -21,6 +21,46 @@ КонецФункции +// Заполняет список команд печати документа. +// +// Параметры: +// КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати. +// +Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт + + КомандаПечати = КомандыПечати.Добавить(); + КомандаПечати.МенеджерПечати = "Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ"; + КомандаПечати.Идентификатор = "Извещение0504805"; + КомандаПечати.Представление = "Извещение (ф. 0504805)"; + КомандаПечати.Порядок = 1; + +КонецПроцедуры + +// Формирует печатные формы документа для подсистемы БСП "Печать". +// +// Параметры: +// МассивОбъектов - Массив из ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ - печатаемые документы. +// ПараметрыПечати - Структура - параметры печати. +// КоллекцияПечатныхФорм - ТаблицаЗначений - коллекция печатных форм. +// ОбъектыПечати - Соответствие из КлючИЗначение - соответствие объектов печати. +// ПараметрыВывода - Структура - параметры вывода. +// +Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт + + Если НЕ УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Извещение0504805") Тогда + Возврат; + КонецЕсли; + + Для Каждого ДокументСсылка Из МассивОбъектов Цикл + УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( + КоллекцияПечатныхФорм, + "Извещение0504805", + "Извещение (ф. 0504805)", + ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805(ДокументСсылка)); + КонецЦикла; + +КонецПроцедуры + #КонецОбласти #КонецЕсли diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl index 8cfe99a..e34a9ef 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl @@ -35,9 +35,9 @@ ИФО = РеквизитыПередачи.ИФО; КонецЕсли; - // Отправитель (ЦБ) определяется по организации документа передачи: в документе передачи - // ЦБ хранится организацией, а в документе сада - контрагентом, сопоставляем по ИНН. - ЦБ = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(РеквизитыПередачи.Организация, "Отправитель (ЦБ)"); + // Отправитель (ЦБ) определяется по организации документа передачи: + // в документе передачи и в документе сада ЦБ хранится организацией. + ЦБ = РеквизитыПередачи.Организация; // Строки подбираются по саду документа: сад задаётся реквизитом "Организация". // Если сад ещё не указан, строки заполняются командой формы после его выбора. @@ -125,6 +125,18 @@ КонецПроцедуры +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + // Изменение данных подписанного извещения обесценивает его электронный документ: + // расходящиеся электронные документы аннулируются. + ПС_ВнутреннийЭДОИзвещений.ПС_АннулироватьЭлектронныеДокументыПриИзменении(ЭтотОбъект, Отказ); + +КонецПроцедуры + Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Если НЕ ЗначениеЗаполнено(Организация) Тогда @@ -198,13 +210,6 @@ Возврат; КонецЕсли; - // В документе передачи сад хранится контрагентом (как в регистре взаиморасчётов), - // а в документе сада - организацией, поэтому сопоставляем по ИНН. - КонтрагентСада = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(Организация, "Учреждение"); - Если НЕ ЗначениеЗаполнено(КонтрагентСада) Тогда - Возврат; - КонецЕсли; - Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ @@ -218,9 +223,9 @@ | Документ.ПС_ПередачаПоступившихПлатежейВУчреждения.Задолженность КАК СтрокиПередачи |ГДЕ | СтрокиПередачи.Ссылка = &ДокументПередачи - | И СтрокиПередачи.Учреждение = &Учреждение"; + | И СтрокиПередачи.Ссылка.Учреждение = &Учреждение"; Запрос.УстановитьПараметр("ДокументПередачи", ДокументПередачиСсылка); - Запрос.УстановитьПараметр("Учреждение", КонтрагентСада); + Запрос.УстановитьПараметр("Учреждение", Организация); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo index ace4a31..96f1c1f 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo @@ -55,7 +55,7 @@ Отправитель (ЦБ) - CatalogRef.Контрагенты + CatalogRef.Организации From 26bc7c80a2328d3a8720e0fdd858c2da192246ec Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Mon, 26 Oct 2026 20:06:21 +0500 Subject: [PATCH 08/19] =?UTF-8?q?feat(=D1=80=D0=BE=D0=B4=D0=B8=D1=82=D0=B5?= =?UTF-8?q?=D0=BB=D1=8C=D1=81=D0=BA=D0=B0=D1=8F=20=D0=BF=D0=BB=D0=B0=D1=82?= =?UTF-8?q?=D0=B0):=20=D1=80=D0=B5=D0=B5=D1=81=D1=82=D1=80=20=D0=BF=D0=BB?= =?UTF-8?q?=D0=B0=D1=82=D0=B5=D0=B6=D0=B5=D0=B9,=20=D0=B8=D0=B7=D0=B2?= =?UTF-8?q?=D0=B5=D1=89=D0=B5=D0=BD=D0=B8=D1=8F=200504805,=20=D1=83=D1=87?= =?UTF-8?q?=D1=91=D1=82=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=B9=20=D0=BF=D0=BE=20=D0=BA=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D1=86=D0=B8=D1=8F=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Реестр платежей: макеты в обоих документах, общая печать по строкам ТЧ, 6 реквизитов реестра в Задолженности - Передача: только расход регистра, без бухгалтерских проводок - Принятие: Дт 303.05.831 Кт 205.31.660 по строкам, аналитика 303.05 реквизитом ВидПлатежаВБюджет - Регистр взаиморасчётов: ИДСтроки переведён в измерение; приход формирует КассовоеПоступление - Разбор назначения платежа: лицевой счёт, ФИО, группа, период оплаты, расчётный счёт - Подбор строк передачи по ИДСтроки с заполнением реквизитов реестра из расшифровки платежа - Извещения 0504805: приняты типовые документы, создание обёрток, связки, защита от дублей приёма платежей - Предупреждения: снятый признак Родительская плата, подбор контрагента по ИНН --- .../ПС_ВзаиморасчетыПоРодительскойПлате.mdo | 33 +- .../src/Catalogs/ВидыНалоговИПлатежей/ВидыНалоговИПлатежей.mdo | 32 + .../CommonModules/ВнутренниеЭлектронныеДокументыБГУ/Module.bsl | 33 - .../ПС_РазборПлатежейПоРодительскойПлате/Module.bsl | 80 ++- .../src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl | 547 +++++++++++++++-- .../src/Configuration/Configuration.mdo | 3 + .../src/Documents/ИзвещениеВходящее/ИзвещениеВходящее.mdo | 16 + .../src/Documents/ИзвещениеИсходящее/ИзвещениеИсходящее.mdo | 16 + .../src/Documents/КассовоеПоступление/ObjectModule.bsl | 12 + .../Forms/ФормаДокумента/Form.form | 438 +++++++++++++ .../Forms/ФормаДокумента/Module.bsl | 269 ++++++-- .../ManagerModule.bsl | 32 +- .../ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl | 81 +-- .../Templates/РеестрПлатежей/Template.mxlx | 574 ++++++++++++++++++ .../ПС_ПередачаПоступившихПлатежейВУчреждения.mdo | 142 ++++- .../Forms/ФормаДокумента/Form.form | 452 +++++++++++++- .../Forms/ФормаДокумента/Module.bsl | 44 ++ .../ПС_ПринятиеПоступившихПлатежейИзЦБ/ManagerModule.bsl | 32 +- .../ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl | 72 +-- .../Templates/РеестрПлатежей/Template.mxlx | 574 ++++++++++++++++++ .../ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo | 141 ++++- 21 files changed, 3334 insertions(+), 289 deletions(-) create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Catalogs/ВидыНалоговИПлатежей/ВидыНалоговИПлатежей.mdo delete mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутренниеЭлектронныеДокументыБГУ/Module.bsl create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ИзвещениеВходящее/ИзвещениеВходящее.mdo create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ИзвещениеИсходящее/ИзвещениеИсходящее.mdo create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Templates/РеестрПлатежей/Template.mxlx create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Templates/РеестрПлатежей/Template.mxlx diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/AccumulationRegisters/ПС_ВзаиморасчетыПоРодительскойПлате/ПС_ВзаиморасчетыПоРодительскойПлате.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/AccumulationRegisters/ПС_ВзаиморасчетыПоРодительскойПлате/ПС_ВзаиморасчетыПоРодительскойПлате.mdo index 867abac..0e4b017 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/AccumulationRegisters/ПС_ВзаиморасчетыПоРодительскойПлате/ПС_ВзаиморасчетыПоРодительскойПлате.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/AccumulationRegisters/ПС_ВзаиморасчетыПоРодительскойПлате/ПС_ВзаиморасчетыПоРодительскойПлате.mdo @@ -46,22 +46,6 @@ Use - - ИДСтроки - - ru - ИД строки (квитанции) - - - String - - 25 - - - - - Use - ДокументПередачи @@ -187,4 +171,21 @@ Use true + + ИДСтроки + + ru + ИД строки (квитанции) + + + String + + 50 + + + + + Use + true + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Catalogs/ВидыНалоговИПлатежей/ВидыНалоговИПлатежей.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Catalogs/ВидыНалоговИПлатежей/ВидыНалоговИПлатежей.mdo new file mode 100644 index 0000000..fddbdea --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Catalogs/ВидыНалоговИПлатежей/ВидыНалоговИПлатежей.mdo @@ -0,0 +1,32 @@ + + + + + + + + + + ВидыНалоговИПлатежей + Adopted + + Checked + + true + + СчетУчета + Adopted + + Checked + + + Checked + String + + + 6 + + + + + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутренниеЭлектронныеДокументыБГУ/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутренниеЭлектронныеДокументыБГУ/Module.bsl deleted file mode 100644 index 32e87a4..0000000 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ВнутренниеЭлектронныеДокументыБГУ/Module.bsl +++ /dev/null @@ -1,33 +0,0 @@ -// ВнутренниеЭлектронныеДокументыБГУ: расширение. -// Дополняет состав документов, обрабатываемых внутренним ЭДО БГУ, документами -// учёта родительской платы: передачей поступивших платежей в учреждение и -// принятием поступивших платежей из ЦБ. - -#Область ПрограммныйИнтерфейс - -// Определяет, обрабатывается ли учётный документ механизмом внутреннего ЭДО БГУ. -// В типовой список типов БГУ документы расширения не входят, поэтому дополняем результат. -// -// Параметры: -// ТипИсточника - Тип - тип ссылки или объекта учётного документа. -// -// Возвращаемое значение: -// Булево - Истина, если документ обрабатывается внутренним ЭДО БГУ. -// -&Вместо("ЭтоВнутреннийДокументЭДО") -Функция ПС_ЭтоВнутреннийДокументЭДО(ТипИсточника) Экспорт - - Результат = ПродолжитьВызов(ТипИсточника); - - Если НЕ Результат Тогда - Результат = ТипИсточника = Тип("ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения") - ИЛИ ТипИсточника = Тип("ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения") - ИЛИ ТипИсточника = Тип("ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ") - ИЛИ ТипИсточника = Тип("ДокументОбъект.ПС_ПринятиеПоступившихПлатежейИзЦБ"); - КонецЕсли; - - Возврат Результат; - -КонецФункции - -#КонецОбласти diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl index ab77ab9..24733d7 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl @@ -1,4 +1,3 @@ -ПС_ИдентификаторыОбъектовЭДО.ПС_ОбеспечитьИдентификаторыДокументовЭДО(); // ПС_РазборПлатежейПоРодительскойПлате: идентификация ребёнка и его контрагента по назначению платежа // в строках табличной части "Расшифровка платежа" документа КассовоеПоступление (БГУ 2.0). #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда @@ -124,14 +123,21 @@ // // Возвращаемое значение: // Структура - результат разбора: -// * ЛицевойСчет - Строка - распознанный лицевой счёт ребёнка; пустая строка, если не распознан; -// * ФИО - Строка - ФИО ребёнка из назначения платежа; пустая строка, если не распознано. +// * ЛицевойСчет - Строка - распознанный лицевой счёт ребёнка; пустая строка, если не распознан; +// * ФИО - Строка - ФИО ребёнка из назначения платежа; пустая строка, если не распознано; +// * Группа - Строка - группа детского сада (5-я часть назначения); пустая строка, если не распознана; +// * ПериодОплаты - Строка - период оплаты (6-я часть назначения, например "Июнь"); пустая строка, если не распознан; +// * РасчетныйСчет - Строка - лицевой счёт учреждения (2-я часть назначения, без префикса "л/с"); +// пустая строка, если не распознан. // Функция РазобратьНазначениеПлатежа(ТекстНазначения) Экспорт Результат = Новый Структура; Результат.Вставить("ЛицевойСчет", ""); Результат.Вставить("ФИО", ""); + Результат.Вставить("Группа", ""); + Результат.Вставить("ПериодОплаты", ""); + Результат.Вставить("РасчетныйСчет", ""); Если НЕ ЗначениеЗаполнено(ТекстНазначения) Тогда Возврат Результат; @@ -140,10 +146,55 @@ Результат.ЛицевойСчет = ОпределитьЛицевойСчетРебенка(ТекстНазначения); Результат.ФИО = ОпределитьФИОИзНазначения(ТекстНазначения); + // Разбор по частям: "учреждение,л/с учреждения,л/с ребёнка,ФИО,группа,период". + ЧастиНазначения = СтрРазделить(ТекстНазначения, ","); + Если ЧастиНазначения.Количество() >= 2 Тогда + Результат.РасчетныйСчет = УбратьПрефиксЛицевогоСчета(ЧастиНазначения[1]); + КонецЕсли; + Если ЧастиНазначения.Количество() >= 6 Тогда + Результат.Группа = СокрЛП(ЧастиНазначения[4]); + Результат.ПериодОплаты = СокрЛП(ЧастиНазначения[5]); + КонецЕсли; + Возврат Результат; КонецФункции +// Проверяет, есть ли в расшифровке платежа лицевые счета детей - признак платежа родительской платы. +// Применяется, когда признак "Родительская плата" не установлен: если лицевой счёт ребёнка распознан +// и найден в справочнике детей, платёж, скорее всего, относится к родительской плате. +// +// Параметры: +// ДокументОбъект - ДокументОбъект.КассовоеПоступление - проверяемый документ. +// +// Возвращаемое значение: +// Булево - Истина, если хотя бы один распознанный лицевой счёт найден в справочнике детей. +// +Функция ЕстьЛицевыеСчетаДетей(ДокументОбъект) Экспорт + + КодыПоиска = Новый Массив; + + Для Каждого СтрокаПлатежа Из ДокументОбъект.РасшифровкаПлатежа Цикл + + ДанныеПлатежа = РазобратьНазначениеПлатежа(СтрокаПлатежа.Примечание); + Если НЕ ЗначениеЗаполнено(ДанныеПлатежа.ЛицевойСчет) Тогда + Продолжить; + КонецЕсли; + + Для Каждого Код Из КодыПоискаРебенка(ДанныеПлатежа.ЛицевойСчет) Цикл + КодыПоиска.Добавить(Код); + КонецЦикла; + + КонецЦикла; + + Если КодыПоиска.Количество() = 0 Тогда + Возврат Ложь; + КонецЕсли; + + Возврат ДетиПоЛицевымСчетам(КодыПоиска).Количество() > 0; + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -413,6 +464,29 @@ КонецФункции +// Убирает префикс "л/с" (в любом регистре и написании) из значения части назначения платежа. +// +// Параметры: +// Значение - Строка - часть назначения платежа, например "л/с 03003001079". +// +// Возвращаемое значение: +// Строка - значение без префикса и лишних пробелов. +// +Функция УбратьПрефиксЛицевогоСчета(Значение) + + Текст = СокрЛП(Значение); + ВерхнийРегистр = ВРЕГ(Текст); + + Если Лев(ВерхнийРегистр, 3) = "Л/С" Тогда + Возврат СокрЛП(Сред(Текст, 4)); + ИначеЕсли Лев(ВерхнийРегистр, 2) = "ЛС" Тогда + Возврат СокрЛП(Сред(Текст, 3)); + КонецЕсли; + + Возврат Текст; + +КонецФункции + // Возвращает ФИО ребёнка из текста назначения платежа (4-я часть, разделитель - запятая). // Для поиска используется пара "Фамилия Имя", как в реестрах. // diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl index 495268f..cbef21b 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl @@ -43,10 +43,7 @@ // Вёрстка и набор областей повторяют типовую печатную форму документа ИзвещениеИсходящее. // Заполняется та сторона, от которой печатается извещение: для передачи поступивших платежей - // отправитель (централизованная бухгалтерия), для принятия платежей - получатель (учреждение). -// Суммы и счета берутся из проводок документа, поэтому печатается только проведённый документ. -// -// Документ передачи платежей ЦБ охватывает несколько учреждений, поэтому из него формируется -// отдельное извещение на каждое учреждение, присутствующее в табличной части "Задолженность". +// Данные берутся из табличной части "Задолженность", поэтому печатается и непроведённый документ. // // Параметры: // ДокументСсылка - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения, @@ -54,7 +51,7 @@ // // Возвращаемое значение: // ТабличныйДокумент - печатная форма; пустой табличный документ, если документ не записан, -// не проведён, нет проводок или не найден макет. +// в нём нет строк или не найден макет. // Функция ПечатьИзвещения0504805(ДокументСсылка) Экспорт @@ -74,18 +71,10 @@ Возврат ТабличныйДокумент; КонецЕсли; - Если НЕ ДокументОбъект.Проведен Тогда - ОбщегоНазначения.СообщитьПользователю( - "Печатная форма извещения формируется по проводкам документа, поэтому печатается" - + " только проведённый документ. Проведите документ и повторите печать."); - Возврат ТабличныйДокумент; - КонецЕсли; - - Проводки = ПроводкиИзвещения(ДокументСсылка); + Проводки = ДанныеИзвещенияПоРеестру(ДокументОбъект); Если Проводки.Количество() = 0 Тогда ОбщегоНазначения.СообщитьПользователю( - "По документу не найдено проводок в регистре бухгалтерии - печатная форма" - + " извещения не сформирована."); + "Печатная форма извещения не сформирована: в документе нет строк с платежами."); Возврат ТабличныйДокумент; КонецЕсли; @@ -145,10 +134,420 @@ КонецФункции +// Формирует печатную форму реестра поступивших платежей по документу подсистемы. +// +// Реестр строится по табличной части "Задолженность" и не зависит от проводок документа, +// поэтому печатается и непроведённый документ. +// +// Параметры: +// ДокументСсылка - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения, +// ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ - печатаемый документ. +// +// Возвращаемое значение: +// ТабличныйДокумент - печатная форма реестра; пустой табличный документ, если документ +// не записан, не содержит строк или в документе нет макета. +// +Функция ПечатьРеестраПлатежей(ДокументСсылка) Экспорт + + ТабличныйДокумент = Новый ТабличныйДокумент; + ТабличныйДокумент.АвтоМасштаб = Истина; + ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; + + Если НЕ ЗначениеЗаполнено(ДокументСсылка) Тогда + ОбщегоНазначения.СообщитьПользователю( + "Печатная форма реестра не сформирована: документ не записан в базу." + + " Запишите документ и повторите печать."); + Возврат ТабличныйДокумент; + КонецЕсли; + + ДокументОбъект = ДокументСсылка.ПолучитьОбъект(); + Если ДокументОбъект = Неопределено Тогда + ОбщегоНазначения.СообщитьПользователю( + "Печатная форма реестра не сформирована: не удалось прочитать документ."); + Возврат ТабличныйДокумент; + КонецЕсли; + + Если ДокументОбъект.Задолженность.Количество() = 0 Тогда + ОбщегоНазначения.СообщитьПользователю( + "Печатная форма реестра не сформирована: в документе нет строк с платежами."); + Возврат ТабличныйДокумент; + КонецЕсли; + + Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ") Тогда + Макет = Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.ПолучитьМакет("РеестрПлатежей"); + Учреждение = ДокументОбъект.Организация; + Иначе + Макет = Документы.ПС_ПередачаПоступившихПлатежейВУчреждения.ПолучитьМакет("РеестрПлатежей"); + Учреждение = ДокументОбъект.Учреждение; + КонецЕсли; + + Если Макет = Неопределено Тогда + ОбщегоНазначения.СообщитьПользователю( + "Печатная форма реестра не сформирована: в документе не найден макет печатной формы."); + Возврат ТабличныйДокумент; + КонецЕсли; + + ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); + ОбластьЗаголовок.Параметры.ЗаголовокРеестра = + "Реестр поступивших платежей по родительской плате за " + + Формат(ДокументОбъект.Период, "ДФ='MMMM yyyy'"); + ОбластьЗаголовок.Параметры.РеквизитыДокумента = + "Документ № " + ДокументОбъект.Номер + " от " + Формат(ДокументОбъект.Дата, "ДЛФ=DD") + + ", " + Строка(Учреждение); + ТабличныйДокумент.Вывести(ОбластьЗаголовок); + + ТабличныйДокумент.Вывести(Макет.ПолучитьОбласть("ОбластьШапкаТаблицы")); + + ОбластьСтрока = Макет.ПолучитьОбласть("ОбластьСтрокаТаблицы"); + ИтогоСумма = 0; + Для Каждого СтрокаРеестра Из ДокументОбъект.Задолженность Цикл + ОбластьСтрока.Параметры.Плательщик = СтрокаРеестра.Контрагент; + ОбластьСтрока.Параметры.Сумма = СтрокаРеестра.Сумма; + ОбластьСтрока.Параметры.ЛицевойСчет = СтрокаРеестра.ЛицевойСчет; + ОбластьСтрока.Параметры.Ребенок = СтрокаРеестра.Ребенок; + ОбластьСтрока.Параметры.НазначениеПлатежа = СтрокаРеестра.НазначениеПлатежа; + ОбластьСтрока.Параметры.Организация = Учреждение; + ОбластьСтрока.Параметры.РассчетныйСчет = СтрокаРеестра.РасчетныйСчет; + ОбластьСтрока.Параметры.Группа = СтрокаРеестра.Группа; + ОбластьСтрока.Параметры.Период = СтрокаРеестра.ПериодОплаты; + ОбластьСтрока.Параметры.ДатаПлатежа = СтрокаРеестра.ДатаПлатежа; + ТабличныйДокумент.Вывести(ОбластьСтрока); + ИтогоСумма = ИтогоСумма + СтрокаРеестра.Сумма; + КонецЦикла; + + ОбластьПодвал = Макет.ПолучитьОбласть("ОбластьПодвалТаблицы"); + ОбластьПодвал.Параметры.ОбщаяСумма = ИтогоСумма; + ТабличныйДокумент.Вывести(ОбластьПодвал); + + Возврат ТабличныйДокумент; + +КонецФункции + +// Создаёт (или перезаполняет) исходящее извещение ф. 0504805 по документу передачи платежей. +// +// Извещение создаётся как обёртка: заполняются шапка и табличная часть "Передаваемые проводки" +// (она же данные печати), документ не проводится - бухгалтерские проводки остаются в документе +// передачи. Извещение служит носителем шапки, связей и данных для электронного документооборота. +// +// Параметры: +// ДокументПередачи - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения - документ-основание. +// +// Возвращаемое значение: +// ДокументСсылка.ИзвещениеИсходящее - созданное или перезаполненное извещение; +// пустая ссылка, если извещение проведено. +// +Функция СоздатьИзвещениеПоПередаче(ДокументПередачи) Экспорт + + Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументПередачи, + "Организация, Учреждение, ИФО, Период, Ответственный, ИзвещениеИсходящее"); + + ИзвещениеОбъект = Неопределено; + Если ЗначениеЗаполнено(Реквизиты.ИзвещениеИсходящее) Тогда + ИзвещениеОбъект = Реквизиты.ИзвещениеИсходящее.ПолучитьОбъект(); + КонецЕсли; + + Если ИзвещениеОбъект = Неопределено Тогда + ИзвещениеОбъект = Документы.ИзвещениеИсходящее.СоздатьДокумент(); + ИначеЕсли ИзвещениеОбъект.Проведен Тогда + ОбщегоНазначения.СообщитьПользователю( + "Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " проведено: изменения в него не вносятся." + + " Распроведите извещение или отвяжите его от документа передачи."); + Возврат Документы.ИзвещениеИсходящее.ПустаяСсылка(); + КонецЕсли; + + ИзвещениеОбъект.Дата = ТекущаяДатаСеанса(); + ИзвещениеОбъект.Организация = Реквизиты.Организация; + ИзвещениеОбъект.Получатель = КонтрагентПоОрганизации(Реквизиты.Учреждение); + ИзвещениеОбъект.ВидИзвещения = Перечисления.ВидыОперацийИсходящееИзвещение.ПолучениеДохода; + ИзвещениеОбъект.ИФО = Реквизиты.ИФО; + ИзвещениеОбъект.Ответственный = Реквизиты.Ответственный; + ИзвещениеОбъект.Комментарий = + "Передача поступивших платежей по родительской плате за " + + Формат(Реквизиты.Период, "ДФ='MMMM yyyy'") + + ". Основание: " + Строка(ДокументПередачи) + "."; + + ЗаполнитьПроводкиИзвещения(ИзвещениеОбъект, ДокументПередачи); + + ИзвещениеОбъект.Записать(РежимЗаписиДокумента.Запись); + + Возврат ИзвещениеОбъект.Ссылка; + +КонецФункции + +// Создаёт (или перезаполняет) входящее извещение ф. 0504805 по документу принятия платежей. +// +// Извещение создаётся как обёртка: заполняются шапка и табличная часть "Передаваемые проводки", +// документ не проводится - проводки формирует документ принятия. +// +// Параметры: +// ДокументПринятия - ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ - документ-основание. +// +// Возвращаемое значение: +// ДокументСсылка.ИзвещениеВходящее - созданное или перезаполненное извещение; +// пустая ссылка, если извещение проведено. +// +Функция СоздатьИзвещениеПоПринятию(ДокументПринятия) Экспорт + + Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументПринятия, + "Организация, ЦБ, ИФО, Период, Ответственный, ИзвещениеВходящее, ДокументПередачи"); + + ИзвещениеОбъект = Неопределено; + Если ЗначениеЗаполнено(Реквизиты.ИзвещениеВходящее) Тогда + ИзвещениеОбъект = Реквизиты.ИзвещениеВходящее.ПолучитьОбъект(); + КонецЕсли; + + Если ИзвещениеОбъект = Неопределено Тогда + ИзвещениеОбъект = Документы.ИзвещениеВходящее.СоздатьДокумент(); + ИначеЕсли ИзвещениеОбъект.Проведен Тогда + ОбщегоНазначения.СообщитьПользователю( + "Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " проведено: изменения в него не вносятся." + + " Распроведите извещение или отвяжите его от документа принятия."); + Возврат Документы.ИзвещениеВходящее.ПустаяСсылка(); + КонецЕсли; + + ИзвещениеОбъект.Дата = ТекущаяДатаСеанса(); + ИзвещениеОбъект.Организация = Реквизиты.Организация; + ИзвещениеОбъект.Отправитель = КонтрагентПоОрганизации(Реквизиты.ЦБ); + ИзвещениеОбъект.ВидИзвещения = Перечисления.ВидыОперацийВходящееИзвещение.ПолучениеДохода; + ИзвещениеОбъект.ИФО = Реквизиты.ИФО; + ИзвещениеОбъект.Ответственный = Реквизиты.Ответственный; + ИзвещениеОбъект.Комментарий = + "Принятие поступивших платежей по родительской плате за " + + Формат(Реквизиты.Период, "ДФ='MMMM yyyy'") + + ". Основание: " + Строка(ДокументПринятия) + "."; + + Если ЗначениеЗаполнено(Реквизиты.ДокументПередачи) Тогда + ИзвещениеОбъект.ДокументОснование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + Реквизиты.ДокументПередачи, "ИзвещениеИсходящее"); + КонецЕсли; + + ЗаполнитьПроводкиИзвещения(ИзвещениеОбъект, ДокументПринятия); + + ИзвещениеОбъект.Записать(РежимЗаписиДокумента.Запись); + + Возврат ИзвещениеОбъект.Ссылка; + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции +// Заполняет табличную часть "Передаваемые проводки" извещения по строкам реестра документа. +// +// Строки отражают операцию зачисления в доход бюджета: Дт 303.05 (КЭК 831) - Кт 205.31 (КЭК 660). +// КПС берётся из строки реестра, КФО - из шапки документа. +// +// Параметры: +// ИзвещениеОбъект - ДокументОбъект.ИзвещениеИсходящее, ДокументОбъект.ИзвещениеВходящее - заполняемое извещение. +// ДокументСсылка - ДокументСсылка - документ подсистемы, по строкам которого заполняется извещение. +// +Процедура ЗаполнитьПроводкиИзвещения(ИзвещениеОбъект, ДокументСсылка) + + ИзвещениеОбъект.ПередаваемыеПроводки.Очистить(); + + ДокументОбъект = ДокументСсылка.ПолучитьОбъект(); + Если ДокументОбъект = Неопределено Тогда + Возврат; + КонецЕсли; + + СчетДт = БухгалтерскийУчет.СчетПоКоду("303.05", ДокументОбъект.Дата, ДокументОбъект.Организация); + СчетКт = БухгалтерскийУчет.СчетПоКоду("205.31", ДокументОбъект.Дата, ДокументОбъект.Организация); + КЭКДт = Справочники.КОСГУ.НайтиПоКоду("831"); + КЭККт = Справочники.КОСГУ.НайтиПоКоду("660"); + + Для Каждого СтрокаРеестра Из ДокументОбъект.Задолженность Цикл + + Проводка = ИзвещениеОбъект.ПередаваемыеПроводки.Добавить(); + Проводка.КФО = ДокументОбъект.КФО; + Проводка.СчетДт = СчетДт; + Проводка.КПСДт = СтрокаРеестра.КПС; + Проводка.КЭКДт = КЭКДт; + Проводка.СчетКт = СчетКт; + Проводка.КПСКт = СтрокаРеестра.КПС; + Проводка.КЭККт = КЭККт; + Проводка.Сумма = СтрокаРеестра.Сумма; + Проводка.Содержание = "Поступление родительской платы"; + + КонецЦикла; + +КонецПроцедуры + +// Возвращает контрагента, соответствующего организации, для подстановки в извещение. +// +// Параметры: +// Организация - СправочникСсылка.Организации - организация (сад или централизованная бухгалтерия). +// +// Возвращаемое значение: +// СправочникСсылка.Контрагенты - контрагент организации; пустая ссылка, если соответствие не найдено. +// +Функция КонтрагентПоОрганизации(Организация) + + Если НЕ ЗначениеЗаполнено(Организация) Тогда + Возврат Справочники.Контрагенты.ПустаяСсылка(); + КонецЕсли; + + Контрагент = БюджетнаяОтчетностьПолучениеНСИ.КонтрагентПоОрганизации(Организация); + Если ЗначениеЗаполнено(Контрагент) Тогда + Возврат Контрагент; + КонецЕсли; + + // Штатный подбор сравнивает одновременно ИНН, КПП и бюджет организации с реквизитами + // юридического лица контрагента. Если КПП или бюджет расходятся, контрагент не находится - + // подбираем по ИНН и уточняем по КПП и бюджету. + Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Организация, "ИНН, КПП, Бюджет"); + + Если НЕ ЗначениеЗаполнено(Реквизиты.ИНН) Тогда + ОбщегоНазначения.СообщитьПользователю( + "У организации " + Строка(Организация) + " не заполнен ИНН:" + + " контрагент для извещения не подобран, заполните его вручную."); + Возврат Справочники.Контрагенты.ПустаяСсылка(); + КонецЕсли; + + Кандидаты = КонтрагентыПоИНН(Реквизиты.ИНН); + + Контрагент = ОтобратьКонтрагента(Кандидаты, Реквизиты); + Если ЗначениеЗаполнено(Контрагент) Тогда + Возврат Контрагент; + КонецЕсли; + + ВсеПомеченные = Кандидаты.Количество() > 0; + Для Каждого Кандидат Из Кандидаты Цикл + Если НЕ Кандидат.ПометкаУдаления Тогда + ВсеПомеченные = Ложь; + Прервать; + КонецЕсли; + КонецЦикла; + + Если ВсеПомеченные Тогда + ОбщегоНазначения.СообщитьПользователю( + "Для организации " + Строка(Организация) + + " найден только контрагент, помеченный на удаление: снимите пометку удаления" + + " или заведите действующего контрагента."); + Возврат Справочники.Контрагенты.ПустаяСсылка(); + КонецЕсли; + + ОбщегоНазначения.СообщитьПользователю(СтрШаблон( + "Для организации %1 не найден контрагент: ИНН %2, КПП %3, кандидатов по ИНН - %4." + + " Проверьте КПП и бюджет в юридическом лице контрагента или заполните контрагента вручную.", + Строка(Организация), Реквизиты.ИНН, + ?(ЗначениеЗаполнено(Реквизиты.КПП), Реквизиты.КПП, "<не заполнен>"), Кандидаты.Количество())); + + Возврат Справочники.Контрагенты.ПустаяСсылка(); + +КонецФункции + +// Возвращает контрагентов-юрлиц с указанным ИНН (без помеченных на удаление). +// +// Параметры: +// ИНН - Строка - ИНН организации. +// +// Возвращаемое значение: +// Массив из Структура - кандидаты: Контрагент, КПП, Бюджет. +// +Функция КонтрагентыПоИНН(ИНН) + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Контрагенты.Ссылка КАК Контрагент, + | ЮридическиеЛица.КПП КАК КПП, + | ЮридическиеЛица.Бюджет КАК Бюджет, + | Контрагенты.ПометкаУдаления КАК ПометкаУдаления + |ИЗ + | Справочник.Контрагенты КАК Контрагенты + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ЮридическиеЛица КАК ЮридическиеЛица + | ПО Контрагенты.ЮридическоеФизическоеЛицо = ЮридическиеЛица.Ссылка + |ГДЕ + | Контрагенты.ВидКонтрагента = &ВидКонтрагента + | И ЮридическиеЛица.ИНН = &ИНН"; + Запрос.УстановитьПараметр("ВидКонтрагента", Перечисления.ЮрФизЛицо.ЮрЛицо); + Запрос.УстановитьПараметр("ИНН", ИНН); + + Кандидаты = Новый Массив; + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + Кандидаты.Добавить(Новый Структура("Контрагент, КПП, Бюджет, ПометкаУдаления", + Выборка.Контрагент, Выборка.КПП, Выборка.Бюджет, Выборка.ПометкаУдаления)); + КонецЦикла; + + Возврат Кандидаты; + +КонецФункции + +// Выбирает контрагента из кандидатов по ИНН, уточняя по КПП и бюджету организации. +// +// Параметры: +// Кандидаты - Массив из Структура - кандидаты, найденные по ИНН. +// Реквизиты - Структура - реквизиты организации: ИНН, КПП, Бюджет. +// +// Возвращаемое значение: +// СправочникСсылка.Контрагенты - единственный подходящий контрагент; +// пустая ссылка, если однозначно выбрать нельзя. +// +Функция ОтобратьКонтрагента(Кандидаты, Реквизиты) + + // Помеченные на удаление в работу не принимаются: из них можно только подсказать причину. + Рабочие = Новый Массив; + Для Каждого Кандидат Из Кандидаты Цикл + Если НЕ Кандидат.ПометкаУдаления Тогда + Рабочие.Добавить(Кандидат); + КонецЕсли; + КонецЦикла; + + Если Рабочие.Количество() = 0 Тогда + Возврат Справочники.Контрагенты.ПустаяСсылка(); + КонецЕсли; + + // ИНН уникален для организации: единственный кандидат принимается без уточнений, + // даже если КПП в юридическом лице контрагента отличается. + Если Рабочие.Количество() = 1 Тогда + Возврат Рабочие[0].Контрагент; + КонецЕсли; + + Кандидаты = Рабочие; + + Если ЗначениеЗаполнено(Реквизиты.КПП) Тогда + Кандидаты = ОтобратьПоРеквизиту(Кандидаты, "КПП", Реквизиты.КПП); + Если Кандидаты.Количество() = 1 Тогда + Возврат Кандидаты[0].Контрагент; + КонецЕсли; + КонецЕсли; + + Если ЗначениеЗаполнено(Реквизиты.Бюджет) Тогда + Кандидаты = ОтобратьПоРеквизиту(Кандидаты, "Бюджет", Реквизиты.Бюджет); + Если Кандидаты.Количество() = 1 Тогда + Возврат Кандидаты[0].Контрагент; + КонецЕсли; + КонецЕсли; + + Возврат Справочники.Контрагенты.ПустаяСсылка(); + +КонецФункции + +// Оставляет кандидатов с указанным значением реквизита. +// +// Параметры: +// Кандидаты - Массив из Структура - кандидаты. +// ИмяРеквизита - Строка - имя реквизита структуры-кандидата. +// Значение - Произвольный - требуемое значение реквизита. +// +// Возвращаемое значение: +// Массив из Структура - отобранные кандидаты. +// +Функция ОтобратьПоРеквизиту(Кандидаты, ИмяРеквизита, Значение) + + Отобрано = Новый Массив; + Для Каждого Кандидат Из Кандидаты Цикл + Если Кандидат[ИмяРеквизита] = Значение Тогда + Отобрано.Добавить(Кандидат); + КонецЕсли; + КонецЦикла; + + Возврат Отобрано; + +КонецФункции + // Формирует структуру параметров одного извещения для вывода. // // Параметры: @@ -172,7 +571,7 @@ КонецФункции -// Выводит в табличный документ одно извещение по переданным проводкам. +// Выводит в табличный документ одно извещение по переданным данным. // // Параметры: // ТабличныйДокумент - ТабличныйДокумент - печатная форма, в которую выводится извещение. @@ -180,7 +579,7 @@ // ДокументСсылка - ДокументСсылка - печатаемый документ. // ДокументОбъект - ДокументОбъект - печатаемый документ. // ПараметрыИзвещения - Структура - параметры извещения, см. НоваяСтруктураИзвещения. -// Проводки - ТаблицаЗначений - проводки извещения, см. ПроводкиИзвещения. +// Проводки - ТаблицаЗначений - данные извещения, см. ДанныеИзвещенияПоРеестру. // Процедура ВывестиИзвещение(ТабличныйДокумент, Макет, ДокументСсылка, ДокументОбъект, ПараметрыИзвещения, Проводки) @@ -402,47 +801,105 @@ КонецФункции -// Возвращает проводки документа по данным регистра бухгалтерии. +// Возвращает идентификатор строки поступления для регистра взаиморасчётов. +// +// Идентификатор связывает строку табличной части "Задолженность" наших документов +// со строкой расшифровки платежа кассового поступления: ":<номер строки>". +// Длина не должна превышать 50 символов (измерение регистра и реквизит табличных частей). // // Параметры: -// ДокументСсылка - ДокументСсылка - печатаемый документ. +// ДокументСсылка - ДокументСсылка.КассовоеПоступление - документ поступления. +// НомерСтроки - Число - номер строки табличной части "Расшифровка платежа". // // Возвращаемое значение: -// ТаблицаЗначений - колонки: СчетДт, КПСДт, КЭКДт, СчетКт, КПСКт, КЭККт, КФО, Сумма, Содержание, -// СубконтоКт1, СубконтоКт2, СубконтоКт3. +// Строка // -Функция ПроводкиИзвещения(ДокументСсылка) +Функция ИдентификаторСтрокиПоступления(ДокументСсылка, НомерСтроки) Экспорт - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ - | Проводки.СчетДт КАК СчетДт, - | Проводки.КПСДт КАК КПСДт, - | Проводки.КЭКДт КАК КЭКДт, - | Проводки.СчетКт КАК СчетКт, - | Проводки.КПСКт КАК КПСКт, - | Проводки.КЭККт КАК КЭККт, - | Проводки.КФО КАК КФО, - | Проводки.Сумма КАК Сумма, - | Проводки.Содержание КАК Содержание, - | Проводки.СубконтоКт1 КАК СубконтоКт1, - | Проводки.СубконтоКт2 КАК СубконтоКт2, - | Проводки.СубконтоКт3 КАК СубконтоКт3 - |ИЗ - | РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ДвиженияССубконто(, , Регистратор = &ДокументСсылка) КАК Проводки - | - |УПОРЯДОЧИТЬ ПО - | Проводки.НомерСтроки"; - Запрос.УстановитьПараметр("ДокументСсылка", ДокументСсылка); + Если НЕ ЗначениеЗаполнено(ДокументСсылка) Тогда + Возврат ""; + КонецЕсли; - Возврат Запрос.Выполнить().Выгрузить(); + Возврат Строка(ДокументСсылка.УникальныйИдентификатор()) + ":" + Формат(НомерСтроки, "ЧГ=0"); + +КонецФункции + +// Возвращает данные извещения по строкам табличной части "Задолженность". +// +// Извещение не имеет собственных проводок: строки отражают операцию зачисления в доход +// бюджета (Дт 303.05, КЭК 831 - Кт 205.31, КЭК 660), которую выполняет документ подсистемы. +// КПС берётся из строки реестра, КФО - из шапки документа. +// +// Параметры: +// ДокументОбъект - ДокументОбъект - печатаемый документ. +// +// Возвращаемое значение: +// ТаблицаЗначений - колонки: СчетДт, КПСДт, КЭКДт, СчетКт, КПСКт, КЭККт, КФО, Сумма, Содержание. +// +Функция ДанныеИзвещенияПоРеестру(ДокументОбъект) + + Данные = Новый ТаблицаЗначений; + Данные.Колонки.Добавить("СчетДт"); + Данные.Колонки.Добавить("КПСДт"); + Данные.Колонки.Добавить("КЭКДт"); + Данные.Колонки.Добавить("СчетКт"); + Данные.Колонки.Добавить("КПСКт"); + Данные.Колонки.Добавить("КЭККт"); + Данные.Колонки.Добавить("КФО"); + Данные.Колонки.Добавить("Сумма"); + Данные.Колонки.Добавить("Содержание"); + + СчетДт = ПланыСчетов.ЕПСБУ.НайтиПоКоду("303.05"); + СчетКт = ПланыСчетов.ЕПСБУ.НайтиПоКоду("205.31"); + КЭКДт = Справочники.КОСГУ.НайтиПоКоду("831"); + КЭККт = Справочники.КОСГУ.НайтиПоКоду("660"); + + Для Каждого СтрокаРеестра Из ДокументОбъект.Задолженность Цикл + СтрокаДанных = Данные.Добавить(); + СтрокаДанных.СчетДт = СчетДт; + СтрокаДанных.КПСДт = СтрокаРеестра.КПС; + СтрокаДанных.КЭКДт = КЭКДт; + СтрокаДанных.СчетКт = СчетКт; + СтрокаДанных.КПСКт = СтрокаРеестра.КПС; + СтрокаДанных.КЭККт = КЭККт; + СтрокаДанных.КФО = ДокументОбъект.КФО; + СтрокаДанных.Сумма = СтрокаРеестра.Сумма; + СтрокаДанных.Содержание = СодержаниеСтрокиИзвещения(СтрокаРеестра); + КонецЦикла; + + Возврат Данные; + +КонецФункции + +// Формирует текст содержания строки извещения. +// +// Параметры: +// СтрокаРеестра - СтрокаТаблицыЗначений - строка табличной части "Задолженность". +// +// Возвращаемое значение: +// Строка +// +Функция СодержаниеСтрокиИзвещения(СтрокаРеестра) + + ЧастиСодержания = Новый Массив; + Если ЗначениеЗаполнено(СтрокаРеестра.Ребенок) Тогда + ЧастиСодержания.Добавить("Ребенок: " + Строка(СтрокаРеестра.Ребенок)); + КонецЕсли; + Если ЗначениеЗаполнено(СтрокаРеестра.Договор) Тогда + ЧастиСодержания.Добавить("Договор: " + Строка(СтрокаРеестра.Договор)); + КонецЕсли; + Если ЗначениеЗаполнено(СтрокаРеестра.ПериодОплаты) Тогда + ЧастиСодержания.Добавить("Период: " + СтрокаРеестра.ПериодОплаты); + КонецЕсли; + + Возврат СтрСоединить(ЧастиСодержания, "; "); КонецФункции // Сворачивает проводки по счетам для раздела "Обороты в журнал операций". // // Параметры: -// Проводки - ТаблицаЗначений - проводки документа, см. ПроводкиИзвещения. +// Проводки - ТаблицаЗначений - данные извещения, см. ДанныеИзвещенияПоРеестру. // // Возвращаемое значение: // ТаблицаЗначений - колонки: СчетДт, КПСДт, КЭКДт, СчетКт, КПСКт, КЭККт, КФО, Сумма. diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo index 20c4ff4..7be3209 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo @@ -75,10 +75,13 @@ Catalog.ИсточникиФинансовогоОбеспечения Catalog.Пользователи Catalog.КОСГУ + Catalog.ВидыНалоговИПлатежей Document.НачислениеРодительскойПлаты Document.ПС_ПринятиеПоступившихПлатежейИзЦБ Document.ПС_ПередачаПоступившихПлатежейВУчреждения Document.КассовоеПоступление + Document.ИзвещениеИсходящее + Document.ИзвещениеВходящее Enum.КВД Enum.ПС_ВидыОперацийПоВзаиморасчетам Report.ПС_ВедомостьЦБПоРодительскойПлате diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ИзвещениеВходящее/ИзвещениеВходящее.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ИзвещениеВходящее/ИзвещениеВходящее.mdo new file mode 100644 index 0000000..171e42b --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ИзвещениеВходящее/ИзвещениеВходящее.mdo @@ -0,0 +1,16 @@ + + + + + + + + + + ИзвещениеВходящее + Adopted + + Checked + + true + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ИзвещениеИсходящее/ИзвещениеИсходящее.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ИзвещениеИсходящее/ИзвещениеИсходящее.mdo new file mode 100644 index 0000000..d61f4f1 --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ИзвещениеИсходящее/ИзвещениеИсходящее.mdo @@ -0,0 +1,16 @@ + + + + + + + + + + ИзвещениеИсходящее + Adopted + + Checked + + true + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/ObjectModule.bsl index 9f89306..e6b6c1e 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/ObjectModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/КассовоеПоступление/ObjectModule.bsl @@ -16,6 +16,16 @@ ПС_РазборПлатежейПоРодительскойПлате.ЗаполнитьКонтрагентовПоНазначениюПлатежа(ЭтотОбъект); + // Признак "Родительская плата" сбрасывается, если в корреспондирующем счёте указан 303.00. + // Без признака приход по регистру взаиморасчётов не формируется, поэтому предупреждаем + // по факту распознанного и найденного лицевого счёта ребёнка. + Если НЕ РодительскаяПлата + И ПС_РазборПлатежейПоРодительскойПлате.ЕстьЛицевыеСчетаДетей(ЭтотОбъект) Тогда + ОбщегоНазначения.СообщитьПользователю( + "В расшифровке платежа распознан лицевой счёт ребёнка, но признак ""Родительская плата""" + + " не установлен: приход по взаиморасчётам по родительской плате не будет сформирован."); + КонецЕсли; + КонецПроцедуры &После("ОбработкаПроведения") @@ -68,6 +78,8 @@ Движение.ИФО = ИФО; Движение.КФО = СтрокаРасшифровки.КФО; Движение.КПС = СтрокаРасшифровки.КБКНазначениеПлатежа; + Движение.ИДСтроки = ПС_УчетРодительскойПлаты.ИдентификаторСтрокиПоступления( + Ссылка, СтрокаРасшифровки.НомерСтроки); Движение.Сумма = СтрокаРасшифровки.Сумма; Движение.ВидОперации = Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.ПоступлениеПлатежа; diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Form.form b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Form.form index 3fbe579..47df018 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Form.form +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Form.form @@ -685,6 +685,276 @@ Normal + + ЗадолженностьЛицевойСчет + 113 + + <key>ru</key> + <value>Лицевой счет</value> + + true + true + + true + + + Объект.Задолженность.ЛицевойСчет + + + ЗадолженностьЗадолженностьЛицевойСчетРасширеннаяПодсказка + 115 + Label + true + true + + Left + + + + ЗадолженностьЗадолженностьЛицевойСчетКонтекстноеМеню + 114 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ЗадолженностьНазначениеПлатежа + 116 + + <key>ru</key> + <value>Назначение платежа</value> + + true + true + + true + + + Объект.Задолженность.НазначениеПлатежа + + + ЗадолженностьЗадолженностьНазначениеПлатежаРасширеннаяПодсказка + 118 + Label + true + true + + Left + + + + ЗадолженностьЗадолженностьНазначениеПлатежаКонтекстноеМеню + 117 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ЗадолженностьРасчетныйСчет + 119 + + <key>ru</key> + <value>Расчетный счет</value> + + true + true + + true + + + Объект.Задолженность.РасчетныйСчет + + + ЗадолженностьЗадолженностьРасчетныйСчетРасширеннаяПодсказка + 121 + Label + true + true + + Left + + + + ЗадолженностьЗадолженностьРасчетныйСчетКонтекстноеМеню + 120 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ЗадолженностьГруппа + 122 + + <key>ru</key> + <value>Группа</value> + + true + true + + true + + + Объект.Задолженность.Группа + + + ЗадолженностьЗадолженностьГруппаРасширеннаяПодсказка + 124 + Label + true + true + + Left + + + + ЗадолженностьЗадолженностьГруппаКонтекстноеМеню + 123 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ЗадолженностьПериодОплаты + 125 + + <key>ru</key> + <value>Период оплаты</value> + + true + true + + true + + + Объект.Задолженность.ПериодОплаты + + + ЗадолженностьЗадолженностьПериодОплатыРасширеннаяПодсказка + 127 + Label + true + true + + Left + + + + ЗадолженностьЗадолженностьПериодОплатыКонтекстноеМеню + 126 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ЗадолженностьДатаПлатежа + 128 + + <key>ru</key> + <value>Дата приема платежа</value> + + true + true + + true + + + Объект.Задолженность.ДатаПлатежа + + + ЗадолженностьЗадолженностьДатаПлатежаРасширеннаяПодсказка + 130 + Label + true + true + + Left + + + + ЗадолженностьЗадолженностьДатаПлатежаКонтекстноеМеню + 129 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + ЗадолженностьКоманднаяПанель 30 @@ -835,6 +1105,50 @@ ГруппаСтраницыОбщихДанных 88 + + ПринятиеПлатежей + 138 + + <key>ru</key> + <value>Принятие платежей</value> + + true + true + + true + + + Объект.ПринятиеПлатежей + + + ПринятиеПлатежейРасширеннаяПодсказка + 140 + Label + true + true + + Left + + + + ПринятиеПлатежейКонтекстноеМеню + 139 + true + + LabelField + Enter + true + Left + true + + true + true + true + + 1 + + + ИФО 10 @@ -922,6 +1236,46 @@ Normal + + ИзвещениеИсходящее + 135 + true + true + + true + + + Объект.ИзвещениеИсходящее + + + ИзвещениеИсходящееРасширеннаяПодсказка + 137 + Label + true + true + + Left + + + + ИзвещениеИсходящееКонтекстноеМеню + 136 + true + + LabelField + Enter + true + Left + true + + true + true + true + + 1 + + + Комментарий 81 @@ -1291,6 +1645,58 @@ UserCmds Auto + + ПечатьРеестраПлатежей + 131 + true + true + + true + + + ФормаПечатьРеестраПлатежейРасширеннаяПодсказка + 132 + Label + true + true + + Left + + + Form.Command.ПечатьРеестраПлатежей + Normal + Auto + true + true + UserCmds + Auto + + + СоздатьИзвещение + 133 + true + true + + true + + + ФормаСоздатьИзвещениеРасширеннаяПодсказка + 134 + Label + true + true + + Left + + + Form.Command.СоздатьИзвещение + Normal + Auto + true + true + UserCmds + Auto + Left true @@ -1396,6 +1802,38 @@ + + ПечатьРеестраПлатежей + + <key>ru</key> + <value>Реестр платежей</value> + + 5 + + true + + + + ПечатьРеестраПлатежей + + + + + СоздатьИзвещение + + <key>ru</key> + <value>Создать извещение 0504805</value> + + 6 + + true + + + + СоздатьИзвещение + + + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Module.bsl index 39ca6ce..50fd18b 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Forms/ФормаДокумента/Module.bsl @@ -104,6 +104,25 @@ КонецПроцедуры +&НаКлиенте +Процедура ПечатьРеестраПлатежей(Команда) + + ТабличныйДокумент = ПечатьРеестраПлатежейНаСервере(Объект.Ссылка); + ТабличныйДокумент.Показать("Реестр платежей"); + +КонецПроцедуры + +&НаКлиенте +Процедура СоздатьИзвещение(Команда) + + Извещение = СоздатьИзвещениеНаСервере(); + Если ЗначениеЗаполнено(Извещение) Тогда + ПараметрыФормы = Новый Структура("Ключ", Извещение); + ОткрытьФорму("Документ.ИзвещениеИсходящее.Форма.ФормаДокумента", ПараметрыФормы, ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Процедура ПросмотрБухгалтерскихЗаписей(Команда) @@ -121,38 +140,15 @@ &НаКлиенте Процедура СоздатьПринятиеПлатежей(Команда) - Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда - СообщениеПользователю = Новый СообщениеПользователю; - СообщениеПользователю.Текст = "Сначала запишите документ передачи платежей."; - СообщениеПользователю.Сообщить(); - Возврат; + Принятие = СоздатьПринятиеПлатежейНаСервере(); + Если ЗначениеЗаполнено(Принятие) Тогда + ПараметрыФормы = Новый Структура("Ключ", Принятие); + ОткрытьФорму("Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ.Форма.ФормаДокумента", + ПараметрыФормы, + ЭтотОбъект, + Строка(Принятие)); КонецЕсли; - Если НЕ Объект.Проведен Тогда - СообщениеПользователю = Новый СообщениеПользователю; - СообщениеПользователю.Текст = "Перед созданием приёма платежей документ передачи должен быть проведён."; - СообщениеПользователю.Сообщить(); - Возврат; - КонецЕсли; - - // Документ передачи адресный: открывается форма одного документа принятия по учреждению - // документа. Строки подбираются по саду, документ записывает пользователь. - Если НЕ ЗначениеЗаполнено(Объект.Учреждение) Тогда - СообщениеПользователю = Новый СообщениеПользователю; - СообщениеПользователю.Текст = "Не заполнено учреждение (получатель) документа передачи."; - СообщениеПользователю.Сообщить(); - Возврат; - КонецЕсли; - - ПараметрыФормы = Новый Структура; - ПараметрыФормы.Вставить("ДокументПередачи", Объект.Ссылка); - ПараметрыФормы.Вставить("ОрганизацияСада", Объект.Учреждение); - - ОткрытьФорму("Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ.Форма.ФормаДокумента", - ПараметрыФормы, - ЭтотОбъект, - Строка(Объект.Ссылка)); - КонецПроцедуры &НаКлиенте @@ -173,6 +169,72 @@ КонецФункции +&НаСервере +Функция ПечатьРеестраПлатежейНаСервере(ДокументСсылка) + + Возврат ПС_УчетРодительскойПлаты.ПечатьРеестраПлатежей(ДокументСсылка); + +КонецФункции + +&НаСервере +Функция СоздатьПринятиеПлатежейНаСервере() + + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда + ОбщегоНазначения.СообщитьПользователю("Сначала запишите документ передачи платежей."); + Возврат Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.ПустаяСсылка(); + КонецЕсли; + + Если НЕ Объект.Проведен Тогда + ОбщегоНазначения.СообщитьПользователю( + "Перед созданием приёма платежей документ передачи должен быть проведён."); + Возврат Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.ПустаяСсылка(); + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(Объект.Учреждение) Тогда + ОбщегоНазначения.СообщитьПользователю( + "Не заполнено учреждение (получатель) документа передачи."); + Возврат Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.ПустаяСсылка(); + КонецЕсли; + + // Документ передачи адресный: приём платежей по нему один. Если он уже создан, + // открывается существующий - повторное нажатие не плодит документы. + Если ЗначениеЗаполнено(Объект.ПринятиеПлатежей) Тогда + Существующий = Объект.ПринятиеПлатежей.ПолучитьОбъект(); + Если Существующий <> Неопределено И НЕ Существующий.ПометкаУдаления Тогда + Возврат Объект.ПринятиеПлатежей; + КонецЕсли; + КонецЕсли; + + Принятие = Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.СоздатьДокумент(); + Принятие.Организация = Объект.Учреждение; + Принятие.Заполнить(Объект.Ссылка); + Принятие.Записать(РежимЗаписиДокумента.Запись); + + Объект.ПринятиеПлатежей = Принятие.Ссылка; + Записать(); + + Возврат Принятие.Ссылка; + +КонецФункции + +&НаСервере +Функция СоздатьИзвещениеНаСервере() + + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда + ОбщегоНазначения.СообщитьПользователю("Сначала запишите документ передачи платежей."); + Возврат Документы.ИзвещениеИсходящее.ПустаяСсылка(); + КонецЕсли; + + Извещение = ПС_УчетРодительскойПлаты.СоздатьИзвещениеПоПередаче(Объект.Ссылка); + Если ЗначениеЗаполнено(Извещение) Тогда + Объект.ИзвещениеИсходящее = Извещение; + Записать(); + КонецЕсли; + + Возврат Извещение; + +КонецФункции + &НаСервере Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию() @@ -187,8 +249,10 @@ КонецПроцедуры // Подбирает в табличную часть "Задолженность" поступившие платежи, ещё не переданные -// в учреждения: остатки регистра накопления ПС_ВзаиморасчетыПоРодительскойПлате. -// Предыдущая передача выбирает остатки, поэтому следующая их уже не видит. +// в учреждения: остатки регистра накопления ПС_ВзаиморасчетыПоРодительскойПлате в разрезе +// квитанций (измерение "ИДСтроки"). Предыдущая передача выбирает остатки, поэтому следующая +// их уже не видит. Реквизиты реестра (лицевой счёт, расчётный счёт, группа, период оплаты, +// назначение платежа) разбираются из назначения платежа строки расшифровки кассового поступления. // &НаСервере Процедура ЗаполнитьПоПоступившимПлатежамНаСервере() @@ -208,6 +272,7 @@ Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ + | Остатки.ИДСтроки КАК ИДСтроки, | Остатки.Плательщик КАК Контрагент, | Остатки.Договор КАК Договор, | Остатки.Ребенок КАК Ребенок, @@ -240,29 +305,87 @@ ЗначенияИФО = Новый Соответствие; ЗначенияКФО = Новый Соответствие; + СтрокиОстатков = Новый Массив; Пока Выборка.Следующий() Цикл + СтрокаОстатка = Новый Структура; + СтрокаОстатка.Вставить("ИДСтроки", Выборка.ИДСтроки); + СтрокаОстатка.Вставить("Контрагент", Выборка.Контрагент); + СтрокаОстатка.Вставить("Договор", Выборка.Договор); + СтрокаОстатка.Вставить("Ребенок", Выборка.Ребенок); + СтрокаОстатка.Вставить("КПС", Выборка.КПС); + СтрокаОстатка.Вставить("Сумма", Выборка.Сумма); + СтрокиОстатков.Добавить(СтрокаОстатка); + ЗначенияИФО.Вставить(Выборка.ИФО, Истина); ЗначенияКФО.Вставить(Выборка.КФО, Истина); - НоваяСтрока = Объект.Задолженность.Добавить(); - НоваяСтрока.Контрагент = Выборка.Контрагент; - НоваяСтрока.Договор = Выборка.Договор; - НоваяСтрока.Ребенок = Выборка.Ребенок; - НоваяСтрока.КПС = Выборка.КПС; - НоваяСтрока.Сумма = Выборка.Сумма; - КонецЦикла; - Если Объект.Задолженность.Количество() = 0 Тогда + Если СтрокиОстатков.Количество() = 0 Тогда ОбщегоНазначения.СообщитьПользователю( "Поступивших платежей, ещё не переданных в учреждения, не найдено."); Возврат; КонецЕсли; + // Расшифровки платежей читаются одним запросом на весь документ. + Расшифровки = РасшифровкиПлатежейПоИД(СтрокиОстатков); + + СтрокБезИдентификатора = 0; + СтрокБезРасшифровки = 0; + + Для Каждого СтрокаОстатка Из СтрокиОстатков Цикл + + НоваяСтрока = Объект.Задолженность.Добавить(); + НоваяСтрока.Контрагент = СтрокаОстатка.Контрагент; + НоваяСтрока.Договор = СтрокаОстатка.Договор; + НоваяСтрока.Ребенок = СтрокаОстатка.Ребенок; + НоваяСтрока.КПС = СтрокаОстатка.КПС; + НоваяСтрока.Сумма = СтрокаОстатка.Сумма; + НоваяСтрока.ИДСтроки = СтрокаОстатка.ИДСтроки; + + ДанныеРасшифровки = Расшифровки[СтрокаОстатка.ИДСтроки]; + Если ДанныеРасшифровки = Неопределено Тогда + // Идентификатор строки пишется в регистр при проведении кассового поступления: + // у документов, проведённых до появления измерения, он пуст. + Если СтрДлина(СокрЛП(СтрокаОстатка.ИДСтроки)) < 38 Тогда + СтрокБезИдентификатора = СтрокБезИдентификатора + 1; + Иначе + СтрокБезРасшифровки = СтрокБезРасшифровки + 1; + КонецЕсли; + Продолжить; + КонецЕсли; + + ТекстНазначения = СокрЛП(ДанныеРасшифровки.Примечание); + ДанныеПлатежа = ПС_РазборПлатежейПоРодительскойПлате.РазобратьНазначениеПлатежа(ТекстНазначения); + + НоваяСтрока.НазначениеПлатежа = Лев(ТекстНазначения, 200); + НоваяСтрока.ЛицевойСчет = ДанныеПлатежа.ЛицевойСчет; + НоваяСтрока.РасчетныйСчет = ДанныеПлатежа.РасчетныйСчет; + НоваяСтрока.Группа = ДанныеПлатежа.Группа; + НоваяСтрока.ПериодОплаты = ДанныеПлатежа.ПериодОплаты; + НоваяСтрока.ДатаПлатежа = ДанныеРасшифровки.Дата; + + КонецЦикла; + Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма"); + Если СтрокБезИдентификатора > 0 Тогда + ОбщегоНазначения.СообщитьПользователю(СтрШаблон( + "По %1 строкам в регистре нет идентификатора квитанции: кассовое поступление не перепроведено." + + " Лицевой счёт, назначение платежа, расчётный счёт, группа, период оплаты и дата платежа" + + " не заполнены. Перепроведите кассовые поступления и заполните документ заново.", + СтрокБезИдентификатора)); + КонецЕсли; + + Если СтрокБезРасшифровки > 0 Тогда + ОбщегоНазначения.СообщитьПользователю(СтрШаблон( + "По %1 строкам идентификатор квитанции есть, но строка расшифровки платежа не найдена:" + + " кассовое поступление изменялось после проведения. Перепроведите кассовые поступления" + + " и заполните документ заново.", СтрокБезРасшифровки)); + КонецЕсли; + // Разрезов ИФО и КФО в табличной части нет - они задаются на весь документ, // поэтому переносим их в шапку, если в остатках они единственные. ЗаполнитьИФОиКФОПоОстаткам(ЗначенияИФО, ЗначенияКФО); @@ -275,6 +398,70 @@ КонецПроцедуры +// Возвращает расшифровки платежей по идентификаторам строк поступлений. +// +// Параметры: +// СтрокиОстатков - Массив из Структура - строки остатков регистра взаиморасчётов +// с полем "ИДСтроки" вида ":<номер строки>". +// +// Возвращаемое значение: +// Соответствие из Строка, Структура - расшифровки по идентификатору строки: +// * Примечание - Строка - текст назначения платежа; +// * Дата - Дата - дата кассового поступления. +// +&НаСервере +Функция РасшифровкиПлатежейПоИД(СтрокиОстатков) + + Результат = Новый Соответствие; + Идентификаторы = Новый Соответствие; + ДокументыПоступления = Новый Массив; + + Для Каждого СтрокаОстатка Из СтрокиОстатков Цикл + + Идентификатор = СокрЛП(СтрокаОстатка.ИДСтроки); + Если СтрДлина(Идентификатор) < 38 Тогда + Продолжить; + КонецЕсли; + + ИдентификаторДокумента = Лев(Идентификатор, 36); + Если Идентификаторы[ИдентификаторДокумента] <> Неопределено Тогда + Продолжить; + КонецЕсли; + Идентификаторы.Вставить(ИдентификаторДокумента, Истина); + + ДокументыПоступления.Добавить(Документы.КассовоеПоступление.ПолучитьСсылку( + Новый УникальныйИдентификатор(ИдентификаторДокумента))); + + КонецЦикла; + + Если ДокументыПоступления.Количество() = 0 Тогда + Возврат Результат; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Расшифровка.Ссылка КАК Ссылка, + | Расшифровка.НомерСтроки КАК НомерСтроки, + | Расшифровка.Примечание КАК Примечание, + | Расшифровка.Ссылка.Дата КАК Дата + |ИЗ + | Документ.КассовоеПоступление.РасшифровкаПлатежа КАК Расшифровка + |ГДЕ + | Расшифровка.Ссылка В (&ДокументыПоступления)"; + Запрос.УстановитьПараметр("ДокументыПоступления", ДокументыПоступления); + + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + Результат.Вставить( + ПС_УчетРодительскойПлаты.ИдентификаторСтрокиПоступления(Выборка.Ссылка, Выборка.НомерСтроки), + Новый Структура("Примечание, Дата", Выборка.Примечание, Выборка.Дата)); + КонецЦикла; + + Возврат Результат; + +КонецФункции + &НаСервере Процедура ЗаполнитьИФОиКФОПоОстаткам(ЗначенияИФО, ЗначенияКФО) @@ -302,7 +489,7 @@ ОткрытьФорму("РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ФормаСписка", ПараметрыФормы, ЭтотОбъект, - УникальныйИдентификатор); + "Проводки" + Строка(ДокументСсылка)); КонецПроцедуры diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ManagerModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ManagerModule.bsl index c715820..7fe5880 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ManagerModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ManagerModule.bsl @@ -34,6 +34,12 @@ КомандаПечати.Представление = "Извещение (ф. 0504805)"; КомандаПечати.Порядок = 1; + КомандаПечати = КомандыПечати.Добавить(); + КомандаПечати.МенеджерПечати = "Документ.ПС_ПередачаПоступившихПлатежейВУчреждения"; + КомандаПечати.Идентификатор = "РеестрПлатежей"; + КомандаПечати.Представление = "Реестр платежей"; + КомандаПечати.Порядок = 2; + КонецПроцедуры // Формирует печатные формы документа для подсистемы БСП "Печать". @@ -47,17 +53,25 @@ // Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт - Если НЕ УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Извещение0504805") Тогда - Возврат; + Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Извещение0504805") Тогда + Для Каждого ДокументСсылка Из МассивОбъектов Цикл + УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( + КоллекцияПечатныхФорм, + "Извещение0504805", + "Извещение (ф. 0504805)", + ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805(ДокументСсылка)); + КонецЦикла; КонецЕсли; - Для Каждого ДокументСсылка Из МассивОбъектов Цикл - УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( - КоллекцияПечатныхФорм, - "Извещение0504805", - "Извещение (ф. 0504805)", - ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805(ДокументСсылка)); - КонецЦикла; + Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "РеестрПлатежей") Тогда + Для Каждого ДокументСсылка Из МассивОбъектов Цикл + УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( + КоллекцияПечатныхФорм, + "РеестрПлатежей", + "Реестр платежей", + ПС_УчетРодительскойПлаты.ПечатьРеестраПлатежей(ДокументСсылка)); + КонецЦикла; + КонецЕсли; КонецПроцедуры diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl index d6e5f22..6974651 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl @@ -1,7 +1,7 @@ // ПС_ПередачаПоступившихПлатежейВУчреждения: модуль объекта. -// Сторона ЦБ: Дт 205.31.56X — Кт 304.04.130. -// Проводки формируются в процедуре ОбработкаПроведения прямым заполнением -// набора записей регистра бухгалтерии ЖурналПроводокЕПСБУ. +// Сторона ЦБ — администратор кассовых поступлений. Бухгалтерских проводок документ не формирует: +// учёт ведётся в регистре накопления ПС_ВзаиморасчетыПоРодительскойПлате, а информация +// передаётся учреждению реестром платежей и извещением (ф. 0504805). // Документ собирает поступившие платежи (приход в регистре накопления // ПС_ВзаиморасчетыПоРодительскойПлате, сделанный кассовыми поступлениями) // и передаёт их учреждениям — расход по тому же регистру. Пока передано не всё, @@ -13,50 +13,11 @@ Процедура ОбработкаПроведения(Отказ, РежимПроведения) - Движения.ЖурналПроводокЕПСБУ.Очистить(); - Движения.ЖурналПроводокЕПСБУ.Записывать = Истина; - Движения.ЖурналПроводокЕПСБУ.ДополнительныеСвойства.Вставить("НеФормироватьУчетныеДанныеИзПроводок"); - Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Очистить(); Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина; - СчетДт = БухгалтерскийУчет.СчетПоКоду("205.31", Дата, Организация); - - // Счёт, корреспондирующий со счётом расчётов по доходам, и его КЭК задаются - // реквизитами документа (по умолчанию 304.04 и 131) и могут быть изменены пользователем. - СчетКт = СчетКорреспондент; - Если НЕ ЗначениеЗаполнено(СчетКт) Тогда - ОбщегоНазначения.СообщитьПользователю( - "Не заполнен счёт, корреспондирующий со счётом 205.31. Проведение невозможно.", - , "СчетКорреспондент", "Объект", Отказ); - Возврат; - КонецЕсли; - - ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт); - - // КПС строк заполняется при подборе поступивших платежей (см. модуль формы), - // КЭК счёта 205.31 определяется по настройкам счёта и типу контрагента (подстатья КОСГУ). Для Каждого СтрокаЗадолженности Из Задолженность Цикл - Движение = Движения.ЖурналПроводокЕПСБУ.Добавить(); - Движение.Период = Дата; - Движение.Организация = Организация; - Движение.ИФО = ИФО; - Движение.КФО = КФО; - Движение.СчетДт = СчетДт; - Движение.СчетКт = СчетКт; - Движение.КПСДт = СтрокаЗадолженности.КПС; - Движение.КПСКт = СтрокаЗадолженности.КПС; - Движение.КЭКДт = КЭКПроводки(СчетДт, "Дт", СтрокаЗадолженности.Контрагент, СтрокаЗадолженности.Договор); - Движение.КЭККт = КЭККорреспондент; - Движение.Сумма = СтрокаЗадолженности.Сумма; - Движение.ЖурналОпераций = ЖурналОпераций; - Движение.Содержание = "Передача поступивших платежей по родительской плате в учреждение"; - - Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты] = СтрокаЗадолженности.Контрагент; - Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Договоры] = СтрокаЗадолженности.Договор; - Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.КорреспондентыПоВнутреннимРасчетам] = Учреждение; - // Взаиморасчёты: переданные в учреждение поступившие платежи списываются расходом. ДвижениеПС = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьРасход(); ДвижениеПС.Период = Дата; @@ -74,18 +35,10 @@ КонецЦикла; - // В конфигурации есть подписка на событие "ОбработкаПроведения" (ЗаписатьТаблицуПроводок), - // которая выполняется после модуля объекта и перезаписывает проводки документа: если таблица - // проводок не передана, набор записей регистра очищается. Поэтому передаём сформированную - // таблицу через ДополнительныеСвойства.ДанныеАвтоПроведения.ТаблицаПроводок. - БухгалтерскиеОперацииСервер.ИнициализироватьБухгалтерскиеОперации(ЭтотОбъект); - ДополнительныеСвойства.ДанныеАвтоПроведения.ТаблицаПроводок = Движения.ЖурналПроводокЕПСБУ.Выгрузить(); - КонецПроцедуры Процедура ОбработкаУдаленияПроведения(Отказ) - Движения.ЖурналПроводокЕПСБУ.Записывать = Истина; Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина; КонецПроцедуры @@ -170,34 +123,6 @@ КонецПроцедуры -// Возвращает КЭК проводки, определённый по настройкам счёта -// и типу контрагента (подстатья КОСГУ). -// -// Параметры: -// Счет - ПланСчетовСсылка.ЕПСБУ - счёт проводки. -// ДтКт - Строка - сторона проводки: "Дт" или "Кт". -// Субконто1 - Произвольный - значение первого субконто проводки. -// Субконто2 - Произвольный - значение второго субконто проводки. -// -// Возвращаемое значение: -// СправочникСсылка.КОСГУ - КЭК проводки. -// -Функция КЭКПроводки(Счет, ДтКт, Субконто1 = Неопределено, Субконто2 = Неопределено) - - ПараметрыКЭК = БухгалтерскийУчетКлиентСервер.ПараметрыРасчетаКЭКПроводки(); - ПараметрыКЭК.Организация = Организация; - ПараметрыКЭК.ИФО = ИФО; - ПараметрыКЭК.КФО = КФО; - ПараметрыКЭК.Дата = Дата; - ПараметрыКЭК.Счет = Счет; - ПараметрыКЭК.ДтКт = ДтКт; - ПараметрыКЭК.Субконто1 = Субконто1; - ПараметрыКЭК.Субконто2 = Субконто2; - - Возврат БухгалтерскийУчет.КЭКПроводки(ПараметрыКЭК); - -КонецФункции - #КонецОбласти #КонецЕсли diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Templates/РеестрПлатежей/Template.mxlx b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Templates/РеестрПлатежей/Template.mxlx new file mode 100644 index 0000000..a03772f --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Templates/РеестрПлатежей/Template.mxlx @@ -0,0 +1,574 @@ + + + + ru + ru + + ru + Русский + Русский + + + + 10 + + 0 + + 1 + + + + 1 + + 2 + + + + 2 + + 3 + + + + 3 + + 4 + + + + 4 + + 5 + + + + 5 + + 6 + + + + 6 + + 7 + + + + 7 + + 4 + + + + 8 + + 8 + + + + 9 + + 9 + + + + + c4c71b73-7783-4619-abbc-ece4486e4bdb + 10 + + 0 + + 10 + + + + 1 + + 11 + + + + 2 + + 12 + + + + 3 + + 4 + + + + 4 + + 5 + + + + 5 + + 13 + + + + 6 + + 7 + + + + 7 + + 14 + + + + 8 + + 8 + + + + 9 + + 9 + + + + + 0 + + + + 15 + ЗаголовокРеестра + + + + + + 1 + + + + 15 + РеквизитыДокумента + + + + + + 2 + + c4c71b73-7783-4619-abbc-ece4486e4bdb + + + 16 + + + ru + ФИО плательщика + + + + + + + 16 + + + ru + Сумма + + + + + + + 17 + + + ru + Лицевой счет ребенка + + + + + + + 16 + + + ru + ФИО ребенка + + + + + + + 16 + + + ru + Назначение платежа + + + + + + + 16 + + + ru + Организация + + + + + + + 16 + + + ru + Рассчетный счет + + + + + + + 16 + + + ru + Группа + + + + + + + 17 + + + ru + Период оплаты + + + + + + + 17 + + + ru + Дата приема платежа + + + + + + + + 3 + + + + 18 + + + + + 18 + + + + + 18 + + + + + 18 + + + + + 18 + + + + + 18 + + + + + 18 + + + + + 18 + + + + + 18 + + + + + 18 + + + + + + 4 + + c4c71b73-7783-4619-abbc-ece4486e4bdb + + + 15 + Плательщик + + + + + 19 + Сумма + + + + + 15 + ЛицевойСчет + + + + + 15 + Ребенок + + + + + 15 + НазначениеПлатежа + + + + + 15 + Организация + + + + + 15 + РассчетныйСчет + + + + + 15 + Группа + + + + + 15 + Период + + + + + 15 + ДатаПлатежа + + + + + + 5 + + true + + + + 6 + + c4c71b73-7783-4619-abbc-ece4486e4bdb + + + 20 + + + ru + ИТОГО: + + + + + + + 21 + ОбщаяСумма + + + + + true + 22 + 7 + 7 + + Заголовок + + Rows + 0 + 1 + -1 + -1 + + + + ОбластьПодвалТаблицы + + Rows + 6 + 6 + -1 + -1 + c4c71b73-7783-4619-abbc-ece4486e4bdb + + + + ОбластьСтрокаТаблицы + + Rows + 4 + 4 + -1 + -1 + c4c71b73-7783-4619-abbc-ece4486e4bdb + + + + ОбластьШапкаТаблицы + + Rows + 2 + 2 + -1 + -1 + c4c71b73-7783-4619-abbc-ece4486e4bdb + + + + Solid + + + + + + 198 + + + 81 + + + 111 + + + 186 + + + 190 + + + 152 + + + 137 + + + 106 + + + 103 + + + 213 + + + 74 + + + 99 + + + 171 + + + 167 + + + 0 + 0 + Center + Wrap + Parameter + + + 1 + 0 + Center + + + 1 + 0 + Center + Wrap + + + 2 + + + 0 + 0 + Center + Wrap + Parameter + + + ru + ЧДЦ=2 + + + + + 1 + + + 1 + 0 + Center + Parameter + + + ru + ЧДЦ=2 + + + + + 72 + + \ No newline at end of file diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo index 850ce83..3748a9e 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo @@ -30,7 +30,6 @@ true true Document.ПС_ПередачаПоступившихПлатежейВУчреждения.Form.ФормаДокумента - AccountingRegister.ЖурналПроводокЕПСБУ AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате true true @@ -193,6 +192,36 @@ Use Use + + ИзвещениеИсходящее + + ru + Извещение исходящее + + + DocumentRef.ИзвещениеИсходящее + + + + + Use + Use + + + ПринятиеПлатежей + + ru + Документ принятия платежей + + + DocumentRef.ПС_ПринятиеПоступившихПлатежейИзЦБ + + + + + Use + Use + ФормаДокумента @@ -257,7 +286,7 @@ String - 25 + 50 @@ -297,6 +326,108 @@ Use Use + + ЛицевойСчет + + ru + Лицевой счет + + + String + + 25 + + + + + Use + Use + + + НазначениеПлатежа + + ru + Назначение платежа + + + String + + 200 + + + + + Use + Use + + + РасчетныйСчет + + ru + Расчетный счет + + + String + + 25 + + + + + Use + Use + + + Группа + + ru + Группа + + + String + + 50 + + + + + Use + Use + + + ПериодОплаты + + ru + Период оплаты + + + String + + 30 + + + + + Use + Use + + + ДатаПлатежа + + ru + Дата платежа + + + Date + + Date + + + + + Use + Use + ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель @@ -305,4 +436,11 @@ Извещение ф. 0504805 (103н) — получатель + + РеестрПлатежей + + ru + Реестр платежей + + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Forms/ФормаДокумента/Form.form b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Forms/ФормаДокумента/Form.form index ed4f03d..8852316 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Forms/ФормаДокумента/Form.form +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Forms/ФормаДокумента/Form.form @@ -722,6 +722,276 @@ Normal + + ЗадолженностьЛицевойСчет + 119 + + <key>ru</key> + <value>Лицевой счет</value> + + true + true + + true + + + Объект.Задолженность.ЛицевойСчет + + + ЗадолженностьЗадолженностьЛицевойСчетРасширеннаяПодсказка + 121 + Label + true + true + + Left + + + + ЗадолженностьЗадолженностьЛицевойСчетКонтекстноеМеню + 120 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ЗадолженностьНазначениеПлатежа + 122 + + <key>ru</key> + <value>Назначение платежа</value> + + true + true + + true + + + Объект.Задолженность.НазначениеПлатежа + + + ЗадолженностьЗадолженностьНазначениеПлатежаРасширеннаяПодсказка + 124 + Label + true + true + + Left + + + + ЗадолженностьЗадолженностьНазначениеПлатежаКонтекстноеМеню + 123 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ЗадолженностьРасчетныйСчет + 125 + + <key>ru</key> + <value>Расчетный счет</value> + + true + true + + true + + + Объект.Задолженность.РасчетныйСчет + + + ЗадолженностьЗадолженностьРасчетныйСчетРасширеннаяПодсказка + 127 + Label + true + true + + Left + + + + ЗадолженностьЗадолженностьРасчетныйСчетКонтекстноеМеню + 126 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ЗадолженностьГруппа + 128 + + <key>ru</key> + <value>Группа</value> + + true + true + + true + + + Объект.Задолженность.Группа + + + ЗадолженностьЗадолженностьГруппаРасширеннаяПодсказка + 130 + Label + true + true + + Left + + + + ЗадолженностьЗадолженностьГруппаКонтекстноеМеню + 129 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ЗадолженностьПериодОплаты + 131 + + <key>ru</key> + <value>Период оплаты</value> + + true + true + + true + + + Объект.Задолженность.ПериодОплаты + + + ЗадолженностьЗадолженностьПериодОплатыРасширеннаяПодсказка + 133 + Label + true + true + + Left + + + + ЗадолженностьЗадолженностьПериодОплатыКонтекстноеМеню + 132 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ЗадолженностьДатаПлатежа + 134 + + <key>ru</key> + <value>Дата приема платежа</value> + + true + true + + true + + + Объект.Задолженность.ДатаПлатежа + + + ЗадолженностьЗадолженностьДатаПлатежаРасширеннаяПодсказка + 136 + Label + true + true + + Left + + + + ЗадолженностьЗадолженностьДатаПлатежаКонтекстноеМеню + 135 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + ЗадолженностьКоманднаяПанель 30 @@ -902,19 +1172,18 @@ 112 true - InputField + LabelField Enter true Left true - + true true - true - true - true - true - Normal + true + + 1 + @@ -1004,6 +1273,51 @@ Normal + + ВидПлатежаВБюджет + 116 + + <key>ru</key> + <value>Вид платежа в бюджет (аналитика 303.05)</value> + + true + true + + true + + + Объект.ВидПлатежаВБюджет + + + ВидПлатежаВБюджетРасширеннаяПодсказка + 118 + Label + true + true + + Left + + + + ВидПлатежаВБюджетКонтекстноеМеню + 117 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + ГруппаКорреспондентующегоСчёта 109 @@ -1128,6 +1442,46 @@ Auto + + ИзвещениеВходящее + 141 + true + true + + true + + + Объект.ИзвещениеВходящее + + + ИзвещениеВходящееРасширеннаяПодсказка + 143 + Label + true + true + + Left + + + + ИзвещениеВходящееКонтекстноеМеню + 142 + true + + LabelField + Enter + true + Left + true + + true + true + true + + 1 + + + Комментарий 87 @@ -1381,6 +1735,58 @@ UserCmds Auto + + ПечатьРеестраПлатежей + 137 + true + true + + true + + + ФормаПечатьРеестраПлатежейРасширеннаяПодсказка + 138 + Label + true + true + + Left + + + Form.Command.ПечатьРеестраПлатежей + Normal + Auto + true + true + UserCmds + Auto + + + СоздатьИзвещение + 139 + true + true + + true + + + ФормаСоздатьИзвещениеРасширеннаяПодсказка + 140 + Label + true + true + + Left + + + Form.Command.СоздатьИзвещение + Normal + Auto + true + true + UserCmds + Auto + Left true @@ -1466,6 +1872,38 @@ + + ПечатьРеестраПлатежей + + <key>ru</key> + <value>Реестр платежей</value> + + 4 + + true + + + + ПечатьРеестраПлатежей + + + + + СоздатьИзвещение + + <key>ru</key> + <value>Создать извещение 0504805</value> + + 5 + + true + + + + СоздатьИзвещение + + + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Forms/ФормаДокумента/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Forms/ФормаДокумента/Module.bsl index abee674..7ca78ff 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Forms/ФормаДокумента/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Forms/ФормаДокумента/Module.bsl @@ -139,6 +139,25 @@ КонецПроцедуры +&НаКлиенте +Процедура ПечатьРеестраПлатежей(Команда) + + ТабличныйДокумент = ПечатьРеестраПлатежейНаСервере(Объект.Ссылка); + ТабличныйДокумент.Показать("Реестр платежей"); + +КонецПроцедуры + +&НаКлиенте +Процедура СоздатьИзвещение(Команда) + + Извещение = СоздатьИзвещениеНаСервере(); + Если ЗначениеЗаполнено(Извещение) Тогда + ПараметрыФормы = Новый Структура("Ключ", Извещение); + ОткрытьФорму("Документ.ИзвещениеВходящее.Форма.ФормаДокумента", ПараметрыФормы, ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Процедура ПросмотрБухгалтерскихЗаписей(Команда) @@ -185,6 +204,31 @@ КонецФункции +&НаСервере +Функция ПечатьРеестраПлатежейНаСервере(ДокументСсылка) + + Возврат ПС_УчетРодительскойПлаты.ПечатьРеестраПлатежей(ДокументСсылка); + +КонецФункции + +&НаСервере +Функция СоздатьИзвещениеНаСервере() + + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда + ОбщегоНазначения.СообщитьПользователю("Сначала запишите документ принятия платежей."); + Возврат Документы.ИзвещениеВходящее.ПустаяСсылка(); + КонецЕсли; + + Извещение = ПС_УчетРодительскойПлаты.СоздатьИзвещениеПоПринятию(Объект.Ссылка); + Если ЗначениеЗаполнено(Извещение) Тогда + Объект.ИзвещениеВходящее = Извещение; + Записать(); + КонецЕсли; + + Возврат Извещение; + +КонецФункции + &НаСервере Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию() diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ManagerModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ManagerModule.bsl index 6b681ab..908fb86 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ManagerModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ManagerModule.bsl @@ -34,6 +34,12 @@ КомандаПечати.Представление = "Извещение (ф. 0504805)"; КомандаПечати.Порядок = 1; + КомандаПечати = КомандыПечати.Добавить(); + КомандаПечати.МенеджерПечати = "Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ"; + КомандаПечати.Идентификатор = "РеестрПлатежей"; + КомандаПечати.Представление = "Реестр платежей"; + КомандаПечати.Порядок = 2; + КонецПроцедуры // Формирует печатные формы документа для подсистемы БСП "Печать". @@ -47,17 +53,25 @@ // Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт - Если НЕ УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Извещение0504805") Тогда - Возврат; + Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Извещение0504805") Тогда + Для Каждого ДокументСсылка Из МассивОбъектов Цикл + УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( + КоллекцияПечатныхФорм, + "Извещение0504805", + "Извещение (ф. 0504805)", + ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805(ДокументСсылка)); + КонецЦикла; КонецЕсли; - Для Каждого ДокументСсылка Из МассивОбъектов Цикл - УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( - КоллекцияПечатныхФорм, - "Извещение0504805", - "Извещение (ф. 0504805)", - ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805(ДокументСсылка)); - КонецЦикла; + Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "РеестрПлатежей") Тогда + Для Каждого ДокументСсылка Из МассивОбъектов Цикл + УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( + КоллекцияПечатныхФорм, + "РеестрПлатежей", + "Реестр платежей", + ПС_УчетРодительскойПлаты.ПечатьРеестраПлатежей(ДокументСсылка)); + КонецЦикла; + КонецЕсли; КонецПроцедуры diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl index e34a9ef..8a9673c 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl @@ -1,5 +1,7 @@ // ПС_ПринятиеПоступившихПлатежейИзЦБ: модуль объекта. -// Сторона детского сада: Дт 304.04.130 — Кт 205.31.66X. +// Сторона детского сада, методическая операция 1.3: Дт 303.05.831 — Кт 205.31.660 +// (п. 104 Инструкции № 162н) — зачисление суммы в доход бюджета на основании извещения +// от администратора кассовых поступлений. // Проводки формируются в процедуре ОбработкаПроведения прямым заполнением // набора записей регистра бухгалтерии ЖурналПроводокЕПСБУ. // Документ вводится на основании документа передачи платежей ЦБ и принимает @@ -57,22 +59,15 @@ Движения.ЖурналПроводокЕПСБУ.Записывать = Истина; Движения.ЖурналПроводокЕПСБУ.ДополнительныеСвойства.Вставить("НеФормироватьУчетныеДанныеИзПроводок"); + // Методическая операция 1.3: Дт 303.05.831 — Кт 205.31.660 (п. 104 Инструкции № 162н). + СчетДт = БухгалтерскийУчет.СчетПоКоду("303.05", Дата, Организация); СчетКт = БухгалтерскийУчет.СчетПоКоду("205.31", Дата, Организация); - - // Счёт, корреспондирующий со счётом расчётов по доходам, и его КЭК задаются реквизитами - // документа (по умолчанию 304.04 и 131) и могут быть изменены пользователем. - СчетДт = СчетКорреспондент; - Если НЕ ЗначениеЗаполнено(СчетДт) Тогда - ОбщегоНазначения.СообщитьПользователю( - "Не заполнен счёт, корреспондирующий со счётом 205.31. Проведение невозможно.", - , "СчетКорреспондент", "Объект", Отказ); - Возврат; - КонецЕсли; + КЭКДт = Справочники.КОСГУ.НайтиПоКоду("831"); + КЭККт = Справочники.КОСГУ.НайтиПоКоду("660"); ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт); - // КПС строк наследуется из строк документа передачи (см. ЗаполнитьСтрокиПоДокументуПередачи), - // КЭК счёта 205.31 определяется по настройкам счёта и типу контрагента (подстатья КОСГУ). + // КПС строк наследуется из строк документа передачи (см. ЗаполнитьСтрокиПоДокументуПередачи). Для Каждого СтрокаЗадолженности Из Задолженность Цикл Движение = Движения.ЖурналПроводокЕПСБУ.Добавить(); @@ -84,13 +79,16 @@ Движение.СчетКт = СчетКт; Движение.КПСДт = СтрокаЗадолженности.КПС; Движение.КПСКт = СтрокаЗадолженности.КПС; - Движение.КЭКДт = КЭККорреспондент; - Движение.КЭККт = КЭКПроводки(СчетКт, "Кт", СтрокаЗадолженности.Контрагент, СтрокаЗадолженности.Договор); + Движение.КЭКДт = КЭКДт; + Движение.КЭККт = КЭККт; Движение.Сумма = СтрокаЗадолженности.Сумма; Движение.ЖурналОпераций = ЖурналОпераций; Движение.Содержание = "Принятие поступивших платежей по родительской плате из ЦБ"; - Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.КорреспондентыПоВнутреннимРасчетам] = ЦБ; + // Аналитика по счёту 303.05 - вид платежа в бюджет ("Доходы от родительской платы"): + // обобщённая аналитика ожидаемых поступлений, задаётся пользователем в шапке документа. + Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.ВидыНалоговИПлатежей] = ВидПлатежаВБюджет; + Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты] = СтрокаЗадолженности.Контрагент; Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Договоры] = СтрокаЗадолженности.Договор; @@ -155,6 +153,12 @@ ОбщегоНазначения.СообщитьПользователю("Не заполнен КФО", , "КФО", "Объект", Отказ); КонецЕсли; + Если НЕ ЗначениеЗаполнено(ВидПлатежаВБюджет) Тогда + ОбщегоНазначения.СообщитьПользователю( + "Не заполнен вид платежа в бюджет - аналитика по счёту 303.05", + , "ВидПлатежаВБюджет", "Объект", Отказ); + КонецЕсли; + Если Задолженность.Количество() = 0 Тогда ОбщегоНазначения.СообщитьПользователю("Не заполнена табличная часть ""Задолженность""", , "Задолженность", "Объект", Отказ); Иначе @@ -218,7 +222,13 @@ | СтрокиПередачи.Ребенок КАК Ребенок, | СтрокиПередачи.ИДСтроки КАК ИДСтроки, | СтрокиПередачи.Сумма КАК Сумма, - | СтрокиПередачи.КПС КАК КПС + | СтрокиПередачи.КПС КАК КПС, + | СтрокиПередачи.ЛицевойСчет КАК ЛицевойСчет, + | СтрокиПередачи.НазначениеПлатежа КАК НазначениеПлатежа, + | СтрокиПередачи.РасчетныйСчет КАК РасчетныйСчет, + | СтрокиПередачи.Группа КАК Группа, + | СтрокиПередачи.ПериодОплаты КАК ПериодОплаты, + | СтрокиПередачи.ДатаПлатежа КАК ДатаПлатежа |ИЗ | Документ.ПС_ПередачаПоступившихПлатежейВУчреждения.Задолженность КАК СтрокиПередачи |ГДЕ @@ -238,34 +248,6 @@ КонецПроцедуры -// Возвращает КЭК проводки, определённый по настройкам счёта -// и типу контрагента (подстатья КОСГУ). -// -// Параметры: -// Счет - ПланСчетовСсылка.ЕПСБУ - счёт проводки. -// ДтКт - Строка - сторона проводки: "Дт" или "Кт". -// Субконто1 - Произвольный - значение первого субконто проводки. -// Субконто2 - Произвольный - значение второго субконто проводки. -// -// Возвращаемое значение: -// СправочникСсылка.КОСГУ - КЭК проводки. -// -Функция КЭКПроводки(Счет, ДтКт, Субконто1 = Неопределено, Субконто2 = Неопределено) - - ПараметрыКЭК = БухгалтерскийУчетКлиентСервер.ПараметрыРасчетаКЭКПроводки(); - ПараметрыКЭК.Организация = Организация; - ПараметрыКЭК.ИФО = ИФО; - ПараметрыКЭК.КФО = КФО; - ПараметрыКЭК.Дата = Дата; - ПараметрыКЭК.Счет = Счет; - ПараметрыКЭК.ДтКт = ДтКт; - ПараметрыКЭК.Субконто1 = Субконто1; - ПараметрыКЭК.Субконто2 = Субконто2; - - Возврат БухгалтерскийУчет.КЭКПроводки(ПараметрыКЭК); - -КонецФункции - #КонецОбласти #КонецЕсли diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Templates/РеестрПлатежей/Template.mxlx b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Templates/РеестрПлатежей/Template.mxlx new file mode 100644 index 0000000..a03772f --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Templates/РеестрПлатежей/Template.mxlx @@ -0,0 +1,574 @@ + + + + ru + ru + + ru + Русский + Русский + + + + 10 + + 0 + + 1 + + + + 1 + + 2 + + + + 2 + + 3 + + + + 3 + + 4 + + + + 4 + + 5 + + + + 5 + + 6 + + + + 6 + + 7 + + + + 7 + + 4 + + + + 8 + + 8 + + + + 9 + + 9 + + + + + c4c71b73-7783-4619-abbc-ece4486e4bdb + 10 + + 0 + + 10 + + + + 1 + + 11 + + + + 2 + + 12 + + + + 3 + + 4 + + + + 4 + + 5 + + + + 5 + + 13 + + + + 6 + + 7 + + + + 7 + + 14 + + + + 8 + + 8 + + + + 9 + + 9 + + + + + 0 + + + + 15 + ЗаголовокРеестра + + + + + + 1 + + + + 15 + РеквизитыДокумента + + + + + + 2 + + c4c71b73-7783-4619-abbc-ece4486e4bdb + + + 16 + + + ru + ФИО плательщика + + + + + + + 16 + + + ru + Сумма + + + + + + + 17 + + + ru + Лицевой счет ребенка + + + + + + + 16 + + + ru + ФИО ребенка + + + + + + + 16 + + + ru + Назначение платежа + + + + + + + 16 + + + ru + Организация + + + + + + + 16 + + + ru + Рассчетный счет + + + + + + + 16 + + + ru + Группа + + + + + + + 17 + + + ru + Период оплаты + + + + + + + 17 + + + ru + Дата приема платежа + + + + + + + + 3 + + + + 18 + + + + + 18 + + + + + 18 + + + + + 18 + + + + + 18 + + + + + 18 + + + + + 18 + + + + + 18 + + + + + 18 + + + + + 18 + + + + + + 4 + + c4c71b73-7783-4619-abbc-ece4486e4bdb + + + 15 + Плательщик + + + + + 19 + Сумма + + + + + 15 + ЛицевойСчет + + + + + 15 + Ребенок + + + + + 15 + НазначениеПлатежа + + + + + 15 + Организация + + + + + 15 + РассчетныйСчет + + + + + 15 + Группа + + + + + 15 + Период + + + + + 15 + ДатаПлатежа + + + + + + 5 + + true + + + + 6 + + c4c71b73-7783-4619-abbc-ece4486e4bdb + + + 20 + + + ru + ИТОГО: + + + + + + + 21 + ОбщаяСумма + + + + + true + 22 + 7 + 7 + + Заголовок + + Rows + 0 + 1 + -1 + -1 + + + + ОбластьПодвалТаблицы + + Rows + 6 + 6 + -1 + -1 + c4c71b73-7783-4619-abbc-ece4486e4bdb + + + + ОбластьСтрокаТаблицы + + Rows + 4 + 4 + -1 + -1 + c4c71b73-7783-4619-abbc-ece4486e4bdb + + + + ОбластьШапкаТаблицы + + Rows + 2 + 2 + -1 + -1 + c4c71b73-7783-4619-abbc-ece4486e4bdb + + + + Solid + + + + + + 198 + + + 81 + + + 111 + + + 186 + + + 190 + + + 152 + + + 137 + + + 106 + + + 103 + + + 213 + + + 74 + + + 99 + + + 171 + + + 167 + + + 0 + 0 + Center + Wrap + Parameter + + + 1 + 0 + Center + + + 1 + 0 + Center + Wrap + + + 2 + + + 0 + 0 + Center + Wrap + Parameter + + + ru + ЧДЦ=2 + + + + + 1 + + + 1 + 0 + Center + Parameter + + + ru + ЧДЦ=2 + + + + + 72 + + \ No newline at end of file diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo index 96f1c1f..9f721a5 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo @@ -207,6 +207,36 @@ Use Use + + ВидПлатежаВБюджет + + ru + Вид платежа в бюджет (аналитика 303.05) + + + CatalogRef.ВидыНалоговИПлатежей + + + + + Use + Use + + + ИзвещениеВходящее + + ru + Извещение входящее + + + DocumentRef.ИзвещениеВходящее + + + + + Use + Use + ФормаДокумента @@ -271,7 +301,7 @@ String - 25 + 50 @@ -311,6 +341,108 @@ Use Use + + ЛицевойСчет + + ru + Лицевой счет + + + String + + 25 + + + + + Use + Use + + + НазначениеПлатежа + + ru + Назначение платежа + + + String + + 200 + + + + + Use + Use + + + РасчетныйСчет + + ru + Расчетный счет + + + String + + 25 + + + + + Use + Use + + + Группа + + ru + Группа + + + String + + 50 + + + + + Use + Use + + + ПериодОплаты + + ru + Период оплаты + + + String + + 30 + + + + + Use + Use + + + ДатаПлатежа + + ru + Дата платежа + + + Date + + Date + + + + + Use + Use + ПФ_MXL_Извещение0504805_103н_ПС_РП @@ -319,4 +451,11 @@ Извещение ф. 0504805 (103н) — родительская плата + + РеестрПлатежей + + ru + Реестр платежей + + From 5309bab3c7cb8be836edee4de189d888b1e175ab Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Mon, 26 Oct 2026 20:36:58 +0500 Subject: [PATCH 09/19] =?UTF-8?q?feat(=D0=BF=D1=83=D0=BB=D1=8C=D1=82):=20?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B0=D1=82=D0=BA=D0=B8=20=D0=BF=D0=BE=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B3=D0=B8=D1=81=D1=82=D1=80=D1=83=20=D0=B2=D0=B7?= =?UTF-8?q?=D0=B0=D0=B8=D0=BC=D0=BE=D1=80=D0=B0=D1=81=D1=87=D1=91=D1=82?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=D1=81?= =?UTF-8?q?=D1=87=D0=B5=D1=82=D0=BE=D0=B2=20205.31/304.04,=20=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D1=81=D0=B8=D1=8F=201.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/Configuration/Configuration.mdo | 1 + .../Forms/Форма/Form.form | 1160 +++++++++++------ .../Forms/Форма/Module.bsl | 238 ++-- .../ПС_УправлениеРасчетамиПоРодительскойПлате/ObjectModule.bsl | 22 - 4 files changed, 914 insertions(+), 507 deletions(-) diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo index 7be3209..e843894 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo @@ -28,6 +28,7 @@ PersonalComputer Russian Role.ПС_ОсновнаяРоль + 1.0.0 Language.Русский TaxiEnableVersion8_2 diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form index 859c548..7266f66 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form @@ -245,37 +245,6 @@ UserCmds Auto - - КнопкаИнициализироватьИдентификаторыЭДО - 529 - - <key>ru</key> - <value>Инициализировать идентификаторы ЭДО</value> - - true - true - - true - - - ИнициализироватьИдентификаторыЭДОРасширеннаяПодсказка - 530 - Label - true - true - - Left - - - UsualButton - Form.Command.ИнициализироватьИдентификаторыЭДО - Normal - Auto - true - true - UserCmds - Auto - true true @@ -2454,31 +2423,39 @@ СтраницаОстатки 7 - ТаблицаОстатковВывод - 27 + ТаблицаСадыОстатки + 542 + + <key>ru</key> + <value>Остатки по садам</value> + true true true - ТаблицаОстатков + ТаблицаОстатковСады None - ТаблицаОстатковВыводИФО - 478 + ТаблицаСадыОстаткиУчреждение + 601 + + <key>ru</key> + <value>Учреждение (сад)</value> + true true true - ТаблицаОстатков.ИФО + ТаблицаОстатковСады.Учреждение - ТаблицаОстатковВыводТаблицаОстатковВыводИФОРасширеннаяПодсказка - 480 + ТаблицаСадыОстаткиТаблицаСадыОстаткиУчреждениеРасширеннаяПодсказка + 603 Label true true @@ -2487,8 +2464,8 @@ - ТаблицаОстатковВыводТаблицаОстатковВыводИФОКонтекстноеМеню - 479 + ТаблицаСадыОстаткиТаблицаСадыОстаткиУчреждениеКонтекстноеМеню + 602 true InputField @@ -2507,19 +2484,23 @@ - ТаблицаОстатковВыводОрганизация - 481 + ТаблицаСадыОстаткиПоступило + 604 + + <key>ru</key> + <value>Поступило в ЦБ</value> + true true true - ТаблицаОстатков.Организация + ТаблицаОстатковСады.Поступило - ТаблицаОстатковВыводТаблицаОстатковВыводОрганизацияРасширеннаяПодсказка - 483 + ТаблицаСадыОстаткиТаблицаСадыОстаткиПоступилоРасширеннаяПодсказка + 606 Label true true @@ -2528,8 +2509,8 @@ - ТаблицаОстатковВыводТаблицаОстатковВыводОрганизацияКонтекстноеМеню - 482 + ТаблицаСадыОстаткиТаблицаСадыОстаткиПоступилоКонтекстноеМеню + 605 true InputField @@ -2548,19 +2529,23 @@ - ТаблицаОстатковВыводСчет - 484 + ТаблицаСадыОстаткиПередано + 607 + + <key>ru</key> + <value>Передано в сад</value> + true true true - ТаблицаОстатков.Счет + ТаблицаОстатковСады.Передано - ТаблицаОстатковВыводТаблицаОстатковВыводСчетРасширеннаяПодсказка - 486 + ТаблицаСадыОстаткиТаблицаСадыОстаткиПереданоРасширеннаяПодсказка + 609 Label true true @@ -2569,8 +2554,8 @@ - ТаблицаОстатковВыводТаблицаОстатковВыводСчетКонтекстноеМеню - 485 + ТаблицаСадыОстаткиТаблицаСадыОстаткиПереданоКонтекстноеМеню + 608 true InputField @@ -2589,19 +2574,23 @@ - ТаблицаОстатковВыводСуммаНачальныйОстаток - 487 + ТаблицаСадыОстаткиОстаток + 610 + + <key>ru</key> + <value>Остаток у ЦБ</value> + true true true - ТаблицаОстатков.СуммаНачальныйОстаток + ТаблицаОстатковСады.Остаток - ТаблицаОстатковВыводТаблицаОстатковВыводСуммаНачальныйОстатокРасширеннаяПодсказка - 489 + ТаблицаСадыОстаткиТаблицаСадыОстаткиОстатокРасширеннаяПодсказка + 612 Label true true @@ -2610,131 +2599,8 @@ - ТаблицаОстатковВыводТаблицаОстатковВыводСуммаНачальныйОстатокКонтекстноеМеню - 488 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаОстатковВыводСуммаОборотДт - 490 - true - true - - true - - - ТаблицаОстатков.СуммаОборотДт - - - ТаблицаОстатковВыводТаблицаОстатковВыводСуммаОборотДтРасширеннаяПодсказка - 492 - Label - true - true - - Left - - - - ТаблицаОстатковВыводТаблицаОстатковВыводСуммаОборотДтКонтекстноеМеню - 491 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаОстатковВыводСуммаОборотКт - 493 - true - true - - true - - - ТаблицаОстатков.СуммаОборотКт - - - ТаблицаОстатковВыводТаблицаОстатковВыводСуммаОборотКтРасширеннаяПодсказка - 495 - Label - true - true - - Left - - - - ТаблицаОстатковВыводТаблицаОстатковВыводСуммаОборотКтКонтекстноеМеню - 494 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаОстатковВыводСуммаКонечныйОстаток - 496 - true - true - - true - - - ТаблицаОстатков.СуммаКонечныйОстаток - - - ТаблицаОстатковВыводТаблицаОстатковВыводСуммаКонечныйОстатокРасширеннаяПодсказка - 498 - Label - true - true - - Left - - - - ТаблицаОстатковВыводТаблицаОстатковВыводСуммаКонечныйОстатокКонтекстноеМеню - 497 + ТаблицаСадыОстаткиТаблицаСадыОстаткиОстатокКонтекстноеМеню + 611 true InputField @@ -2753,17 +2619,21 @@ - ТаблицаОстатковВыводКоманднаяПанель - 28 + ТаблицаСадыОстаткиКоманднаяПанель + 543 Left true + + OnActivateRow + ТаблицаСадыОстаткиПриАктивизацииСтроки + - ТаблицаОстатковВыводСтрокаПоиска - 31 + ТаблицаСадыОстаткиСтрокаПоиска + 546 - ТаблицаОстатковВыводСтрокаПоискаРасширеннаяПодсказка - 33 + ТаблицаСадыОстаткиСтрокаПоискаРасширеннаяПодсказка + 548 Label true true @@ -2772,21 +2642,21 @@ - ТаблицаОстатковВыводСтрокаПоискаКонтекстноеМеню - 32 + ТаблицаСадыОстаткиСтрокаПоискаКонтекстноеМеню + 547 true - ТаблицаОстатковВывод + ТаблицаСадыОстатки true - ТаблицаОстатковВыводСостояниеПросмотра - 37 + ТаблицаСадыОстаткиСостояниеПросмотра + 552 - ТаблицаОстатковВыводСостояниеПросмотраРасширеннаяПодсказка - 39 + ТаблицаСадыОстаткиСостояниеПросмотраРасширеннаяПодсказка + 554 Label true true @@ -2795,22 +2665,22 @@ - ТаблицаОстатковВыводСостояниеПросмотраКонтекстноеМеню - 38 + ТаблицаСадыОстаткиСостояниеПросмотраКонтекстноеМеню + 553 true ViewStatusAddition - ТаблицаОстатковВывод + ТаблицаСадыОстатки true - ТаблицаОстатковВыводУправлениеПоиском - 34 + ТаблицаСадыОстаткиУправлениеПоиском + 549 - ТаблицаОстатковВыводУправлениеПоискомРасширеннаяПодсказка - 36 + ТаблицаСадыОстаткиУправлениеПоискомРасширеннаяПодсказка + 551 Label true true @@ -2819,19 +2689,19 @@ - ТаблицаОстатковВыводУправлениеПоискомКонтекстноеМеню - 35 + ТаблицаСадыОстаткиУправлениеПоискомКонтекстноеМеню + 550 true SearchControlAddition - ТаблицаОстатковВывод + ТаблицаСадыОстатки true - ТаблицаОстатковВыводРасширеннаяПодсказка - 30 + ТаблицаСадыОстаткиРасширеннаяПодсказка + 545 Label true true @@ -2840,8 +2710,458 @@ - ТаблицаОстатковВыводКонтекстноеМеню - 29 + ТаблицаСадыОстаткиКонтекстноеМеню + 544 + 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 +
+ + ТаблицаДетиОстатки + 567 + + <key>ru</key> + <value>Остатки по детям</value> + + true + true + + true + + + ТаблицаОстатковДети + + None + + ТаблицаДетиОстаткиУчреждение + 613 + + <key>ru</key> + <value>Учреждение (сад)</value> + + true + true + + true + + + ТаблицаОстатковДети.Учреждение + + + ТаблицаДетиОстаткиТаблицаДетиОстаткиУчреждениеРасширеннаяПодсказка + 615 + Label + true + true + + Left + + + + ТаблицаДетиОстаткиТаблицаДетиОстаткиУчреждениеКонтекстноеМеню + 614 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаДетиОстаткиИФО + 616 + + <key>ru</key> + <value>ИФО</value> + + true + true + + true + + + ТаблицаОстатковДети.ИФО + + + ТаблицаДетиОстаткиТаблицаДетиОстаткиИФОРасширеннаяПодсказка + 618 + Label + true + true + + Left + + + + ТаблицаДетиОстаткиТаблицаДетиОстаткиИФОКонтекстноеМеню + 617 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаДетиОстаткиРебенок + 619 + + <key>ru</key> + <value>Ребёнок</value> + + true + true + + true + + + ТаблицаОстатковДети.Ребенок + + + ТаблицаДетиОстаткиТаблицаДетиОстаткиРебенокРасширеннаяПодсказка + 621 + Label + true + true + + Left + + + + ТаблицаДетиОстаткиТаблицаДетиОстаткиРебенокКонтекстноеМеню + 620 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаДетиОстаткиДоговор + 622 + + <key>ru</key> + <value>Договор</value> + + true + true + + true + + + ТаблицаОстатковДети.Договор + + + ТаблицаДетиОстаткиТаблицаДетиОстаткиДоговорРасширеннаяПодсказка + 624 + Label + true + true + + Left + + + + ТаблицаДетиОстаткиТаблицаДетиОстаткиДоговорКонтекстноеМеню + 623 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаДетиОстаткиПоступило + 625 + + <key>ru</key> + <value>Поступило в ЦБ</value> + + true + true + + true + + + ТаблицаОстатковДети.Поступило + + + ТаблицаДетиОстаткиТаблицаДетиОстаткиПоступилоРасширеннаяПодсказка + 627 + Label + true + true + + Left + + + + ТаблицаДетиОстаткиТаблицаДетиОстаткиПоступилоКонтекстноеМеню + 626 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаДетиОстаткиПередано + 628 + + <key>ru</key> + <value>Передано в сад</value> + + true + true + + true + + + ТаблицаОстатковДети.Передано + + + ТаблицаДетиОстаткиТаблицаДетиОстаткиПереданоРасширеннаяПодсказка + 630 + Label + true + true + + Left + + + + ТаблицаДетиОстаткиТаблицаДетиОстаткиПереданоКонтекстноеМеню + 629 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаДетиОстаткиОстаток + 631 + + <key>ru</key> + <value>Остаток у ЦБ</value> + + true + true + + true + + + ТаблицаОстатковДети.Остаток + + + ТаблицаДетиОстаткиТаблицаДетиОстаткиОстатокРасширеннаяПодсказка + 633 + Label + true + true + + Left + + + + ТаблицаДетиОстаткиТаблицаДетиОстаткиОстатокКонтекстноеМеню + 632 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаДетиОстаткиКоманднаяПанель + 568 + Left + true + + + ТаблицаДетиОстаткиСтрокаПоиска + 571 + + ТаблицаДетиОстаткиСтрокаПоискаРасширеннаяПодсказка + 573 + Label + true + true + + Left + + + + ТаблицаДетиОстаткиСтрокаПоискаКонтекстноеМеню + 572 + true + + ТаблицаДетиОстатки + + true + + + + ТаблицаДетиОстаткиСостояниеПросмотра + 577 + + ТаблицаДетиОстаткиСостояниеПросмотраРасширеннаяПодсказка + 579 + Label + true + true + + Left + + + + ТаблицаДетиОстаткиСостояниеПросмотраКонтекстноеМеню + 578 + true + + ViewStatusAddition + ТаблицаДетиОстатки + + true + + + + ТаблицаДетиОстаткиУправлениеПоиском + 574 + + ТаблицаДетиОстаткиУправлениеПоискомРасширеннаяПодсказка + 576 + Label + true + true + + Left + + + + ТаблицаДетиОстаткиУправлениеПоискомКонтекстноеМеню + 575 + true + + SearchControlAddition + ТаблицаДетиОстатки + + true + + + + ТаблицаДетиОстаткиРасширеннаяПодсказка + 570 + Label + true + true + + Left + + + + ТаблицаДетиОстаткиКонтекстноеМеню + 569 true true @@ -3456,161 +3776,6 @@
true
- - ТаблицаОстатков - - <key>ru</key> - <value>Остатки и обороты по счетам</value> - - 4 - - ValueTable - - - true - - - true - - - ИФО - - <key>ru</key> - <value>ИФО</value> - - 5 - - CatalogRef.ИсточникиФинансовогоОбеспечения - - - true - - - true - - - - Организация - - <key>ru</key> - <value>Организация</value> - - 6 - - CatalogRef.Организации - - - true - - - true - - - - СуммаНачальныйОстаток - - <key>ru</key> - <value>Начальный остаток</value> - - 7 - - Number - - 15 - 2 - - - - true - - - true - - - - СуммаОборотДт - - <key>ru</key> - <value>Оборот Дт</value> - - 8 - - Number - - 15 - 2 - - - - true - - - true - - - - СуммаОборотКт - - <key>ru</key> - <value>Оборот Кт</value> - - 9 - - Number - - 15 - 2 - - - - true - - - true - - - - СуммаКонечныйОстаток - - <key>ru</key> - <value>Конечный остаток</value> - - 10 - - Number - - 15 - 2 - - - - true - - - true - - - - Счет - - <key>ru</key> - <value>Счет</value> - - 11 - - String - - 20 - - - - true - - - true - - - ДокументыПередачи @@ -4574,6 +4739,251 @@ </edit> </columns> </attributes> + <attributes> + <name>ТаблицаОстатковСады</name> + <title> + <key>ru</key> + <value>ТаблицаОстатковСады</value> + + 69 + + ValueTable + + + true + + + true + + + Учреждение + + <key>ru</key> + <value>Учреждение</value> + + 70 + + CatalogRef.Организации + + + true + + + true + + + + Поступило + + <key>ru</key> + <value>Поступило в ЦБ</value> + + 71 + + Number + + 15 + 2 + + + + true + + + true + + + + Передано + + <key>ru</key> + <value>Передано в сад</value> + + 72 + + Number + + 15 + 2 + + + + true + + + true + + + + Остаток + + <key>ru</key> + <value>Остаток у ЦБ</value> + + 73 + + Number + + 15 + 2 + + + + true + + + true + + + + + ТаблицаОстатковДети + + <key>ru</key> + <value>ТаблицаОстатковДети</value> + + 74 + + ValueTable + + + true + + + true + + + Учреждение + + <key>ru</key> + <value>Учреждение</value> + + 75 + + CatalogRef.Организации + + + true + + + true + + + + ИФО + + <key>ru</key> + <value>ИФО</value> + + 76 + + CatalogRef.ИсточникиФинансовогоОбеспечения + + + true + + + true + + + + Ребенок + + <key>ru</key> + <value>Ребенок</value> + + 77 + + CatalogRef.Дети + + + true + + + true + + + + Договор + + <key>ru</key> + <value>Договор</value> + + 78 + + CatalogRef.Договоры + + + true + + + true + + + + Поступило + + <key>ru</key> + <value>Поступило в ЦБ</value> + + 79 + + Number + + 15 + 2 + + + + true + + + true + + + + Передано + + <key>ru</key> + <value>Передано в сад</value> + + 80 + + Number + + 15 + 2 + + + + true + + + true + + + + Остаток + + <key>ru</key> + <value>Остаток у ЦБ</value> + + 81 + + Number + + 15 + 2 + + + + true + + + true + + + Обновить @@ -4606,22 +5016,6 @@ </handler> </action> </formCommands> - <formCommands> - <name>ИнициализироватьИдентификаторыЭДО</name> - <title> - <key>ru</key> - <value>Инициализировать идентификаторы ЭДО</value> - - 4 - - true - - - - ИнициализироватьИдентификаторыЭДО - - - diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl index 376c813..12738e6 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl @@ -42,6 +42,26 @@ #КонецОбласти +#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаСадыОстатки + +// Показывает остатки по детям выбранного сада. +// Строка сада берётся из таблицы «Остатки по садам»; при пустой строке детализация +// остаётся по всем садам из отбора формы. +// +&НаКлиенте +Процедура ТаблицаСадыОстаткиПриАктивизацииСтроки(Элемент) + + ТекущиеДанные = Элемент.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ЗаполнитьОстаткиПоДетям(ТекущиеДанные.Учреждение); + +КонецПроцедуры + +#КонецОбласти + #Область ОбработчикиКомандФормы // Обновляет данные таблиц формы по установленным фильтрам. @@ -85,18 +105,6 @@ КонецПроцедуры -// Обеспечивает наличие идентификаторов объектов метаданных по документам внутреннего ЭДО. -// -// Команда нужна для разовой проверки механизма внутреннего ЭДО БГУ: без идентификаторов -// документы расширения не попадают в настройки внутреннего ЭДО (см. ПС_ИдентификаторыОбъектовЭДО). -// -&НаКлиенте -Процедура ИнициализироватьИдентификаторыЭДО(Команда) - - ИнициализироватьИдентификаторыЭДОНаСервере(); - -КонецПроцедуры - #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -118,33 +126,12 @@ ЗаполнитьДокументыПередачи(Отборы.ЦБОрганизация, Отборы.СадОрганизация); ЗаполнитьДокументыПринятия(Отборы.ЦБОрганизация, Отборы.СадОрганизация); ЗаполнитьСверку(Отборы.ЦБОрганизация, Отборы.СадОрганизация); - ЗаполнитьТаблицуОстатков(); + ЗаполнитьОстаткиПоСадам(); + ЗаполнитьОстаткиПоДетям(Неопределено); ЗаполнитьКассовыеПоступления(); КонецПроцедуры -// Обеспечивает наличие идентификаторов объектов метаданных по документам внутреннего ЭДО -// и выводит пользователю результат проверки. -// -&НаСервере -Процедура ИнициализироватьИдентификаторыЭДОНаСервере() - - ОбъектОбработки = РеквизитФормыВЗначение("Объект"); - Идентификаторы = ОбъектОбработки.ПС_ИнициализироватьИдентификаторыОбъектовЭДО(); - - ТекстыИдентификаторов = Новый Массив; - - Для Каждого КлючИЗначение Из Идентификаторы Цикл - ТекстыИдентификаторов.Добавить(КлючИЗначение.Ключ + " -> " + Строка(КлючИЗначение.Значение)); - КонецЦикла; - - Сообщение = Новый СообщениеПользователю; - Сообщение.Текст = "Идентификаторы объектов метаданных внутреннего ЭДО: " - + СтрСоединить(ТекстыИдентификаторов, "; "); - Сообщение.Сообщить(); - -КонецПроцедуры - // Возвращает отборы формы в терминах, в которых они хранятся в документах. // // ЦБ и учреждение (сад) хранятся в документах передачи и принятия организациями, @@ -174,7 +161,8 @@ ДокументыПередачи.Очистить(); ДокументыПринятия.Очистить(); Сверка.Очистить(); - ТаблицаОстатков.Очистить(); + ТаблицаОстатковСады.Очистить(); + ТаблицаОстатковДети.Очистить(); КассовыеПоступления.Очистить(); КонецПроцедуры @@ -426,89 +414,135 @@ КонецПроцедуры -// Заполняет таблицу остатков и оборотов по счетам 205.31 и 304.04. -// Использует виртуальную таблицу ОстаткиИОбороты регистра бухгалтерии. +// Заполняет таблицу остатков по садам: поступило в ЦБ, передано в сад и остаток у ЦБ. +// +// Источник данных - регистр накопления взаиморасчётов по родительской плате: приход +// формирует кассовое поступление, расход - документ передачи платежей в учреждение. +// Остаток показывает, сколько поступило в ЦБ и ещё не передано в сад. // &НаСервере -Процедура ЗаполнитьТаблицуОстатков() +Процедура ЗаполнитьОстаткиПоСадам() - ТаблицаОстатков.Очистить(); - - Если ЗначениеЗаполнено(Объект.Учреждение) Тогда - ОбщегоНазначения.СообщитьПользователю( - "Остатки и обороты по счетам ведутся без разреза по учреждению," - + " поэтому отбор по учреждению на эту страницу не влияет."); - КонецЕсли; - - НачалоПериода = Объект.Период.ДатаНачала; - КонецПериода = Объект.Период.ДатаОкончания; + ТаблицаОстатковСады.Очистить(); Запрос = Новый Запрос; + УсловиеОтбора = УсловиеОтбораОстатков(Запрос); + Запрос.Текст = "ВЫБРАТЬ - | ""205.31"" КАК Счет, - | ОстаткиИОбороты.ИФО КАК ИФО, - | СУММА(ОстаткиИОбороты.СуммаНачальныйОстаток) КАК СуммаНачальныйОстаток, - | СУММА(ОстаткиИОбороты.СуммаОборотДт) КАК СуммаОборотДт, - | СУММА(ОстаткиИОбороты.СуммаОборотКт) КАК СуммаОборотКт, - | СУММА(ОстаткиИОбороты.СуммаКонечныйОстаток) КАК СуммаКонечныйОстаток + | Остатки.Учреждение КАК Учреждение, + | СУММА(Остатки.СуммаПриход) КАК Поступило, + | СУММА(Остатки.СуммаРасход) КАК Передано, + | СУММА(Остатки.СуммаКонечныйОстаток) КАК Остаток |ИЗ - | РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ОстаткиИОбороты( - | &НачалоПериода, - | &КонецПериода, - | Авто, - | , - | Счет В ИЕРАРХИИ (&Счет205)) КАК ОстаткиИОбороты - |ГДЕ - | (&ИФО = НЕОПРЕДЕЛЕНО - | ИЛИ ОстаткиИОбороты.ИФО = &ИФО) + | РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.ОстаткиИОбороты( + | &НачалоПериода, &КонецПериода, Авто, , " + УсловиеОтбора + ") КАК Остатки |СГРУППИРОВАТЬ ПО - | ОстаткиИОбороты.ИФО - | - |ОБЪЕДИНИТЬ ВСЕ - | - |ВЫБРАТЬ - | ""304.04"", - | ОстаткиИОбороты.ИФО, - | СУММА(ОстаткиИОбороты.СуммаНачальныйОстаток), - | СУММА(ОстаткиИОбороты.СуммаОборотДт), - | СУММА(ОстаткиИОбороты.СуммаОборотКт), - | СУММА(ОстаткиИОбороты.СуммаКонечныйОстаток) - |ИЗ - | РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ОстаткиИОбороты( - | &НачалоПериода, - | &КонецПериода, - | Авто, - | , - | Счет В ИЕРАРХИИ (&Счет304)) КАК ОстаткиИОбороты - |ГДЕ - | (&ИФО = НЕОПРЕДЕЛЕНО - | ИЛИ ОстаткиИОбороты.ИФО = &ИФО) - |СГРУППИРОВАТЬ ПО - | ОстаткиИОбороты.ИФО"; + | Остатки.Учреждение + |УПОРЯДОЧИТЬ ПО + | Остатки.Учреждение"; - Счет205 = ПланыСчетов.ЕПСБУ.НайтиПоКоду("205.31"); - Счет304 = ПланыСчетов.ЕПСБУ.НайтиПоКоду("304.04"); - Если Счет205 = Неопределено ИЛИ Счет304 = Неопределено Тогда - ОбщегоНазначения.СообщитьПользователю( - "Остатки и обороты не рассчитаны: в плане счетов ЕПСБУ не найден счет" - + " 205.31 и/или 304.04."); - Возврат; - КонецЕсли; - - Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода); - Запрос.УстановитьПараметр("КонецПериода", КонецПериода); - Запрос.УстановитьПараметр("Счет205", Счет205); - Запрос.УстановитьПараметр("Счет304", Счет304); - Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено)); + Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала); + Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл - ЗаполнитьЗначенияСвойств(ТаблицаОстатков.Добавить(), Выборка); + Если Выборка.Поступило = 0 И Выборка.Передано = 0 И Выборка.Остаток = 0 Тогда + Продолжить; + КонецЕсли; + ЗаполнитьЗначенияСвойств(ТаблицаОстатковСады.Добавить(), Выборка); КонецЦикла; КонецПроцедуры +// Заполняет таблицу остатков по детям: поступило в ЦБ, передано в сад и остаток у ЦБ +// по каждому ребёнку и договору. +// +// Параметры: +// Учреждение - CatalogRef.Организации - сад, выбранный в таблице остатков по садам; +// Неопределено - детализация строится по всем садам из отбора формы. +// +&НаСервере +Процедура ЗаполнитьОстаткиПоДетям(Учреждение) + + ТаблицаОстатковДети.Очистить(); + + Запрос = Новый Запрос; + УсловиеОтбора = УсловиеОтбораОстатков(Запрос, Учреждение); + + Запрос.Текст = + "ВЫБРАТЬ + | Остатки.Учреждение КАК Учреждение, + | Остатки.ИФО КАК ИФО, + | Остатки.Ребенок КАК Ребенок, + | Остатки.Договор КАК Договор, + | СУММА(Остатки.СуммаПриход) КАК Поступило, + | СУММА(Остатки.СуммаРасход) КАК Передано, + | СУММА(Остатки.СуммаКонечныйОстаток) КАК Остаток + |ИЗ + | РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.ОстаткиИОбороты( + | &НачалоПериода, &КонецПериода, Авто, , " + УсловиеОтбора + ") КАК Остатки + |СГРУППИРОВАТЬ ПО + | Остатки.Учреждение, + | Остатки.ИФО, + | Остатки.Ребенок, + | Остатки.Договор + |УПОРЯДОЧИТЬ ПО + | Учреждение, + | Ребенок"; + + Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала); + Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания); + + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + Если Выборка.Поступило = 0 И Выборка.Передано = 0 И Выборка.Остаток = 0 Тогда + Продолжить; + КонецЕсли; + ЗаполнитьЗначенияСвойств(ТаблицаОстатковДети.Добавить(), Выборка); + КонецЦикла; + +КонецПроцедуры + +// Возвращает условие отбора для виртуальной таблицы остатков регистра взаиморасчётов +// и устанавливает соответствующие параметры запроса. +// +// Параметры: +// Запрос - Запрос - запрос, в который добавляются параметры отбора; +// Учреждение - CatalogRef.Организации - сад, по которому строится детализация; +// Неопределено - используется отбор по учреждению из формы. +// +// Возвращаемое значение: +// Строка - условие отбора в терминах полей регистра; "ИСТИНА", если отборов нет. +// +&НаСервере +Функция УсловиеОтбораОстатков(Запрос, Учреждение = Неопределено) + + Условия = Новый Массив; + + Если ЗначениеЗаполнено(Объект.Организация) Тогда + Запрос.УстановитьПараметр("ОрганизацияОтбор", Объект.Организация); + Условия.Добавить("Организация = &ОрганизацияОтбор"); + КонецЕсли; + + Если ЗначениеЗаполнено(Объект.ИФО) Тогда + Запрос.УстановитьПараметр("ИФООтбор", Объект.ИФО); + Условия.Добавить("ИФО = &ИФООтбор"); + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(Учреждение) Тогда + Учреждение = Объект.Учреждение; + КонецЕсли; + + Если ЗначениеЗаполнено(Учреждение) Тогда + Запрос.УстановитьПараметр("УчреждениеОтбор", Учреждение); + Условия.Добавить("Учреждение = &УчреждениеОтбор"); + КонецЕсли; + + Возврат ?(Условия.Количество() = 0, "ИСТИНА", СтрСоединить(Условия, " И ")); + +КонецФункции + // Заполняет таблицу формы КассовыеПоступления: документы с признаком "Родительская плата" за период // по установленным отборам. // Колонка "Строк не распознано" показывает строки расшифровки платежа, в которых не определён ребёнок, - diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/ObjectModule.bsl index 308d8d8..1ade038 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/ObjectModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/ObjectModule.bsl @@ -1,24 +1,2 @@ // Обработка ПС_УправлениеРасчетамиПоРодительскойПлате. // Логика дашборда реализована в модуле управляемой формы (Forms/Форма/Module.bsl). - -#Область ПрограммныйИнтерфейс - -#Если Сервер Или ВнешнееСоединение Или ТолстыйКлиентОбычноеПриложение Тогда - -// Обеспечивает наличие в справочнике идентификаторов объектов метаданных записей -// по документам внутреннего ЭДО, созданным в расширении конфигурации. -// -// Возвращаемое значение: -// Соответствие из КлючИЗначение - идентификаторы объектов метаданных по их полным именам: -// * Ключ - Строка - полное имя объекта метаданных, например "Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ"; -// * Значение - СправочникСсылка.ИдентификаторыОбъектовМетаданных - идентификатор объекта метаданных. -// -Функция ПС_ИнициализироватьИдентификаторыОбъектовЭДО() Экспорт - - Возврат ПС_ИдентификаторыОбъектовЭДО.ПС_ОбеспечитьИдентификаторыДокументовЭДО(); - -КонецФункции - -#КонецЕсли - -#КонецОбласти \ No newline at end of file From 1e24ec1b16189968c55403b74f119fab68b7fc17 Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Thu, 29 Oct 2026 11:45:47 +0500 Subject: [PATCH 10/19] =?UTF-8?q?feat(=D0=B8=D0=B7=D0=B2=D0=B5=D1=89=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F):=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B8=D0=B7?= =?UTF-8?q?=D0=B2=D0=B5=D1=89=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=BE=D0=B2,?= =?UTF-8?q?=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F=201.0.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl | 64 +++++++++++++++++-- .../src/Configuration/Configuration.mdo | 2 +- .../ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl | 4 ++ .../ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl | 4 ++ 4 files changed, 69 insertions(+), 5 deletions(-) diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl index cbef21b..52c1fac 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl @@ -242,12 +242,19 @@ "Организация, Учреждение, ИФО, Период, Ответственный, ИзвещениеИсходящее"); ИзвещениеОбъект = Неопределено; + ЭтоНовоеИзвещение = Истина; Если ЗначениеЗаполнено(Реквизиты.ИзвещениеИсходящее) Тогда ИзвещениеОбъект = Реквизиты.ИзвещениеИсходящее.ПолучитьОбъект(); + ЭтоНовоеИзвещение = ИзвещениеОбъект = Неопределено; КонецЕсли; - Если ИзвещениеОбъект = Неопределено Тогда + Если ЭтоНовоеИзвещение Тогда ИзвещениеОбъект = Документы.ИзвещениеИсходящее.СоздатьДокумент(); + ИначеЕсли ИзвещениеОбъект.ПомеченНаУдаление Тогда + ОбщегоНазначения.СообщитьПользователю( + "Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " помечено на удаление: изменения в него не вносятся." + + " Снимите пометку удаления или отвяжите извещение от документа передачи."); + Возврат Документы.ИзвещениеИсходящее.ПустаяСсылка(); ИначеЕсли ИзвещениеОбъект.Проведен Тогда ОбщегоНазначения.СообщитьПользователю( "Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " проведено: изменения в него не вносятся." @@ -255,7 +262,9 @@ Возврат Документы.ИзвещениеИсходящее.ПустаяСсылка(); КонецЕсли; - ИзвещениеОбъект.Дата = ТекущаяДатаСеанса(); + Если ЭтоНовоеИзвещение Тогда + ИзвещениеОбъект.Дата = ТекущаяДатаСеанса(); + КонецЕсли; ИзвещениеОбъект.Организация = Реквизиты.Организация; ИзвещениеОбъект.Получатель = КонтрагентПоОрганизации(Реквизиты.Учреждение); ИзвещениеОбъект.ВидИзвещения = Перечисления.ВидыОперацийИсходящееИзвещение.ПолучениеДохода; @@ -292,12 +301,19 @@ "Организация, ЦБ, ИФО, Период, Ответственный, ИзвещениеВходящее, ДокументПередачи"); ИзвещениеОбъект = Неопределено; + ЭтоНовоеИзвещение = Истина; Если ЗначениеЗаполнено(Реквизиты.ИзвещениеВходящее) Тогда ИзвещениеОбъект = Реквизиты.ИзвещениеВходящее.ПолучитьОбъект(); + ЭтоНовоеИзвещение = ИзвещениеОбъект = Неопределено; КонецЕсли; - Если ИзвещениеОбъект = Неопределено Тогда + Если ЭтоНовоеИзвещение Тогда ИзвещениеОбъект = Документы.ИзвещениеВходящее.СоздатьДокумент(); + ИначеЕсли ИзвещениеОбъект.ПомеченНаУдаление Тогда + ОбщегоНазначения.СообщитьПользователю( + "Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " помечено на удаление: изменения в него не вносятся." + + " Снимите пометку удаления или отвяжите извещение от документа принятия."); + Возврат Документы.ИзвещениеВходящее.ПустаяСсылка(); ИначеЕсли ИзвещениеОбъект.Проведен Тогда ОбщегоНазначения.СообщитьПользователю( "Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " проведено: изменения в него не вносятся." @@ -305,7 +321,9 @@ Возврат Документы.ИзвещениеВходящее.ПустаяСсылка(); КонецЕсли; - ИзвещениеОбъект.Дата = ТекущаяДатаСеанса(); + Если ЭтоНовоеИзвещение Тогда + ИзвещениеОбъект.Дата = ТекущаяДатаСеанса(); + КонецЕсли; ИзвещениеОбъект.Организация = Реквизиты.Организация; ИзвещениеОбъект.Отправитель = КонтрагентПоОрганизации(Реквизиты.ЦБ); ИзвещениеОбъект.ВидИзвещения = Перечисления.ВидыОперацийВходящееИзвещение.ПолучениеДохода; @@ -329,6 +347,44 @@ КонецФункции +// Синхронизирует связанное извещение с изменившимся документом подсистемы. +// +// Вызывается из обработчика записи документов передачи и принятия платежей: извещение +// перезаполняется по актуальным строкам реестра, чтобы его печатная форма не разошлась +// с учётным документом. Проведённое извещение и извещение, помеченное на удаление, +// не изменяются - такие документы пользователь приводит в порядок сам. +// +// Параметры: +// ДокументОбъект - ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения, +// ДокументОбъект.ПС_ПринятиеПоступившихПлатежейИзЦБ - записываемый документ. +// +Процедура ОбновитьИзвещениеПриИзмененииДокумента(ДокументОбъект) Экспорт + + Если ДокументОбъект.ЭтоНовый() Тогда + Возврат; + КонецЕсли; + + ЭтоПередача = ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения"); + + Извещение = ?(ЭтоПередача, ДокументОбъект.ИзвещениеИсходящее, ДокументОбъект.ИзвещениеВходящее); + Если НЕ ЗначениеЗаполнено(Извещение) Тогда + Возврат; + КонецЕсли; + + СостояниеИзвещения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Извещение, + "Проведен, ПометкаУдаления"); + Если СостояниеИзвещения.Проведен ИЛИ СостояниеИзвещения.ПометкаУдаления Тогда + Возврат; + КонецЕсли; + + Если ЭтоПередача Тогда + СоздатьИзвещениеПоПередаче(ДокументОбъект.Ссылка); + Иначе + СоздатьИзвещениеПоПринятию(ДокументОбъект.Ссылка); + КонецЕсли; + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo index e843894..c3633b0 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo @@ -28,7 +28,7 @@ PersonalComputer Russian Role.ПС_ОсновнаяРоль - 1.0.0 + 1.0.1 Language.Русский TaxiEnableVersion8_2 diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl index 6974651..94f4a9b 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ObjectModule.bsl @@ -67,6 +67,10 @@ // расходящиеся электронные документы аннулируются. ПС_ВнутреннийЭДОИзвещений.ПС_АннулироватьЭлектронныеДокументыПриИзменении(ЭтотОбъект, Отказ); + // Связанное извещение перезаполняется по актуальным строкам реестра, + // чтобы его печатная форма не разошлась с документом. + ПС_УчетРодительскойПлаты.ОбновитьИзвещениеПриИзмененииДокумента(ЭтотОбъект); + КонецПроцедуры Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl index 8a9673c..220905e 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ObjectModule.bsl @@ -133,6 +133,10 @@ // расходящиеся электронные документы аннулируются. ПС_ВнутреннийЭДОИзвещений.ПС_АннулироватьЭлектронныеДокументыПриИзменении(ЭтотОбъект, Отказ); + // Связанное извещение перезаполняется по актуальным строкам реестра, + // чтобы его печатная форма не разошлась с документом. + ПС_УчетРодительскойПлаты.ОбновитьИзвещениеПриИзмененииДокумента(ЭтотОбъект); + КонецПроцедуры Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) From 41f3cb41840cb1449998581f43922dda33ccd9f4 Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Thu, 29 Oct 2026 13:27:22 +0500 Subject: [PATCH 11/19] =?UTF-8?q?feat(=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D1=8C?= =?UTF-8?q?,=D1=80=D0=BE=D0=BB=D0=B8):=20=D0=BE=D0=B1=D1=89=D0=B8=D0=B9=20?= =?UTF-8?q?=D0=BC=D0=B0=D0=BA=D0=B5=D1=82=20=D1=80=D0=B5=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=B0,=20=D0=9A=D0=A4=D0=9E=20=D0=B8=D0=B7=20=D0=BB?= =?UTF-8?q?=D0=B8=D1=86=D0=B5=D0=B2=D0=BE=D0=B3=D0=BE=20=D1=81=D1=87=D1=91?= =?UTF-8?q?=D1=82=D0=B0,=20=D1=80=D0=BE=D0=BB=D0=B8=20=D1=87=D1=82=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=B8=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B8,=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F=201.0.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ПС_РазборПлатежейПоРодительскойПлате/Module.bsl | 119 +++++++++++++++- .../src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl | 5 +- .../CommonTemplates/ПС_РеестрПлатежей/ПС_РеестрПлатежей.mdo | 8 ++ .../src/Configuration/Configuration.mdo | 5 +- .../Templates/РеестрПлатежей/Template.mxlx | 25 +++- .../ПС_ПередачаПоступившихПлатежейВУчреждения.mdo | 2 +- .../Templates/РеестрПлатежей/Template.mxlx | 25 +++- .../src/Roles/ПС_ЗаписьРодительскойПлаты/Rights.rights | 132 ++++++++++++++++++ .../ПС_ЗаписьРодительскойПлаты/ПС_ЗаписьРодительскойПлаты.mdo | 8 ++ .../src/Roles/ПС_ЧтениеРодительскойПлаты/Rights.rights | 68 +++++++++ .../ПС_ЧтениеРодительскойПлаты/ПС_ЧтениеРодительскойПлаты.mdo | 8 ++ 11 files changed, 387 insertions(+), 18 deletions(-) create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonTemplates/ПС_РеестрПлатежей/ПС_РеестрПлатежей.mdo create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЗаписьРодительскойПлаты/Rights.rights create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЗаписьРодительскойПлаты/ПС_ЗаписьРодительскойПлаты.mdo create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЧтениеРодительскойПлаты/Rights.rights create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЧтениеРодительскойПлаты/ПС_ЧтениеРодительскойПлаты.mdo diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl index 24733d7..536a9df 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl @@ -79,6 +79,7 @@ СтрокаКЗаполнению.СтрокаПлатежа = СтрокаПлатежа; СтрокаКЗаполнению.Ребенок = Ребенок.Ссылка; СтрокаКЗаполнению.Контрагент = Ребенок.Контрагент; + СтрокаКЗаполнению.Вставить("ЛицевойСчет", ДанныеПлатежа.ЛицевойСчет); СтрокиКЗаполнению.Добавить(СтрокаКЗаполнению); Контрагенты.Вставить(Ребенок.Контрагент, Истина); @@ -108,8 +109,13 @@ // Договоры определяются одним запросом сразу по всем контрагентам документа. Договоры = ДоговорыПоКонтрагентам(Контрагенты, ДокументОбъект, СчетРасчетов); + // КФО строк берётся из настройки лицевого счёта: раздел счёта -> допустимые КФО. + // Используется типовой механизм, поэтому выбор совпадает с поведением типовых форм: + // подставляется первое допустимое значение (наименьший порядок перечисления КВД). + КФОПоСчетам = КФОПоЛицевымСчетам(СтрокиКЗаполнению); + Результат.Заполнено = Результат.Заполнено + ЗаполнитьСтрокиРасшифровки( - СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа); + СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа, КФОПоСчетам); Возврат Результат; @@ -375,11 +381,14 @@ // договоры, определённые по контрагентам однозначно. // СчетРасчетов - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы. // КОСГУНазначениеПлатежа - СправочникСсылка.КОСГУ - КОСГУ назначения платежа. +// КФОПоСчетам - Соответствие из Строка, ПеречислениеСсылка.КВД - КФО по номерам +// лицевых счетов, см. КФОПоЛицевымСчетам. // // Возвращаемое значение: // Число - количество заполненных строк расшифровки платежа. // -Функция ЗаполнитьСтрокиРасшифровки(СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа) +Функция ЗаполнитьСтрокиРасшифровки(СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа, + КФОПоСчетам = Неопределено) // Типовая загрузка реестров прописывает в КОСГУ назначения платежа код "000" - // для родительской платы его нужно заменить принудительно. @@ -411,6 +420,10 @@ СтрокаРасшифровки.КОСГУНазначениеПлатежа = КОСГУНазначениеПлатежа; КонецЕсли; + Если НЕ ЗначениеЗаполнено(СтрокаРасшифровки.КФО) И КФОПоСчетам <> Неопределено Тогда + СтрокаРасшифровки.КФО = КФОСтрокиПоЛицевомуСчету(КФОПоСчетам, СтрокаКЗаполнению.ЛицевойСчет); + КонецЕсли; + Заполнено = Заполнено + 1; КонецЦикла; @@ -419,6 +432,108 @@ КонецФункции +// Определяет КФО для лицевых счетов строк документа. +// +// КФО задаётся на разделе лицевого счёта (табличная часть "Допустимые КФО"). Список допустимых +// значений получаем типовой функцией, она же упорядочивает их по порядку перечисления КВД. +// Как и в типовых формах, берётся первое допустимое значение: если у счёта разрешено несколько +// КФО, подставляется значение с наименьшим порядком, остальные бухгалтер может выбрать вручную. +// +// Параметры: +// СтрокиКЗаполнению - Массив из Структура - строки, по которым определён ребёнок и контрагент. +// +// Возвращаемое значение: +// Соответствие из Строка, ПеречислениеСсылка.КВД - КФО по номерам лицевых счетов, +// по которым допустимый КФО определён. +// +Функция КФОПоЛицевымСчетам(СтрокиКЗаполнению) + + Результат = Новый Соответствие; + + Коды = Новый Массив; + Для Каждого СтрокаКЗаполнению Из СтрокиКЗаполнению Цикл + Для Каждого Код Из КодыПоискаРебенка(СтрокаКЗаполнению.ЛицевойСчет) Цикл + Коды.Добавить(Код); + КонецЦикла; + КонецЦикла; + + Если Коды.Количество() = 0 Тогда + Возврат Результат; + КонецЕсли; + + Для Каждого ЛицевойСчет Из ЛицевыеСчетаПоКодам(Коды) Цикл + + ДопустимыеКФО = ПлатежноРасчетныеДокументыПовтИсп.ДопустимыеКФО(, ЛицевойСчет.Значение); + Если ДопустимыеКФО.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + + Результат.Вставить(ЛицевойСчет.Ключ, ДопустимыеКФО[0]); + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Возвращает КФО строки по номеру лицевого счёта, распознанному в назначении платежа. +// +// Параметры: +// КФОПоСчетам - Соответствие из Строка, ПеречислениеСсылка.КВД - КФО по номерам лицевых счетов. +// ЛицевойСчет - Строка - лицевой счёт, распознанный в назначении платежа. +// +// Возвращаемое значение: +// ПеречислениеСсылка.КВД - КФО строки; пустая ссылка, если КФО определить не удалось. +// +Функция КФОСтрокиПоЛицевомуСчету(КФОПоСчетам, ЛицевойСчет) + + Для Каждого Код Из КодыПоискаРебенка(ЛицевойСчет) Цикл + КФО = КФОПоСчетам[Код]; + Если КФО <> Неопределено Тогда + Возврат КФО; + КонецЕсли; + КонецЦикла; + + Возврат Перечисления.КВД.ПустаяСсылка(); + +КонецФункции + +// Возвращает лицевые счета по их номерам. +// +// Параметры: +// Коды - Массив из Строка - номера лицевых счетов (варианты написания). +// +// Возвращаемое значение: +// Соответствие из Строка, СправочникСсылка.ЛицевыеСчета - лицевые счета по номерам. +// +Функция ЛицевыеСчетаПоКодам(Коды) + + Результат = Новый Соответствие; + Если Коды.Количество() = 0 Тогда + Возврат Результат; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ЛицевыеСчета.Код КАК Код, + | ЛицевыеСчета.Ссылка КАК Ссылка + |ИЗ + | Справочник.ЛицевыеСчета КАК ЛицевыеСчета + |ГДЕ + | НЕ ЛицевыеСчета.ПометкаУдаления + | И ЛицевыеСчета.Код В (&Коды)"; + Запрос.УстановитьПараметр("Коды", Коды); + + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + Результат.Вставить(СокрЛП(Выборка.Код), Выборка.Ссылка); + КонецЦикла; + + Возврат Результат; + +КонецФункции + // Определяет лицевой счёт ребёнка по тексту назначения платежа. // Лицевой счёт идёт после последнего вхождения "л/с" и может начинаться с буквы "Х" или "Г". // diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl index 52c1fac..8c233da 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_УчетРодительскойПлаты/Module.bsl @@ -173,11 +173,12 @@ Возврат ТабличныйДокумент; КонецЕсли; + // Макет общий для обоих документов: реестр у ЦБ и у сада одинаковый, + // поэтому сопровождается в одном месте - общем макете. + Макет = ПолучитьОбщийМакет("ПС_РеестрПлатежей"); Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ") Тогда - Макет = Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.ПолучитьМакет("РеестрПлатежей"); Учреждение = ДокументОбъект.Организация; Иначе - Макет = Документы.ПС_ПередачаПоступившихПлатежейВУчреждения.ПолучитьМакет("РеестрПлатежей"); Учреждение = ДокументОбъект.Учреждение; КонецЕсли; diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonTemplates/ПС_РеестрПлатежей/ПС_РеестрПлатежей.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonTemplates/ПС_РеестрПлатежей/ПС_РеестрПлатежей.mdo new file mode 100644 index 0000000..944c19a --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonTemplates/ПС_РеестрПлатежей/ПС_РеестрПлатежей.mdo @@ -0,0 +1,8 @@ + + + ПС_РеестрПлатежей + + ru + Реестр платежей + + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo index c3633b0..8a9265e 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo @@ -28,7 +28,7 @@ PersonalComputer Russian Role.ПС_ОсновнаяРоль - 1.0.1 + 1.0.2 Language.Русский TaxiEnableVersion8_2 @@ -54,6 +54,9 @@ CommonPicture.Сумма Role.ПС_ОсновнаяРоль Role.БазовыеПраваБГУ + Role.ПС_ЧтениеРодительскойПлаты + Role.ПС_ЗаписьРодительскойПлаты + CommonTemplate.ПС_РеестрПлатежей CommonModule.ПС_УчетРодительскойПлаты CommonModule.ПС_РазборПлатежейПоРодительскойПлате CommonModule.ВариантыОтчетовПереопределяемый diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Templates/РеестрПлатежей/Template.mxlx b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Templates/РеестрПлатежей/Template.mxlx index a03772f..37be51f 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Templates/РеестрПлатежей/Template.mxlx +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Templates/РеестрПлатежей/Template.mxlx @@ -6,7 +6,7 @@ ru Русский - Русский + @@ -389,7 +389,7 @@ - 15 + 20 ДатаПлатежа @@ -407,7 +407,7 @@ c4c71b73-7783-4619-abbc-ece4486e4bdb - 20 + 21 ru @@ -418,14 +418,14 @@ - 21 + 22 ОбщаяСумма true - 22 + 23 7 7 @@ -478,7 +478,7 @@ - 198 + 846 81 @@ -553,6 +553,19 @@ + + 0 + 0 + Center + Wrap + Parameter + + + ru + ДФ=dd.MM.yyyy + + + 1 diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo index 3748a9e..0446be9 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo @@ -436,7 +436,7 @@ Извещение ф. 0504805 (103н) — получатель - + РеестрПлатежей ru diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Templates/РеестрПлатежей/Template.mxlx b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Templates/РеестрПлатежей/Template.mxlx index a03772f..37be51f 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Templates/РеестрПлатежей/Template.mxlx +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Templates/РеестрПлатежей/Template.mxlx @@ -6,7 +6,7 @@ ru Русский - Русский + @@ -389,7 +389,7 @@ - 15 + 20 ДатаПлатежа @@ -407,7 +407,7 @@ c4c71b73-7783-4619-abbc-ece4486e4bdb - 20 + 21 ru @@ -418,14 +418,14 @@ - 21 + 22 ОбщаяСумма true - 22 + 23 7 7 @@ -478,7 +478,7 @@ - 198 + 846 81 @@ -553,6 +553,19 @@ + + 0 + 0 + Center + Wrap + Parameter + + + ru + ДФ=dd.MM.yyyy + + + 1 diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЗаписьРодительскойПлаты/Rights.rights b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЗаписьРодительскойПлаты/Rights.rights new file mode 100644 index 0000000..29e5a5a --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЗаписьРодительскойПлаты/Rights.rights @@ -0,0 +1,132 @@ + + + false + false + false + + Document.ПС_ПередачаПоступившихПлатежейВУчреждения + + Read + true + + + View + true + + + Insert + true + + + Update + true + + + Delete + true + + + Posting + true + + + UndoPosting + true + + + + Document.ПС_ПринятиеПоступившихПлатежейИзЦБ + + Read + true + + + View + true + + + Insert + true + + + Update + true + + + Delete + true + + + Posting + true + + + UndoPosting + true + + + + Document.НачислениеРодительскойПлаты + + Read + true + + + View + true + + + Insert + true + + + Update + true + + + Delete + true + + + Posting + true + + + UndoPosting + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате + + Read + true + + + Update + true + + + + DataProcessor.ПС_УправлениеРасчетамиПоРодительскойПлате + + Use + true + + + View + true + + + + Report.ПС_ВедомостьЦБПоРодительскойПлате + + Use + true + + + View + true + + + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЗаписьРодительскойПлаты/ПС_ЗаписьРодительскойПлаты.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЗаписьРодительскойПлаты/ПС_ЗаписьРодительскойПлаты.mdo new file mode 100644 index 0000000..0ac10ab --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЗаписьРодительскойПлаты/ПС_ЗаписьРодительскойПлаты.mdo @@ -0,0 +1,8 @@ + + + ПС_ЗаписьРодительскойПлаты + + ru + Родительская плата: запись + + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЧтениеРодительскойПлаты/Rights.rights b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЧтениеРодительскойПлаты/Rights.rights new file mode 100644 index 0000000..336ed2c --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЧтениеРодительскойПлаты/Rights.rights @@ -0,0 +1,68 @@ + + + false + false + false + + Document.ПС_ПередачаПоступившихПлатежейВУчреждения + + Read + true + + + View + true + + + + Document.ПС_ПринятиеПоступившихПлатежейИзЦБ + + Read + true + + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате + + Read + true + + + + DataProcessor.ПС_УправлениеРасчетамиПоРодительскойПлате + + Use + true + + + View + true + + + + Report.ПС_ВедомостьЦБПоРодительскойПлате + + Use + true + + + View + true + + + + Document.НачислениеРодительскойПлаты + + Read + true + + + View + true + + + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЧтениеРодительскойПлаты/ПС_ЧтениеРодительскойПлаты.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЧтениеРодительскойПлаты/ПС_ЧтениеРодительскойПлаты.mdo new file mode 100644 index 0000000..bd2e64a --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЧтениеРодительскойПлаты/ПС_ЧтениеРодительскойПлаты.mdo @@ -0,0 +1,8 @@ + + + ПС_ЧтениеРодительскойПлаты + + ru + Родительская плата: чтение + + From 629340ff3f2c5a2643985dcf0b2811fe885da1d5 Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Thu, 29 Oct 2026 15:42:34 +0500 Subject: [PATCH 12/19] =?UTF-8?q?feat(=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D1=8C?= =?UTF-8?q?):=20=D0=B2=D1=91=D1=80=D1=81=D1=82=D0=BA=D0=B0=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D1=80=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D1=81=D0=B5=D0=BD=D0=B0=20=D0=B2=20=D0=BE=D0=B1=D1=89?= =?UTF-8?q?=D0=B8=D0=B9=20=D0=BC=D0=B0=D0=BA=D0=B5=D1=82,=20=D0=BC=D0=B0?= =?UTF-8?q?=D0=BA=D0=B5=D1=82=D1=8B=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=BE=D0=B2=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B,=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F=201.0.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Templates/РеестрПлатежей => CommonTemplates/ПС_РеестрПлатежей}/Template.mxlx | 0 .../CommonTemplates/ПС_РеестрПлатежей/ПС_РеестрПлатежей.mdo | 4 +- .../src/Configuration/Configuration.mdo | 2 +- .../ПС_ПередачаПоступившихПлатежейВУчреждения.mdo | 7 - .../Templates/РеестрПлатежей/Template.mxlx | 587 ------------------ .../ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo | 7 - 6 files changed, 3 insertions(+), 604 deletions(-) rename 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/{Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Templates/РеестрПлатежей => CommonTemplates/ПС_РеестрПлатежей}/Template.mxlx (100%) delete mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Templates/РеестрПлатежей/Template.mxlx diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Templates/РеестрПлатежей/Template.mxlx b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonTemplates/ПС_РеестрПлатежей/Template.mxlx similarity index 100% rename from 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/Templates/РеестрПлатежей/Template.mxlx rename to 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonTemplates/ПС_РеестрПлатежей/Template.mxlx diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonTemplates/ПС_РеестрПлатежей/ПС_РеестрПлатежей.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonTemplates/ПС_РеестрПлатежей/ПС_РеестрПлатежей.mdo index 944c19a..d2a1682 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonTemplates/ПС_РеестрПлатежей/ПС_РеестрПлатежей.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonTemplates/ПС_РеестрПлатежей/ПС_РеестрПлатежей.mdo @@ -1,8 +1,8 @@ - + ПС_РеестрПлатежей ru - Реестр платежей + П с реестр платежей diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo index 8a9265e..136d7f6 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo @@ -28,7 +28,7 @@ PersonalComputer Russian Role.ПС_ОсновнаяРоль - 1.0.2 + 1.0.3 Language.Русский TaxiEnableVersion8_2 diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo index 0446be9..181288c 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПередачаПоступившихПлатежейВУчреждения/ПС_ПередачаПоступившихПлатежейВУчреждения.mdo @@ -436,11 +436,4 @@ Извещение ф. 0504805 (103н) — получатель - - РеестрПлатежей - - ru - Реестр платежей - - diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Templates/РеестрПлатежей/Template.mxlx b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Templates/РеестрПлатежей/Template.mxlx deleted file mode 100644 index 37be51f..0000000 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/Templates/РеестрПлатежей/Template.mxlx +++ /dev/null @@ -1,587 +0,0 @@ - - - - ru - ru - - ru - Русский - - - - - 10 - - 0 - - 1 - - - - 1 - - 2 - - - - 2 - - 3 - - - - 3 - - 4 - - - - 4 - - 5 - - - - 5 - - 6 - - - - 6 - - 7 - - - - 7 - - 4 - - - - 8 - - 8 - - - - 9 - - 9 - - - - - c4c71b73-7783-4619-abbc-ece4486e4bdb - 10 - - 0 - - 10 - - - - 1 - - 11 - - - - 2 - - 12 - - - - 3 - - 4 - - - - 4 - - 5 - - - - 5 - - 13 - - - - 6 - - 7 - - - - 7 - - 14 - - - - 8 - - 8 - - - - 9 - - 9 - - - - - 0 - - - - 15 - ЗаголовокРеестра - - - - - - 1 - - - - 15 - РеквизитыДокумента - - - - - - 2 - - c4c71b73-7783-4619-abbc-ece4486e4bdb - - - 16 - - - ru - ФИО плательщика - - - - - - - 16 - - - ru - Сумма - - - - - - - 17 - - - ru - Лицевой счет ребенка - - - - - - - 16 - - - ru - ФИО ребенка - - - - - - - 16 - - - ru - Назначение платежа - - - - - - - 16 - - - ru - Организация - - - - - - - 16 - - - ru - Рассчетный счет - - - - - - - 16 - - - ru - Группа - - - - - - - 17 - - - ru - Период оплаты - - - - - - - 17 - - - ru - Дата приема платежа - - - - - - - - 3 - - - - 18 - - - - - 18 - - - - - 18 - - - - - 18 - - - - - 18 - - - - - 18 - - - - - 18 - - - - - 18 - - - - - 18 - - - - - 18 - - - - - - 4 - - c4c71b73-7783-4619-abbc-ece4486e4bdb - - - 15 - Плательщик - - - - - 19 - Сумма - - - - - 15 - ЛицевойСчет - - - - - 15 - Ребенок - - - - - 15 - НазначениеПлатежа - - - - - 15 - Организация - - - - - 15 - РассчетныйСчет - - - - - 15 - Группа - - - - - 15 - Период - - - - - 20 - ДатаПлатежа - - - - - - 5 - - true - - - - 6 - - c4c71b73-7783-4619-abbc-ece4486e4bdb - - - 21 - - - ru - ИТОГО: - - - - - - - 22 - ОбщаяСумма - - - - - true - 23 - 7 - 7 - - Заголовок - - Rows - 0 - 1 - -1 - -1 - - - - ОбластьПодвалТаблицы - - Rows - 6 - 6 - -1 - -1 - c4c71b73-7783-4619-abbc-ece4486e4bdb - - - - ОбластьСтрокаТаблицы - - Rows - 4 - 4 - -1 - -1 - c4c71b73-7783-4619-abbc-ece4486e4bdb - - - - ОбластьШапкаТаблицы - - Rows - 2 - 2 - -1 - -1 - c4c71b73-7783-4619-abbc-ece4486e4bdb - - - - Solid - - - - - - 846 - - - 81 - - - 111 - - - 186 - - - 190 - - - 152 - - - 137 - - - 106 - - - 103 - - - 213 - - - 74 - - - 99 - - - 171 - - - 167 - - - 0 - 0 - Center - Wrap - Parameter - - - 1 - 0 - Center - - - 1 - 0 - Center - Wrap - - - 2 - - - 0 - 0 - Center - Wrap - Parameter - - - ru - ЧДЦ=2 - - - - - 0 - 0 - Center - Wrap - Parameter - - - ru - ДФ=dd.MM.yyyy - - - - - 1 - - - 1 - 0 - Center - Parameter - - - ru - ЧДЦ=2 - - - - - 72 - - \ No newline at end of file diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo index 9f721a5..dcedc68 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Documents/ПС_ПринятиеПоступившихПлатежейИзЦБ/ПС_ПринятиеПоступившихПлатежейИзЦБ.mdo @@ -451,11 +451,4 @@ Извещение ф. 0504805 (103н) — родительская плата - - РеестрПлатежей - - ru - Реестр платежей - - From ea98b4e1907b7be78d1f28eb7b2a7ef7682be5e0 Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Fri, 30 Oct 2026 10:13:05 +0500 Subject: [PATCH 13/19] =?UTF-8?q?docs:=20=D1=80=D1=83=D0=BA=D0=BE=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D1=81=D1=82=D0=B2=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8F=20=D0=B8=20?= =?UTF-8?q?=D1=80=D1=83=D0=BA=D0=BE=D0=B2=D0=BE=D0=B4=D1=81=D1=82=D0=B2?= =?UTF-8?q?=D0=BE=20=D0=B0=D0=B4=D0=BC=D0=B8=D0=BD=D0=B8=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D1=80=D0=B0,=20=D1=83=D0=B4=D0=B0=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D1=83=D1=81=D1=82=D0=B0=D1=80=D0=B5=D0=B2?= =?UTF-8?q?=D1=88=D0=B8=D0=B5=20=D0=9F=D0=90=D0=9C=D0=AF=D0=A2=D0=9A=D0=90?= =?UTF-8?q?=20=D0=B8=20=D0=A0=D0=A3=D0=9A=D0=9E=D0=92=D0=9E=D0=94=D0=A1?= =?UTF-8?q?=D0=A2=D0=92=D0=9E=20=D0=9F=D0=9E=20=D0=AD=D0=9A=D0=A1=D0=9F?= =?UTF-8?q?=D0=9B=D0=A3=D0=90=D0=A2=D0=90=D0=A6=D0=98=D0=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...КА. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md | 76 ---- ...ИНИСТРАТОРА. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md | 169 +++++++++ ...КСПЛУАТАЦИИ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md | 170 --------- ...ЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md | 328 +++++++----------- 4 files changed, 291 insertions(+), 452 deletions(-) delete mode 100644 docs/ПАМЯТКА. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md create mode 100644 docs/РУКОВОДСТВО АДМИНИСТРАТОРА. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md delete mode 100644 docs/РУКОВОДСТВО ПО ЭКСПЛУАТАЦИИ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md diff --git a/docs/ПАМЯТКА. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md b/docs/ПАМЯТКА. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md deleted file mode 100644 index 9dccd7b..0000000 --- a/docs/ПАМЯТКА. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md +++ /dev/null @@ -1,76 +0,0 @@ -# ПАМЯТКА. Учёт родительской платы ЦБ ОУО (БГУ 2.0) - -**Кому:** бухгалтер ЦБ, бухгалтер детского сада. -**Где:** 1С:Предприятие → раздел **«Платное обучение»** → **«Сервис»** → обработка **«Управление расчётами по родительской плате»** (далее — рабочее место). -**Дата:** 07.10.2026 - ---- - -## 1. Порядок работы в течение месяца - -| № | Кто | Что делает | Где | -|---|---|---|---| -| 1 | Сад | Табель посещаемости, документ **«Начисление родительской платы»** | Типовой механизм БГУ | -| 2 | ЦБ | Проверить, что начисления всех садов пришли | Рабочее место → страница **«Начисления»** | -| 3 | Сад | **«Передача задолженности в ЦБ»** → печать извещения (ф. 0504805) | Раздел «Платное обучение» → «Сервис» | -| 4 | ЦБ | **«Принятие задолженности от учреждения»** (ввод на основании передачи) | Раздел «Платное обучение» → «Сервис» | -| 5 | ЦБ | Сверить переданное и принятое | Рабочее место → страница **«Сверка «передано / принято»»** | -| 6 | ЦБ | Загрузить реестр платежей из СУФД → создаётся **«Кассовое поступление»** | Типовой механизм БГУ | -| 7 | ЦБ | Проверить, все ли строки платежей распознаны | Рабочее место → страница **«Кассовые поступления»** | - -В рабочем месте перед работой задайте **Период** (по умолчанию «Этот месяц»), при необходимости — **Организацию (ЦБ)**, **ИФО**, **Учреждение (сад)**, и нажмите **«Обновить»**. - -## 2. Кассовые поступления: что делается автоматически - -При записи документа «Кассовое поступление» с признаком **«Родительская плата»** система сама заполняет в строках табличной части «Расшифровка платежа»: - -- **Ребёнок** — по лицевому счёту из назначения платежа; -- **Контрагент** — родитель (плательщик) из карточки ребёнка; -- **Договор** — см. правила ниже; -- **Счёт расчётов** — 205.31; -- **КОСГУ назначения платежа** — 131. - -**Как определяется договор** (по убыванию приоритета): -1. если по счёту 205.31 есть остатки — договор берётся из остатков; -2. иначе — единственный договор, отобранный по контрагенту; -3. если договоров нет или их больше одного — поле остаётся пустым и выводится сообщение. - -**Что не перезаписывается:** строки, в которых уже заполнен ребёнок, повторно не обрабатываются; счёт расчётов заполняется только в пустое поле. Исключение — КОСГУ: код «000», который проставляет типовая загрузка, принудительно заменяется на 131. - -**Что происходит при проведении.** Проведение документа «Кассовое поступление» с признаком «Родительская плата» закрывает задолженность: по каждой строке, где определён ребёнок и договор, формируется расход по регистру взаиморасчётов — оплата родительской платы. Сумма платежа уменьшает остаток по ребёнку. Если задолженности нет, образуется отрицательный остаток — это переплата, в учёте она допустима. - -## 3. Если строка не распозналась - -1. В рабочем месте на странице **«Кассовые поступления»** найдите документ с ненулевой колонкой **«Строк не распознано»**. -2. Откройте документ и прочитайте сообщения. Возможные тексты: - -| Сообщение | Что означает | Что проверить | -|---|---|---| -| «не найден ребёнок с лицевым счётом …» | лицевого счёта нет в справочнике «Дети» | код ребёнка в справочнике (код = лицевой счёт), лишние пробелы и символы | -| «не удалось определить лицевой счёт ребёнка» | в назначении платежа нет фрагмента «л/с …» | текст назначения платежа в строке | -| «у ребёнка … не заполнен контрагент» | в карточке ребёнка пустой контрагент | карточка ребёнка → контрагент (родитель) | -| «не найден счёт 205.31» / «не найден код 131» | справочники не настроены | план счетов ЕПСБУ, справочник КОСГУ | - -3. Заполните строку вручную (ребёнок, контрагент, договор) и запишите документ. - -## 4. Начальное сальдо при запуске системы - -1. Документ **«Передача задолженности в ЦБ»** с признаком **«Начальное сальдо»**. -2. Команда **«Заполнить по остаткам счёта 205.31»** — табличная часть заполнится остатками на дату документа (строки можно править и добавлять). -3. Печать извещения (ф. 0504805) и передача в ЦБ. -4. В ЦБ — **«Принятие задолженности от учреждения»** на основании документа передачи. - -Переплаты вводятся **отрицательной суммой** в строке. - -## 5. Отчёты и контроль - -- **Оборотная ведомость** — кнопка в рабочем месте (передаются текущие отборы и период). Отчёт строится по учреждениям, внутри — по детям; колонки: остаток на начало, приход, расход, остаток на конец. Если период не задан, отчёт показывает все данные. -- **Остатки и обороты** — страница рабочего места (счета 205.31 и 304.04, в разрезе ИФО). -- **Сверка «передано / принято»** — страница рабочего места (расхождения по документам передачи). - -> Остатки в рабочем месте берутся из бухгалтерских проводок и только в разрезе ИФО — отбор по учреждению (саду) на них не влияет, о чём выводится предупреждение. - -## 6. Куда обращаться - -- Вопросы по методике учёта — бухгалтерия ЦБ. -- Технические проблемы (ошибки при записи, незаполненные поля, расхождения) — сопровождение с указанием: документ, дата, номер, текст сообщения. diff --git a/docs/РУКОВОДСТВО АДМИНИСТРАТОРА. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md b/docs/РУКОВОДСТВО АДМИНИСТРАТОРА. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md new file mode 100644 index 0000000..002e212 --- /dev/null +++ b/docs/РУКОВОДСТВО АДМИНИСТРАТОРА. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md @@ -0,0 +1,169 @@ +# РУКОВОДСТВО АДМИНИСТРАТОРА. Учёт родительской платы ЦБ ОУО (БГУ 2.0) + +Расширение: `153_ЦБ_ОУО_БГУ.ПрофиСофт`, **версия 1.0.3** +Базовая конфигурация: БГУ 2.0 (2.0.107.53), режим совместимости расширения 8.3.24 +Документ актуален на 30.10.2026. + +Документ для администратора системы: установка, первичная настройка, права доступа, обновление, диагностика. Порядок ежедневной работы — в «РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ». + +--- + +## 1. Состав поставки + +| Объект | Назначение | +|---|---| +| `КассовоеПоступление` (типовой, расширен) | приход по регистру взаиморасчётов по строкам расшифровки платежа | +| `ПС_ПередачаПоступившихПлатежейВУчреждения` | ЦБ передаёт саду поступившие платежи | +| `ПС_ПринятиеПоступившихПлатежейИзЦБ` | сад принимает переданные суммы | +| `ПС_ВзаиморасчетыПоРодительскойПлате` | регистр накопления — единственный источник сумм по расчётам | +| `ПС_УправлениеРасчетамиПоРодительскойПлате` | пульт управления | +| `ПС_ВедомостьЦБПоРодительскойПлате` | оборотная ведомость | +| `ПС_УчетРодительскойПлаты`, `ПС_РазборПлатежейПоРодительскойПлате`, `ПС_ВнутреннийЭДОИзвещений` | общие модули: печать, разбор назначения платежа, извещения | +| `ПС_РеестрПлатежей` (общий макет) | вёрстка реестра, одна для обоих документов | +| `ПС_ЧтениеРодительскойПлаты`, `ПС_ЗаписьРодительскойПлаты` | роли доступа | + +Файл поставки — `.cfe`. Версия указывается в имени файла и в свойствах расширения; **всегда сверяйте версию** перед установкой. + +--- + +## 2. Установка расширения + +1. Получить `.cfe` у разработчика. +2. В 1С: **Администрирование → Расширения конфигурации** (или «Расширения конфигурации» в разделе «НСИ и администрирование»). +3. **Добавить из файла** → выбрать `.cfe`. +4. **Обновить конфигурацию базы данных**. Сделать это в монопольном режиме или когда пользователи не работают. +5. Проверить: **Сервис → О программе** → блок «Расширения конфигурации» → строка `Профи софт`, колонка **«Версия»**. Должна совпасть с заявленной. +6. Проверить, что расширение **активно** (флажок «Активно» установлен). + +Проверка версии — обязательный шаг. Если версия не совпадает, дальше разбираться бессмысленно: установлена не та сборка. + +--- + +## 3. Первичная настройка базы + +Выполняется один раз при внедрении и повторяется при добавлении нового учреждения. + +### 3.1. Константа «Организация централизованной бухгалтерии» + +Заполняется организацией ЦБ. По ней по умолчанию подставляется организация в пульте, в передаче и в принятии. + +### 3.2. Справочник «Организации» + +- ЦБ — отдельная организация. +- Каждый детский сад — отдельная организация. +- У обеих сторон заполнены ИНН, КПП, ИФО и счета. + +### 3.3. Соответствие «Организация → Контрагент» + +Извещения ф. 0504805 адресуются контрагентам, а документы расширения — организациям. Контрагент подбирается автоматически: штатной функцией БГУ (`БюджетнаяОтчетностьПолучениеНСИ.КонтрагентПоОрганизации` — ИНН + КПП + бюджет), при неудаче — по ИНН с уточнением по КПП и бюджету. + +**Требование:** для ЦБ и **для каждого сада** должен существовать контрагент, который находится этим подбором. Без него извещение создаётся с пустым получателем/отправителем и не пройдёт проверку заполнения. + +### 3.4. Типовая операция кассового поступления (критично) + +Поступления родительской платы идут на счёт 303.05. В типовой конфигурации при заполненном корсчёте 303.00 сбрасывается признак «Родительская плата», и приход по регистру взаиморасчётов **не формируется**. + +Рабочая настройка: + +1. Скопировать типовую операцию «Поступление, зачисление в бюджеты» (для 303-го счёта). +2. В копии изменить отбор по корреспондирующему счёту на **«прочие счета»** (корсчёт не заполнен). +3. В документе выбирать эту операцию, корсчёт — «прочие счета», признак «Родительская плата» — установлен. + +Страховка в расширении: если признак снят, но в назначении платежа распознан лицевой счёт ребёнка, при записи документа выводится предупреждение. + +### 3.5. Справочники расчётов с родителями + +| Справочник | Требования | +|---|---| +| `Дети` | код = лицевой счёт ребёнка (`X000013125` или `000010525`); **обязательно заполнен контрагент** | +| `Контрагенты` | плательщики (родители) | +| `Договоры` | у родителя должен быть **один** договор, иначе он не заполнится автоматически | +| `ВидыНалоговИПлатежей` | значение для аналитики счёта 303.05 в документе принятия | +| `ИсточникиФинансовогоОбеспечения` | заполняется в документах и реестрах | +| `ЛицевыеСчета` | раздел счёта с табличной частью «Допустимые КФО» — из неё берётся КФО строк расшифровки | +| `КОСГУ` | код 131 — КОСГУ назначения платежа родительской платы | + +**КФО строк расшифровки.** Берётся из настроек лицевого счёта: раздел → «Допустимые КФО». Используется типовая функция `ПлатежноРасчетныеДокументыПовтИсп.ДопустимыеКФО`, поэтому результат совпадает с поведением типовых форм: подставляется **первое** допустимое значение (с наименьшим порядком перечисления КВД). Если у счёта допустимо несколько КФО — остальные бухгалтер выбирает вручную. Если КФО не заполнился — проверьте, что у лицевого счёта есть раздел и в нём заполнены допустимые КФО. + +--- + +## 4. Роли и права + +В расширении две роли. Третья, `ПС_ОсновнаяРоль`, создаётся платформой автоматически — **назначать её пользователям не нужно**. + +| Право на объект | `ПС_ЧтениеРодительскойПлаты` | `ПС_ЗаписьРодительскойПлаты` | +|---|---|---| +| Документы передачи, принятия, начисления — Read, View | да | да | +| Те же документы — Insert, Update, Delete, Posting, UndoPosting | — | да | +| Регистр `ПС_ВзаиморасчетыПоРодительскойПлате` — Read | да | да | +| Тот же регистр — Update | — | да | +| Пульт и ведомость — Use, View | да | да | + +**Важно:** роли расширения дают права только на объекты расширения. Пользователю дополнительно нужны штатные роли БГУ (базовые права, работа с документами, отчётами). Назначать только роль расширения недостаточно — интерфейс останется пустым. + +Рекомендуемая схема: + +| Кто | Роли | +|---|---| +| Бухгалтер ЦБ | `ПС_ЗаписьРодительскойПлаты` + штатные роли БГУ для работы с кассовыми документами | +| Бухгалтер сада | `ПС_ЗаписьРодительскойПлаты` + штатные роли БГУ своего учреждения | +| Руководитель, методист, контролёр | `ПС_ЧтениеРодительскойПлаты` + штатные роли для просмотра | + +Роли удобно включать в профиль групп доступа, чтобы не назначать по одному пользователю. + +Права на сами объекты метаданных (справочники, план счетов) не дублируются: они наследуются от базовой конфигурации. + +--- + +## 5. Обновление расширения + +1. Получить `.cfe`, сверить версию. +2. Сделать резервную копию базы. +3. Загрузить и обновить расширение (раздел 2). +4. Проверить версию в «О программе». +5. Если обновление меняло состав измерений регистра или структуру табличных частей — **перепровести** кассовые поступления и документы передачи за затронутый период. Признак необходимости: в передаче пусты лицевой счёт, расчётный счёт, группа, период оплаты, дата платежа. +6. Проверить на одном-двух документах: заполнение передачи, печать реестра, печать извещения. + +--- + +## 6. Резервное копирование и обслуживание + +- Резервная копия базы — перед каждым обновлением расширения, без исключений. +- Ежемесячно, после закрытия передач: сверить на пульте страницу «Сверка „передано / принято“». Расхождение ≠ 0 означает, что сад не принял документ. +- Ежемесячно: проверить на пульте «Остатки и обороты» — «Остаток у ЦБ» после передачи должен быть нулевым. +- После добавления нового сада: проверить контрагента (п. 3.3) и организацию (п. 3.2). + +--- + +## 7. Диагностика + +| Сообщение / симптом | Причина | Действия | +|---|---|---| +| В передаче пусты лицевой счёт, назначение, расчётный счёт, группа, период оплаты, дата | у записи регистра пуст `ИДСтроки` — кассовое поступление проведено до появления измерения | перепровести кассовое поступление, заново заполнить передачу | +| «По N строкам идентификатор квитанции есть, но строка расшифровки платежа не найдена» | состав строк расшифровки менялся после проведения | перепровести кассовое поступление | +| «Распознан лицевой счёт ребёнка, но признак „Родительская плата“ не установлен» | снят признак, обычно из-за заполненного корсчёта 303.00 | см. п. 3.4 | +| КФО в строках расшифровки пуст | у лицевого счёта нет раздела или в разделе нет допустимых КФО | заполнить раздел и допустимые КФО | +| «Для организации … не найден контрагент» | нет соответствия «организация → контрагент» | см. п. 3.3, пересоздать извещение | +| «Поступившие платежи найдены в разрезе нескольких ИФО и/или КФО» | ИФО и КФО задаются на весь документ | передавать отдельными документами по каждому ИФО/КФО | +| Пульт открывается, таблицы пустые | не задан период (обе границы) | указать период, нажать «Обновить» | +| Раздел «Родительская плата» не виден пользователю | нет ролей | назначить роли (раздел 4) | +| Печать реестра выводит пустой лист | не заполнено тело общего макета `ПС_РеестрПлатежей` | проверить макет в конфигураторе/EDT | + +--- + +## 8. Технические сведения + +- **Регистр `ПС_ВзаиморасчетыПоРодительскойПлате`.** Измерения: Организация, Учреждение, Плательщик, Ребёнок, Договор, ИФО, КФО, КПС, `ИДСтроки`. Ресурс: Сумма. Приход формирует кассовое поступление, расход — документ передачи. Все остатки и сверка считаются по нему. +- **`ИДСтроки`** — ключ строки квитанции в формате `:<номер строки>`. По нему передача находит реквизиты реестра. Заполняется при проведении кассового поступления; у документов, проведённых до появления измерения, пуст. +- **Печать.** Оба документа печатают реестр из общего макета `ПС_РеестрПлатежей` через `ПолучитьОбщийМакет`. Макеты в самих документах удалены — вёрстка сопровождается в одном месте. +- **Извещения.** Создаются как обёртки: хранят ссылку на документ расширения и табличную часть «Задолженность». При изменении документа извещение перезаполняется, если оно не проведено и не помечено на удаление. Проведённое извещение не меняется. +- **Внутренний ЭДО** извещений не поддерживается: подписание и обмен — внешними средствами. + +--- + +## 9. Ограничения текущей версии + +- Извещения ф. 0504805 не формируют проводок и не участвуют в расчётах. +- Сверка «передано / принято» сравнивает суммы документов, а не построчные суммы регистра. +- Документ передачи адресный: один сад на документ; ИФО и КФО — на весь документ. +- В передачах, созданных до версии 1.0.0, реквизит «Принятие платежей» не заполнен — его нужно проставить вручную либо создать принятие кнопкой. diff --git a/docs/РУКОВОДСТВО ПО ЭКСПЛУАТАЦИИ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md b/docs/РУКОВОДСТВО ПО ЭКСПЛУАТАЦИИ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md deleted file mode 100644 index 8575bbd..0000000 --- a/docs/РУКОВОДСТВО ПО ЭКСПЛУАТАЦИИ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md +++ /dev/null @@ -1,170 +0,0 @@ -# РУКОВОДСТВО ПО ЭКСПЛУАТАЦИИ. Учёт родительской платы ЦБ ОУО (БГУ 2.0) - -**Конфигурация:** Бухгалтерия государственного учреждения, редакция 2.0 (БГУ 2.0.107.53), платформа 8.5.1, режим совместимости 8.3.24 -**Расширение:** `153_ЦБ_ОУО_БГУ.ПрофиСофт`, префикс объектов `ПС_`, режим совместимости 8.3.14 -**Базовая конфигурация:** на полной поддержке, не модифицируется -**Версия документа:** 1.2 от 12.10.2026 - ---- - -## 1. Назначение и состав - -### 1.1. Назначение - -Расширение реализует учёт родительской платы по схеме «детский сад → централизованная бухгалтерия»: передачу и принятие задолженности, печать извещений (ф. 0504805), идентификацию кассовых поступлений по назначению платежа, контроль расчётов. - -### 1.2. Состав объектов расширения - -| Объект | Назначение | -|---|---| -| `Document.ПС_ПередачаЗадолженностиВЦБ` | Передача задолженности из сада в ЦБ, печать извещения (ф. 0504805) | -| `Document.ПС_ПринятиеЗадолженностиОтУчреждения` | Принятие задолженности в ЦБ, движения регистра взаиморасчётов | -| `AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате` | Аналитический учёт взаиморасчётов на стороне ЦБ (8 измерений: организация, учреждение, плательщик, ребёнок, договор, ИФО, КФО, КПС; ресурс «Сумма»; реквизиты: вид операции, ИД строки (квитанции), документ передачи) | -| `Enum.ПС_ВидыОперацийПоВзаиморасчетам` | Виды операций: принято от учреждения, оплата, начальное сальдо | -| `CommonModule.ПС_УчетРодительскойПлаты` | Проводки и печатные формы 0504805 | -| `CommonModule.ПС_РаботаСКонтрагентами` | Сопоставление ЦБ ↔ контрагент и сад ↔ организация по ИНН | -| `CommonModule.ПС_РазборПлатежейПоРодительскойПлате` | Разбор назначения платежа и заполнение расшифровки платежа | -| `DataProcessor.ПС_УправлениеРасчетамиПоРодительскойПлате` | Рабочее место управления расчётами | -| `Report.ПС_ВедомостьЦБПоРодительскойПлате` | Оборотная ведомость по расчётам по родительской плате (СКД, на штатных механизмах БСП) | -| `Role.ПС_ОсновнаяРоль` | Права на объекты расширения | -| Макет `ПФ_MXL_Извещение0504805_103н_ПС_РП` | Печатная форма извещения (ф. 0504805, 103н) | - -**Заимствованные объекты типовой конфигурации:** - -| Объект | Что изменено | -|---|---| -| `Document.КассовоеПоступление` | Добавлены обработчики `&После("ПередЗаписью")` — автозаполнение расшифровки платежа, и `&После("ОбработкаПроведения")` — формирование расхода по регистру взаиморасчётов (закрытие задолженности); заимствованы реквизиты `РодительскаяПлата`, `Организация`, `ИФО` и табличная часть `РасшифровкаПлатежа` с реквизитами `Примечание`, `Контрагент`, `Ребенок`, `Договор`, `СчетРасчетов`, `КОСГУНазначениеПлатежа`, `КБКНазначениеПлатежа`, `КФО` | -| Подсистемы `ТаксиПлатноеОбразование` / `РодительскаяПлата` | Размещение новых документов и обработок | -| `Subsystem.ПодключаемыеОтчетыИОбработки` | Подключение отчёта расширения к механизму «Варианты отчётов» БСП | -| `CommonModule.ВариантыОтчетовПереопределяемый` | Описание отчёта и его варианта в механизме БСП (в доработке) | -| `CommonForm.ФормаОтчета` | Общая форма отчёта БСП — назначена основной формой отчёта | - -> Заимствование реквизитов и табличной части — не «украшательство»: без него статический анализатор EDT не видит наследованную структуру документа и выдаёт предупреждения SU232 на каждое обращение в коде расширения. - ---- - -## 2. Установка и подключение - -1. Собрать расширение в EDT (проект `153_ЦБ_ОУО_БГУ.ПрофиСофт`) и получить файл расширения (`.cfe`). -2. В 1С:Предприятие: **Администрирование → Печатные формы, отчёты и обработки → Расширения** → добавить файл расширения → **перезапустить сеанс**. -3. Убедиться, что расширение активно и в разделе **«Платное обучение»** → **«Сервис»** появилась обработка «Управление расчётами по родительской плате». -4. Проверить права: пользователям ЦБ и садов должны быть доступны объекты расширения (роль `ПС_ОсновнаяРоль` или права, включённые в используемые роли). - -> После изменения состава формы или метаданных расширения необходимо **пересобрать проект** и заново подключить (обновить) расширение, иначе изменения формы не появятся в пользовательском режиме. - ---- - -## 3. Настройка перед началом работы - -| Что настроить | Требование | -|---|---| -| **Организация ЦБ** | Константа «Организация централизованная бухгалтерия» — подставляется в рабочее место автоматически | -| **Справочник «Дети»** | Код элемента = **лицевой счёт ребёнка** (15 символов, например `Х000012877`); обязательно заполнен реквизит **«Контрагент»** (родитель-плательщик) | -| **Справочник «Контрагенты»** | Сады и родители; ИНН садов должен совпадать с ИНН соответствующих организаций — по ИНН работает сопоставление в рабочем месте | -| **Справочник «Организации»** | Сады (ПБС) и ЦБ (АДБ) с корректными ИНН | -| **Справочник «Договоры»** | Договоры привязаны к контрагенту (реквизит «Контрагент»). Справочник **не иерархический** | -| **Справочник «КОСГУ»** | Должен существовать код **131** (используется как КОСГУ назначения платежа) | -| **План счетов ЕПСБУ** | Должны существовать счета **205.31** и **304.04** | -| **Источники финансирования (ИФО)** | Заполнены у садов и в проводках | -| **Права пользователей** | Доступ к документам расширения и обработке | - ---- - -## 4. Регламент загрузки реестров платежей из СУФД - -1. Реестр платежей загружается **штатным механизмом БГУ** («Импорт данных из файлов платёжных поручений на общую сумму с реестром»). Расширение XML не разбирает. -2. В результате создаётся документ **«Кассовое поступление»**; строки реестра попадают в табличную часть **«Расшифровка платежа»** (назначение платежа — в реквизите «Примечание»). -3. Для документов с признаком **«Родительская плата»** при записи автоматически заполняются: ребёнок, контрагент, договор, счёт расчётов 205.31, КОСГУ 131. -4. После загрузки: рабочее место → страница **«Кассовые поступления»** → проверить колонку **«Строк не распознано»**; по документам с ненулевым значением выполнить ручной доввод строк. -5. При **проведении** документа с признаком «Родительская плата» формируется **расход** по регистру взаиморасчётов: по каждой строке, где определён ребёнок и договор, задолженность закрывается (вид операции «Оплата»). Разрезы движения: организация — из шапки (ЦБ); учреждение (сад) — по организации ребёнка через сопоставление с контрагентом; плательщик, ребёнок, договор, КФО, КПС — из строки расшифровки; ИФО — из шапки документа. Если задолженности нет, образуется отрицательный остаток — переплата (допустима). - -**Важно:** обработчик автозаполнения срабатывает **на записи документа**, а закрытие задолженности — **на проведении**. Документы, загруженные до установки/обновления расширения, нужно перезаписать (открыть и записать) — либо довводить строки вручную. Непроведённое кассовое поступление движений по регистру взаиморасчётов не создаёт. - -**См. также — документация БГУ 2.0 на ИТС:** -- [Импорт данных из файлов платежных поручений на общую сумму с реестром](https://its.1c.ru/db/metbud81/content/7407/hdoc) — как настроить загрузку реестров платежей: по реестру формируется «Кассовое поступление» с заполненной расшифровкой платежа. - ---- - -## 5. Проверка работоспособности (приёмочные сценарии) - -| № | Сценарий | Ожидаемый результат | -|---|---|---| -| 1 | Открыть рабочее место, задать период, нажать «Обновить» | Все страницы заполняются без ошибок; период по умолчанию — «Этот месяц»; организация ЦБ подставлена | -| 2 | Открыть рабочее место → «Остатки и обороты» | Остатки и обороты по 205.31 и 304.04 в разрезе ИФО | -| 3 | Провести документ «Передача задолженности в ЦБ» | Проводки Дт 304.04 — Кт 205.31; печать извещения формируется | -| 4 | Ввести «Принятие задолженности» на основании передачи | Проводки Дт 205.31 — Кт 304.04; движения регистра; сверка «передано/принято» без расхождений | -| 5 | Документ передачи с признаком «Начальное сальдо» → «Заполнить по остаткам счёта 205.31» | Табличная часть заполнена остатками на дату документа; поле «Документ начисления» скрыто | -| 6 | Загрузить реестр с корректными лицевыми счетами | В расшифровке платежа заполнены ребёнок, контрагент, договор, счёт расчётов 205.31, КОСГУ 131 | -| 7 | Загрузить реестр со строкой «чужого» лицевого счёта | Строка не распознана, выведено сообщение с номером строки и причиной; поле ребёнка пустое | -| 8 | Повторно записать обработанный документ | Ранее заполненные строки не перезаписаны; КОСГУ «000» заменён на 131 | -| 9 | Контрагент с несколькими договорами и без остатков | Договор пустой, выведено диагностическое сообщение | -| 10 | Провести кассовое поступление с распознанными строками | Сформирован расход по регистру взаиморасчётов (вид операции «Оплата»); остаток по ребёнку уменьшился | -| 11 | Провести кассовое поступление по ребёнку без задолженности | Образован отрицательный остаток — переплата (ошибок нет) | -| 12 | Кнопка «Оборотная ведомость» в рабочем месте | Открывается отчёт `ПС_ВедомостьЦБПоРодительскойПлате` в общей форме отчёта БСП; структура — учреждения, внутри дети; колонки: остаток на начало, приход, расход, остаток на конец | - ---- - -## 6. Типовые ошибки и их устранение - -### 6.1. Ошибки времени выполнения - -| Симптом | Причина | Устранение | -|---|---|---| -| `Поле не найдено "Субконто1"` при записи кассового поступления | Отбор по субконто стоял в позиции «Счет» виртуальной таблицы `Остатки` | В параметрах ВТ `Остатки(<Период>, <Счет>, <Субконто>, <Условие>)` условия по `Субконто<Номер>` допустимы **только в «Условии»** (4-й параметр) | -| `Неверные параметры "…ОстаткиИОбороты, 5"` при открытии рабочего места | Условие по счёту стояло в позиции «Субконто» | Порядок параметров ВТ `ОстаткиИОбороты` — `(Начало периода, Конец периода, Периодичность, Метод дополнения, **Счет**, Субконто, Условие)`: счёт идёт **пятым**. Ориентир — типовые отчёты `СправкаРасчетСебестоимостьПродукции`, `СправкаРасчетКалькуляцииСебестоимости` | -| `Поле не найдено "Договоры.ЭтоГруппа"` | Справочник «Договоры» не иерархический | Убрать условие `НЕ Договоры.ЭтоГруппа` из запросов | -| `Кассовое поступление …: контрагент не определён — не найден ребёнок с лицевым счётом …` по всем строкам | Отбор по организации в поиске ребёнка (в документе организация — ЦБ, а дети относятся к садам) | Идентифицировать ребёнка **только по лицевому счёту**, без отбора по организации | -| Сообщение по строке, хотя лицевой счёт верный | Код в справочнике «Дети» хранится дополненным пробелами до длины 15 | Нормализовать сравнение (`СокрЛП`) с обеих сторон | -| КОСГУ остаётся «000» после записи | Код «000» проставляет типовая загрузка реестров, а правило «заполнять только пустое» его не трогает | КОСГУ «000» заменять на 131 принудительно | -| Автозаполнение не срабатывает | Документ загружен до установки расширения, либо снят признак «Родительская плата» | Перезаписать документ; проверить признак | -| Таблицы рабочего места пусты, выведено сообщение о сопоставлении | Не удалось сопоставить организацию и контрагента по ИНН | Сверить ИНН в справочниках «Организации» и «Контрагенты» | - -### 6.2. Ошибки при разработке и сборке (EDT) - -| Симптом | Причина | Устранение | -|---|---|---| -| SU232 «Свойство (метод) объекта не обнаружено» на реквизиты/ТЧ заимствованного документа | Анализатор не видит наследованную структуру | Заимствовать в расширение используемые реквизиты документа и реквизиты табличной части | -| SU89 «Запрос в цикле» | Обращения к базе внутри цикла по строкам | Собирать данные в цикле без запросов, выполнять один пакетный запрос на документ | -| SU47/SU67 на расширяющем методе | Метод расширения виден на клиенте | Оборачивать обработчик в `#Если Сервер` | -| Коллизия имён `РодительскаяПлата` | В конфигурации есть одноимённый общий модуль | Не использовать «голое» имя реквизита в модуле объекта; проверку признака выполнять внутри общего модуля расширения | -| Ошибка «Файл был изменён после чтения» | Параллельная правка файла | Перечитать файл и повторить правку | -| Ошибки SU112 по табличной части | Артефакт записи `.mdo` | Повторить проверку маркеров после пересборки | -| «Метод объекта не обнаружен (`ПриОпределенииНастроек`)» при чтении настроек отчёта | Отчёт включён в `ПодключаемыеОтчетыИОбработки`, но в модуле менеджера нет обязательного метода | Добавить в модуль менеджера отчёта процедуру `ПриОпределенииНастроек(Настройки) Экспорт` | -| Параметр периода в запросе СКД пуст или ошибка типа | Двойное экранирование `&` при записи текста запроса через метаданные (`&amp;`) | Перезаписать текст запроса, передавая `&` как есть | - ---- - -## 7. Обновление - -1. **Обновление типовой конфигурации:** после обновления БГУ 2.0 проверить заимствованные объекты (`Document.КассовоеПоступление`, подсистемы) — при изменении типовой структуры требуется повторное заимствование реквизитов и повторная сборка расширения. -2. **Обновление расширения:** пересобрать проект в EDT → сформировать `.cfe` → обновить расширение в 1С:Предприятие → перезапустить сеансы. -3. После обновления прогнать приёмочные сценарии из раздела 5. -4. **Обновление БСП / типовой:** в расширение заимствованы объекты БСП (`ПодключаемыеОтчетыИОбработки`, `ВариантыОтчетовПереопределяемый`, общая форма `ФормаОтчета`). После обновления типовой их состав нужно проверять и при необходимости перезаимствовать — расширение несёт их копии. -5. **Перед любым обновлением** — резервная копия информационной базы. - ---- - -## 8. Ограничения и известные особенности - -1. **Период платежа не разбирается** — для заполнения расшифровки он не используется. -2. **Поиск ребёнка по ФИО не выполняется** (ФИО не уникально); идентификатор — только лицевой счёт. -3. **Сад в шапке кассового поступления не определяется** — организация в документе это ЦБ; сад виден только по строкам. -4. **Остатки в рабочем месте — без разреза по саду** (только ИФО): в проводках по 205.31/304.04 нет разреза по учреждению. -5. **Отбор/вывод вида операции «начальное сальдо»** в оборотной ведомости не реализован. -6. **Смена лицевого счёта ребёнка** не переидентифицирует ранее загруженные платежи. -7. **Массовый повторный разбор** существующих документов не автоматизирован — доввод выполняется по документу вручную. -8. **Отчёт «Оборотная ведомость» переведён на штатные механизмы БСП**: структура (учреждение → ребёнок) и выводимые поля заданы в схеме компоновки данных, период — стандартный параметр `Период` с вычисляемыми границами; отчёт открывается общей формой отчёта БСП. Программная сборка структуры из модуля отчёта убрана. -9. **Вывод поля периода в шапке отчёта** (в общей форме БСП) и **размещение отчёта в разделе** «Родительская плата» — в доработке. - ---- - -## 9. Сопровождение - -При обращении фиксировать: - -- документ (вид, дата, номер), организацию, период; -- номер строки расшифровки платежа и текст назначения платежа; -- полный текст сообщения системы; -- действия, приведшие к ошибке. - -Разбор инцидентов «строка не распознана» начинается с проверки справочника «Дети» (код = лицевой счёт, заполнен контрагент) и наличия договора у контрагента. diff --git a/docs/РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md b/docs/РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md index c70225e..34e9aef 100644 --- a/docs/РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md +++ b/docs/РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md @@ -1,246 +1,162 @@ # РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0) -**Конфигурация:** Бухгалтерия государственного учреждения, редакция 2.0 (БГУ 2.0), платформа 8.5.1 -**Расширение:** `153_ЦБ_ОУО_БГУ.ПрофиСофт` (префикс объектов `ПС_`) -**Версия документа:** 1.1 от 07.10.2026 +Расширение: `153_ЦБ_ОУО_БГУ.ПрофиСофт`, **версия 1.0.3** +Документ актуален на 29.10.2026. + +Руководство для бухгалтера ЦБ ОУО и бухгалтера детского сада. Установку, настройку и обновление см. в «РУКОВОДСТВО АДМИНИСТРАТОРА». --- -## 1. Общие сведения +## 1. Кто что делает -### 1.1. Назначение - -Расширение реализует учёт **родительской платы** в схеме «детский сад → централизованная бухгалтерия (ЦБ)»: - -- начисление платы ведётся в садах (типовым документом БГУ); -- начисления **передаются в ЦБ** документом «Передача задолженности в ЦБ» с печатной формой извещения (ф. 0504805); -- ЦБ **принимает** задолженность документом «Принятие задолженности от учреждения»; -- платежи родителей, поступающие реестром из СУФД, **автоматически идентифицируются** по назначению платежа; -- расчёты контролируются в **рабочем месте «Управление расчётами по родительской плате»**. - -### 1.2. Роли - -| Роль | Кто | Что делает | +| Сторона | Роль в учёте | Что делает в системе | |---|---|---| -| Бухгалтер сада | ПБС, лицевой счёт 03 | Начисление, передача задолженности в ЦБ, печать извещения | -| Бухгалтер ЦБ | АДБ, лицевой счёт 04 | Принятие задолженности, загрузка реестров платежей, идентификация платежей, контроль расчётов | +| **Детский сад** | начисляет родительскую плату (счёт 205.31) | ведёт начисления, **принимает** переданные ЦБ платежи, подписывает извещение | +| **ЦБ ОУО** | администратор кассовых поступлений | принимает деньги в бюджет, ведёт расчёты с садами, **передаёт** садам поступившие суммы | -### 1.3. Термины - -| Термин | Значение | -|---|---| -| ЦБ | Централизованная бухгалтерия — организация, в которой ведётся учёт и принимаются платежи | -| Сад | Дошкольное учреждение (ПБС), начисляющее плату | -| Лицевой счёт ребёнка | Код ребёнка в справочнике «Дети» (синоним «Лицевой счёт», 15 символов, например `Х000012877`) | -| Расшифровка платежа | Табличная часть документа «Кассовое поступление», по строке на каждого плательщика | -| Назначение платежа | Текст из реестра СУФД; в расшифровке платежа хранится в реквизите «Примечание» | +Движение данных всегда одно и то же: **деньги пришли в ЦБ → ЦБ передал их в сад → сад принял**. --- -## 2. Начало работы +## 2. Где что находится -### 2.1. Открытие рабочего места - -1С:Предприятие → раздел **«Платное обучение»** → **«Сервис»** → обработка **«Управление расчётами по родительской плате»**. - -### 2.2. Отборы и период - -В верхней части формы расположена группа **«Параметры периода»**: - -| Поле | Назначение | +| Что нужно | Где в 1С | |---|---| -| **Период** | Стандартный период. По умолчанию — «Этот месяц». Если период не заполнен, таблицы очищаются и выводится сообщение | -| **Организация (ЦБ)** | Организация централизованной бухгалтерии. При открытии подставляется автоматически из константы «Организация централизованная бухгалтерия» | -| **ИФО** | Источник финансового обеспечения | -| **Учреждение (сад)** | Детский сад (справочник «Контрагенты») | +| Пульт управления расчётами | раздел **Родительская плата** → «Управление расчётами по родительской плате» | +| Кассовые поступления | раздел **Денежные средства** → «Кассовые поступления» | +| Передача платежей в учреждения (ЦБ) | раздел **Родительская плата** → «Передача поступивших платежей в учреждения» | +| Принятие платежей из ЦБ (сад) | раздел **Родительская плата** → «Принятие поступивших платежей из ЦБ» | +| Оборотная ведомость | кнопка **«Оборотная ведомость»** на пульте | -Кнопки: - -- **«Обновить»** — пересчитать все таблицы по установленным отборам; -- **«Оборотная ведомость»** — открыть отчёт с текущими отборами и периодом. - -### 2.3. Страницы рабочего места - -| Страница | Содержание | -|---|---| -| **Документы** | Документы принятия задолженности (ЦБ) и передачи задолженности (сад), колонка «Начальное сальдо» | -| **Начисления** | Документы «Начисление родительской платы» за период | -| **Сверка «передано / принято»** | Сопоставление переданных и принятых сумм по каждому документу передачи | -| **Остатки и обороты** | Остатки и обороты по счетам 205.31 и 304.04 в разрезе ИФО | -| **Кассовые поступления** | Документы «Кассовое поступление» с признаком «Родительская плата» и числом нераспознанных строк | - -> Значения отборов сопоставляются между справочниками «Организации» и «Контрагенты» по ИНН. Если сопоставление не удалось, таблицы очищаются и выводится причина. +Если раздела «Родительская плата» не видно — у пользователя нет прав. Обратитесь к администратору (см. «Руководство администратора», раздел «Роли и права»). --- -## 3. Работа с документами +## 3. Ежедневно: кассовое поступление (ЦБ) -### 3.1. Начисление родительской платы (сад) +1. Открыть «Кассовое поступление», создать новый документ. +2. Заполнить шапку: организация — ЦБ, дата, счёт, ИФО. +3. Корреспондирующий счёт — **«прочие счета»**, типовая операция — специальная копия (её заводит администратор при внедрении). +4. Установить признак **«Родительская плата»**. Без него приход по взаиморасчётам не сформируется. +5. Заполнить таблицу «Расшифровка платежа». В колонке «Примечание» — назначение платежа из выписки. +6. Записать документ. По каждой распознанной строке автоматически заполняются: + - **контрагент** (родитель), + - **ребёнок**, + - **договор**, + - **счёт расчётов** 205.31, + - **КОСГУ назначения платежа** 131, + - **КФО** — из настроек лицевого счёта (раздел счёта → допустимые КФО; подставляется первый по порядку, как в типовых формах). +7. Провести документ. -Выполняется **типовым** документом БГУ «Начисление родительской платы». Расширение его не меняет. Начисления видны в рабочем месте на странице «Начисления» и служат основанием для передачи задолженности в ЦБ. +Уже заполненные вручную значения при записи **не перезаписываются** — ручная правка сохраняется. -### 3.2. Передача задолженности в ЦБ (сад) +### 3.1. Формат назначения платежа -**Документ:** «Передача задолженности в ЦБ». - -| Реквизит | Что указывать | -|---|---| -| Организация | Сад (ПБС) | -| ИФО | Источник финансового обеспечения сада | -| ЦБ | Централизованная бухгалтерия (получатель) | -| Период | Месяц начисления | -| Документ начисления | Основание — документ «Начисление родительской платы» | -| Сумма документа | Итог по табличной части | -| Счёт-корреспондент | По умолчанию 304.04 | -| КЭК корреспондент | По умолчанию 131 | - -Табличная часть **«Задолженность»**: контрагент (родитель), договор, ребёнок, сумма, КПС, КЭК. - -**Проводки:** Дт 304.04 — Кт 205.31 (счёт и КЭК корреспондирующей стороны берутся из реквизитов документа). - -**Печать:** команда печати формирует **извещение (ф. 0504805)** по данным документа. - -#### Режим «Начальное сальдо» - -Для переноса сальдо на момент запуска системы: - -1. установите признак **«Начальное сальдо»**; -2. нажмите **«Заполнить по остаткам счёта 205.31»** — табличная часть заполнится остатками на дату документа (строки можно править и добавлять); -3. при необходимости скорректируйте счёт-корреспондент и КЭК; -4. проведите документ и распечатайте извещение. - -В этом режиме поле «Документ начисления» скрыто и не требуется. Переплаты вводятся **отрицательной суммой** в строке. - -> Если у сада остатки по 205.31 лежат в нескольких ИФО или КФО, команда заполнения предупреждает об этом — такое сальдо переносится отдельными документами. - -### 3.3. Принятие задолженности от учреждения (ЦБ) - -**Документ:** «Принятие задолженности от учреждения». Удобнее всего вводить **на основании** документа передачи — тогда организация, учреждение, период, суммы и табличная часть заполнятся автоматически. - -**Проводки:** Дт 205.31 — Кт 304.04. Документ также формирует движения регистра «Взаиморасчёты по родительской плате». - -**Печать:** извещение (ф. 0504805), зеркальная сторона. - -После ввода документа проверьте страницу **«Сверка «передано / принято»»**: расхождения по суммам должны быть нулевыми. - ---- - -## 4. Кассовые поступления и идентификация платежей - -### 4.1. Как появляется документ - -Реестр платежей из СУФД загружается **штатным механизмом БГУ** («Импорт данных из файлов платёжных поручений на общую сумму с реестром»). В результате создаётся документ **«Кассовое поступление»**, а строки реестра попадают в табличную часть **«Расшифровка платежа»**. - -Расширение не разбирает XML: работа идёт по факту записи документа с признаком **«Родительская плата»**. - -### 4.2. Что заполняется автоматически - -При записи документа система заполняет в строках расшифровки платежа: - -| Реквизит | Значение | -|---|---| -| **Ребёнок** | Найден по лицевому счёту из назначения платежа | -| **Контрагент** | Родитель (плательщик) из карточки ребёнка | -| **Договор** | По правилам п. 4.3 | -| **Счёт расчётов** | 205.31 | -| **КОСГУ назначения платежа** | 131 | - -Идентификация выполняется по **лицевому счёту**: он уникален для ЦБ и всех подшефных садов, поэтому отбор по организации не применяется. - -### 4.3. Правила определения договора - -1. Если по счёту 205.31 есть остатки у контрагента — договор берётся **из остатков**. -2. Иначе — **единственный** договор, отобранный по контрагенту. -3. Если договоров нет или их больше одного — выводится диагностическое сообщение, поле остаётся **пустым**. - -### 4.4. Что не перезаписывается - -- Строки, в которых **уже заполнен ребёнок**, повторно не обрабатываются (признак «строка уже обработана»). -- Счёт расчётов заполняется только в пустое поле. -- Исключение — **КОСГУ**: код «000», который проставляет типовая загрузка, принудительно заменяется на 131. - -Поэтому повторная запись уже обработанного документа безопасна: ручные правки сохраняются. - -### 4.5. Проведение документа: закрытие задолженности - -При **проведении** документа «Кассовое поступление» с признаком «Родительская плата» задолженность закрывается: по каждой строке расшифровки, в которой определён ребёнок и договор, формируется **расход** по регистру «Взаиморасчёты по родительской плате» (оплата родительской платы). Сумма платежа уменьшает остаток по ребёнку. - -Разрезы движения берутся из строки расшифровки: ребёнок, плательщик (контрагент), договор, учреждение (сад) — по лицевому счёту; КФО и КПС — из расшифровки платежа; ИФО — из шапки документа. - -Если задолженности нет, образуется **отрицательный остаток** — это переплата; в учёте она допустима (в бухгалтерском учёте отражается по кредиту счёта). - -### 4.6. Контроль нераспознанных строк - -Рабочее место → страница **«Кассовые поступления»**: - -| Колонка | Значение | -|---|---| -| Строк всего | Количество строк расшифровки платежа в документе | -| **Строк не распознано** | Строки, в которых не определён ребёнок — требуют ручного доввода | - -Порядок работы: - -1. найдите документ с ненулевой колонкой «Строк не распознано»; -2. откройте документ и прочитайте сообщения (см. п. 5); -3. заполните строку вручную и запишите документ. - -### 4.7. Формат назначения платежа - -Реестр СУФД передаёт назначение платежа шестью фрагментами через запятую: +Для реестровых поступлений назначение разбирается по запятым, порядок частей фиксированный: ``` -ГКДОУ д/с №17 Сказка, л/с 03003001013, л/с Х000012877, Долгих Анна Артемовна, вторая группа ран.возр, май +ГКДОУ д/с №26 Красная шапочка,л/с 03003001079,л/с X000013125,Саттыбекова Айлин Султановна,вторая группа ран.возр,Июнь ``` -| № | Фрагмент | Как используется | +| Часть | Содержание | Куда попадает | |---|---|---| -| 1 | Наименование ДОУ | справочно | -| 2 | Лицевой счёт сада | справочно | -| 3 | **Лицевой счёт ребёнка** | **основной идентификатор** (код в справочнике «Дети») | -| 4 | ФИО ребёнка | справочно | -| 5 | Группа | справочно | -| 6 | Период | справочно (для заполнения расшифровки не используется) | +| 1 | наименование учреждения | не переносится | +| 2 | лицевой счёт учреждения | «Расчётный счёт» в реестре | +| 3 | лицевой счёт ребёнка | по нему определяется ребёнок | +| 4 | ФИО ребёнка | используется для поиска | +| 5 | группа | «Группа» в реестре | +| 6 | период оплаты (месяц) | «Период оплаты» в реестре | -Лицевой счёт ищется после последнего фрагмента «л/с»; латинская буква `X` приравнивается к кириллической `Х`, допускается вариант записи без буквы. +Лицевой счёт ребёнка ищется после последнего «л/с»; латинская `X` и кириллическая `Х` считаются одинаковыми, наличие/отсутствие буквы перед цифрами тоже допускается. + +**Разовый платёж от родителя** (не по реестру): достаточно указать `л/с X000013125`. Ребёнок определится, реквизиты реестра останутся пустыми — это нормальный режим. + +### 3.2. Что проверить после проведения + +На пульте, страница **«Кассовые поступления»**, колонка **«Строк не распознано»**. Если там не ноль — в этих строках ребёнок не определён, при передаче в сад они уйдут без реквизитов. Причины и что делать — раздел 8. --- -## 5. Диагностические сообщения +## 4. Ежемесячно: передача платежей в сад (ЦБ) -Сообщения выводятся при записи документа «Кассовое поступление» и при работе в рабочем месте. +1. Открыть «Передача поступивших платежей в учреждения», создать документ. +2. Указать: организация — ЦБ, **учреждение (один сад)**, период, ИФО. +3. Нажать **«Заполнить по поступившим платежам»**. Подбираются платежи, поступившие в ЦБ и ещё не переданные этому саду; реквизиты реестра подтягиваются из назначения платежа. +4. Проверить таблицу «Задолженность»: суммы, дети, договоры. Итог по колонке «Сумма» попадает в сумму документа. +5. Провести документ. Бухгалтерских проводок документ не формирует — он делает расход по регистру взаиморасчётов. +6. Нажать **«Создать приём платежей»** — создаётся документ принятия у сада и сразу открывается. Повторное нажатие открывает уже созданный документ, дубль не появляется. +7. Нажать **«Реестр платежей»** — печатная форма для сада. +8. Нажать **«Создать извещение»** — формируется исходящее извещение ф. 0504805. Повторное нажатие открывает существующее. -| Сообщение | Причина | Действия | -|---|---|---| -| «Кассовое поступление …, строка …: контрагент не определён — не найден ребёнок с лицевым счётом …» | Лицевого счёта нет в справочнике «Дети» | Проверить код ребёнка: должен совпадать с лицевым счётом (без лишних символов и пробелов). Заполнить строку вручную | -| «… контрагент не определён — не удалось определить лицевой счёт ребёнка» | В назначении платежа нет фрагмента «л/с …» | Проверить текст назначения платежа, заполнить строку вручную | -| «… контрагент не определён — у ребёнка … не заполнен контрагент» | В карточке ребёнка не заполнен контрагент (родитель) | Заполнить контрагента в карточке ребёнка | -| «в плане счетов ЕПСБУ не найден счёт 205.31 — счёт расчётов не заполнен» | Не настроен план счетов | Обратиться к сопровождению | -| «в справочнике КОСГУ не найден код 131 — КОСГУ назначения платежа не заполнен» | Не настроен справочник КОСГУ | Обратиться к сопровождению | -| «Остатки и обороты не рассчитаны: в плане счетов ЕПСБУ не найден счет 205.31 и/или 304.04» | Не настроен план счетов | Обратиться к сопровождению | -| «Остатки не рассчитаны: не найдены остатки по счёту 205.31 …» | По счёту нет остатков на дату / по организации | Проверить дату и организацию | -| «Заполнение по остаткам невозможно: в плане счетов ЕПСБУ не найден счет 205.31» | Не настроен план счетов | Обратиться к сопровождению | -| Предупреждение о том, что отбор по учреждению на остатки не влияет | Остатки берутся из проводок, где разрез по саду отсутствует | Учитывать при анализе | -| Сообщение о невозможности сопоставить организацию и контрагента по ИНН | Расхождение ИНН в справочниках | Проверить ИНН организации и контрагента | +**Важно:** документ адресный — один сад на документ. Если в остатках оказались разные ИФО или КФО, система предупредит: передайте их отдельными документами. --- -## 6. Отчёты +## 5. Ежемесячно: принятие платежей из ЦБ (сад) -| Отчёт | Как открыть | Что показывает | -|---|---|---| -| **Оборотная ведомость по расчётам по родительской плате** | Кнопка «Оборотная ведомость» в рабочем месте | Обороты и остатки по регистру взаиморасчётов в разрезе учреждений и детей (колонки: остаток на начало, приход, расход, остаток на конец); отборы и период передаются из рабочего места. Если период не задан, показываются все данные | -| **Остатки и обороты** | Страница рабочего места | Остатки и обороты по счетам 205.31 и 304.04 в разрезе ИФО | -| **Сверка «передано / принято»** | Страница рабочего места | Суммы переданные и принятые по каждому документу передачи, расхождение | -| Извещение (ф. 0504805) | Команда печати в документах передачи и принятия | Печатная форма для передачи в ЦБ и сад | +1. Открыть документ принятия — проще всего из документа передачи кнопкой **«Создать приём платежей»**, тогда шапка и строки заполнятся автоматически. +2. Если создаёте вручную: указать организацию (сад), заполнить «Документ передачи», нажать **«Заполнить по документу передачи»**. +3. Проверить строки: суммы, дети, договоры. +4. Заполнить реквизит **«Вид платежа в бюджет»** — он нужен для аналитики счёта 303.05. +5. Провести документ: построчно формируются проводки `Дт 303.05.831 Кт 205.31.660`. +6. Нажать **«Реестр платежей»**, затем **«Создать извещение»** — создаётся входящее извещение со ссылкой на извещение ЦБ. + +Проверить проводки можно кнопкой **«Просмотр бухгалтерских записей»** в обоих документах. --- -## 7. Ограничения и особенности +## 6. Пульт «Управление расчётами по родительской плате» -1. **Период платежа не разбирается** — для заполнения расшифровки платежа он не нужен (начисление сопоставляется по контрагенту и ребёнку). -2. **Поиск ребёнка по ФИО не выполняется** — ФИО не уникально; единственный надёжный идентификатор — лицевой счёт. -3. **Сад в шапке кассового поступления не определяется** — в документе организация — это ЦБ; сад виден только по строкам расшифровки. -4. **Остатки в рабочем месте — без разреза по саду** (только в разрезе ИФО): в проводках по 205.31/304.04 разрез по учреждению отсутствует. -5. **Отчёт по виду операции «начальное сальдо»** — отбор/вывод вида операции в оборотной ведомости пока не реализован. -6. При смене лицевого счёта ребёнка в справочнике «Дети» ранее загруженные платежи автоматически не переидентифицируются — требуется ручной доввод. -7. **Структура отчёта «Оборотная ведомость» формируется программно** (учреждение → ребёнок, с показателями). Ручные изменения структуры в форме отчёта при следующем открытии могут быть перезаписаны. +Фильтры: период, организация (ЦБ), ИФО, учреждение (сад). После изменения фильтров — кнопка **«Обновить»**. По умолчанию подставляется текущий месяц и организация ЦБ. + +| Страница | Что показывает | Зачем нужна | +|---|---|---| +| **Начисления** | документы начисления родительской платы садов за период | увидеть, что сады начислили | +| **Документы передачи** | передачи ЦБ за период | контроль, что передано | +| **Документы принятия** | принятия садов; клик по строке передачи сужает список до этого документа | увидеть, кто ещё не принял | +| **Сверка «передано / принято»** | по каждой передаче: передано, принято, расхождение | главный контроль месяца | +| **Остатки и обороты** | остатки по регистру взаиморасчётов: верхняя таблица — по садам, нижняя — по детям (клик по саду) | понять, что осталось у ЦБ | +| **Кассовые поступления** | поступления с признаком «Родительская плата», число строк и число нераспознанных | найти строки, требующие ручной правки | + +**«Остаток у ЦБ»** = деньги поступили, но ещё не переданы в сад. Именно эту сумму и передают ежемесячно. + +Кнопка **«Оборотная ведомость»** открывает отчёт с текущими отборами (организация, учреждение, ИФО). + +--- + +## 7. Печатные формы + +| Форма | Как получить | Особенности | +|---|---|---| +| **Реестр платежей** | кнопка «Реестр платежей» в передаче и в принятии | вёрстка одна и та же для ЦБ и сада; проведение не требуется | +| **Извещение ф. 0504805** | кнопка «Печать извещения» в передаче и в принятии | печатается по строкам «Задолженности», проведение не требуется | + +В передаче печатается извещение **отправителя** (ЦБ), в принятии — **получателя** (сад). + +Не пользуйтесь типовой командой печати из самого документа `ИзвещениеИсходящее` / `ИзвещениеВходящее`: она требует проведения документа. Кнопка расширения работает и без проведения. + +--- + +## 8. Что делать, если… + +| Симптом | Причина | Действия | +|---|---|---| +| В строках расшифровки не заполнился КФО | у лицевого счёта не задан раздел с допустимыми КФО | сообщить администратору: заполнить раздел лицевого счёта и допустимые КФО | +| В расшифровке не определился ребёнок | в назначении нет лицевого счёта ребёнка или его нет в справочнике «Дети» | проверить примечание строки и лицевой счёт в справочнике | +| «У ребёнка … не заполнен контрагент» | в справочнике «Дети» не заполнен контрагент | заполнить контрагента у ребёнка | +| «По контрагенту … найдено договоров — N, договор не заполнен» | у родителя несколько договоров | указать договор в строке вручную | +| В передаче пусты лицевой счёт, расчётный счёт, группа, период оплаты, дата платежа | кассовое поступление не перепроведено после обновления расширения | перепровести кассовое поступление и заново заполнить передачу | +| «Распознан лицевой счёт ребёнка, но признак „Родительская плата“ не установлен» | снят признак (часто из-за заполненного корсчёта 303.00) | корсчёт — «прочие счета», признак установить, перепровести | +| «Поступивших платежей, ещё не переданных в учреждения, не найдено» | всё уже передано либо не тот сад/период | проверить учреждение и остатки на пульте | +| «Для организации … не найден контрагент» | нет соответствия «организация → контрагент» для извещения | сообщить администратору | +| Суммы в сверке расходятся | сад ещё не принял документ или принял частично | запросить принятие у сада | + +--- + +## 9. Что важно знать о текущей версии + +- Извещения ф. 0504805 — **обёртки**: проводок они не формируют. Проводки остаются в передаче (регистр) и в принятии (бухгалтерские). +- Изменение документа передачи или принятия **перезаполняет** связанное извещение, если оно ещё не проведено и не помечено на удаление. Проведённое извещение автоматически не меняется — его нужно распровести или создать заново. +- Повторное нажатие «Создать извещение» / «Создать приём платежей» дублей не создаёт — открывает существующий документ. +- Обмен и подписание извещений — внешними средствами ЭДО, из расширения не выполняется. +- В передачах, созданных до версии 1.0.0, реквизит «Принятие платежей» не заполнен — кнопка создаст новый документ принятия. From 00d20c7e52d383b4b00cde716b67ae9ab859830c Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Fri, 30 Oct 2026 11:15:56 +0500 Subject: [PATCH 14/19] =?UTF-8?q?docs(=D1=80=D1=83=D0=BA=D0=BE=D0=B2=D0=BE?= =?UTF-8?q?=D0=B4=D1=81=D1=82=D0=B2=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8F):=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B8=D0=BE=D0=B4=D0=B8=D1=87=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B0=D1=87=D0=B8=20?= =?UTF-8?q?=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=C2=AB=D0=B5=D0=B6=D0=B5?= =?UTF-8?q?=D0=BC=D0=B5=D1=81=D1=8F=D1=87=D0=BD=D0=BE=C2=BB,=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B0=D1=87=D0=B0=20=D1=81=D0=B2=D0=B5=D0=B4?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=BE=20=D0=BD=D0=B0=D1=87=D0=B8?= =?UTF-8?q?=D1=81=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=D1=85=20=D0=B2=20=D0=A6?= =?UTF-8?q?=D0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md | 107 +++++++++++++++--- 1 file changed, 89 insertions(+), 18 deletions(-) diff --git a/docs/РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md b/docs/РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md index 34e9aef..cba24da 100644 --- a/docs/РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md +++ b/docs/РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md @@ -1,7 +1,7 @@ # РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0) Расширение: `153_ЦБ_ОУО_БГУ.ПрофиСофт`, **версия 1.0.3** -Документ актуален на 29.10.2026. +Документ актуален на 30.10.2026. Руководство для бухгалтера ЦБ ОУО и бухгалтера детского сада. Установку, настройку и обновление см. в «РУКОВОДСТВО АДМИНИСТРАТОРА». @@ -11,10 +11,14 @@ | Сторона | Роль в учёте | Что делает в системе | |---|---|---| -| **Детский сад** | начисляет родительскую плату (счёт 205.31) | ведёт начисления, **принимает** переданные ЦБ платежи, подписывает извещение | +| **Детский сад** | начисляет родительскую плату (счёт 205.31) | ведёт начисления, передаёт сведения о начислениях в ЦБ, **принимает** переданные ЦБ платежи, подписывает извещение | | **ЦБ ОУО** | администратор кассовых поступлений | принимает деньги в бюджет, ведёт расчёты с садами, **передаёт** садам поступившие суммы | -Движение данных всегда одно и то же: **деньги пришли в ЦБ → ЦБ передал их в сад → сад принял**. +Полный цикл всегда такой: + +**сад начислил → сад сообщил начисление в ЦБ → деньги пришли в ЦБ → ЦБ передал их в сад → сад принял**. + +Первые два шага — типовые документы БГУ (раздел 4). Шаги «пришли → передал → принял» — документы расширения (разделы 5–7). --- @@ -23,6 +27,8 @@ | Что нужно | Где в 1С | |---|---| | Пульт управления расчётами | раздел **Родительская плата** → «Управление расчётами по родительской плате» | +| Начисление родительской платы | типовой документ «Начисление родительской платы» | +| Извещения ф. 0504805 | типовые документы «Извещение исходящее» и «Извещение входящее» | | Кассовые поступления | раздел **Денежные средства** → «Кассовые поступления» | | Передача платежей в учреждения (ЦБ) | раздел **Родительская плата** → «Передача поступивших платежей в учреждения» | | Принятие платежей из ЦБ (сад) | раздел **Родительская плата** → «Принятие поступивших платежей из ЦБ» | @@ -32,7 +38,70 @@ --- -## 3. Ежедневно: кассовое поступление (ЦБ) +## 3. Как часто выполнять передачу и принятие + +В расширении **нет привязки к календарному месяцу**: передачу поступивших платежей и их принятие можно делать за любой период — за день, за неделю, за месяц. Ограничений в программе нет, период на пульте выбирается любой. + +| Режим | Как выглядит | Когда удобен | +|---|---|---| +| **Ежедневный (оперативный)** | ЦБ каждый день передаёт суммы, поступившие за день; сад принимает их на следующий день | остаток у ЦБ близок к нулю, взаиморасчёты видны в любой момент | +| **Периодический** | передача раз в несколько дней или раз в неделю | меньше документов, контроль чаще, чем раз в месяц | +| **Месячный** | одна передача по итогам месяца | минимальный документооборот | + +Выбранная периодичность фиксируется регламентом взаимодействия и учётной политикой. Внутри периода действует простое правило: **передавать и принимать можно столько раз, сколько нужно** — каждая передача забирает только те суммы, которые ещё не переданы. + +Что важно при любом режиме: + +- документ передачи адресный — один сад на документ; +- передача забирает остаток на момент документа, поэтому дважды одну сумму не отправит; +- сверка «передано / принято» на пульте строится за выбранный период, её рекомендуется делать не реже раза в месяц. + +--- + +## 4. Передача сведений о начислениях в ЦБ (сад → ЦБ) + +Типовые операции БГУ, расширением не автоматизируются. Нужны, чтобы ЦБ знал, сколько денег должно поступить, и мог сопоставить это с фактическими платежами. + +### 4.1. Начисление родительской платы (сад) + +Сад формирует начисление родительской платы типовым документом и проводит его: + +``` +Дт 205.31.560 Кт 401.10.131 +``` + +Счёт 205.31 ведётся **только садом**. У ЦБ этого счёта по родительской плате нет. + +### 4.2. Исходящее извещение «Начисление дохода» (сад) + +На основании начисления сад формирует **исходящее извещение ф. 0504805** с видом **«Начисление дохода»** — одной суммой по учреждению, без построчной расшифровки по детям: + +``` +Дт 304.04.131 (КПС КРБ, КВР 801) Кт 303.05.731 +``` + +Извещение направляется в ЦБ средствами ЭДО либо на бумаге. + +### 4.3. Входящее извещение «Начисление дохода» (ЦБ) + +ЦБ регистрирует полученное извещение **входящим извещением ф. 0504805** того же вида: + +``` +Дт 303.05.831 Кт 304.04.131 (КПС КДБ, АГПДБ 191) +``` + +Сумма этого извещения — **ожидаемые поступления**: контрольная величина, с которой потом сопоставляются фактические платежи. + +### 4.4. Что важно знать + +- Извещения о начислениях передаются **сводно, общими суммами по учреждению**. Построчная детализация по детям здесь не нужна — она содержится в реестре платежей (раздел 9). +- Сроки: начисление — до 5-го числа месяца, следующего за расчётным; извещение в ЦБ — до 10-го. Точные сроки — по регламенту. +- Остаток на счёте 303.05 (начислено минус поступило) — это разрыв сроков начисления и оплаты, а не ошибка. +- Счёт 304.04 у обеих сторон накапливает внутриведомственные расчёты и закрывается при завершении финансового года. + +--- + +## 5. Ежедневно: кассовое поступление (ЦБ) 1. Открыть «Кассовое поступление», создать новый документ. 2. Заполнить шапку: организация — ЦБ, дата, счёт, ИФО. @@ -50,7 +119,7 @@ Уже заполненные вручную значения при записи **не перезаписываются** — ручная правка сохраняется. -### 3.1. Формат назначения платежа +### 5.1. Формат назначения платежа Для реестровых поступлений назначение разбирается по запятым, порядок частей фиксированный: @@ -71,13 +140,13 @@ **Разовый платёж от родителя** (не по реестру): достаточно указать `л/с X000013125`. Ребёнок определится, реквизиты реестра останутся пустыми — это нормальный режим. -### 3.2. Что проверить после проведения +### 5.2. Что проверить после проведения -На пульте, страница **«Кассовые поступления»**, колонка **«Строк не распознано»**. Если там не ноль — в этих строках ребёнок не определён, при передаче в сад они уйдут без реквизитов. Причины и что делать — раздел 8. +На пульте, страница **«Кассовые поступления»**, колонка **«Строк не распознано»**. Если там не ноль — в этих строках ребёнок не определён, при передаче в сад они уйдут без реквизитов. Причины и что делать — раздел 10. --- -## 4. Ежемесячно: передача платежей в сад (ЦБ) +## 6. Передача поступивших платежей в сад (ЦБ) 1. Открыть «Передача поступивших платежей в учреждения», создать документ. 2. Указать: организация — ЦБ, **учреждение (один сад)**, период, ИФО. @@ -86,45 +155,45 @@ 5. Провести документ. Бухгалтерских проводок документ не формирует — он делает расход по регистру взаиморасчётов. 6. Нажать **«Создать приём платежей»** — создаётся документ принятия у сада и сразу открывается. Повторное нажатие открывает уже созданный документ, дубль не появляется. 7. Нажать **«Реестр платежей»** — печатная форма для сада. -8. Нажать **«Создать извещение»** — формируется исходящее извещение ф. 0504805. Повторное нажатие открывает существующее. +8. Нажать **«Создать извещение»** — формируется исходящее извещение ф. 0504805 (вид «Получение дохода»). Повторное нажатие открывает существующее. **Важно:** документ адресный — один сад на документ. Если в остатках оказались разные ИФО или КФО, система предупредит: передайте их отдельными документами. --- -## 5. Ежемесячно: принятие платежей из ЦБ (сад) +## 7. Принятие платежей из ЦБ (сад) 1. Открыть документ принятия — проще всего из документа передачи кнопкой **«Создать приём платежей»**, тогда шапка и строки заполнятся автоматически. 2. Если создаёте вручную: указать организацию (сад), заполнить «Документ передачи», нажать **«Заполнить по документу передачи»**. 3. Проверить строки: суммы, дети, договоры. 4. Заполнить реквизит **«Вид платежа в бюджет»** — он нужен для аналитики счёта 303.05. 5. Провести документ: построчно формируются проводки `Дт 303.05.831 Кт 205.31.660`. -6. Нажать **«Реестр платежей»**, затем **«Создать извещение»** — создаётся входящее извещение со ссылкой на извещение ЦБ. +6. Нажать **«Реестр платежей»**, затем **«Создать извещение»** — создаётся входящее извещение (вид «Получение дохода») со ссылкой на извещение ЦБ. Проверить проводки можно кнопкой **«Просмотр бухгалтерских записей»** в обоих документах. --- -## 6. Пульт «Управление расчётами по родительской плате» +## 8. Пульт «Управление расчётами по родительской плате» -Фильтры: период, организация (ЦБ), ИФО, учреждение (сад). После изменения фильтров — кнопка **«Обновить»**. По умолчанию подставляется текущий месяц и организация ЦБ. +Фильтры: период, организация (ЦБ), ИФО, учреждение (сад). После изменения фильтров — кнопка **«Обновить»**. По умолчанию подставляется текущий месяц и организация ЦБ; период можно поставить любой — день, неделю, месяц. | Страница | Что показывает | Зачем нужна | |---|---|---| | **Начисления** | документы начисления родительской платы садов за период | увидеть, что сады начислили | | **Документы передачи** | передачи ЦБ за период | контроль, что передано | | **Документы принятия** | принятия садов; клик по строке передачи сужает список до этого документа | увидеть, кто ещё не принял | -| **Сверка «передано / принято»** | по каждой передаче: передано, принято, расхождение | главный контроль месяца | +| **Сверка «передано / принято»** | по каждой передаче: передано, принято, расхождение | главный контроль периода | | **Остатки и обороты** | остатки по регистру взаиморасчётов: верхняя таблица — по садам, нижняя — по детям (клик по саду) | понять, что осталось у ЦБ | | **Кассовые поступления** | поступления с признаком «Родительская плата», число строк и число нераспознанных | найти строки, требующие ручной правки | -**«Остаток у ЦБ»** = деньги поступили, но ещё не переданы в сад. Именно эту сумму и передают ежемесячно. +**«Остаток у ЦБ»** = деньги поступили, но ещё не переданы в сад. При ежедневном режиме он близок к нулю, при месячном — накапливается до даты передачи; и в том и в другом случае это ровно та сумма, которую предстоит передать. Кнопка **«Оборотная ведомость»** открывает отчёт с текущими отборами (организация, учреждение, ИФО). --- -## 7. Печатные формы +## 9. Печатные формы | Форма | Как получить | Особенности | |---|---|---| @@ -137,7 +206,7 @@ --- -## 8. Что делать, если… +## 10. Что делать, если… | Симптом | Причина | Действия | |---|---|---| @@ -150,13 +219,15 @@ | «Поступивших платежей, ещё не переданных в учреждения, не найдено» | всё уже передано либо не тот сад/период | проверить учреждение и остатки на пульте | | «Для организации … не найден контрагент» | нет соответствия «организация → контрагент» для извещения | сообщить администратору | | Суммы в сверке расходятся | сад ещё не принял документ или принял частично | запросить принятие у сада | +| На счёте 303.05 остаток | начислено больше, чем поступило: разрыв сроков оплаты | норма; при систематическом росте — разбирать задолженность родителей | --- -## 9. Что важно знать о текущей версии +## 11. Что важно знать о текущей версии - Извещения ф. 0504805 — **обёртки**: проводок они не формируют. Проводки остаются в передаче (регистр) и в принятии (бухгалтерские). - Изменение документа передачи или принятия **перезаполняет** связанное извещение, если оно ещё не проведено и не помечено на удаление. Проведённое извещение автоматически не меняется — его нужно распровести или создать заново. - Повторное нажатие «Создать извещение» / «Создать приём платежей» дублей не создаёт — открывает существующий документ. - Обмен и подписание извещений — внешними средствами ЭДО, из расширения не выполняется. +- Извещения о начислениях (вид «Начисление дохода») и регистрация ожидаемых поступлений — типовые документы БГУ, расширением не автоматизируются. - В передачах, созданных до версии 1.0.0, реквизит «Принятие платежей» не заполнен — кнопка создаст новый документ принятия. From 4a35751282589a858cb19d9001bd032c78f33564 Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Mon, 2 Nov 2026 13:03:56 +0500 Subject: [PATCH 15/19] =?UTF-8?q?feat:=20=D0=B4=D0=BE=D0=B3=D0=BE=D0=B2?= =?UTF-8?q?=D0=BE=D1=80=D1=8B=20=D0=BF=D0=BE=20=D0=BE=D1=80=D0=B3=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D1=80=D0=B5=D0=B1?= =?UTF-8?q?=D1=91=D0=BD=D0=BA=D0=B0=20=D0=B8=20=D0=B1=D0=B5=D0=B7=20=D0=B0?= =?UTF-8?q?=D1=80=D1=85=D0=B8=D0=B2=D0=B0,=20=D0=B0=D0=B2=D1=82=D0=BE?= =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D1=83=D0=BB=D1=8C=D1=82=D0=B0,=20=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=81=D0=B8=D1=8F=201.0.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ПС_РазборПлатежейПоРодительскойПлате/Module.bsl | 83 +++- .../src/Configuration/Configuration.mdo | 8 +- .../Forms/Форма/Form.form | 16 + .../Forms/Форма/Module.bsl | 52 +++ .../src/Roles/ПС_ЗаписьРодительскойПлаты/Rights.rights | 391 +++++++++++++++++- 5 files changed, 517 insertions(+), 33 deletions(-) diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl index 536a9df..d7127fe 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl @@ -59,6 +59,7 @@ // Второй проход: отбор строк, по которым ребёнок и его контрагент определены однозначно. СтрокиКЗаполнению = Новый Массив; Контрагенты = Новый Соответствие; + ОрганизацииКонтрагентов = Новый Соответствие; Для Каждого ДанныеПлатежа Из РазобранныеСтроки Цикл @@ -83,6 +84,9 @@ СтрокиКЗаполнению.Добавить(СтрокаКЗаполнению); Контрагенты.Вставить(Ребенок.Контрагент, Истина); + // Договор ищется только по организации ребёнка: при переводе ребёнка из сада в сад + // у родителя остаются договоры прежних учреждений. + ОрганизацииКонтрагентов.Вставить(Ребенок.Контрагент, Ребенок.Организация); КонецЦикла; @@ -107,7 +111,7 @@ КонецЕсли; // Договоры определяются одним запросом сразу по всем контрагентам документа. - Договоры = ДоговорыПоКонтрагентам(Контрагенты, ДокументОбъект, СчетРасчетов); + Договоры = ДоговорыПоКонтрагентам(Контрагенты, ОрганизацииКонтрагентов, ДокументОбъект, СчетРасчетов); // КФО строк берётся из настройки лицевого счёта: раздел счёта -> допустимые КФО. // Используется типовой механизм, поэтому выбор совпадает с поведением типовых форм: @@ -209,6 +213,8 @@ // // Параметры: // Контрагенты - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты (дети) документа. +// ОрганизацииКонтрагентов - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Организации - +// организация ребёнка по контрагенту. Пустая ссылка - отбор по организации не применяется. // ДокументОбъект - ДокументОбъект.КассовоеПоступление - документ, по дате и организации которого ищутся остатки. // СчетРасчетов - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы (205.31). // @@ -216,7 +222,7 @@ // Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - договоры по контрагентам, // определённые однозначно. // -Функция ДоговорыПоКонтрагентам(Контрагенты, ДокументОбъект, СчетРасчетов) +Функция ДоговорыПоКонтрагентам(Контрагенты, ОрганизацииКонтрагентов, ДокументОбъект, СчетРасчетов) КонтрагентыМассив = Новый Массив; Для Каждого Элемент Из Контрагенты Цикл @@ -228,10 +234,12 @@ КоличествоДоговоров = Новый Соответствие; // 1. Договоры из остатков по счёту 205.31 - приоритетный источник. - ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ДокументОбъект, СчетРасчетов, Результат, Неоднозначные); + ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ОрганизацииКонтрагентов, ДокументОбъект, СчетРасчетов, + Результат, Неоднозначные); // 2. Для остальных контрагентов - единственный договор, отобранный по реквизиту "Контрагент". - ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, Результат, Неоднозначные, КоличествоДоговоров); + ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, ОрганизацииКонтрагентов, Результат, Неоднозначные, + КоличествоДоговоров); // 3. Диагностика по контрагентам, для которых договор определить не удалось. Для Каждого Элемент Из Контрагенты Цикл @@ -266,12 +274,15 @@ // // Параметры: // КонтрагентыМассив - Массив из СправочникСсылка.Контрагенты - контрагенты (дети), по которым ищутся остатки. +// ОрганизацииКонтрагентов - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Организации - +// организация ребёнка по контрагенту. Пустая ссылка - отбор по организации не применяется. // ДокументОбъект - ДокументОбъект.КассовоеПоступление - документ, по дате и организации которого ищутся остатки. // Счет20531 - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы (205.31). // Результат - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - дополняется найденными договорами. // Неоднозначные - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты с несколькими договорами в остатках. // -Процедура ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ДокументОбъект, Счет20531, Результат, Неоднозначные) +Процедура ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ОрганизацииКонтрагентов, ДокументОбъект, Счет20531, + Результат, Неоднозначные) Если НЕ ЗначениеЗаполнено(Счет20531) Тогда Возврат; @@ -287,15 +298,19 @@ Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Остатки.Субконто1 КАК Контрагент, - | Остатки.Субконто2 КАК Договор + | Остатки.Субконто2 КАК Договор, + | Договоры.Организация КАК Организация |ИЗ | РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Остатки( | &Дата, | Счет В ИЕРАРХИИ (&Счет20531), | &ВидыСубконто, | Организация = &Организация И Субконто1 В (&Контрагенты)) КАК Остатки + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Договоры КАК Договоры + | ПО Остатки.Субконто2 = Договоры.Ссылка |ГДЕ - | Остатки.СуммаОстаток <> 0"; + | Остатки.СуммаОстаток <> 0 + | И НЕ Договоры.ВАрхиве"; Запрос.УстановитьПараметр("Дата", ДокументОбъект.Дата); Запрос.УстановитьПараметр("Счет20531", Счет20531); Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто); @@ -309,6 +324,10 @@ Продолжить; КонецЕсли; + Если НЕ ОрганизацияДоговораПодходит(Выборка.Организация, ОрганизацииКонтрагентов[Выборка.Контрагент]) Тогда + Продолжить; + КонецЕсли; + НайденныйДоговор = Результат[Выборка.Контрагент]; Если НайденныйДоговор = Неопределено Тогда Результат.Вставить(Выборка.Контрагент, Выборка.Договор); @@ -321,24 +340,32 @@ КонецПроцедуры // Дополняет результат единственным договором, отобранным по реквизиту "Контрагент". +// Учитываются только действующие договоры (не помеченные на удаление и не находящиеся в архиве), +// организация договора должна совпадать с организацией ребёнка: при переводе ребёнка из сада в сад +// у родителя остаются договоры прежних учреждений. // // Параметры: // КонтрагентыМассив - Массив из СправочникСсылка.Контрагенты - контрагенты (дети), по которым отбираются договоры. +// ОрганизацииКонтрагентов - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Организации - +// организация ребёнка по контрагенту. Пустая ссылка - отбор по организации не применяется. // Результат - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - дополняется найденными договорами. // Неоднозначные - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты с неоднозначным договором. // КоличествоДоговоров - Соответствие из СправочникСсылка.Контрагенты, Число - количество найденных договоров. // -Процедура ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, Результат, Неоднозначные, КоличествоДоговоров) +Процедура ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, ОрганизацииКонтрагентов, Результат, Неоднозначные, + КоличествоДоговоров) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Договоры.Контрагент КАК Контрагент, - | Договоры.Ссылка КАК Договор + | Договоры.Ссылка КАК Договор, + | Договоры.Организация КАК Организация |ИЗ | Справочник.Договоры КАК Договоры |ГДЕ | НЕ Договоры.ПометкаУдаления + | И НЕ Договоры.ВАрхиве | И Договоры.Контрагент В (&Контрагенты) |УПОРЯДОЧИТЬ ПО | Договоры.Контрагент"; @@ -348,6 +375,10 @@ Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл + Если НЕ ОрганизацияДоговораПодходит(Выборка.Организация, ОрганизацииКонтрагентов[Выборка.Контрагент]) Тогда + Продолжить; + КонецЕсли; + ДоговорыКонтрагента = Найденные[Выборка.Контрагент]; Если ДоговорыКонтрагента = Неопределено Тогда ДоговорыКонтрагента = Новый Массив; @@ -371,6 +402,29 @@ КонецПроцедуры +// Проверяет, что договор относится к организации ребёнка. +// +// При переводе ребёнка из сада в сад по нему остаются договоры прежних учреждений, +// поэтому договор без проверки организации выбирается неверно. +// +// Параметры: +// ОрганизацияДоговора - СправочникСсылка.Организации - организация, указанная в договоре. +// ОрганизацияРебенка - СправочникСсылка.Организации - текущая организация ребёнка; +// пустая ссылка или Неопределено - отбор по организации не применяется. +// +// Возвращаемое значение: +// Булево - Истина, если договор подходит; Ложь - если относится к другой организации. +// +Функция ОрганизацияДоговораПодходит(ОрганизацияДоговора, ОрганизацияРебенка) + + Если НЕ ЗначениеЗаполнено(ОрганизацияРебенка) Тогда + Возврат Истина; + КонецЕсли; + + Возврат ОрганизацияДоговора = ОрганизацияРебенка; + +КонецФункции + // Заполняет реквизиты строк расшифровки платежа по результатам разбора назначения. // КОСГУ "000", проставленный типовой загрузкой реестров, заменяется принудительно; // остальные заполненные значения не перезаписываются. @@ -678,7 +732,8 @@ | Дети.Код КАК Код, | Дети.Ссылка КАК Ссылка, | Дети.Наименование КАК Наименование, - | Дети.Контрагент КАК Контрагент + | Дети.Контрагент КАК Контрагент, + | Дети.Организация КАК Организация |ИЗ | Справочник.Дети КАК Дети |ГДЕ @@ -688,8 +743,12 @@ Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл - Результат.Вставить(СокрЛП(Выборка.Код), Новый Структура("Ссылка, Наименование, Контрагент", - Выборка.Ссылка, Выборка.Наименование, Выборка.Контрагент)); + Ребенок = Новый Структура; + Ребенок.Вставить("Ссылка", Выборка.Ссылка); + Ребенок.Вставить("Наименование", Выборка.Наименование); + Ребенок.Вставить("Контрагент", Выборка.Контрагент); + Ребенок.Вставить("Организация", Выборка.Организация); + Результат.Вставить(СокрЛП(Выборка.Код), Ребенок); КонецЦикла; Возврат Результат; diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo index 136d7f6..7dc1313 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo @@ -11,6 +11,8 @@ Checked Checked Checked + Extended + Extended Extended @@ -28,8 +30,10 @@ PersonalComputer Russian Role.ПС_ОсновнаяРоль - 1.0.3 + 1.0.4 Language.Русский + + TaxiEnableVersion8_2 Русский @@ -52,6 +56,8 @@ CommonPicture.ОтменитьДействие CommonPicture.ПовторитьДействие CommonPicture.Сумма + CommonPicture.ПС_Лого_Родительская_Плата + CommonPicture.ПС_Заставка_Родительская_Плата Role.ПС_ОсновнаяРоль Role.БазовыеПраваБГУ Role.ПС_ЧтениеРодительскойПлаты diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form index 7266f66..76c5480 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form @@ -22,6 +22,10 @@ Объект.Период + + OnChange + ПериодПриИзменении + ПолеПериодРасширеннаяПодсказка 13 @@ -67,6 +71,10 @@ Объект.Организация + + OnChange + ОрганизацияПриИзменении + ПолеОрганизацияРасширеннаяПодсказка 16 @@ -112,6 +120,10 @@ Объект.ИФО + + OnChange + ИФОПриИзменении + ПолеИФОРасширеннаяПодсказка 19 @@ -157,6 +169,10 @@ Объект.Учреждение + + OnChange + УчреждениеПриИзменении + ПолеУчреждениеРасширеннаяПодсказка 307 diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl index 12738e6..9b1614f 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl @@ -22,6 +22,58 @@ #КонецОбласти +#Область ОбработчикиСобытийЭлементовШапкиФормы + +// Обновляет таблицы пульта при изменении периода отбора. +// +// Параметры: +// Элемент - ПолеФормы - изменённое поле отбора. +// +&НаКлиенте +Процедура ПериодПриИзменении(Элемент) + + ОбновитьТаблицыНаСервере(); + +КонецПроцедуры + +// Обновляет таблицы пульта при изменении организации (ЦБ). +// +// Параметры: +// Элемент - ПолеФормы - изменённое поле отбора. +// +&НаКлиенте +Процедура ОрганизацияПриИзменении(Элемент) + + ОбновитьТаблицыНаСервере(); + +КонецПроцедуры + +// Обновляет таблицы пульта при изменении ИФО. +// +// Параметры: +// Элемент - ПолеФормы - изменённое поле отбора. +// +&НаКлиенте +Процедура ИФОПриИзменении(Элемент) + + ОбновитьТаблицыНаСервере(); + +КонецПроцедуры + +// Обновляет таблицы пульта при изменении учреждения (сада). +// +// Параметры: +// Элемент - ПолеФормы - изменённое поле отбора. +// +&НаКлиенте +Процедура УчреждениеПриИзменении(Элемент) + + ОбновитьТаблицыНаСервере(); + +КонецПроцедуры + +#КонецОбласти + #Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаДокументыПередачи // Сужает таблицу принятий до принятий по выбранному документу передачи. diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЗаписьРодительскойПлаты/Rights.rights b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЗаписьРодительскойПлаты/Rights.rights index 29e5a5a..d92b064 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЗаписьРодительскойПлаты/Rights.rights +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЗаписьРодительскойПлаты/Rights.rights @@ -3,16 +3,19 @@ false false false + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.КФО + + View + true + + Document.ПС_ПередачаПоступившихПлатежейВУчреждения Read true - - View - true - Insert true @@ -33,35 +36,84 @@ UndoPosting true - - - Document.ПС_ПринятиеПоступившихПлатежейИзЦБ - - Read - true - View true - Insert + InteractiveInsert true - Update + Edit true - Delete + InteractiveSetDeletionMark true - Posting + InteractiveClearDeletionMark true - UndoPosting + InteractiveDeleteMarked + true + + + InteractivePosting + true + + + InteractivePostingRegular + true + + + InteractiveUndoPosting + true + + + InteractiveChangeOfPosted + true + + + InputByString + true + + + ReadDataHistory + true + + + ReadDataHistoryOfMissingData + true + + + UpdateDataHistory + true + + + UpdateDataHistoryOfMissingData + true + + + UpdateDataHistorySettings + true + + + UpdateDataHistoryVersionComment + true + + + ViewDataHistory + true + + + EditDataHistoryVersionComment + true + + + SwitchToDataHistoryVersion true @@ -71,10 +123,6 @@ Read true
- - View - true - Insert true @@ -95,6 +143,85 @@ UndoPosting true + + View + true + + + Edit + true + + + InteractiveSetDeletionMark + true + + + InteractiveClearDeletionMark + true + + + InteractiveDeleteMarked + true + + + InteractivePosting + true + + + InteractivePostingRegular + true + + + InteractiveUndoPosting + true + + + InteractiveChangeOfPosted + true + + + ReadDataHistory + true + + + ReadDataHistoryOfMissingData + true + + + UpdateDataHistory + true + + + UpdateDataHistoryOfMissingData + true + + + UpdateDataHistorySettings + true + + + UpdateDataHistoryVersionComment + true + + + ViewDataHistory + true + + + EditDataHistoryVersionComment + true + + + SwitchToDataHistoryVersion + true + +
+ + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.Договор + + View + true + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате @@ -106,6 +233,223 @@ Update true + + View + true + + + Edit + true + + + TotalsControl + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.StandardAttribute.RecordType + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.StandardAttribute.Active + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.StandardAttribute.LineNumber + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.StandardAttribute.Recorder + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.StandardAttribute.Period + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Attribute.ВидОперации + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.Плательщик + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.ИФО + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Resource.Сумма + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Attribute.ДокументПередачи + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.Учреждение + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.Организация + + View + true + + + + Document.ПС_ПринятиеПоступившихПлатежейИзЦБ + + Read + true + + + Insert + true + + + Update + true + + + Delete + true + + + Posting + true + + + UndoPosting + true + + + View + true + + + InteractiveInsert + true + + + Edit + true + + + InteractiveSetDeletionMark + true + + + InteractiveClearDeletionMark + true + + + InteractiveDeleteMarked + true + + + InteractivePosting + true + + + InteractivePostingRegular + true + + + InteractiveUndoPosting + true + + + InteractiveChangeOfPosted + true + + + InputByString + true + + + ReadDataHistory + true + + + ReadDataHistoryOfMissingData + true + + + UpdateDataHistory + true + + + UpdateDataHistoryOfMissingData + true + + + UpdateDataHistorySettings + true + + + UpdateDataHistoryVersionComment + true + + + ViewDataHistory + true + + + EditDataHistoryVersionComment + true + + + SwitchToDataHistoryVersion + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.Ребенок + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.ИДСтроки + + View + true + DataProcessor.ПС_УправлениеРасчетамиПоРодительскойПлате @@ -129,4 +473,11 @@ true + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.КПС + + View + true + + From 41cb2f8f85c3180fed8dc511f075c4c3c8bafeaf Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Mon, 2 Nov 2026 20:15:54 +0500 Subject: [PATCH 16/19] =?UTF-8?q?docs(=D1=80=D1=83=D0=BA=D0=BE=D0=B2=D0=BE?= =?UTF-8?q?=D0=B4=D1=81=D1=82=D0=B2=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8F):=20=D0=B1=D1=83?= =?UTF-8?q?=D1=85=D0=B3=D0=B0=D0=BB=D1=82=D0=B5=D1=80=D1=81=D0=BA=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D0=B8=20=D0=BA=D0=B0?= =?UTF-8?q?=D1=81=D1=81=D0=BE=D0=B2=D0=BE=D0=B3=D0=BE=20=D0=BF=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D1=83=D0=BF=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B7=D0=B1=D0=BE=D1=80=20=D0=BE=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D1=82=D0=BA=D0=BE=D0=B2,=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8?= =?UTF-8?q?=D1=8F=201.0.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md | 46 +++++++++++++++++-- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/docs/РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md b/docs/РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md index cba24da..b21d4d3 100644 --- a/docs/РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md +++ b/docs/РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0).md @@ -1,7 +1,7 @@ # РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0) -Расширение: `153_ЦБ_ОУО_БГУ.ПрофиСофт`, **версия 1.0.3** -Документ актуален на 30.10.2026. +Расширение: `153_ЦБ_ОУО_БГУ.ПрофиСофт`, **версия 1.0.4** +Документ актуален на 02.11.2026. Руководство для бухгалтера ЦБ ОУО и бухгалтера детского сада. Установку, настройку и обновление см. в «РУКОВОДСТВО АДМИНИСТРАТОРА». @@ -119,7 +119,45 @@ Уже заполненные вручную значения при записи **не перезаписываются** — ручная правка сохраняется. -### 5.1. Формат назначения платежа +### 5.1. Бухгалтерские записи при кассовом поступлении + +Кассовое поступление в ЦБ даёт **одну бухгалтерскую проводку** и **записи по регистру взаиморасчётов**: + +| Что формируется | Запись | Смысл | +|---|---|---| +| Бухгалтерская проводка (типовая, по документу) | `Дт 210.02.131 Кт 303.05.731` | деньги пришли на лицевой счёт ЦБ и зачислены в бюджет как администрируемый доход | +| Регистр «Взаиморасчёты по родительской плате» (расширение) | приход по каждому ребёнку: плательщик, ребёнок, договор, КФО, КПС, сумма | оперативный учёт «кто и сколько заплатил» — **это не бухгалтерская проводка**, а аналитика расширения | + +Что важно понимать про эти две части: + +- проводка `Дт 210.02.131 Кт 303.05.731` **не различает детей** — она одна на всю сумму поступления. Детализация по детям живёт только в регистре взаиморасчётов и в реестре платежей (раздел 9); +- приход по регистру формируется **только по распознанным строкам** — там, где определились ребёнок и договор. Строка без ребёнка в регистр не попадает, но в проводку входит (деньги-то пришли); +- повторное проведение документа перезаписывает движения регистра, поэтому исправления безопасны: достаточно изменить строки и перепровести документ. + +Полная картина по счёту 303.05 у ЦБ складывается из двух событий: + +``` +начислено садом (извещение «Начисление дохода», раздел 4) Дт 303.05.831 Кт 304.04.131 +поступили деньги (кассовое поступление) Дт 210.02.131 Кт 303.05.731 +``` + +### 5.2. Почему в ведомости и на пульте виден остаток + +Остаток — это нормальное состояние расчётов, а не ошибка. Он означает разные вещи в зависимости от того, где вы смотрите: + +| Где смотрим | Что показывает остаток | Когда обнуляется | +|---|---|---| +| Ведомость ЦБ / пульт, колонка «Остаток на конец» | **поступило, но ещё не передано в сады** | после проведения документа передачи (раздел 6) и принятия садом (раздел 7) | +| Счёт 303.05 у ЦБ | начислено по извещениям **минус** поступившие деньги — «ожидаемые поступления» | когда родители заплатят начисленные суммы | +| Счёт 205.31 у сада | начислено **минус** принято от ЦБ | когда сад примет переданные платежи | + +Отсюда три типовые ситуации, которые не требуют исправлений: + +1. **Приход есть, остаток по регистру не обнулился** — деньги поступили, но передача в сад ещё не сделана. Сделайте передачу (раздел 6). +2. **Остаток на 303.05 большой, а поступлений мало** — начислено больше, чем оплачено: это задолженность родителей, работа с ней ведётся в саду. +3. **В ведомости строка есть, а прихода нет** — по строке не определились ребёнок или договор, поэтому приход по регистру не сформировался (см. п. 6 выше и раздел 10 «Что делать, если»). + +### 5.3. Формат назначения платежа Для реестровых поступлений назначение разбирается по запятым, порядок частей фиксированный: @@ -140,7 +178,7 @@ **Разовый платёж от родителя** (не по реестру): достаточно указать `л/с X000013125`. Ребёнок определится, реквизиты реестра останутся пустыми — это нормальный режим. -### 5.2. Что проверить после проведения +### 5.4. Что проверить после проведения На пульте, страница **«Кассовые поступления»**, колонка **«Строк не распознано»**. Если там не ноль — в этих строках ребёнок не определён, при передаче в сад они уйдут без реквизитов. Причины и что делать — раздел 10. From d3473d939252485aea283aec7bc2381a224f5338 Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Mon, 2 Nov 2026 20:22:37 +0500 Subject: [PATCH 17/19] =?UTF-8?q?fix(=D0=B2=D0=B5=D0=B4=D0=BE=D0=BC=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=8C=20=D0=A6=D0=91):=20=D0=B2=D0=B5=D1=80=D1=85?= =?UTF-8?q?=D0=BD=D1=8F=D1=8F=20=D0=B3=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=B5=D1=80=D0=B8=D0=BE=D0=B4=D0=B0=20=E2=80=94=20?= =?UTF-8?q?=D0=BD=D0=B0=D1=87=D0=B0=D0=BB=D0=BE=20=D1=81=D0=BB=D0=B5=D0=B4?= =?UTF-8?q?=D1=83=D1=8E=D1=89=D0=B5=D0=B3=D0=BE=20=D0=B4=D0=BD=D1=8F=20(?= =?UTF-8?q?=D0=B3=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D0=B0=20=D0=B8=D1=81=D0=BA?= =?UTF-8?q?=D0=BB=D1=8E=D1=87=D0=B0=D1=8F),=20=D0=B8=D0=BD=D0=B4=D0=B5?= =?UTF-8?q?=D0=BA=D1=81=D1=8B=20=D0=B2=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ВедомостьЦБПоРодительскойПлате/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ВедомостьЦБПоРодительскойПлате/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs index 3aa9527..a8c619a 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ВедомостьЦБПоРодительскойПлате/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ВедомостьЦБПоРодительскойПлате/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs @@ -106,6 +106,10 @@ + + ИДСтроки + ИДСтроки + ИсточникДанных1 ВЫБРАТЬ ПС_ВзаиморасчетыПоРодительскойПлатеОстатки.Организация КАК Организация, @@ -119,6 +123,10 @@ ИЗ РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Остатки(&НачалоПериода,) КАК ПС_ВзаиморасчетыПоРодительскойПлатеОстатки +ИНДЕКСИРОВАТЬ ПО + Организация, + Учреждение, + Ребенок ; //////////////////////////////////////////////////////////////////////////////// @@ -134,8 +142,12 @@ ПС_ВзаиморасчетыПоРодительскойПлатеОбороты.СуммаРасход КАК Расход ПОМЕСТИТЬ ОборотыПоРП ИЗ - РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Обороты(&НачалоПериода, &КонецПериода, Регистратор,) КАК + РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Обороты(&НачалоПериода, КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ) + 1, Регистратор,) КАК ПС_ВзаиморасчетыПоРодительскойПлатеОбороты +ИНДЕКСИРОВАТЬ ПО + Организация, + Учреждение, + Ребенок ; //////////////////////////////////////////////////////////////////////////////// @@ -149,8 +161,12 @@ ПС_ВзаиморасчетыПоРодительскойПлатеОстатки.СуммаОстаток КАК ОстатокНаКонец ПОМЕСТИТЬ ОстаткиПоРПНаКонец ИЗ - РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Остатки(&КонецПериода,) КАК + РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Остатки(КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ) + 1,) КАК ПС_ВзаиморасчетыПоРодительскойПлатеОстатки +ИНДЕКСИРОВАТЬ ПО + Организация, + Учреждение, + Ребенок ; //////////////////////////////////////////////////////////////////////////////// From fa700e7554253f575b68b9126edcac0da4e59079 Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Mon, 2 Nov 2026 20:29:17 +0500 Subject: [PATCH 18/19] =?UTF-8?q?fix(=D0=B2=D0=B5=D0=B4=D0=BE=D0=BC=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=8C=20=D0=A6=D0=91):=20=D0=B4=D0=B0=D1=82=D0=B0?= =?UTF-8?q?=20=D0=B2=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=D0=B5=20=D1=87?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B7=20=D0=94=D0=9E=D0=91=D0=90=D0=92=D0=98?= =?UTF-8?q?=D0=A2=D0=AC=D0=9A=D0=94=D0=90=D0=A2=D0=95=20=D0=B2=D0=BC=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=BE=20=D0=B0=D1=80=D0=B8=D1=84=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=B8=D0=BA=D0=B8=20+?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ВедомостьЦБПоРодительскойПлате/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ВедомостьЦБПоРодительскойПлате/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs index a8c619a..5818e2e 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ВедомостьЦБПоРодительскойПлате/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Reports/ПС_ВедомостьЦБПоРодительскойПлате/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs @@ -142,7 +142,7 @@ ПС_ВзаиморасчетыПоРодительскойПлатеОбороты.СуммаРасход КАК Расход ПОМЕСТИТЬ ОборотыПоРП ИЗ - РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Обороты(&НачалоПериода, КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ) + 1, Регистратор,) КАК + РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Обороты(&НачалоПериода, ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), СЕКУНДА, 1), Регистратор,) КАК ПС_ВзаиморасчетыПоРодительскойПлатеОбороты ИНДЕКСИРОВАТЬ ПО Организация, @@ -161,7 +161,7 @@ ПС_ВзаиморасчетыПоРодительскойПлатеОстатки.СуммаОстаток КАК ОстатокНаКонец ПОМЕСТИТЬ ОстаткиПоРПНаКонец ИЗ - РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Остатки(КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ) + 1,) КАК + РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Остатки(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), СЕКУНДА, 1),) КАК ПС_ВзаиморасчетыПоРодительскойПлатеОстатки ИНДЕКСИРОВАТЬ ПО Организация, From 1067b9aaca26ace0dbd062e401eb60b99185e09a Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Tue, 3 Nov 2026 12:15:02 +0500 Subject: [PATCH 19/19] =?UTF-8?q?feat(=D0=BE=D1=84=D0=BE=D1=80=D0=BC=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5):=20=D1=81=D0=B8=D0=BD=D0=BE=D0=BD?= =?UTF-8?q?=D0=B8=D0=BC=20=D0=BC=D0=B0=D0=BA=D0=B5=D1=82=D0=B0=20=C2=AB?= =?UTF-8?q?=D0=A0=D0=B5=D0=B5=D1=81=D1=82=D1=80=20=D0=BF=D0=BB=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=B6=D0=B5=D0=B9=C2=BB,=20=D0=BB=D0=BE=D0=B3=D0=BE?= =?UTF-8?q?=D1=82=D0=B8=D0=BF=20=D0=B8=20=D0=B7=D0=B0=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=B2=D0=BA=D0=B0=20=D1=80=D0=B0=D1=81=D1=88=D0=B8=D1=80=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ПС_Заставка_Родительская_Плата.mdo | 8 ++++++++ .../src/CommonPictures/ПС_Лого_Родительская_Плата/Picture.png | Bin 0 -> 59122 bytes .../ПС_Лого_Родительская_Плата/ПС_Лого_Родительская_Плата.mdo | 8 ++++++++ .../src/CommonTemplates/ПС_РеестрПлатежей/ПС_РеестрПлатежей.mdo | 2 +- .../src/Configuration/Logo.png | Bin 0 -> 34958 bytes .../src/Configuration/Splash.png | Bin 0 -> 84942 bytes 6 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonPictures/ПС_Заставка_Родительская_Плата/ПС_Заставка_Родительская_Плата.mdo create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonPictures/ПС_Лого_Родительская_Плата/Picture.png create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonPictures/ПС_Лого_Родительская_Плата/ПС_Лого_Родительская_Плата.mdo create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Logo.png create mode 100644 153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Splash.png diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonPictures/ПС_Заставка_Родительская_Плата/ПС_Заставка_Родительская_Плата.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonPictures/ПС_Заставка_Родительская_Плата/ПС_Заставка_Родительская_Плата.mdo new file mode 100644 index 0000000..cebfcfe --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonPictures/ПС_Заставка_Родительская_Плата/ПС_Заставка_Родительская_Плата.mdo @@ -0,0 +1,8 @@ + + + ПС_Заставка_Родительская_Плата + + ru + Заставка родительская плата + + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonPictures/ПС_Лого_Родительская_Плата/Picture.png b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonPictures/ПС_Лого_Родительская_Плата/Picture.png new file mode 100644 index 0000000000000000000000000000000000000000..3e2acf96743cbd3bee4182e8d3fd527d90e8c0f1 GIT binary patch literal 59122 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

#!f@8OIa@<4OjXqx22X{R4tZS|#usl6L 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

sA8E08|Jws0lk(x5`9ZXEHS=Fpg zW_h3B0vKzdieDnF>+iY=m@AHYn+BZB_?KvWku$5_HH++)%6iZ zSX&63k81>zw!(ZII{007nl%K$eAG1ytma)EQE3rRX`*+oe@$o0O#%R}5J6s7es;g{ z7^p?6Y`r?F!}FJq+lfv}D6ryX&xFV?Y7$bc1D8T*4nSl+K*x!PeKiC=;w-E=EOsOI@;&2LtSNEz%D}2@vF}Q{n8|o>n+_bD)R&A%Ki-Bz=pg z@sT{#so5W!+$Ri1>s__V9^|A306%6^x7+HkW5Nb=8`WN<(q5gh5`J-I=}vgcnPj`% zxi@!50C0+CsYv4dj<^IayTJ)1)lqQEzGr5PzP0~d~jBv$rU ze?DPK0NS9~EQl@h%IIw~gUUdlT(}F^wmBX!m{*H5G7iQhD6*j5#0rajg}8w`%sl{k zu&(9d-0>=aU_-dC^2V(s#v#YULPqw^3d4y)1_2``$kl?n!%_6C(+m|H{=sp@=N?u? z1}sTZy$**cKAy0xKo|;r)+MhSv%H7lQ`0Job}z8~9iT2h@Ghl#qJetb(+t1-Ha>cU zXcfRyGU%a~X8xwst}T<{FBSkimgNhoH0>f0Zw3%HkEXJ}9w@hGlR+K61nLHoQ~76I28k?!>zIoAV|E-$kS2{q zhR~eUAf|V`PuUvM41Z*#f3^3tsEoKcYIKy8T4 zRs%IFH2B^Y3%7Hv3!_o9`p1uE9INo;|5tiK8Mf z(Rlm^10QvsLob)Nsg>!5Wa!FGY`T^b1O}0nl8}ud++klfrTsOJtiT$|z#Z|X$os72 z>zvH77m7}LPNMf&O^uFXx{tn1OE7qdGLzWe-O{l@?OQ2w5I8kQN2cNEt^7&YWZgX2 z2y=j-J*%nhE#J%T%~=~CY&_LrTH@G7PrMXO0TzkwJPst$AXHSn6aGgSs0sr<1gT-< zHpRS6HgQh4H(lKM-NkvUDiYDt2{$d?KbIxH79X;gs2)GM`i&*SYO39M4(%01TtaD+ zX#Zaq*utu3&+*1_NAAce{@eK-ZrS~Cacm!Ay5JFfFU#(VcQz|G9UNI77k8}U3G zNzs~cjgZ`2;PDP$nf5`<-`eRt_y|969Y|oC!^sK5U(zL*h4*~EILrNa5Mxq&CV8za z@a}cUwKH}UT>W{Zd7&MRf|OrEJY|Az106_ zKF1SEP^eavg}rj}ez;Ny!9`=Om2mf#l>jAHN}z`)5#`B~P3hmSvs%8X6q6(?0k!l( zND7%`ZiXZT^pNd}CgZ&(fMai>HjzXDTu`Kv5sK}D|2ZZNbRklN%O=_Vd$|Hx8K|YT zn@U^40ozy391OIpE=#6B+vuf{4FRZw_T2}xOjlSu)f6T#P&pMExdee4))A?^P7;1M@ zO9;MM7GOH&*}sptSu6@GpL2WDr~QmQK^67|H_um#$&oQO237dp ul(T`uvlq{dd_md6x;Nt{C@@3JVF*JVuYR}hcDsOpkEXgV81}#_?7sj*3$RxJ literal 0 HcmV?d00001 diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonPictures/ПС_Лого_Родительская_Плата/ПС_Лого_Родительская_Плата.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonPictures/ПС_Лого_Родительская_Плата/ПС_Лого_Родительская_Плата.mdo new file mode 100644 index 0000000..fcc6792 --- /dev/null +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonPictures/ПС_Лого_Родительская_Плата/ПС_Лого_Родительская_Плата.mdo @@ -0,0 +1,8 @@ + + + ПС_Лого_Родительская_Плата + + ru + Лого родительская плата + + diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonTemplates/ПС_РеестрПлатежей/ПС_РеестрПлатежей.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonTemplates/ПС_РеестрПлатежей/ПС_РеестрПлатежей.mdo index d2a1682..39cb664 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonTemplates/ПС_РеестрПлатежей/ПС_РеестрПлатежей.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonTemplates/ПС_РеестрПлатежей/ПС_РеестрПлатежей.mdo @@ -3,6 +3,6 @@ ПС_РеестрПлатежей ru - П с реестр платежей + Реестр платежей diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Logo.png b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..df0177b5b31f1d0af0d59ec393567bd7e6dc7bf7 GIT binary patch literal 34958 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 b3F-X*jJzhM+uBs_00000NkvXXu0mjfv5|Q% literal 0 HcmV?d00001