Закрытие задолженности по родительской плате кассовым поступлением

This commit is contained in:
24 changed files with 3627 additions and 232 deletions
@@ -0,0 +1,190 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:AccumulationRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="3d4d5d61-5f11-43dd-bde6-5a956397624c">
<producedTypes>
<selectionType typeId="554d2ee2-3414-4483-a8f8-d3a3cab9efc9" valueTypeId="63259b6f-64a0-4ed4-98f7-07d536342d09"/>
<listType typeId="3d5952d4-4654-418f-9172-fc66fcddfa1e" valueTypeId="6aa23b44-350b-48c3-8c66-65e7e25830ee"/>
<managerType typeId="e257242e-2f23-4bb5-a072-a7aeab1c03ca" valueTypeId="0b8d4cc9-e245-4423-bb7d-ab4081974dcf"/>
<recordSetType typeId="95e1f00d-c7dd-4633-b9a3-7be6a1240a9f" valueTypeId="6d910e50-5647-4b1f-84c9-e1d47d7158d9"/>
<recordKeyType typeId="eb903f99-3ca1-4f33-b2bb-6acd513d5db1" valueTypeId="60edacff-6483-48c5-bb23-0d0d0bd03963"/>
<recordType typeId="69a9d97d-b40a-4d48-a9e6-2242d33659cd" valueTypeId="9cc5182a-6404-410e-bd4a-22f649f571b0"/>
</producedTypes>
<name>ПС_ВзаиморасчетыПоРодительскойПлате</name>
<synonym>
<key>ru</key>
<value>Взаиморасчеты по родительской плате</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<dataLockControlMode>Managed</dataLockControlMode>
<enableTotalsSplitting>true</enableTotalsSplitting>
<resources uuid="889ab667-a093-49d6-b117-6e4dfd0f5581">
<name>Сумма</name>
<synonym>
<key>ru</key>
<value>Сумма</value>
</synonym>
<type>
<types>Number</types>
<numberQualifiers>
<precision>15</precision>
<scale>2</scale>
</numberQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
</resources>
<attributes uuid="5f9b7c15-bf1a-4c3d-9f82-df697df32422">
<name>ВидОперации</name>
<synonym>
<key>ru</key>
<value>Вид операции</value>
</synonym>
<type>
<types>EnumRef.ПС_ВидыОперацийПоВзаиморасчетам</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="41aaa445-1ed9-4189-9d41-fdb0af01e3fe">
<name>ИДСтроки</name>
<synonym>
<key>ru</key>
<value>ИД строки (квитанции)</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>25</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="97856254-22f9-4198-9f0f-b7118e28d143">
<name>ДокументПередачи</name>
<synonym>
<key>ru</key>
<value>Документ передачи</value>
</synonym>
<type>
<types>DocumentRef.ПС_ПередачаЗадолженностиВЦБ</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<dimensions uuid="9e7e6520-c2fd-49a5-b71a-7654ce098bce">
<name>Организация</name>
<synonym>
<key>ru</key>
<value>Организация (ЦБ)</value>
</synonym>
<type>
<types>CatalogRef.Организации</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<useInTotals>true</useInTotals>
</dimensions>
<dimensions uuid="9c8b5fe4-4601-48ea-93fa-bedff4ab631c">
<name>Учреждение</name>
<synonym>
<key>ru</key>
<value>Учреждение-отправитель</value>
</synonym>
<type>
<types>CatalogRef.Контрагенты</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<useInTotals>true</useInTotals>
</dimensions>
<dimensions uuid="720e320e-a667-46c0-b671-513c750b0ff2">
<name>Плательщик</name>
<synonym>
<key>ru</key>
<value>Плательщик (родитель)</value>
</synonym>
<type>
<types>CatalogRef.Контрагенты</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<useInTotals>true</useInTotals>
</dimensions>
<dimensions uuid="cb1fd384-336e-4f26-ab21-5219c9d49cd4">
<name>Ребенок</name>
<synonym>
<key>ru</key>
<value>Ребенок</value>
</synonym>
<type>
<types>CatalogRef.Дети</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<useInTotals>true</useInTotals>
</dimensions>
<dimensions uuid="3297b73a-5284-459a-89c6-a6b525336885">
<name>Договор</name>
<synonym>
<key>ru</key>
<value>Договор</value>
</synonym>
<type>
<types>CatalogRef.Договоры</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<useInTotals>true</useInTotals>
</dimensions>
<dimensions uuid="882da89e-cf75-489c-ae80-600f8d6a4686">
<name>ИФО</name>
<synonym>
<key>ru</key>
<value>ИФО</value>
</synonym>
<type>
<types>CatalogRef.ИсточникиФинансовогоОбеспечения</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<useInTotals>true</useInTotals>
</dimensions>
<dimensions uuid="0b0f3a5d-a9fb-4704-803c-67c261c0e7d3">
<name>КФО</name>
<synonym>
<key>ru</key>
<value>КФО</value>
</synonym>
<type>
<types>EnumRef.КВД</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<useInTotals>true</useInTotals>
</dimensions>
<dimensions uuid="fc8962c1-e501-4a57-baba-6f99bb44f4cf">
<name>КПС</name>
<synonym>
<key>ru</key>
<value>КПС</value>
</synonym>
<type>
<types>CatalogRef.КлассификационныеПризнакиСчетов</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<useInTotals>true</useInTotals>
</dimensions>
</mdclass:AccumulationRegister>
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:ChartOfAccounts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" xmlns:mdclassExtension="http://g5.1c.ru/v8/dt/metadata/mdclass/extension" uuid="ee47af36-7bfd-45e0-9cfb-b9be1f5a48fc" extendedConfigurationObject="ce7f1d90-b092-41ff-8b2e-ea1c8a1bac33">
<producedTypes>
<objectType typeId="df719ef1-ba44-4646-a835-259537b09354" valueTypeId="ea5b72d1-85be-468e-b8e3-383472d25f1a"/>
<refType typeId="3bafdf56-67df-4dee-a682-6c701545c847" valueTypeId="a62223bc-2553-4706-962f-ab22b65f4b4a"/>
<selectionType typeId="4f8d94d5-41c4-466f-be70-eae9521afd74" valueTypeId="252e6bd2-bfb4-4010-b36e-c7b38682a307"/>
<listType typeId="5aa452e1-95b1-449f-9bb7-6fc580c7c0f3" valueTypeId="b7d95acd-a512-4151-92a2-f2ffae07dfc0"/>
<managerType typeId="bb31d5c4-8966-4aa1-a542-a66a5882d281" valueTypeId="23f9f978-3cd4-49b8-bbb9-bcb2e8d58c72"/>
<extDimensionTypes typeId="0dad9214-90d2-4f4f-96fb-24e038f8dba4" valueTypeId="99cfa67e-4e78-4a6b-9da4-94e55f0b9fde"/>
<extDimensionTypesRow typeId="b45f7c5c-e25c-4e30-929a-424b9214be38" valueTypeId="b3ebe439-d3dd-4d92-ada1-83e0a484eb1d"/>
</producedTypes>
<name>ЕПСБУ</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:ChartOfAccountsExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
</extension>
<useStandardCommands>true</useStandardCommands>
</mdclass:ChartOfAccounts>
@@ -103,4 +103,70 @@
КонецФункции
// Поиск организации, соответствующей контрагенту, по ИНН.
//
// Операция, обратная КонтрагентПоОрганизации. В документах начисления и передачи
// учреждение (сад) представлено ссылкой на справочник Организации, а в документах
// принятия, в регистре взаиморасчётов и в отборах пульта управления - ссылкой на
// справочник Контрагенты. Сопоставление выполняется по ИНН.
//
// Параметры:
// Контрагент - CatalogRef.Контрагенты - контрагент, для которого ищем организацию.
// ИмяПоляПодсказки - Строка - имя реквизита для сообщения пользователю.
//
// Возвращаемое значение:
// CatalogRef.Организации - если найдена ровно одна организация с ИНН контрагента.
// Пустая ссылка - в остальных случаях (нет ИНН / нет организации / найдено несколько).
// Причина выводится пользователю.
//
Функция ОрганизацияПоКонтрагенту(Контрагент, ИмяПоляПодсказки = "") Экспорт
ПустаяОрганизация = Справочники.Организации.ПустаяСсылка();
Если НЕ ЗначениеЗаполнено(Контрагент) Тогда
Возврат ПустаяОрганизация;
КонецЕсли;
Подсказка = ?(ПустаяСтрока(ИмяПоляПодсказки), "Организация",
"Поле """ + ИмяПоляПодсказки + """");
// Сопоставление выполняем запросом по ИНН: прямое чтение реквизита заимствованного
// справочника Контрагенты в расширении не разбирается анализатором.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Организации.Ссылка КАК Ссылка
|ИЗ
| Справочник.Организации КАК Организации
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
| ПО Контрагенты.ИНН = Организации.ИНН
|ГДЕ
| Контрагенты.Ссылка = &Контрагент
| И НЕ Организации.ПометкаУдаления";
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Представление = Строка(Контрагент);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не найдена организация с тем же ИНН, что у контрагента (" + Представление + ").|"
+ Подсказка + " не определена - отбор по учреждению не применён.");
Возврат ПустаяОрганизация;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ПервыйНайденный = Выборка.Ссылка;
Если Выборка.Следующий() Тогда
ОбщегоНазначения.СообщитьПользователю(
"Найдено несколько организаций с тем же ИНН, что у контрагента (" + Представление + ").|"
+ Подсказка + " не определена - отбор по учреждению не применён.");
Возврат ПустаяОрганизация;
КонецЕсли;
Возврат ПервыйНайденный;
КонецФункции
#КонецОбласти
@@ -0,0 +1,575 @@
// ПС_РазборПлатежейПоРодительскойПлате: идентификация ребёнка и его контрагента по назначению платежа
// в строках табличной части "Расшифровка платежа" документа КассовоеПоступление (БГУ 2.0).
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
// Заполняет контрагента, ребёнка, договор, счёт расчётов и КОСГУ назначения платежа
// в строках расшифровки платежа документа с признаком "Родительская плата"
// по тексту назначения платежа (реквизит "Примечание").
// Уже заполненные значения не перезаписываются, нераспознанные строки остаются пустыми,
// по каждой такой строке выводится диагностическое сообщение.
//
// Параметры:
// ДокументОбъект - ДокументОбъект.КассовоеПоступление - записываемый документ.
//
// Возвращаемое значение:
// Структура - итоги разбора:
// * ВсегоСтрок - Число - количество строк расшифровки платежа;
// * Заполнено - Число - количество строк с заполненным контрагентом;
// * НеРаспознано - Число - количество строк, по которым контрагент не определён.
//
Функция ЗаполнитьКонтрагентовПоНазначениюПлатежа(ДокументОбъект) Экспорт
Результат = Новый Структура("ВсегоСтрок, Заполнено, НеРаспознано", 0, 0, 0);
Результат.ВсегоСтрок = ДокументОбъект.РасшифровкаПлатежа.Количество();
Если НЕ ДокументОбъект.РодительскаяПлата Тогда
Возврат Результат;
КонецЕсли;
// Первый проход: разбор назначения платежа, без обращения к базе.
РазобранныеСтроки = Новый Массив;
КодыПоиска = Новый Массив;
Для Каждого СтрокаПлатежа Из ДокументОбъект.РасшифровкаПлатежа Цикл
Если ЗначениеЗаполнено(СтрокаПлатежа.Ребенок) Тогда
Результат.Заполнено = Результат.Заполнено + 1;
Продолжить;
КонецЕсли;
ДанныеПлатежа = РазобратьНазначениеПлатежа(СтрокаПлатежа.Примечание);
ДанныеПлатежа.Вставить("СтрокаПлатежа", СтрокаПлатежа);
РазобранныеСтроки.Добавить(ДанныеПлатежа);
Для Каждого Код Из КодыПоискаРебенка(ДанныеПлатежа.ЛицевойСчет) Цикл
КодыПоиска.Добавить(Код);
КонецЦикла;
КонецЦикла;
Если РазобранныеСтроки.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
// Один запрос на весь документ: дети по распознанным лицевым счетам.
ДетиПоСчетам = ДетиПоЛицевымСчетам(КодыПоиска);
// Второй проход: отбор строк, по которым ребёнок и его контрагент определены однозначно.
СтрокиКЗаполнению = Новый Массив;
Контрагенты = Новый Соответствие;
Для Каждого ДанныеПлатежа Из РазобранныеСтроки Цикл
СтрокаПлатежа = ДанныеПлатежа.СтрокаПлатежа;
Ребенок = РебенокПоЛицевомуСчету(ДетиПоСчетам, ДанныеПлатежа.ЛицевойСчет);
Если Ребенок = Неопределено
Или НЕ ЗначениеЗаполнено(Ребенок.Контрагент) Тогда
Результат.НеРаспознано = Результат.НеРаспознано + 1;
ОбщегоНазначения.СообщитьПользователю(
СтрШаблон("Кассовое поступление %1, строка %2: контрагент не определён - %3.",
Строка(ДокументОбъект.Номер), СтрокаПлатежа.НомерСтроки,
ПричинаНераспознанногоРебенка(ДанныеПлатежа.ЛицевойСчет, Ребенок)));
Продолжить;
КонецЕсли;
СтрокаКЗаполнению = Новый Структура("СтрокаПлатежа, Ребенок, Контрагент");
СтрокаКЗаполнению.СтрокаПлатежа = СтрокаПлатежа;
СтрокаКЗаполнению.Ребенок = Ребенок.Ссылка;
СтрокаКЗаполнению.Контрагент = Ребенок.Контрагент;
СтрокиКЗаполнению.Добавить(СтрокаКЗаполнению);
Контрагенты.Вставить(Ребенок.Контрагент, Истина);
КонецЦикла;
Если СтрокиКЗаполнению.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
// Счёт расчётов и КОСГУ родительской платы: типовая загрузка реестров их не определяет,
// а для проводок по счёту 205.31 они обязательны.
СчетРасчетов = ПланыСчетов.ЕПСБУ.НайтиПоКоду("205.31");
Если НЕ ЗначениеЗаполнено(СчетРасчетов) Тогда
ОбщегоНазначения.СообщитьПользователю(
СтрШаблон("Кассовое поступление %1: в плане счетов ЕПСБУ не найден счёт 205.31 - счёт расчётов не заполнен.",
Строка(ДокументОбъект.Номер)));
КонецЕсли;
КОСГУНазначениеПлатежа = Справочники.КОСГУ.НайтиПоКоду("131");
Если НЕ ЗначениеЗаполнено(КОСГУНазначениеПлатежа) Тогда
ОбщегоНазначения.СообщитьПользователю(
СтрШаблон("Кассовое поступление %1: в справочнике КОСГУ не найден код 131 - КОСГУ назначения платежа не заполнен.",
Строка(ДокументОбъект.Номер)));
КонецЕсли;
// Договоры определяются одним запросом сразу по всем контрагентам документа.
Договоры = ДоговорыПоКонтрагентам(Контрагенты, ДокументОбъект, СчетРасчетов);
Результат.Заполнено = Результат.Заполнено + ЗаполнитьСтрокиРасшифровки(
СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа);
Возврат Результат;
КонецФункции
// Разбирает текст назначения платежа и определяет лицевой счёт ребёнка.
// Обращения к базе здесь нет: поиск ребёнка выполняет вызывающий код одним запросом на весь документ.
//
// Параметры:
// ТекстНазначения - Строка - назначение платежа (реквизит "Примечание" строки расшифровки платежа).
//
// Возвращаемое значение:
// Структура - результат разбора:
// * ЛицевойСчет - Строка - распознанный лицевой счёт ребёнка; пустая строка, если не распознан;
// * ФИО - Строка - ФИО ребёнка из назначения платежа; пустая строка, если не распознано.
//
Функция РазобратьНазначениеПлатежа(ТекстНазначения) Экспорт
Результат = Новый Структура;
Результат.Вставить("ЛицевойСчет", "");
Результат.Вставить("ФИО", "");
Если НЕ ЗначениеЗаполнено(ТекстНазначения) Тогда
Возврат Результат;
КонецЕсли;
Результат.ЛицевойСчет = ОпределитьЛицевойСчетРебенка(ТекстНазначения);
Результат.ФИО = ОпределитьФИОИзНазначения(ТекстНазначения);
Возврат Результат;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Определяет договоры для контрагентов документа.
//
// Параметры:
// Контрагенты - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты (дети) документа.
// ДокументОбъект - ДокументОбъект.КассовоеПоступление - документ, по дате и организации которого ищутся остатки.
// СчетРасчетов - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы (205.31).
//
// Возвращаемое значение:
// Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - договоры по контрагентам,
// определённые однозначно.
//
Функция ДоговорыПоКонтрагентам(Контрагенты, ДокументОбъект, СчетРасчетов)
КонтрагентыМассив = Новый Массив;
Для Каждого Элемент Из Контрагенты Цикл
КонтрагентыМассив.Добавить(Элемент.Ключ);
КонецЦикла;
Результат = Новый Соответствие;
Неоднозначные = Новый Соответствие;
КоличествоДоговоров = Новый Соответствие;
// 1. Договоры из остатков по счёту 205.31 - приоритетный источник.
ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ДокументОбъект, СчетРасчетов, Результат, Неоднозначные);
// 2. Для остальных контрагентов - единственный договор, отобранный по реквизиту "Контрагент".
ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, Результат, Неоднозначные, КоличествоДоговоров);
// 3. Диагностика по контрагентам, для которых договор определить не удалось.
Для Каждого Элемент Из Контрагенты Цикл
Если Результат[Элемент.Ключ] <> Неопределено Тогда
Продолжить;
КонецЕсли;
Если Неоднозначные[Элемент.Ключ] <> Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю(
СтрШаблон("Кассовое поступление %1: по контрагенту %2 в остатках счёта 205.31 найдено несколько договоров, договор не заполнен.",
Строка(ДокументОбъект.Номер), Строка(Элемент.Ключ)));
Продолжить;
КонецЕсли;
Количество = КоличествоДоговоров[Элемент.Ключ];
Если Количество = Неопределено Тогда
Количество = 0;
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(
СтрШаблон("Кассовое поступление %1: по контрагенту %2 найдено договоров - %3, договор не заполнен.",
Строка(ДокументОбъект.Номер), Строка(Элемент.Ключ), Количество));
КонецЦикла;
Возврат Результат;
КонецФункции
// Дополняет результат договорами, найденными в остатках по счёту 205.31.
//
// Параметры:
// КонтрагентыМассив - Массив из СправочникСсылка.Контрагенты - контрагенты (дети), по которым ищутся остатки.
// ДокументОбъект - ДокументОбъект.КассовоеПоступление - документ, по дате и организации которого ищутся остатки.
// Счет20531 - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы (205.31).
// Результат - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - дополняется найденными договорами.
// Неоднозначные - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты с несколькими договорами в остатках.
//
Процедура ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ДокументОбъект, Счет20531, Результат, Неоднозначные)
Если НЕ ЗначениеЗаполнено(Счет20531) Тогда
Возврат;
КонецЕсли;
// Порядок субконто берём из настройки самого счёта: субконто1 - контрагенты, субконто2 - договоры.
ВидыСубконто = Новый Массив;
Для Каждого СтрокаСубконто Из Счет20531.ВидыСубконто Цикл
ВидыСубконто.Добавить(СтрокаСубконто.ВидСубконто);
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Остатки.Субконто1 КАК Контрагент,
| Остатки.Субконто2 КАК Договор
|ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Остатки(
| &Дата,
| Счет В ИЕРАРХИИ (&Счет20531),
| &ВидыСубконто,
| Организация = &Организация И Субконто1 В (&Контрагенты)) КАК Остатки
|ГДЕ
| Остатки.СуммаОстаток <> 0";
Запрос.УстановитьПараметр("Дата", ДокументОбъект.Дата);
Запрос.УстановитьПараметр("Счет20531", Счет20531);
Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
Запрос.УстановитьПараметр("Контрагенты", КонтрагентыМассив);
Запрос.УстановитьПараметр("Организация", ДокументОбъект.Организация);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если НЕ ЗначениеЗаполнено(Выборка.Договор) Тогда
Продолжить;
КонецЕсли;
НайденныйДоговор = Результат[Выборка.Контрагент];
Если НайденныйДоговор = Неопределено Тогда
Результат.Вставить(Выборка.Контрагент, Выборка.Договор);
ИначеЕсли НайденныйДоговор <> Выборка.Договор Тогда
Неоднозначные.Вставить(Выборка.Контрагент, Истина);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Дополняет результат единственным договором, отобранным по реквизиту "Контрагент".
//
// Параметры:
// КонтрагентыМассив - Массив из СправочникСсылка.Контрагенты - контрагенты (дети), по которым отбираются договоры.
// Результат - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - дополняется найденными договорами.
// Неоднозначные - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты с неоднозначным договором.
// КоличествоДоговоров - Соответствие из СправочникСсылка.Контрагенты, Число - количество найденных договоров.
//
Процедура ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, Результат, Неоднозначные, КоличествоДоговоров)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Договоры.Контрагент КАК Контрагент,
| Договоры.Ссылка КАК Договор
|ИЗ
| Справочник.Договоры КАК Договоры
|ГДЕ
| НЕ Договоры.ПометкаУдаления
| И Договоры.Контрагент В (&Контрагенты)
|УПОРЯДОЧИТЬ ПО
| Договоры.Контрагент";
Запрос.УстановитьПараметр("Контрагенты", КонтрагентыМассив);
Найденные = Новый Соответствие;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДоговорыКонтрагента = Найденные[Выборка.Контрагент];
Если ДоговорыКонтрагента = Неопределено Тогда
ДоговорыКонтрагента = Новый Массив;
Найденные.Вставить(Выборка.Контрагент, ДоговорыКонтрагента);
КонецЕсли;
ДоговорыКонтрагента.Добавить(Выборка.Договор);
КонецЦикла;
Для Каждого Элемент Из Найденные Цикл
КоличествоДоговоров.Вставить(Элемент.Ключ, Элемент.Значение.Количество());
Если Элемент.Значение.Количество() = 1
И Результат[Элемент.Ключ] = Неопределено
И Неоднозначные[Элемент.Ключ] = Неопределено Тогда
Результат.Вставить(Элемент.Ключ, Элемент.Значение[0]);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Заполняет реквизиты строк расшифровки платежа по результатам разбора назначения.
// КОСГУ "000", проставленный типовой загрузкой реестров, заменяется принудительно;
// остальные заполненные значения не перезаписываются.
//
// Параметры:
// СтрокиКЗаполнению - Массив из Структура - строки, по которым определён ребёнок и контрагент.
// Договоры - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры -
// договоры, определённые по контрагентам однозначно.
// СчетРасчетов - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы.
// КОСГУНазначениеПлатежа - СправочникСсылка.КОСГУ - КОСГУ назначения платежа.
//
// Возвращаемое значение:
// Число - количество заполненных строк расшифровки платежа.
//
Функция ЗаполнитьСтрокиРасшифровки(СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа)
// Типовая загрузка реестров прописывает в КОСГУ назначения платежа код "000" -
// для родительской платы его нужно заменить принудительно.
КОСГУНеУказан = Справочники.КОСГУ.НайтиПоКоду("000");
Заполнено = 0;
Для Каждого СтрокаКЗаполнению Из СтрокиКЗаполнению Цикл
СтрокаРасшифровки = СтрокаКЗаполнению.СтрокаПлатежа;
СтрокаРасшифровки.Ребенок = СтрокаКЗаполнению.Ребенок;
СтрокаРасшифровки.Контрагент = СтрокаКЗаполнению.Контрагент;
Договор = Договоры[СтрокаКЗаполнению.Контрагент];
Если Договор = Неопределено Тогда
Договор = Справочники.Договоры.ПустаяСсылка();
КонецЕсли;
СтрокаРасшифровки.Договор = Договор;
Если НЕ ЗначениеЗаполнено(СтрокаРасшифровки.СчетРасчетов) И ЗначениеЗаполнено(СчетРасчетов) Тогда
СтрокаРасшифровки.СчетРасчетов = СчетРасчетов;
КонецЕсли;
КОСГУСтроки = СтрокаРасшифровки.КОСГУНазначениеПлатежа;
КОСГУПустой = НЕ ЗначениеЗаполнено(КОСГУСтроки)
Или (ЗначениеЗаполнено(КОСГУНеУказан) И КОСГУСтроки = КОСГУНеУказан);
Если ЗначениеЗаполнено(КОСГУНазначениеПлатежа) И КОСГУПустой Тогда
СтрокаРасшифровки.КОСГУНазначениеПлатежа = КОСГУНазначениеПлатежа;
КонецЕсли;
Заполнено = Заполнено + 1;
КонецЦикла;
Возврат Заполнено;
КонецФункции
// Определяет лицевой счёт ребёнка по тексту назначения платежа.
// Лицевой счёт идёт после последнего вхождения "л/с" и может начинаться с буквы "Х" или "Г".
//
// Параметры:
// ТекстНазначения - Строка - назначение платежа.
//
// Возвращаемое значение:
// Строка - лицевой счёт ребёнка (возможно, с буквой "Х"/"Г" на первом месте); пустая строка, если не найден.
//
Функция ОпределитьЛицевойСчетРебенка(ТекстНазначения)
// Латинские "X"/"x" приводим к кириллической "Х": в реестрах встречаются оба варианта.
Текст = СтрЗаменить(ВРЕГ(ТекстНазначения), "X", "Х");
Позиция = СтрНайти(Текст, "Л/С", НаправлениеПоиска.СКонца);
ДлинаПрефикса = 3;
Если Позиция = 0 Тогда
Позиция = СтрНайти(Текст, "ЛС", НаправлениеПоиска.СКонца);
ДлинаПрефикса = 2;
КонецЕсли;
Если Позиция = 0 Тогда
Возврат "";
КонецЕсли;
Фрагмент = СокрЛП(Сред(Текст, Позиция + ДлинаПрефикса, 20));
Буква = "";
Если Лев(Фрагмент, 1) = "Х" Или Лев(Фрагмент, 1) = "Г" Тогда
Буква = Лев(Фрагмент, 1);
Фрагмент = Сред(Фрагмент, 2);
КонецЕсли;
Цифры = "";
Для Индекс = 1 По СтрДлина(Фрагмент) Цикл
Символ = Сред(Фрагмент, Индекс, 1);
Если НЕ СимволЯвляетсяЦифрой(Символ) Тогда
Прервать;
КонецЕсли;
Цифры = Цифры + Символ;
КонецЦикла;
Возврат Буква + Цифры;
КонецФункции
// Возвращает ФИО ребёнка из текста назначения платежа (4-я часть, разделитель - запятая).
// Для поиска используется пара "Фамилия Имя", как в реестрах.
//
// Параметры:
// ТекстНазначения - Строка - назначение платежа.
//
// Возвращаемое значение:
// Строка - ФИО ребёнка; пустая строка, если часть не найдена.
//
Функция ОпределитьФИОИзНазначения(ТекстНазначения)
Части = СтрРазделить(ТекстНазначения, ",");
Если Части.Количество() < 4 Тогда
Возврат "";
КонецЕсли;
ФИО = СокрЛП(Части[3]);
Слова = СтрРазделить(ФИО, " ", Ложь);
Если Слова.Количество() >= 2 Тогда
Возврат Слова[0] + " " + Слова[1];
КонецЕсли;
Возврат ФИО;
КонецФункции
// Возвращает варианты лицевого счёта для поиска в справочнике детей.
// В справочнике код может храниться как с буквой "Х"/"Г", так и без неё.
//
// Параметры:
// ЛицевойСчет - Строка - лицевой счёт, распознанный в назначении платежа.
//
// Возвращаемое значение:
// Массив из Строка - варианты кода; пустой массив, если лицевой счёт не распознан.
//
Функция КодыПоискаРебенка(ЛицевойСчет)
Коды = Новый Массив;
Если НЕ ЗначениеЗаполнено(ЛицевойСчет) Тогда
Возврат Коды;
КонецЕсли;
// Код справочника хранится дополненным пробелами до длины 15, поэтому нормализуем обе стороны сравнения.
ЛицевойСчет = СокрЛП(ЛицевойСчет);
Коды.Добавить(ЛицевойСчет);
Если Лев(ЛицевойСчет, 1) = "Х" Или Лев(ЛицевойСчет, 1) = "Г" Тогда
Коды.Добавить(СокрЛП(Сред(ЛицевойСчет, 2)));
КонецЕсли;
Возврат Коды;
КонецФункции
// Загружает детей по лицевым счетам одним запросом.
// Лицевой счёт уникален для ЦБ и всех подшефных учреждений, поэтому отбор по организации не применяется.
//
// Параметры:
// Коды - Массив из Строка - варианты лицевых счетов, распознанные в строках документа.
//
// Возвращаемое значение:
// Соответствие из Строка, Структура - найденные дети по коду: Ссылка, Наименование, Контрагент.
//
Функция ДетиПоЛицевымСчетам(Коды)
Результат = Новый Соответствие;
Если Коды.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Дети.Код КАК Код,
| Дети.Ссылка КАК Ссылка,
| Дети.Наименование КАК Наименование,
| Дети.Контрагент КАК Контрагент
|ИЗ
| Справочник.Дети КАК Дети
|ГДЕ
| НЕ Дети.ПометкаУдаления
| И Дети.Код В (&Коды)";
Запрос.УстановитьПараметр("Коды", Коды);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Результат.Вставить(СокрЛП(Выборка.Код), Новый Структура("Ссылка, Наименование, Контрагент",
Выборка.Ссылка, Выборка.Наименование, Выборка.Контрагент));
КонецЦикла;
Возврат Результат;
КонецФункции
// Находит ребёнка в заранее загруженном соответствии по распознанному лицевому счёту.
//
// Параметры:
// ДетиПоСчетам - Соответствие из Строка, Структура - дети, загруженные по лицевым счетам документа.
// ЛицевойСчет - Строка - лицевой счёт, распознанный в назначении платежа.
//
// Возвращаемое значение:
// Структура, Неопределено - Ссылка, Наименование, Контрагент найденного ребёнка;
// Неопределено, если ребёнок не найден.
//
Функция РебенокПоЛицевомуСчету(ДетиПоСчетам, ЛицевойСчет)
Для Каждого Код Из КодыПоискаРебенка(ЛицевойСчет) Цикл
Ребенок = ДетиПоСчетам[Код];
Если Ребенок <> Неопределено Тогда
Возврат Ребенок;
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункции
// Формирует причину, по которой контрагент в строке не определён.
//
// Параметры:
// ЛицевойСчет - Строка - распознанный лицевой счёт ребёнка.
// Ребенок - Структура, Неопределено - найденный ребёнок (если найден, но без контрагента).
//
// Возвращаемое значение:
// Строка - текст причины.
//
Функция ПричинаНераспознанногоРебенка(ЛицевойСчет, Ребенок)
Если Ребенок <> Неопределено Тогда
Возврат СтрШаблон("у ребёнка %1 не заполнен контрагент", Ребенок.Наименование);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ЛицевойСчет) Тогда
Возврат "не удалось определить лицевой счёт ребёнка";
КонецЕсли;
Возврат СтрШаблон("не найден ребёнок с лицевым счётом %1", ЛицевойСчет);
КонецФункции
// Определяет, является ли символ цифрой.
//
// Параметры:
// Символ - Строка - проверяемый символ.
//
// Возвращаемое значение:
// Булево - Истина, если символ является цифрой.
//
Функция СимволЯвляетсяЦифрой(Символ)
Если НЕ ЗначениеЗаполнено(Символ) Тогда
Возврат Ложь;
КонецЕсли;
Возврат СтрНайти("0123456789", Символ) > 0;
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="a9ee4410-855c-4dc4-85ef-9af8461517f6">
<name>ПС_РазборПлатежейПоРодительскойПлате</name>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>
@@ -57,55 +57,37 @@
КонецФункции
// Возвращает КЭК, определяющий экономический смысл операции по счёту 304.04
// ("Внутриведомственные расчеты"): для доходной операции это КЭК счёта 401.10
// проводок документа-основания. Если проводок по 401.10 в основании нет
// (например, основание - документ передачи задолженности), берётся КЭК счёта 304.04.
// Автоматически такой КЭК не определяется - соответствующих сопоставлений в справочниках нет.
//
// Параметры:
// ДокументИсточник - ДокументСсылка.НачислениеРодительскойПлаты, ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ - проведённый документ, проводки которого используются как источник данных.
// Возвращает счёт, корреспондирующий со счётом расчётов по доходам (205.31),
// по умолчанию: 304.04 (внутриведомственные расчёты).
//
// Возвращаемое значение:
// СправочникСсылка.КОСГУ - КЭК счёта 401.10 (или 304.04) проводок документа-источника; пустая ссылка, если проводок нет.
// ПланСчетовСсылка.ЕПСБУ - счёт по умолчанию; пустая ссылка, если счёт не найден в плане счетов.
//
Функция КЭКПоЭкономическомуСмыслу(ДокументИсточник) Экспорт
Функция СчетКорреспондентПоУмолчанию() Экспорт
Если НЕ ЗначениеЗаполнено(ДокументИсточник) Тогда
Счет = ПланыСчетов.ЕПСБУ.НайтиПоКоду("304.04");
Если Счет = Неопределено Тогда
Возврат ПланыСчетов.ЕПСБУ.ПустаяСсылка();
КонецЕсли;
Возврат Счет;
КонецФункции
// Возвращает КЭК корреспондирующего счёта по умолчанию: 131
// (доходы от оказания платных услуг). Значение редактируется пользователем в документе.
//
// Возвращаемое значение:
// СправочникСсылка.КОСГУ - КЭК по умолчанию; пустая ссылка, если КЭК не найден.
//
Функция КЭККорреспондентПоУмолчанию() Экспорт
КЭК = Справочники.КОСГУ.НайтиПоКоду("131");
Если КЭК = Неопределено Тогда
Возврат Справочники.КОСГУ.ПустаяСсылка();
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ВЫБОР
| КОГДА Проводки.СчетДт.Код = ""401.10"" ИЛИ Проводки.СчетКт.Код = ""401.10""
| ТОГДА 0
| ИНАЧЕ 1
| КОНЕЦ КАК Приоритет,
| ВЫБОР
| КОГДА Проводки.СчетДт.Код В (""401.10"", ""304.04"")
| ТОГДА Проводки.КЭКДт
| ИНАЧЕ Проводки.КЭККт
| КОНЕЦ КАК КЭК
|ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ДвиженияССубконто КАК Проводки
|ГДЕ
| Проводки.Регистратор = &ДокументИсточник
| И (Проводки.СчетДт.Код В (""401.10"", ""304.04"")
| ИЛИ Проводки.СчетКт.Код В (""401.10"", ""304.04""))
|
|УПОРЯДОЧИТЬ ПО
| Приоритет,
| Проводки.НомерСтроки";
Запрос.УстановитьПараметр("ДокументИсточник", ДокументИсточник);
Выборка = Запрос.Выполнить().Выбрать();
Если НЕ Выборка.Следующий() Тогда
Возврат Справочники.КОСГУ.ПустаяСсылка();
КонецЕсли;
Возврат Выборка.КЭК;
Возврат КЭК;
КонецФункции
@@ -120,15 +102,23 @@
// ДокументСсылка - ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ, ДокументСсылка.ПС_ПринятиеЗадолженностиОтУчреждения - печатаемый документ.
//
// Возвращаемое значение:
// ТабличныйДокумент - печатная форма; пустой табличный документ, если документ не проведён или макет не найден.
// ТабличныйДокумент - печатная форма; пустой табличный документ, если документ не записан, не проведён, нет проводок или не найден макет.
//
Функция ПечатьИзвещения0504805(ДокументСсылка) Экспорт
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.АвтоМасштаб = Истина;
Если НЕ ЗначениеЗаполнено(ДокументСсылка) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Печатная форма извещения не сформирована: документ не записан в базу. Запишите документ и повторите печать.");
Возврат ТабличныйДокумент;
КонецЕсли;
ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
Если ДокументОбъект = Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю(
"Печатная форма извещения не сформирована: не удалось прочитать документ.");
Возврат ТабличныйДокумент;
КонецЕсли;
@@ -152,7 +142,24 @@
+ ". Основание: " + Строка(ДокументОбъект.ДокументПередачи) + ".";
КонецЕсли;
Если Макет = Неопределено ИЛИ НЕ ДокументОбъект.Проведен Тогда
Если Макет = Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю(
"Печатная форма извещения не сформирована: в документе не найден макет печатной формы.");
Возврат ТабличныйДокумент;
КонецЕсли;
Если НЕ ДокументОбъект.Проведен Тогда
ОбщегоНазначения.СообщитьПользователю(
"Печатная форма извещения формируется по проводкам документа, поэтому печатается"
+ " только проведённый документ. Проведите документ и повторите печать.");
Возврат ТабличныйДокумент;
КонецЕсли;
Проводки = ПроводкиИзвещения(ДокументСсылка);
Если Проводки.Количество() = 0 Тогда
ОбщегоНазначения.СообщитьПользователю(
"По документу не найдено проводок в регистре бухгалтерии - печатная форма"
+ " извещения не сформирована.");
Возврат ТабличныйДокумент;
КонецЕсли;
@@ -170,7 +177,6 @@
ТабличныйДокумент.Вывести(Макет.ПолучитьОбласть("Шапка"));
Проводки = ПроводкиИзвещения(ДокументСсылка);
ИтогоСумма = 0;
Для Каждого Проводка Из Проводки Цикл
@@ -197,7 +203,7 @@
ЗаполнитьПодписиСтороны(ОбластьПодвал.Параметры, СторонаПечати, ДокументОбъект);
ТабличныйДокумент.Вывести(ОбластьПодвал);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, 1, Новый Соответствие, ДокументСсылка);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, 1, Новый СписокЗначений, ДокументСсылка);
Возврат ТабличныйДокумент;
@@ -48,6 +48,7 @@
<roles>Role.БазовыеПраваБГУ</roles>
<commonModules>CommonModule.ПС_РаботаСКонтрагентами</commonModules>
<commonModules>CommonModule.ПС_УчетРодительскойПлаты</commonModules>
<commonModules>CommonModule.ПС_РазборПлатежейПоРодительскойПлате</commonModules>
<commonForms>CommonForm.УстановкаСтатусаПлатежноРасчетногоДокумента</commonForms>
<catalogs>Catalog.Контрагенты</catalogs>
<catalogs>Catalog.Договоры</catalogs>
@@ -64,11 +65,16 @@
<documents>Document.НачислениеРодительскойПлаты</documents>
<documents>Document.ПС_ПередачаЗадолженностиВЦБ</documents>
<documents>Document.ПС_ПринятиеЗадолженностиОтУчреждения</documents>
<documents>Document.КассовоеПоступление</documents>
<enums>Enum.КВД</enums>
<enums>Enum.ПС_ВидыОперацийПоВзаиморасчетам</enums>
<reports>Report.ПС_ОборотнаяВедомостьПоРодительскойПлате</reports>
<dataProcessors>DataProcessor.ПС_УправлениеРасчетамиПоРодительскойПлате</dataProcessors>
<informationRegisters>InformationRegister.ПлательщикиПоУслугамДДУ</informationRegisters>
<informationRegisters>InformationRegister.ФИОФизическихЛиц</informationRegisters>
<informationRegisters>InformationRegister.ДокументыФизическихЛиц</informationRegisters>
<accumulationRegisters>AccumulationRegister.ТабельУчетаПосещаемостиДетей</accumulationRegisters>
<accumulationRegisters>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате</accumulationRegisters>
<chartsOfAccounts>ChartOfAccounts.ЕПСБУ</chartsOfAccounts>
<accountingRegisters>AccountingRegister.ЖурналПроводокЕПСБУ</accountingRegisters>
</mdclass:Configuration>
@@ -6,8 +6,14 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если НЕ ЗначениеЗаполнено(Объект.Период) Тогда
Объект.Период = НачалоМесяца(ТекущаяДатаСеанса());
Если НЕ ЗначениеЗаполнено(Объект.Период.ДатаНачала)
ИЛИ НЕ ЗначениеЗаполнено(Объект.Период.ДатаОкончания) Тогда
Объект.Период.Вариант = ВариантСтандартногоПериода.ЭтотМесяц;
КонецЕсли;
// Пульт ведётся со стороны ЦБ, поэтому по умолчанию подставляем организацию ЦБ.
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
Объект.Организация = Константы.ОрганизацияЦентрализованнаяБухгалтерия.Получить();
КонецЕсли;
ОбновитьТаблицыНаСервере();
@@ -27,6 +33,41 @@
КонецПроцедуры
// Открывает оборотную ведомость по расчетам по родительской плате.
//
// В отчёт передаются текущие отборы пульта (организация, учреждение, ИФО) и границы периода.
// Значения попадают в отчёт через штатный параметр формы отчёта "Отбор": для полей набора
// данных это отбор, для параметров компоновки (НачалоПериода, КонецПериода) - значения.
//
&НаКлиенте
Процедура ОборотнаяВедомость(Команда)
Если НЕ ПериодЗаполненНаСервере() Тогда
Возврат;
КонецЕсли;
Отбор = Новый Структура;
Если ЗначениеЗаполнено(Объект.Организация) Тогда
Отбор.Вставить("Организация", Объект.Организация);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Учреждение) Тогда
Отбор.Вставить("Учреждение", Объект.Учреждение);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ИФО) Тогда
Отбор.Вставить("ИФО", Объект.ИФО);
КонецЕсли;
Отбор.Вставить("НачалоПериода", Объект.Период.ДатаНачала);
Отбор.Вставить("КонецПериода", Объект.Период.ДатаОкончания);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ОткрытьФорму("Отчет.ПС_ОборотнаяВедомостьПоРодительскойПлате.Форма", ПараметрыФормы);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -37,18 +78,65 @@
&НаСервере
Процедура ОбновитьТаблицыНаСервере()
ЗаполнитьНачисления();
ЗаполнитьДокументыПередачи();
Если НЕ ПериодЗаполненНаСервере() Тогда
ОчиститьТаблицы();
Возврат;
КонецЕсли;
// Отборы формы заданы в терминах ЦБ: Организация - это ЦБ (справочник Организации),
// Учреждение - сад (справочник Контрагенты). Документы начисления и передачи хранят
// сад как Организацию, а ЦБ в документе передачи - как Контрагента. Приводим значения
// отбора к типам, которые есть в документах, сопоставлением по ИНН.
ЦБКонтрагент = Неопределено;
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ЦБКонтрагент = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(Объект.Организация, "Организация (ЦБ)");
Если НЕ ЗначениеЗаполнено(ЦБКонтрагент) Тогда
ОчиститьТаблицы();
Возврат;
КонецЕсли;
КонецЕсли;
СадОрганизация = Неопределено;
Если ЗначениеЗаполнено(Объект.Учреждение) Тогда
СадОрганизация = ПС_РаботаСКонтрагентами.ОрганизацияПоКонтрагенту(Объект.Учреждение, "Учреждение (сад)");
Если НЕ ЗначениеЗаполнено(СадОрганизация) Тогда
ОчиститьТаблицы();
Возврат;
КонецЕсли;
КонецЕсли;
ЗаполнитьНачисления(СадОрганизация);
ЗаполнитьДокументыПередачи(ЦБКонтрагент, СадОрганизация);
ЗаполнитьДокументыПринятия();
ЗаполнитьСверку();
ЗаполнитьСверку(ЦБКонтрагент, СадОрганизация);
ЗаполнитьТаблицуОстатков();
ЗаполнитьКассовыеПоступления();
КонецПроцедуры
// Очищает таблицы формы. Вызывается, когда значения отборов не удалось сопоставить
// с данными документов; причина уже выведена пользователю.
//
&НаСервере
Процедура ОчиститьТаблицы()
Начисления.Очистить();
ДокументыПередачи.Очистить();
ДокументыПринятия.Очистить();
Сверка.Очистить();
ТаблицаОстатков.Очистить();
КассовыеПоступления.Очистить();
КонецПроцедуры
// Заполняет таблицу формы Начисления по установленным фильтрам.
//
// Параметры:
// СадОрганизация - CatalogRef.Организации, Неопределено - учреждение (сад) в виде
// организации; Неопределено - отбор по учреждению не задан.
//
&НаСервере
Процедура ЗаполнитьНачисления()
Процедура ЗаполнитьНачисления(СадОрганизация)
Начисления.Очистить();
@@ -60,24 +148,25 @@
| Документы.Номер КАК Номер,
| Документы.Организация КАК Организация,
| Документы.ИФО КАК ИФО,
| Документы.Период КАК Период,
| Документы.НачалоПериода КАК Период,
| Документы.СуммаДокумента КАК СуммаДокумента,
| Документы.Проведен КАК Проведен,
| Документы.ПометкаУдаления КАК ПометкаУдаления
|ИЗ
| Документ.НачислениеРодительскойПлаты КАК Документы
|ГДЕ
| (&Период = ДАТАВРЕМЯ(1, 1, 1)
| ИЛИ Документы.Период >= &Период)
| И (&Организация = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.Организация = &Организация)
| Документы.НачалоПериода >= &НачалоПериода
| И Документы.НачалоПериода <= &КонецПериода
| И (&Сад = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.Организация = &Сад)
| И (&ИФО = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.ИФО = &ИФО)
|УПОРЯДОЧИТЬ ПО
| Документы.Дата УБЫВ";
Запрос.УстановитьПараметр("Период", Объект.Период);
Запрос.УстановитьПараметр("Организация", ?(ЗначениеЗаполнено(Объект.Организация), Объект.Организация, Неопределено));
Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания);
Запрос.УстановитьПараметр("Сад", СадОрганизация);
Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено));
Выборка = Запрос.Выполнить().Выбрать();
@@ -89,8 +178,14 @@
// Заполняет таблицу формы ДокументыПередачи по установленным фильтрам.
//
// Параметры:
// ЦБКонтрагент - CatalogRef.Контрагенты, Неопределено - ЦБ в виде контрагента
// (документ передачи хранит ЦБ именно так); Неопределено - отбор не задан.
// СадОрганизация - CatalogRef.Организации, Неопределено - учреждение (сад) в виде
// организации; Неопределено - отбор по учреждению не задан.
//
&НаСервере
Процедура ЗаполнитьДокументыПередачи()
Процедура ЗаполнитьДокументыПередачи(ЦБКонтрагент, СадОрганизация)
ДокументыПередачи.Очистить();
@@ -105,26 +200,28 @@
| Документы.ИФО КАК ИФО,
| Документы.Период КАК Период,
| Документы.СуммаДокумента КАК СуммаДокумента,
| Документы.ПередачаСальдо КАК ПередачаСальдо,
| Документы.Проведен КАК Проведен,
| Документы.ПометкаУдаления КАК ПометкаУдаления
|ИЗ
| Документ.ПС_ПередачаЗадолженностиВЦБ КАК Документы
|ГДЕ
| (&Период = ДАТАВРЕМЯ(1, 1, 1)
| ИЛИ Документы.Период >= &Период)
| И (&Организация = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.Организация = &Организация)
| И (&ИФО = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.ИФО = &ИФО)
| Документы.Период >= &НачалоПериода
| И Документы.Период <= &КонецПериода
| И (&ЦБ = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.ЦБ = &ЦБ)
| И (&Сад = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.Организация = &Сад)
| И (&ИФО = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.ИФО = &ИФО)
|УПОРЯДОЧИТЬ ПО
| Документы.Дата УБЫВ";
Запрос.УстановитьПараметр("Период", Объект.Период);
Запрос.УстановитьПараметр("Организация", ?(ЗначениеЗаполнено(Объект.Организация), Объект.Организация, Неопределено));
Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания);
Запрос.УстановитьПараметр("ЦБ", ЦБКонтрагент);
Запрос.УстановитьПараметр("Сад", СадОрганизация);
Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено));
Запрос.УстановитьПараметр("ЦБ", ?(ЗначениеЗаполнено(Объект.ЦБ), Объект.ЦБ, Неопределено));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
@@ -151,22 +248,27 @@
| Документы.ИФО КАК ИФО,
| Документы.Период КАК Период,
| Документы.СуммаДокумента КАК СуммаДокумента,
| Документы.ПередачаСальдо КАК ПередачаСальдо,
| Документы.Проведен КАК Проведен,
| Документы.ПометкаУдаления КАК ПометкаУдаления
|ИЗ
| Документ.ПС_ПринятиеЗадолженностиОтУчреждения КАК Документы
|ГДЕ
| (&Период = ДАТАВРЕМЯ(1, 1, 1)
| ИЛИ Документы.Период >= &Период)
| Документы.Период >= &НачалоПериода
| И Документы.Период <= &КонецПериода
| И (&Организация = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.Организация = &Организация)
| И (&Учреждение = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.Учреждение = &Учреждение)
| И (&ИФО = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.ИФО = &ИФО)
|УПОРЯДОЧИТЬ ПО
| Документы.Дата УБЫВ";
Запрос.УстановитьПараметр("Период", Объект.Период);
Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания);
Запрос.УстановитьПараметр("Организация", ?(ЗначениеЗаполнено(Объект.Организация), Объект.Организация, Неопределено));
Запрос.УстановитьПараметр("Учреждение", ?(ЗначениеЗаполнено(Объект.Учреждение), Объект.Учреждение, Неопределено));
Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено));
Выборка = Запрос.Выполнить().Выбрать();
@@ -179,8 +281,14 @@
// Заполняет таблицу формы Сверка: сопоставляет суммы наших документов передачи
// и принятия. Приёмка связана с передачей через реквизит ДокументПередачи.
//
// Параметры:
// ЦБКонтрагент - CatalogRef.Контрагенты, Неопределено - ЦБ в виде контрагента
// (документ передачи хранит ЦБ именно так); Неопределено - отбор не задан.
// СадОрганизация - CatalogRef.Организации, Неопределено - учреждение (сад) в виде
// организации; Неопределено - отбор по учреждению не задан.
//
&НаСервере
Процедура ЗаполнитьСверку()
Процедура ЗаполнитьСверку(ЦБКонтрагент, СадОрганизация)
Сверка.Очистить();
@@ -215,22 +323,23 @@
| ПО Передача.Ссылка = ВТПринято.ДокументПередачи
|ГДЕ
| НЕ Передача.ПометкаУдаления
| И (&Период = ДАТАВРЕМЯ(1, 1, 1)
| ИЛИ Передача.Период >= &Период)
| И (&Организация = НЕОПРЕДЕЛЕНО
| ИЛИ Передача.Организация = &Организация)
| И (&ИФО = НЕОПРЕДЕЛЕНО
| ИЛИ Передача.ИФО = &ИФО)
| И Передача.Период >= &НачалоПериода
| И Передача.Период <= &КонецПериода
| И (&ЦБ = НЕОПРЕДЕЛЕНО
| ИЛИ Передача.ЦБ = &ЦБ)
| И (&Сад = НЕОПРЕДЕЛЕНО
| ИЛИ Передача.Организация = &Сад)
| И (&ИФО = НЕОПРЕДЕЛЕНО
| ИЛИ Передача.ИФО = &ИФО)
|УПОРЯДОЧИТЬ ПО
| Передача.Период,
| Передача.Организация";
Запрос.УстановитьПараметр("Период", Объект.Период);
Запрос.УстановитьПараметр("Организация", ?(ЗначениеЗаполнено(Объект.Организация), Объект.Организация, Неопределено));
Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания);
Запрос.УстановитьПараметр("ЦБ", ЦБКонтрагент);
Запрос.УстановитьПараметр("Сад", СадОрганизация);
Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено));
Запрос.УстановитьПараметр("ЦБ", ?(ЗначениеЗаполнено(Объект.ЦБ), Объект.ЦБ, Неопределено));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
@@ -247,8 +356,14 @@
ТаблицаОстатков.Очистить();
НачалоПериода = Объект.Период;
КонецПериода = КонецМесяца(Объект.Период);
Если ЗначениеЗаполнено(Объект.Учреждение) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Остатки и обороты по счетам ведутся без разреза по учреждению,"
+ " поэтому отбор по учреждению на эту страницу не влияет.");
КонецЕсли;
НачалоПериода = Объект.Период.ДатаНачала;
КонецПериода = Объект.Период.ДатаОкончания;
Запрос = Новый Запрос;
Запрос.Текст =
@@ -294,10 +409,19 @@
|СГРУППИРОВАТЬ ПО
| ОстаткиИОбороты.ИФО";
Счет205 = ПланыСчетов.ЕПСБУ.НайтиПоКоду("205.31");
Счет304 = ПланыСчетов.ЕПСБУ.НайтиПоКоду("304.04");
Если Счет205 = Неопределено ИЛИ Счет304 = Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю(
"Остатки и обороты не рассчитаны: в плане счетов ЕПСБУ не найден счет"
+ " 205.31 и/или 304.04.");
Возврат;
КонецЕсли;
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
Запрос.УстановитьПараметр("Счет205", ПланыСчетов.ЕПСБУ.НайтиПоКоду("205.31"));
Запрос.УстановитьПараметр("Счет304", ПланыСчетов.ЕПСБУ.НайтиПоКоду("304.04"));
Запрос.УстановитьПараметр("Счет205", Счет205);
Запрос.УстановитьПараметр("Счет304", Счет304);
Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено));
Выборка = Запрос.Выполнить().Выбрать();
@@ -307,4 +431,78 @@
КонецПроцедуры
// Заполняет таблицу формы КассовыеПоступления: документы с признаком "Родительская плата" за период
// по установленным отборам.
// Колонка "Строк не распознано" показывает строки расшифровки платежа, в которых не определён ребёнок, -
// именно они требуют ручного доввода.
//
&НаСервере
Процедура ЗаполнитьКассовыеПоступления()
КассовыеПоступления.Очистить();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Поступления.Ссылка КАК Ссылка,
| Поступления.Дата КАК Дата,
| Поступления.Номер КАК Номер,
| Поступления.Организация КАК Организация,
| Поступления.СуммаДокумента КАК СуммаДокумента,
| Поступления.Проведен КАК Проведен,
| Поступления.ПометкаУдаления КАК ПометкаУдаления,
| КОЛИЧЕСТВО(СтрокиПлатежа.НомерСтроки) КАК СтрокВсего,
| КОЛИЧЕСТВО(СтрокиПлатежа.Ребенок) КАК СтрокРаспознано
|ИЗ
| Документ.КассовоеПоступление КАК Поступления
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.КассовоеПоступление.РасшифровкаПлатежа КАК СтрокиПлатежа
| ПО СтрокиПлатежа.Ссылка = Поступления.Ссылка
|ГДЕ
| Поступления.РодительскаяПлата
| И Поступления.Дата >= &НачалоПериода
| И Поступления.Дата <= &КонецПериода
| И (&Организация = НЕОПРЕДЕЛЕНО
| ИЛИ Поступления.Организация = &Организация)
|СГРУППИРОВАТЬ ПО
| Поступления.Ссылка,
| Поступления.Дата,
| Поступления.Номер,
| Поступления.Организация,
| Поступления.СуммаДокумента,
| Поступления.Проведен,
| Поступления.ПометкаУдаления
|УПОРЯДОЧИТЬ ПО
| Поступления.Дата УБЫВ";
Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания);
Запрос.УстановитьПараметр("Организация",
?(ЗначениеЗаполнено(Объект.Организация), Объект.Организация, Неопределено));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = КассовыеПоступления.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
НоваяСтрока.СтрокНеРаспознано = Выборка.СтрокВсего - Выборка.СтрокРаспознано;
КонецЦикла;
КонецПроцедуры
// Проверяет, что в периоде заданы обе границы. Если нет - выводит сообщение пользователю.
//
// Возвращаемое значение:
// Булево - Истина, если период заполнен.
//
&НаСервере
Функция ПериодЗаполненНаСервере()
Если ЗначениеЗаполнено(Объект.Период.ДатаНачала) И ЗначениеЗаполнено(Объект.Период.ДатаОкончания) Тогда
Возврат Истина;
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(
"Не задан период. Укажите период в поле «Период» и повторите действие.");
Возврат Ложь;
КонецФункции
#КонецОбласти
@@ -7,23 +7,16 @@
<name>ПС_УправлениеРасчетамиПоРодительскойПлате</name>
<synonym>
<key>ru</key>
<value>Управление расчётами по родительской плате</value>
<value>Управление расчетами по родительской плате</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<defaultForm>DataProcessor.ПС_УправлениеРасчетамиПоРодительскойПлате.Form.Форма</defaultForm>
<attributes uuid="0a2328ea-8c92-41d2-9fda-ddcfc6438871">
<name>Период</name>
<type>
<types>Date</types>
<dateQualifiers>
<dateFractions>Date</dateFractions>
</dateQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</attributes>
<attributes uuid="8ba2ed84-803b-4eee-96d0-ceda4c49c7fc">
<name>Организация</name>
<synonym>
<key>ru</key>
<value>Организация (ЦБ)</value>
</synonym>
<type>
<types>CatalogRef.Организации</types>
</type>
@@ -38,11 +31,11 @@
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</attributes>
<attributes uuid="09d6feb5-faea-4769-8218-3475fcef030e">
<name>ЦБ</name>
<attributes uuid="3a7f454b-b61c-40ac-94ac-f4c12c18acdd">
<name>Учреждение</name>
<synonym>
<key>ru</key>
<value>ЦБ (получатель)</value>
<value>Учреждение (сад)</value>
</synonym>
<type>
<types>CatalogRef.Контрагенты</types>
@@ -50,11 +43,23 @@
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</attributes>
<attributes uuid="a851b6c8-10cf-4dc4-bf9d-cfe15106beb0">
<name>Период</name>
<synonym>
<key>ru</key>
<value>Период</value>
</synonym>
<type>
<types>StandardPeriod</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</attributes>
<forms uuid="fd341daa-bbe0-4bb0-8c9c-cabc60a92ce4">
<name>Форма</name>
<synonym>
<key>ru</key>
<value>Управление расчётами по родительской плате</value>
<value>Управление расчетами по родительской плате</value>
</synonym>
</forms>
</mdclass:DataProcessor>
@@ -0,0 +1,130 @@
// Расширение модуля объекта документа КассовоеПоступление: идентификация контрагента (ребёнка)
// по назначению платежа в строках табличной части "Расшифровка платежа".
// Работает только для документов с признаком "Родительская плата":
// автозаполнение контрагента и договора в строках расшифровки.
#Область ОбработчикиСобытий
#Если Сервер Тогда
&После("ПередЗаписью")
Процедура ПС_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ПС_РазборПлатежейПоРодительскойПлате.ЗаполнитьКонтрагентовПоНазначениюПлатежа(ЭтотОбъект);
КонецПроцедуры
&После("ОбработкаПроведения")
Процедура ПС_ОбработкаПроведения(Отказ, РежимПроведения)
Если НЕ РодительскаяПлата Тогда
Возврат;
КонецЕсли;
// Оплата закрывает задолженность, принятую от учреждения. Переплата допускается -
// она даёт отрицательный (кредитовый) остаток по ребёнку. Строки без определённого
// ребёнка или договора пропускаются: это не оплата родительской платы.
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Очистить();
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина;
СтрокиОплаты = Новый Массив;
Дети = Новый Массив;
Для Каждого СтрокаРасшифровки Из РасшифровкаПлатежа Цикл
Если НЕ ЗначениеЗаполнено(СтрокаРасшифровки.Ребенок)
Или НЕ ЗначениеЗаполнено(СтрокаРасшифровки.Договор) Тогда
Продолжить;
КонецЕсли;
СтрокиОплаты.Добавить(СтрокаРасшифровки);
Дети.Добавить(СтрокаРасшифровки.Ребенок);
КонецЦикла;
Если СтрокиОплаты.Количество() = 0 Тогда
Возврат;
КонецЕсли;
// Сады детей загружаем одним запросом, контрагента сада ищем по одному разу на сад:
// обращение к базе внутри цикла по строкам недопустимо.
ОрганизацииСадов = ПС_ОрганизацииСадовДетей(Дети);
КонтрагентыСадов = Новый Соответствие;
Для Каждого СтрокаРасшифровки Из СтрокиОплаты Цикл
ОрганизацияСада = ОрганизацииСадов[СтрокаРасшифровки.Ребенок];
КонтрагентСада = КонтрагентыСадов[ОрганизацияСада];
Если КонтрагентСада = Неопределено Тогда
КонтрагентСада = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(ОрганизацияСада, "Учреждение");
КонтрагентыСадов.Вставить(ОрганизацияСада, КонтрагентСада);
КонецЕсли;
Движение = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьРасход();
Движение.Период = Дата;
Движение.Организация = Организация;
Движение.Учреждение = КонтрагентСада;
Движение.Плательщик = СтрокаРасшифровки.Контрагент;
Движение.Ребенок = СтрокаРасшифровки.Ребенок;
Движение.Договор = СтрокаРасшифровки.Договор;
Движение.ИФО = ИФО;
Движение.КФО = СтрокаРасшифровки.КФО;
Движение.КПС = СтрокаРасшифровки.КБКНазначениеПлатежа;
Движение.Сумма = СтрокаРасшифровки.Сумма;
Движение.ВидОперации = Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.Оплата;
КонецЦикла;
КонецПроцедуры
#КонецЕсли
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Если Сервер Тогда
// Возвращает организации детских садов по детям одним запросом.
//
// Параметры:
// Дети - Массив из СправочникСсылка.Дети - дети, по которым нужно определить сад.
//
// Возвращаемое значение:
// Соответствие из СправочникСсылка.Дети, СправочникСсылка.Организации - организация сада по ребёнку.
//
Функция ПС_ОрганизацииСадовДетей(Дети)
Результат = Новый Соответствие;
Если Дети.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Дети.Ссылка КАК Ссылка,
| Дети.Организация КАК Организация
|ИЗ
| Справочник.Дети КАК Дети
|ГДЕ
| Дети.Ссылка В (&Дети)";
Запрос.УстановитьПараметр("Дети", Дети);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Результат.Вставить(Выборка.Ссылка, Выборка.Организация);
КонецЦикла;
Возврат Результат;
КонецФункции
#КонецЕсли
#КонецОбласти
@@ -0,0 +1,175 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" xmlns:mdclassExtension="http://g5.1c.ru/v8/dt/metadata/mdclass/extension" uuid="5fca2761-f404-416b-b674-85666d26f29f" extendedConfigurationObject="7d23bff6-f606-4b00-ab46-d9cd56641418">
<producedTypes>
<objectType typeId="c4b9cbb9-5ed6-4bea-9699-8ddcab47bacd" valueTypeId="91ce3d5e-c635-4c29-a2dc-2928f5ca5ce0"/>
<refType typeId="322f06af-c7bb-4244-bacf-74171c89866d" valueTypeId="7fda77f7-c721-45b2-b265-77ce62898c0c"/>
<selectionType typeId="b7c5a6c9-270f-40c2-accd-acd843c42149" valueTypeId="90c2fc8b-77a9-4543-a294-85b5be3ea6d1"/>
<listType typeId="cb240f75-3367-4d64-95e2-4a04a560d463" valueTypeId="fd33cc36-67ca-41fd-95c2-9ee9e42dd28e"/>
<managerType typeId="f5d96ea3-f64c-4783-ab8c-c0d0366d9891" valueTypeId="0ac6ffd1-7d0a-4ba8-b932-2304129fef13"/>
</producedTypes>
<name>КассовоеПоступление</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:DocumentExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
<objectModule>Extended</objectModule>
</extension>
<useStandardCommands>true</useStandardCommands>
<registerRecords>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате</registerRecords>
<attributes uuid="13e29051-606d-4958-80df-d412f0cfb707" extendedConfigurationObject="f996910c-0b35-4d4c-ae54-8ce484d73d73">
<name>РодительскаяПлата</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:BasicFeatureExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
<typeExtension>
<types>
<state>Checked</state>
<type>Boolean</type>
</types>
</typeExtension>
</extension>
</attributes>
<attributes uuid="20b39d8b-31da-4d06-b74b-2d2ae311755f" extendedConfigurationObject="702563c4-9469-4156-8b30-7127dc96373f">
<name>Организация</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:BasicFeatureExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
<typeExtension>
<types>
<state>Checked</state>
<type>CatalogRef.Организации</type>
</types>
</typeExtension>
</extension>
</attributes>
<attributes uuid="46f256a7-13f3-4252-94dd-53ffaa533da6" extendedConfigurationObject="e32b8e33-d5a1-4680-931f-d7c381e7bdab">
<name>КорСчет</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:BasicFeatureExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
<typeExtension>
<types>
<state>Checked</state>
<type>ChartOfAccountsRef.ЕПСБУ</type>
</types>
</typeExtension>
</extension>
</attributes>
<attributes uuid="a5244829-6ed2-466e-817c-c8ce725bc8fc" extendedConfigurationObject="3652995d-870a-4021-8df6-a43954255c93">
<name>ИФО</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:BasicFeatureExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
<typeExtension>
<types>
<state>Checked</state>
<type>CatalogRef.ИсточникиФинансовогоОбеспечения</type>
</types>
</typeExtension>
</extension>
</attributes>
<tabularSections uuid="40417ccc-a454-4bb9-a74c-f8150b492c9f" extendedConfigurationObject="0a9b60b8-475c-473a-91cb-4d95e43cda42">
<producedTypes>
<objectType typeId="668209f2-40e6-477a-abaa-0a0dc15c5871" valueTypeId="b74feb93-3bd4-43e9-b8fb-1706a87c91d1"/>
<rowType typeId="7ddd4abd-d656-4ce2-b8a3-5e7534f92a32" valueTypeId="3210cbf0-f713-4b9f-a091-6acdc942eed3"/>
</producedTypes>
<name>РасшифровкаПлатежа</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:MdObjectExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
</extension>
<attributes uuid="3a010b58-37ba-462f-967c-83e3bea9e479" extendedConfigurationObject="96f21d3c-d836-420d-90d3-d509bcedf20f">
<name>Примечание</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:BasicFeatureExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
<typeExtension>
<types>
<state>Checked</state>
<type>String</type>
</types>
<stringQualifiers>
<length>254</length>
</stringQualifiers>
</typeExtension>
</extension>
</attributes>
<attributes uuid="517e14f2-e789-4369-b179-f4a5178580d7" extendedConfigurationObject="e4841663-2897-43e2-961e-8d7a7d240435">
<name>Контрагент</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:BasicFeatureExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
<typeExtension>
<types>
<state>Checked</state>
<type>CatalogRef.Контрагенты</type>
</types>
</typeExtension>
</extension>
</attributes>
<attributes uuid="876433ef-6ae6-4a08-b28e-d3d18b20fbaa" extendedConfigurationObject="431cf743-97d7-485d-805b-71dc8491ec87">
<name>Договор</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:BasicFeatureExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
<typeExtension>
<types>
<state>Checked</state>
<type>CatalogRef.Договоры</type>
</types>
</typeExtension>
</extension>
</attributes>
<attributes uuid="e29aec29-71d7-442e-a5e9-dd7a03ba8e24" extendedConfigurationObject="f64ab9eb-35d5-4389-899a-f3c03a45584c">
<name>КОСГУНазначениеПлатежа</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:BasicFeatureExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
<typeExtension>
<types>
<state>Checked</state>
<type>CatalogRef.КОСГУ</type>
</types>
</typeExtension>
</extension>
</attributes>
<attributes uuid="1fccc6fd-5731-4e9d-8288-2a6e0e881e03" extendedConfigurationObject="d11d56e7-62bd-42ed-ab54-0a6a8c63ad17">
<name>СчетРасчетов</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:BasicFeatureExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
<typeExtension>
<types>
<state>Checked</state>
<type>ChartOfAccountsRef.ЕПСБУ</type>
</types>
</typeExtension>
</extension>
</attributes>
<attributes uuid="2ad80cb2-213f-45e6-8072-06eddb7eed53" extendedConfigurationObject="cca2c46b-481e-439c-b73f-3540b1d427c2">
<name>Ребенок</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:BasicFeatureExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
<typeExtension>
<types>
<state>Checked</state>
<type>CatalogRef.Дети</type>
</types>
</typeExtension>
</extension>
</attributes>
<attributes uuid="e400dffa-8345-40fa-8f6b-739540ff8e1c" extendedConfigurationObject="861acf95-375a-4f40-a340-dbd59af27e73">
<name>КФО</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:BasicFeatureExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
<typeExtension>
<types>
<state>Checked</state>
<type>EnumRef.КВД</type>
</types>
</typeExtension>
</extension>
</attributes>
</tabularSections>
</mdclass:Document>
@@ -4,7 +4,7 @@
<name>ГруппаОрганизаций</name>
<id>71</id>
<items xsi:type="form:FormGroup">
<name>ГруппаОрганизацииИДокумента</name>
<name>ГруппаОрганизацииИПериода</name>
<id>96</id>
<items xsi:type="form:FormField">
<name>Организация</name>
@@ -55,52 +55,6 @@
<textSize>Normal</textSize>
</extInfo>
</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>
<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>13</id>
@@ -150,10 +104,10 @@
</userVisible>
<title>
<key>ru</key>
<value>Группа организации и документа</value>
<value>Группа организации и периода</value>
</title>
<extendedTooltip>
<name>ГруппаОрганизацииИДокументаРасширеннаяПодсказка</name>
<name>ГруппаОрганизацииИПериодаРасширеннаяПодсказка</name>
<id>97</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -918,6 +872,93 @@
<items xsi:type="form:FormGroup">
<name>ГруппаСтраницыОперации</name>
<id>94</id>
<items xsi:type="form:FormField">
<name>ПередачаСальдо</name>
<id>98</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>
<handlers>
<event>OnChange</event>
<name>ПередачаСальдоПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ПередачаСальдоРасширеннаяПодсказка</name>
<id>100</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</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>
<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>22</id>
@@ -1005,6 +1046,130 @@
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаКорреспондентующегоСчёта</name>
<id>109</id>
<items xsi:type="form:FormField">
<name>СчетКорреспондент</name>
<id>101</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>103</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СчетКорреспондентКонтекстноеМеню</name>
<id>102</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</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:FormField">
<name>КЭККорреспондент</name>
<id>104</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>106</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>КЭККорреспондентКонтекстноеМеню</name>
<id>105</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</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>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Корреспондентующий счёт</value>
</title>
<extendedTooltip>
<name>ГруппаКорреспондентующегоСчётаРасширеннаяПодсказка</name>
<id>110</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Auto</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<showTitle>true</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Комментарий</name>
<id>87</id>
@@ -1258,6 +1423,32 @@
<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>
<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,6 +1534,22 @@
</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>
</handler>
</action>
</formCommands>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -12,6 +12,12 @@
// КПС определяется автоматически по настройкам учётной политики.
Элементы.ЗадолженностьКПС.ТолькоПросмотр = Истина;
// Счёт, корреспондирующий со счётом 205.31, и его КЭК: значения по умолчанию.
// В режиме передачи начального сальдо скрывается документ начисления и появляется
// команда заполнения по остаткам счёта 205.31.
ЗаполнитьКорреспондирующийСчетПоУмолчанию();
ОбновитьВидимостьРеквизитовРежимаСальдо();
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
Основание = Неопределено;
Если Параметры.Свойство("Основание", Основание)
@@ -105,10 +111,27 @@
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоОстаткам20531(Команда)
ЗаполнитьПоОстаткам20531НаСервере();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура ПередачаСальдоПриИзменении(Элемент)
// В режиме сальдо поле документа начисления скрывается, команда заполнения по остаткам - показывается.
РежимСальдо = (Объект.ПередачаСальдо = Истина);
Элементы.ЗаполнитьПоОстаткам20531.Видимость = РежимСальдо;
Элементы.ДокументНачисления.Видимость = НЕ РежимСальдо;
КонецПроцедуры
&НаКлиенте
Процедура ДокументНачисленияПриИзменении(Элемент)
@@ -139,6 +162,179 @@
КонецФункции
&НаСервере
Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию()
Если НЕ ЗначениеЗаполнено(Объект.СчетКорреспондент) Тогда
Объект.СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.КЭККорреспондент) Тогда
Объект.КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьВидимостьРеквизитовРежимаСальдо()
// В режиме начального сальдо документ начисления не используется: его поле скрывается,
// а вместо него доступна команда заполнения по остаткам счёта 205.31.
РежимСальдо = (Объект.ПередачаСальдо = Истина);
Элементы.ЗаполнитьПоОстаткам20531.Видимость = РежимСальдо;
Элементы.ДокументНачисления.Видимость = НЕ РежимСальдо;
КонецПроцедуры
// Заполняет табличную часть "Задолженность" остатками счёта 205.31 на дату документа
// по организации (учреждению-саду). Строки доступны для ручной правки.
//
&НаСервере
Процедура ЗаполнитьПоОстаткам20531НаСервере()
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Заполнение по остаткам невозможно: не заполнена организация (учреждение-сад).");
Возврат;
КонецЕсли;
Счет20531 = ПланыСчетов.ЕПСБУ.НайтиПоКоду("205.31");
Если Счет20531 = Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю(
"Заполнение по остаткам невозможно: в плане счетов ЕПСБУ не найден счет 205.31.");
Возврат;
КонецЕсли;
// Порядок субконто берём из настройки самого счёта: субконто1 - первое субконто счёта.
ВидыСубконто = Новый Массив;
Для Каждого СтрокаСубконто Из Счет20531.ВидыСубконто Цикл
ВидыСубконто.Добавить(СтрокаСубконто.ВидСубконто);
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.Субконто1 КАК Контрагент,
| Остатки.Субконто2 КАК Договор,
| Дети.Ссылка КАК Ребенок,
| Остатки.КПС КАК КПС,
| Остатки.ИФО КАК ИФО,
| Остатки.КФО КАК КФО,
| Остатки.СуммаОстаток КАК Сумма
|ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Остатки(
| &Дата,
| Счет В ИЕРАРХИИ (&Счет20531),
| &ВидыСубконто,
| Организация = &Организация) КАК Остатки
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Дети КАК Дети
| ПО Дети.Контрагент = Остатки.Субконто1
|ГДЕ
| Остатки.СуммаОстаток <> 0
|
|УПОРЯДОЧИТЬ ПО
| Остатки.Субконто1,
| Остатки.Субконто2";
Запрос.УстановитьПараметр("Дата", Объект.Дата);
Запрос.УстановитьПараметр("Счет20531", Счет20531);
Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Выборка = Запрос.Выполнить().Выбрать();
Объект.Задолженность.Очистить();
ЗначенияИФО = Новый Соответствие;
ЗначенияКФО = Новый Соответствие;
Пока Выборка.Следующий() Цикл
ЗначенияИФО.Вставить(Выборка.ИФО, Истина);
ЗначенияКФО.Вставить(Выборка.КФО, Истина);
НоваяСтрока = Объект.Задолженность.Добавить();
НоваяСтрока.Контрагент = Выборка.Контрагент;
НоваяСтрока.Договор = Выборка.Договор;
НоваяСтрока.Ребенок = Выборка.Ребенок;
НоваяСтрока.КПС = Выборка.КПС;
НоваяСтрока.Сумма = Выборка.Сумма;
КонецЦикла;
Если Объект.Задолженность.Количество() = 0 Тогда
ВывестиДиагностикуЗаполненияПоОстаткам(Счет20531);
Возврат;
КонецЕсли;
Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма");
// Разрезов ИФО и КФО в табличной части нет - они задаются на весь документ,
// поэтому переносим их в шапку, если в остатках они единственные.
ЗаполнитьИФОиКФОПоОстаткам(ЗначенияИФО, ЗначенияКФО);
Если ЗначенияИФО.Количество() > 1 ИЛИ ЗначенияКФО.Количество() > 1 Тогда
ОбщегоНазначения.СообщитьПользователю(
"Остатки найдены в разрезе нескольких ИФО и/или КФО, а в документе ИФО и КФО задаются"
+ " на весь документ. Проверьте их заполнение и при необходимости перенесите"
+ " сальдо отдельными документами.");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьИФОиКФОПоОстаткам(ЗначенияИФО, ЗначенияКФО)
Если ЗначенияКФО.Количество() = 1 И НЕ ЗначениеЗаполнено(Объект.КФО) Тогда
Для Каждого КлючИЗначение Из ЗначенияКФО Цикл
Объект.КФО = КлючИЗначение.Ключ;
КонецЦикла;
КонецЕсли;
Если ЗначенияИФО.Количество() = 1 И НЕ ЗначениеЗаполнено(Объект.ИФО) Тогда
Для Каждого КлючИЗначение Из ЗначенияИФО Цикл
Объект.ИФО = КлючИЗначение.Ключ;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВывестиДиагностикуЗаполненияПоОстаткам(Счет20531)
// Проверяем, есть ли вообще остатки по счёту на дату документа - без отборов
// по организации и субконто. Это позволяет понять, что именно не совпало.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК ВсегоСтрок
|ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Остатки(
| &Дата,
| Счет В ИЕРАРХИИ (&Счет20531), , ) КАК Остатки";
Запрос.УстановитьПараметр("Дата", Объект.Дата);
Запрос.УстановитьПараметр("Счет20531", Счет20531);
Выборка = Запрос.Выполнить().Выбрать();
ВсегоСтрок = 0;
Если Выборка.Следующий() Тогда
ВсегоСтрок = Выборка.ВсегоСтрок;
КонецЕсли;
ДатаДокумента = Формат(Объект.Дата, "ДЛФ=DD");
Если ВсегоСтрок = 0 Тогда
ОбщегоНазначения.СообщитьПользователю(
"Остатков по счёту " + Счет20531.Код + " на " + ДатаДокумента
+ " нет ни по одной организации. Проверьте дату документа.");
Иначе
ОбщегоНазначения.СообщитьПользователю(
"Остатки по счёту " + Счет20531.Код + " на " + ДатаДокумента + " есть ("
+ ВсегоСтрок + " стр.), но не отобраны по организации " + Строка(Объект.Организация)
+ " и/или по субконто счёта. Проверьте организацию в документе.");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоДокументуНачисленияНаСервере(ДокументНачисленияСсылка)
@@ -82,17 +82,20 @@
Движения.ЖурналПроводокЕПСБУ.Записывать = Истина;
Движения.ЖурналПроводокЕПСБУ.ДополнительныеСвойства.Вставить("НеФормироватьУчетныеДанныеИзПроводок");
СчетДт = БухгалтерскийУчет.СчетПоКоду("304.04", Дата, Организация);
СчетКт = БухгалтерскийУчет.СчетПоКоду("205.31", Дата, Организация);
ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт);
// КЭК счёта 304.04 несёт экономический смысл операции: для доходной операции это КЭК
// счёта 401.10 проводок документа начисления. Автоматически он не определяется.
КЭК30404 = ПС_УчетРодительскойПлаты.КЭКПоЭкономическомуСмыслу(ДокументНачисления);
Если НЕ ЗначениеЗаполнено(КЭК30404) Тогда
КЭК30404 = КЭКПроводки(СчетДт, "Дт", ЦБ);
// Счёт, корреспондирующий со счётом расчётов по доходам, и его КЭК задаются реквизитами
// документа (по умолчанию 304.04 и 131) и могут быть изменены пользователем.
СчетДт = СчетКорреспондент;
Если НЕ ЗначениеЗаполнено(СчетДт) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не заполнен счёт, корреспондирующий со счётом 205.31. Проведение невозможно.",
, "СчетКорреспондент", "Объект", Отказ);
Возврат;
КонецЕсли;
ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт);
// КПС строк наследуется из проводок документа начисления (см. ЗаполнитьКПССтрок),
// КЭК счёта 205.31 определяется по настройкам счёта и типу контрагента (подстатья КОСГУ).
Для Каждого СтрокаЗадолженности Из Задолженность Цикл
@@ -106,7 +109,7 @@
Движение.СчетКт = СчетКт;
Движение.КПСДт = СтрокаЗадолженности.КПС;
Движение.КПСКт = СтрокаЗадолженности.КПС;
Движение.КЭКДт = КЭК30404;
Движение.КЭКДт = КЭККорреспондент;
Движение.КЭККт = КЭКПроводки(СчетКт, "Кт", СтрокаЗадолженности.Контрагент, СтрокаЗадолженности.Договор);
Движение.Сумма = СтрокаЗадолженности.Сумма;
Движение.ЖурналОпераций = ЖурналОпераций;
@@ -141,6 +144,8 @@
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
ЗаполнитьРеквизитыПоУмолчанию();
СуммаДокумента = Задолженность.Итог("Сумма");
ЗаполнитьКПССтрок();
@@ -156,7 +161,7 @@
ОбщегоНазначения.СообщитьПользователю("Не заполнен получатель - ЦБ (администратор доходов)", , "ЦБ", "Объект", Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ДокументНачисления) Тогда
Если НЕ ПередачаСальдо И НЕ ЗначениеЗаполнено(ДокументНачисления) Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнен документ начисления родительской платы", , "ДокументНачисления", "Объект", Отказ);
КонецЕсли;
@@ -169,9 +174,12 @@
Иначе
Для Каждого СтрокаЗадолженности Из Задолженность Цикл
Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.КПС) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не заполнен КПС строки табличной части ""Задолженность"". Заполнение возможно только на основании проведённого документа начисления родительской платы.",
, "Задолженность", "Объект", Отказ);
ТекстСообщения = "Не заполнен КПС строки табличной части ""Задолженность"".";
Если НЕ ПередачаСальдо Тогда
ТекстСообщения = ТекстСообщения
+ " Заполнение возможно только на основании проведённого документа начисления родительской платы.";
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Задолженность", "Объект", Отказ);
Прервать;
КонецЕсли;
КонецЦикла;
@@ -188,11 +196,32 @@
#Область СлужебныеПроцедурыИФункции
// Заполняет счёт, корреспондирующий со счётом расчётов по доходам (205.31), и его КЭК
// значениями по умолчанию, если они не заданы пользователем.
//
Процедура ЗаполнитьРеквизитыПоУмолчанию()
Если НЕ ЗначениеЗаполнено(СчетКорреспондент) Тогда
СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(КЭККорреспондент) Тогда
КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию();
КонецЕсли;
КонецПроцедуры
// Заполняет строки табличной части "Задолженность" КПС, унаследованным
// из проводок документа начисления родительской платы.
//
Процедура ЗаполнитьКПССтрок()
// В режиме передачи начального сальдо КПС строк заполняется по остаткам счёта 205.31,
// а не по проводкам документа начисления.
Если ПередачаСальдо Тогда
Возврат;
КонецЕсли;
ПС_УчетРодительскойПлаты.ЗаполнитьРеквизитыУчетаПоПроводкам(ЭтотОбъект, ДокументНачисления);
КонецПроцедуры
@@ -177,6 +177,51 @@
<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>
<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="3d0b977e-c42f-432a-af48-c0b8b6b12d7d">
<name>СчетКорреспондент</name>
<synonym>
<key>ru</key>
<value>Счет корреспондирующий</value>
</synonym>
<type>
<types>ChartOfAccountsRef.ЕПСБУ</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>
@@ -1014,6 +1014,133 @@
<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>
<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>99</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СчетКорреспондентКонтекстноеМеню</name>
<id>98</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</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:FormField">
<name>КЭККорреспондент</name>
<id>100</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>102</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>КЭККорреспондентКонтекстноеМеню</name>
<id>101</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</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>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -12,6 +12,10 @@
// КПС определяется автоматически по настройкам учётной политики.
Элементы.ЗадолженностьКПС.ТолькоПросмотр = Истина;
// Счёт, корреспондирующий со счётом 205.31, и его КЭК: значения по умолчанию
// (в режиме начального сальдо наследуются из документа передачи).
ЗаполнитьКорреспондирующийСчетПоУмолчанию();
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
Основание = Неопределено;
Если Параметры.Свойство("Основание", Основание)
@@ -115,6 +119,19 @@
КонецФункции
&НаСервере
Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию()
Если НЕ ЗначениеЗаполнено(Объект.СчетКорреспондент) Тогда
Объект.СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.КЭККорреспондент) Тогда
Объект.КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоДокументуПередачиНаСервере(ДокументПередачиСсылка)
@@ -168,6 +185,14 @@
Объект.Ответственный = ВыборкаШапка.Ответственный;
Объект.Период = ВыборкаШапка.Период;
Объект.ДокументПередачи = ДокументПередачиСсылка;
// Режим начального сальдо и корреспондирующий счёт с КЭК наследуются от документа передачи.
РеквизитыПередачи = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументПередачиСсылка,
"ПередачаСальдо, СчетКорреспондент, КЭККорреспондент");
Объект.ПередачаСальдо = РеквизитыПередачи.ПередачаСальдо;
Объект.СчетКорреспондент = РеквизитыПередачи.СчетКорреспондент;
Объект.КЭККорреспондент = РеквизитыПередачи.КЭККорреспондент;
Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО") Тогда
Объект.ИФО = ВыборкаШапка.ИФО;
КонецЕсли;
@@ -2,6 +2,8 @@
// Сторона ЦБ: Дт 205.31.56X — Кт 304.04.130.
// Проводки формируются в процедуре ОбработкаПроведения прямым заполнением
// набора записей регистра бухгалтерии ЖурналПроводокЕПСБУ.
// Кроме проводок документ формирует приход в регистре накопления
// ПС_ВзаиморасчетыПоРодительскойПлате (принятая от учреждения задолженность).
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
@@ -26,7 +28,10 @@
| ПередачаЗадолженности.ИФО КАК ИФО,
| ПередачаЗадолженности.Ответственный КАК Ответственный,
| ПередачаЗадолженности.Период КАК Период,
| ПередачаЗадолженности.КФО КАК КФО
| ПередачаЗадолженности.КФО КАК КФО,
| ПередачаЗадолженности.ПередачаСальдо КАК ПередачаСальдо,
| ПередачаЗадолженности.СчетКорреспондент КАК СчетКорреспондент,
| ПередачаЗадолженности.КЭККорреспондент КАК КЭККорреспондент
|ИЗ
| Документ.ПС_ПередачаЗадолженностиВЦБ КАК ПередачаЗадолженности
|ГДЕ
@@ -49,6 +54,10 @@
Период = ВыборкаШапка.Период;
КФО = ВыборкаШапка.КФО;
ДокументПередачи = ДанныеЗаполнения;
// Режим начального сальдо и корреспондирующий счёт с КЭК наследуются от передачи.
ПередачаСальдо = ВыборкаШапка.ПередачаСальдо;
СчетКорреспондент = ВыборкаШапка.СчетКорреспондент;
КЭККорреспондент = ВыборкаШапка.КЭККорреспондент;
// Учёт по ИФО ведётся только при включённой функциональной опции.
Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО") Тогда
ИФО = ВыборкаШапка.ИФО;
@@ -88,17 +97,23 @@
Движения.ЖурналПроводокЕПСБУ.Записывать = Истина;
Движения.ЖурналПроводокЕПСБУ.ДополнительныеСвойства.Вставить("НеФормироватьУчетныеДанныеИзПроводок");
СчетДт = БухгалтерскийУчет.СчетПоКоду("205.31", Дата, Организация);
СчетКт = БухгалтерскийУчет.СчетПоКоду("304.04", Дата, Организация);
ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт);
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Очистить();
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина;
// КЭК счёта 304.04 несёт экономический смысл операции и берётся из проводок документа передачи
// (КЭК счёта 401.10, унаследованный от документа начисления). Автоматически он не определяется.
КЭК30404 = ПС_УчетРодительскойПлаты.КЭКПоЭкономическомуСмыслу(ДокументПередачи);
Если НЕ ЗначениеЗаполнено(КЭК30404) Тогда
КЭК30404 = КЭКПроводки(СчетКт, "Кт", Учреждение);
СчетДт = БухгалтерскийУчет.СчетПоКоду("205.31", Дата, Организация);
// Счёт, корреспондирующий со счётом расчётов по доходам, и его КЭК наследуются
// из документа передачи (заполняются при вводе на основании).
СчетКт = СчетКорреспондент;
Если НЕ ЗначениеЗаполнено(СчетКт) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не заполнен счёт, корреспондирующий со счётом 205.31. Проведение невозможно.",
, "СчетКорреспондент", "Объект", Отказ);
Возврат;
КонецЕсли;
ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт);
// КПС строк наследуется из проводок документа передачи (см. ЗаполнитьКПССтрок),
// КЭК счёта 205.31 определяется по настройкам счёта и типу контрагента (подстатья КОСГУ).
Для Каждого СтрокаЗадолженности Из Задолженность Цикл
@@ -113,7 +128,7 @@
Движение.КПСДт = СтрокаЗадолженности.КПС;
Движение.КПСКт = СтрокаЗадолженности.КПС;
Движение.КЭКДт = КЭКПроводки(СчетДт, "Дт", СтрокаЗадолженности.Контрагент, СтрокаЗадолженности.Договор);
Движение.КЭККт = КЭК30404;
Движение.КЭККт = КЭККорреспондент;
Движение.Сумма = СтрокаЗадолженности.Сумма;
Движение.ЖурналОпераций = ЖурналОпераций;
Движение.Содержание = "Принятие задолженности по родительской плате от учреждения";
@@ -122,6 +137,24 @@
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Договоры] = СтрокаЗадолженности.Договор;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.КорреспондентыПоВнутреннимРасчетам] = Учреждение;
// Взаиморасчеты по родительской плате: принятая от учреждения задолженность.
ДвижениеПС = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьПриход();
ДвижениеПС.Период = Дата;
ДвижениеПС.Организация = Организация;
ДвижениеПС.Учреждение = Учреждение;
ДвижениеПС.Плательщик = СтрокаЗадолженности.Контрагент;
ДвижениеПС.Ребенок = СтрокаЗадолженности.Ребенок;
ДвижениеПС.Договор = СтрокаЗадолженности.Договор;
ДвижениеПС.ИФО = ИФО;
ДвижениеПС.КФО = КФО;
ДвижениеПС.КПС = СтрокаЗадолженности.КПС;
ДвижениеПС.Сумма = СтрокаЗадолженности.Сумма;
ДвижениеПС.ВидОперации = ?(ПередачаСальдо,
Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.НачальноеСальдо,
Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.ПринятоОтУчреждения);
ДвижениеПС.ИДСтроки = СтрокаЗадолженности.ИДСтроки;
ДвижениеПС.ДокументПередачи = ДокументПередачи;
КонецЦикла;
// В конфигурации есть подписка на событие "ОбработкаПроведения" (ЗаписатьТаблицуПроводок),
@@ -136,6 +169,7 @@
Процедура ОбработкаУдаленияПроведения(Отказ)
Движения.ЖурналПроводокЕПСБУ.Записывать = Истина;
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина;
КонецПроцедуры
@@ -147,6 +181,8 @@
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
ЗаполнитьРеквизитыПоУмолчанию();
СуммаДокумента = Задолженность.Итог("Сумма");
ЗаполнитьКПССтрок();
@@ -175,9 +211,12 @@
Иначе
Для Каждого СтрокаЗадолженности Из Задолженность Цикл
Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.КПС) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не заполнен КПС строки табличной части ""Задолженность"". Заполнение возможно только на основании проведённого документа передачи задолженности.",
, "Задолженность", "Объект", Отказ);
ТекстСообщения = "Не заполнен КПС строки табличной части ""Задолженность"".";
Если НЕ ПередачаСальдо Тогда
ТекстСообщения = ТекстСообщения
+ " Заполнение возможно только на основании проведённого документа передачи задолженности.";
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Задолженность", "Объект", Отказ);
Прервать;
КонецЕсли;
КонецЦикла;
@@ -194,6 +233,21 @@
#Область СлужебныеПроцедурыИФункции
// Заполняет счёт, корреспондирующий со счётом расчётов по доходам (205.31), и его КЭК
// значениями по умолчанию, если они не заданы пользователем.
//
Процедура ЗаполнитьРеквизитыПоУмолчанию()
Если НЕ ЗначениеЗаполнено(СчетКорреспондент) Тогда
СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(КЭККорреспондент) Тогда
КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию();
КонецЕсли;
КонецПроцедуры
// Заполняет строки табличной части "Задолженность" КПС, унаследованным
// из проводок документа передачи задолженности.
//
@@ -10,7 +10,7 @@
<name>ПС_ПринятиеЗадолженностиОтУчреждения</name>
<synonym>
<key>ru</key>
<value>Принятие начислений от учреждения</value>
<value>Принятие в ЦБ начислений от учреждения</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
@@ -22,7 +22,7 @@
</objectPresentation>
<listPresentation>
<key>ru</key>
<value>Принятие начислений от учреждения (ЦБ)</value>
<value>Принятия в ЦБ начислений от учреждения</value>
</listPresentation>
<numberType>String</numberType>
<numberLength>9</numberLength>
@@ -31,6 +31,7 @@
<autonumbering>true</autonumbering>
<defaultObjectForm>Document.ПС_ПринятиеЗадолженностиОтУчреждения.Form.ФормаДокумента</defaultObjectForm>
<registerRecords>AccountingRegister.ЖурналПроводокЕПСБУ</registerRecords>
<registerRecords>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате</registerRecords>
<postInPrivilegedMode>true</postInPrivilegedMode>
<unpostInPrivilegedMode>true</unpostInPrivilegedMode>
<attributes uuid="0a164ea0-72d1-411d-b2c2-ece2a7fdc661">
@@ -177,6 +178,51 @@
<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>
<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="7e10db10-f630-40fb-9169-909763dacf6e">
<name>СчетКорреспондент</name>
<synonym>
<key>ru</key>
<value>Счет корреспондирующий</value>
</synonym>
<type>
<types>ChartOfAccountsRef.ЕПСБУ</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="2f97f361-ee42-4267-905c-61db24e9229e">
<name>ФормаДокумента</name>
</forms>
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Enum xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c9bcdc89-c27e-4f8c-bc0a-06905e8fa88a">
<producedTypes>
<refType typeId="8e643ffb-3e16-46ca-871a-b96c9bd2b244" valueTypeId="3e7fa23a-26ae-441c-868e-be2454ae4222"/>
<listType typeId="32fd9b41-329d-4ee2-9300-9b44a11a27fc" valueTypeId="7d6c762d-51f4-46f3-a374-7d8fd9282b09"/>
<managerType typeId="4c293fd9-36e2-4c5a-af24-a367bf8d3734" valueTypeId="8bc8c7f8-f9b3-44ce-98fc-1c91ac1a7b57"/>
</producedTypes>
<name>ПС_ВидыОперацийПоВзаиморасчетам</name>
<synonym>
<key>ru</key>
<value>Виды операций по взаиморасчетам</value>
</synonym>
<quickChoice>true</quickChoice>
<choiceMode>BothWays</choiceMode>
<enumValues uuid="9201ca1d-ff23-49b6-ab2c-61b873778c0c">
<name>ПринятоОтУчреждения</name>
<synonym>
<key>ru</key>
<value>Принято от учреждения</value>
</synonym>
</enumValues>
<enumValues uuid="b02c965c-6f81-40ef-b563-22c141f39ffd">
<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>
</synonym>
</enumValues>
</mdclass:Enum>
@@ -0,0 +1,85 @@
#Область ОбработчикиСобытий
// Настраивает отчёт перед компоновкой результата.
//
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
УстановитьВыбранныеПоля();
УстановитьПериодПоУмолчанию();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Задаёт выбранные поля отчёта: учреждение и показатели оборотной ведомости.
//
// Состав колонок задаётся кодом, потому что в макете схемы выбранным полем задано только
// учреждение, а добавить показатели в вариант настроек средствами метаданных нельзя.
// Группировки и отборы при этом остаются настраиваемыми: все измерения набора данных
// (учреждение, плательщик, ребенок, договор, период задолженности, ИФО, КФО, КПС)
// доступны в настройках отчёта.
//
Процедура УстановитьВыбранныеПоля()
ВыбранныеПоля = КомпоновщикНастроек.Настройки.Выбор.Элементы;
ВыбранныеПоля.Очистить();
ИменаПолей = Новый Массив;
ИменаПолей.Добавить("Учреждение");
ИменаПолей.Добавить("СуммаНачальныйОстаток");
ИменаПолей.Добавить("СуммаПриход");
ИменаПолей.Добавить("СуммаРасход");
ИменаПолей.Добавить("СуммаКонечныйОстаток");
Для Каждого ИмяПоля Из ИменаПолей Цикл
ВыбранноеПоле = ВыбранныеПоля.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);
КонецЦикла;
КонецПроцедуры
// Заполняет границы периода текущим месяцем, если они не заданы пользователем.
//
Процедура УстановитьПериодПоУмолчанию()
ЗначенияПараметров = КомпоновщикНастроек.Настройки.ПараметрыДанных;
Если ПериодЗадан(ЗначенияПараметров) Тогда
Возврат;
КонецЕсли;
ТекущийМесяц = Новый СтандартныйПериод(ВариантСтандартногоПериода.ЭтотМесяц);
ЗначенияПараметров.УстановитьЗначениеПараметра(
Новый ПараметрКомпоновкиДанных("НачалоПериода"), ТекущийМесяц.ДатаНачала);
ЗначенияПараметров.УстановитьЗначениеПараметра(
Новый ПараметрКомпоновкиДанных("КонецПериода"), ТекущийМесяц.ДатаОкончания);
КонецПроцедуры
// Проверяет, что в настройках заданы обе границы периода.
//
// Параметры:
// ЗначенияПараметров - ЗначенияПараметровДанныхКомпоновкиДанных - настройки параметров данных.
//
// Возвращаемое значение:
// Булево - Истина, если обе границы периода заполнены.
//
Функция ПериодЗадан(ЗначенияПараметров)
ЗначениеНачалаПериода = ЗначенияПараметров.НайтиЗначениеПараметра(
Новый ПараметрКомпоновкиДанных("НачалоПериода"));
ЗначениеКонцаПериода = ЗначенияПараметров.НайтиЗначениеПараметра(
Новый ПараметрКомпоновкиДанных("КонецПериода"));
Если ЗначениеНачалаПериода = Неопределено ИЛИ ЗначениеКонцаПериода = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Возврат ЗначениеЗаполнено(ЗначениеНачалаПериода.Значение)
И ЗначениеЗаполнено(ЗначениеКонцаПериода.Значение);
КонецФункции
#КонецОбласти
@@ -0,0 +1,296 @@
<?xml version="1.0" encoding="UTF-8"?>
<DataCompositionSchema xmlns="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcscom="http://v8.1c.ru/8.1/data-composition-system/common" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<dataSource>
<name>ИсточникДанных1</name>
<dataSourceType>Local</dataSourceType>
</dataSource>
<dataSet xsi:type="DataSetQuery">
<name>НаборДанных1</name>
<field xsi:type="DataSetFieldField">
<dataPath>Организация</dataPath>
<field>Организация</field>
<title xsi:type="xs:string">Организация</title>
<valueType>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.Организации</v8:Type>
</valueType>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>Учреждение</dataPath>
<field>Учреждение</field>
<title xsi:type="xs:string">Учреждение</title>
<valueType>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.Контрагенты</v8:Type>
</valueType>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>Плательщик</dataPath>
<field>Плательщик</field>
<title xsi:type="xs:string">Плательщик</title>
<valueType>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.Контрагенты</v8:Type>
</valueType>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>Ребенок</dataPath>
<field>Ребенок</field>
<title xsi:type="xs:string">Ребенок</title>
<valueType>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.Дети</v8:Type>
</valueType>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>Договор</dataPath>
<field>Договор</field>
<title xsi:type="xs:string">Договор</title>
<valueType>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.Договоры</v8:Type>
</valueType>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>ИФО</dataPath>
<field>ИФО</field>
<title xsi:type="xs:string">ИФО</title>
<valueType>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.ИсточникиФинансовогоОбеспечения</v8:Type>
</valueType>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>КФО</dataPath>
<field>КФО</field>
<title xsi:type="xs:string">КФО</title>
<valueType>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:EnumRef.КВД</v8:Type>
</valueType>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>КПС</dataPath>
<field>КПС</field>
<title xsi:type="xs:string">КПС</title>
<valueType>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.КлассификационныеПризнакиСчетов</v8:Type>
</valueType>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>СуммаНачальныйОстаток</dataPath>
<field>СуммаНачальныйОстаток</field>
<title xsi:type="xs:string">СуммаНачальныйОстаток</title>
<valueType>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>15</v8:Digits>
<v8:FractionDigits>2</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
</valueType>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>СуммаПриход</dataPath>
<field>СуммаПриход</field>
<title xsi:type="xs:string">СуммаПриход</title>
<valueType>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>15</v8:Digits>
<v8:FractionDigits>2</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
</valueType>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>СуммаРасход</dataPath>
<field>СуммаРасход</field>
<title xsi:type="xs:string">СуммаРасход</title>
<valueType>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>15</v8:Digits>
<v8:FractionDigits>2</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
</valueType>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>СуммаКонечныйОстаток</dataPath>
<field>СуммаКонечныйОстаток</field>
<title xsi:type="xs:string">СуммаКонечныйОстаток</title>
<valueType>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>15</v8:Digits>
<v8:FractionDigits>2</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
</valueType>
</field>
<dataSource>ИсточникДанных1</dataSource>
<query>ВЫБРАТЬ
Взаиморасчеты.Организация КАК Организация,
Взаиморасчеты.Учреждение КАК Учреждение,
Взаиморасчеты.Плательщик КАК Плательщик,
Взаиморасчеты.Ребенок КАК Ребенок,
Взаиморасчеты.Договор КАК Договор,
Взаиморасчеты.ИФО КАК ИФО,
Взаиморасчеты.КФО КАК КФО,
Взаиморасчеты.КПС КАК КПС,
Взаиморасчеты.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток,
Взаиморасчеты.СуммаПриход КАК СуммаПриход,
Взаиморасчеты.СуммаРасход КАК СуммаРасход,
Взаиморасчеты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток
ИЗ
РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.ОстаткиИОбороты(&amp;НачалоПериода, &amp;КонецПериода, Авто) КАК Взаиморасчеты</query>
</dataSet>
<totalField>
<dataPath>СуммаКонечныйОстаток</dataPath>
<expression>Сумма(СуммаКонечныйОстаток)</expression>
</totalField>
<totalField>
<dataPath>СуммаНачальныйОстаток</dataPath>
<expression>Сумма(СуммаНачальныйОстаток)</expression>
</totalField>
<totalField>
<dataPath>СуммаПриход</dataPath>
<expression>Сумма(СуммаПриход)</expression>
</totalField>
<totalField>
<dataPath>СуммаРасход</dataPath>
<expression>Сумма(СуммаРасход)</expression>
</totalField>
<parameter>
<name>НачалоПериода</name>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Начало периода</v8:content>
</v8:item>
</title>
<valueType>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>DateTime</v8:DateFractions>
</v8:DateQualifiers>
</valueType>
<value xsi:type="xs:dateTime">0001-01-01T00:00:00</value>
<useRestriction>false</useRestriction>
<use>Always</use>
</parameter>
<parameter>
<name>КонецПериода</name>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Конец периода</v8:content>
</v8:item>
</title>
<valueType>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>DateTime</v8:DateFractions>
</v8:DateQualifiers>
</valueType>
<value xsi:type="xs:dateTime">0001-01-01T00:00:00</value>
<useRestriction>false</useRestriction>
<use>Always</use>
</parameter>
<defaultSettings xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows">
<dcsset:selection>
<dcsset:item xsi:type="dcsset:SelectedItemField">
<dcsset:field>Учреждение</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:dataParameters>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>НачалоПериода</dcscor:parameter>
<dcscor:value xsi:type="xs:dateTime">0001-01-01T00:00:00</dcscor:value>
</dcscor:item>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>КонецПериода</dcscor:parameter>
<dcscor:value xsi:type="xs:dateTime">0001-01-01T00:00:00</dcscor:value>
</dcscor:item>
</dcsset:dataParameters>
<dcsset:item xsi:type="dcsset:StructureItemGroup">
<dcsset:groupItems>
<dcsset:item xsi:type="dcsset:GroupItemField">
<dcsset:field>Учреждение</dcsset:field>
<dcsset:groupType>Items</dcsset:groupType>
<dcsset:periodAdditionType>None</dcsset:periodAdditionType>
</dcsset:item>
</dcsset:groupItems>
</dcsset:item>
</defaultSettings>
<settingsVariant>
<dcsset:name>Основной</dcsset:name>
<dcsset:presentation xsi:type="xs:string">По учреждениям</dcsset:presentation>
<dcsset:settings xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows">
<dcsset:selection>
<dcsset:item xsi:type="dcsset:SelectedItemField">
<dcsset:field>Учреждение</dcsset:field>
</dcsset:item>
<dcsset:item xsi:type="dcsset:SelectedItemField">
<dcsset:field>Ребенок</dcsset:field>
</dcsset:item>
<dcsset:item xsi:type="dcsset:SelectedItemField">
<dcsset:field>СуммаНачальныйОстаток</dcsset:field>
</dcsset:item>
<dcsset:item xsi:type="dcsset:SelectedItemField">
<dcsset:field>СуммаПриход</dcsset:field>
</dcsset:item>
<dcsset:item xsi:type="dcsset:SelectedItemField">
<dcsset:field>СуммаРасход</dcsset:field>
</dcsset:item>
<dcsset:item xsi:type="dcsset:SelectedItemField">
<dcsset:field>СуммаКонечныйОстаток</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:dataParameters>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:use>false</dcscor:use>
<dcscor:parameter>НачалоПериода</dcscor:parameter>
<dcscor:value xsi:type="v8:StandardBeginningDate">
<v8:variant xsi:type="v8:StandardBeginningDateVariant">Custom</v8:variant>
<v8:date>0001-01-01T00:00:00</v8:date>
</dcscor:value>
<dcsset:userSettingID>72cd9cbb-7fe9-43fa-b89a-8648efdb95e6</dcsset:userSettingID>
</dcscor:item>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:use>false</dcscor:use>
<dcscor:parameter>КонецПериода</dcscor:parameter>
<dcscor:value xsi:type="v8:StandardBeginningDate">
<v8:variant xsi:type="v8:StandardBeginningDateVariant">Custom</v8:variant>
<v8:date>0001-01-01T00:00:00</v8:date>
</dcscor:value>
<dcsset:userSettingID>d45e92ce-0652-44e0-9cb7-6765030106ee</dcsset:userSettingID>
</dcscor:item>
</dcsset:dataParameters>
<dcsset:item xsi:type="dcsset:StructureItemGroup">
<dcsset:groupItems>
<dcsset:item xsi:type="dcsset:GroupItemField">
<dcsset:field>Учреждение</dcsset:field>
<dcsset:groupType>Items</dcsset:groupType>
<dcsset:periodAdditionType>None</dcsset:periodAdditionType>
</dcsset:item>
</dcsset:groupItems>
<dcsset:order>
<dcsset:item xsi:type="dcsset:OrderItemAuto"/>
</dcsset:order>
<dcsset:selection>
<dcsset:item xsi:type="dcsset:SelectedItemAuto"/>
</dcsset:selection>
<dcsset:item xsi:type="dcsset:StructureItemGroup">
<dcsset:groupItems>
<dcsset:item xsi:type="dcsset:GroupItemField">
<dcsset:field>Ребенок</dcsset:field>
<dcsset:groupType>Items</dcsset:groupType>
<dcsset:periodAdditionType>None</dcsset:periodAdditionType>
</dcsset:item>
</dcsset:groupItems>
<dcsset:order>
<dcsset:item xsi:type="dcsset:OrderItemAuto"/>
</dcsset:order>
<dcsset:selection>
<dcsset:item xsi:type="dcsset:SelectedItemAuto"/>
</dcsset:selection>
</dcsset:item>
</dcsset:item>
</dcsset:settings>
</settingsVariant>
</DataCompositionSchema>
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Report xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="0f608372-4b10-432b-b041-3e2fb042f46d">
<producedTypes>
<objectType typeId="3774a388-d51f-43e7-8c96-9fac019bca64" valueTypeId="ec93f0fb-abbc-499c-ae35-0f8bd9b7cf2d"/>
<managerType typeId="e7e322b9-1de7-4189-ae15-273a0141319b" valueTypeId="47ac0f7e-bc37-4452-ae5f-01df4480a5a4"/>
</producedTypes>
<name>ПС_ОборотнаяВедомостьПоРодительскойПлате</name>
<synonym>
<key>ru</key>
<value>Оборотная ведомость по расчетам по родительской плате</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<mainDataCompositionSchema>Report.ПС_ОборотнаяВедомостьПоРодительскойПлате.Template.ОсновнаяСхема</mainDataCompositionSchema>
<templates uuid="91c0de44-a231-46b4-98ce-7d9e0112e90f">
<name>ОсновнаяСхема</name>
<synonym>
<key>ru</key>
<value>Основная схема</value>
</synonym>
<templateType>DataCompositionSchema</templateType>
</templates>
</mdclass:Report>