8 Commits

Author SHA1 Message Date
tsvetkoff b708bfec68 Остатки взаиморасчётов с детьми в садах: переименование документов и разворот схемы
Переименование документов расширения:
- ПС_ПринятиеЗадолженностиОтУчреждения -> ПС_ПередачаПоступившихПлатежейВУчреждения (ЦБ передаёт поступившие платежи в сады)
- ПС_ПередачаЗадолженностиВЦБ -> ПС_ПринятиеПоступившихПлатежейИзЦБ (сад принимает поступившие платежи из ЦБ)

Схема и логика:
- ЦБ-документ заполняется из остатков регистра ПС_ВзаиморасчетыПоРодительскойПлате (поступившие, но ещё не переданные платежи)
- сад-документы вводятся на основании ЦБ-документа, по одному на учреждение
- развёрнуто направление движений регистра: «Кассовое поступление» — приход, «Передача платежей» — расход
- в проводке по 304.04 ЦБ определяется по организации документа передачи
- убран режим «Начальное сальдо»: реквизиты, команды, значение перечисления ПС_ВидыОперацийПоВзаиморасчетам
- снят basedOn у документа «Начисление родительской платы»

Рабочее место ПС_УправлениеРасчетамиПоРодительскойПлате:
- типы колонок таблиц приведены в соответствие с запросами
- элементам колонок таблиц присвоены осмысленные имена
- сбор поступивших платежей выполняется на конец дня

Обновлены роль ПС_ОсновнаяРоль, состав подсистемы РодительскаяПлата, Configuration.mdo
2026-10-20 16:11:32 +05:00
tsvetkoff 3aa47428f1 Документация: подтверждено направление движений регистра
- «Кассовое поступление» — приход, «Передача платежей» — расход; регистр обнуляется при полной передаче
- В плане раздел «Требует подтверждения» заменён на подтверждённое решение
- В постановке уточнено: в «Кассовом поступлении» меняется только направление движения по регистру
2026-10-15 00:19:04 +05:00
tsvetkoff 061e46d8f0 План: решения по концепции «остатки в садах»
- ЦБ-документ передачи заполняется из остатков регистра накопления (не из расшифровки кассового поступления)
- Регистр взаиморасчётов пишется только ЦБ-документами и должен давать нулевые остатки
- Режим «Начальное сальдо» искореняется полностью, включая значение перечисления
- Ввод на основании разворачивается: ЦБ-документ передачи первичен, сад-документы вводятся по нему

Открытым оставлен один пункт — направление движений регистра у «Кассового поступления».
2026-10-15 00:10:33 +05:00
tsvetkoff a10e0f4e31 План доработки по концепции «остатки в садах»
Ревизия обоих документов и их связей выполнена. В плане: переименование документов с полной цепочкой ссылок, смена ролей и логики заполнения, снятие режима «Начальное сальдо», неизменные проводки и печать, нетронутые регистры/отчёты/пульт, проверка и обновление документации. Отдельно — четыре открытых вопроса к плану.
2026-10-14 23:31:59 +05:00
tsvetkoff 14e23346a9 Концепция «остатки в садах» согласована: сняты открытые вопросы, зафиксированы решения
- Наименования документов приняты
- Бухгалтерские записи сохраняются: в ЦБ передавалась дебиторская задолженность, обратно передаётся кредиторская
- Извещение ф. 0504805 остаётся у обоих документов
- Режим «Начальное сальдо» убирается: обороты переносятся в обратную сторону, сальдо нет
- Пульт не трогаем
- Отчёт остаётся инструментом контроля ЦБ: при полной передаче платежей остатки нулевые
2026-10-14 23:21:30 +05:00
tsvetkoff 7a3a13531d Новая задача: остатки взаиморасчётов с детьми переносятся в сады
Постановка новой концепции: ЦБ собирает поступившие платежи и передаёт их в сады, сады принимают поступившие платежи (по одному документу на сад), остатки формируются в садах. Бухгалтерские записи и порядок поступления средств не меняются, документы переименовываются. Приведены открытые вопросы к согласованию.
2026-10-14 22:59:22 +05:00
tsvetkoff 8c69f25e29 Добавлен основной руководящий документ: Методические рекомендации по организации учёта родительской платы (.docx) 2026-10-14 22:24:22 +05:00
tsvetkoff 1935e64cdd Документация по учёту родительской платы: Памятка, Руководство пользователя, Руководство по эксплуатации (.md)
Комплект перенесён с сетевого ресурса в подпапку docs/ — чтобы версии документации и кода не разъезжались.
2026-10-14 21:46:10 +05:00
32 changed files with 3049 additions and 2611 deletions
@@ -69,7 +69,7 @@
<value>Документ передачи</value>
</synonym>
<type>
<types>DocumentRef.ПС_ПередачаЗадолженностиВЦБ</types>
<types>DocumentRef.ПС_ПринятиеПоступившихПлатежейИзЦБ</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
@@ -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
|ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ДвиженияССубконто(, , Регистратор = &ДокументСсылка) КАК Проводки
|
@@ -72,8 +72,8 @@
<catalogs>Catalog.Пользователи</catalogs>
<catalogs>Catalog.КОСГУ</catalogs>
<documents>Document.НачислениеРодительскойПлаты</documents>
<documents>Document.ПС_ПередачаЗадолженностиВЦБ</documents>
<documents>Document.ПС_ПринятиеЗадолженностиОтУчреждения</documents>
<documents>Document.ПС_ПринятиеПоступившихПлатежейИзЦБ</documents>
<documents>Document.ПС_ПередачаПоступившихПлатежейВУчреждения</documents>
<documents>Document.КассовоеПоступление</documents>
<enums>Enum.КВД</enums>
<enums>Enum.ПС_ВидыОперацийПоВзаиморасчетам</enums>
@@ -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 @@
Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания);
Запрос.УстановитьПараметр("ЦБ", ЦБКонтрагент);
Запрос.УстановитьПараметр("Сад", СадОрганизация);
Запрос.УстановитьПараметр("ЦБ", ЦБОрганизация);
Запрос.УстановитьПараметр("Сад", СадКонтрагент);
Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено));
Выборка = Запрос.Выполнить().Выбрать();
@@ -25,9 +25,10 @@
Возврат;
КонецЕсли;
// Оплата закрывает задолженность, принятую от учреждения. Переплата допускается -
// она даёт отрицательный (кредитовый) остаток по ребёнку. Строки без определённого
// ребёнка или договора пропускаются: это не оплата родительской платы.
// Поступившие платежи копятся у ЦБ: приход по регистру взаиморасчётов.
// Передача платежей в сады списывает их расходом, поэтому остаток регистра
// показывает, сколько поступило и ещё не передано в учреждения. Строки без
// определённого ребёнка или договора пропускаются: это не плата за детский сад.
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Очистить();
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина;
@@ -65,7 +66,7 @@
КонтрагентыСадов.Вставить(ОрганизацияСада, КонтрагентСада);
КонецЕсли;
Движение = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьРасход();
Движение = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьПриход();
Движение.Период = Дата;
Движение.Организация = Организация;
Движение.Учреждение = КонтрагентСада;
@@ -76,7 +77,7 @@
Движение.КФО = СтрокаРасшифровки.КФО;
Движение.КПС = СтрокаРасшифровки.КБКНазначениеПлатежа;
Движение.Сумма = СтрокаРасшифровки.Сумма;
Движение.ВидОперации = Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.Оплата;
Движение.ВидОперации = Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.ПоступлениеПлатежа;
КонецЦикла;
@@ -112,7 +112,7 @@
КонецЕсли;
ПараметрыФормы = Новый Структура("Основание", Объект.Ссылка);
ОткрытьФорму("Документ.ПС_ПередачаЗадолженностиВЦБ.Форма.ФормаДокумента",
ОткрытьФорму("Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ.Форма.ФормаДокумента",
ПараметрыФормы,
ЭтотОбъект);
@@ -12,7 +12,6 @@
<extension xsi:type="mdclassExtension:DocumentExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
</extension>
<basedOn>Document.ПС_ПередачаЗадолженностиВЦБ</basedOn>
<forms uuid="afd5a88e-f86c-4f20-8edb-b69efb4623e0" extendedConfigurationObject="1a84838c-25fc-4c1b-8b26-74c31f1d8f67">
<name>ФормаДокумента</name>
<objectBelonging>Adopted</objectBelonging>
@@ -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].Выбрать();
Пока ВыборкаСтроки.Следующий() Цикл
НоваяСтрока = Объект.Задолженность.Добавить();
НоваяСтрока.Контрагент = ВыборкаСтроки.Контрагент;
НоваяСтрока.Договор = ВыборкаСтроки.Договор;
НоваяСтрока.Ребенок = ВыборкаСтроки.Ребенок;
НоваяСтрока.ИДСтроки = ВыборкаСтроки.ИДСтроки;
НоваяСтрока.Сумма = ВыборкаСтроки.Сумма;
Объект.СуммаДокумента = Объект.СуммаДокумента + ВыборкаСтроки.Сумма;
КонецЦикла;
// КФО документа и КПС строк - из проводок документа начисления.
ПС_УчетРодительскойПлаты.ЗаполнитьРеквизитыУчетаПоПроводкам(Объект, ДокументНачисленияСсылка);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьБухгалтерскиеЗаписиДокумента(ДокументСсылка)
ПараметрыФормы = Новый Структура;
Отбор = Новый Структура("Регистратор", ДокументСсылка);
ПараметрыФормы.Вставить("Отбор", Отбор);
ОткрытьФорму("РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ФормаСписка",
ПараметрыФормы,
ЭтотОбъект,
УникальныйИдентификатор);
КонецПроцедуры
#КонецОбласти
@@ -51,52 +51,6 @@
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ДокументПередачи</name>
<id>22</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ДокументПередачи</segments>
</dataPath>
<handlers>
<event>OnChange</event>
<name>ДокументПередачиПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ДокументПередачиРасширеннаяПодсказка</name>
<id>24</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДокументПередачиКонтекстноеМеню</name>
<id>23</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>EnterOnInput</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<extendedEditMultipleValues>true</extendedEditMultipleValues>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Период</name>
<id>16</id>
@@ -255,48 +209,6 @@
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Учреждение</name>
<id>13</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.Учреждение</segments>
</dataPath>
<extendedTooltip>
<name>УчреждениеРасширеннаяПодсказка</name>
<id>15</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>УчреждениеКонтекстноеМеню</name>
<id>14</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>EnterOnInput</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<extendedEditMultipleValues>true</extendedEditMultipleValues>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -452,6 +364,47 @@
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЗадолженностьУчреждение</name>
<id>103</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.Задолженность.Учреждение</segments>
</dataPath>
<extendedTooltip>
<name>ЗадолженностьЗадолженностьУчреждениеРасширеннаяПодсказка</name>
<id>105</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗадолженностьЗадолженностьУчреждениеКонтекстноеМеню</name>
<id>104</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ЗадолженностьГруппаКонтрагента</name>
<id>92</id>
@@ -1014,43 +967,6 @@
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ПередачаСальдо</name>
<id>94</id>
<title>
<key>ru</key>
<value>Передача начального сальдо</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ПередачаСальдо</segments>
</dataPath>
<extendedTooltip>
<name>ПередачаСальдоРасширеннаяПодсказка</name>
<id>96</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПередачаСальдоКонтекстноеМеню</name>
<id>95</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormField">
<name>СчетКорреспондент</name>
<id>97</id>
@@ -1323,6 +1239,58 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>ЗаполнитьПоПоступившимПлатежам</name>
<id>106</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаЗаполнитьПоПоступившимПлатежамРасширеннаяПодсказка</name>
<id>107</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ЗаполнитьПоПоступившимПлатежам</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>СоздатьПринятиеПлатежей</name>
<id>108</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСоздатьПринятиеПлатежейРасширеннаяПодсказка</name>
<id>109</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.СоздатьПринятиеПлатежей</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
@@ -1343,7 +1311,7 @@
<name>Объект</name>
<id>1</id>
<valueType>
<types>DocumentObject.ПС_ПринятиеЗадолженностиОтУчреждения</types>
<types>DocumentObject.ПС_ПередачаПоступившихПлатежейВУчреждения</types>
</valueType>
<view>
<common>true</common>
@@ -1392,11 +1360,63 @@
</handler>
</action>
</formCommands>
<formCommands>
<name>ЗаполнитьПоПоступившимПлатежам</name>
<title>
<key>ru</key>
<value>Заполнить по поступившим платежам</value>
</title>
<id>3</id>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ЗаполнитьПоПоступившимПлатежам</name>
</handler>
</action>
</formCommands>
<formCommands>
<name>СоздатьПринятиеПлатежей</name>
<title>
<key>ru</key>
<value>Создать приём платежей</value>
</title>
<id>4</id>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>СоздатьПринятиеПлатежей</name>
</handler>
</action>
</formCommands>
<commandInterface>
<navigationPanel/>
<commandBar/>
</commandInterface>
<extInfo xsi:type="form:DocumentFormExtInfo">
<handlers>
<event>BeforeWrite</event>
<name>ПередЗаписью</name>
</handlers>
<handlers>
<event>BeforeWriteAtServer</event>
<name>ПередЗаписьюНаСервере</name>
</handlers>
<handlers>
<event>AfterWriteAtServer</event>
<name>ПослеЗаписиНаСервере</name>
</handlers>
<handlers>
<event>OnReadAtServer</event>
<name>ПриЧтенииНаСервере</name>
</handlers>
<handlers>
<event>AfterWrite</event>
<name>ПослеЗаписи</name>
</handlers>
<repostOnWrite>true</repostOnWrite>
</extInfo>
</form:Form>
@@ -0,0 +1,309 @@
// ПС_ПередачаПоступившихПлатежейВУчреждения: модуль формы документа.
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
БухгалтерскиеОперацииСервер.ПриСозданииНаСервере(Отказ, СтандартнаяОбработка, Элементы.БухгалтерскаяОперация);
// ИФО показывается только при включённом учёте по ИФО (как в типовых документах).
Элементы.ИФО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО");
// КПС определяется автоматически по настройкам учётной политики.
Элементы.ЗадолженностьКПС.ТолькоПросмотр = Истина;
// Счёт, корреспондирующий со счётом 205.31, и его КЭК: значения по умолчанию.
ЗаполнитьКорреспондирующийСчетПоУмолчанию();
Если НЕ ЗначениеЗаполнено(Объект.Ссылка)
И НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
Объект.Организация = Константы.ОрганизацияЦентрализованнаяБухгалтерия.Получить();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
БухгалтерскиеОперацииСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект, Элементы.БухгалтерскаяОперация);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
БухгалтерскиеОперацииКлиент.ПередЗаписью(Отказ, ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
БухгалтерскиеОперацииСервер.ПередЗаписью(Отказ, ТекущийОбъект, ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
БухгалтерскиеОперацииКлиент.ПослеЗаписи(ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
БухгалтерскиеОперацииСервер.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыЗадолженность
&НаКлиенте
Процедура ЗадолженностьПриИзменении(Элемент)
Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПечатьИзвещения(Команда)
ТабличныйДокумент = ПечатьИзвещенияНаСервере(Объект.Ссылка);
ТабличныйДокумент.Показать("Извещение (ф. 0504805, ред. 103н) - отправитель");
КонецПроцедуры
&НаКлиенте
Процедура ПросмотрБухгалтерскихЗаписей(Команда)
ОткрытьБухгалтерскиеЗаписиДокумента(Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоПоступившимПлатежам(Команда)
ЗаполнитьПоПоступившимПлатежамНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура СоздатьПринятиеПлатежей(Команда)
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = "Сначала запишите документ передачи платежей.";
СообщениеПользователю.Сообщить();
Возврат;
КонецЕсли;
Если НЕ Объект.Проведен Тогда
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = "Перед созданием приёма платежей документ передачи должен быть проведён.";
СообщениеПользователю.Сообщить();
Возврат;
КонецЕсли;
// По каждому учреждению табличной части открывается форма нового документа принятия:
// строки подбираются по саду документа, записывает документы пользователь.
ОрганизацииСадов = ОрганизацииСадовНаСервере();
Если ОрганизацииСадов.Количество() = 0 Тогда
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = "В табличной части ""Задолженность"" не заполнены учреждения (получатели).";
СообщениеПользователю.Сообщить();
Возврат;
КонецЕсли;
Для Каждого ОрганизацияСада Из ОрганизацииСадов Цикл
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ДокументПередачи", Объект.Ссылка);
ПараметрыФормы.Вставить("ОрганизацияСада", ОрганизацияСада);
ОткрытьФорму("Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ.Форма.ФормаДокумента",
ПараметрыФормы,
ЭтотОбъект,
Строка(Объект.Ссылка) + ":" + Строка(ОрганизацияСада));
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция ПечатьИзвещенияНаСервере(ДокументСсылка)
Возврат Документы.ПС_ПередачаПоступившихПлатежейВУчреждения.СформироватьПечатныеФормыИзвещений(ДокументСсылка);
КонецФункции
&НаСервере
Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию()
Если НЕ ЗначениеЗаполнено(Объект.СчетКорреспондент) Тогда
Объект.СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.КЭККорреспондент) Тогда
Объект.КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию();
КонецЕсли;
КонецПроцедуры
// Подбирает в табличную часть "Задолженность" поступившие платежи, ещё не переданные
// в учреждения: остатки регистра накопления ПС_ВзаиморасчетыПоРодительскойПлате.
// Предыдущая передача выбирает остатки, поэтому следующая их уже не видит.
//
&НаСервере
Процедура ЗаполнитьПоПоступившимПлатежамНаСервере()
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Заполнение невозможно: не заполнена организация (ЦБ).");
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.Учреждение КАК Учреждение,
| Остатки.Плательщик КАК Контрагент,
| Остатки.Договор КАК Договор,
| Остатки.Ребенок КАК Ребенок,
| Остатки.КПС КАК КПС,
| Остатки.ИФО КАК ИФО,
| Остатки.КФО КАК КФО,
| Остатки.СуммаОстаток КАК Сумма
|ИЗ
| РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Остатки(
| &МоментВремени,
| Организация = &Организация) КАК Остатки
|ГДЕ
| Остатки.СуммаОстаток <> 0
|
|УПОРЯДОЧИТЬ ПО
| Остатки.Учреждение,
| Остатки.Плательщик,
| Остатки.Договор";
// Поступившие платежи собираются на границу конца дня документа: кассовые поступления
// по умолчанию датируются 23:59:59 и при моменте времени, равном началу дня документа,
// в остатки не попадали.
Запрос.УстановитьПараметр("МоментВремени", КонецДня(Объект.Дата) + 1);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Выборка = Запрос.Выполнить().Выбрать();
Объект.Задолженность.Очистить();
Объект.СуммаДокумента = 0;
ЗначенияИФО = Новый Соответствие;
ЗначенияКФО = Новый Соответствие;
Пока Выборка.Следующий() Цикл
ЗначенияИФО.Вставить(Выборка.ИФО, Истина);
ЗначенияКФО.Вставить(Выборка.КФО, Истина);
НоваяСтрока = Объект.Задолженность.Добавить();
НоваяСтрока.Учреждение = Выборка.Учреждение;
НоваяСтрока.Контрагент = Выборка.Контрагент;
НоваяСтрока.Договор = Выборка.Договор;
НоваяСтрока.Ребенок = Выборка.Ребенок;
НоваяСтрока.КПС = Выборка.КПС;
НоваяСтрока.Сумма = Выборка.Сумма;
КонецЦикла;
Если Объект.Задолженность.Количество() = 0 Тогда
ОбщегоНазначения.СообщитьПользователю(
"Поступивших платежей, ещё не переданных в учреждения, не найдено.");
Возврат;
КонецЕсли;
Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма");
// Разрезов ИФО и КФО в табличной части нет - они задаются на весь документ,
// поэтому переносим их в шапку, если в остатках они единственные.
ЗаполнитьИФОиКФОПоОстаткам(ЗначенияИФО, ЗначенияКФО);
Если ЗначенияИФО.Количество() > 1 ИЛИ ЗначенияКФО.Количество() > 1 Тогда
ОбщегоНазначения.СообщитьПользователю(
"Поступившие платежи найдены в разрезе нескольких ИФО и/или КФО, а в документе ИФО и КФО"
+ " задаются на весь документ. Передайте их отдельными документами.");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьИФОиКФОПоОстаткам(ЗначенияИФО, ЗначенияКФО)
Если ЗначенияКФО.Количество() = 1 И НЕ ЗначениеЗаполнено(Объект.КФО) Тогда
Для Каждого КлючИЗначение Из ЗначенияКФО Цикл
Объект.КФО = КлючИЗначение.Ключ;
КонецЦикла;
КонецЕсли;
Если ЗначенияИФО.Количество() = 1 И НЕ ЗначениеЗаполнено(Объект.ИФО) Тогда
Для Каждого КлючИЗначение Из ЗначенияИФО Цикл
Объект.ИФО = КлючИЗначение.Ключ;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьБухгалтерскиеЗаписиДокумента(ДокументСсылка)
ПараметрыФормы = Новый Структура;
Отбор = Новый Структура("Регистратор", ДокументСсылка);
ПараметрыФормы.Вставить("Отбор", Отбор);
ОткрытьФорму("РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ФормаСписка",
ПараметрыФормы,
ЭтотОбъект,
УникальныйИдентификатор);
КонецПроцедуры
// Возвращает организации садов (учреждений), представленных в табличной части "Задолженность".
// Учреждение хранится в документе контрагентом, поэтому организация ищется по ИНН.
//
// Возвращаемое значение:
// Массив из СправочникСсылка.Организации - организации получателей в порядке появления в табличной части.
//
&НаСервере
Функция ОрганизацииСадовНаСервере()
Учреждения = Новый Массив;
Для Каждого СтрокаЗадолженности Из Объект.Задолженность Цикл
Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.Учреждение) Тогда
Продолжить;
КонецЕсли;
Если Учреждения.Найти(СтрокаЗадолженности.Учреждение) = Неопределено Тогда
Учреждения.Добавить(СтрокаЗадолженности.Учреждение);
КонецЕсли;
КонецЦикла;
Организации = Новый Массив;
Для Каждого Учреждение Из Учреждения Цикл
Организация = ПС_РаботаСКонтрагентами.ОрганизацияПоКонтрагенту(Учреждение, "Получатель (учреждение)");
Если ЗначениеЗаполнено(Организация) Тогда
Организации.Добавить(Организация);
КонецЕсли;
КонецЦикла;
Возврат Организации;
КонецФункции
#КонецОбласти
@@ -1,4 +1,4 @@
// ПС_ПринятиеЗадолженностиОтУчреждения: модуль менеджера.
// ПС_ПередачаПоступившихПлатежейВУчреждения: модуль менеджера.
// Печатная форма извещения (ф. 0504805, ред. 103н) - сторона получателя (централизованная бухгалтерия).
// Заполнение макета выполняет общая логика подсистемы: ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805.
@@ -10,7 +10,7 @@
// Вызывается из модуля формы документа кнопкой "Печать".
//
// Параметры:
// ДокументСсылка - ДокументСсылка.ПС_ПринятиеЗадолженностиОтУчреждения - печатаемый документ.
// ДокументСсылка - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения - печатаемый документ.
//
// Возвращаемое значение:
// ТабличныйДокумент
@@ -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;
Возврат БухгалтерскийУчет.КЭКПроводки(ПараметрыКЭК);
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -1186,12 +1186,7 @@
<i>2</i>
<c>
<f>59</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content/>
</v8:item>
</tl>
<tl/>
</c>
</c>
<c>
@@ -2360,12 +2355,7 @@
<i>2</i>
<c>
<f>59</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content/>
</v8:item>
</tl>
<tl/>
</c>
</c>
<c>
@@ -3992,6 +3982,8 @@
<endColumn>-1</endColumn>
</area>
</namedItem>
<groupsBackColor>#000080</groupsBackColor>
<groupsColor>#000080</groupsColor>
<line width="1" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentCellLineType">Solid</v8ui:style>
</line>
@@ -7,10 +7,10 @@
<listType typeId="313f7384-f4d5-4613-a51a-5ba01bce361e" valueTypeId="6870f642-36c3-4418-8491-b1329f821de2"/>
<managerType typeId="0b470f70-79e2-4602-8c62-a6bab7efc1b6" valueTypeId="15323120-9f9d-41ed-874b-079c02729ce9"/>
</producedTypes>
<name>ПС_ПринятиеЗадолженностиОтУчреждения</name>
<name>ПС_ПередачаПоступившихПлатежейВУчреждения</name>
<synonym>
<key>ru</key>
<value>Принятие в ЦБ начислений от учреждения</value>
<value>Передача поступивших платежей в учреждения</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
@@ -18,18 +18,18 @@
<fullTextSearch>Use</fullTextSearch>
<objectPresentation>
<key>ru</key>
<value>Принятие задолженности от учреждения</value>
<value>Передача поступивших платежей в учреждение</value>
</objectPresentation>
<listPresentation>
<key>ru</key>
<value>Принятия в ЦБ начислений от учреждения</value>
<value>Передачи поступивших платежей в учреждения</value>
</listPresentation>
<numberType>String</numberType>
<numberLength>9</numberLength>
<numberAllowedLength>Variable</numberAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<defaultObjectForm>Document.ПС_ПринятиеЗадолженностиОтУчреждения.Form.ФормаДокумента</defaultObjectForm>
<defaultObjectForm>Document.ПС_ПередачаПоступившихПлатежейВУчреждения.Form.ФормаДокумента</defaultObjectForm>
<registerRecords>AccountingRegister.ЖурналПроводокЕПСБУ</registerRecords>
<registerRecords>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате</registerRecords>
<postInPrivilegedMode>true</postInPrivilegedMode>
@@ -38,7 +38,7 @@
<name>Организация</name>
<synonym>
<key>ru</key>
<value>Организация (ЦБ)</value>
<value>Отправитель (ЦБ)</value>
</synonym>
<type>
<types>CatalogRef.Организации</types>
@@ -64,21 +64,6 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="0da47ff5-1bc8-48ab-93e3-46eb88ab0eef">
<name>Учреждение</name>
<synonym>
<key>ru</key>
<value>Учреждение-отправитель</value>
</synonym>
<type>
<types>CatalogRef.Контрагенты</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="cc277c8f-ac17-4e35-9132-3157c0d8b63d">
<name>Период</name>
<synonym>
@@ -116,21 +101,6 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="3ffcb80d-9272-4058-8abf-05d4892eb965">
<name>ДокументПередачи</name>
<synonym>
<key>ru</key>
<value>Документ передачи</value>
</synonym>
<type>
<types>DocumentRef.ПС_ПередачаЗадолженностиВЦБ</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="fd87cd30-1ae1-4f94-bebd-51a89384700a">
<name>Ответственный</name>
<synonym>
@@ -178,21 +148,6 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="2ffd2e40-2b63-453d-95e2-48e12fc5e742">
<name>ПередачаСальдо</name>
<synonym>
<key>ru</key>
<value>Передача начального сальдо</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="bb593e79-8cba-4f74-a6ea-ab74ae09577f">
<name>КЭККорреспондент</name>
<synonym>
@@ -327,6 +282,20 @@
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="8cf37a05-a457-4693-bc91-d9c1d37fede5">
<name>Учреждение</name>
<synonym>
<key>ru</key>
<value>Получатель (учреждение)</value>
</synonym>
<type>
<types>CatalogRef.Контрагенты</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
</tabularSections>
<templates uuid="1f448676-6b65-401e-b0a1-8ee291792b49">
<name>ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель</name>
@@ -1,232 +0,0 @@
// ПС_ПринятиеЗадолженностиОтУчреждения: модуль формы документа.
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
БухгалтерскиеОперацииСервер.ПриСозданииНаСервере(Отказ, СтандартнаяОбработка, Элементы.БухгалтерскаяОперация);
// ИФО показывается только при включённом учёте по ИФО (как в типовых документах).
Элементы.ИФО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО");
// КПС определяется автоматически по настройкам учётной политики.
Элементы.ЗадолженностьКПС.ТолькоПросмотр = Истина;
// Счёт, корреспондирующий со счётом 205.31, и его КЭК: значения по умолчанию
// (в режиме начального сальдо наследуются из документа передачи).
ЗаполнитьКорреспондирующийСчетПоУмолчанию();
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
Основание = Неопределено;
Если Параметры.Свойство("Основание", Основание)
И ТипЗнч(Основание) = Тип("ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ") Тогда
Объект.ДокументПередачи = Основание;
ЗаполнитьПоДокументуПередачиНаСервере(Основание);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
Объект.Организация = Константы.ОрганизацияЦентрализованнаяБухгалтерия.Получить();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
БухгалтерскиеОперацииСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект, Элементы.БухгалтерскаяОперация);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
БухгалтерскиеОперацииКлиент.ПередЗаписью(Отказ, ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
БухгалтерскиеОперацииСервер.ПередЗаписью(Отказ, ТекущийОбъект, ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
БухгалтерскиеОперацииКлиент.ПослеЗаписи(ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
БухгалтерскиеОперацииСервер.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПечатьИзвещения(Команда)
ТабличныйДокумент = ПечатьИзвещенияНаСервере(Объект.Ссылка);
ТабличныйДокумент.Показать("Извещение (ф. 0504805, ред. 103н) - получатель");
КонецПроцедуры
&НаКлиенте
Процедура ПросмотрБухгалтерскихЗаписей(Команда)
ОткрытьБухгалтерскиеЗаписиДокумента(Объект.Ссылка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура ДокументПередачиПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.ДокументПередачи) Тогда
ЗаполнитьПоДокументуПередачиНаСервере(Объект.ДокументПередачи);
Иначе
Объект.Задолженность.Очистить();
Объект.СуммаДокумента = 0;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗадолженностьПриИзменении(Элемент)
Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма");
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция ПечатьИзвещенияНаСервере(ДокументСсылка)
Возврат Документы.ПС_ПринятиеЗадолженностиОтУчреждения.СформироватьПечатныеФормыИзвещений(ДокументСсылка);
КонецФункции
&НаСервере
Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию()
Если НЕ ЗначениеЗаполнено(Объект.СчетКорреспондент) Тогда
Объект.СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.КЭККорреспондент) Тогда
Объект.КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоДокументуПередачиНаСервере(ДокументПередачиСсылка)
Если НЕ ЗначениеЗаполнено(ДокументПередачиСсылка) Тогда
Возврат;
КонецЕсли;
// Заполнение возможно только на основании проведённого документа передачи.
Если НЕ ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументПередачиСсылка, "Проведен") Тогда
ОбщегоНазначения.СообщитьПользователю(
"Заполнение документа возможно только на основании проведённого документа передачи задолженности.");
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПередачаЗадолженности.ЦБ КАК Организация,
| ПередачаЗадолженности.Организация КАК Учреждение,
| ПередачаЗадолженности.ИФО КАК ИФО,
| ПередачаЗадолженности.Ответственный КАК Ответственный,
| ПередачаЗадолженности.Период КАК Период
|ИЗ
| Документ.ПС_ПередачаЗадолженностиВЦБ КАК ПередачаЗадолженности
|ГДЕ
| ПередачаЗадолженности.Ссылка = &Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПередачаЗадолженностиЗадолженность.Контрагент КАК Контрагент,
| ПередачаЗадолженностиЗадолженность.Договор КАК Договор,
| ПередачаЗадолженностиЗадолженность.Ребенок КАК Ребенок,
| ПередачаЗадолженностиЗадолженность.ИДСтроки КАК ИДСтроки,
| ПередачаЗадолженностиЗадолженность.Сумма КАК Сумма
|ИЗ
| Документ.ПС_ПередачаЗадолженностиВЦБ.Задолженность КАК ПередачаЗадолженностиЗадолженность
|ГДЕ
| ПередачаЗадолженностиЗадолженность.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ДокументПередачиСсылка);
Результаты = Запрос.ВыполнитьПакет();
ВыборкаШапка = Результаты[0].Выбрать();
Если НЕ ВыборкаШапка.Следующий() Тогда
Возврат;
КонецЕсли;
Объект.Организация = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(ВыборкаШапка.Организация, "Организация (ЦБ)");
Объект.Учреждение = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(ВыборкаШапка.Учреждение, "Учреждение-отправитель");
Объект.Ответственный = ВыборкаШапка.Ответственный;
Объект.Период = ВыборкаШапка.Период;
Объект.ДокументПередачи = ДокументПередачиСсылка;
// Режим начального сальдо и корреспондирующий счёт с КЭК наследуются от документа передачи.
РеквизитыПередачи = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументПередачиСсылка,
"ПередачаСальдо, СчетКорреспондент, КЭККорреспондент");
Объект.ПередачаСальдо = РеквизитыПередачи.ПередачаСальдо;
Объект.СчетКорреспондент = РеквизитыПередачи.СчетКорреспондент;
Объект.КЭККорреспондент = РеквизитыПередачи.КЭККорреспондент;
Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО") Тогда
Объект.ИФО = ВыборкаШапка.ИФО;
КонецЕсли;
Объект.Задолженность.Очистить();
Объект.СуммаДокумента = 0;
ВыборкаСтроки = Результаты[1].Выбрать();
Пока ВыборкаСтроки.Следующий() Цикл
НоваяСтрока = Объект.Задолженность.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаСтроки);
Объект.СуммаДокумента = Объект.СуммаДокумента + ВыборкаСтроки.Сумма;
КонецЦикла;
// КФО документа и КПС строк - из проводок документа передачи.
ПС_УчетРодительскойПлаты.ЗаполнитьРеквизитыУчетаПоПроводкам(Объект, ДокументПередачиСсылка);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьБухгалтерскиеЗаписиДокумента(ДокументСсылка)
ПараметрыФормы = Новый Структура;
Отбор = Новый Структура("Регистратор", ДокументСсылка);
ПараметрыФормы.Вставить("Отбор", Отбор);
ОткрытьФорму("РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ФормаСписка",
ПараметрыФормы,
ЭтотОбъект,
УникальныйИдентификатор);
КонецПроцедуры
#КонецОбласти
@@ -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;
Возврат БухгалтерскийУчет.КЭКПроводки(ПараметрыКЭК);
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -873,27 +873,23 @@
<name>ГруппаСтраницыОперации</name>
<id>94</id>
<items xsi:type="form:FormField">
<name>ПередачаСальдо</name>
<id>98</id>
<title>
<key>ru</key>
<value>Передача начального сальдо</value>
</title>
<name>ДокументПередачи</name>
<id>111</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ПередачаСальдо</segments>
<segments>Объект.ДокументПередачи</segments>
</dataPath>
<handlers>
<event>OnChange</event>
<name>ПередачаСальдоПриИзменении</name>
<name>ДокументПередачиПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ПередачаСальдоРасширеннаяПодсказка</name>
<id>100</id>
<name>ДокументПередачиРасширеннаяПодсказка</name>
<id>113</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -902,49 +898,12 @@
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПередачаСальдоКонтекстноеМеню</name>
<id>99</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormField">
<name>ДокументНачисления</name>
<id>19</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ДокументНачисления</segments>
</dataPath>
<handlers>
<event>OnChange</event>
<name>ДокументНачисленияПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ДокументНачисленияРасширеннаяПодсказка</name>
<id>21</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДокументНачисленияКонтекстноеМеню</name>
<id>20</id>
<name>ДокументПередачиКонтекстноеМеню</name>
<id>112</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>EnterOnInput</editMode>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
@@ -952,7 +911,6 @@
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<extendedEditMultipleValues>true</extendedEditMultipleValues>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
@@ -1398,16 +1356,16 @@
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>СоздатьПринятиеЗадолженностиНаОсновании</name>
<id>77</id>
<name>ЗаполнитьПоДокументуПередачи</name>
<id>114</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСоздатьПринятиеЗадолженностиНаОснованииРасширеннаяПодсказка</name>
<id>78</id>
<name>ФормаЗаполнитьПоДокументуПередачиРасширеннаяПодсказка</name>
<id>115</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -1415,33 +1373,7 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.СоздатьПринятиеЗадолженностиНаОсновании</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>ЗаполнитьПоОстаткам20531</name>
<id>107</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаЗаполнитьПоОстаткам20531РасширеннаяПодсказка</name>
<id>108</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ЗаполнитьПоОстаткам20531</commandName>
<commandName>Form.Command.ЗаполнитьПоДокументуПередачи</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
@@ -1469,7 +1401,7 @@
<name>Объект</name>
<id>1</id>
<valueType>
<types>DocumentObject.ПС_ПередачаЗадолженностиВЦБ</types>
<types>DocumentObject.ПС_ПринятиеПоступившихПлатежейИзЦБ</types>
</valueType>
<view>
<common>true</common>
@@ -1519,10 +1451,10 @@
</action>
</formCommands>
<formCommands>
<name>СоздатьПринятиеЗадолженностиНаОсновании</name>
<name>ЗаполнитьПоДокументуПередачи</name>
<title>
<key>ru</key>
<value>Создать принятие на основании</value>
<value>Заполнить по документу передачи</value>
</title>
<id>3</id>
<use>
@@ -1530,23 +1462,7 @@
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ПС_СоздатьПринятиеЗадолженностиНаОсновании</name>
</handler>
</action>
</formCommands>
<formCommands>
<name>ЗаполнитьПоОстаткам20531</name>
<title>
<key>ru</key>
<value>Заполнить по остаткам счета 205.31</value>
</title>
<id>4</id>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ЗаполнитьПоОстаткам20531</name>
<name>ЗаполнитьПоДокументуПередачи</name>
</handler>
</action>
</formCommands>
@@ -0,0 +1,200 @@
// ПС_ПринятиеПоступившихПлатежейИзЦБ: модуль формы документа.
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
БухгалтерскиеОперацииСервер.ПриСозданииНаСервере(Отказ, СтандартнаяОбработка, Элементы.БухгалтерскаяОперация);
// ИФО показывается только при включённом учёте по ИФО (как в типовых документах).
Элементы.ИФО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО");
// КПС определяется автоматически по настройкам учётной политики.
Элементы.ЗадолженностьКПС.ТолькоПросмотр = Истина;
// Счёт, корреспондирующий со счётом 205.31, и его КЭК: значения по умолчанию.
ЗаполнитьКорреспондирующийСчетПоУмолчанию();
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
// Сад (получатель) задаётся при открытии формы из документа передачи платежей:
// до заполнения он должен быть известен, иначе строки не подберутся.
ОрганизацияСада = Неопределено;
Если Параметры.Свойство("ОрганизацияСада", ОрганизацияСада)
И ЗначениеЗаполнено(ОрганизацияСада) Тогда
Объект.Организация = ОрганизацияСада;
КонецЕсли;
// Форма открывается командой "Создать приём платежей" документа передачи:
// из него переносятся реквизиты учёта, а строки подбираются по саду документа.
ДокументПередачи = Неопределено;
Если Параметры.Свойство("ДокументПередачи", ДокументПередачи)
И ТипЗнч(ДокументПередачи) = Тип("ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения") Тогда
ДокументОбъект = РеквизитФормыВЗначение("Объект");
ДокументОбъект.Заполнить(ДокументПередачи);
ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.ЦБ) Тогда
Объект.ЦБ = ПС_РаботаСКонтрагентами.КонтрагентЦБПоУмолчанию();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
БухгалтерскиеОперацииСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект, Элементы.БухгалтерскаяОперация);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
БухгалтерскиеОперацииКлиент.ПередЗаписью(Отказ, ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
БухгалтерскиеОперацииСервер.ПередЗаписью(Отказ, ТекущийОбъект, ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
БухгалтерскиеОперацииКлиент.ПослеЗаписи(ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
БухгалтерскиеОперацииСервер.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ДокументПередачиПриИзменении(Элемент)
// При смене документа передачи строки подбираются заново по саду документа.
Если ЗначениеЗаполнено(Объект.ДокументПередачи)
И ЗначениеЗаполнено(Объект.Организация) Тогда
ЗаполнитьПоДокументуПередачиНаСервере();
Иначе
Объект.Задолженность.Очистить();
Объект.СуммаДокумента = 0;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыЗадолженность
&НаКлиенте
Процедура ЗадолженностьПриИзменении(Элемент)
Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПечатьИзвещения(Команда)
ТабличныйДокумент = ПечатьИзвещенияНаСервере(Объект.Ссылка);
ТабличныйДокумент.Показать("Извещение (ф. 0504805, ред. 103н) - получатель");
КонецПроцедуры
&НаКлиенте
Процедура ПросмотрБухгалтерскихЗаписей(Команда)
ОткрытьБухгалтерскиеЗаписиДокумента(Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоДокументуПередачи(Команда)
Если НЕ ЗначениеЗаполнено(Объект.ДокументПередачи) Тогда
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = "Не заполнен документ передачи платежей.";
СообщениеПользователю.Сообщить();
Возврат;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = "Укажите организацию (учреждение-сад), чтобы подобрать строки.";
СообщениеПользователю.Сообщить();
Возврат;
КонецЕсли;
ЗаполнитьПоДокументуПередачиНаСервере();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция ПечатьИзвещенияНаСервере(ДокументСсылка)
Возврат Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.СформироватьПечатныеФормыИзвещений(ДокументСсылка);
КонецФункции
&НаСервере
Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию()
Если НЕ ЗначениеЗаполнено(Объект.СчетКорреспондент) Тогда
Объект.СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.КЭККорреспондент) Тогда
Объект.КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию();
КонецЕсли;
КонецПроцедуры
// Подбирает строки табличной части "Задолженность" из документа передачи по саду
// документа (реквизит "Организация").
//
&НаСервере
Процедура ЗаполнитьПоДокументуПередачиНаСервере()
ДокументОбъект = РеквизитФормыВЗначение("Объект");
ДокументОбъект.Заполнить(Объект.ДокументПередачи);
ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьБухгалтерскиеЗаписиДокумента(ДокументСсылка)
ПараметрыФормы = Новый Структура;
Отбор = Новый Структура("Регистратор", ДокументСсылка);
ПараметрыФормы.Вставить("Отбор", Отбор);
ОткрытьФорму("РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ФормаСписка",
ПараметрыФормы,
ЭтотОбъект,
УникальныйИдентификатор);
КонецПроцедуры
#КонецОбласти
@@ -1,4 +1,4 @@
// ПС_ПередачаЗадолженностиВЦБ: модуль менеджера.
// ПС_ПринятиеПоступившихПлатежейИзЦБ: модуль менеджера.
// Печатная форма извещения (ф. 0504805, ред. 103н) - сторона отправителя (учреждение).
// Заполнение макета выполняет общая логика подсистемы: ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805.
@@ -10,7 +10,7 @@
// Вызывается из модуля формы документа кнопкой "Печать".
//
// Параметры:
// ДокументСсылка - ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ - печатаемый документ.
// ДокументСсылка - ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ - печатаемый документ.
//
// Возвращаемое значение:
// ТабличныйДокумент
@@ -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;
Если НЕ ЗначениеЗаполнено(ДокументПередачиСсылка) ИЛИ НЕ ЗначениеЗаполнено(Организация) Тогда
Возврат;
КонецЕсли;
ПС_УчетРодительскойПлаты.ЗаполнитьРеквизитыУчетаПоПроводкам(ЭтотОбъект, ДокументНачисления);
// В документе передачи сад хранится контрагентом (как в регистре взаиморасчётов),
// а в документе сада - организацией, поэтому сопоставляем по ИНН.
КонтрагентСада = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(Организация, "Учреждение");
Если НЕ ЗначениеЗаполнено(КонтрагентСада) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СтрокиПередачи.Контрагент КАК Контрагент,
| СтрокиПередачи.Договор КАК Договор,
| СтрокиПередачи.Ребенок КАК Ребенок,
| СтрокиПередачи.ИДСтроки КАК ИДСтроки,
| СтрокиПередачи.Сумма КАК Сумма,
| СтрокиПередачи.КПС КАК КПС
|ИЗ
| Документ.ПС_ПередачаПоступившихПлатежейВУчреждения.Задолженность КАК СтрокиПередачи
|ГДЕ
| СтрокиПередачи.Ссылка = &ДокументПередачи
| И СтрокиПередачи.Учреждение = &Учреждение";
Запрос.УстановитьПараметр("ДокументПередачи", ДокументПередачиСсылка);
Запрос.УстановитьПараметр("Учреждение", КонтрагентСада);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Задолженность.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
СуммаДокумента = СуммаДокумента + Выборка.Сумма;
КонецЦикла;
КонецПроцедуры
@@ -1186,12 +1186,7 @@
<i>2</i>
<c>
<f>59</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content/>
</v8:item>
</tl>
<tl/>
</c>
</c>
<c>
@@ -2360,12 +2355,7 @@
<i>2</i>
<c>
<f>59</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content/>
</v8:item>
</tl>
<tl/>
</c>
</c>
<c>
@@ -3992,8 +3982,6 @@
<endColumn>-1</endColumn>
</area>
</namedItem>
<groupsBackColor>#000080</groupsBackColor>
<groupsColor>#000080</groupsColor>
<line width="1" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentCellLineType">Solid</v8ui:style>
</line>
@@ -7,10 +7,10 @@
<listType typeId="b6d30a84-f05e-45db-9b7a-74d83b04e094" valueTypeId="3b6831ae-a9c9-4e03-8fae-e033e8b56bcf"/>
<managerType typeId="d54b9abc-eabc-4baf-a305-964170119a69" valueTypeId="fba7fba5-fd39-4d09-add2-c0556074729f"/>
</producedTypes>
<name>ПС_ПередачаЗадолженностиВЦБ</name>
<name>ПС_ПринятиеПоступившихПлатежейИзЦБ</name>
<synonym>
<key>ru</key>
<value>Передача начислений в ЦБ</value>
<value>Принятие поступивших платежей из ЦБ</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
@@ -18,18 +18,18 @@
<fullTextSearch>Use</fullTextSearch>
<objectPresentation>
<key>ru</key>
<value>Передача задолженности в ЦБ</value>
<value>Принятие поступивших платежей из ЦБ</value>
</objectPresentation>
<listPresentation>
<key>ru</key>
<value>Передача начислений в ЦБ</value>
<value>Принятия поступивших платежей из ЦБ</value>
</listPresentation>
<numberType>String</numberType>
<numberLength>9</numberLength>
<numberAllowedLength>Variable</numberAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<defaultObjectForm>Document.ПС_ПередачаЗадолженностиВЦБ.Form.ФормаДокумента</defaultObjectForm>
<defaultObjectForm>Document.ПС_ПринятиеПоступившихПлатежейИзЦБ.Form.ФормаДокумента</defaultObjectForm>
<registerRecords>AccountingRegister.ЖурналПроводокЕПСБУ</registerRecords>
<postInPrivilegedMode>true</postInPrivilegedMode>
<unpostInPrivilegedMode>true</unpostInPrivilegedMode>
@@ -37,7 +37,7 @@
<name>Организация</name>
<synonym>
<key>ru</key>
<value>Организация</value>
<value>Получатель (учреждение)</value>
</synonym>
<type>
<types>CatalogRef.Организации</types>
@@ -52,7 +52,7 @@
<name>ЦБ</name>
<synonym>
<key>ru</key>
<value>ЦБ (получатель)</value>
<value>Отправитель (ЦБ)</value>
</synonym>
<type>
<types>CatalogRef.Контрагенты</types>
@@ -100,21 +100,6 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="31bce547-9930-40db-a918-ab7e30903aab">
<name>ДокументНачисления</name>
<synonym>
<key>ru</key>
<value>Документ начисления</value>
</synonym>
<type>
<types>DocumentRef.НачислениеРодительскойПлаты</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="00e53b16-645f-4b9d-8fd9-31903396fbfb">
<name>ИФО</name>
<synonym>
@@ -177,21 +162,6 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="49f8745e-ae19-4207-9bc1-47c92f6fd659">
<name>ПередачаСальдо</name>
<synonym>
<key>ru</key>
<value>Передача начального сальдо</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="fa024c08-d4ea-4006-ab04-b9c110fc292d">
<name>КЭККорреспондент</name>
<synonym>
@@ -222,6 +192,21 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="258c40b5-b60e-4e39-b914-c45f32e186fb">
<name>ДокументПередачи</name>
<synonym>
<key>ru</key>
<value>Документ передачи платежей</value>
</synonym>
<type>
<types>DocumentRef.ПС_ПередачаПоступившихПлатежейВУчреждения</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<forms uuid="86b865a3-c942-4075-8741-0e6ab1beae1c">
<name>ФормаДокумента</name>
</forms>
@@ -13,24 +13,17 @@
<quickChoice>true</quickChoice>
<choiceMode>BothWays</choiceMode>
<enumValues uuid="9201ca1d-ff23-49b6-ab2c-61b873778c0c">
<name>ПринятоОтУчреждения</name>
<name>ПередачаВУчреждение</name>
<synonym>
<key>ru</key>
<value>Принято от учреждения</value>
<value>Передача в учреждение</value>
</synonym>
</enumValues>
<enumValues uuid="b02c965c-6f81-40ef-b563-22c141f39ffd">
<name>Оплата</name>
<name>ПоступлениеПлатежа</name>
<synonym>
<key>ru</key>
<value>Оплата родительской платы</value>
</synonym>
</enumValues>
<enumValues uuid="34b0b2e1-c9a0-4783-867e-a8aa8bf3a0c4">
<name>НачальноеСальдо</name>
<synonym>
<key>ru</key>
<value>Начальное сальдо</value>
<value>Поступление родительской платы</value>
</synonym>
</enumValues>
</mdclass:Enum>
@@ -4,7 +4,7 @@
<setForAttributesByDefault>false</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object>
<name>Document.ПС_ПередачаЗадолженностиВЦБ</name>
<name>Document.ПС_ПринятиеПоступившихПлатежейИзЦБ</name>
<right>
<name>Read</name>
<value>true</value>
@@ -27,7 +27,7 @@
</right>
</object>
<object>
<name>Document.ПС_ПринятиеЗадолженностиОтУчреждения</name>
<name>Document.ПС_ПередачаПоступившихПлатежейВУчреждения</name>
<right>
<name>Read</name>
<value>true</value>
@@ -8,8 +8,8 @@
<commandInterface>Extended</commandInterface>
</extension>
<includeInCommandInterface>true</includeInCommandInterface>
<content>Document.ПС_ПередачаЗадолженностиВЦБ</content>
<content>Document.ПС_ПринятиеЗадолженностиОтУчреждения</content>
<content>Document.ПС_ПринятиеПоступившихПлатежейИзЦБ</content>
<content>Document.ПС_ПередачаПоступившихПлатежейВУчреждения</content>
<content>DataProcessor.ПС_УправлениеРасчетамиПоРодительскойПлате</content>
<parentSubsystem>Subsystem.ТаксиПлатноеОбразование</parentSubsystem>
</mdclass:Subsystem>
@@ -0,0 +1,74 @@
# ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 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.
- **Направление движений регистра взаиморасчётов меняется:** «Кассовое поступление» даёт **приход** (поступившие платежи копятся у ЦБ), «Передача платежей» — **расход** (отдаём в сады). Так регистр обнуляется, когда всё передано.
- **Бухгалтерские записи** внутриведомственных расчётов. Направления сохраняются буквально: у ЦБ Дт 205.31 — Кт 304.04, у сада Дт 304.04 — Кт 205.31. В сторону ЦБ передавалась дебиторская задолженность, обратно передаётся кредиторская — поэтому записи не меняются.
- **Печать извещения (ф. 0504805)** — остаётся у обоих документов, как и было.
- **Пульт** `ПС_УправлениеРасчетамиПоРодительскойПлате` — не трогаем: он работает с теми же документами и счетами, меняются только наименования документов.
- **Наши регистры** (`AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате`) — пока не трогаем.
- **Типовые отчёты** сады используют как есть.
---
## 4. Что убираем
**Режим «Начальное сальдо»** — сейчас он живёт в документе сада вместе с командой «Заполнить по остаткам счёта 205.31». Надобность отпала: обороты переносятся в обратную сторону, сальдо там нет.
---
## 5. Изменение роли отчёта
`Report.ПС_ВедомостьЦБПоРодительскойПлате` раньше служил ЦБ для контроля взаиморасчётов по родительской плате. Теперь взаиморасчёты остаются в садах, и назначение отчёта смещается: он остаётся **инструментом ЦБ для контроля правильности формирования и проведения документов**. Критерий — если все поступившие платежи переданы в сады, остатки по отчёту должны быть нулевыми.
Имя отчёта сохраняется; при необходимости переименуем отдельным решением.
---
## 6. Что предстоит сделать (заготовка, план — позже)
- Переименовать два документа метаданных и проследить цепочку ссылок: формы, роли, подсистемы, движения регистров, макеты печатных форм, настройки вариантов отчётов.
- Убрать из документа сада режим «Начальное сальдо» и команду заполнения по остаткам.
- Перестроить логику заполнения: ЦБ собирает поступившие суммы с кредита 205.31 и передаёт их в сады; в садах принимают — по одному документу на сад.
- Проверить печать извещения на обоих документах.
- Обновить рабочую документацию (памятка, руководство пользователя, руководство по эксплуатации) под новую схему.
@@ -0,0 +1,76 @@
# ПАМЯТКА. Учёт родительской платы ЦБ ОУО (БГУ 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. Куда обращаться
- Вопросы по методике учёта — бухгалтерия ЦБ.
- Технические проблемы (ошибки при записи, незаполненные поля, расхождения) — сопровождение с указанием: документ, дата, номер, текст сообщения.
@@ -0,0 +1,120 @@
# ПЛАН. Остатки взаиморасчётов с детьми в садах (БГУ 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. Смена ролей и логики заполнения
- **ЦБ-документ** (`ПС_ПередачаПоступившихПлатежейВУчреждения`) — источник. Заполняется **из остатков регистра накопления** `ПС_ВзаиморасчетыПоРодительскойПлате`: в документ попадают поступившие платежи, ещё не переданные в сады.
- Почему не из расшифровки «Кассового поступления»: тогда пришлось бы отдельно контролировать, чтобы платежи одного поступления не уехали в несколько передач. Через регистр контроль не нужен — предыдущая передача выбирает остатки, следующая их уже не видит.
- Условие корректности — последовательность проведения: каждую следующую передачу проводить после предыдущей по дате.
- **Сад-документы** (`ПС_ПринятиеПоступившихПлатежейИзЦБ`) — вводятся **на основании** ЦБ-документа, **по одному на сад** (в выписке ЦБ за день платежи идут в адрес нескольких садов).
- **«Ввод на основании» разворачивается в обратную сторону:** снять `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`** — разворачивается: первым заполняется ЦБ-документ передачи, на его основании вводятся документы приёма платежей в садах.
---
## Направление движений регистра (подтверждено)
«Кассовое поступление» даёт **приход** — поступившие платежи копятся у ЦБ. «Передача платежей» даёт **расход** — отдаём в сады. Регистр обнуляется, когда всё передано.
Это разворот относительно текущего кода: сейчас «Кассовое поступление» пишет расход (вид операции «Оплата» — платёж закрывал задолженность перед ЦБ). Направление меняется вместе с наименованиями: логика следует сути.
@@ -0,0 +1,170 @@
# РУКОВОДСТВО ПО ЭКСПЛУАТАЦИИ. Учёт родительской платы ЦБ ОУО (БГУ 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;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. Сопровождение
При обращении фиксировать:
- документ (вид, дата, номер), организацию, период;
- номер строки расшифровки платежа и текст назначения платежа;
- полный текст сообщения системы;
- действия, приведшие к ошибке.
Разбор инцидентов «строка не распознана» начинается с проверки справочника «Дети» (код = лицевой счёт, заполнен контрагент) и наличия договора у контрагента.
@@ -0,0 +1,246 @@
# РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0)
**Конфигурация:** Бухгалтерия государственного учреждения, редакция 2.0 (БГУ 2.0), платформа 8.5.1
**Расширение:** `153_ЦБ_ОУО_БГУ.ПрофиСофт` (префикс объектов `ПС_`)
**Версия документа:** 1.1 от 07.10.2026
---
## 1. Общие сведения
### 1.1. Назначение
Расширение реализует учёт **родительской платы** в схеме «детский сад → централизованная бухгалтерия (ЦБ)»:
- начисление платы ведётся в садах (типовым документом БГУ);
- начисления **передаются в ЦБ** документом «Передача задолженности в ЦБ» с печатной формой извещения (ф. 0504805);
- ЦБ **принимает** задолженность документом «Принятие задолженности от учреждения»;
- платежи родителей, поступающие реестром из СУФД, **автоматически идентифицируются** по назначению платежа;
- расчёты контролируются в **рабочем месте «Управление расчётами по родительской плате»**.
### 1.2. Роли
| Роль | Кто | Что делает |
|---|---|---|
| Бухгалтер сада | ПБС, лицевой счёт 03 | Начисление, передача задолженности в ЦБ, печать извещения |
| Бухгалтер ЦБ | АДБ, лицевой счёт 04 | Принятие задолженности, загрузка реестров платежей, идентификация платежей, контроль расчётов |
### 1.3. Термины
| Термин | Значение |
|---|---|
| ЦБ | Централизованная бухгалтерия — организация, в которой ведётся учёт и принимаются платежи |
| Сад | Дошкольное учреждение (ПБС), начисляющее плату |
| Лицевой счёт ребёнка | Код ребёнка в справочнике «Дети» (синоним «Лицевой счёт», 15 символов, например `Х000012877`) |
| Расшифровка платежа | Табличная часть документа «Кассовое поступление», по строке на каждого плательщика |
| Назначение платежа | Текст из реестра СУФД; в расшифровке платежа хранится в реквизите «Примечание» |
---
## 2. Начало работы
### 2.1. Открытие рабочего места
1С:Предприятие → раздел **«Платное обучение»** → **«Сервис»** → обработка **«Управление расчётами по родительской плате»**.
### 2.2. Отборы и период
В верхней части формы расположена группа **«Параметры периода»**:
| Поле | Назначение |
|---|---|
| **Период** | Стандартный период. По умолчанию — «Этот месяц». Если период не заполнен, таблицы очищаются и выводится сообщение |
| **Организация (ЦБ)** | Организация централизованной бухгалтерии. При открытии подставляется автоматически из константы «Организация централизованная бухгалтерия» |
| **ИФО** | Источник финансового обеспечения |
| **Учреждение (сад)** | Детский сад (справочник «Контрагенты») |
Кнопки:
- **«Обновить»** — пересчитать все таблицы по установленным отборам;
- **«Оборотная ведомость»** — открыть отчёт с текущими отборами и периодом.
### 2.3. Страницы рабочего места
| Страница | Содержание |
|---|---|
| **Документы** | Документы принятия задолженности (ЦБ) и передачи задолженности (сад), колонка «Начальное сальдо» |
| **Начисления** | Документы «Начисление родительской платы» за период |
| **Сверка «передано / принято»** | Сопоставление переданных и принятых сумм по каждому документу передачи |
| **Остатки и обороты** | Остатки и обороты по счетам 205.31 и 304.04 в разрезе ИФО |
| **Кассовые поступления** | Документы «Кассовое поступление» с признаком «Родительская плата» и числом нераспознанных строк |
> Значения отборов сопоставляются между справочниками «Организации» и «Контрагенты» по ИНН. Если сопоставление не удалось, таблицы очищаются и выводится причина.
---
## 3. Работа с документами
### 3.1. Начисление родительской платы (сад)
Выполняется **типовым** документом БГУ «Начисление родительской платы». Расширение его не меняет. Начисления видны в рабочем месте на странице «Начисления» и служат основанием для передачи задолженности в ЦБ.
### 3.2. Передача задолженности в ЦБ (сад)
**Документ:** «Передача задолженности в ЦБ».
| Реквизит | Что указывать |
|---|---|
| Организация | Сад (ПБС) |
| ИФО | Источник финансового обеспечения сада |
| ЦБ | Централизованная бухгалтерия (получатель) |
| Период | Месяц начисления |
| Документ начисления | Основание — документ «Начисление родительской платы» |
| Сумма документа | Итог по табличной части |
| Счёт-корреспондент | По умолчанию 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, Долгих Анна Артемовна, вторая группа ран.возр, май
```
| № | Фрагмент | Как используется |
|---|---|---|
| 1 | Наименование ДОУ | справочно |
| 2 | Лицевой счёт сада | справочно |
| 3 | **Лицевой счёт ребёнка** | **основной идентификатор** (код в справочнике «Дети») |
| 4 | ФИО ребёнка | справочно |
| 5 | Группа | справочно |
| 6 | Период | справочно (для заполнения расшифровки не используется) |
Лицевой счёт ищется после последнего фрагмента «л/с»; латинская буква `X` приравнивается к кириллической `Х`, допускается вариант записи без буквы.
---
## 5. Диагностические сообщения
Сообщения выводятся при записи документа «Кассовое поступление» и при работе в рабочем месте.
| Сообщение | Причина | Действия |
|---|---|---|
| «Кассовое поступление …, строка …: контрагент не определён — не найден ребёнок с лицевым счётом …» | Лицевого счёта нет в справочнике «Дети» | Проверить код ребёнка: должен совпадать с лицевым счётом (без лишних символов и пробелов). Заполнить строку вручную |
| «… контрагент не определён — не удалось определить лицевой счёт ребёнка» | В назначении платежа нет фрагмента «л/с …» | Проверить текст назначения платежа, заполнить строку вручную |
| «… контрагент не определён — у ребёнка … не заполнен контрагент» | В карточке ребёнка не заполнен контрагент (родитель) | Заполнить контрагента в карточке ребёнка |
| «в плане счетов ЕПСБУ не найден счёт 205.31 — счёт расчётов не заполнен» | Не настроен план счетов | Обратиться к сопровождению |
| «в справочнике КОСГУ не найден код 131 — КОСГУ назначения платежа не заполнен» | Не настроен справочник КОСГУ | Обратиться к сопровождению |
| «Остатки и обороты не рассчитаны: в плане счетов ЕПСБУ не найден счет 205.31 и/или 304.04» | Не настроен план счетов | Обратиться к сопровождению |
| «Остатки не рассчитаны: не найдены остатки по счёту 205.31 …» | По счёту нет остатков на дату / по организации | Проверить дату и организацию |
| «Заполнение по остаткам невозможно: в плане счетов ЕПСБУ не найден счет 205.31» | Не настроен план счетов | Обратиться к сопровождению |
| Предупреждение о том, что отбор по учреждению на остатки не влияет | Остатки берутся из проводок, где разрез по саду отсутствует | Учитывать при анализе |
| Сообщение о невозможности сопоставить организацию и контрагента по ИНН | Расхождение ИНН в справочниках | Проверить ИНН организации и контрагента |
---
## 6. Отчёты
| Отчёт | Как открыть | Что показывает |
|---|---|---|
| **Оборотная ведомость по расчётам по родительской плате** | Кнопка «Оборотная ведомость» в рабочем месте | Обороты и остатки по регистру взаиморасчётов в разрезе учреждений и детей (колонки: остаток на начало, приход, расход, остаток на конец); отборы и период передаются из рабочего места. Если период не задан, показываются все данные |
| **Остатки и обороты** | Страница рабочего места | Остатки и обороты по счетам 205.31 и 304.04 в разрезе ИФО |
| **Сверка «передано / принято»** | Страница рабочего места | Суммы переданные и принятые по каждому документу передачи, расхождение |
| Извещение (ф. 0504805) | Команда печати в документах передачи и принятия | Печатная форма для передачи в ЦБ и сад |
---
## 7. Ограничения и особенности
1. **Период платежа не разбирается** — для заполнения расшифровки платежа он не нужен (начисление сопоставляется по контрагенту и ребёнку).
2. **Поиск ребёнка по ФИО не выполняется** — ФИО не уникально; единственный надёжный идентификатор — лицевой счёт.
3. **Сад в шапке кассового поступления не определяется** — в документе организация — это ЦБ; сад виден только по строкам расшифровки.
4. **Остатки в рабочем месте — без разреза по саду** (только в разрезе ИФО): в проводках по 205.31/304.04 разрез по учреждению отсутствует.
5. **Отчёт по виду операции «начальное сальдо»** — отбор/вывод вида операции в оборотной ведомости пока не реализован.
6. При смене лицевого счёта ребёнка в справочнике «Дети» ранее загруженные платежи автоматически не переидентифицируются — требуется ручной доввод.
7. **Структура отчёта «Оборотная ведомость» формируется программно** (учреждение → ребёнок, с показателями). Ручные изменения структуры в форме отчёта при следующем открытии могут быть перезаписаны.