22 Commits

Author SHA1 Message Date
tsvetkoff ff5b06da28 merge: линия «остатки взаиморасчётов в садах» — ЭДО, адресные передачи, роли, ведомость, версия 1.0.4 2026-11-03 12:15:33 +05:00
tsvetkoff 1067b9aaca feat(оформление): синоним макета «Реестр платежей», логотип и заставка расширения 2026-11-03 12:15:02 +05:00
tsvetkoff fa700e7554 fix(ведомость ЦБ): дата в запросе через ДОБАВИТЬКДАТЕ вместо арифметики + 2026-11-02 20:29:17 +05:00
tsvetkoff d3473d9392 fix(ведомость ЦБ): верхняя граница периода — начало следующего дня (граница исключая), индексы временных таблиц 2026-11-02 20:22:37 +05:00
tsvetkoff 41cb2f8f85 docs(руководство пользователя): бухгалтерские записи кассового поступления и разбор остатков, версия 1.0.4 2026-11-02 20:15:54 +05:00
tsvetkoff 4a35751282 feat: договоры по организации ребёнка и без архива, автообновление пульта, версия 1.0.4 2026-11-02 13:03:56 +05:00
tsvetkoff 00d20c7e52 docs(руководство пользователя): периодичность передачи вместо «ежемесячно», добавлена передача сведений о начислениях в ЦБ 2026-10-30 11:15:56 +05:00
tsvetkoff ea98b4e190 docs: руководство пользователя и руководство администратора, удалены устаревшие ПАМЯТКА и РУКОВОДСТВО ПО ЭКСПЛУАТАЦИИ 2026-10-30 10:13:05 +05:00
tsvetkoff 629340ff3f feat(печать): вёрстка реестра перенесена в общий макет, макеты документов удалены, версия 1.0.3 2026-10-29 15:42:34 +05:00
tsvetkoff 41f3cb4184 feat(печать,роли): общий макет реестра, КФО из лицевого счёта, роли чтения и записи, версия 1.0.2 2026-10-29 13:27:22 +05:00
tsvetkoff 1e24ec1b16 feat(извещения): перезаполнение извещений при изменении документов, версия 1.0.1 2026-10-29 11:45:47 +05:00
tsvetkoff 5309bab3c7 feat(пульт): остатки по регистру взаиморасчётов вместо счетов 205.31/304.04, версия 1.0.0 2026-10-26 20:37:13 +05:00
tsvetkoff 26bc7c80a2 feat(родительская плата): реестр платежей, извещения 0504805, учёт поступлений по квитанциям
- Реестр платежей: макеты в обоих документах, общая печать по строкам ТЧ, 6 реквизитов реестра в Задолженности
- Передача: только расход регистра, без бухгалтерских проводок
- Принятие: Дт 303.05.831 Кт 205.31.660 по строкам, аналитика 303.05 реквизитом ВидПлатежаВБюджет
- Регистр взаиморасчётов: ИДСтроки переведён в измерение; приход формирует КассовоеПоступление
- Разбор назначения платежа: лицевой счёт, ФИО, группа, период оплаты, расчётный счёт
- Подбор строк передачи по ИДСтроки с заполнением реквизитов реестра из расшифровки платежа
- Извещения 0504805: приняты типовые документы, создание обёрток, связки, защита от дублей приёма платежей
- Предупреждения: снятый признак Родительская плата, подбор контрагента по ИНН
2026-10-26 20:06:21 +05:00
tsvetkoff 9deb24451f Внутренний ЭДО извещений 0504805: документы передачи/принятия и настройка ЭДО
- Документы ПС_ПередачаПоступившихПлатежейВУчреждения и ПС_ПринятиеПоступившихПлатежейИзЦБ: адресность (один сад на документ), реквизиты-организации, печатные формы, участие во внутреннем ЭДО.
- Общие модули расширения: ПС_ВнутреннийЭДОИзвещений, ВнутреннийЭДОПереопределяемый, ВнутренниеЭлектронныеДокументыБГУ, ПС_ИдентификаторыОбъектовЭДО.
- Автоматическое аннулирование электронного документа при изменении учетного документа.
- Определяемый тип ОснованиеВнутреннегоЭлектронногоДокумента расширен нашими документами.
- Эксперимент с инициализацией идентификаторов объектов метаданных результата не дал: БСП не поддерживает идентификаторы объектов расширений в неразделенной базе. Решено переходить на типовые извещения (ИзвещениеИсходящее / ИзвещениеВходящее).
- Удален неиспользуемый общий модуль ПС_РаботаСКонтрагентами.
2026-10-22 11:54:33 +05:00
tsvetkoff b708bfec68 Остатки взаиморасчётов с детьми в садах: переименование документов и разворот схемы
Переименование документов расширения:
- ПС_ПринятиеЗадолженностиОтУчреждения -> ПС_ПередачаПоступившихПлатежейВУчреждения (ЦБ передаёт поступившие платежи в сады)
- ПС_ПередачаЗадолженностиВЦБ -> ПС_ПринятиеПоступившихПлатежейИзЦБ (сад принимает поступившие платежи из ЦБ)

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

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

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

Открытым оставлен один пункт — направление движений регистра у «Кассового поступления».
2026-10-15 00:10:33 +05:00
tsvetkoff a10e0f4e31 План доработки по концепции «остатки в садах»
Ревизия обоих документов и их связей выполнена. В плане: переименование документов с полной цепочкой ссылок, смена ролей и логики заполнения, снятие режима «Начальное сальдо», неизменные проводки и печать, нетронутые регистры/отчёты/пульт, проверка и обновление документации. Отдельно — четыре открытых вопроса к плану.
2026-10-14 23:31:59 +05:00
tsvetkoff 14e23346a9 Концепция «остатки в садах» согласована: сняты открытые вопросы, зафиксированы решения
- Наименования документов приняты
- Бухгалтерские записи сохраняются: в ЦБ передавалась дебиторская задолженность, обратно передаётся кредиторская
- Извещение ф. 0504805 остаётся у обоих документов
- Режим «Начальное сальдо» убирается: обороты переносятся в обратную сторону, сальдо нет
- Пульт не трогаем
- Отчёт остаётся инструментом контроля ЦБ: при полной передаче платежей остатки нулевые
2026-10-14 23:21:30 +05:00
tsvetkoff 7a3a13531d Новая задача: остатки взаиморасчётов с детьми переносятся в сады
Постановка новой концепции: ЦБ собирает поступившие платежи и передаёт их в сады, сады принимают поступившие платежи (по одному документу на сад), остатки формируются в садах. Бухгалтерские записи и порядок поступления средств не меняются, документы переименовываются. Приведены открытые вопросы к согласованию.
2026-10-14 22:59:22 +05:00
tsvetkoff 8c69f25e29 Добавлен основной руководящий документ: Методические рекомендации по организации учёта родительской платы (.docx) 2026-10-14 22:24:22 +05:00
tsvetkoff 1935e64cdd Документация по учёту родительской платы: Памятка, Руководство пользователя, Руководство по эксплуатации (.md)
Комплект перенесён с сетевого ресурса в подпапку docs/ — чтобы версии документации и кода не разъезжались.
2026-10-14 21:46:10 +05:00
61 changed files with 8156 additions and 3428 deletions
@@ -46,22 +46,6 @@
<maxValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
</attributes> </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"> <attributes uuid="97856254-22f9-4198-9f0f-b7118e28d143">
<name>ДокументПередачи</name> <name>ДокументПередачи</name>
<synonym> <synonym>
@@ -69,7 +53,7 @@
<value>Документ передачи</value> <value>Документ передачи</value>
</synonym> </synonym>
<type> <type>
<types>DocumentRef.ПС_ПередачаЗадолженностиВЦБ</types> <types>DocumentRef.ПС_ПринятиеПоступившихПлатежейИзЦБ</types>
</type> </type>
<minValue xsi:type="core:UndefinedValue"/> <minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/>
@@ -93,10 +77,10 @@
<name>Учреждение</name> <name>Учреждение</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Учреждение-отправитель</value> <value>Учреждение (сад)</value>
</synonym> </synonym>
<type> <type>
<types>CatalogRef.Контрагенты</types> <types>CatalogRef.Организации</types>
</type> </type>
<minValue xsi:type="core:UndefinedValue"/> <minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/>
@@ -187,4 +171,21 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<useInTotals>true</useInTotals> <useInTotals>true</useInTotals>
</dimensions> </dimensions>
<dimensions uuid="ce10ca5b-fdf7-42c7-990e-5a6106e131fd">
<name>ИДСтроки</name>
<synonym>
<key>ru</key>
<value>ИД строки (квитанции)</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>50</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<useInTotals>true</useInTotals>
</dimensions>
</mdclass:AccumulationRegister> </mdclass:AccumulationRegister>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog 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="c34f8f71-7aa0-4a83-8098-e3fcd1cea2fd" extendedConfigurationObject="239fc03c-c64c-48f7-8f9e-714207fba857">
<producedTypes>
<objectType typeId="57fc7ee6-a01e-4e66-a820-fb70a4746821" valueTypeId="cb1cc8db-89c5-4e9c-ab87-670f92c538c1"/>
<refType typeId="2d9df19a-a15b-4414-a974-b55c429e619c" valueTypeId="6bc7767a-9186-46f9-a053-ffb1ebbeb8bd"/>
<selectionType typeId="a6829577-82b8-4833-88bb-a1d8602cdcab" valueTypeId="9ec95929-f312-4900-ac98-feba26311fc5"/>
<listType typeId="422b5e82-d2d9-4ae8-9242-8f2202f4db71" valueTypeId="0e53cb36-4ad1-4a13-bc49-ec45c26dd7e7"/>
<managerType typeId="18f0232d-c662-4495-81f0-92a3a68e614c" valueTypeId="d877ae2f-b130-4ece-b8d4-3bb2e06d2201"/>
</producedTypes>
<name>ВидыНалоговИПлатежей</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:CatalogExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
</extension>
<useStandardCommands>true</useStandardCommands>
<attributes uuid="5ec72a9d-0adc-4fa0-b04f-0f8bd5e44aeb" extendedConfigurationObject="1da500ec-ba9a-47bf-a3f4-19cd593fa9d3">
<name>СчетУчета</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:BasicFeatureExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
<typeExtension>
<types>
<state>Checked</state>
<type>String</type>
</types>
<stringQualifiers>
<length>6</length>
</stringQualifiers>
</typeExtension>
</extension>
</attributes>
</mdclass:Catalog>
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule 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="8c6973cc-f6be-42d6-99cf-46917097ac04" extendedConfigurationObject="54ef65f2-2f6b-4ae4-8604-cce57de8a53e">
<name>ВнутренниеЭлектронныеДокументыБГУ</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:CommonModuleExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
<global>Checked</global>
<clientManagedApplication>Checked</clientManagedApplication>
<server>Checked</server>
<externalConnection>Checked</externalConnection>
<serverCall>Checked</serverCall>
<clientOrdinaryApplication>Checked</clientOrdinaryApplication>
</extension>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>
@@ -0,0 +1,57 @@
// ВнутреннийЭДОПереопределяемый: расширение.
// Адресация электронных извещений по учреждению (саду).
#Область СлужебныеПроцедурыИФункции
// Дополняет параметры нового электронного документа: электронное извещение по передаче
// платежей адресуется учреждению-получателю, а не ЦБ.
//
// Маршрут подписания выбирается по ключу настройки внутреннего ЭДО
// (организация + вид документа + команда печати), поэтому без адресации по саду
// для всех садов получался бы один общий маршрут, и подписать извещение
// руководителем конкретного сада было бы невозможно.
//
// Параметры:
// ПараметрыДокумента - Структура - параметры открытия электронного документа,
// см. ВнутреннийЭДОКлиентСервер.ПараметрыОткрытияЭлектронногоДокумента().
//
&После("ПриЗаполненииПараметровНовогоЭлектронногоДокумента")
Процедура ПС_ПриЗаполненииПараметровНовогоЭлектронногоДокумента(ПараметрыДокумента)
УчетныйДокумент = ПараметрыДокумента.УчетныйДокумент;
Если ТипЗнч(УчетныйДокумент) = Тип("ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения") Тогда
УчетныйДокумент = УчетныйДокумент.Ссылка;
КонецЕсли;
Если ТипЗнч(УчетныйДокумент) = Тип("ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения") Тогда
Учреждение = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(УчетныйДокумент, "Учреждение").Учреждение;
Если ЗначениеЗаполнено(Учреждение) Тогда
ПараметрыДокумента.Организация = Учреждение;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
// Дополняет получение организации учётного документа для проверок внутреннего ЭДО,
// в том числе для запрета редактирования формы после завершения подписания:
// для документа передачи организацией считается учреждение-получатель.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - форма учётного документа.
// Источник - ДокументОбъект - учётный документ.
// Организация - ОпределяемыйТип.Организация - организация учётного документа.
// СтандартнаяОбработка - Булево - Истина, если организация берётся как Источник.Организация.
//
&После("ПриПолученииОрганизацииПоОбъекту")
Процедура ПС_ПриПолученииОрганизацииПоОбъекту(Форма, Источник, Организация, СтандартнаяОбработка)
Если ТипЗнч(Источник) = Тип("ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения")
И ЗначениеЗаполнено(Источник.Учреждение) Тогда
СтандартнаяОбработка = Ложь;
Организация = Источник.Учреждение;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule 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="dbe5704a-0b51-4982-9265-411c3291b4d5" extendedConfigurationObject="2e991d62-cba1-4107-a5bf-4a8cc0d01673">
<name>ВнутреннийЭДОПереопределяемый</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:CommonModuleExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
<global>Checked</global>
<clientManagedApplication>Checked</clientManagedApplication>
<server>Checked</server>
<externalConnection>Checked</externalConnection>
<serverCall>Checked</serverCall>
<clientOrdinaryApplication>Checked</clientOrdinaryApplication>
</extension>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>
@@ -0,0 +1,175 @@
#Область ПрограммныйИнтерфейс
// Вызывается из обработчика "ПриЗаписи" модулей объектов извещений внутреннего ЭДО.
// Аннулирует электронные документы, печатная форма которых перестала соответствовать
// данным учётного документа. Штатный перевод подписанного электронного документа
// в неактуальные возможен только из состояния "Аннулирован".
//
// Параметры:
// Источник - ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения,
// ДокументОбъект.ПС_ПринятиеПоступившихПлатежейИзЦБ - записываемый документ.
// Отказ - Булево - признак отказа от записи документа.
//
Процедура ПС_АннулироватьЭлектронныеДокументыПриИзменении(Источник, Отказ) Экспорт
Ссылка = Источник.Ссылка;
Если Ссылка.Пустая() Тогда
Возврат;
КонецЕсли;
Попытка
ПС_АннулироватьНеактуальныеЭлектронныеДокументы(Ссылка);
Исключение
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Внутренний ЭДО извещений.Аннулирование при изменении документа'"),
УровеньЖурналаРегистрации.Ошибка,
Источник.Метаданные(),
Ссылка,
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Аннулирует актуальные подписанные электронные документы, печатная форма которых
// отличается от печатной формы учётного документа на текущий момент.
//
// Параметры:
// УчетныйДокумент - ДокументСсылка - извещение, данные которого были изменены.
//
Процедура ПС_АннулироватьНеактуальныеЭлектронныеДокументы(УчетныйДокумент)
ЭлектронныеДокументы = ВнутреннийЭДО.ЭлектронныеДокументыАктуальные(УчетныйДокумент);
СостояниеЗавершен = ПредопределенноеЗначение("Перечисление.СостоянияДокументовВнутреннегоЭДО.Завершен");
СостояниеТребуетсяУточнение = ПредопределенноеЗначение("Перечисление.СостоянияДокументовВнутреннегоЭДО.ТребуетсяУточнение");
Для Каждого СтрокаСписка Из ЭлектронныеДокументы Цикл
Если СтрокаСписка.Состояние <> СостояниеЗавершен
И СтрокаСписка.Состояние <> СостояниеТребуетсяУточнение Тогда
Продолжить;
КонецЕсли;
ЭлектронныйДокумент = СтрокаСписка.ЭлектронныйДокумент;
Если НЕ ПС_ПечатнаяФормаОтличаетсяОтПодписанной(
УчетныйДокумент, ЭлектронныйДокумент, СтрокаСписка.ИдентификаторКомандыПечати) Тогда
Продолжить;
КонецЕсли;
ПараметрыАннулирования = Новый Структура;
ПараметрыАннулирования.Вставить("УчетныйДокумент", УчетныйДокумент);
ПараметрыАннулирования.Вставить("ЭлектронныйДокумент", ЭлектронныйДокумент);
ПараметрыАннулирования.Вставить("ВидПодписи", ПС_ВидПодписиТекущегоПользователя(ЭлектронныйДокумент));
ПараметрыАннулирования.Вставить("Комментарий",
НСтр("ru = 'Автоматически аннулирован: изменены данные учётного документа'"));
ВнутреннийЭДО.АннулироватьЭлектронныйДокумент(ПараметрыАннулирования);
КонецЦикла;
КонецПроцедуры
// Определяет, отличается ли сохранённая в электронном документе печатная форма
// от печатной формы учётного документа на текущий момент.
//
// Параметры:
// УчетныйДокумент - ДокументСсылка - извещение.
// ЭлектронныйДокумент - ДокументСсылка.ВнутреннийЭлектронныйДокумент - электронный документ.
// ИдентификаторКомандыПечати - Строка - идентификатор команды печати извещения.
//
// Возвращаемое значение:
// Булево - Истина, если печатные формы различаются.
//
Функция ПС_ПечатнаяФормаОтличаетсяОтПодписанной(
УчетныйДокумент, ЭлектронныйДокумент, ИдентификаторКомандыПечати)
ОсновнойФайл = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЭлектронныйДокумент, "ОсновнойФайл").ОсновнойФайл;
Если НЕ ЗначениеЗаполнено(ОсновнойФайл) Тогда
Возврат Ложь;
КонецЕсли;
ДвоичныеДанныеСохраненнойФормы = РаботаСФайлами.ДвоичныеДанныеФайла(ОсновнойФайл, Ложь);
Если ДвоичныеДанныеСохраненнойФормы = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
ПараметрыПечати = Новый Структура;
ПараметрыПечати.Вставить("УчетныйДокумент", УчетныйДокумент);
ПараметрыПечати.Вставить("ИдентификаторКомандыПечати", ИдентификаторКомандыПечати);
ВнутреннийЭДОПереопределяемый.ПриПолученииТабличногоДокументаАктуальногоДокумента(ПараметрыПечати);
ТабличныйДокументТекущий = ПС_ТабличныйДокументУчетногоДокумента(ПараметрыПечати);
Если ТабличныйДокументТекущий.ВысотаТаблицы = 0 Тогда
Возврат Ложь;
КонецЕсли;
ТабличныйДокументСохраненный = ВнутреннийЭДО.ТабличныйДокументИзДвоичныхДанныхАрхива(ДвоичныеДанныеСохраненнойФормы);
Возврат НЕ ВнутреннийЭДО.ТабличныеДокументыИдентичны(ТабличныйДокументСохраненный, ТабличныйДокументТекущий);
КонецФункции
// Формирует табличный документ печатной формы учётного документа в привилегированном режиме.
//
// Параметры:
// ПараметрыПечати - Структура - параметры печати: УчетныйДокумент, ИдентификаторКомандыПечати.
//
// Возвращаемое значение:
// ТабличныйДокумент - печатная форма учётного документа.
//
Функция ПС_ТабличныйДокументУчетногоДокумента(ПараметрыПечати)
// Печать учётного документа может обращаться к данным, недоступным пользователю,
// поэтому печатная форма формируется в привилегированном режиме
// с восстановлением исходного значения режима.
ТекущийПривилегированныйРежим = ПривилегированныйРежим();
УстановитьПривилегированныйРежим(Истина);
Попытка
ДвоичныеДанные = ВнутреннийЭДО.ДвоичныеДанныеУчетногоДокумента(ПараметрыПечати);
Исключение
УстановитьПривилегированныйРежим(ТекущийПривилегированныйРежим);
ВызватьИсключение;
КонецПопытки;
УстановитьПривилегированныйРежим(ТекущийПривилегированныйРежим);
Возврат ВнутреннийЭДО.ТабличныйДокументИзДвоичныхДанныхАрхива(ДвоичныеДанные);
КонецФункции
// Возвращает вид подписи текущего пользователя по маршруту электронного документа.
// Если пользователь не является подписантом маршрута, возвращается пустая ссылка -
// аннулирование в этом случае выполняется без отметки строки маршрута.
//
// Параметры:
// ЭлектронныйДокумент - ДокументСсылка.ВнутреннийЭлектронныйДокумент - электронный документ.
//
// Возвращаемое значение:
// ПеречислениеСсылка.ВидыЭлектронныхПодписейБГУ - вид подписи текущего пользователя.
//
Функция ПС_ВидПодписиТекущегоПользователя(ЭлектронныйДокумент)
СоставМаршрута = ВнутреннийЭДО.СоставМаршрутаПодписанияДокумента(ЭлектронныйДокумент);
СтрокиПодписанта = СоставМаршрута.НайтиСтроки(Новый Структура("Подписант", Пользователи.ТекущийПользователь()));
Если СтрокиПодписанта.Количество() > 0 Тогда
Возврат СтрокиПодписанта[0].ВидПодписи;
КонецЕсли;
Возврат ПредопределенноеЗначение("Перечисление.ВидыЭлектронныхПодписейБГУ.ПустаяСсылка");
КонецФункции
#КонецОбласти
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c575ba64-5d30-4a94-93ca-951ca20211ec"> <mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="df60b70c-4101-4771-b92e-bbd114678406">
<name>ПС_РаботаСКонтрагентами</name> <name>ПС_ВнутреннийЭДОИзвещений</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>ПС Работа с контрагентами</value> <value>ПС_Внутренний ЭДО извещений</value>
</synonym> </synonym>
<server>true</server> <server>true</server>
<externalConnection>true</externalConnection> <externalConnection>true</externalConnection>
@@ -0,0 +1,238 @@
#Область ПрограммныйИнтерфейс
// Обеспечивает наличие в справочнике идентификаторов объектов метаданных записей
// по документам внутреннего ЭДО, созданным в расширении конфигурации.
//
// Настройки внутреннего ЭДО ключуются идентификатором объекта метаданных, который библиотека
// заполняет только по объектам основной конфигурации. Записи по документам расширения создаются
// этой процедурой, а если обновление данных справочника пометило их на удаление, восстанавливаются.
//
// Возвращаемое значение:
// Соответствие из КлючИЗначение - идентификаторы объектов метаданных по их полным именам:
// * Ключ - Строка - полное имя объекта метаданных, например "Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ";
// * Значение - СправочникСсылка.ИдентификаторыОбъектовМетаданных - идентификатор объекта метаданных.
//
Функция ПС_ОбеспечитьИдентификаторыДокументовЭДО() Экспорт
ПолныеИменаДокументов = Новый Массив;
ПолныеИменаДокументов.Добавить("Документ.ПС_ПередачаПоступившихПлатежейВУчреждения");
ПолныеИменаДокументов.Добавить("Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ");
СуществующиеЗаписи = ПС_СуществующиеЗаписи(ПолныеИменаДокументов);
Результат = Новый Соответствие;
Для Каждого ПолноеИмя Из ПолныеИменаДокументов Цикл
СуществующаяЗапись = СуществующиеЗаписи.Получить(ПолноеИмя);
Результат.Вставить(ПолноеИмя, ПС_ОбеспечитьИдентификаторОбъекта(ПолноеИмя,
СуществующаяЗапись.Ссылка, СуществующаяЗапись.ТребуетсяВосстановление));
КонецЦикла;
Возврат Результат;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Обеспечивает наличие записи справочника идентификаторов по полному имени объекта метаданных.
//
// Параметры:
// ПолноеИмя - Строка - полное имя объекта метаданных;
// Идентификатор - СправочникСсылка.ИдентификаторыОбъектовМетаданных - найденная запись справочника;
// ТребуетсяВосстановление - Булево - запись помечена на удаление или ее полное имя изменено.
//
// Возвращаемое значение:
// СправочникСсылка.ИдентификаторыОбъектовМетаданных - идентификатор объекта метаданных.
//
Функция ПС_ОбеспечитьИдентификаторОбъекта(ПолноеИмя, Идентификатор, ТребуетсяВосстановление)
Если ЗначениеЗаполнено(Идентификатор) И НЕ ТребуетсяВосстановление Тогда
Возврат Идентификатор;
КонецЕсли;
Если ЗначениеЗаполнено(Идентификатор) Тогда
ЗаписьИдентификатора = Идентификатор.ПолучитьОбъект();
Иначе
ЗаписьИдентификатора = Справочники.ИдентификаторыОбъектовМетаданных.СоздатьЭлемент();
КонецЕсли;
ЗаполнитьЗначенияСвойств(ЗаписьИдентификатора, ПС_СвойстваЗаписиИдентификатора(ПолноеИмя));
// Создание записей справочника предусмотрено только механизмом обновления данных справочника,
// поэтому запись выполняется в режиме загрузки данных.
ЗаписьИдентификатора.ОбменДанными.Загрузка = Истина;
ЗаписьИдентификатора.Записать();
Возврат ЗаписьИдентификатора.Ссылка;
КонецФункции
// Возвращает записи справочника идентификаторов по полным именам объектов метаданных,
// включая записи, испорченные механизмом обновления данных справочника.
//
// Параметры:
// ПолныеИмена - Массив из Строка - полные имена объектов метаданных.
//
// Возвращаемое значение:
// Соответствие из КлючИЗначение - найденные записи по полным именам объектов метаданных:
// * Ключ - Строка - полное имя объекта метаданных;
// * Значение - Структура:
// ** Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных - найденная запись;
// ** ТребуетсяВосстановление - Булево - запись помечена на удаление или ее полное имя изменено.
//
Функция ПС_СуществующиеЗаписи(ПолныеИмена)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИдентификаторыОбъектовМетаданных.Ссылка КАК Ссылка,
| ИдентификаторыОбъектовМетаданных.ПолноеИмя КАК ПолноеИмя,
| ИдентификаторыОбъектовМетаданных.ПометкаУдаления КАК ПометкаУдаления
|ИЗ
| Справочник.ИдентификаторыОбъектовМетаданных КАК ИдентификаторыОбъектовМетаданных
|ГДЕ
| ИдентификаторыОбъектовМетаданных.ПолноеИмя В (&ПолныеИмена)
| ИЛИ ИдентификаторыОбъектовМетаданных.ПолноеИмя ПОДОБНО &ШаблонИзмененногоИмени
|УПОРЯДОЧИТЬ ПО
| ИдентификаторыОбъектовМетаданных.ПометкаУдаления,
| ИдентификаторыОбъектовМетаданных.ПолноеИмя";
Запрос.УстановитьПараметр("ПолныеИмена", ПолныеИмена);
Запрос.УстановитьПараметр("ШаблонИзмененногоИмени", "?%");
Результат = Новый Соответствие;
Для Каждого ПолноеИмя Из ПолныеИмена Цикл
Запись = Новый Структура("Ссылка, ТребуетсяВосстановление",
Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка(), Ложь);
Результат.Вставить(ПолноеИмя, Запись);
КонецЦикла;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Запись = Результат.Получить(Выборка.ПолноеИмя);
Если Запись <> Неопределено И НЕ Выборка.ПометкаУдаления Тогда
Запись.Ссылка = Выборка.Ссылка;
Запись.ТребуетсяВосстановление = Ложь;
Продолжить;
КонецЕсли;
Если НЕ Выборка.ПометкаУдаления Тогда
Продолжить;
КонецЕсли;
ПС_ОтметитьИзмененнуюЗапись(Результат, Выборка);
КонецЦикла;
Возврат Результат;
КонецФункции
// Отмечает запись справочника идентификаторов как испорченную механизмом обновления данных справочника.
//
// Параметры:
// Результат - Соответствие из КлючИЗначение - см. ПС_СуществующиеЗаписи;
// Выборка - ВыборкаИзРезультатаЗапроса - запись справочника, помеченная на удаление.
//
Процедура ПС_ОтметитьИзмененнуюЗапись(Результат, Выборка)
Для Каждого КлючИЗначение Из Результат Цикл
Запись = КлючИЗначение.Значение;
Если ЗначениеЗаполнено(Запись.Ссылка)
ИЛИ СтрНайти(Выборка.ПолноеИмя, КлючИЗначение.Ключ) = 0 Тогда
Продолжить;
КонецЕсли;
Запись.Ссылка = Выборка.Ссылка;
Запись.ТребуетсяВосстановление = Истина;
Возврат;
КонецЦикла;
КонецПроцедуры
// Возвращает значения реквизитов записи справочника идентификаторов объектов метаданных.
//
// Параметры:
// ПолноеИмя - Строка - полное имя объекта метаданных, например "Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ".
//
// Возвращаемое значение:
// Структура - значения реквизитов записи:
// * Наименование - Строка - представление идентификатора объекта метаданных;
// * Имя - Строка - имя объекта метаданных;
// * Синоним - Строка - синоним объекта метаданных;
// * ПолныйСиноним - Строка - полный синоним объекта метаданных;
// * ПолноеИмя - Строка - полное имя объекта метаданных;
// * Родитель - СправочникСсылка.ИдентификаторыОбъектовМетаданных - группа коллекции;
// * ПорядокКоллекции - Число - порядок коллекции объектов метаданных;
// * БезДанных - Булево - Ложь;
// * ЗначениеПустойСсылки - Произвольный - пустая ссылка объекта метаданных;
// * КлючОбъектаМетаданных - ХранилищеЗначения - ключ объекта метаданных;
// * ИмяПредопределенныхДанных - Строка - пустая строка;
// * ПометкаУдаления - Булево - Ложь.
//
Функция ПС_СвойстваЗаписиИдентификатора(ПолноеИмя)
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмя);
ПозицияТочки = СтрНайти(ПолноеИмя, ".");
ИмяБазовогоТипа = Лев(ПолноеИмя, ПозицияТочки - 1);
ИмяТипаСсылки = ИмяБазовогоТипа + "Ссылка." + ОбъектМетаданных.Имя;
ОписаниеТипаСсылки = Новый ОписаниеТипов(ИмяТипаСсылки);
Синоним = ?(ЗначениеЗаполнено(ОбъектМетаданных.Синоним), ОбъектМетаданных.Синоним, ОбъектМетаданных.Имя);
СвойстваКоллекции = ПС_СвойстваКоллекцииОбъектовМетаданных(ИмяБазовогоТипа);
Свойства = Новый Структура;
Свойства.Вставить("Наименование", Синоним + " (" + СвойстваКоллекции.СинонимВЕдЧисле + ")");
Свойства.Вставить("Имя", ОбъектМетаданных.Имя);
Свойства.Вставить("Синоним", Синоним);
Свойства.Вставить("ПолныйСиноним", СвойстваКоллекции.СинонимВЕдЧисле + ". " + Синоним);
Свойства.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя());
Свойства.Вставить("Родитель",
Справочники.ИдентификаторыОбъектовМетаданных.ПолучитьСсылку(СвойстваКоллекции.Идентификатор));
Свойства.Вставить("ПорядокКоллекции", Число(СвойстваКоллекции.ПорядокКоллекции));
Свойства.Вставить("БезДанных", Ложь);
Свойства.Вставить("ЗначениеПустойСсылки", ОписаниеТипаСсылки.ПривестиЗначение(Неопределено));
Свойства.Вставить("КлючОбъектаМетаданных", Новый ХранилищеЗначения(Тип(ИмяТипаСсылки)));
Свойства.Вставить("ИмяПредопределенныхДанных", "");
Свойства.Вставить("ПометкаУдаления", Ложь);
Возврат Свойства;
КонецФункции
// Возвращает свойства коллекции объектов метаданных по имени базового типа.
//
// Параметры:
// ИмяБазовогоТипа - Строка - имя базового типа объектов метаданных, например "Документ".
//
// Возвращаемое значение:
// СтрокаТаблицыЗначений - свойства коллекции объектов метаданных.
//
Функция ПС_СвойстваКоллекцииОбъектовМетаданных(ИмяБазовогоТипа)
СвойстваКоллекций = СтандартныеПодсистемыПовтИсп.СвойстваКоллекцийОбъектовМетаданных(Ложь);
Отбор = Новый Структура("ИмяВЕдЧисле", ИмяБазовогоТипа);
НайденныеСвойства = СвойстваКоллекций.НайтиСтроки(Отбор);
Если НайденныеСвойства.Количество() = 0 Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не найдены свойства коллекции объектов метаданных ""%1"".'"),
ИмяБазовогоТипа);
КонецЕсли;
Возврат НайденныеСвойства[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="de71a510-c5c2-4312-ad87-8b2cc47a4c2c">
<name>ПС_ИдентификаторыОбъектовЭДО</name>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>
@@ -1,172 +0,0 @@
// Поиск контрагента, соответствующего организации, по ИНН.
//
// Универсальная функция для обоих документов (Передача задолженности в ЦБ
// и Принятие задолженности от учреждения). Реквизиты ЦБ и УчреждениеОтправитель
// имеют тип CatalogRef.Контрагенты, а в связанных документах-основаниях
// соответствующие организации имеют тип CatalogRef.Организации. Чтобы
// обеспечить соответствие, ищем элемент справочника Контрагенты с тем же ИНН.
//
// Параметры:
// Организация - CatalogRef.Организации - организация, для которой ищем контрагента.
// ИмяПоляПодсказки - Строка - имя реквизита формы/документа, которое остаётся
// незаполненным (для сообщения пользователю). Например,
// "ЦБ (получатель)" или "Учреждение-отправитель".
//
// Возвращаемое значение:
// CatalogRef.Контрагенты - если найден ровно один контрагент с ИНН организации.
// Пустая ссылка - в остальных случаях (организация не заполнена / нет ИНН / нет
// контрагента / найдено несколько). При этом пользователю
// выводится сообщение с описанием причины.
//
#Область ПрограммныйИнтерфейс
Функция КонтрагентПоОрганизации(Организация, ИмяПоляПодсказки = "") Экспорт
ПустойКонтрагент = Справочники.Контрагенты.ПустаяСсылка();
Подсказка = ?(ПустаяСтрока(ИмяПоляПодсказки), "Контрагент",
"Поле """ + ИмяПоляПодсказки + """");
Если НЕ ЗначениеЗаполнено(Организация) Тогда
ТекстСообщения = "Не указана организация для поиска контрагента.|"
+ Подсказка + " не заполнен - выберите контрагента вручную.";
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = ТекстСообщения;
СообщениеПользователю.Сообщить();
Возврат ПустойКонтрагент;
КонецЕсли;
ИНН = Организация.ИНН;
Если НЕ ЗначениеЗаполнено(ИНН) Тогда
Представление = Строка(Организация);
ТекстСообщения = "У организации (" + Представление + ") не заполнен ИНН.|"
+ Подсказка + " не заполнен - выберите контрагента вручную.";
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = ТекстСообщения;
СообщениеПользователю.Сообщить();
Возврат ПустойКонтрагент;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Ссылка КАК Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ИНН = &ИНН
| И НЕ Контрагенты.ПометкаУдаления";
Запрос.УстановитьПараметр("ИНН", ИНН);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Представление = Строка(Организация);
ТекстСообщения = "Контрагент с ИНН " + ИНН + " (организация: " + Представление + ") не найден.|"
+ Подсказка + " не заполнен - выберите контрагента вручную.";
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = ТекстСообщения;
СообщениеПользователю.Сообщить();
Возврат ПустойКонтрагент;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ПервыйНайденный = Выборка.Ссылка;
Если Выборка.Следующий() Тогда
Представление = Строка(Организация);
ТекстСообщения = "Найдено несколько контрагентов с ИНН " + ИНН + " (организация: " + Представление + ").|"
+ Подсказка + " не заполнен - выберите контрагента вручную.";
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = ТекстСообщения;
СообщениеПользователю.Сообщить();
Возврат ПустойКонтрагент;
КонецЕсли;
Возврат ПервыйНайденный;
КонецФункции
// Обёртка для документов учёта родительской платы: возвращает контрагента ЦБ
// по константе ОрганизацияЦентрализованнаяБухгалтерия.
//
// Параметры:
// ИмяПоляПодсказки - Строка - имя реквизита формы/документа для сообщения.
//
// Возвращаемое значение:
// CatalogRef.Контрагенты - контрагент, соответствующий организации ЦБ,
// либо пустая ссылка (с сообщением пользователю).
//
Функция КонтрагентЦБПоУмолчанию(ИмяПоляПодсказки = "ЦБ (получатель)") Экспорт
ОрганизацияЦБ = Константы.ОрганизацияЦентрализованнаяБухгалтерия.Получить();
Возврат КонтрагентПоОрганизации(ОрганизацияЦБ, ИмяПоляПодсказки);
КонецФункции
// Поиск организации, соответствующей контрагенту, по ИНН.
//
// Операция, обратная КонтрагентПоОрганизации. В документах начисления и передачи
// учреждение (сад) представлено ссылкой на справочник Организации, а в документах
// принятия, в регистре взаиморасчётов и в отборах пульта управления - ссылкой на
// справочник Контрагенты. Сопоставление выполняется по ИНН.
//
// Параметры:
// Контрагент - CatalogRef.Контрагенты - контрагент, для которого ищем организацию.
// ИмяПоляПодсказки - Строка - имя реквизита для сообщения пользователю.
//
// Возвращаемое значение:
// CatalogRef.Организации - если найдена ровно одна организация с ИНН контрагента.
// Пустая ссылка - в остальных случаях (нет ИНН / нет организации / найдено несколько).
// Причина выводится пользователю.
//
Функция ОрганизацияПоКонтрагенту(Контрагент, ИмяПоляПодсказки = "") Экспорт
ПустаяОрганизация = Справочники.Организации.ПустаяСсылка();
Если НЕ ЗначениеЗаполнено(Контрагент) Тогда
Возврат ПустаяОрганизация;
КонецЕсли;
Подсказка = ?(ПустаяСтрока(ИмяПоляПодсказки), "Организация",
"Поле """ + ИмяПоляПодсказки + """");
// Сопоставление выполняем запросом по ИНН: прямое чтение реквизита заимствованного
// справочника Контрагенты в расширении не разбирается анализатором.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Организации.Ссылка КАК Ссылка
|ИЗ
| Справочник.Организации КАК Организации
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
| ПО Контрагенты.ИНН = Организации.ИНН
|ГДЕ
| Контрагенты.Ссылка = &Контрагент
| И НЕ Организации.ПометкаУдаления";
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Представление = Строка(Контрагент);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не найдена организация с тем же ИНН, что у контрагента (" + Представление + ").|"
+ Подсказка + " не определена - отбор по учреждению не применён.");
Возврат ПустаяОрганизация;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ПервыйНайденный = Выборка.Ссылка;
Если Выборка.Следующий() Тогда
ОбщегоНазначения.СообщитьПользователю(
"Найдено несколько организаций с тем же ИНН, что у контрагента (" + Представление + ").|"
+ Подсказка + " не определена - отбор по учреждению не применён.");
Возврат ПустаяОрганизация;
КонецЕсли;
Возврат ПервыйНайденный;
КонецФункции
#КонецОбласти
@@ -59,6 +59,7 @@
// Второй проход: отбор строк, по которым ребёнок и его контрагент определены однозначно. // Второй проход: отбор строк, по которым ребёнок и его контрагент определены однозначно.
СтрокиКЗаполнению = Новый Массив; СтрокиКЗаполнению = Новый Массив;
Контрагенты = Новый Соответствие; Контрагенты = Новый Соответствие;
ОрганизацииКонтрагентов = Новый Соответствие;
Для Каждого ДанныеПлатежа Из РазобранныеСтроки Цикл Для Каждого ДанныеПлатежа Из РазобранныеСтроки Цикл
@@ -79,9 +80,13 @@
СтрокаКЗаполнению.СтрокаПлатежа = СтрокаПлатежа; СтрокаКЗаполнению.СтрокаПлатежа = СтрокаПлатежа;
СтрокаКЗаполнению.Ребенок = Ребенок.Ссылка; СтрокаКЗаполнению.Ребенок = Ребенок.Ссылка;
СтрокаКЗаполнению.Контрагент = Ребенок.Контрагент; СтрокаКЗаполнению.Контрагент = Ребенок.Контрагент;
СтрокаКЗаполнению.Вставить("ЛицевойСчет", ДанныеПлатежа.ЛицевойСчет);
СтрокиКЗаполнению.Добавить(СтрокаКЗаполнению); СтрокиКЗаполнению.Добавить(СтрокаКЗаполнению);
Контрагенты.Вставить(Ребенок.Контрагент, Истина); Контрагенты.Вставить(Ребенок.Контрагент, Истина);
// Договор ищется только по организации ребёнка: при переводе ребёнка из сада в сад
// у родителя остаются договоры прежних учреждений.
ОрганизацииКонтрагентов.Вставить(Ребенок.Контрагент, Ребенок.Организация);
КонецЦикла; КонецЦикла;
@@ -106,10 +111,15 @@
КонецЕсли; КонецЕсли;
// Договоры определяются одним запросом сразу по всем контрагентам документа. // Договоры определяются одним запросом сразу по всем контрагентам документа.
Договоры = ДоговорыПоКонтрагентам(Контрагенты, ДокументОбъект, СчетРасчетов); Договоры = ДоговорыПоКонтрагентам(Контрагенты, ОрганизацииКонтрагентов, ДокументОбъект, СчетРасчетов);
// КФО строк берётся из настройки лицевого счёта: раздел счёта -> допустимые КФО.
// Используется типовой механизм, поэтому выбор совпадает с поведением типовых форм:
// подставляется первое допустимое значение (наименьший порядок перечисления КВД).
КФОПоСчетам = КФОПоЛицевымСчетам(СтрокиКЗаполнению);
Результат.Заполнено = Результат.Заполнено + ЗаполнитьСтрокиРасшифровки( Результат.Заполнено = Результат.Заполнено + ЗаполнитьСтрокиРасшифровки(
СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа); СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа, КФОПоСчетам);
Возврат Результат; Возврат Результат;
@@ -123,14 +133,21 @@
// //
// Возвращаемое значение: // Возвращаемое значение:
// Структура - результат разбора: // Структура - результат разбора:
// * ЛицевойСчет - Строка - распознанный лицевой счёт ребёнка; пустая строка, если не распознан; // * ЛицевойСчет - Строка - распознанный лицевой счёт ребёнка; пустая строка, если не распознан;
// * ФИО - Строка - ФИО ребёнка из назначения платежа; пустая строка, если не распознано. // * ФИО - Строка - ФИО ребёнка из назначения платежа; пустая строка, если не распознано;
// * Группа - Строка - группа детского сада (5-я часть назначения); пустая строка, если не распознана;
// * ПериодОплаты - Строка - период оплаты (6-я часть назначения, например "Июнь"); пустая строка, если не распознан;
// * РасчетныйСчет - Строка - лицевой счёт учреждения (2-я часть назначения, без префикса "л/с");
// пустая строка, если не распознан.
// //
Функция РазобратьНазначениеПлатежа(ТекстНазначения) Экспорт Функция РазобратьНазначениеПлатежа(ТекстНазначения) Экспорт
Результат = Новый Структура; Результат = Новый Структура;
Результат.Вставить("ЛицевойСчет", ""); Результат.Вставить("ЛицевойСчет", "");
Результат.Вставить("ФИО", ""); Результат.Вставить("ФИО", "");
Результат.Вставить("Группа", "");
Результат.Вставить("ПериодОплаты", "");
Результат.Вставить("РасчетныйСчет", "");
Если НЕ ЗначениеЗаполнено(ТекстНазначения) Тогда Если НЕ ЗначениеЗаполнено(ТекстНазначения) Тогда
Возврат Результат; Возврат Результат;
@@ -139,10 +156,55 @@
Результат.ЛицевойСчет = ОпределитьЛицевойСчетРебенка(ТекстНазначения); Результат.ЛицевойСчет = ОпределитьЛицевойСчетРебенка(ТекстНазначения);
Результат.ФИО = ОпределитьФИОИзНазначения(ТекстНазначения); Результат.ФИО = ОпределитьФИОИзНазначения(ТекстНазначения);
// Разбор по частям: "учреждение,л/с учреждения,л/с ребёнка,ФИО,группа,период".
ЧастиНазначения = СтрРазделить(ТекстНазначения, ",");
Если ЧастиНазначения.Количество() >= 2 Тогда
Результат.РасчетныйСчет = УбратьПрефиксЛицевогоСчета(ЧастиНазначения[1]);
КонецЕсли;
Если ЧастиНазначения.Количество() >= 6 Тогда
Результат.Группа = СокрЛП(ЧастиНазначения[4]);
Результат.ПериодОплаты = СокрЛП(ЧастиНазначения[5]);
КонецЕсли;
Возврат Результат; Возврат Результат;
КонецФункции КонецФункции
// Проверяет, есть ли в расшифровке платежа лицевые счета детей - признак платежа родительской платы.
// Применяется, когда признак "Родительская плата" не установлен: если лицевой счёт ребёнка распознан
// и найден в справочнике детей, платёж, скорее всего, относится к родительской плате.
//
// Параметры:
// ДокументОбъект - ДокументОбъект.КассовоеПоступление - проверяемый документ.
//
// Возвращаемое значение:
// Булево - Истина, если хотя бы один распознанный лицевой счёт найден в справочнике детей.
//
Функция ЕстьЛицевыеСчетаДетей(ДокументОбъект) Экспорт
КодыПоиска = Новый Массив;
Для Каждого СтрокаПлатежа Из ДокументОбъект.РасшифровкаПлатежа Цикл
ДанныеПлатежа = РазобратьНазначениеПлатежа(СтрокаПлатежа.Примечание);
Если НЕ ЗначениеЗаполнено(ДанныеПлатежа.ЛицевойСчет) Тогда
Продолжить;
КонецЕсли;
Для Каждого Код Из КодыПоискаРебенка(ДанныеПлатежа.ЛицевойСчет) Цикл
КодыПоиска.Добавить(Код);
КонецЦикла;
КонецЦикла;
Если КодыПоиска.Количество() = 0 Тогда
Возврат Ложь;
КонецЕсли;
Возврат ДетиПоЛицевымСчетам(КодыПоиска).Количество() > 0;
КонецФункции
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
@@ -151,6 +213,8 @@
// //
// Параметры: // Параметры:
// Контрагенты - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты (дети) документа. // Контрагенты - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты (дети) документа.
// ОрганизацииКонтрагентов - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Организации -
// организация ребёнка по контрагенту. Пустая ссылка - отбор по организации не применяется.
// ДокументОбъект - ДокументОбъект.КассовоеПоступление - документ, по дате и организации которого ищутся остатки. // ДокументОбъект - ДокументОбъект.КассовоеПоступление - документ, по дате и организации которого ищутся остатки.
// СчетРасчетов - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы (205.31). // СчетРасчетов - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы (205.31).
// //
@@ -158,7 +222,7 @@
// Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - договоры по контрагентам, // Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - договоры по контрагентам,
// определённые однозначно. // определённые однозначно.
// //
Функция ДоговорыПоКонтрагентам(Контрагенты, ДокументОбъект, СчетРасчетов) Функция ДоговорыПоКонтрагентам(Контрагенты, ОрганизацииКонтрагентов, ДокументОбъект, СчетРасчетов)
КонтрагентыМассив = Новый Массив; КонтрагентыМассив = Новый Массив;
Для Каждого Элемент Из Контрагенты Цикл Для Каждого Элемент Из Контрагенты Цикл
@@ -170,10 +234,12 @@
КоличествоДоговоров = Новый Соответствие; КоличествоДоговоров = Новый Соответствие;
// 1. Договоры из остатков по счёту 205.31 - приоритетный источник. // 1. Договоры из остатков по счёту 205.31 - приоритетный источник.
ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ДокументОбъект, СчетРасчетов, Результат, Неоднозначные); ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ОрганизацииКонтрагентов, ДокументОбъект, СчетРасчетов,
Результат, Неоднозначные);
// 2. Для остальных контрагентов - единственный договор, отобранный по реквизиту "Контрагент". // 2. Для остальных контрагентов - единственный договор, отобранный по реквизиту "Контрагент".
ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, Результат, Неоднозначные, КоличествоДоговоров); ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, ОрганизацииКонтрагентов, Результат, Неоднозначные,
КоличествоДоговоров);
// 3. Диагностика по контрагентам, для которых договор определить не удалось. // 3. Диагностика по контрагентам, для которых договор определить не удалось.
Для Каждого Элемент Из Контрагенты Цикл Для Каждого Элемент Из Контрагенты Цикл
@@ -208,12 +274,15 @@
// //
// Параметры: // Параметры:
// КонтрагентыМассив - Массив из СправочникСсылка.Контрагенты - контрагенты (дети), по которым ищутся остатки. // КонтрагентыМассив - Массив из СправочникСсылка.Контрагенты - контрагенты (дети), по которым ищутся остатки.
// ОрганизацииКонтрагентов - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Организации -
// организация ребёнка по контрагенту. Пустая ссылка - отбор по организации не применяется.
// ДокументОбъект - ДокументОбъект.КассовоеПоступление - документ, по дате и организации которого ищутся остатки. // ДокументОбъект - ДокументОбъект.КассовоеПоступление - документ, по дате и организации которого ищутся остатки.
// Счет20531 - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы (205.31). // Счет20531 - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы (205.31).
// Результат - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - дополняется найденными договорами. // Результат - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - дополняется найденными договорами.
// Неоднозначные - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты с несколькими договорами в остатках. // Неоднозначные - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты с несколькими договорами в остатках.
// //
Процедура ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ДокументОбъект, Счет20531, Результат, Неоднозначные) Процедура ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ОрганизацииКонтрагентов, ДокументОбъект, Счет20531,
Результат, Неоднозначные)
Если НЕ ЗначениеЗаполнено(Счет20531) Тогда Если НЕ ЗначениеЗаполнено(Счет20531) Тогда
Возврат; Возврат;
@@ -229,15 +298,19 @@
Запрос.Текст = Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ "ВЫБРАТЬ РАЗЛИЧНЫЕ
| Остатки.Субконто1 КАК Контрагент, | Остатки.Субконто1 КАК Контрагент,
| Остатки.Субконто2 КАК Договор | Остатки.Субконто2 КАК Договор,
| Договоры.Организация КАК Организация
|ИЗ |ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Остатки( | РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Остатки(
| &Дата, | &Дата,
| Счет В ИЕРАРХИИ (&Счет20531), | Счет В ИЕРАРХИИ (&Счет20531),
| &ВидыСубконто, | &ВидыСубконто,
| Организация = &Организация И Субконто1 В (&Контрагенты)) КАК Остатки | Организация = &Организация И Субконто1 В (&Контрагенты)) КАК Остатки
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Договоры КАК Договоры
| ПО Остатки.Субконто2 = Договоры.Ссылка
|ГДЕ |ГДЕ
| Остатки.СуммаОстаток <> 0"; | Остатки.СуммаОстаток <> 0
| И НЕ Договоры.ВАрхиве";
Запрос.УстановитьПараметр("Дата", ДокументОбъект.Дата); Запрос.УстановитьПараметр("Дата", ДокументОбъект.Дата);
Запрос.УстановитьПараметр("Счет20531", Счет20531); Запрос.УстановитьПараметр("Счет20531", Счет20531);
Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто); Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
@@ -251,6 +324,10 @@
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
Если НЕ ОрганизацияДоговораПодходит(Выборка.Организация, ОрганизацииКонтрагентов[Выборка.Контрагент]) Тогда
Продолжить;
КонецЕсли;
НайденныйДоговор = Результат[Выборка.Контрагент]; НайденныйДоговор = Результат[Выборка.Контрагент];
Если НайденныйДоговор = Неопределено Тогда Если НайденныйДоговор = Неопределено Тогда
Результат.Вставить(Выборка.Контрагент, Выборка.Договор); Результат.Вставить(Выборка.Контрагент, Выборка.Договор);
@@ -263,24 +340,32 @@
КонецПроцедуры КонецПроцедуры
// Дополняет результат единственным договором, отобранным по реквизиту "Контрагент". // Дополняет результат единственным договором, отобранным по реквизиту "Контрагент".
// Учитываются только действующие договоры (не помеченные на удаление и не находящиеся в архиве),
// организация договора должна совпадать с организацией ребёнка: при переводе ребёнка из сада в сад
// у родителя остаются договоры прежних учреждений.
// //
// Параметры: // Параметры:
// КонтрагентыМассив - Массив из СправочникСсылка.Контрагенты - контрагенты (дети), по которым отбираются договоры. // КонтрагентыМассив - Массив из СправочникСсылка.Контрагенты - контрагенты (дети), по которым отбираются договоры.
// ОрганизацииКонтрагентов - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Организации -
// организация ребёнка по контрагенту. Пустая ссылка - отбор по организации не применяется.
// Результат - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - дополняется найденными договорами. // Результат - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - дополняется найденными договорами.
// Неоднозначные - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты с неоднозначным договором. // Неоднозначные - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты с неоднозначным договором.
// КоличествоДоговоров - Соответствие из СправочникСсылка.Контрагенты, Число - количество найденных договоров. // КоличествоДоговоров - Соответствие из СправочникСсылка.Контрагенты, Число - количество найденных договоров.
// //
Процедура ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, Результат, Неоднозначные, КоличествоДоговоров) Процедура ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, ОрганизацииКонтрагентов, Результат, Неоднозначные,
КоличествоДоговоров)
Запрос = Новый Запрос; Запрос = Новый Запрос;
Запрос.Текст = Запрос.Текст =
"ВЫБРАТЬ "ВЫБРАТЬ
| Договоры.Контрагент КАК Контрагент, | Договоры.Контрагент КАК Контрагент,
| Договоры.Ссылка КАК Договор | Договоры.Ссылка КАК Договор,
| Договоры.Организация КАК Организация
|ИЗ |ИЗ
| Справочник.Договоры КАК Договоры | Справочник.Договоры КАК Договоры
|ГДЕ |ГДЕ
| НЕ Договоры.ПометкаУдаления | НЕ Договоры.ПометкаУдаления
| И НЕ Договоры.ВАрхиве
| И Договоры.Контрагент В (&Контрагенты) | И Договоры.Контрагент В (&Контрагенты)
|УПОРЯДОЧИТЬ ПО |УПОРЯДОЧИТЬ ПО
| Договоры.Контрагент"; | Договоры.Контрагент";
@@ -290,6 +375,10 @@
Выборка = Запрос.Выполнить().Выбрать(); Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл Пока Выборка.Следующий() Цикл
Если НЕ ОрганизацияДоговораПодходит(Выборка.Организация, ОрганизацииКонтрагентов[Выборка.Контрагент]) Тогда
Продолжить;
КонецЕсли;
ДоговорыКонтрагента = Найденные[Выборка.Контрагент]; ДоговорыКонтрагента = Найденные[Выборка.Контрагент];
Если ДоговорыКонтрагента = Неопределено Тогда Если ДоговорыКонтрагента = Неопределено Тогда
ДоговорыКонтрагента = Новый Массив; ДоговорыКонтрагента = Новый Массив;
@@ -313,6 +402,29 @@
КонецПроцедуры КонецПроцедуры
// Проверяет, что договор относится к организации ребёнка.
//
// При переводе ребёнка из сада в сад по нему остаются договоры прежних учреждений,
// поэтому договор без проверки организации выбирается неверно.
//
// Параметры:
// ОрганизацияДоговора - СправочникСсылка.Организации - организация, указанная в договоре.
// ОрганизацияРебенка - СправочникСсылка.Организации - текущая организация ребёнка;
// пустая ссылка или Неопределено - отбор по организации не применяется.
//
// Возвращаемое значение:
// Булево - Истина, если договор подходит; Ложь - если относится к другой организации.
//
Функция ОрганизацияДоговораПодходит(ОрганизацияДоговора, ОрганизацияРебенка)
Если НЕ ЗначениеЗаполнено(ОрганизацияРебенка) Тогда
Возврат Истина;
КонецЕсли;
Возврат ОрганизацияДоговора = ОрганизацияРебенка;
КонецФункции
// Заполняет реквизиты строк расшифровки платежа по результатам разбора назначения. // Заполняет реквизиты строк расшифровки платежа по результатам разбора назначения.
// КОСГУ "000", проставленный типовой загрузкой реестров, заменяется принудительно; // КОСГУ "000", проставленный типовой загрузкой реестров, заменяется принудительно;
// остальные заполненные значения не перезаписываются. // остальные заполненные значения не перезаписываются.
@@ -323,11 +435,14 @@
// договоры, определённые по контрагентам однозначно. // договоры, определённые по контрагентам однозначно.
// СчетРасчетов - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы. // СчетРасчетов - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы.
// КОСГУНазначениеПлатежа - СправочникСсылка.КОСГУ - КОСГУ назначения платежа. // КОСГУНазначениеПлатежа - СправочникСсылка.КОСГУ - КОСГУ назначения платежа.
// КФОПоСчетам - Соответствие из Строка, ПеречислениеСсылка.КВД - КФО по номерам
// лицевых счетов, см. КФОПоЛицевымСчетам.
// //
// Возвращаемое значение: // Возвращаемое значение:
// Число - количество заполненных строк расшифровки платежа. // Число - количество заполненных строк расшифровки платежа.
// //
Функция ЗаполнитьСтрокиРасшифровки(СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа) Функция ЗаполнитьСтрокиРасшифровки(СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа,
КФОПоСчетам = Неопределено)
// Типовая загрузка реестров прописывает в КОСГУ назначения платежа код "000" - // Типовая загрузка реестров прописывает в КОСГУ назначения платежа код "000" -
// для родительской платы его нужно заменить принудительно. // для родительской платы его нужно заменить принудительно.
@@ -359,6 +474,10 @@
СтрокаРасшифровки.КОСГУНазначениеПлатежа = КОСГУНазначениеПлатежа; СтрокаРасшифровки.КОСГУНазначениеПлатежа = КОСГУНазначениеПлатежа;
КонецЕсли; КонецЕсли;
Если НЕ ЗначениеЗаполнено(СтрокаРасшифровки.КФО) И КФОПоСчетам <> Неопределено Тогда
СтрокаРасшифровки.КФО = КФОСтрокиПоЛицевомуСчету(КФОПоСчетам, СтрокаКЗаполнению.ЛицевойСчет);
КонецЕсли;
Заполнено = Заполнено + 1; Заполнено = Заполнено + 1;
КонецЦикла; КонецЦикла;
@@ -367,6 +486,108 @@
КонецФункции КонецФункции
// Определяет КФО для лицевых счетов строк документа.
//
// КФО задаётся на разделе лицевого счёта (табличная часть "Допустимые КФО"). Список допустимых
// значений получаем типовой функцией, она же упорядочивает их по порядку перечисления КВД.
// Как и в типовых формах, берётся первое допустимое значение: если у счёта разрешено несколько
// КФО, подставляется значение с наименьшим порядком, остальные бухгалтер может выбрать вручную.
//
// Параметры:
// СтрокиКЗаполнению - Массив из Структура - строки, по которым определён ребёнок и контрагент.
//
// Возвращаемое значение:
// Соответствие из Строка, ПеречислениеСсылка.КВД - КФО по номерам лицевых счетов,
// по которым допустимый КФО определён.
//
Функция КФОПоЛицевымСчетам(СтрокиКЗаполнению)
Результат = Новый Соответствие;
Коды = Новый Массив;
Для Каждого СтрокаКЗаполнению Из СтрокиКЗаполнению Цикл
Для Каждого Код Из КодыПоискаРебенка(СтрокаКЗаполнению.ЛицевойСчет) Цикл
Коды.Добавить(Код);
КонецЦикла;
КонецЦикла;
Если Коды.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
Для Каждого ЛицевойСчет Из ЛицевыеСчетаПоКодам(Коды) Цикл
ДопустимыеКФО = ПлатежноРасчетныеДокументыПовтИсп.ДопустимыеКФО(, ЛицевойСчет.Значение);
Если ДопустимыеКФО.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
Результат.Вставить(ЛицевойСчет.Ключ, ДопустимыеКФО[0]);
КонецЦикла;
Возврат Результат;
КонецФункции
// Возвращает КФО строки по номеру лицевого счёта, распознанному в назначении платежа.
//
// Параметры:
// КФОПоСчетам - Соответствие из Строка, ПеречислениеСсылка.КВД - КФО по номерам лицевых счетов.
// ЛицевойСчет - Строка - лицевой счёт, распознанный в назначении платежа.
//
// Возвращаемое значение:
// ПеречислениеСсылка.КВД - КФО строки; пустая ссылка, если КФО определить не удалось.
//
Функция КФОСтрокиПоЛицевомуСчету(КФОПоСчетам, ЛицевойСчет)
Для Каждого Код Из КодыПоискаРебенка(ЛицевойСчет) Цикл
КФО = КФОПоСчетам[Код];
Если КФО <> Неопределено Тогда
Возврат КФО;
КонецЕсли;
КонецЦикла;
Возврат Перечисления.КВД.ПустаяСсылка();
КонецФункции
// Возвращает лицевые счета по их номерам.
//
// Параметры:
// Коды - Массив из Строка - номера лицевых счетов (варианты написания).
//
// Возвращаемое значение:
// Соответствие из Строка, СправочникСсылка.ЛицевыеСчета - лицевые счета по номерам.
//
Функция ЛицевыеСчетаПоКодам(Коды)
Результат = Новый Соответствие;
Если Коды.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЛицевыеСчета.Код КАК Код,
| ЛицевыеСчета.Ссылка КАК Ссылка
|ИЗ
| Справочник.ЛицевыеСчета КАК ЛицевыеСчета
|ГДЕ
| НЕ ЛицевыеСчета.ПометкаУдаления
| И ЛицевыеСчета.Код В (&Коды)";
Запрос.УстановитьПараметр("Коды", Коды);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Результат.Вставить(СокрЛП(Выборка.Код), Выборка.Ссылка);
КонецЦикла;
Возврат Результат;
КонецФункции
// Определяет лицевой счёт ребёнка по тексту назначения платежа. // Определяет лицевой счёт ребёнка по тексту назначения платежа.
// Лицевой счёт идёт после последнего вхождения "л/с" и может начинаться с буквы "Х" или "Г". // Лицевой счёт идёт после последнего вхождения "л/с" и может начинаться с буквы "Х" или "Г".
// //
@@ -412,6 +633,29 @@
КонецФункции КонецФункции
// Убирает префикс "л/с" (в любом регистре и написании) из значения части назначения платежа.
//
// Параметры:
// Значение - Строка - часть назначения платежа, например "л/с 03003001079".
//
// Возвращаемое значение:
// Строка - значение без префикса и лишних пробелов.
//
Функция УбратьПрефиксЛицевогоСчета(Значение)
Текст = СокрЛП(Значение);
ВерхнийРегистр = ВРЕГ(Текст);
Если Лев(ВерхнийРегистр, 3) = "Л/С" Тогда
Возврат СокрЛП(Сред(Текст, 4));
ИначеЕсли Лев(ВерхнийРегистр, 2) = "ЛС" Тогда
Возврат СокрЛП(Сред(Текст, 3));
КонецЕсли;
Возврат Текст;
КонецФункции
// Возвращает ФИО ребёнка из текста назначения платежа (4-я часть, разделитель - запятая). // Возвращает ФИО ребёнка из текста назначения платежа (4-я часть, разделитель - запятая).
// Для поиска используется пара "Фамилия Имя", как в реестрах. // Для поиска используется пара "Фамилия Имя", как в реестрах.
// //
@@ -488,7 +732,8 @@
| Дети.Код КАК Код, | Дети.Код КАК Код,
| Дети.Ссылка КАК Ссылка, | Дети.Ссылка КАК Ссылка,
| Дети.Наименование КАК Наименование, | Дети.Наименование КАК Наименование,
| Дети.Контрагент КАК Контрагент | Дети.Контрагент КАК Контрагент,
| Дети.Организация КАК Организация
|ИЗ |ИЗ
| Справочник.Дети КАК Дети | Справочник.Дети КАК Дети
|ГДЕ |ГДЕ
@@ -498,8 +743,12 @@
Выборка = Запрос.Выполнить().Выбрать(); Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл Пока Выборка.Следующий() Цикл
Результат.Вставить(СокрЛП(Выборка.Код), Новый Структура("Ссылка, Наименование, Контрагент", Ребенок = Новый Структура;
Выборка.Ссылка, Выборка.Наименование, Выборка.Контрагент)); Ребенок.Вставить("Ссылка", Выборка.Ссылка);
Ребенок.Вставить("Наименование", Выборка.Наименование);
Ребенок.Вставить("Контрагент", Выборка.Контрагент);
Ребенок.Вставить("Организация", Выборка.Организация);
Результат.Вставить(СокрЛП(Выборка.Код), Ребенок);
КонецЦикла; КонецЦикла;
Возврат Результат; Возврат Результат;
@@ -1,62 +1,9 @@
// ПС_УчетРодительскойПлаты: общая логика учёта родительской платы // ПС_УчетРодительскойПлаты: общая логика учёта родительской платы
// для документов ПС_ПередачаЗадолженностиВЦБ и ПС_ПринятиеЗадолженностиОтУчреждения. // для документов ПС_ПередачаПоступившихПлатежейВУчреждения (ЦБ) и ПС_ПринятиеПоступившихПлатежейИзЦБ (учреждение).
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс #Область ПрограммныйИнтерфейс
// Заполняет КФО документа и КПС строк табличной части "Задолженность" реквизитами учёта,
// определёнными по проводкам документа-источника.
//
// КПС берётся со стороны счёта расчётов по доходам (205.31) - он переносится вместе
// с задолженностью, поэтому одинаков для дебета и кредита проводки передачи.
//
// Параметры:
// ДокументОбъект - ДокументОбъект.ПС_ПередачаЗадолженностиВЦБ, ДокументОбъект.ПС_ПринятиеЗадолженностиОтУчреждения - документ, реквизиты учёта которого заполняются.
// ДокументИсточник - ДокументСсылка.НачислениеРодительскойПлаты, ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ - проведённый документ, проводки которого используются как источник данных.
//
// Возвращаемое значение:
// Булево - Истина, если реквизиты заполнены; Ложь, если у документа-источника нет проводок по счёту расчётов по доходам.
//
Функция ЗаполнитьРеквизитыУчетаПоПроводкам(ДокументОбъект, ДокументИсточник) Экспорт
Если НЕ ЗначениеЗаполнено(ДокументИсточник) Тогда
Возврат Ложь;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| Проводки.КФО КАК КФО,
| ВЫБОР
| КОГДА Проводки.СчетДт.Код = ""205.31""
| ТОГДА Проводки.КПСДт
| ИНАЧЕ Проводки.КПСКт
| КОНЕЦ КАК КПС
|ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ДвиженияССубконто КАК Проводки
|ГДЕ
| Проводки.Регистратор = &ДокументИсточник
| И (Проводки.СчетДт.Код = ""205.31""
| ИЛИ Проводки.СчетКт.Код = ""205.31"")
|
|УПОРЯДОЧИТЬ ПО
| Проводки.НомерСтроки";
Запрос.УстановитьПараметр("ДокументИсточник", ДокументИсточник);
Выборка = Запрос.Выполнить().Выбрать();
Если НЕ Выборка.Следующий() Тогда
Возврат Ложь;
КонецЕсли;
ДокументОбъект.КФО = Выборка.КФО;
Для Каждого СтрокаЗадолженности Из ДокументОбъект.Задолженность Цикл
СтрокаЗадолженности.КПС = Выборка.КПС;
КонецЦикла;
Возврат Истина;
КонецФункции
// Возвращает счёт, корреспондирующий со счётом расчётов по доходам (205.31), // Возвращает счёт, корреспондирующий со счётом расчётов по доходам (205.31),
// по умолчанию: 304.04 (внутриведомственные расчёты). // по умолчанию: 304.04 (внутриведомственные расчёты).
// //
@@ -94,15 +41,17 @@
// Формирует печатную форму извещения (ф. 0504805, ред. 103н) по документу подсистемы. // Формирует печатную форму извещения (ф. 0504805, ред. 103н) по документу подсистемы.
// //
// Вёрстка и набор областей повторяют типовую печатную форму документа ИзвещениеИсходящее. // Вёрстка и набор областей повторяют типовую печатную форму документа ИзвещениеИсходящее.
// Заполняется та сторона, от которой печатается извещение: для передачи задолженности - // Заполняется та сторона, от которой печатается извещение: для передачи поступивших платежей -
// отправитель (учреждение), для принятия - получатель (централизованная бухгалтерия). // отправитель (централизованная бухгалтерия), для принятия платежей - получатель (учреждение).
// Суммы и счета берутся из проводок документа, поэтому печатается только проведённый документ. // Данные берутся из табличной части "Задолженность", поэтому печатается и непроведённый документ.
// //
// Параметры: // Параметры:
// ДокументСсылка - ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ, ДокументСсылка.ПС_ПринятиеЗадолженностиОтУчреждения - печатаемый документ. // ДокументСсылка - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения,
// ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ - печатаемый документ.
// //
// Возвращаемое значение: // Возвращаемое значение:
// ТабличныйДокумент - печатная форма; пустой табличный документ, если документ не записан, не проведён, нет проводок или не найден макет. // ТабличныйДокумент - печатная форма; пустой табличный документ, если документ не записан,
// в нём нет строк или не найден макет.
// //
Функция ПечатьИзвещения0504805(ДокументСсылка) Экспорт Функция ПечатьИзвещения0504805(ДокументСсылка) Экспорт
@@ -122,57 +71,587 @@
Возврат ТабличныйДокумент; Возврат ТабличныйДокумент;
КонецЕсли; КонецЕсли;
Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ") Тогда Проводки = ДанныеИзвещенияПоРеестру(ДокументОбъект);
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПС_ПередачаЗадолженностиВЦБ_Извещение0504805"; Если Проводки.Количество() = 0 Тогда
Макет = Документы.ПС_ПередачаЗадолженностиВЦБ.ПолучитьМакет("ПФ_MXL_Извещение0504805_103н_ПС_РП"); ОбщегоНазначения.СообщитьПользователю(
СторонаПечати = "Отправитель"; "Печатная форма извещения не сформирована: в документе нет строк с платежами.");
Отправитель = ДокументОбъект.Организация; Возврат ТабличныйДокумент;
Получатель = ДокументОбъект.ЦБ; КонецЕсли;
Пояснение = "Передача задолженности по родительской плате за "
+ Формат(ДокументОбъект.Период, "ДФ=MMMM yyyy") Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ") Тогда
+ ". Основание: " + Строка(ДокументОбъект.ДокументНачисления) + ".";
// Учреждение принимает поступившие платежи из ЦБ: печатается сторона получателя.
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПС_ПринятиеПоступившихПлатежейИзЦБ_Извещение0504805";
Макет = Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.ПолучитьМакет("ПФ_MXL_Извещение0504805_103н_ПС_РП");
Если Макет = Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю(
"Печатная форма извещения не сформирована: в документе не найден макет печатной формы.");
Возврат ТабличныйДокумент;
КонецЕсли;
ДокументПередачи = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументСсылка, "ДокументПередачи").ДокументПередачи;
Отправитель = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументПередачи, "Организация").Организация;
ПараметрыИзвещения = НоваяСтруктураИзвещения("Получатель", Отправитель,
ДокументОбъект.Организация,
"Принятие поступивших платежей по родительской плате за "
+ Формат(ДокументОбъект.Период, "ДФ=MMMM yyyy")
+ ". Основание: " + Строка(ДокументПередачи) + ".");
ВывестиИзвещение(ТабличныйДокумент, Макет, ДокументСсылка, ДокументОбъект, ПараметрыИзвещения, Проводки);
Иначе Иначе
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПС_ПринятиеЗадолженности_Извещение0504805";
Макет = Документы.ПС_ПринятиеЗадолженностиОтУчреждения.ПолучитьМакет("ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель"); // ЦБ передаёт поступившие платежи: печатается сторона отправителя.
СторонаПечати = "Получатель"; // Документ адресный, поэтому извещение одно - по учреждению документа.
Отправитель = ДокументОбъект.Учреждение; ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПС_ПередачаПоступившихПлатежейВУчреждения_Извещение0504805";
Получатель = ДокументОбъект.Организация; Макет = Документы.ПС_ПередачаПоступившихПлатежейВУчреждения.ПолучитьМакет("ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель");
Пояснение = "Принятие задолженности по родительской плате за " Если Макет = Неопределено Тогда
+ Формат(ДокументОбъект.Период, "ДФ=MMMM yyyy") ОбщегоНазначения.СообщитьПользователю(
+ ". Основание: " + Строка(ДокументОбъект.ДокументПередачи) + "."; "Печатная форма извещения не сформирована: в документе не найден макет печатной формы.");
Возврат ТабличныйДокумент;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ДокументОбъект.Учреждение) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Печатная форма извещения не сформирована: не заполнено учреждение (получатель).");
Возврат ТабличныйДокумент;
КонецЕсли;
ПараметрыИзвещения = НоваяСтруктураИзвещения("Отправитель", ДокументОбъект.Организация,
ДокументОбъект.Учреждение,
"Передача поступивших платежей по родительской плате за "
+ Формат(ДокументОбъект.Период, "ДФ=MMMM yyyy")
+ ". Основание: " + Строка(ДокументСсылка) + ".");
ВывестиИзвещение(ТабличныйДокумент, Макет, ДокументСсылка, ДокументОбъект, ПараметрыИзвещения, Проводки);
КонецЕсли;
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, 1, Новый СписокЗначений, ДокументСсылка);
Возврат ТабличныйДокумент;
КонецФункции
// Формирует печатную форму реестра поступивших платежей по документу подсистемы.
//
// Реестр строится по табличной части "Задолженность" и не зависит от проводок документа,
// поэтому печатается и непроведённый документ.
//
// Параметры:
// ДокументСсылка - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения,
// ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ - печатаемый документ.
//
// Возвращаемое значение:
// ТабличныйДокумент - печатная форма реестра; пустой табличный документ, если документ
// не записан, не содержит строк или в документе нет макета.
//
Функция ПечатьРеестраПлатежей(ДокументСсылка) Экспорт
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Если НЕ ЗначениеЗаполнено(ДокументСсылка) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Печатная форма реестра не сформирована: документ не записан в базу."
+ " Запишите документ и повторите печать.");
Возврат ТабличныйДокумент;
КонецЕсли;
ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
Если ДокументОбъект = Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю(
"Печатная форма реестра не сформирована: не удалось прочитать документ.");
Возврат ТабличныйДокумент;
КонецЕсли;
Если ДокументОбъект.Задолженность.Количество() = 0 Тогда
ОбщегоНазначения.СообщитьПользователю(
"Печатная форма реестра не сформирована: в документе нет строк с платежами.");
Возврат ТабличныйДокумент;
КонецЕсли;
// Макет общий для обоих документов: реестр у ЦБ и у сада одинаковый,
// поэтому сопровождается в одном месте - общем макете.
Макет = ПолучитьОбщийМакет("ПС_РеестрПлатежей");
Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ") Тогда
Учреждение = ДокументОбъект.Организация;
Иначе
Учреждение = ДокументОбъект.Учреждение;
КонецЕсли; КонецЕсли;
Если Макет = Неопределено Тогда Если Макет = Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю( ОбщегоНазначения.СообщитьПользователю(
"Печатная форма извещения не сформирована: в документе не найден макет печатной формы."); "Печатная форма реестра не сформирована: в документе не найден макет печатной формы.");
Возврат ТабличныйДокумент; Возврат ТабличныйДокумент;
КонецЕсли; КонецЕсли;
Если НЕ ДокументОбъект.Проведен Тогда ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбщегоНазначения.СообщитьПользователю( ОбластьЗаголовок.Параметры.ЗаголовокРеестра =
"Печатная форма извещения формируется по проводкам документа, поэтому печатается" "Реестр поступивших платежей по родительской плате за "
+ " только проведённый документ. Проведите документ и повторите печать."); + Формат(ДокументОбъект.Период, "ДФ='MMMM yyyy'");
Возврат ТабличныйДокумент; ОбластьЗаголовок.Параметры.РеквизитыДокумента =
"Документ № " + ДокументОбъект.Номер + " от " + Формат(ДокументОбъект.Дата, "ДЛФ=DD")
+ ", " + Строка(Учреждение);
ТабличныйДокумент.Вывести(ОбластьЗаголовок);
ТабличныйДокумент.Вывести(Макет.ПолучитьОбласть("ОбластьШапкаТаблицы"));
ОбластьСтрока = Макет.ПолучитьОбласть("ОбластьСтрокаТаблицы");
ИтогоСумма = 0;
Для Каждого СтрокаРеестра Из ДокументОбъект.Задолженность Цикл
ОбластьСтрока.Параметры.Плательщик = СтрокаРеестра.Контрагент;
ОбластьСтрока.Параметры.Сумма = СтрокаРеестра.Сумма;
ОбластьСтрока.Параметры.ЛицевойСчет = СтрокаРеестра.ЛицевойСчет;
ОбластьСтрока.Параметры.Ребенок = СтрокаРеестра.Ребенок;
ОбластьСтрока.Параметры.НазначениеПлатежа = СтрокаРеестра.НазначениеПлатежа;
ОбластьСтрока.Параметры.Организация = Учреждение;
ОбластьСтрока.Параметры.РассчетныйСчет = СтрокаРеестра.РасчетныйСчет;
ОбластьСтрока.Параметры.Группа = СтрокаРеестра.Группа;
ОбластьСтрока.Параметры.Период = СтрокаРеестра.ПериодОплаты;
ОбластьСтрока.Параметры.ДатаПлатежа = СтрокаРеестра.ДатаПлатежа;
ТабличныйДокумент.Вывести(ОбластьСтрока);
ИтогоСумма = ИтогоСумма + СтрокаРеестра.Сумма;
КонецЦикла;
ОбластьПодвал = Макет.ПолучитьОбласть("ОбластьПодвалТаблицы");
ОбластьПодвал.Параметры.ОбщаяСумма = ИтогоСумма;
ТабличныйДокумент.Вывести(ОбластьПодвал);
Возврат ТабличныйДокумент;
КонецФункции
// Создаёт (или перезаполняет) исходящее извещение ф. 0504805 по документу передачи платежей.
//
// Извещение создаётся как обёртка: заполняются шапка и табличная часть "Передаваемые проводки"
// (она же данные печати), документ не проводится - бухгалтерские проводки остаются в документе
// передачи. Извещение служит носителем шапки, связей и данных для электронного документооборота.
//
// Параметры:
// ДокументПередачи - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения - документ-основание.
//
// Возвращаемое значение:
// ДокументСсылка.ИзвещениеИсходящее - созданное или перезаполненное извещение;
// пустая ссылка, если извещение проведено.
//
Функция СоздатьИзвещениеПоПередаче(ДокументПередачи) Экспорт
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументПередачи,
"Организация, Учреждение, ИФО, Период, Ответственный, ИзвещениеИсходящее");
ИзвещениеОбъект = Неопределено;
ЭтоНовоеИзвещение = Истина;
Если ЗначениеЗаполнено(Реквизиты.ИзвещениеИсходящее) Тогда
ИзвещениеОбъект = Реквизиты.ИзвещениеИсходящее.ПолучитьОбъект();
ЭтоНовоеИзвещение = ИзвещениеОбъект = Неопределено;
КонецЕсли; КонецЕсли;
Проводки = ПроводкиИзвещения(ДокументСсылка); Если ЭтоНовоеИзвещение Тогда
Если Проводки.Количество() = 0 Тогда ИзвещениеОбъект = Документы.ИзвещениеИсходящее.СоздатьДокумент();
ИначеЕсли ИзвещениеОбъект.ПомеченНаУдаление Тогда
ОбщегоНазначения.СообщитьПользователю( ОбщегоНазначения.СообщитьПользователю(
"По документу не найдено проводок в регистре бухгалтерии - печатная форма" "Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " помечено на удаление: изменения в него не вносятся."
+ " извещения не сформирована."); + " Снимите пометку удаления или отвяжите извещение от документа передачи.");
Возврат ТабличныйДокумент; Возврат Документы.ИзвещениеИсходящее.ПустаяСсылка();
ИначеЕсли ИзвещениеОбъект.Проведен Тогда
ОбщегоНазначения.СообщитьПользователю(
"Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " проведено: изменения в него не вносятся."
+ " Распроведите извещение или отвяжите его от документа передачи.");
Возврат Документы.ИзвещениеИсходящее.ПустаяСсылка();
КонецЕсли; КонецЕсли;
Если ЭтоНовоеИзвещение Тогда
ИзвещениеОбъект.Дата = ТекущаяДатаСеанса();
КонецЕсли;
ИзвещениеОбъект.Организация = Реквизиты.Организация;
ИзвещениеОбъект.Получатель = КонтрагентПоОрганизации(Реквизиты.Учреждение);
ИзвещениеОбъект.ВидИзвещения = Перечисления.ВидыОперацийИсходящееИзвещение.ПолучениеДохода;
ИзвещениеОбъект.ИФО = Реквизиты.ИФО;
ИзвещениеОбъект.Ответственный = Реквизиты.Ответственный;
ИзвещениеОбъект.Комментарий =
"Передача поступивших платежей по родительской плате за "
+ Формат(Реквизиты.Период, "ДФ='MMMM yyyy'")
+ ". Основание: " + Строка(ДокументПередачи) + ".";
ЗаполнитьПроводкиИзвещения(ИзвещениеОбъект, ДокументПередачи);
ИзвещениеОбъект.Записать(РежимЗаписиДокумента.Запись);
Возврат ИзвещениеОбъект.Ссылка;
КонецФункции
// Создаёт (или перезаполняет) входящее извещение ф. 0504805 по документу принятия платежей.
//
// Извещение создаётся как обёртка: заполняются шапка и табличная часть "Передаваемые проводки",
// документ не проводится - проводки формирует документ принятия.
//
// Параметры:
// ДокументПринятия - ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ - документ-основание.
//
// Возвращаемое значение:
// ДокументСсылка.ИзвещениеВходящее - созданное или перезаполненное извещение;
// пустая ссылка, если извещение проведено.
//
Функция СоздатьИзвещениеПоПринятию(ДокументПринятия) Экспорт
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументПринятия,
"Организация, ЦБ, ИФО, Период, Ответственный, ИзвещениеВходящее, ДокументПередачи");
ИзвещениеОбъект = Неопределено;
ЭтоНовоеИзвещение = Истина;
Если ЗначениеЗаполнено(Реквизиты.ИзвещениеВходящее) Тогда
ИзвещениеОбъект = Реквизиты.ИзвещениеВходящее.ПолучитьОбъект();
ЭтоНовоеИзвещение = ИзвещениеОбъект = Неопределено;
КонецЕсли;
Если ЭтоНовоеИзвещение Тогда
ИзвещениеОбъект = Документы.ИзвещениеВходящее.СоздатьДокумент();
ИначеЕсли ИзвещениеОбъект.ПомеченНаУдаление Тогда
ОбщегоНазначения.СообщитьПользователю(
"Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " помечено на удаление: изменения в него не вносятся."
+ " Снимите пометку удаления или отвяжите извещение от документа принятия.");
Возврат Документы.ИзвещениеВходящее.ПустаяСсылка();
ИначеЕсли ИзвещениеОбъект.Проведен Тогда
ОбщегоНазначения.СообщитьПользователю(
"Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " проведено: изменения в него не вносятся."
+ " Распроведите извещение или отвяжите его от документа принятия.");
Возврат Документы.ИзвещениеВходящее.ПустаяСсылка();
КонецЕсли;
Если ЭтоНовоеИзвещение Тогда
ИзвещениеОбъект.Дата = ТекущаяДатаСеанса();
КонецЕсли;
ИзвещениеОбъект.Организация = Реквизиты.Организация;
ИзвещениеОбъект.Отправитель = КонтрагентПоОрганизации(Реквизиты.ЦБ);
ИзвещениеОбъект.ВидИзвещения = Перечисления.ВидыОперацийВходящееИзвещение.ПолучениеДохода;
ИзвещениеОбъект.ИФО = Реквизиты.ИФО;
ИзвещениеОбъект.Ответственный = Реквизиты.Ответственный;
ИзвещениеОбъект.Комментарий =
"Принятие поступивших платежей по родительской плате за "
+ Формат(Реквизиты.Период, "ДФ='MMMM yyyy'")
+ ". Основание: " + Строка(ДокументПринятия) + ".";
Если ЗначениеЗаполнено(Реквизиты.ДокументПередачи) Тогда
ИзвещениеОбъект.ДокументОснование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Реквизиты.ДокументПередачи, "ИзвещениеИсходящее");
КонецЕсли;
ЗаполнитьПроводкиИзвещения(ИзвещениеОбъект, ДокументПринятия);
ИзвещениеОбъект.Записать(РежимЗаписиДокумента.Запись);
Возврат ИзвещениеОбъект.Ссылка;
КонецФункции
// Синхронизирует связанное извещение с изменившимся документом подсистемы.
//
// Вызывается из обработчика записи документов передачи и принятия платежей: извещение
// перезаполняется по актуальным строкам реестра, чтобы его печатная форма не разошлась
// с учётным документом. Проведённое извещение и извещение, помеченное на удаление,
// не изменяются - такие документы пользователь приводит в порядок сам.
//
// Параметры:
// ДокументОбъект - ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения,
// ДокументОбъект.ПС_ПринятиеПоступившихПлатежейИзЦБ - записываемый документ.
//
Процедура ОбновитьИзвещениеПриИзмененииДокумента(ДокументОбъект) Экспорт
Если ДокументОбъект.ЭтоНовый() Тогда
Возврат;
КонецЕсли;
ЭтоПередача = ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения");
Извещение = ?(ЭтоПередача, ДокументОбъект.ИзвещениеИсходящее, ДокументОбъект.ИзвещениеВходящее);
Если НЕ ЗначениеЗаполнено(Извещение) Тогда
Возврат;
КонецЕсли;
СостояниеИзвещения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Извещение,
"Проведен, ПометкаУдаления");
Если СостояниеИзвещения.Проведен ИЛИ СостояниеИзвещения.ПометкаУдаления Тогда
Возврат;
КонецЕсли;
Если ЭтоПередача Тогда
СоздатьИзвещениеПоПередаче(ДокументОбъект.Ссылка);
Иначе
СоздатьИзвещениеПоПринятию(ДокументОбъект.Ссылка);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Заполняет табличную часть "Передаваемые проводки" извещения по строкам реестра документа.
//
// Строки отражают операцию зачисления в доход бюджета: Дт 303.05 (КЭК 831) - Кт 205.31 (КЭК 660).
// КПС берётся из строки реестра, КФО - из шапки документа.
//
// Параметры:
// ИзвещениеОбъект - ДокументОбъект.ИзвещениеИсходящее, ДокументОбъект.ИзвещениеВходящее - заполняемое извещение.
// ДокументСсылка - ДокументСсылка - документ подсистемы, по строкам которого заполняется извещение.
//
Процедура ЗаполнитьПроводкиИзвещения(ИзвещениеОбъект, ДокументСсылка)
ИзвещениеОбъект.ПередаваемыеПроводки.Очистить();
ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
Если ДокументОбъект = Неопределено Тогда
Возврат;
КонецЕсли;
СчетДт = БухгалтерскийУчет.СчетПоКоду("303.05", ДокументОбъект.Дата, ДокументОбъект.Организация);
СчетКт = БухгалтерскийУчет.СчетПоКоду("205.31", ДокументОбъект.Дата, ДокументОбъект.Организация);
КЭКДт = Справочники.КОСГУ.НайтиПоКоду("831");
КЭККт = Справочники.КОСГУ.НайтиПоКоду("660");
Для Каждого СтрокаРеестра Из ДокументОбъект.Задолженность Цикл
Проводка = ИзвещениеОбъект.ПередаваемыеПроводки.Добавить();
Проводка.КФО = ДокументОбъект.КФО;
Проводка.СчетДт = СчетДт;
Проводка.КПСДт = СтрокаРеестра.КПС;
Проводка.КЭКДт = КЭКДт;
Проводка.СчетКт = СчетКт;
Проводка.КПСКт = СтрокаРеестра.КПС;
Проводка.КЭККт = КЭККт;
Проводка.Сумма = СтрокаРеестра.Сумма;
Проводка.Содержание = "Поступление родительской платы";
КонецЦикла;
КонецПроцедуры
// Возвращает контрагента, соответствующего организации, для подстановки в извещение.
//
// Параметры:
// Организация - СправочникСсылка.Организации - организация (сад или централизованная бухгалтерия).
//
// Возвращаемое значение:
// СправочникСсылка.Контрагенты - контрагент организации; пустая ссылка, если соответствие не найдено.
//
Функция КонтрагентПоОрганизации(Организация)
Если НЕ ЗначениеЗаполнено(Организация) Тогда
Возврат Справочники.Контрагенты.ПустаяСсылка();
КонецЕсли;
Контрагент = БюджетнаяОтчетностьПолучениеНСИ.КонтрагентПоОрганизации(Организация);
Если ЗначениеЗаполнено(Контрагент) Тогда
Возврат Контрагент;
КонецЕсли;
// Штатный подбор сравнивает одновременно ИНН, КПП и бюджет организации с реквизитами
// юридического лица контрагента. Если КПП или бюджет расходятся, контрагент не находится -
// подбираем по ИНН и уточняем по КПП и бюджету.
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Организация, "ИНН, КПП, Бюджет");
Если НЕ ЗначениеЗаполнено(Реквизиты.ИНН) Тогда
ОбщегоНазначения.СообщитьПользователю(
"У организации " + Строка(Организация) + " не заполнен ИНН:"
+ " контрагент для извещения не подобран, заполните его вручную.");
Возврат Справочники.Контрагенты.ПустаяСсылка();
КонецЕсли;
Кандидаты = КонтрагентыПоИНН(Реквизиты.ИНН);
Контрагент = ОтобратьКонтрагента(Кандидаты, Реквизиты);
Если ЗначениеЗаполнено(Контрагент) Тогда
Возврат Контрагент;
КонецЕсли;
ВсеПомеченные = Кандидаты.Количество() > 0;
Для Каждого Кандидат Из Кандидаты Цикл
Если НЕ Кандидат.ПометкаУдаления Тогда
ВсеПомеченные = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
Если ВсеПомеченные Тогда
ОбщегоНазначения.СообщитьПользователю(
"Для организации " + Строка(Организация)
+ " найден только контрагент, помеченный на удаление: снимите пометку удаления"
+ " или заведите действующего контрагента.");
Возврат Справочники.Контрагенты.ПустаяСсылка();
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(СтрШаблон(
"Для организации %1 не найден контрагент: ИНН %2, КПП %3, кандидатов по ИНН - %4."
+ " Проверьте КПП и бюджет в юридическом лице контрагента или заполните контрагента вручную.",
Строка(Организация), Реквизиты.ИНН,
?(ЗначениеЗаполнено(Реквизиты.КПП), Реквизиты.КПП, "<не заполнен>"), Кандидаты.Количество()));
Возврат Справочники.Контрагенты.ПустаяСсылка();
КонецФункции
// Возвращает контрагентов-юрлиц с указанным ИНН (без помеченных на удаление).
//
// Параметры:
// ИНН - Строка - ИНН организации.
//
// Возвращаемое значение:
// Массив из Структура - кандидаты: Контрагент, КПП, Бюджет.
//
Функция КонтрагентыПоИНН(ИНН)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Ссылка КАК Контрагент,
| ЮридическиеЛица.КПП КАК КПП,
| ЮридическиеЛица.Бюджет КАК Бюджет,
| Контрагенты.ПометкаУдаления КАК ПометкаУдаления
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ЮридическиеЛица КАК ЮридическиеЛица
| ПО Контрагенты.ЮридическоеФизическоеЛицо = ЮридическиеЛица.Ссылка
|ГДЕ
| Контрагенты.ВидКонтрагента = &ВидКонтрагента
| И ЮридическиеЛица.ИНН = &ИНН";
Запрос.УстановитьПараметр("ВидКонтрагента", Перечисления.ЮрФизЛицо.ЮрЛицо);
Запрос.УстановитьПараметр("ИНН", ИНН);
Кандидаты = Новый Массив;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Кандидаты.Добавить(Новый Структура("Контрагент, КПП, Бюджет, ПометкаУдаления",
Выборка.Контрагент, Выборка.КПП, Выборка.Бюджет, Выборка.ПометкаУдаления));
КонецЦикла;
Возврат Кандидаты;
КонецФункции
// Выбирает контрагента из кандидатов по ИНН, уточняя по КПП и бюджету организации.
//
// Параметры:
// Кандидаты - Массив из Структура - кандидаты, найденные по ИНН.
// Реквизиты - Структура - реквизиты организации: ИНН, КПП, Бюджет.
//
// Возвращаемое значение:
// СправочникСсылка.Контрагенты - единственный подходящий контрагент;
// пустая ссылка, если однозначно выбрать нельзя.
//
Функция ОтобратьКонтрагента(Кандидаты, Реквизиты)
// Помеченные на удаление в работу не принимаются: из них можно только подсказать причину.
Рабочие = Новый Массив;
Для Каждого Кандидат Из Кандидаты Цикл
Если НЕ Кандидат.ПометкаУдаления Тогда
Рабочие.Добавить(Кандидат);
КонецЕсли;
КонецЦикла;
Если Рабочие.Количество() = 0 Тогда
Возврат Справочники.Контрагенты.ПустаяСсылка();
КонецЕсли;
// ИНН уникален для организации: единственный кандидат принимается без уточнений,
// даже если КПП в юридическом лице контрагента отличается.
Если Рабочие.Количество() = 1 Тогда
Возврат Рабочие[0].Контрагент;
КонецЕсли;
Кандидаты = Рабочие;
Если ЗначениеЗаполнено(Реквизиты.КПП) Тогда
Кандидаты = ОтобратьПоРеквизиту(Кандидаты, "КПП", Реквизиты.КПП);
Если Кандидаты.Количество() = 1 Тогда
Возврат Кандидаты[0].Контрагент;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Реквизиты.Бюджет) Тогда
Кандидаты = ОтобратьПоРеквизиту(Кандидаты, "Бюджет", Реквизиты.Бюджет);
Если Кандидаты.Количество() = 1 Тогда
Возврат Кандидаты[0].Контрагент;
КонецЕсли;
КонецЕсли;
Возврат Справочники.Контрагенты.ПустаяСсылка();
КонецФункции
// Оставляет кандидатов с указанным значением реквизита.
//
// Параметры:
// Кандидаты - Массив из Структура - кандидаты.
// ИмяРеквизита - Строка - имя реквизита структуры-кандидата.
// Значение - Произвольный - требуемое значение реквизита.
//
// Возвращаемое значение:
// Массив из Структура - отобранные кандидаты.
//
Функция ОтобратьПоРеквизиту(Кандидаты, ИмяРеквизита, Значение)
Отобрано = Новый Массив;
Для Каждого Кандидат Из Кандидаты Цикл
Если Кандидат[ИмяРеквизита] = Значение Тогда
Отобрано.Добавить(Кандидат);
КонецЕсли;
КонецЦикла;
Возврат Отобрано;
КонецФункции
// Формирует структуру параметров одного извещения для вывода.
//
// Параметры:
// СторонаПечати - Строка - "Отправитель" или "Получатель".
// Отправитель - СправочникСсылка.Организации, СправочникСсылка.Контрагенты - отправитель извещения.
// Получатель - СправочникСсылка.Организации, СправочникСсылка.Контрагенты - получатель извещения.
// Пояснение - Строка - пояснение к извещению.
//
// Возвращаемое значение:
// Структура - параметры извещения.
//
Функция НоваяСтруктураИзвещения(СторонаПечати, Отправитель, Получатель, Пояснение)
ПараметрыИзвещения = Новый Структура;
ПараметрыИзвещения.Вставить("СторонаПечати", СторонаПечати);
ПараметрыИзвещения.Вставить("Отправитель", Отправитель);
ПараметрыИзвещения.Вставить("Получатель", Получатель);
ПараметрыИзвещения.Вставить("Пояснение", Пояснение);
Возврат ПараметрыИзвещения;
КонецФункции
// Выводит в табличный документ одно извещение по переданным данным.
//
// Параметры:
// ТабличныйДокумент - ТабличныйДокумент - печатная форма, в которую выводится извещение.
// Макет - ТабличныйДокумент - макет печатной формы извещения.
// ДокументСсылка - ДокументСсылка - печатаемый документ.
// ДокументОбъект - ДокументОбъект - печатаемый документ.
// ПараметрыИзвещения - Структура - параметры извещения, см. НоваяСтруктураИзвещения.
// Проводки - ТаблицаЗначений - данные извещения, см. ДанныеИзвещенияПоРеестру.
//
Процедура ВывестиИзвещение(ТабличныйДокумент, Макет, ДокументСсылка, ДокументОбъект, ПараметрыИзвещения, Проводки)
СторонаПечати = ПараметрыИзвещения.СторонаПечати;
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьЗаголовок.Параметры.Номер = РегистрыСведений.НастройкиПечатиПрефиксаНомера ОбластьЗаголовок.Параметры.Номер = РегистрыСведений.НастройкиПечатиПрефиксаНомера
.ПолучитьНомерДляПечатиПоСсылкеИдентификаторуДокумента(ДокументСсылка, ДокументОбъект.Номер); .ПолучитьНомерДляПечатиПоСсылкеИдентификаторуДокумента(ДокументСсылка, ДокументОбъект.Номер);
ОбластьЗаголовок.Параметры.Дата = ДокументОбъект.Дата; ОбластьЗаголовок.Параметры.Дата = ДокументОбъект.Дата;
ЗаполнитьРеквизитыСтороны(ОбластьЗаголовок.Параметры, "Отправитель", Отправитель); ЗаполнитьРеквизитыСтороны(ОбластьЗаголовок.Параметры, "Отправитель", ПараметрыИзвещения.Отправитель);
ЗаполнитьРеквизитыСтороны(ОбластьЗаголовок.Параметры, "Получатель", Получатель); ЗаполнитьРеквизитыСтороны(ОбластьЗаголовок.Параметры, "Получатель", ПараметрыИзвещения.Получатель);
ТабличныйДокумент.Вывести(ОбластьЗаголовок); ТабличныйДокумент.Вывести(ОбластьЗаголовок);
ОбластьПояснение = Макет.ПолучитьОбласть("ПояснениеМБТ"); ОбластьПояснение = Макет.ПолучитьОбласть("ПояснениеМБТ");
ОбластьПояснение.Параметры.ПояснениеМБТ = Пояснение; ОбластьПояснение.Параметры.ПояснениеМБТ = ПараметрыИзвещения.Пояснение;
ТабличныйДокумент.Вывести(ОбластьПояснение); ТабличныйДокумент.Вывести(ОбластьПояснение);
ТабличныйДокумент.Вывести(Макет.ПолучитьОбласть("Шапка")); ТабличныйДокумент.Вывести(Макет.ПолучитьОбласть("Шапка"));
@@ -203,15 +682,7 @@
ЗаполнитьПодписиСтороны(ОбластьПодвал.Параметры, СторонаПечати, ДокументОбъект); ЗаполнитьПодписиСтороны(ОбластьПодвал.Параметры, СторонаПечати, ДокументОбъект);
ТабличныйДокумент.Вывести(ОбластьПодвал); ТабличныйДокумент.Вывести(ОбластьПодвал);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, 1, Новый СписокЗначений, ДокументСсылка); КонецПроцедуры
Возврат ТабличныйДокумент;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Заполняет реквизиты стороны извещения (отправителя или получателя) для области "Заголовок". // Заполняет реквизиты стороны извещения (отправителя или получателя) для области "Заголовок".
// //
@@ -387,43 +858,105 @@
КонецФункции КонецФункции
// Возвращает проводки документа по данным регистра бухгалтерии. // Возвращает идентификатор строки поступления для регистра взаиморасчётов.
//
// Идентификатор связывает строку табличной части "Задолженность" наших документов
// со строкой расшифровки платежа кассового поступления: "<UUID документа>:<номер строки>".
// Длина не должна превышать 50 символов (измерение регистра и реквизит табличных частей).
// //
// Параметры: // Параметры:
// ДокументСсылка - ДокументСсылка - печатаемый документ. // ДокументСсылка - ДокументСсылка.КассовоеПоступление - документ поступления.
// НомерСтроки - Число - номер строки табличной части "Расшифровка платежа".
//
// Возвращаемое значение:
// Строка
//
Функция ИдентификаторСтрокиПоступления(ДокументСсылка, НомерСтроки) Экспорт
Если НЕ ЗначениеЗаполнено(ДокументСсылка) Тогда
Возврат "";
КонецЕсли;
Возврат Строка(ДокументСсылка.УникальныйИдентификатор()) + ":" + Формат(НомерСтроки, "ЧГ=0");
КонецФункции
// Возвращает данные извещения по строкам табличной части "Задолженность".
//
// Извещение не имеет собственных проводок: строки отражают операцию зачисления в доход
// бюджета (Дт 303.05, КЭК 831 - Кт 205.31, КЭК 660), которую выполняет документ подсистемы.
// КПС берётся из строки реестра, КФО - из шапки документа.
//
// Параметры:
// ДокументОбъект - ДокументОбъект - печатаемый документ.
// //
// Возвращаемое значение: // Возвращаемое значение:
// ТаблицаЗначений - колонки: СчетДт, КПСДт, КЭКДт, СчетКт, КПСКт, КЭККт, КФО, Сумма, Содержание. // ТаблицаЗначений - колонки: СчетДт, КПСДт, КЭКДт, СчетКт, КПСКт, КЭККт, КФО, Сумма, Содержание.
// //
Функция ПроводкиИзвещения(ДокументСсылка) Функция ДанныеИзвещенияПоРеестру(ДокументОбъект)
Запрос = Новый Запрос; Данные = Новый ТаблицаЗначений;
Запрос.Текст = Данные.Колонки.Добавить("СчетДт");
"ВЫБРАТЬ Данные.Колонки.Добавить("КПСДт");
| Проводки.СчетДт КАК СчетДт, Данные.Колонки.Добавить("КЭКДт");
| Проводки.КПСДт КАК КПСДт, Данные.Колонки.Добавить("СчетКт");
| Проводки.КЭКДт КАК КЭКДт, Данные.Колонки.Добавить("КПСКт");
| Проводки.СчетКт КАК СчетКт, Данные.Колонки.Добавить("КЭККт");
| Проводки.КПСКт КАК КПСКт, Данные.Колонки.Добавить("КФО");
| Проводки.КЭККт КАК КЭККт, Данные.Колонки.Добавить("Сумма");
| Проводки.КФО КАК КФО, Данные.Колонки.Добавить("Содержание");
| Проводки.Сумма КАК Сумма,
| Проводки.Содержание КАК Содержание
|ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ДвиженияССубконто(, , Регистратор = &ДокументСсылка) КАК Проводки
|
|УПОРЯДОЧИТЬ ПО
| Проводки.НомерСтроки";
Запрос.УстановитьПараметр("ДокументСсылка", ДокументСсылка);
Возврат Запрос.Выполнить().Выгрузить(); СчетДт = ПланыСчетов.ЕПСБУ.НайтиПоКоду("303.05");
СчетКт = ПланыСчетов.ЕПСБУ.НайтиПоКоду("205.31");
КЭКДт = Справочники.КОСГУ.НайтиПоКоду("831");
КЭККт = Справочники.КОСГУ.НайтиПоКоду("660");
Для Каждого СтрокаРеестра Из ДокументОбъект.Задолженность Цикл
СтрокаДанных = Данные.Добавить();
СтрокаДанных.СчетДт = СчетДт;
СтрокаДанных.КПСДт = СтрокаРеестра.КПС;
СтрокаДанных.КЭКДт = КЭКДт;
СтрокаДанных.СчетКт = СчетКт;
СтрокаДанных.КПСКт = СтрокаРеестра.КПС;
СтрокаДанных.КЭККт = КЭККт;
СтрокаДанных.КФО = ДокументОбъект.КФО;
СтрокаДанных.Сумма = СтрокаРеестра.Сумма;
СтрокаДанных.Содержание = СодержаниеСтрокиИзвещения(СтрокаРеестра);
КонецЦикла;
Возврат Данные;
КонецФункции
// Формирует текст содержания строки извещения.
//
// Параметры:
// СтрокаРеестра - СтрокаТаблицыЗначений - строка табличной части "Задолженность".
//
// Возвращаемое значение:
// Строка
//
Функция СодержаниеСтрокиИзвещения(СтрокаРеестра)
ЧастиСодержания = Новый Массив;
Если ЗначениеЗаполнено(СтрокаРеестра.Ребенок) Тогда
ЧастиСодержания.Добавить("Ребенок: " + Строка(СтрокаРеестра.Ребенок));
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаРеестра.Договор) Тогда
ЧастиСодержания.Добавить("Договор: " + Строка(СтрокаРеестра.Договор));
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаРеестра.ПериодОплаты) Тогда
ЧастиСодержания.Добавить("Период: " + СтрокаРеестра.ПериодОплаты);
КонецЕсли;
Возврат СтрСоединить(ЧастиСодержания, "; ");
КонецФункции КонецФункции
// Сворачивает проводки по счетам для раздела "Обороты в журнал операций". // Сворачивает проводки по счетам для раздела "Обороты в журнал операций".
// //
// Параметры: // Параметры:
// Проводки - ТаблицаЗначений - проводки документа, см. ПроводкиИзвещения. // Проводки - ТаблицаЗначений - данные извещения, см. ДанныеИзвещенияПоРеестру.
// //
// Возвращаемое значение: // Возвращаемое значение:
// ТаблицаЗначений - колонки: СчетДт, КПСДт, КЭКДт, СчетКт, КПСКт, КЭККт, КФО, Сумма. // ТаблицаЗначений - колонки: СчетДт, КПСДт, КЭКДт, СчетКт, КПСКт, КЭККт, КФО, Сумма.
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="3bdb6d56-4781-4a97-a147-a3511e6a0ecb">
<name>ПС_Заставка_Родительская_Плата</name>
<synonym>
<key>ru</key>
<value>Заставка родительская плата</value>
</synonym>
</mdclass:CommonPicture>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="6e76aae3-d259-4804-8558-6e505b23b169">
<name>ПС_Лого_Родительская_Плата</name>
<synonym>
<key>ru</key>
<value>Лого родительская плата</value>
</synonym>
</mdclass:CommonPicture>
@@ -0,0 +1,587 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns="http://v8.1c.ru/8.2/data/spreadsheet" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" 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">
<languageSettings>
<currentLanguage>ru</currentLanguage>
<defaultLanguage>ru</defaultLanguage>
<languageInfo>
<id>ru</id>
<code>Русский</code>
<description/>
</languageInfo>
</languageSettings>
<columns>
<size>10</size>
<columnsItem>
<index>0</index>
<column>
<formatIndex>1</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>1</index>
<column>
<formatIndex>2</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>2</index>
<column>
<formatIndex>3</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>3</index>
<column>
<formatIndex>4</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>4</index>
<column>
<formatIndex>5</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>5</index>
<column>
<formatIndex>6</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>6</index>
<column>
<formatIndex>7</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>7</index>
<column>
<formatIndex>4</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>8</index>
<column>
<formatIndex>8</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>9</index>
<column>
<formatIndex>9</formatIndex>
</column>
</columnsItem>
</columns>
<columns>
<id>c4c71b73-7783-4619-abbc-ece4486e4bdb</id>
<size>10</size>
<columnsItem>
<index>0</index>
<column>
<formatIndex>10</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>1</index>
<column>
<formatIndex>11</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>2</index>
<column>
<formatIndex>12</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>3</index>
<column>
<formatIndex>4</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>4</index>
<column>
<formatIndex>5</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>5</index>
<column>
<formatIndex>13</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>6</index>
<column>
<formatIndex>7</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>7</index>
<column>
<formatIndex>14</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>8</index>
<column>
<formatIndex>8</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>9</index>
<column>
<formatIndex>9</formatIndex>
</column>
</columnsItem>
</columns>
<rowsItem>
<index>0</index>
<row>
<c>
<c>
<f>15</f>
<parameter>ЗаголовокРеестра</parameter>
</c>
</c>
</row>
</rowsItem>
<rowsItem>
<index>1</index>
<row>
<c>
<c>
<f>15</f>
<parameter>РеквизитыДокумента</parameter>
</c>
</c>
</row>
</rowsItem>
<rowsItem>
<index>2</index>
<row>
<columnsID>c4c71b73-7783-4619-abbc-ece4486e4bdb</columnsID>
<c>
<c>
<f>16</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>ФИО плательщика</v8:content>
</v8:item>
</tl>
</c>
</c>
<c>
<c>
<f>16</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Сумма</v8:content>
</v8:item>
</tl>
</c>
</c>
<c>
<c>
<f>17</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Лицевой счет ребенка</v8:content>
</v8:item>
</tl>
</c>
</c>
<c>
<c>
<f>16</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>ФИО ребенка</v8:content>
</v8:item>
</tl>
</c>
</c>
<c>
<c>
<f>16</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Назначение платежа</v8:content>
</v8:item>
</tl>
</c>
</c>
<c>
<c>
<f>16</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Организация</v8:content>
</v8:item>
</tl>
</c>
</c>
<c>
<c>
<f>16</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Рассчетный счет</v8:content>
</v8:item>
</tl>
</c>
</c>
<c>
<c>
<f>16</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа</v8:content>
</v8:item>
</tl>
</c>
</c>
<c>
<c>
<f>17</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Период оплаты</v8:content>
</v8:item>
</tl>
</c>
</c>
<c>
<c>
<f>17</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Дата приема платежа</v8:content>
</v8:item>
</tl>
</c>
</c>
</row>
</rowsItem>
<rowsItem>
<index>3</index>
<row>
<c>
<c>
<f>18</f>
</c>
</c>
<c>
<c>
<f>18</f>
</c>
</c>
<c>
<c>
<f>18</f>
</c>
</c>
<c>
<c>
<f>18</f>
</c>
</c>
<c>
<c>
<f>18</f>
</c>
</c>
<c>
<c>
<f>18</f>
</c>
</c>
<c>
<c>
<f>18</f>
</c>
</c>
<c>
<c>
<f>18</f>
</c>
</c>
<c>
<c>
<f>18</f>
</c>
</c>
<c>
<c>
<f>18</f>
</c>
</c>
</row>
</rowsItem>
<rowsItem>
<index>4</index>
<row>
<columnsID>c4c71b73-7783-4619-abbc-ece4486e4bdb</columnsID>
<c>
<c>
<f>15</f>
<parameter>Плательщик</parameter>
</c>
</c>
<c>
<c>
<f>19</f>
<parameter>Сумма</parameter>
</c>
</c>
<c>
<c>
<f>15</f>
<parameter>ЛицевойСчет</parameter>
</c>
</c>
<c>
<c>
<f>15</f>
<parameter>Ребенок</parameter>
</c>
</c>
<c>
<c>
<f>15</f>
<parameter>НазначениеПлатежа</parameter>
</c>
</c>
<c>
<c>
<f>15</f>
<parameter>Организация</parameter>
</c>
</c>
<c>
<c>
<f>15</f>
<parameter>РассчетныйСчет</parameter>
</c>
</c>
<c>
<c>
<f>15</f>
<parameter>Группа</parameter>
</c>
</c>
<c>
<c>
<f>15</f>
<parameter>Период</parameter>
</c>
</c>
<c>
<c>
<f>20</f>
<parameter>ДатаПлатежа</parameter>
</c>
</c>
</row>
</rowsItem>
<rowsItem>
<index>5</index>
<row>
<empty>true</empty>
</row>
</rowsItem>
<rowsItem>
<index>6</index>
<row>
<columnsID>c4c71b73-7783-4619-abbc-ece4486e4bdb</columnsID>
<c>
<c>
<f>21</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>ИТОГО:</v8:content>
</v8:item>
</tl>
</c>
</c>
<c>
<c>
<f>22</f>
<parameter>ОбщаяСумма</parameter>
</c>
</c>
</row>
</rowsItem>
<templateMode>true</templateMode>
<defaultFormatIndex>23</defaultFormatIndex>
<height>7</height>
<vgRows>7</vgRows>
<namedItem xsi:type="NamedItemCells">
<name>Заголовок</name>
<area>
<type>Rows</type>
<beginRow>0</beginRow>
<endRow>1</endRow>
<beginColumn>-1</beginColumn>
<endColumn>-1</endColumn>
</area>
</namedItem>
<namedItem xsi:type="NamedItemCells">
<name>ОбластьПодвалТаблицы</name>
<area>
<type>Rows</type>
<beginRow>6</beginRow>
<endRow>6</endRow>
<beginColumn>-1</beginColumn>
<endColumn>-1</endColumn>
<columnsID>c4c71b73-7783-4619-abbc-ece4486e4bdb</columnsID>
</area>
</namedItem>
<namedItem xsi:type="NamedItemCells">
<name>ОбластьСтрокаТаблицы</name>
<area>
<type>Rows</type>
<beginRow>4</beginRow>
<endRow>4</endRow>
<beginColumn>-1</beginColumn>
<endColumn>-1</endColumn>
<columnsID>c4c71b73-7783-4619-abbc-ece4486e4bdb</columnsID>
</area>
</namedItem>
<namedItem xsi:type="NamedItemCells">
<name>ОбластьШапкаТаблицы</name>
<area>
<type>Rows</type>
<beginRow>2</beginRow>
<endRow>2</endRow>
<beginColumn>-1</beginColumn>
<endColumn>-1</endColumn>
<columnsID>c4c71b73-7783-4619-abbc-ece4486e4bdb</columnsID>
</area>
</namedItem>
<line width="1" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentCellLineType">Solid</v8ui:style>
</line>
<font faceName="Arial" height="8" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<font faceName="Arial" height="8" bold="true" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<font faceName="Arial" height="8" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<format>
<width>846</width>
</format>
<format>
<width>81</width>
</format>
<format>
<width>111</width>
</format>
<format>
<width>186</width>
</format>
<format>
<width>190</width>
</format>
<format>
<width>152</width>
</format>
<format>
<width>137</width>
</format>
<format>
<width>106</width>
</format>
<format>
<width>103</width>
</format>
<format>
<width>213</width>
</format>
<format>
<width>74</width>
</format>
<format>
<width>99</width>
</format>
<format>
<width>171</width>
</format>
<format>
<width>167</width>
</format>
<format>
<font>0</font>
<border>0</border>
<horizontalAlignment>Center</horizontalAlignment>
<textPlacement>Wrap</textPlacement>
<fillType>Parameter</fillType>
</format>
<format>
<font>1</font>
<border>0</border>
<horizontalAlignment>Center</horizontalAlignment>
</format>
<format>
<font>1</font>
<border>0</border>
<horizontalAlignment>Center</horizontalAlignment>
<textPlacement>Wrap</textPlacement>
</format>
<format>
<font>2</font>
</format>
<format>
<font>0</font>
<border>0</border>
<horizontalAlignment>Center</horizontalAlignment>
<textPlacement>Wrap</textPlacement>
<fillType>Parameter</fillType>
<format>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>ЧДЦ=2</v8:content>
</v8:item>
</format>
</format>
<format>
<font>0</font>
<border>0</border>
<horizontalAlignment>Center</horizontalAlignment>
<textPlacement>Wrap</textPlacement>
<fillType>Parameter</fillType>
<format>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>ДФ=dd.MM.yyyy</v8:content>
</v8:item>
</format>
</format>
<format>
<font>1</font>
</format>
<format>
<font>1</font>
<border>0</border>
<horizontalAlignment>Center</horizontalAlignment>
<fillType>Parameter</fillType>
<format>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>ЧДЦ=2</v8:content>
</v8:item>
</format>
</format>
<format>
<width>72</width>
</format>
</document>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="3d10ceae-63fa-4f75-9b16-33da45dc4213">
<name>ПС_РеестрПлатежей</name>
<synonym>
<key>ru</key>
<value>Реестр платежей</value>
</synonym>
</mdclass:CommonTemplate>
@@ -11,6 +11,8 @@
<usePurposes>Checked</usePurposes> <usePurposes>Checked</usePurposes>
<defaultLanguage>Checked</defaultLanguage> <defaultLanguage>Checked</defaultLanguage>
<interfaceCompatibilityMode>Checked</interfaceCompatibilityMode> <interfaceCompatibilityMode>Checked</interfaceCompatibilityMode>
<logo>Extended</logo>
<splash>Extended</splash>
<defaultRoles>Extended</defaultRoles> <defaultRoles>Extended</defaultRoles>
</extension> </extension>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="aa420a29-9e2c-45b0-b936-81fa20959b24"/> <containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="aa420a29-9e2c-45b0-b936-81fa20959b24"/>
@@ -22,13 +24,16 @@
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="2a75145f-4786-484a-b6f5-49ea8d2e6064"/> <containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="2a75145f-4786-484a-b6f5-49ea8d2e6064"/>
<keepMappingToExtendedConfigurationObjectsByIDs>true</keepMappingToExtendedConfigurationObjectsByIDs> <keepMappingToExtendedConfigurationObjectsByIDs>true</keepMappingToExtendedConfigurationObjectsByIDs>
<namePrefix>ПС_</namePrefix> <namePrefix>ПС_</namePrefix>
<configurationExtensionCompatibilityMode>8.3.14</configurationExtensionCompatibilityMode> <configurationExtensionCompatibilityMode>8.3.24</configurationExtensionCompatibilityMode>
<configurationExtensionPurpose>Customization</configurationExtensionPurpose> <configurationExtensionPurpose>Customization</configurationExtensionPurpose>
<defaultRunMode>ManagedApplication</defaultRunMode> <defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes> <usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant> <scriptVariant>Russian</scriptVariant>
<defaultRoles>Role.ПС_ОсновнаяРоль</defaultRoles> <defaultRoles>Role.ПС_ОсновнаяРоль</defaultRoles>
<version>1.0.4</version>
<defaultLanguage>Language.Русский</defaultLanguage> <defaultLanguage>Language.Русский</defaultLanguage>
<logo/>
<splash/>
<interfaceCompatibilityMode>TaxiEnableVersion8_2</interfaceCompatibilityMode> <interfaceCompatibilityMode>TaxiEnableVersion8_2</interfaceCompatibilityMode>
<languages uuid="2f74bb63-c643-4692-af13-1f99a56719fb" extendedConfigurationObject="4b1b900f-9c8f-4b2b-8292-3a9a6db40715"> <languages uuid="2f74bb63-c643-4692-af13-1f99a56719fb" extendedConfigurationObject="4b1b900f-9c8f-4b2b-8292-3a9a6db40715">
<name>Русский</name> <name>Русский</name>
@@ -51,13 +56,22 @@
<commonPictures>CommonPicture.ОтменитьДействие</commonPictures> <commonPictures>CommonPicture.ОтменитьДействие</commonPictures>
<commonPictures>CommonPicture.ПовторитьДействие</commonPictures> <commonPictures>CommonPicture.ПовторитьДействие</commonPictures>
<commonPictures>CommonPicture.Сумма</commonPictures> <commonPictures>CommonPicture.Сумма</commonPictures>
<commonPictures>CommonPicture.ПС_Лого_Родительская_Плата</commonPictures>
<commonPictures>CommonPicture.ПС_Заставка_Родительская_Плата</commonPictures>
<roles>Role.ПС_ОсновнаяРоль</roles> <roles>Role.ПС_ОсновнаяРоль</roles>
<roles>Role.БазовыеПраваБГУ</roles> <roles>Role.БазовыеПраваБГУ</roles>
<commonModules>CommonModule.ПС_РаботаСКонтрагентами</commonModules> <roles>Role.ПС_ЧтениеРодительскойПлаты</roles>
<roles>Role.ПС_ЗаписьРодительскойПлаты</roles>
<commonTemplates>CommonTemplate.ПС_РеестрПлатежей</commonTemplates>
<commonModules>CommonModule.ПС_УчетРодительскойПлаты</commonModules> <commonModules>CommonModule.ПС_УчетРодительскойПлаты</commonModules>
<commonModules>CommonModule.ПС_РазборПлатежейПоРодительскойПлате</commonModules> <commonModules>CommonModule.ПС_РазборПлатежейПоРодительскойПлате</commonModules>
<commonModules>CommonModule.ВариантыОтчетовПереопределяемый</commonModules> <commonModules>CommonModule.ВариантыОтчетовПереопределяемый</commonModules>
<commonModules>CommonModule.ВнутренниеЭлектронныеДокументыБГУ</commonModules>
<commonModules>CommonModule.ВнутреннийЭДОПереопределяемый</commonModules>
<commonModules>CommonModule.ПС_ВнутреннийЭДОИзвещений</commonModules>
<commonModules>CommonModule.ПС_ИдентификаторыОбъектовЭДО</commonModules>
<settingsStorages>SettingsStorage.ХранилищеВариантовОтчетов</settingsStorages> <settingsStorages>SettingsStorage.ХранилищеВариантовОтчетов</settingsStorages>
<definedTypes>DefinedType.ОснованиеВнутреннегоЭлектронногоДокумента</definedTypes>
<commonForms>CommonForm.УстановкаСтатусаПлатежноРасчетногоДокумента</commonForms> <commonForms>CommonForm.УстановкаСтатусаПлатежноРасчетногоДокумента</commonForms>
<catalogs>Catalog.Контрагенты</catalogs> <catalogs>Catalog.Контрагенты</catalogs>
<catalogs>Catalog.Договоры</catalogs> <catalogs>Catalog.Договоры</catalogs>
@@ -71,10 +85,13 @@
<catalogs>Catalog.ИсточникиФинансовогоОбеспечения</catalogs> <catalogs>Catalog.ИсточникиФинансовогоОбеспечения</catalogs>
<catalogs>Catalog.Пользователи</catalogs> <catalogs>Catalog.Пользователи</catalogs>
<catalogs>Catalog.КОСГУ</catalogs> <catalogs>Catalog.КОСГУ</catalogs>
<catalogs>Catalog.ВидыНалоговИПлатежей</catalogs>
<documents>Document.НачислениеРодительскойПлаты</documents> <documents>Document.НачислениеРодительскойПлаты</documents>
<documents>Document.ПС_ПередачаЗадолженностиВЦБ</documents> <documents>Document.ПС_ПринятиеПоступившихПлатежейИзЦБ</documents>
<documents>Document.ПС_ПринятиеЗадолженностиОтУчреждения</documents> <documents>Document.ПС_ПередачаПоступившихПлатежейВУчреждения</documents>
<documents>Document.КассовоеПоступление</documents> <documents>Document.КассовоеПоступление</documents>
<documents>Document.ИзвещениеИсходящее</documents>
<documents>Document.ИзвещениеВходящее</documents>
<enums>Enum.КВД</enums> <enums>Enum.КВД</enums>
<enums>Enum.ПС_ВидыОперацийПоВзаиморасчетам</enums> <enums>Enum.ПС_ВидыОперацийПоВзаиморасчетам</enums>
<reports>Report.ПС_ВедомостьЦБПоРодительскойПлате</reports> <reports>Report.ПС_ВедомостьЦБПоРодительскойПлате</reports>
Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

@@ -22,6 +22,98 @@
#КонецОбласти #КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
// Обновляет таблицы пульта при изменении периода отбора.
//
// Параметры:
// Элемент - ПолеФормы - изменённое поле отбора.
//
&НаКлиенте
Процедура ПериодПриИзменении(Элемент)
ОбновитьТаблицыНаСервере();
КонецПроцедуры
// Обновляет таблицы пульта при изменении организации (ЦБ).
//
// Параметры:
// Элемент - ПолеФормы - изменённое поле отбора.
//
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОбновитьТаблицыНаСервере();
КонецПроцедуры
// Обновляет таблицы пульта при изменении ИФО.
//
// Параметры:
// Элемент - ПолеФормы - изменённое поле отбора.
//
&НаКлиенте
Процедура ИФОПриИзменении(Элемент)
ОбновитьТаблицыНаСервере();
КонецПроцедуры
// Обновляет таблицы пульта при изменении учреждения (сада).
//
// Параметры:
// Элемент - ПолеФормы - изменённое поле отбора.
//
&НаКлиенте
Процедура УчреждениеПриИзменении(Элемент)
ОбновитьТаблицыНаСервере();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаДокументыПередачи
// Сужает таблицу принятий до принятий по выбранному документу передачи.
// Документ передачи берётся из текущей строки таблицы "Документы передачи":
// у одного документа передачи может быть несколько документов принятия (по одному на сад).
//
&НаКлиенте
Процедура ТаблицаДокументыПередачиПриАктивизацииСтроки(Элемент)
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьПринятияПоПередачеНаСервере(ТекущиеДанные.Ссылка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаСадыОстатки
// Показывает остатки по детям выбранного сада.
// Строка сада берётся из таблицы «Остатки по садам»; при пустой строке детализация
// остаётся по всем садам из отбора формы.
//
&НаКлиенте
Процедура ТаблицаСадыОстаткиПриАктивизацииСтроки(Элемент)
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьОстаткиПоДетям(ТекущиеДанные.Учреждение);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы #Область ОбработчикиКомандФормы
// Обновляет данные таблиц формы по установленным фильтрам. // Обновляет данные таблиц формы по установленным фильтрам.
@@ -80,37 +172,37 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
// Отборы формы заданы в терминах ЦБ: Организация - это ЦБ (справочник Организации), Отборы = ОтборыДокументовНаСервере();
// Учреждение - сад (справочник Контрагенты). Документы начисления и передачи хранят
// сад как Организацию, а ЦБ в документе передачи - как Контрагента. Приводим значения
// отбора к типам, которые есть в документах, сопоставлением по ИНН.
ЦБКонтрагент = Неопределено;
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ЦБКонтрагент = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(Объект.Организация, "Организация (ЦБ)");
Если НЕ ЗначениеЗаполнено(ЦБКонтрагент) Тогда
ОчиститьТаблицы();
Возврат;
КонецЕсли;
КонецЕсли;
СадОрганизация = Неопределено; ЗаполнитьНачисления(Отборы.СадОрганизация);
Если ЗначениеЗаполнено(Объект.Учреждение) Тогда ЗаполнитьДокументыПередачи(Отборы.ЦБОрганизация, Отборы.СадОрганизация);
СадОрганизация = ПС_РаботаСКонтрагентами.ОрганизацияПоКонтрагенту(Объект.Учреждение, "Учреждение (сад)"); ЗаполнитьДокументыПринятия(Отборы.ЦБОрганизация, Отборы.СадОрганизация);
Если НЕ ЗначениеЗаполнено(СадОрганизация) Тогда ЗаполнитьСверку(Отборы.ЦБОрганизация, Отборы.СадОрганизация);
ОчиститьТаблицы(); ЗаполнитьОстаткиПоСадам();
Возврат; ЗаполнитьОстаткиПоДетям(Неопределено);
КонецЕсли;
КонецЕсли;
ЗаполнитьНачисления(СадОрганизация);
ЗаполнитьДокументыПередачи(ЦБКонтрагент, СадОрганизация);
ЗаполнитьДокументыПринятия();
ЗаполнитьСверку(ЦБКонтрагент, СадОрганизация);
ЗаполнитьТаблицуОстатков();
ЗаполнитьКассовыеПоступления(); ЗаполнитьКассовыеПоступления();
КонецПроцедуры КонецПроцедуры
// Возвращает отборы формы в терминах, в которых они хранятся в документах.
//
// ЦБ и учреждение (сад) хранятся в документах передачи и принятия организациями,
// поэтому значения отборов передаются в запросы как есть.
//
// Возвращаемое значение:
// Структура - отборы документов: ЦБОрганизация, СадОрганизация.
//
&НаСервере
Функция ОтборыДокументовНаСервере()
Отборы = Новый Структура;
Отборы.Вставить("ЦБОрганизация", ?(ЗначениеЗаполнено(Объект.Организация), Объект.Организация, Неопределено));
Отборы.Вставить("СадОрганизация", ?(ЗначениеЗаполнено(Объект.Учреждение), Объект.Учреждение, Неопределено));
Возврат Отборы;
КонецФункции
// Очищает таблицы формы. Вызывается, когда значения отборов не удалось сопоставить // Очищает таблицы формы. Вызывается, когда значения отборов не удалось сопоставить
// с данными документов; причина уже выведена пользователю. // с данными документов; причина уже выведена пользователю.
// //
@@ -121,7 +213,8 @@
ДокументыПередачи.Очистить(); ДокументыПередачи.Очистить();
ДокументыПринятия.Очистить(); ДокументыПринятия.Очистить();
Сверка.Очистить(); Сверка.Очистить();
ТаблицаОстатков.Очистить(); ТаблицаОстатковСады.Очистить();
ТаблицаОстатковДети.Очистить();
КассовыеПоступления.Очистить(); КассовыеПоступления.Очистить();
КонецПроцедуры КонецПроцедуры
@@ -174,66 +267,19 @@
КонецПроцедуры КонецПроцедуры
// Заполняет таблицу формы ДокументыПередачи по установленным фильтрам. // Заполняет таблицу формы ДокументыПередачи по установленным фильтрам.
// Таблица показывает документы передачи поступивших платежей в учреждения (документ ЦБ).
// //
// Параметры: // Параметры:
// ЦБКонтрагент - CatalogRef.Контрагенты, Неопределено - ЦБ в виде контрагента // ЦБОрганизация - CatalogRef.Организации - ЦБ (документ передачи хранит ЦБ
// (документ передачи хранит ЦБ именно так); Неопределено - отбор не задан. // в реквизите "Организация"); Неопределено - отбор не задан.
// СадОрганизация - CatalogRef.Организации, Неопределено - учреждение (сад) в виде // СадОрганизация - CatalogRef.Организации - учреждение (сад) в реквизите
// организации; Неопределено - отбор по учреждению не задан. // "Учреждение"; Неопределено - отбор по учреждению не задан.
// //
&НаСервере &НаСервере
Процедура ЗаполнитьДокументыПередачи(ЦБКонтрагент, СадОрганизация) Процедура ЗаполнитьДокументыПередачи(ЦБОрганизация, СадОрганизация)
ДокументыПередачи.Очистить(); ДокументыПередачи.Очистить();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Документы.Ссылка КАК Ссылка,
| Документы.Дата КАК Дата,
| Документы.Номер КАК Номер,
| Документы.Организация КАК Организация,
| Документы.ЦБ КАК ЦБ,
| Документы.ИФО КАК ИФО,
| Документы.Период КАК Период,
| Документы.СуммаДокумента КАК СуммаДокумента,
| Документы.ПередачаСальдо КАК ПередачаСальдо,
| Документы.Проведен КАК Проведен,
| Документы.ПометкаУдаления КАК ПометкаУдаления
|ИЗ
| Документ.ПС_ПередачаЗадолженностиВЦБ КАК Документы
|ГДЕ
| Документы.Период >= &НачалоПериода
| И Документы.Период <= &КонецПериода
| И (&ЦБ = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.ЦБ = &ЦБ)
| И (&Сад = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.Организация = &Сад)
| И (&ИФО = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.ИФО = &ИФО)
|УПОРЯДОЧИТЬ ПО
| Документы.Дата УБЫВ";
Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания);
Запрос.УстановитьПараметр("ЦБ", ЦБКонтрагент);
Запрос.УстановитьПараметр("Сад", СадОрганизация);
Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ДокументыПередачи.Добавить(), Выборка);
КонецЦикла;
КонецПроцедуры
// Заполняет таблицу формы ДокументыПринятия по установленным фильтрам.
//
&НаСервере
Процедура ЗаполнитьДокументыПринятия()
ДокументыПринятия.Очистить();
Запрос = Новый Запрос; Запрос = Новый Запрос;
Запрос.Текст = Запрос.Текст =
"ВЫБРАТЬ "ВЫБРАТЬ
@@ -245,18 +291,17 @@
| Документы.ИФО КАК ИФО, | Документы.ИФО КАК ИФО,
| Документы.Период КАК Период, | Документы.Период КАК Период,
| Документы.СуммаДокумента КАК СуммаДокумента, | Документы.СуммаДокумента КАК СуммаДокумента,
| Документы.ПередачаСальдо КАК ПередачаСальдо,
| Документы.Проведен КАК Проведен, | Документы.Проведен КАК Проведен,
| Документы.ПометкаУдаления КАК ПометкаУдаления | Документы.ПометкаУдаления КАК ПометкаУдаления
|ИЗ |ИЗ
| Документ.ПС_ПринятиеЗадолженностиОтУчреждения КАК Документы | Документ.ПС_ПередачаПоступившихПлатежейВУчреждения КАК Документы
|ГДЕ |ГДЕ
| Документы.Период >= &НачалоПериода | Документы.Период >= &НачалоПериода
| И Документы.Период <= &КонецПериода | И Документы.Период <= &КонецПериода
| И (&Организация = НЕОПРЕДЕЛЕНО | И (&ЦБОрганизация = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.Организация = &Организация) | ИЛИ Документы.Организация = &ЦБОрганизация)
| И (&Учреждение = НЕОПРЕДЕЛЕНО | И (&СадОрганизация = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.Учреждение = &Учреждение) | ИЛИ Документы.Учреждение = &СадОрганизация)
| И (&ИФО = НЕОПРЕДЕЛЕНО | И (&ИФО = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.ИФО = &ИФО) | ИЛИ Документы.ИФО = &ИФО)
|УПОРЯДОЧИТЬ ПО |УПОРЯДОЧИТЬ ПО
@@ -264,10 +309,70 @@
Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала); Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания); Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания);
Запрос.УстановитьПараметр("Организация", ?(ЗначениеЗаполнено(Объект.Организация), Объект.Организация, Неопределено)); Запрос.УстановитьПараметр("ЦБОрганизация", ЦБОрганизация);
Запрос.УстановитьПараметр("Учреждение", ?(ЗначениеЗаполнено(Объект.Учреждение), Объект.Учреждение, Неопределено)); Запрос.УстановитьПараметр("СадОрганизация", СадОрганизация);
Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено)); Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ДокументыПередачи.Добавить(), Выборка);
КонецЦикла;
КонецПроцедуры
// Заполняет таблицу формы ДокументыПринятия по установленным фильтрам.
// Таблица показывает документы принятия поступивших платежей из ЦБ (документ учреждения).
//
// Параметры:
// ЦБОрганизация - CatalogRef.Организации - ЦБ (документ принятия хранит ЦБ
// в реквизите "ЦБ"); Неопределено - отбор не задан.
// СадОрганизация - CatalogRef.Организации - учреждение (сад) в реквизите "Организация";
// Неопределено - отбор по учреждению не задан.
// ДокументПередачи - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения - документ
// передачи, по которому отбираются принятия; Неопределено - отбор не задан.
//
&НаСервере
Процедура ЗаполнитьДокументыПринятия(ЦБОрганизация, СадОрганизация, ДокументПередачи = Неопределено)
ДокументыПринятия.Очистить();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Документы.Ссылка КАК Ссылка,
| Документы.Дата КАК Дата,
| Документы.Номер КАК Номер,
| Документы.Организация КАК Организация,
| Документы.ЦБ КАК ЦБ,
| Документы.ИФО КАК ИФО,
| Документы.Период КАК Период,
| Документы.СуммаДокумента КАК СуммаДокумента,
| Документы.ДокументПередачи КАК ДокументПередачи,
| Документы.Проведен КАК Проведен,
| Документы.ПометкаУдаления КАК ПометкаУдаления
|ИЗ
| Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ КАК Документы
|ГДЕ
| Документы.Период >= &НачалоПериода
| И Документы.Период <= &КонецПериода
| И (&Организация = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.Организация = &Организация)
| И (&ЦБ = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.ЦБ = &ЦБ)
| И (&ИФО = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.ИФО = &ИФО)
| И (&ДокументПередачи = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.ДокументПередачи = &ДокументПередачи)
|УПОРЯДОЧИТЬ ПО
| Документы.Дата УБЫВ";
Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания);
Запрос.УстановитьПараметр("Организация", СадОрганизация);
Запрос.УстановитьПараметр("ЦБ", ЦБОрганизация);
Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено));
Запрос.УстановитьПараметр("ДокументПередачи", ДокументПередачи);
Выборка = Запрос.Выполнить().Выбрать(); Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ДокументыПринятия.Добавить(), Выборка); ЗаполнитьЗначенияСвойств(ДокументыПринятия.Добавить(), Выборка);
@@ -275,17 +380,33 @@
КонецПроцедуры КонецПроцедуры
// Заполняет таблицу формы Сверка: сопоставляет суммы наших документов передачи // Заполняет таблицу принятий по документу передачи, выбранному в таблице "Документы передачи".
// и принятия. Приёмка связана с передачей через реквизит ДокументПередачи.
// //
// Параметры: // Параметры:
// ЦБКонтрагент - CatalogRef.Контрагенты, Неопределено - ЦБ в виде контрагента // ДокументПередачи - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения - документ
// (документ передачи хранит ЦБ именно так); Неопределено - отбор не задан. // передачи, по которому отбираются принятия.
// СадОрганизация - CatalogRef.Организации, Неопределено - учреждение (сад) в виде
// организации; Неопределено - отбор по учреждению не задан.
// //
&НаСервере &НаСервере
Процедура ЗаполнитьСверку(ЦБКонтрагент, СадОрганизация) Процедура ЗаполнитьПринятияПоПередачеНаСервере(ДокументПередачи)
Отборы = ОтборыДокументовНаСервере();
ЗаполнитьДокументыПринятия(Отборы.ЦБОрганизация, Отборы.СадОрганизация, ДокументПередачи);
КонецПроцедуры
// Заполняет таблицу формы Сверка: сопоставляет суммы переданных платежей (документ ЦБ)
// и принятых учреждениями (документы принятия). Приёмка связана с передачей через
// реквизит ДокументПередачи документа принятия.
//
// Параметры:
// ЦБОрганизация - CatalogRef.Организации - ЦБ (документ передачи хранит ЦБ
// в реквизите "Организация"); Неопределено - отбор не задан.
// СадОрганизация - CatalogRef.Организации - учреждение (сад) в реквизите
// "Учреждение"; Неопределено - отбор по учреждению не задан.
//
&НаСервере
Процедура ЗаполнитьСверку(ЦБОрганизация, СадОрганизация)
Сверка.Очистить(); Сверка.Очистить();
@@ -296,7 +417,7 @@
| СУММА(Принятие.СуммаДокумента) КАК СуммаПринято | СУММА(Принятие.СуммаДокумента) КАК СуммаПринято
|ПОМЕСТИТЬ ВТПринято |ПОМЕСТИТЬ ВТПринято
|ИЗ |ИЗ
| Документ.ПС_ПринятиеЗадолженностиОтУчреждения КАК Принятие | Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ КАК Принятие
|ГДЕ |ГДЕ
| НЕ Принятие.ПометкаУдаления | НЕ Принятие.ПометкаУдаления
|СГРУППИРОВАТЬ ПО |СГРУППИРОВАТЬ ПО
@@ -308,14 +429,14 @@
|ВЫБРАТЬ |ВЫБРАТЬ
| Передача.Ссылка КАК ДокументПередачи, | Передача.Ссылка КАК ДокументПередачи,
| Передача.Период КАК Период, | Передача.Период КАК Период,
| Передача.Организация КАК Сад, | Передача.Организация КАК ЦБ,
| Передача.ЦБ КАК ЦБ, | Передача.Учреждение КАК Сад,
| Передача.СуммаДокумента КАК СуммаПередано, | Передача.СуммаДокумента КАК СуммаПередано,
| ЕСТЬNULL(ВТПринято.СуммаПринято, 0) КАК СуммаПринято, | ЕСТЬNULL(ВТПринято.СуммаПринято, 0) КАК СуммаПринято,
| Передача.СуммаДокумента - ЕСТЬNULL(ВТПринято.СуммаПринято, 0) КАК Расхождение, | Передача.СуммаДокумента - ЕСТЬNULL(ВТПринято.СуммаПринято, 0) КАК Расхождение,
| Передача.Проведен КАК ПередачаПроведена | Передача.Проведен КАК ПередачаПроведена
|ИЗ |ИЗ
| Документ.ПС_ПередачаЗадолженностиВЦБ КАК Передача | Документ.ПС_ПередачаПоступившихПлатежейВУчреждения КАК Передача
| ЛЕВОЕ СОЕДИНЕНИЕ ВТПринято КАК ВТПринято | ЛЕВОЕ СОЕДИНЕНИЕ ВТПринято КАК ВТПринято
| ПО Передача.Ссылка = ВТПринято.ДокументПередачи | ПО Передача.Ссылка = ВТПринято.ДокументПередачи
|ГДЕ |ГДЕ
@@ -323,18 +444,18 @@
| И Передача.Период >= &НачалоПериода | И Передача.Период >= &НачалоПериода
| И Передача.Период <= &КонецПериода | И Передача.Период <= &КонецПериода
| И (&ЦБ = НЕОПРЕДЕЛЕНО | И (&ЦБ = НЕОПРЕДЕЛЕНО
| ИЛИ Передача.ЦБ = &ЦБ) | ИЛИ Передача.Организация = &ЦБ)
| И (&Сад = НЕОПРЕДЕЛЕНО | И (&Сад = НЕОПРЕДЕЛЕНО
| ИЛИ Передача.Организация = &Сад) | ИЛИ Передача.Учреждение = &Сад)
| И (&ИФО = НЕОПРЕДЕЛЕНО | И (&ИФО = НЕОПРЕДЕЛЕНО
| ИЛИ Передача.ИФО = &ИФО) | ИЛИ Передача.ИФО = &ИФО)
|УПОРЯДОЧИТЬ ПО |УПОРЯДОЧИТЬ ПО
| Передача.Период, | Передача.Период,
| Передача.Организация"; | Передача.Учреждение";
Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала); Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания); Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания);
Запрос.УстановитьПараметр("ЦБ", ЦБКонтрагент); Запрос.УстановитьПараметр("ЦБ", ЦБОрганизация);
Запрос.УстановитьПараметр("Сад", СадОрганизация); Запрос.УстановитьПараметр("Сад", СадОрганизация);
Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено)); Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено));
@@ -345,89 +466,135 @@
КонецПроцедуры КонецПроцедуры
// Заполняет таблицу остатков и оборотов по счетам 205.31 и 304.04. // Заполняет таблицу остатков по садам: поступило в ЦБ, передано в сад и остаток у ЦБ.
// Использует виртуальную таблицу ОстаткиИОбороты регистра бухгалтерии. //
// Источник данных - регистр накопления взаиморасчётов по родительской плате: приход
// формирует кассовое поступление, расход - документ передачи платежей в учреждение.
// Остаток показывает, сколько поступило в ЦБ и ещё не передано в сад.
// //
&НаСервере &НаСервере
Процедура ЗаполнитьТаблицуОстатков() Процедура ЗаполнитьОстаткиПоСадам()
ТаблицаОстатков.Очистить(); ТаблицаОстатковСады.Очистить();
Если ЗначениеЗаполнено(Объект.Учреждение) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Остатки и обороты по счетам ведутся без разреза по учреждению,"
+ " поэтому отбор по учреждению на эту страницу не влияет.");
КонецЕсли;
НачалоПериода = Объект.Период.ДатаНачала;
КонецПериода = Объект.Период.ДатаОкончания;
Запрос = Новый Запрос; Запрос = Новый Запрос;
УсловиеОтбора = УсловиеОтбораОстатков(Запрос);
Запрос.Текст = Запрос.Текст =
"ВЫБРАТЬ "ВЫБРАТЬ
| ""205.31"" КАК Счет, | Остатки.Учреждение КАК Учреждение,
| ОстаткиИОбороты.ИФО КАК ИФО, | СУММА(Остатки.СуммаПриход) КАК Поступило,
| СУММА(ОстаткиИОбороты.СуммаНачальныйОстаток) КАК СуммаНачальныйОстаток, | СУММА(Остатки.СуммаРасход) КАК Передано,
| СУММА(ОстаткиИОбороты.СуммаОборотДт) КАК СуммаОборотДт, | СУММА(Остатки.СуммаКонечныйОстаток) КАК Остаток
| СУММА(ОстаткиИОбороты.СуммаОборотКт) КАК СуммаОборотКт,
| СУММА(ОстаткиИОбороты.СуммаКонечныйОстаток) КАК СуммаКонечныйОстаток
|ИЗ |ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ОстаткиИОбороты( | РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.ОстаткиИОбороты(
| &НачалоПериода, | &НачалоПериода, &КонецПериода, Авто, , " + УсловиеОтбора + ") КАК Остатки
| &КонецПериода,
| Авто,
| ,
| Счет В ИЕРАРХИИ (&Счет205)) КАК ОстаткиИОбороты
|ГДЕ
| (&ИФО = НЕОПРЕДЕЛЕНО
| ИЛИ ОстаткиИОбороты.ИФО = &ИФО)
|СГРУППИРОВАТЬ ПО |СГРУППИРОВАТЬ ПО
| ОстаткиИОбороты.ИФО | Остатки.Учреждение
| |УПОРЯДОЧИТЬ ПО
|ОБЪЕДИНИТЬ ВСЕ | Остатки.Учреждение";
|
|ВЫБРАТЬ
| ""304.04"",
| ОстаткиИОбороты.ИФО,
| СУММА(ОстаткиИОбороты.СуммаНачальныйОстаток),
| СУММА(ОстаткиИОбороты.СуммаОборотДт),
| СУММА(ОстаткиИОбороты.СуммаОборотКт),
| СУММА(ОстаткиИОбороты.СуммаКонечныйОстаток)
|ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ОстаткиИОбороты(
| &НачалоПериода,
| &КонецПериода,
| Авто,
| ,
| Счет В ИЕРАРХИИ (&Счет304)) КАК ОстаткиИОбороты
|ГДЕ
| (&ИФО = НЕОПРЕДЕЛЕНО
| ИЛИ ОстаткиИОбороты.ИФО = &ИФО)
|СГРУППИРОВАТЬ ПО
| ОстаткиИОбороты.ИФО";
Счет205 = ПланыСчетов.ЕПСБУ.НайтиПоКоду("205.31"); Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала);
Счет304 = ПланыСчетов.ЕПСБУ.НайтиПоКоду("304.04"); Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания);
Если Счет205 = Неопределено ИЛИ Счет304 = Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю(
"Остатки и обороты не рассчитаны: в плане счетов ЕПСБУ не найден счет"
+ " 205.31 и/или 304.04.");
Возврат;
КонецЕсли;
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
Запрос.УстановитьПараметр("Счет205", Счет205);
Запрос.УстановитьПараметр("Счет304", Счет304);
Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено));
Выборка = Запрос.Выполнить().Выбрать(); Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ТаблицаОстатков.Добавить(), Выборка); Если Выборка.Поступило = 0 И Выборка.Передано = 0 И Выборка.Остаток = 0 Тогда
Продолжить;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ТаблицаОстатковСады.Добавить(), Выборка);
КонецЦикла; КонецЦикла;
КонецПроцедуры КонецПроцедуры
// Заполняет таблицу остатков по детям: поступило в ЦБ, передано в сад и остаток у ЦБ
// по каждому ребёнку и договору.
//
// Параметры:
// Учреждение - CatalogRef.Организации - сад, выбранный в таблице остатков по садам;
// Неопределено - детализация строится по всем садам из отбора формы.
//
&НаСервере
Процедура ЗаполнитьОстаткиПоДетям(Учреждение)
ТаблицаОстатковДети.Очистить();
Запрос = Новый Запрос;
УсловиеОтбора = УсловиеОтбораОстатков(Запрос, Учреждение);
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.Учреждение КАК Учреждение,
| Остатки.ИФО КАК ИФО,
| Остатки.Ребенок КАК Ребенок,
| Остатки.Договор КАК Договор,
| СУММА(Остатки.СуммаПриход) КАК Поступило,
| СУММА(Остатки.СуммаРасход) КАК Передано,
| СУММА(Остатки.СуммаКонечныйОстаток) КАК Остаток
|ИЗ
| РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.ОстаткиИОбороты(
| &НачалоПериода, &КонецПериода, Авто, , " + УсловиеОтбора + ") КАК Остатки
|СГРУППИРОВАТЬ ПО
| Остатки.Учреждение,
| Остатки.ИФО,
| Остатки.Ребенок,
| Остатки.Договор
|УПОРЯДОЧИТЬ ПО
| Учреждение,
| Ребенок";
Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Поступило = 0 И Выборка.Передано = 0 И Выборка.Остаток = 0 Тогда
Продолжить;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ТаблицаОстатковДети.Добавить(), Выборка);
КонецЦикла;
КонецПроцедуры
// Возвращает условие отбора для виртуальной таблицы остатков регистра взаиморасчётов
// и устанавливает соответствующие параметры запроса.
//
// Параметры:
// Запрос - Запрос - запрос, в который добавляются параметры отбора;
// Учреждение - CatalogRef.Организации - сад, по которому строится детализация;
// Неопределено - используется отбор по учреждению из формы.
//
// Возвращаемое значение:
// Строка - условие отбора в терминах полей регистра; "ИСТИНА", если отборов нет.
//
&НаСервере
Функция УсловиеОтбораОстатков(Запрос, Учреждение = Неопределено)
Условия = Новый Массив;
Если ЗначениеЗаполнено(Объект.Организация) Тогда
Запрос.УстановитьПараметр("ОрганизацияОтбор", Объект.Организация);
Условия.Добавить("Организация = &ОрганизацияОтбор");
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ИФО) Тогда
Запрос.УстановитьПараметр("ИФООтбор", Объект.ИФО);
Условия.Добавить("ИФО = &ИФООтбор");
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Учреждение) Тогда
Учреждение = Объект.Учреждение;
КонецЕсли;
Если ЗначениеЗаполнено(Учреждение) Тогда
Запрос.УстановитьПараметр("УчреждениеОтбор", Учреждение);
Условия.Добавить("Учреждение = &УчреждениеОтбор");
КонецЕсли;
Возврат ?(Условия.Количество() = 0, "ИСТИНА", СтрСоединить(Условия, " И "));
КонецФункции
// Заполняет таблицу формы КассовыеПоступления: документы с признаком "Родительская плата" за период // Заполняет таблицу формы КассовыеПоступления: документы с признаком "Родительская плата" за период
// по установленным отборам. // по установленным отборам.
// Колонка "Строк не распознано" показывает строки расшифровки платежа, в которых не определён ребёнок, - // Колонка "Строк не распознано" показывает строки расшифровки платежа, в которых не определён ребёнок, -
@@ -1,3 +1,2 @@
// Обработка ПС_УправлениеРасчетамиПоРодительскойПлате. // Обработка ПС_УправлениеРасчетамиПоРодительскойПлате.
// Логика дашборда реализована в модуле управляемой формы (Forms/Форма/Module.bsl). // Логика дашборда реализована в модуле управляемой формы (Forms/Форма/Module.bsl).
// Модуль объекта оставлен пустым намеренно.
@@ -38,7 +38,7 @@
<value>Учреждение (сад)</value> <value>Учреждение (сад)</value>
</synonym> </synonym>
<type> <type>
<types>CatalogRef.Контрагенты</types> <types>CatalogRef.Организации</types>
</type> </type>
<minValue xsi:type="core:UndefinedValue"/> <minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/>
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:DefinedType 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="86adad5d-0084-4ac3-8b7b-67dbe8efde02" extendedConfigurationObject="5182ca77-f944-46c4-925a-8bcd42a8ca04">
<producedTypes>
<containerType typeId="76a8d07b-bff3-4dc7-b3f3-e329e96d825a" valueTypeId="cd44bd23-4db6-43e3-87b8-df9f511da56c"/>
</producedTypes>
<name>ОснованиеВнутреннегоЭлектронногоДокумента</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:DefinedTypeExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
<typeExtension>
<types>
<state>Extended</state>
<type>DocumentRef.ПС_ПередачаПоступившихПлатежейВУчреждения</type>
</types>
<types>
<state>Extended</state>
<type>DocumentRef.ПС_ПринятиеПоступившихПлатежейИзЦБ</type>
</types>
</typeExtension>
</extension>
</mdclass:DefinedType>
@@ -0,0 +1,16 @@
<?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="7eed47cc-6019-4b3d-b825-4d7b97b70b36" extendedConfigurationObject="96af047b-7cc7-4d47-9267-1faf1018c6c2">
<producedTypes>
<objectType typeId="55afd80c-cdf6-4ed8-92b4-3e31193c8d83" valueTypeId="a872ebf4-b3a6-457c-b7fb-60f98d89b04a"/>
<refType typeId="549ee220-8152-4947-8c37-d57651460447" valueTypeId="27b5b814-ba0d-4c9e-ae95-9f5571ee9ca7"/>
<selectionType typeId="65fcb32e-4256-4c7b-9454-5781e200fd87" valueTypeId="eb76cc07-493f-45c5-9efe-b20254aa2683"/>
<listType typeId="44f445bb-4096-423a-9317-99751749b025" valueTypeId="4c10ef7b-caeb-4b6a-8bcf-83ed03dc6b34"/>
<managerType typeId="80881412-dd7b-47fb-811e-5bb2773702b4" valueTypeId="264e87d0-6516-4d55-adbb-6330d9527001"/>
</producedTypes>
<name>ИзвещениеВходящее</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:DocumentExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
</extension>
<useStandardCommands>true</useStandardCommands>
</mdclass:Document>
@@ -0,0 +1,16 @@
<?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="41775506-5c5d-45c1-b92e-2436acf64680" extendedConfigurationObject="afa2d2ce-ab98-4f62-b4d2-072ff3a30c72">
<producedTypes>
<objectType typeId="6c3af4d3-ee94-4e95-83c4-91fcc59f3dce" valueTypeId="cc7f7a7e-a66c-49a5-98d3-e0f54bd52ced"/>
<refType typeId="d1d043ef-7ac1-457d-8cde-cf995da6fb89" valueTypeId="fab3c501-9604-4547-ba62-8ce71a0fafd0"/>
<selectionType typeId="f4cf0b07-83ad-4af9-b3ed-f00c47566866" valueTypeId="f3974034-5957-45e6-9de0-653465e08638"/>
<listType typeId="e83fdf40-7c45-4a8c-a871-ee4b7d0e71f2" valueTypeId="5edb65d0-6f93-4e2f-bd2c-13ec11d8fa77"/>
<managerType typeId="5ceeb5c6-84a4-4a68-82fb-54def1eed3cd" valueTypeId="33145c27-4d30-4272-8f0e-670df607a06c"/>
</producedTypes>
<name>ИзвещениеИсходящее</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:DocumentExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
</extension>
<useStandardCommands>true</useStandardCommands>
</mdclass:Document>
@@ -16,6 +16,16 @@
ПС_РазборПлатежейПоРодительскойПлате.ЗаполнитьКонтрагентовПоНазначениюПлатежа(ЭтотОбъект); ПС_РазборПлатежейПоРодительскойПлате.ЗаполнитьКонтрагентовПоНазначениюПлатежа(ЭтотОбъект);
// Признак "Родительская плата" сбрасывается, если в корреспондирующем счёте указан 303.00.
// Без признака приход по регистру взаиморасчётов не формируется, поэтому предупреждаем
// по факту распознанного и найденного лицевого счёта ребёнка.
Если НЕ РодительскаяПлата
И ПС_РазборПлатежейПоРодительскойПлате.ЕстьЛицевыеСчетаДетей(ЭтотОбъект) Тогда
ОбщегоНазначения.СообщитьПользователю(
"В расшифровке платежа распознан лицевой счёт ребёнка, но признак ""Родительская плата"""
+ " не установлен: приход по взаиморасчётам по родительской плате не будет сформирован.");
КонецЕсли;
КонецПроцедуры КонецПроцедуры
&После("ОбработкаПроведения") &После("ОбработкаПроведения")
@@ -25,9 +35,10 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
// Оплата закрывает задолженность, принятую от учреждения. Переплата допускается - // Поступившие платежи копятся у ЦБ: приход по регистру взаиморасчётов.
// она даёт отрицательный (кредитовый) остаток по ребёнку. Строки без определённого // Передача платежей в сады списывает их расходом, поэтому остаток регистра
// ребёнка или договора пропускаются: это не оплата родительской платы. // показывает, сколько поступило и ещё не передано в учреждения. Строки без
// определённого ребёнка или договора пропускаются: это не плата за детский сад.
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Очистить(); Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Очистить();
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина; Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина;
@@ -50,33 +61,27 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
// Сады детей загружаем одним запросом, контрагента сада ищем по одному разу на сад: // Сады детей загружаем одним запросом: обращение к базе внутри цикла по строкам недопустимо.
// обращение к базе внутри цикла по строкам недопустимо.
ОрганизацииСадов = ПС_ОрганизацииСадовДетей(Дети); ОрганизацииСадов = ПС_ОрганизацииСадовДетей(Дети);
КонтрагентыСадов = Новый Соответствие;
Для Каждого СтрокаРасшифровки Из СтрокиОплаты Цикл Для Каждого СтрокаРасшифровки Из СтрокиОплаты Цикл
ОрганизацияСада = ОрганизацииСадов[СтрокаРасшифровки.Ребенок]; ОрганизацияСада = ОрганизацииСадов[СтрокаРасшифровки.Ребенок];
КонтрагентСада = КонтрагентыСадов[ОрганизацияСада]; Движение = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьПриход();
Если КонтрагентСада = Неопределено Тогда
КонтрагентСада = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(ОрганизацияСада, "Учреждение");
КонтрагентыСадов.Вставить(ОрганизацияСада, КонтрагентСада);
КонецЕсли;
Движение = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьРасход();
Движение.Период = Дата; Движение.Период = Дата;
Движение.Организация = Организация; Движение.Организация = Организация;
Движение.Учреждение = КонтрагентСада; Движение.Учреждение = ОрганизацияСада;
Движение.Плательщик = СтрокаРасшифровки.Контрагент; Движение.Плательщик = СтрокаРасшифровки.Контрагент;
Движение.Ребенок = СтрокаРасшифровки.Ребенок; Движение.Ребенок = СтрокаРасшифровки.Ребенок;
Движение.Договор = СтрокаРасшифровки.Договор; Движение.Договор = СтрокаРасшифровки.Договор;
Движение.ИФО = ИФО; Движение.ИФО = ИФО;
Движение.КФО = СтрокаРасшифровки.КФО; Движение.КФО = СтрокаРасшифровки.КФО;
Движение.КПС = СтрокаРасшифровки.КБКНазначениеПлатежа; Движение.КПС = СтрокаРасшифровки.КБКНазначениеПлатежа;
Движение.ИДСтроки = ПС_УчетРодительскойПлаты.ИдентификаторСтрокиПоступления(
Ссылка, СтрокаРасшифровки.НомерСтроки);
Движение.Сумма = СтрокаРасшифровки.Сумма; Движение.Сумма = СтрокаРасшифровки.Сумма;
Движение.ВидОперации = Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.Оплата; Движение.ВидОперации = Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.ПоступлениеПлатежа;
КонецЦикла; КонецЦикла;
@@ -112,7 +112,7 @@
КонецЕсли; КонецЕсли;
ПараметрыФормы = Новый Структура("Основание", Объект.Ссылка); ПараметрыФормы = Новый Структура("Основание", Объект.Ссылка);
ОткрытьФорму("Документ.ПС_ПередачаЗадолженностиВЦБ.Форма.ФормаДокумента", ОткрытьФорму("Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ.Форма.ФормаДокумента",
ПараметрыФормы, ПараметрыФормы,
ЭтотОбъект); ЭтотОбъект);
@@ -12,7 +12,6 @@
<extension xsi:type="mdclassExtension:DocumentExtension"> <extension xsi:type="mdclassExtension:DocumentExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject> <extendedConfigurationObject>Checked</extendedConfigurationObject>
</extension> </extension>
<basedOn>Document.ПС_ПередачаЗадолженностиВЦБ</basedOn>
<forms uuid="afd5a88e-f86c-4f20-8edb-b69efb4623e0" extendedConfigurationObject="1a84838c-25fc-4c1b-8b26-74c31f1d8f67"> <forms uuid="afd5a88e-f86c-4f20-8edb-b69efb4623e0" extendedConfigurationObject="1a84838c-25fc-4c1b-8b26-74c31f1d8f67">
<name>ФормаДокумента</name> <name>ФормаДокумента</name>
<objectBelonging>Adopted</objectBelonging> <objectBelonging>Adopted</objectBelonging>
@@ -1,438 +0,0 @@
// ПС_ПередачаЗадолженностиВЦБ: модуль формы документа.
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
БухгалтерскиеОперацииСервер.ПриСозданииНаСервере(Отказ, СтандартнаяОбработка, Элементы.БухгалтерскаяОперация);
// ИФО показывается только при включённом учёте по ИФО (как в типовых документах).
Элементы.ИФО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО");
// КПС определяется автоматически по настройкам учётной политики.
Элементы.ЗадолженностьКПС.ТолькоПросмотр = Истина;
// Счёт, корреспондирующий со счётом 205.31, и его КЭК: значения по умолчанию.
// В режиме передачи начального сальдо скрывается документ начисления и появляется
// команда заполнения по остаткам счёта 205.31.
ЗаполнитьКорреспондирующийСчетПоУмолчанию();
ОбновитьВидимостьРеквизитовРежимаСальдо();
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
Основание = Неопределено;
Если Параметры.Свойство("Основание", Основание)
И ТипЗнч(Основание) = Тип("ДокументСсылка.НачислениеРодительскойПлаты") Тогда
Объект.ДокументНачисления = Основание;
ЗаполнитьПоДокументуНачисленияНаСервере(Основание);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.ЦБ) Тогда
Объект.ЦБ = ПС_РаботаСКонтрагентами.КонтрагентЦБПоУмолчанию();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
БухгалтерскиеОперацииСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект, Элементы.БухгалтерскаяОперация);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
БухгалтерскиеОперацииКлиент.ПередЗаписью(Отказ, ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
БухгалтерскиеОперацииСервер.ПередЗаписью(Отказ, ТекущийОбъект, ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
БухгалтерскиеОперацииКлиент.ПослеЗаписи(ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
БухгалтерскиеОперацииСервер.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПечатьИзвещения(Команда)
ТабличныйДокумент = ПечатьИзвещенияНаСервере(Объект.Ссылка);
ТабличныйДокумент.Показать("Извещение (ф. 0504805, ред. 103н)");
КонецПроцедуры
&НаКлиенте
Процедура ПросмотрБухгалтерскихЗаписей(Команда)
ОткрытьБухгалтерскиеЗаписиДокумента(Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ПС_СоздатьПринятиеЗадолженностиНаОсновании(Команда)
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = "Сначала запишите и проведите документ передачи.";
СообщениеПользователю.Сообщить();
Возврат;
КонецЕсли;
Если НЕ Объект.Проведен Тогда
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = "Перед созданием принятия документ передачи должен быть проведён.";
СообщениеПользователю.Сообщить();
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура("Основание", Объект.Ссылка);
ОткрытьФорму("Документ.ПС_ПринятиеЗадолженностиОтУчреждения.Форма.ФормаДокумента",
ПараметрыФормы,
ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоОстаткам20531(Команда)
ЗаполнитьПоОстаткам20531НаСервере();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура ПередачаСальдоПриИзменении(Элемент)
// В режиме сальдо поле документа начисления скрывается, команда заполнения по остаткам - показывается.
РежимСальдо = (Объект.ПередачаСальдо = Истина);
Элементы.ЗаполнитьПоОстаткам20531.Видимость = РежимСальдо;
Элементы.ДокументНачисления.Видимость = НЕ РежимСальдо;
КонецПроцедуры
&НаКлиенте
Процедура ДокументНачисленияПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.ДокументНачисления) Тогда
ЗаполнитьПоДокументуНачисленияНаСервере(Объект.ДокументНачисления);
Иначе
Объект.Задолженность.Очистить();
Объект.СуммаДокумента = 0;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗадолженностьПриИзменении(Элемент)
Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма");
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция ПечатьИзвещенияНаСервере(ДокументСсылка)
Возврат Документы.ПС_ПередачаЗадолженностиВЦБ.СформироватьПечатныеФормыИзвещений(ДокументСсылка);
КонецФункции
&НаСервере
Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию()
Если НЕ ЗначениеЗаполнено(Объект.СчетКорреспондент) Тогда
Объект.СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.КЭККорреспондент) Тогда
Объект.КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьВидимостьРеквизитовРежимаСальдо()
// В режиме начального сальдо документ начисления не используется: его поле скрывается,
// а вместо него доступна команда заполнения по остаткам счёта 205.31.
РежимСальдо = (Объект.ПередачаСальдо = Истина);
Элементы.ЗаполнитьПоОстаткам20531.Видимость = РежимСальдо;
Элементы.ДокументНачисления.Видимость = НЕ РежимСальдо;
КонецПроцедуры
// Заполняет табличную часть "Задолженность" остатками счёта 205.31 на дату документа
// по организации (учреждению-саду). Строки доступны для ручной правки.
//
&НаСервере
Процедура ЗаполнитьПоОстаткам20531НаСервере()
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Заполнение по остаткам невозможно: не заполнена организация (учреждение-сад).");
Возврат;
КонецЕсли;
Счет20531 = ПланыСчетов.ЕПСБУ.НайтиПоКоду("205.31");
Если Счет20531 = Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю(
"Заполнение по остаткам невозможно: в плане счетов ЕПСБУ не найден счет 205.31.");
Возврат;
КонецЕсли;
// Порядок субконто берём из настройки самого счёта: субконто1 - первое субконто счёта.
ВидыСубконто = Новый Массив;
Для Каждого СтрокаСубконто Из Счет20531.ВидыСубконто Цикл
ВидыСубконто.Добавить(СтрокаСубконто.ВидСубконто);
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.Субконто1 КАК Контрагент,
| Остатки.Субконто2 КАК Договор,
| Дети.Ссылка КАК Ребенок,
| Остатки.КПС КАК КПС,
| Остатки.ИФО КАК ИФО,
| Остатки.КФО КАК КФО,
| Остатки.СуммаОстаток КАК Сумма
|ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Остатки(
| &Дата,
| Счет В ИЕРАРХИИ (&Счет20531),
| &ВидыСубконто,
| Организация = &Организация) КАК Остатки
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Дети КАК Дети
| ПО Дети.Контрагент = Остатки.Субконто1
|ГДЕ
| Остатки.СуммаОстаток <> 0
|
|УПОРЯДОЧИТЬ ПО
| Остатки.Субконто1,
| Остатки.Субконто2";
Запрос.УстановитьПараметр("Дата", Объект.Дата);
Запрос.УстановитьПараметр("Счет20531", Счет20531);
Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Выборка = Запрос.Выполнить().Выбрать();
Объект.Задолженность.Очистить();
ЗначенияИФО = Новый Соответствие;
ЗначенияКФО = Новый Соответствие;
Пока Выборка.Следующий() Цикл
ЗначенияИФО.Вставить(Выборка.ИФО, Истина);
ЗначенияКФО.Вставить(Выборка.КФО, Истина);
НоваяСтрока = Объект.Задолженность.Добавить();
НоваяСтрока.Контрагент = Выборка.Контрагент;
НоваяСтрока.Договор = Выборка.Договор;
НоваяСтрока.Ребенок = Выборка.Ребенок;
НоваяСтрока.КПС = Выборка.КПС;
НоваяСтрока.Сумма = Выборка.Сумма;
КонецЦикла;
Если Объект.Задолженность.Количество() = 0 Тогда
ВывестиДиагностикуЗаполненияПоОстаткам(Счет20531);
Возврат;
КонецЕсли;
Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма");
// Разрезов ИФО и КФО в табличной части нет - они задаются на весь документ,
// поэтому переносим их в шапку, если в остатках они единственные.
ЗаполнитьИФОиКФОПоОстаткам(ЗначенияИФО, ЗначенияКФО);
Если ЗначенияИФО.Количество() > 1 ИЛИ ЗначенияКФО.Количество() > 1 Тогда
ОбщегоНазначения.СообщитьПользователю(
"Остатки найдены в разрезе нескольких ИФО и/или КФО, а в документе ИФО и КФО задаются"
+ " на весь документ. Проверьте их заполнение и при необходимости перенесите"
+ " сальдо отдельными документами.");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьИФОиКФОПоОстаткам(ЗначенияИФО, ЗначенияКФО)
Если ЗначенияКФО.Количество() = 1 И НЕ ЗначениеЗаполнено(Объект.КФО) Тогда
Для Каждого КлючИЗначение Из ЗначенияКФО Цикл
Объект.КФО = КлючИЗначение.Ключ;
КонецЦикла;
КонецЕсли;
Если ЗначенияИФО.Количество() = 1 И НЕ ЗначениеЗаполнено(Объект.ИФО) Тогда
Для Каждого КлючИЗначение Из ЗначенияИФО Цикл
Объект.ИФО = КлючИЗначение.Ключ;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВывестиДиагностикуЗаполненияПоОстаткам(Счет20531)
// Проверяем, есть ли вообще остатки по счёту на дату документа - без отборов
// по организации и субконто. Это позволяет понять, что именно не совпало.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК ВсегоСтрок
|ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Остатки(
| &Дата,
| Счет В ИЕРАРХИИ (&Счет20531), , ) КАК Остатки";
Запрос.УстановитьПараметр("Дата", Объект.Дата);
Запрос.УстановитьПараметр("Счет20531", Счет20531);
Выборка = Запрос.Выполнить().Выбрать();
ВсегоСтрок = 0;
Если Выборка.Следующий() Тогда
ВсегоСтрок = Выборка.ВсегоСтрок;
КонецЕсли;
ДатаДокумента = Формат(Объект.Дата, "ДЛФ=DD");
Если ВсегоСтрок = 0 Тогда
ОбщегоНазначения.СообщитьПользователю(
"Остатков по счёту " + Счет20531.Код + " на " + ДатаДокумента
+ " нет ни по одной организации. Проверьте дату документа.");
Иначе
ОбщегоНазначения.СообщитьПользователю(
"Остатки по счёту " + Счет20531.Код + " на " + ДатаДокумента + " есть ("
+ ВсегоСтрок + " стр.), но не отобраны по организации " + Строка(Объект.Организация)
+ " и/или по субконто счёта. Проверьте организацию в документе.");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоДокументуНачисленияНаСервере(ДокументНачисленияСсылка)
Если НЕ ЗначениеЗаполнено(ДокументНачисленияСсылка) Тогда
Возврат;
КонецЕсли;
// Заполнение возможно только на основании проведённого документа начисления.
Если НЕ ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументНачисленияСсылка, "Проведен") Тогда
ОбщегоНазначения.СообщитьПользователю(
"Заполнение документа возможно только на основании проведённого документа начисления родительской платы.");
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НачислениеРодительскойПлаты.Организация КАК Организация,
| НачислениеРодительскойПлаты.ИФО КАК ИФО,
| НачислениеРодительскойПлаты.Ответственный КАК Ответственный,
| НачислениеРодительскойПлаты.НачалоПериода КАК НачалоПериода,
| НачислениеРодительскойПлаты.Дата КАК ДатаДокумента
|ИЗ
| Документ.НачислениеРодительскойПлаты КАК НачислениеРодительскойПлаты
|ГДЕ
| НачислениеРодительскойПлаты.Ссылка = &Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| НачислениеРодительскойПлатыНачисления.Контрагент КАК Контрагент,
| НачислениеРодительскойПлатыНачисления.ДоговорКонтрагента КАК Договор,
| НачислениеРодительскойПлатыНачисления.Ребенок КАК Ребенок,
| НачислениеРодительскойПлатыНачисления.ИДСтроки КАК ИДСтроки,
| НачислениеРодительскойПлатыНачисления.Сумма КАК Сумма
|ИЗ
| Документ.НачислениеРодительскойПлаты.Начисления КАК НачислениеРодительскойПлатыНачисления
|ГДЕ
| НачислениеРодительскойПлатыНачисления.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ДокументНачисленияСсылка);
Результаты = Запрос.ВыполнитьПакет();
ВыборкаШапка = Результаты[0].Выбрать();
Если НЕ ВыборкаШапка.Следующий() Тогда
Возврат;
КонецЕсли;
Объект.Организация = ВыборкаШапка.Организация;
Объект.Ответственный = ВыборкаШапка.Ответственный;
Объект.ДокументНачисления = ДокументНачисленияСсылка;
Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО") Тогда
Объект.ИФО = ВыборкаШапка.ИФО;
КонецЕсли;
Если ЗначениеЗаполнено(ВыборкаШапка.НачалоПериода) Тогда
Объект.Период = ВыборкаШапка.НачалоПериода;
Иначе
Объект.Период = НачалоМесяца(ВыборкаШапка.ДатаДокумента);
КонецЕсли;
Объект.ЦБ = ПС_РаботаСКонтрагентами.КонтрагентЦБПоУмолчанию();
Объект.Задолженность.Очистить();
Объект.СуммаДокумента = 0;
ВыборкаСтроки = Результаты[1].Выбрать();
Пока ВыборкаСтроки.Следующий() Цикл
НоваяСтрока = Объект.Задолженность.Добавить();
НоваяСтрока.Контрагент = ВыборкаСтроки.Контрагент;
НоваяСтрока.Договор = ВыборкаСтроки.Договор;
НоваяСтрока.Ребенок = ВыборкаСтроки.Ребенок;
НоваяСтрока.ИДСтроки = ВыборкаСтроки.ИДСтроки;
НоваяСтрока.Сумма = ВыборкаСтроки.Сумма;
Объект.СуммаДокумента = Объект.СуммаДокумента + ВыборкаСтроки.Сумма;
КонецЦикла;
// КФО документа и КПС строк - из проводок документа начисления.
ПС_УчетРодительскойПлаты.ЗаполнитьРеквизитыУчетаПоПроводкам(Объект, ДокументНачисленияСсылка);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьБухгалтерскиеЗаписиДокумента(ДокументСсылка)
ПараметрыФормы = Новый Структура;
Отбор = Новый Структура("Регистратор", ДокументСсылка);
ПараметрыФормы.Вставить("Отбор", Отбор);
ОткрытьФорму("РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ФормаСписка",
ПараметрыФормы,
ЭтотОбъект,
УникальныйИдентификатор);
КонецПроцедуры
#КонецОбласти
@@ -1,26 +0,0 @@
// ПС_ПередачаЗадолженностиВЦБ: модуль менеджера.
// Печатная форма извещения (ф. 0504805, ред. 103н) - сторона отправителя (учреждение).
// Заполнение макета выполняет общая логика подсистемы: ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805.
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
// Формирует табличный документ извещения (ф. 0504805, ред. 103н).
// Вызывается из модуля формы документа кнопкой "Печать".
//
// Параметры:
// ДокументСсылка - ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ - печатаемый документ.
//
// Возвращаемое значение:
// ТабличныйДокумент
//
Функция СформироватьПечатныеФормыИзвещений(ДокументСсылка) Экспорт
Возврат ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805(ДокументСсылка);
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -1,259 +0,0 @@
// ПС_ПередачаЗадолженностиВЦБ: модуль объекта.
// Сторона детского сада: Дт 304.04.130 — Кт 205.31.66X.
// Проводки формируются в процедуре ОбработкаПроведения прямым заполнением
// набора записей регистра бухгалтерии ЖурналПроводокЕПСБУ.
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.НачислениеРодительскойПлаты") Тогда
// Заполнение возможно только на основании проведённого документа начисления.
Если НЕ ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеЗаполнения, "Проведен") Тогда
ОбщегоНазначения.СообщитьПользователю(
"Заполнение документа возможно только на основании проведённого документа начисления родительской платы.");
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НачислениеРодительскойПлаты.Организация КАК Организация,
| НачислениеРодительскойПлаты.ИФО КАК ИФО,
| НачислениеРодительскойПлаты.Ответственный КАК Ответственный,
| НачислениеРодительскойПлаты.НачалоПериода КАК НачалоПериода,
| НачислениеРодительскойПлаты.Дата КАК ДатаДокумента
|ИЗ
| Документ.НачислениеРодительскойПлаты КАК НачислениеРодительскойПлаты
|ГДЕ
| НачислениеРодительскойПлаты.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ДанныеЗаполнения);
ВыборкаШапка = Запрос.Выполнить().Выбрать();
Если ВыборкаШапка.Следующий() Тогда
Организация = ВыборкаШапка.Организация;
Ответственный = ВыборкаШапка.Ответственный;
ДокументНачисления = ДанныеЗаполнения;
// Учёт по ИФО ведётся только при включённой функциональной опции.
Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО") Тогда
ИФО = ВыборкаШапка.ИФО;
КонецЕсли;
Если ЗначениеЗаполнено(ВыборкаШапка.НачалоПериода) Тогда
Период = ВыборкаШапка.НачалоПериода;
Иначе
Период = НачалоМесяца(ВыборкаШапка.ДатаДокумента);
КонецЕсли;
КонецЕсли;
ЦБ = ПС_РаботаСКонтрагентами.КонтрагентЦБПоУмолчанию();
ЗапросСтроки = Новый Запрос;
ЗапросСтроки.Текст =
"ВЫБРАТЬ
| НачислениеРодительскойПлатыНачисления.Контрагент КАК Контрагент,
| НачислениеРодительскойПлатыНачисления.ДоговорКонтрагента КАК Договор,
| НачислениеРодительскойПлатыНачисления.Ребенок КАК Ребенок,
| НачислениеРодительскойПлатыНачисления.ИДСтроки КАК ИДСтроки,
| НачислениеРодительскойПлатыНачисления.Сумма КАК Сумма
|ИЗ
| Документ.НачислениеРодительскойПлаты.Начисления КАК НачислениеРодительскойПлатыНачисления
|ГДЕ
| НачислениеРодительскойПлатыНачисления.Ссылка = &Ссылка";
ЗапросСтроки.УстановитьПараметр("Ссылка", ДанныеЗаполнения);
ВыборкаСтроки = ЗапросСтроки.Выполнить().Выбрать();
Пока ВыборкаСтроки.Следующий() Цикл
НоваяСтрока = Задолженность.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаСтроки);
СуммаДокумента = СуммаДокумента + ВыборкаСтроки.Сумма;
КонецЦикла;
// КФО документа и КПС строк - из проводок документа начисления.
ПС_УчетРодительскойПлаты.ЗаполнитьРеквизитыУчетаПоПроводкам(ЭтотОбъект, ДанныеЗаполнения);
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.ЖурналПроводокЕПСБУ.Очистить();
Движения.ЖурналПроводокЕПСБУ.Записывать = Истина;
Движения.ЖурналПроводокЕПСБУ.ДополнительныеСвойства.Вставить("НеФормироватьУчетныеДанныеИзПроводок");
СчетКт = БухгалтерскийУчет.СчетПоКоду("205.31", Дата, Организация);
// Счёт, корреспондирующий со счётом расчётов по доходам, и его КЭК задаются реквизитами
// документа (по умолчанию 304.04 и 131) и могут быть изменены пользователем.
СчетДт = СчетКорреспондент;
Если НЕ ЗначениеЗаполнено(СчетДт) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не заполнен счёт, корреспондирующий со счётом 205.31. Проведение невозможно.",
, "СчетКорреспондент", "Объект", Отказ);
Возврат;
КонецЕсли;
ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт);
// КПС строк наследуется из проводок документа начисления (см. ЗаполнитьКПССтрок),
// КЭК счёта 205.31 определяется по настройкам счёта и типу контрагента (подстатья КОСГУ).
Для Каждого СтрокаЗадолженности Из Задолженность Цикл
Движение = Движения.ЖурналПроводокЕПСБУ.Добавить();
Движение.Период = Дата;
Движение.Организация = Организация;
Движение.ИФО = ИФО;
Движение.КФО = КФО;
Движение.СчетДт = СчетДт;
Движение.СчетКт = СчетКт;
Движение.КПСДт = СтрокаЗадолженности.КПС;
Движение.КПСКт = СтрокаЗадолженности.КПС;
Движение.КЭКДт = КЭККорреспондент;
Движение.КЭККт = КЭКПроводки(СчетКт, "Кт", СтрокаЗадолженности.Контрагент, СтрокаЗадолженности.Договор);
Движение.Сумма = СтрокаЗадолженности.Сумма;
Движение.ЖурналОпераций = ЖурналОпераций;
Движение.Содержание = "Передача задолженности по родительской плате в ЦБ";
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.КорреспондентыПоВнутреннимРасчетам] = ЦБ;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты] = СтрокаЗадолженности.Контрагент;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Договоры] = СтрокаЗадолженности.Договор;
КонецЦикла;
// В конфигурации есть подписка на событие "ОбработкаПроведения" (ЗаписатьТаблицуПроводок),
// которая выполняется после модуля объекта и перезаписывает проводки документа: если таблица
// проводок не передана, набор записей регистра очищается. Поэтому передаём сформированную
// таблицу через ДополнительныеСвойства.ДанныеАвтоПроведения.ТаблицаПроводок.
БухгалтерскиеОперацииСервер.ИнициализироватьБухгалтерскиеОперации(ЭтотОбъект);
ДополнительныеСвойства.ДанныеАвтоПроведения.ТаблицаПроводок = Движения.ЖурналПроводокЕПСБУ.Выгрузить();
КонецПроцедуры
Процедура ОбработкаУдаленияПроведения(Отказ)
Движения.ЖурналПроводокЕПСБУ.Записывать = Истина;
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
ЗаполнитьРеквизитыПоУмолчанию();
СуммаДокумента = Задолженность.Итог("Сумма");
ЗаполнитьКПССтрок();
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если НЕ ЗначениеЗаполнено(Организация) Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнена организация (учреждение-сад)", , "Организация", "Объект", Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ЦБ) Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнен получатель - ЦБ (администратор доходов)", , "ЦБ", "Объект", Отказ);
КонецЕсли;
Если НЕ ПередачаСальдо И НЕ ЗначениеЗаполнено(ДокументНачисления) Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнен документ начисления родительской платы", , "ДокументНачисления", "Объект", Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(КФО) Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнен КФО", , "КФО", "Объект", Отказ);
КонецЕсли;
Если Задолженность.Количество() = 0 Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнена табличная часть ""Задолженность""", , "Задолженность", "Объект", Отказ);
Иначе
Для Каждого СтрокаЗадолженности Из Задолженность Цикл
Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.КПС) Тогда
ТекстСообщения = "Не заполнен КПС строки табличной части ""Задолженность"".";
Если НЕ ПередачаСальдо Тогда
ТекстСообщения = ТекстСообщения
+ " Заполнение возможно только на основании проведённого документа начисления родительской платы.";
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Задолженность", "Объект", Отказ);
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
СуммаПоТаблице = Задолженность.Итог("Сумма");
Если СуммаДокумента <> СуммаПоТаблице Тогда
ОбщегоНазначения.СообщитьПользователю("Сумма документа не совпадает с итогом по табличной части", , "СуммаДокумента", "Объект", Отказ);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Заполняет счёт, корреспондирующий со счётом расчётов по доходам (205.31), и его КЭК
// значениями по умолчанию, если они не заданы пользователем.
//
Процедура ЗаполнитьРеквизитыПоУмолчанию()
Если НЕ ЗначениеЗаполнено(СчетКорреспондент) Тогда
СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(КЭККорреспондент) Тогда
КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию();
КонецЕсли;
КонецПроцедуры
// Заполняет строки табличной части "Задолженность" КПС, унаследованным
// из проводок документа начисления родительской платы.
//
Процедура ЗаполнитьКПССтрок()
// В режиме передачи начального сальдо КПС строк заполняется по остаткам счёта 205.31,
// а не по проводкам документа начисления.
Если ПередачаСальдо Тогда
Возврат;
КонецЕсли;
ПС_УчетРодительскойПлаты.ЗаполнитьРеквизитыУчетаПоПроводкам(ЭтотОбъект, ДокументНачисления);
КонецПроцедуры
// Возвращает КЭК проводки, определённый по настройкам счёта
// и типу контрагента (подстатья КОСГУ).
//
// Параметры:
// Счет - ПланСчетовСсылка.ЕПСБУ - счёт проводки.
// ДтКт - Строка - сторона проводки: "Дт" или "Кт".
// Субконто1 - Произвольный - значение первого субконто проводки.
// Субконто2 - Произвольный - значение второго субконто проводки.
//
// Возвращаемое значение:
// СправочникСсылка.КОСГУ - КЭК проводки.
//
Функция КЭКПроводки(Счет, ДтКт, Субконто1 = Неопределено, Субконто2 = Неопределено)
ПараметрыКЭК = БухгалтерскийУчетКлиентСервер.ПараметрыРасчетаКЭКПроводки();
ПараметрыКЭК.Организация = Организация;
ПараметрыКЭК.ИФО = ИФО;
ПараметрыКЭК.КФО = КФО;
ПараметрыКЭК.Дата = Дата;
ПараметрыКЭК.Счет = Счет;
ПараметрыКЭК.ДтКт = ДтКт;
ПараметрыКЭК.Субконто1 = Субконто1;
ПараметрыКЭК.Субконто2 = Субконто2;
Возврат БухгалтерскийУчет.КЭКПроводки(ПараметрыКЭК);
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -52,23 +52,19 @@
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormField"> <items xsi:type="form:FormField">
<name>ДокументПередачи</name> <name>Учреждение</name>
<id>22</id> <id>110</id>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
<common>true</common> <common>true</common>
</userVisible> </userVisible>
<dataPath xsi:type="form:DataPath"> <dataPath xsi:type="form:DataPath">
<segments>Объект.ДокументПередачи</segments> <segments>Объект.Учреждение</segments>
</dataPath> </dataPath>
<handlers>
<event>OnChange</event>
<name>ДокументПередачиПриИзменении</name>
</handlers>
<extendedTooltip> <extendedTooltip>
<name>ДокументПередачиРасширеннаяПодсказка</name> <name>УчреждениеРасширеннаяПодсказка</name>
<id>24</id> <id>112</id>
<type>Label</type> <type>Label</type>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
@@ -77,12 +73,12 @@
</extInfo> </extInfo>
</extendedTooltip> </extendedTooltip>
<contextMenu> <contextMenu>
<name>ДокументПередачиКонтекстноеМеню</name> <name>УчреждениеКонтекстноеМеню</name>
<id>23</id> <id>111</id>
<autoFill>true</autoFill> <autoFill>true</autoFill>
</contextMenu> </contextMenu>
<type>InputField</type> <type>InputField</type>
<editMode>EnterOnInput</editMode> <editMode>Enter</editMode>
<showInHeader>true</showInHeader> <showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign> <headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter> <showInFooter>true</showInFooter>
@@ -90,7 +86,6 @@
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap> <wrap>true</wrap>
<extendedEditMultipleValues>true</extendedEditMultipleValues>
<chooseType>true</chooseType> <chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled> <typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit> <textEdit>true</textEdit>
@@ -255,48 +250,6 @@
<textSize>Normal</textSize> <textSize>Normal</textSize>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormField">
<name>Учреждение</name>
<id>13</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.Учреждение</segments>
</dataPath>
<extendedTooltip>
<name>УчреждениеРасширеннаяПодсказка</name>
<id>15</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>УчреждениеКонтекстноеМеню</name>
<id>14</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>EnterOnInput</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<extendedEditMultipleValues>true</extendedEditMultipleValues>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -732,6 +685,276 @@
<textSize>Normal</textSize> <textSize>Normal</textSize>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormField">
<name>ЗадолженностьЛицевойСчет</name>
<id>113</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>115</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗадолженностьЗадолженностьЛицевойСчетКонтекстноеМеню</name>
<id>114</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЗадолженностьНазначениеПлатежа</name>
<id>116</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>118</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗадолженностьЗадолженностьНазначениеПлатежаКонтекстноеМеню</name>
<id>117</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЗадолженностьРасчетныйСчет</name>
<id>119</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>121</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗадолженностьЗадолженностьРасчетныйСчетКонтекстноеМеню</name>
<id>120</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЗадолженностьГруппа</name>
<id>122</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>124</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗадолженностьЗадолженностьГруппаКонтекстноеМеню</name>
<id>123</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЗадолженностьПериодОплаты</name>
<id>125</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>127</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗадолженностьЗадолженностьПериодОплатыКонтекстноеМеню</name>
<id>126</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЗадолженностьДатаПлатежа</name>
<id>128</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>130</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗадолженностьЗадолженностьДатаПлатежаКонтекстноеМеню</name>
<id>129</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<autoCommandBar> <autoCommandBar>
<name>ЗадолженностьКоманднаяПанель</name> <name>ЗадолженностьКоманднаяПанель</name>
<id>30</id> <id>30</id>
@@ -882,6 +1105,50 @@
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>ГруппаСтраницыОбщихДанных</name> <name>ГруппаСтраницыОбщихДанных</name>
<id>88</id> <id>88</id>
<items xsi:type="form:FormField">
<name>ПринятиеПлатежей</name>
<id>138</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>140</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПринятиеПлатежейКонтекстноеМеню</name>
<id>139</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<hyperlink>true</hyperlink>
<border xsi:type="core:BorderDef">
<width>1</width>
</border>
</extInfo>
</items>
<items xsi:type="form:FormField"> <items xsi:type="form:FormField">
<name>ИФО</name> <name>ИФО</name>
<id>10</id> <id>10</id>
@@ -969,6 +1236,46 @@
<textSize>Normal</textSize> <textSize>Normal</textSize>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormField">
<name>ИзвещениеИсходящее</name>
<id>135</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ИзвещениеИсходящее</segments>
</dataPath>
<extendedTooltip>
<name>ИзвещениеИсходящееРасширеннаяПодсказка</name>
<id>137</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИзвещениеИсходящееКонтекстноеМеню</name>
<id>136</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<hyperlink>true</hyperlink>
<border xsi:type="core:BorderDef">
<width>1</width>
</border>
</extInfo>
</items>
<items xsi:type="form:FormField"> <items xsi:type="form:FormField">
<name>Комментарий</name> <name>Комментарий</name>
<id>81</id> <id>81</id>
@@ -1014,43 +1321,6 @@
<textSize>Normal</textSize> <textSize>Normal</textSize>
</extInfo> </extInfo>
</items> </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"> <items xsi:type="form:FormField">
<name>СчетКорреспондент</name> <name>СчетКорреспондент</name>
<id>97</id> <id>97</id>
@@ -1323,6 +1593,110 @@
<placementArea>UserCmds</placementArea> <placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:Button">
<name>ЗаполнитьПоПоступившимПлатежам</name>
<id>106</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаЗаполнитьПоПоступившимПлатежамРасширеннаяПодсказка</name>
<id>107</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ЗаполнитьПоПоступившимПлатежам</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>СоздатьПринятиеПлатежей</name>
<id>108</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСоздатьПринятиеПлатежейРасширеннаяПодсказка</name>
<id>109</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.СоздатьПринятиеПлатежей</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>ПечатьРеестраПлатежей</name>
<id>131</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаПечатьРеестраПлатежейРасширеннаяПодсказка</name>
<id>132</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ПечатьРеестраПлатежей</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>СоздатьИзвещение</name>
<id>133</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСоздатьИзвещениеРасширеннаяПодсказка</name>
<id>134</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.СоздатьИзвещение</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<horizontalAlign>Left</horizontalAlign> <horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill> <autoFill>true</autoFill>
</autoCommandBar> </autoCommandBar>
@@ -1330,6 +1704,10 @@
<event>OnCreateAtServer</event> <event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name> <name>ПриСозданииНаСервере</name>
</handlers> </handlers>
<handlers>
<event>NotificationProcessing</event>
<name>ОбработкаОповещения</name>
</handlers>
<saveWindowSettings>true</saveWindowSettings> <saveWindowSettings>true</saveWindowSettings>
<autoTitle>true</autoTitle> <autoTitle>true</autoTitle>
<autoUrl>true</autoUrl> <autoUrl>true</autoUrl>
@@ -1343,7 +1721,7 @@
<name>Объект</name> <name>Объект</name>
<id>1</id> <id>1</id>
<valueType> <valueType>
<types>DocumentObject.ПС_ПринятиеЗадолженностиОтУчреждения</types> <types>DocumentObject.ПС_ПередачаПоступившихПлатежейВУчреждения</types>
</valueType> </valueType>
<view> <view>
<common>true</common> <common>true</common>
@@ -1392,11 +1770,95 @@
</handler> </handler>
</action> </action>
</formCommands> </formCommands>
<formCommands>
<name>ЗаполнитьПоПоступившимПлатежам</name>
<title>
<key>ru</key>
<value>Заполнить по поступившим платежам</value>
</title>
<id>3</id>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ЗаполнитьПоПоступившимПлатежам</name>
</handler>
</action>
</formCommands>
<formCommands>
<name>СоздатьПринятиеПлатежей</name>
<title>
<key>ru</key>
<value>Создать приём платежей</value>
</title>
<id>4</id>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>СоздатьПринятиеПлатежей</name>
</handler>
</action>
</formCommands>
<formCommands>
<name>ПечатьРеестраПлатежей</name>
<title>
<key>ru</key>
<value>Реестр платежей</value>
</title>
<id>5</id>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ПечатьРеестраПлатежей</name>
</handler>
</action>
</formCommands>
<formCommands>
<name>СоздатьИзвещение</name>
<title>
<key>ru</key>
<value>Создать извещение 0504805</value>
</title>
<id>6</id>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>СоздатьИзвещение</name>
</handler>
</action>
</formCommands>
<commandInterface> <commandInterface>
<navigationPanel/> <navigationPanel/>
<commandBar/> <commandBar/>
</commandInterface> </commandInterface>
<extInfo xsi:type="form:DocumentFormExtInfo"> <extInfo xsi:type="form:DocumentFormExtInfo">
<handlers>
<event>BeforeWrite</event>
<name>ПередЗаписью</name>
</handlers>
<handlers>
<event>BeforeWriteAtServer</event>
<name>ПередЗаписьюНаСервере</name>
</handlers>
<handlers>
<event>AfterWriteAtServer</event>
<name>ПослеЗаписиНаСервере</name>
</handlers>
<handlers>
<event>OnReadAtServer</event>
<name>ПриЧтенииНаСервере</name>
</handlers>
<handlers>
<event>AfterWrite</event>
<name>ПослеЗаписи</name>
</handlers>
<repostOnWrite>true</repostOnWrite> <repostOnWrite>true</repostOnWrite>
</extInfo> </extInfo>
</form:Form> </form:Form>
@@ -0,0 +1,496 @@
// ПС_ПередачаПоступившихПлатежейВУчреждения: модуль формы документа.
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
БухгалтерскиеОперацииСервер.ПриСозданииНаСервере(Отказ, СтандартнаяОбработка, Элементы.БухгалтерскаяОперация);
// ИФО показывается только при включённом учёте по ИФО (как в типовых документах).
Элементы.ИФО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО");
// КПС определяется автоматически по настройкам учётной политики.
Элементы.ЗадолженностьКПС.ТолькоПросмотр = Истина;
// Счёт, корреспондирующий со счётом 205.31, и его КЭК: значения по умолчанию.
ЗаполнитьКорреспондирующийСчетПоУмолчанию();
Если НЕ ЗначениеЗаполнено(Объект.Ссылка)
И НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
Объект.Организация = Константы.ОрганизацияЦентрализованнаяБухгалтерия.Получить();
КонецЕсли;
// Состояние внутреннего ЭДО (подсистема БГУ): организация документа уже определена.
ОбщегоНазначенияБГУ.ПриСозданииНаСервере(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
БухгалтерскиеОперацииСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект, Элементы.БухгалтерскаяОперация);
ОбщегоНазначенияБГУ.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
БухгалтерскиеОперацииКлиент.ПередЗаписью(Отказ, ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
БухгалтерскиеОперацииСервер.ПередЗаписью(Отказ, ТекущийОбъект, ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
БухгалтерскиеОперацииКлиент.ПослеЗаписи(ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
БухгалтерскиеОперацииСервер.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
// Обновляет гиперссылку состояния внутреннего ЭДО.
ОбщегоНазначенияБГУКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура Подключаемый_ДекорацияБГУНажатие(Элемент, СтандартнаяОбработка)
ОбщегоНазначенияБГУКлиент.ДекорацияНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыЗадолженность
&НаКлиенте
Процедура ЗадолженностьПриИзменении(Элемент)
Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПечатьИзвещения(Команда)
ТабличныйДокумент = ПечатьИзвещенияНаСервере(Объект.Ссылка);
ТабличныйДокумент.Показать("Извещение (ф. 0504805, ред. 103н) - отправитель");
КонецПроцедуры
&НаКлиенте
Процедура ПечатьРеестраПлатежей(Команда)
ТабличныйДокумент = ПечатьРеестраПлатежейНаСервере(Объект.Ссылка);
ТабличныйДокумент.Показать("Реестр платежей");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьИзвещение(Команда)
Извещение = СоздатьИзвещениеНаСервере();
Если ЗначениеЗаполнено(Извещение) Тогда
ПараметрыФормы = Новый Структура("Ключ", Извещение);
ОткрытьФорму("Документ.ИзвещениеИсходящее.Форма.ФормаДокумента", ПараметрыФормы, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПросмотрБухгалтерскихЗаписей(Команда)
ОткрытьБухгалтерскиеЗаписиДокумента(Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоПоступившимПлатежам(Команда)
ЗаполнитьПоПоступившимПлатежамНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура СоздатьПринятиеПлатежей(Команда)
Принятие = СоздатьПринятиеПлатежейНаСервере();
Если ЗначениеЗаполнено(Принятие) Тогда
ПараметрыФормы = Новый Структура("Ключ", Принятие);
ОткрытьФорму("Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ.Форма.ФормаДокумента",
ПараметрыФормы,
ЭтотОбъект,
Строка(Принятие));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуБГУ(Команда)
ОбщегоНазначенияБГУКлиент.ВыполнитьПодключаемуюКоманду(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция ПечатьИзвещенияНаСервере(ДокументСсылка)
Возврат Документы.ПС_ПередачаПоступившихПлатежейВУчреждения.СформироватьПечатныеФормыИзвещений(ДокументСсылка);
КонецФункции
&НаСервере
Функция ПечатьРеестраПлатежейНаСервере(ДокументСсылка)
Возврат ПС_УчетРодительскойПлаты.ПечатьРеестраПлатежей(ДокументСсылка);
КонецФункции
&НаСервере
Функция СоздатьПринятиеПлатежейНаСервере()
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОбщегоНазначения.СообщитьПользователю("Сначала запишите документ передачи платежей.");
Возврат Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.ПустаяСсылка();
КонецЕсли;
Если НЕ Объект.Проведен Тогда
ОбщегоНазначения.СообщитьПользователю(
"Перед созданием приёма платежей документ передачи должен быть проведён.");
Возврат Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.ПустаяСсылка();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Учреждение) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не заполнено учреждение (получатель) документа передачи.");
Возврат Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.ПустаяСсылка();
КонецЕсли;
// Документ передачи адресный: приём платежей по нему один. Если он уже создан,
// открывается существующий - повторное нажатие не плодит документы.
Если ЗначениеЗаполнено(Объект.ПринятиеПлатежей) Тогда
Существующий = Объект.ПринятиеПлатежей.ПолучитьОбъект();
Если Существующий <> Неопределено И НЕ Существующий.ПометкаУдаления Тогда
Возврат Объект.ПринятиеПлатежей;
КонецЕсли;
КонецЕсли;
Принятие = Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.СоздатьДокумент();
Принятие.Организация = Объект.Учреждение;
Принятие.Заполнить(Объект.Ссылка);
Принятие.Записать(РежимЗаписиДокумента.Запись);
Объект.ПринятиеПлатежей = Принятие.Ссылка;
Записать();
Возврат Принятие.Ссылка;
КонецФункции
&НаСервере
Функция СоздатьИзвещениеНаСервере()
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОбщегоНазначения.СообщитьПользователю("Сначала запишите документ передачи платежей.");
Возврат Документы.ИзвещениеИсходящее.ПустаяСсылка();
КонецЕсли;
Извещение = ПС_УчетРодительскойПлаты.СоздатьИзвещениеПоПередаче(Объект.Ссылка);
Если ЗначениеЗаполнено(Извещение) Тогда
Объект.ИзвещениеИсходящее = Извещение;
Записать();
КонецЕсли;
Возврат Извещение;
КонецФункции
&НаСервере
Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию()
Если НЕ ЗначениеЗаполнено(Объект.СчетКорреспондент) Тогда
Объект.СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.КЭККорреспондент) Тогда
Объект.КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию();
КонецЕсли;
КонецПроцедуры
// Подбирает в табличную часть "Задолженность" поступившие платежи, ещё не переданные
// в учреждения: остатки регистра накопления ПС_ВзаиморасчетыПоРодительскойПлате в разрезе
// квитанций (измерение "ИДСтроки"). Предыдущая передача выбирает остатки, поэтому следующая
// их уже не видит. Реквизиты реестра (лицевой счёт, расчётный счёт, группа, период оплаты,
// назначение платежа) разбираются из назначения платежа строки расшифровки кассового поступления.
//
&НаСервере
Процедура ЗаполнитьПоПоступившимПлатежамНаСервере()
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Заполнение невозможно: не заполнена организация (ЦБ).");
Возврат;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Учреждение) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Заполнение невозможно: не заполнено учреждение (получатель).");
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.ИДСтроки КАК ИДСтроки,
| Остатки.Плательщик КАК Контрагент,
| Остатки.Договор КАК Договор,
| Остатки.Ребенок КАК Ребенок,
| Остатки.КПС КАК КПС,
| Остатки.ИФО КАК ИФО,
| Остатки.КФО КАК КФО,
| Остатки.СуммаОстаток КАК Сумма
|ИЗ
| РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Остатки(
| &МоментВремени,
| Организация = &Организация
| И Учреждение = &Учреждение) КАК Остатки
|ГДЕ
| Остатки.СуммаОстаток <> 0
|УПОРЯДОЧИТЬ ПО
| Остатки.Плательщик,
| Остатки.Договор";
// Поступившие платежи собираются на границу конца дня документа: кассовые поступления
// по умолчанию датируются 23:59:59 и при моменте времени, равном началу дня документа,
// в остатки не попадали.
Запрос.УстановитьПараметр("МоментВремени", КонецДня(Объект.Дата) + 1);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("Учреждение", Объект.Учреждение);
Выборка = Запрос.Выполнить().Выбрать();
Объект.Задолженность.Очистить();
Объект.СуммаДокумента = 0;
ЗначенияИФО = Новый Соответствие;
ЗначенияКФО = Новый Соответствие;
СтрокиОстатков = Новый Массив;
Пока Выборка.Следующий() Цикл
СтрокаОстатка = Новый Структура;
СтрокаОстатка.Вставить("ИДСтроки", Выборка.ИДСтроки);
СтрокаОстатка.Вставить("Контрагент", Выборка.Контрагент);
СтрокаОстатка.Вставить("Договор", Выборка.Договор);
СтрокаОстатка.Вставить("Ребенок", Выборка.Ребенок);
СтрокаОстатка.Вставить("КПС", Выборка.КПС);
СтрокаОстатка.Вставить("Сумма", Выборка.Сумма);
СтрокиОстатков.Добавить(СтрокаОстатка);
ЗначенияИФО.Вставить(Выборка.ИФО, Истина);
ЗначенияКФО.Вставить(Выборка.КФО, Истина);
КонецЦикла;
Если СтрокиОстатков.Количество() = 0 Тогда
ОбщегоНазначения.СообщитьПользователю(
"Поступивших платежей, ещё не переданных в учреждения, не найдено.");
Возврат;
КонецЕсли;
// Расшифровки платежей читаются одним запросом на весь документ.
Расшифровки = РасшифровкиПлатежейПоИД(СтрокиОстатков);
СтрокБезИдентификатора = 0;
СтрокБезРасшифровки = 0;
Для Каждого СтрокаОстатка Из СтрокиОстатков Цикл
НоваяСтрока = Объект.Задолженность.Добавить();
НоваяСтрока.Контрагент = СтрокаОстатка.Контрагент;
НоваяСтрока.Договор = СтрокаОстатка.Договор;
НоваяСтрока.Ребенок = СтрокаОстатка.Ребенок;
НоваяСтрока.КПС = СтрокаОстатка.КПС;
НоваяСтрока.Сумма = СтрокаОстатка.Сумма;
НоваяСтрока.ИДСтроки = СтрокаОстатка.ИДСтроки;
ДанныеРасшифровки = Расшифровки[СтрокаОстатка.ИДСтроки];
Если ДанныеРасшифровки = Неопределено Тогда
// Идентификатор строки пишется в регистр при проведении кассового поступления:
// у документов, проведённых до появления измерения, он пуст.
Если СтрДлина(СокрЛП(СтрокаОстатка.ИДСтроки)) < 38 Тогда
СтрокБезИдентификатора = СтрокБезИдентификатора + 1;
Иначе
СтрокБезРасшифровки = СтрокБезРасшифровки + 1;
КонецЕсли;
Продолжить;
КонецЕсли;
ТекстНазначения = СокрЛП(ДанныеРасшифровки.Примечание);
ДанныеПлатежа = ПС_РазборПлатежейПоРодительскойПлате.РазобратьНазначениеПлатежа(ТекстНазначения);
НоваяСтрока.НазначениеПлатежа = Лев(ТекстНазначения, 200);
НоваяСтрока.ЛицевойСчет = ДанныеПлатежа.ЛицевойСчет;
НоваяСтрока.РасчетныйСчет = ДанныеПлатежа.РасчетныйСчет;
НоваяСтрока.Группа = ДанныеПлатежа.Группа;
НоваяСтрока.ПериодОплаты = ДанныеПлатежа.ПериодОплаты;
НоваяСтрока.ДатаПлатежа = ДанныеРасшифровки.Дата;
КонецЦикла;
Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма");
Если СтрокБезИдентификатора > 0 Тогда
ОбщегоНазначения.СообщитьПользователю(СтрШаблон(
"По %1 строкам в регистре нет идентификатора квитанции: кассовое поступление не перепроведено."
+ " Лицевой счёт, назначение платежа, расчётный счёт, группа, период оплаты и дата платежа"
+ " не заполнены. Перепроведите кассовые поступления и заполните документ заново.",
СтрокБезИдентификатора));
КонецЕсли;
Если СтрокБезРасшифровки > 0 Тогда
ОбщегоНазначения.СообщитьПользователю(СтрШаблон(
"По %1 строкам идентификатор квитанции есть, но строка расшифровки платежа не найдена:"
+ " кассовое поступление изменялось после проведения. Перепроведите кассовые поступления"
+ " и заполните документ заново.", СтрокБезРасшифровки));
КонецЕсли;
// Разрезов ИФО и КФО в табличной части нет - они задаются на весь документ,
// поэтому переносим их в шапку, если в остатках они единственные.
ЗаполнитьИФОиКФОПоОстаткам(ЗначенияИФО, ЗначенияКФО);
Если ЗначенияИФО.Количество() > 1 ИЛИ ЗначенияКФО.Количество() > 1 Тогда
ОбщегоНазначения.СообщитьПользователю(
"Поступившие платежи найдены в разрезе нескольких ИФО и/или КФО, а в документе ИФО и КФО"
+ " задаются на весь документ. Передайте их отдельными документами.");
КонецЕсли;
КонецПроцедуры
// Возвращает расшифровки платежей по идентификаторам строк поступлений.
//
// Параметры:
// СтрокиОстатков - Массив из Структура - строки остатков регистра взаиморасчётов
// с полем "ИДСтроки" вида "<UUID документа>:<номер строки>".
//
// Возвращаемое значение:
// Соответствие из Строка, Структура - расшифровки по идентификатору строки:
// * Примечание - Строка - текст назначения платежа;
// * Дата - Дата - дата кассового поступления.
//
&НаСервере
Функция РасшифровкиПлатежейПоИД(СтрокиОстатков)
Результат = Новый Соответствие;
Идентификаторы = Новый Соответствие;
ДокументыПоступления = Новый Массив;
Для Каждого СтрокаОстатка Из СтрокиОстатков Цикл
Идентификатор = СокрЛП(СтрокаОстатка.ИДСтроки);
Если СтрДлина(Идентификатор) < 38 Тогда
Продолжить;
КонецЕсли;
ИдентификаторДокумента = Лев(Идентификатор, 36);
Если Идентификаторы[ИдентификаторДокумента] <> Неопределено Тогда
Продолжить;
КонецЕсли;
Идентификаторы.Вставить(ИдентификаторДокумента, Истина);
ДокументыПоступления.Добавить(Документы.КассовоеПоступление.ПолучитьСсылку(
Новый УникальныйИдентификатор(ИдентификаторДокумента)));
КонецЦикла;
Если ДокументыПоступления.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Расшифровка.Ссылка КАК Ссылка,
| Расшифровка.НомерСтроки КАК НомерСтроки,
| Расшифровка.Примечание КАК Примечание,
| Расшифровка.Ссылка.Дата КАК Дата
|ИЗ
| Документ.КассовоеПоступление.РасшифровкаПлатежа КАК Расшифровка
|ГДЕ
| Расшифровка.Ссылка В (&ДокументыПоступления)";
Запрос.УстановитьПараметр("ДокументыПоступления", ДокументыПоступления);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Результат.Вставить(
ПС_УчетРодительскойПлаты.ИдентификаторСтрокиПоступления(Выборка.Ссылка, Выборка.НомерСтроки),
Новый Структура("Примечание, Дата", Выборка.Примечание, Выборка.Дата));
КонецЦикла;
Возврат Результат;
КонецФункции
&НаСервере
Процедура ЗаполнитьИФОиКФОПоОстаткам(ЗначенияИФО, ЗначенияКФО)
Если ЗначенияКФО.Количество() = 1 И НЕ ЗначениеЗаполнено(Объект.КФО) Тогда
Для Каждого КлючИЗначение Из ЗначенияКФО Цикл
Объект.КФО = КлючИЗначение.Ключ;
КонецЦикла;
КонецЕсли;
Если ЗначенияИФО.Количество() = 1 И НЕ ЗначениеЗаполнено(Объект.ИФО) Тогда
Для Каждого КлючИЗначение Из ЗначенияИФО Цикл
Объект.ИФО = КлючИЗначение.Ключ;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьБухгалтерскиеЗаписиДокумента(ДокументСсылка)
ПараметрыФормы = Новый Структура;
Отбор = Новый Структура("Регистратор", ДокументСсылка);
ПараметрыФормы.Вставить("Отбор", Отбор);
ОткрытьФорму("РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ФормаСписка",
ПараметрыФормы,
ЭтотОбъект,
"Проводки" + Строка(ДокументСсылка));
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,80 @@
// ПС_ПередачаПоступившихПлатежейВУчреждения: модуль менеджера.
// Печатная форма извещения (ф. 0504805, ред. 103н) - сторона получателя (централизованная бухгалтерия).
// Заполнение макета выполняет общая логика подсистемы: ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805.
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
// Формирует табличный документ извещения (ф. 0504805, ред. 103н).
// Вызывается из модуля формы документа кнопкой "Печать".
//
// Параметры:
// ДокументСсылка - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения - печатаемый документ.
//
// Возвращаемое значение:
// ТабличныйДокумент
//
Функция СформироватьПечатныеФормыИзвещений(ДокументСсылка) Экспорт
Возврат ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805(ДокументСсылка);
КонецФункции
// Заполняет список команд печати документа.
//
// Параметры:
// КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати.
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Документ.ПС_ПередачаПоступившихПлатежейВУчреждения";
КомандаПечати.Идентификатор = "Извещение0504805";
КомандаПечати.Представление = "Извещение (ф. 0504805)";
КомандаПечати.Порядок = 1;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Документ.ПС_ПередачаПоступившихПлатежейВУчреждения";
КомандаПечати.Идентификатор = "РеестрПлатежей";
КомандаПечати.Представление = "Реестр платежей";
КомандаПечати.Порядок = 2;
КонецПроцедуры
// Формирует печатные формы документа для подсистемы БСП "Печать".
//
// Параметры:
// МассивОбъектов - Массив из ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения - печатаемые документы.
// ПараметрыПечати - Структура - параметры печати.
// КоллекцияПечатныхФорм - ТаблицаЗначений - коллекция печатных форм.
// ОбъектыПечати - Соответствие из КлючИЗначение - соответствие объектов печати.
// ПараметрыВывода - Структура - параметры вывода.
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Извещение0504805") Тогда
Для Каждого ДокументСсылка Из МассивОбъектов Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"Извещение0504805",
"Извещение (ф. 0504805)",
ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805(ДокументСсылка));
КонецЦикла;
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "РеестрПлатежей") Тогда
Для Каждого ДокументСсылка Из МассивОбъектов Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"РеестрПлатежей",
"Реестр платежей",
ПС_УчетРодительскойПлаты.ПечатьРеестраПлатежей(ДокументСсылка));
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -0,0 +1,132 @@
// ПС_ПередачаПоступившихПлатежейВУчреждения: модуль объекта.
// Сторона ЦБ — администратор кассовых поступлений. Бухгалтерских проводок документ не формирует:
// учёт ведётся в регистре накопления ПС_ВзаиморасчетыПоРодительскойПлате, а информация
// передаётся учреждению реестром платежей и извещением (ф. 0504805).
// Документ собирает поступившие платежи (приход в регистре накопления
// ПС_ВзаиморасчетыПоРодительскойПлате, сделанный кассовыми поступлениями)
// и передаёт их учреждениям — расход по тому же регистру. Пока передано не всё,
// остаток регистра ненулевой; он и служит контролем полноты передачи.
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Очистить();
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина;
Для Каждого СтрокаЗадолженности Из Задолженность Цикл
// Взаиморасчёты: переданные в учреждение поступившие платежи списываются расходом.
ДвижениеПС = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьРасход();
ДвижениеПС.Период = Дата;
ДвижениеПС.Организация = Организация;
ДвижениеПС.Учреждение = Учреждение;
ДвижениеПС.Плательщик = СтрокаЗадолженности.Контрагент;
ДвижениеПС.Ребенок = СтрокаЗадолженности.Ребенок;
ДвижениеПС.Договор = СтрокаЗадолженности.Договор;
ДвижениеПС.ИФО = ИФО;
ДвижениеПС.КФО = КФО;
ДвижениеПС.КПС = СтрокаЗадолженности.КПС;
ДвижениеПС.Сумма = СтрокаЗадолженности.Сумма;
ДвижениеПС.ВидОперации = Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.ПередачаВУчреждение;
ДвижениеПС.ИДСтроки = СтрокаЗадолженности.ИДСтроки;
КонецЦикла;
КонецПроцедуры
Процедура ОбработкаУдаленияПроведения(Отказ)
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина;
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
ЗаполнитьРеквизитыПоУмолчанию();
СуммаДокумента = Задолженность.Итог("Сумма");
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
// Изменение данных подписанного извещения обесценивает его электронный документ:
// расходящиеся электронные документы аннулируются.
ПС_ВнутреннийЭДОИзвещений.ПС_АннулироватьЭлектронныеДокументыПриИзменении(ЭтотОбъект, Отказ);
// Связанное извещение перезаполняется по актуальным строкам реестра,
// чтобы его печатная форма не разошлась с документом.
ПС_УчетРодительскойПлаты.ОбновитьИзвещениеПриИзмененииДокумента(ЭтотОбъект);
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если НЕ ЗначениеЗаполнено(Организация) Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнена организация (ЦБ)", , "Организация", "Объект", Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(КФО) Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнен КФО", , "КФО", "Объект", Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Учреждение) Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнено учреждение (получатель)", , "Учреждение", "Объект", Отказ);
КонецЕсли;
Если Задолженность.Количество() = 0 Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнена табличная часть ""Задолженность""", , "Задолженность", "Объект", Отказ);
Иначе
Для Каждого СтрокаЗадолженности Из Задолженность Цикл
Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.КПС) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не заполнен КПС строки табличной части ""Задолженность""."
+ " Заполните строки по поступившим платежам.",
, "Задолженность", "Объект", Отказ);
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
СуммаПоТаблице = Задолженность.Итог("Сумма");
Если СуммаДокумента <> СуммаПоТаблице Тогда
ОбщегоНазначения.СообщитьПользователю("Сумма документа не совпадает с итогом по табличной части", , "СуммаДокумента", "Объект", Отказ);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Заполняет счёт, корреспондирующий со счётом расчётов по доходам (205.31), и его КЭК
// значениями по умолчанию, если они не заданы пользователем.
//
Процедура ЗаполнитьРеквизитыПоУмолчанию()
Если НЕ ЗначениеЗаполнено(СчетКорреспондент) Тогда
СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(КЭККорреспондент) Тогда
КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -1186,12 +1186,7 @@
<i>2</i> <i>2</i>
<c> <c>
<f>59</f> <f>59</f>
<tl> <tl/>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content/>
</v8:item>
</tl>
</c> </c>
</c> </c>
<c> <c>
@@ -2360,12 +2355,7 @@
<i>2</i> <i>2</i>
<c> <c>
<f>59</f> <f>59</f>
<tl> <tl/>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content/>
</v8:item>
</tl>
</c> </c>
</c> </c>
<c> <c>
@@ -3992,6 +3982,8 @@
<endColumn>-1</endColumn> <endColumn>-1</endColumn>
</area> </area>
</namedItem> </namedItem>
<groupsBackColor>#000080</groupsBackColor>
<groupsColor>#000080</groupsColor>
<line width="1" gap="false"> <line width="1" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentCellLineType">Solid</v8ui:style> <v8ui:style xsi:type="v8ui:SpreadsheetDocumentCellLineType">Solid</v8ui:style>
</line> </line>
@@ -7,10 +7,10 @@
<listType typeId="313f7384-f4d5-4613-a51a-5ba01bce361e" valueTypeId="6870f642-36c3-4418-8491-b1329f821de2"/> <listType typeId="313f7384-f4d5-4613-a51a-5ba01bce361e" valueTypeId="6870f642-36c3-4418-8491-b1329f821de2"/>
<managerType typeId="0b470f70-79e2-4602-8c62-a6bab7efc1b6" valueTypeId="15323120-9f9d-41ed-874b-079c02729ce9"/> <managerType typeId="0b470f70-79e2-4602-8c62-a6bab7efc1b6" valueTypeId="15323120-9f9d-41ed-874b-079c02729ce9"/>
</producedTypes> </producedTypes>
<name>ПС_ПринятиеЗадолженностиОтУчреждения</name> <name>ПС_ПередачаПоступившихПлатежейВУчреждения</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Принятие в ЦБ начислений от учреждения</value> <value>Передача поступивших платежей в учреждение</value>
</synonym> </synonym>
<useStandardCommands>true</useStandardCommands> <useStandardCommands>true</useStandardCommands>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString> <fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
@@ -18,19 +18,18 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<objectPresentation> <objectPresentation>
<key>ru</key> <key>ru</key>
<value>Принятие задолженности от учреждения</value> <value>Передача поступивших платежей в учреждение</value>
</objectPresentation> </objectPresentation>
<listPresentation> <listPresentation>
<key>ru</key> <key>ru</key>
<value>Принятия в ЦБ начислений от учреждения</value> <value>Передачи поступивших платежей в учреждение</value>
</listPresentation> </listPresentation>
<numberType>String</numberType> <numberType>String</numberType>
<numberLength>9</numberLength> <numberLength>9</numberLength>
<numberAllowedLength>Variable</numberAllowedLength> <numberAllowedLength>Variable</numberAllowedLength>
<checkUnique>true</checkUnique> <checkUnique>true</checkUnique>
<autonumbering>true</autonumbering> <autonumbering>true</autonumbering>
<defaultObjectForm>Document.ПС_ПринятиеЗадолженностиОтУчреждения.Form.ФормаДокумента</defaultObjectForm> <defaultObjectForm>Document.ПС_ПередачаПоступившихПлатежейВУчреждения.Form.ФормаДокумента</defaultObjectForm>
<registerRecords>AccountingRegister.ЖурналПроводокЕПСБУ</registerRecords>
<registerRecords>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате</registerRecords> <registerRecords>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате</registerRecords>
<postInPrivilegedMode>true</postInPrivilegedMode> <postInPrivilegedMode>true</postInPrivilegedMode>
<unpostInPrivilegedMode>true</unpostInPrivilegedMode> <unpostInPrivilegedMode>true</unpostInPrivilegedMode>
@@ -38,7 +37,7 @@
<name>Организация</name> <name>Организация</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Организация (ЦБ)</value> <value>Отправитель (ЦБ)</value>
</synonym> </synonym>
<type> <type>
<types>CatalogRef.Организации</types> <types>CatalogRef.Организации</types>
@@ -64,21 +63,6 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="0da47ff5-1bc8-48ab-93e3-46eb88ab0eef">
<name>Учреждение</name>
<synonym>
<key>ru</key>
<value>Учреждение-отправитель</value>
</synonym>
<type>
<types>CatalogRef.Контрагенты</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="cc277c8f-ac17-4e35-9132-3157c0d8b63d"> <attributes uuid="cc277c8f-ac17-4e35-9132-3157c0d8b63d">
<name>Период</name> <name>Период</name>
<synonym> <synonym>
@@ -116,21 +100,6 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="3ffcb80d-9272-4058-8abf-05d4892eb965">
<name>ДокументПередачи</name>
<synonym>
<key>ru</key>
<value>Документ передачи</value>
</synonym>
<type>
<types>DocumentRef.ПС_ПередачаЗадолженностиВЦБ</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="fd87cd30-1ae1-4f94-bebd-51a89384700a"> <attributes uuid="fd87cd30-1ae1-4f94-bebd-51a89384700a">
<name>Ответственный</name> <name>Ответственный</name>
<synonym> <synonym>
@@ -178,21 +147,6 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </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"> <attributes uuid="bb593e79-8cba-4f74-a6ea-ab74ae09577f">
<name>КЭККорреспондент</name> <name>КЭККорреспондент</name>
<synonym> <synonym>
@@ -223,6 +177,51 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="641b191c-1a0f-4f71-a567-4e874eb470aa">
<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="e2f6cf62-73e1-4145-a2de-583eda594db4">
<name>ИзвещениеИсходящее</name>
<synonym>
<key>ru</key>
<value>Извещение исходящее</value>
</synonym>
<type>
<types>DocumentRef.ИзвещениеИсходящее</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="3e5490df-7a55-4eeb-a4dd-198d4e35b635">
<name>ПринятиеПлатежей</name>
<synonym>
<key>ru</key>
<value>Документ принятия платежей</value>
</synonym>
<type>
<types>DocumentRef.ПС_ПринятиеПоступившихПлатежейИзЦБ</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<forms uuid="2f97f361-ee42-4267-905c-61db24e9229e"> <forms uuid="2f97f361-ee42-4267-905c-61db24e9229e">
<name>ФормаДокумента</name> <name>ФормаДокумента</name>
</forms> </forms>
@@ -287,7 +286,7 @@
<type> <type>
<types>String</types> <types>String</types>
<stringQualifiers> <stringQualifiers>
<length>25</length> <length>50</length>
</stringQualifiers> </stringQualifiers>
</type> </type>
<minValue xsi:type="core:UndefinedValue"/> <minValue xsi:type="core:UndefinedValue"/>
@@ -327,6 +326,108 @@
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
</attributes> </attributes>
<attributes uuid="ad45f7d8-7e98-40e6-8d46-6f3cd5786e60">
<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"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="6b613858-2268-4691-8623-e52eb8d2da56">
<name>НазначениеПлатежа</name>
<synonym>
<key>ru</key>
<value>Назначение платежа</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>200</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="15e5e5da-492a-4ab3-b5bc-f230b72bddf2">
<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"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="2d87d3d9-27e2-4b6e-ad0c-44009b026cd9">
<name>Группа</name>
<synonym>
<key>ru</key>
<value>Группа</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>50</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="32e51cf1-f93d-4608-95a1-ccc93891bf03">
<name>ПериодОплаты</name>
<synonym>
<key>ru</key>
<value>Период оплаты</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>30</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="d424563e-7239-4ca1-a9be-82211157c89f">
<name>ДатаПлатежа</name>
<synonym>
<key>ru</key>
<value>Дата платежа</value>
</synonym>
<type>
<types>Date</types>
<dateQualifiers>
<dateFractions>Date</dateFractions>
</dateQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
</tabularSections> </tabularSections>
<templates uuid="1f448676-6b65-401e-b0a1-8ee291792b49"> <templates uuid="1f448676-6b65-401e-b0a1-8ee291792b49">
<name>ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель</name> <name>ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель</name>
@@ -1,232 +0,0 @@
// ПС_ПринятиеЗадолженностиОтУчреждения: модуль формы документа.
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
БухгалтерскиеОперацииСервер.ПриСозданииНаСервере(Отказ, СтандартнаяОбработка, Элементы.БухгалтерскаяОперация);
// ИФО показывается только при включённом учёте по ИФО (как в типовых документах).
Элементы.ИФО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО");
// КПС определяется автоматически по настройкам учётной политики.
Элементы.ЗадолженностьКПС.ТолькоПросмотр = Истина;
// Счёт, корреспондирующий со счётом 205.31, и его КЭК: значения по умолчанию
// (в режиме начального сальдо наследуются из документа передачи).
ЗаполнитьКорреспондирующийСчетПоУмолчанию();
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
Основание = Неопределено;
Если Параметры.Свойство("Основание", Основание)
И ТипЗнч(Основание) = Тип("ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ") Тогда
Объект.ДокументПередачи = Основание;
ЗаполнитьПоДокументуПередачиНаСервере(Основание);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
Объект.Организация = Константы.ОрганизацияЦентрализованнаяБухгалтерия.Получить();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
БухгалтерскиеОперацииСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект, Элементы.БухгалтерскаяОперация);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
БухгалтерскиеОперацииКлиент.ПередЗаписью(Отказ, ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
БухгалтерскиеОперацииСервер.ПередЗаписью(Отказ, ТекущийОбъект, ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
БухгалтерскиеОперацииКлиент.ПослеЗаписи(ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
БухгалтерскиеОперацииСервер.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПечатьИзвещения(Команда)
ТабличныйДокумент = ПечатьИзвещенияНаСервере(Объект.Ссылка);
ТабличныйДокумент.Показать("Извещение (ф. 0504805, ред. 103н) - получатель");
КонецПроцедуры
&НаКлиенте
Процедура ПросмотрБухгалтерскихЗаписей(Команда)
ОткрытьБухгалтерскиеЗаписиДокумента(Объект.Ссылка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура ДокументПередачиПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.ДокументПередачи) Тогда
ЗаполнитьПоДокументуПередачиНаСервере(Объект.ДокументПередачи);
Иначе
Объект.Задолженность.Очистить();
Объект.СуммаДокумента = 0;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗадолженностьПриИзменении(Элемент)
Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма");
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция ПечатьИзвещенияНаСервере(ДокументСсылка)
Возврат Документы.ПС_ПринятиеЗадолженностиОтУчреждения.СформироватьПечатныеФормыИзвещений(ДокументСсылка);
КонецФункции
&НаСервере
Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию()
Если НЕ ЗначениеЗаполнено(Объект.СчетКорреспондент) Тогда
Объект.СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.КЭККорреспондент) Тогда
Объект.КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоДокументуПередачиНаСервере(ДокументПередачиСсылка)
Если НЕ ЗначениеЗаполнено(ДокументПередачиСсылка) Тогда
Возврат;
КонецЕсли;
// Заполнение возможно только на основании проведённого документа передачи.
Если НЕ ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументПередачиСсылка, "Проведен") Тогда
ОбщегоНазначения.СообщитьПользователю(
"Заполнение документа возможно только на основании проведённого документа передачи задолженности.");
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПередачаЗадолженности.ЦБ КАК Организация,
| ПередачаЗадолженности.Организация КАК Учреждение,
| ПередачаЗадолженности.ИФО КАК ИФО,
| ПередачаЗадолженности.Ответственный КАК Ответственный,
| ПередачаЗадолженности.Период КАК Период
|ИЗ
| Документ.ПС_ПередачаЗадолженностиВЦБ КАК ПередачаЗадолженности
|ГДЕ
| ПередачаЗадолженности.Ссылка = &Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПередачаЗадолженностиЗадолженность.Контрагент КАК Контрагент,
| ПередачаЗадолженностиЗадолженность.Договор КАК Договор,
| ПередачаЗадолженностиЗадолженность.Ребенок КАК Ребенок,
| ПередачаЗадолженностиЗадолженность.ИДСтроки КАК ИДСтроки,
| ПередачаЗадолженностиЗадолженность.Сумма КАК Сумма
|ИЗ
| Документ.ПС_ПередачаЗадолженностиВЦБ.Задолженность КАК ПередачаЗадолженностиЗадолженность
|ГДЕ
| ПередачаЗадолженностиЗадолженность.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ДокументПередачиСсылка);
Результаты = Запрос.ВыполнитьПакет();
ВыборкаШапка = Результаты[0].Выбрать();
Если НЕ ВыборкаШапка.Следующий() Тогда
Возврат;
КонецЕсли;
Объект.Организация = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(ВыборкаШапка.Организация, "Организация (ЦБ)");
Объект.Учреждение = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(ВыборкаШапка.Учреждение, "Учреждение-отправитель");
Объект.Ответственный = ВыборкаШапка.Ответственный;
Объект.Период = ВыборкаШапка.Период;
Объект.ДокументПередачи = ДокументПередачиСсылка;
// Режим начального сальдо и корреспондирующий счёт с КЭК наследуются от документа передачи.
РеквизитыПередачи = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументПередачиСсылка,
"ПередачаСальдо, СчетКорреспондент, КЭККорреспондент");
Объект.ПередачаСальдо = РеквизитыПередачи.ПередачаСальдо;
Объект.СчетКорреспондент = РеквизитыПередачи.СчетКорреспондент;
Объект.КЭККорреспондент = РеквизитыПередачи.КЭККорреспондент;
Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО") Тогда
Объект.ИФО = ВыборкаШапка.ИФО;
КонецЕсли;
Объект.Задолженность.Очистить();
Объект.СуммаДокумента = 0;
ВыборкаСтроки = Результаты[1].Выбрать();
Пока ВыборкаСтроки.Следующий() Цикл
НоваяСтрока = Объект.Задолженность.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаСтроки);
Объект.СуммаДокумента = Объект.СуммаДокумента + ВыборкаСтроки.Сумма;
КонецЦикла;
// КФО документа и КПС строк - из проводок документа передачи.
ПС_УчетРодительскойПлаты.ЗаполнитьРеквизитыУчетаПоПроводкам(Объект, ДокументПередачиСсылка);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьБухгалтерскиеЗаписиДокумента(ДокументСсылка)
ПараметрыФормы = Новый Структура;
Отбор = Новый Структура("Регистратор", ДокументСсылка);
ПараметрыФормы.Вставить("Отбор", Отбор);
ОткрытьФорму("РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ФормаСписка",
ПараметрыФормы,
ЭтотОбъект,
УникальныйИдентификатор);
КонецПроцедуры
#КонецОбласти
@@ -1,26 +0,0 @@
// ПС_ПринятиеЗадолженностиОтУчреждения: модуль менеджера.
// Печатная форма извещения (ф. 0504805, ред. 103н) - сторона получателя (централизованная бухгалтерия).
// Заполнение макета выполняет общая логика подсистемы: ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805.
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
// Формирует табличный документ извещения (ф. 0504805, ред. 103н).
// Вызывается из модуля формы документа кнопкой "Печать".
//
// Параметры:
// ДокументСсылка - ДокументСсылка.ПС_ПринятиеЗадолженностиОтУчреждения - печатаемый документ.
//
// Возвращаемое значение:
// ТабличныйДокумент
//
Функция СформироватьПечатныеФормыИзвещений(ДокументСсылка) Экспорт
Возврат ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805(ДокументСсылка);
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -1,290 +0,0 @@
// ПС_ПринятиеЗадолженностиОтУчреждения: модуль объекта.
// Сторона ЦБ: Дт 205.31.56X — Кт 304.04.130.
// Проводки формируются в процедуре ОбработкаПроведения прямым заполнением
// набора записей регистра бухгалтерии ЖурналПроводокЕПСБУ.
// Кроме проводок документ формирует приход в регистре накопления
// ПС_ВзаиморасчетыПоРодительскойПлате (принятая от учреждения задолженность).
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПС_ПередачаЗадолженностиВЦБ") Тогда
// Заполнение возможно только на основании проведённого документа передачи.
Если НЕ ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеЗаполнения, "Проведен") Тогда
ОбщегоНазначения.СообщитьПользователю(
"Заполнение документа возможно только на основании проведённого документа передачи задолженности.");
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПередачаЗадолженности.ЦБ КАК Организация,
| ПередачаЗадолженности.Организация КАК Учреждение,
| ПередачаЗадолженности.ИФО КАК ИФО,
| ПередачаЗадолженности.Ответственный КАК Ответственный,
| ПередачаЗадолженности.Период КАК Период,
| ПередачаЗадолженности.КФО КАК КФО,
| ПередачаЗадолженности.ПередачаСальдо КАК ПередачаСальдо,
| ПередачаЗадолженности.СчетКорреспондент КАК СчетКорреспондент,
| ПередачаЗадолженности.КЭККорреспондент КАК КЭККорреспондент
|ИЗ
| Документ.ПС_ПередачаЗадолженностиВЦБ КАК ПередачаЗадолженности
|ГДЕ
| ПередачаЗадолженности.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ДанныеЗаполнения);
ВыборкаШапка = Запрос.Выполнить().Выбрать();
Если ВыборкаШапка.Следующий() Тогда
// Организация на стороне ЦБ — берём организацию-получатель из передачи (это и есть ЦБ).
ОрганизацияЦБ = ВыборкаШапка.Организация;
Если ЗначениеЗаполнено(ОрганизацияЦБ) Тогда
Организация = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(ОрганизацияЦБ, "Организация (ЦБ)");
КонецЕсли;
// Учреждение-отправитель (ПБС) — берём организацию-отправитель из передачи
// (там тип CatalogRef.Организации), а в нашем документе нужен CatalogRef.Контрагенты.
УчреждениеОрганизация = ВыборкаШапка.Учреждение;
Если ЗначениеЗаполнено(УчреждениеОрганизация) Тогда
Учреждение = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(УчреждениеОрганизация, "Учреждение-отправитель");
КонецЕсли;
Ответственный = ВыборкаШапка.Ответственный;
Период = ВыборкаШапка.Период;
КФО = ВыборкаШапка.КФО;
ДокументПередачи = ДанныеЗаполнения;
// Режим начального сальдо и корреспондирующий счёт с КЭК наследуются от передачи.
ПередачаСальдо = ВыборкаШапка.ПередачаСальдо;
СчетКорреспондент = ВыборкаШапка.СчетКорреспондент;
КЭККорреспондент = ВыборкаШапка.КЭККорреспондент;
// Учёт по ИФО ведётся только при включённой функциональной опции.
Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО") Тогда
ИФО = ВыборкаШапка.ИФО;
КонецЕсли;
КонецЕсли;
ЗапросСтроки = Новый Запрос;
ЗапросСтроки.Текст =
"ВЫБРАТЬ
| ПередачаЗадолженностиЗадолженность.Контрагент КАК Контрагент,
| ПередачаЗадолженностиЗадолженность.Договор КАК Договор,
| ПередачаЗадолженностиЗадолженность.Ребенок КАК Ребенок,
| ПередачаЗадолженностиЗадолженность.ИДСтроки КАК ИДСтроки,
| ПередачаЗадолженностиЗадолженность.Сумма КАК Сумма
|ИЗ
| Документ.ПС_ПередачаЗадолженностиВЦБ.Задолженность КАК ПередачаЗадолженностиЗадолженность
|ГДЕ
| ПередачаЗадолженностиЗадолженность.Ссылка = &Ссылка";
ЗапросСтроки.УстановитьПараметр("Ссылка", ДанныеЗаполнения);
ВыборкаСтроки = ЗапросСтроки.Выполнить().Выбрать();
Пока ВыборкаСтроки.Следующий() Цикл
НоваяСтрока = Задолженность.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаСтроки);
СуммаДокумента = СуммаДокумента + ВыборкаСтроки.Сумма;
КонецЦикла;
// КФО документа и КПС строк - из проводок документа передачи.
ПС_УчетРодительскойПлаты.ЗаполнитьРеквизитыУчетаПоПроводкам(ЭтотОбъект, ДанныеЗаполнения);
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.ЖурналПроводокЕПСБУ.Очистить();
Движения.ЖурналПроводокЕПСБУ.Записывать = Истина;
Движения.ЖурналПроводокЕПСБУ.ДополнительныеСвойства.Вставить("НеФормироватьУчетныеДанныеИзПроводок");
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Очистить();
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина;
СчетДт = БухгалтерскийУчет.СчетПоКоду("205.31", Дата, Организация);
// Счёт, корреспондирующий со счётом расчётов по доходам, и его КЭК наследуются
// из документа передачи (заполняются при вводе на основании).
СчетКт = СчетКорреспондент;
Если НЕ ЗначениеЗаполнено(СчетКт) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не заполнен счёт, корреспондирующий со счётом 205.31. Проведение невозможно.",
, "СчетКорреспондент", "Объект", Отказ);
Возврат;
КонецЕсли;
ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт);
// КПС строк наследуется из проводок документа передачи (см. ЗаполнитьКПССтрок),
// КЭК счёта 205.31 определяется по настройкам счёта и типу контрагента (подстатья КОСГУ).
Для Каждого СтрокаЗадолженности Из Задолженность Цикл
Движение = Движения.ЖурналПроводокЕПСБУ.Добавить();
Движение.Период = Дата;
Движение.Организация = Организация;
Движение.ИФО = ИФО;
Движение.КФО = КФО;
Движение.СчетДт = СчетДт;
Движение.СчетКт = СчетКт;
Движение.КПСДт = СтрокаЗадолженности.КПС;
Движение.КПСКт = СтрокаЗадолженности.КПС;
Движение.КЭКДт = КЭКПроводки(СчетДт, "Дт", СтрокаЗадолженности.Контрагент, СтрокаЗадолженности.Договор);
Движение.КЭККт = КЭККорреспондент;
Движение.Сумма = СтрокаЗадолженности.Сумма;
Движение.ЖурналОпераций = ЖурналОпераций;
Движение.Содержание = "Принятие задолженности по родительской плате от учреждения";
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты] = СтрокаЗадолженности.Контрагент;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Договоры] = СтрокаЗадолженности.Договор;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.КорреспондентыПоВнутреннимРасчетам] = Учреждение;
// Взаиморасчеты по родительской плате: принятая от учреждения задолженность.
ДвижениеПС = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьПриход();
ДвижениеПС.Период = Дата;
ДвижениеПС.Организация = Организация;
ДвижениеПС.Учреждение = Учреждение;
ДвижениеПС.Плательщик = СтрокаЗадолженности.Контрагент;
ДвижениеПС.Ребенок = СтрокаЗадолженности.Ребенок;
ДвижениеПС.Договор = СтрокаЗадолженности.Договор;
ДвижениеПС.ИФО = ИФО;
ДвижениеПС.КФО = КФО;
ДвижениеПС.КПС = СтрокаЗадолженности.КПС;
ДвижениеПС.Сумма = СтрокаЗадолженности.Сумма;
ДвижениеПС.ВидОперации = ?(ПередачаСальдо,
Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.НачальноеСальдо,
Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.ПринятоОтУчреждения);
ДвижениеПС.ИДСтроки = СтрокаЗадолженности.ИДСтроки;
ДвижениеПС.ДокументПередачи = ДокументПередачи;
КонецЦикла;
// В конфигурации есть подписка на событие "ОбработкаПроведения" (ЗаписатьТаблицуПроводок),
// которая выполняется после модуля объекта и перезаписывает проводки документа: если таблица
// проводок не передана, набор записей регистра очищается. Поэтому передаём сформированную
// таблицу через ДополнительныеСвойства.ДанныеАвтоПроведения.ТаблицаПроводок.
БухгалтерскиеОперацииСервер.ИнициализироватьБухгалтерскиеОперации(ЭтотОбъект);
ДополнительныеСвойства.ДанныеАвтоПроведения.ТаблицаПроводок = Движения.ЖурналПроводокЕПСБУ.Выгрузить();
КонецПроцедуры
Процедура ОбработкаУдаленияПроведения(Отказ)
Движения.ЖурналПроводокЕПСБУ.Записывать = Истина;
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина;
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
ЗаполнитьРеквизитыПоУмолчанию();
СуммаДокумента = Задолженность.Итог("Сумма");
ЗаполнитьКПССтрок();
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если НЕ ЗначениеЗаполнено(Организация) Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнена организация (ЦБ)", , "Организация", "Объект", Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Учреждение) Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнено учреждение (сад-отправитель)", , "Учреждение", "Объект", Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ДокументПередачи) Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнен документ передачи задолженности", , "ДокументПередачи", "Объект", Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(КФО) Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнен КФО", , "КФО", "Объект", Отказ);
КонецЕсли;
Если Задолженность.Количество() = 0 Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнена табличная часть ""Задолженность""", , "Задолженность", "Объект", Отказ);
Иначе
Для Каждого СтрокаЗадолженности Из Задолженность Цикл
Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.КПС) Тогда
ТекстСообщения = "Не заполнен КПС строки табличной части ""Задолженность"".";
Если НЕ ПередачаСальдо Тогда
ТекстСообщения = ТекстСообщения
+ " Заполнение возможно только на основании проведённого документа передачи задолженности.";
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Задолженность", "Объект", Отказ);
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
СуммаПоТаблице = Задолженность.Итог("Сумма");
Если СуммаДокумента <> СуммаПоТаблице Тогда
ОбщегоНазначения.СообщитьПользователю("Сумма документа не совпадает с итогом по табличной части", , "СуммаДокумента", "Объект", Отказ);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Заполняет счёт, корреспондирующий со счётом расчётов по доходам (205.31), и его КЭК
// значениями по умолчанию, если они не заданы пользователем.
//
Процедура ЗаполнитьРеквизитыПоУмолчанию()
Если НЕ ЗначениеЗаполнено(СчетКорреспондент) Тогда
СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(КЭККорреспондент) Тогда
КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию();
КонецЕсли;
КонецПроцедуры
// Заполняет строки табличной части "Задолженность" КПС, унаследованным
// из проводок документа передачи задолженности.
//
Процедура ЗаполнитьКПССтрок()
ПС_УчетРодительскойПлаты.ЗаполнитьРеквизитыУчетаПоПроводкам(ЭтотОбъект, ДокументПередачи);
КонецПроцедуры
// Возвращает КЭК проводки, определённый по настройкам счёта
// и типу контрагента (подстатья КОСГУ).
//
// Параметры:
// Счет - ПланСчетовСсылка.ЕПСБУ - счёт проводки.
// ДтКт - Строка - сторона проводки: "Дт" или "Кт".
// Субконто1 - Произвольный - значение первого субконто проводки.
// Субконто2 - Произвольный - значение второго субконто проводки.
//
// Возвращаемое значение:
// СправочникСсылка.КОСГУ - КЭК проводки.
//
Функция КЭКПроводки(Счет, ДтКт, Субконто1 = Неопределено, Субконто2 = Неопределено)
ПараметрыКЭК = БухгалтерскийУчетКлиентСервер.ПараметрыРасчетаКЭКПроводки();
ПараметрыКЭК.Организация = Организация;
ПараметрыКЭК.ИФО = ИФО;
ПараметрыКЭК.КФО = КФО;
ПараметрыКЭК.Дата = Дата;
ПараметрыКЭК.Счет = Счет;
ПараметрыКЭК.ДтКт = ДтКт;
ПараметрыКЭК.Субконто1 = Субконто1;
ПараметрыКЭК.Субконто2 = Субконто2;
Возврат БухгалтерскийУчет.КЭКПроводки(ПараметрыКЭК);
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -722,6 +722,276 @@
<textSize>Normal</textSize> <textSize>Normal</textSize>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormField">
<name>ЗадолженностьЛицевойСчет</name>
<id>119</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>121</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗадолженностьЗадолженностьЛицевойСчетКонтекстноеМеню</name>
<id>120</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЗадолженностьНазначениеПлатежа</name>
<id>122</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>124</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗадолженностьЗадолженностьНазначениеПлатежаКонтекстноеМеню</name>
<id>123</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЗадолженностьРасчетныйСчет</name>
<id>125</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>127</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗадолженностьЗадолженностьРасчетныйСчетКонтекстноеМеню</name>
<id>126</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЗадолженностьГруппа</name>
<id>128</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>130</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗадолженностьЗадолженностьГруппаКонтекстноеМеню</name>
<id>129</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЗадолженностьПериодОплаты</name>
<id>131</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>133</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗадолженностьЗадолженностьПериодОплатыКонтекстноеМеню</name>
<id>132</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЗадолженностьДатаПлатежа</name>
<id>134</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>136</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗадолженностьЗадолженностьДатаПлатежаКонтекстноеМеню</name>
<id>135</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<autoCommandBar> <autoCommandBar>
<name>ЗадолженностьКоманднаяПанель</name> <name>ЗадолженностьКоманднаяПанель</name>
<id>30</id> <id>30</id>
@@ -873,27 +1143,23 @@
<name>ГруппаСтраницыОперации</name> <name>ГруппаСтраницыОперации</name>
<id>94</id> <id>94</id>
<items xsi:type="form:FormField"> <items xsi:type="form:FormField">
<name>ПередачаСальдо</name> <name>ДокументПередачи</name>
<id>98</id> <id>111</id>
<title>
<key>ru</key>
<value>Передача начального сальдо</value>
</title>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
<common>true</common> <common>true</common>
</userVisible> </userVisible>
<dataPath xsi:type="form:DataPath"> <dataPath xsi:type="form:DataPath">
<segments>Объект.ПередачаСальдо</segments> <segments>Объект.ДокументПередачи</segments>
</dataPath> </dataPath>
<handlers> <handlers>
<event>OnChange</event> <event>OnChange</event>
<name>ПередачаСальдоПриИзменении</name> <name>ДокументПередачиПриИзменении</name>
</handlers> </handlers>
<extendedTooltip> <extendedTooltip>
<name>ПередачаСальдоРасширеннаяПодсказка</name> <name>ДокументПередачиРасширеннаяПодсказка</name>
<id>100</id> <id>113</id>
<type>Label</type> <type>Label</type>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
@@ -902,61 +1168,22 @@
</extInfo> </extInfo>
</extendedTooltip> </extendedTooltip>
<contextMenu> <contextMenu>
<name>ПередачаСальдоКонтекстноеМеню</name> <name>ДокументПередачиКонтекстноеМеню</name>
<id>99</id> <id>112</id>
<autoFill>true</autoFill> <autoFill>true</autoFill>
</contextMenu> </contextMenu>
<type>CheckBoxField</type> <type>LabelField</type>
<editMode>Enter</editMode> <editMode>Enter</editMode>
<showInHeader>true</showInHeader> <showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign> <headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter> <showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/> <extInfo xsi:type="form:LabelFieldExtInfo">
</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> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo"> <hyperlink>true</hyperlink>
<horizontalAlign>Left</horizontalAlign> <border xsi:type="core:BorderDef">
</extInfo> <width>1</width>
</extendedTooltip> </border>
<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> </extInfo>
</items> </items>
<items xsi:type="form:FormField"> <items xsi:type="form:FormField">
@@ -1046,6 +1273,51 @@
<textSize>Normal</textSize> <textSize>Normal</textSize>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormField">
<name>ВидПлатежаВБюджет</name>
<id>116</id>
<title>
<key>ru</key>
<value>Вид платежа в бюджет (аналитика 303.05)</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>118</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВидПлатежаВБюджетКонтекстноеМеню</name>
<id>117</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:FormGroup"> <items xsi:type="form:FormGroup">
<name>ГруппаКорреспондентующегоСчёта</name> <name>ГруппаКорреспондентующегоСчёта</name>
<id>109</id> <id>109</id>
@@ -1170,6 +1442,46 @@
<currentRowUse>Auto</currentRowUse> <currentRowUse>Auto</currentRowUse>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormField">
<name>ИзвещениеВходящее</name>
<id>141</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ИзвещениеВходящее</segments>
</dataPath>
<extendedTooltip>
<name>ИзвещениеВходящееРасширеннаяПодсказка</name>
<id>143</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИзвещениеВходящееКонтекстноеМеню</name>
<id>142</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<hyperlink>true</hyperlink>
<border xsi:type="core:BorderDef">
<width>1</width>
</border>
</extInfo>
</items>
<items xsi:type="form:FormField"> <items xsi:type="form:FormField">
<name>Комментарий</name> <name>Комментарий</name>
<id>87</id> <id>87</id>
@@ -1398,16 +1710,16 @@
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:Button"> <items xsi:type="form:Button">
<name>СоздатьПринятиеЗадолженностиНаОсновании</name> <name>ЗаполнитьПоДокументуПередачи</name>
<id>77</id> <id>114</id>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
<common>true</common> <common>true</common>
</userVisible> </userVisible>
<extendedTooltip> <extendedTooltip>
<name>ФормаСоздатьПринятиеЗадолженностиНаОснованииРасширеннаяПодсказка</name> <name>ФормаЗаполнитьПоДокументуПередачиРасширеннаяПодсказка</name>
<id>78</id> <id>115</id>
<type>Label</type> <type>Label</type>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
@@ -1415,7 +1727,7 @@
<horizontalAlign>Left</horizontalAlign> <horizontalAlign>Left</horizontalAlign>
</extInfo> </extInfo>
</extendedTooltip> </extendedTooltip>
<commandName>Form.Command.СоздатьПринятиеЗадолженностиНаОсновании</commandName> <commandName>Form.Command.ЗаполнитьПоДокументуПередачи</commandName>
<buttonImportance>Normal</buttonImportance> <buttonImportance>Normal</buttonImportance>
<representation>Auto</representation> <representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
@@ -1424,16 +1736,16 @@
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:Button"> <items xsi:type="form:Button">
<name>ЗаполнитьПоОстаткам20531</name> <name>ПечатьРеестраПлатежей</name>
<id>107</id> <id>137</id>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
<common>true</common> <common>true</common>
</userVisible> </userVisible>
<extendedTooltip> <extendedTooltip>
<name>ФормаЗаполнитьПоОстаткам20531РасширеннаяПодсказка</name> <name>ФормаПечатьРеестраПлатежейРасширеннаяПодсказка</name>
<id>108</id> <id>138</id>
<type>Label</type> <type>Label</type>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
@@ -1441,7 +1753,33 @@
<horizontalAlign>Left</horizontalAlign> <horizontalAlign>Left</horizontalAlign>
</extInfo> </extInfo>
</extendedTooltip> </extendedTooltip>
<commandName>Form.Command.ЗаполнитьПоОстаткам20531</commandName> <commandName>Form.Command.ПечатьРеестраПлатежей</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>СоздатьИзвещение</name>
<id>139</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСоздатьИзвещениеРасширеннаяПодсказка</name>
<id>140</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.СоздатьИзвещение</commandName>
<buttonImportance>Normal</buttonImportance> <buttonImportance>Normal</buttonImportance>
<representation>Auto</representation> <representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
@@ -1469,7 +1807,7 @@
<name>Объект</name> <name>Объект</name>
<id>1</id> <id>1</id>
<valueType> <valueType>
<types>DocumentObject.ПС_ПередачаЗадолженностиВЦБ</types> <types>DocumentObject.ПС_ПринятиеПоступившихПлатежейИзЦБ</types>
</valueType> </valueType>
<view> <view>
<common>true</common> <common>true</common>
@@ -1519,10 +1857,10 @@
</action> </action>
</formCommands> </formCommands>
<formCommands> <formCommands>
<name>СоздатьПринятиеЗадолженностиНаОсновании</name> <name>ЗаполнитьПоДокументуПередачи</name>
<title> <title>
<key>ru</key> <key>ru</key>
<value>Создать принятие на основании</value> <value>Заполнить по документу передачи</value>
</title> </title>
<id>3</id> <id>3</id>
<use> <use>
@@ -1530,15 +1868,15 @@
</use> </use>
<action xsi:type="form:FormCommandHandlerContainer"> <action xsi:type="form:FormCommandHandlerContainer">
<handler> <handler>
<name>ПС_СоздатьПринятиеЗадолженностиНаОсновании</name> <name>ЗаполнитьПоДокументуПередачи</name>
</handler> </handler>
</action> </action>
</formCommands> </formCommands>
<formCommands> <formCommands>
<name>ЗаполнитьПоОстаткам20531</name> <name>ПечатьРеестраПлатежей</name>
<title> <title>
<key>ru</key> <key>ru</key>
<value>Заполнить по остаткам счета 205.31</value> <value>Реестр платежей</value>
</title> </title>
<id>4</id> <id>4</id>
<use> <use>
@@ -1546,7 +1884,23 @@
</use> </use>
<action xsi:type="form:FormCommandHandlerContainer"> <action xsi:type="form:FormCommandHandlerContainer">
<handler> <handler>
<name>ЗаполнитьПоОстаткам20531</name> <name>ПечатьРеестраПлатежей</name>
</handler>
</action>
</formCommands>
<formCommands>
<name>СоздатьИзвещение</name>
<title>
<key>ru</key>
<value>Создать извещение 0504805</value>
</title>
<id>5</id>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>СоздатьИзвещение</name>
</handler> </handler>
</action> </action>
</formCommands> </formCommands>
@@ -0,0 +1,271 @@
// ПС_ПринятиеПоступившихПлатежейИзЦБ: модуль формы документа.
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
БухгалтерскиеОперацииСервер.ПриСозданииНаСервере(Отказ, СтандартнаяОбработка, Элементы.БухгалтерскаяОперация);
// ИФО показывается только при включённом учёте по ИФО (как в типовых документах).
Элементы.ИФО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО");
// КПС определяется автоматически по настройкам учётной политики.
Элементы.ЗадолженностьКПС.ТолькоПросмотр = Истина;
// Счёт, корреспондирующий со счётом 205.31, и его КЭК: значения по умолчанию.
ЗаполнитьКорреспондирующийСчетПоУмолчанию();
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
// Сад (получатель) задаётся при открытии формы из документа передачи платежей:
// до заполнения он должен быть известен, иначе строки не подберутся.
ОрганизацияСада = Неопределено;
Если Параметры.Свойство("ОрганизацияСада", ОрганизацияСада)
И ЗначениеЗаполнено(ОрганизацияСада) Тогда
Объект.Организация = ОрганизацияСада;
КонецЕсли;
// Форма открывается командой "Создать приём платежей" документа передачи:
// из него переносятся реквизиты учёта, а строки подбираются по саду документа.
ДокументПередачи = Неопределено;
Если Параметры.Свойство("ДокументПередачи", ДокументПередачи)
И ТипЗнч(ДокументПередачи) = Тип("ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения") Тогда
ДокументОбъект = РеквизитФормыВЗначение("Объект");
ДокументОбъект.Заполнить(ДокументПередачи);
ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.ЦБ) Тогда
Объект.ЦБ = Константы.ОрганизацияЦентрализованнаяБухгалтерия.Получить();
КонецЕсли;
КонецЕсли;
// Состояние внутреннего ЭДО (подсистема БГУ): организация документа уже определена.
ОбщегоНазначенияБГУ.ПриСозданииНаСервере(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
БухгалтерскиеОперацииСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект, Элементы.БухгалтерскаяОперация);
ОбщегоНазначенияБГУ.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
БухгалтерскиеОперацииКлиент.ПередЗаписью(Отказ, ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
БухгалтерскиеОперацииСервер.ПередЗаписью(Отказ, ТекущийОбъект, ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
БухгалтерскиеОперацииКлиент.ПослеЗаписи(ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
БухгалтерскиеОперацииСервер.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
// Обновляет гиперссылку состояния внутреннего ЭДО (подсистема БГУ).
ОбщегоНазначенияБГУКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура Подключаемый_ДекорацияБГУНажатие(Элемент, СтандартнаяОбработка)
ОбщегоНазначенияБГУКлиент.ДекорацияНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДокументПередачиПриИзменении(Элемент)
// При смене документа передачи строки подбираются заново по саду документа.
Если ЗначениеЗаполнено(Объект.ДокументПередачи)
И ЗначениеЗаполнено(Объект.Организация) Тогда
ЗаполнитьПоДокументуПередачиНаСервере();
Иначе
Объект.Задолженность.Очистить();
Объект.СуммаДокумента = 0;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыЗадолженность
&НаКлиенте
Процедура ЗадолженностьПриИзменении(Элемент)
Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПечатьИзвещения(Команда)
ТабличныйДокумент = ПечатьИзвещенияНаСервере(Объект.Ссылка);
ТабличныйДокумент.Показать("Извещение (ф. 0504805, ред. 103н) - получатель");
КонецПроцедуры
&НаКлиенте
Процедура ПечатьРеестраПлатежей(Команда)
ТабличныйДокумент = ПечатьРеестраПлатежейНаСервере(Объект.Ссылка);
ТабличныйДокумент.Показать("Реестр платежей");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьИзвещение(Команда)
Извещение = СоздатьИзвещениеНаСервере();
Если ЗначениеЗаполнено(Извещение) Тогда
ПараметрыФормы = Новый Структура("Ключ", Извещение);
ОткрытьФорму("Документ.ИзвещениеВходящее.Форма.ФормаДокумента", ПараметрыФормы, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПросмотрБухгалтерскихЗаписей(Команда)
ОткрытьБухгалтерскиеЗаписиДокумента(Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоДокументуПередачи(Команда)
Если НЕ ЗначениеЗаполнено(Объект.ДокументПередачи) Тогда
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = "Не заполнен документ передачи платежей.";
СообщениеПользователю.Сообщить();
Возврат;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = "Укажите организацию (учреждение-сад), чтобы подобрать строки.";
СообщениеПользователю.Сообщить();
Возврат;
КонецЕсли;
ЗаполнитьПоДокументуПередачиНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуБГУ(Команда)
ОбщегоНазначенияБГУКлиент.ВыполнитьПодключаемуюКоманду(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция ПечатьИзвещенияНаСервере(ДокументСсылка)
Возврат Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.СформироватьПечатныеФормыИзвещений(ДокументСсылка);
КонецФункции
&НаСервере
Функция ПечатьРеестраПлатежейНаСервере(ДокументСсылка)
Возврат ПС_УчетРодительскойПлаты.ПечатьРеестраПлатежей(ДокументСсылка);
КонецФункции
&НаСервере
Функция СоздатьИзвещениеНаСервере()
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОбщегоНазначения.СообщитьПользователю("Сначала запишите документ принятия платежей.");
Возврат Документы.ИзвещениеВходящее.ПустаяСсылка();
КонецЕсли;
Извещение = ПС_УчетРодительскойПлаты.СоздатьИзвещениеПоПринятию(Объект.Ссылка);
Если ЗначениеЗаполнено(Извещение) Тогда
Объект.ИзвещениеВходящее = Извещение;
Записать();
КонецЕсли;
Возврат Извещение;
КонецФункции
&НаСервере
Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию()
Если НЕ ЗначениеЗаполнено(Объект.СчетКорреспондент) Тогда
Объект.СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.КЭККорреспондент) Тогда
Объект.КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию();
КонецЕсли;
КонецПроцедуры
// Подбирает строки табличной части "Задолженность" из документа передачи по саду
// документа (реквизит "Организация").
//
&НаСервере
Процедура ЗаполнитьПоДокументуПередачиНаСервере()
ДокументОбъект = РеквизитФормыВЗначение("Объект");
ДокументОбъект.Заполнить(Объект.ДокументПередачи);
ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьБухгалтерскиеЗаписиДокумента(ДокументСсылка)
ПараметрыФормы = Новый Структура;
Отбор = Новый Структура("Регистратор", ДокументСсылка);
ПараметрыФормы.Вставить("Отбор", Отбор);
ОткрытьФорму("РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ФормаСписка",
ПараметрыФормы,
ЭтотОбъект,
УникальныйИдентификатор);
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,80 @@
// ПС_ПринятиеПоступившихПлатежейИзЦБ: модуль менеджера.
// Печатная форма извещения (ф. 0504805, ред. 103н) - сторона отправителя (учреждение).
// Заполнение макета выполняет общая логика подсистемы: ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805.
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
// Формирует табличный документ извещения (ф. 0504805, ред. 103н).
// Вызывается из модуля формы документа кнопкой "Печать".
//
// Параметры:
// ДокументСсылка - ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ - печатаемый документ.
//
// Возвращаемое значение:
// ТабличныйДокумент
//
Функция СформироватьПечатныеФормыИзвещений(ДокументСсылка) Экспорт
Возврат ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805(ДокументСсылка);
КонецФункции
// Заполняет список команд печати документа.
//
// Параметры:
// КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати.
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ";
КомандаПечати.Идентификатор = "Извещение0504805";
КомандаПечати.Представление = "Извещение (ф. 0504805)";
КомандаПечати.Порядок = 1;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ";
КомандаПечати.Идентификатор = "РеестрПлатежей";
КомандаПечати.Представление = "Реестр платежей";
КомандаПечати.Порядок = 2;
КонецПроцедуры
// Формирует печатные формы документа для подсистемы БСП "Печать".
//
// Параметры:
// МассивОбъектов - Массив из ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ - печатаемые документы.
// ПараметрыПечати - Структура - параметры печати.
// КоллекцияПечатныхФорм - ТаблицаЗначений - коллекция печатных форм.
// ОбъектыПечати - Соответствие из КлючИЗначение - соответствие объектов печати.
// ПараметрыВывода - Структура - параметры вывода.
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Извещение0504805") Тогда
Для Каждого ДокументСсылка Из МассивОбъектов Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"Извещение0504805",
"Извещение (ф. 0504805)",
ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805(ДокументСсылка));
КонецЦикла;
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "РеестрПлатежей") Тогда
Для Каждого ДокументСсылка Из МассивОбъектов Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"РеестрПлатежей",
"Реестр платежей",
ПС_УчетРодительскойПлаты.ПечатьРеестраПлатежей(ДокументСсылка));
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -0,0 +1,257 @@
// ПС_ПринятиеПоступившихПлатежейИзЦБ: модуль объекта.
// Сторона детского сада, методическая операция 1.3: Дт 303.05.831 — Кт 205.31.660
// (п. 104 Инструкции № 162н) — зачисление суммы в доход бюджета на основании извещения
// от администратора кассовых поступлений.
// Проводки формируются в процедуре ОбработкаПроведения прямым заполнением
// набора записей регистра бухгалтерии ЖурналПроводокЕПСБУ.
// Документ вводится на основании документа передачи платежей ЦБ и принимает
// в саду поступившие платежи этого сада. В регистр взаиморасчётов не пишет:
// его ведёт только ЦБ.
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения") Тогда
// Заполнение возможно только на основании проведённого документа передачи.
Если НЕ ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеЗаполнения, "Проведен") Тогда
ОбщегоНазначения.СообщитьПользователю(
"Заполнение документа возможно только на основании проведённого документа передачи платежей.");
Возврат;
КонецЕсли;
РеквизитыПередачи = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДанныеЗаполнения,
"Дата, Период, ИФО, КФО, Ответственный, СчетКорреспондент, КЭККорреспондент, Организация");
ДокументПередачи = ДанныеЗаполнения;
Дата = РеквизитыПередачи.Дата;
Период = РеквизитыПередачи.Период;
КФО = РеквизитыПередачи.КФО;
Ответственный = РеквизитыПередачи.Ответственный;
СчетКорреспондент = РеквизитыПередачи.СчетКорреспондент;
КЭККорреспондент = РеквизитыПередачи.КЭККорреспондент;
Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоИФО") Тогда
ИФО = РеквизитыПередачи.ИФО;
КонецЕсли;
// Отправитель (ЦБ) определяется по организации документа передачи:
// в документе передачи и в документе сада ЦБ хранится организацией.
ЦБ = РеквизитыПередачи.Организация;
// Строки подбираются по саду документа: сад задаётся реквизитом "Организация".
// Если сад ещё не указан, строки заполняются командой формы после его выбора.
ЗаполнитьСтрокиПоДокументуПередачи(ДанныеЗаполнения);
// Реквизиты и табличная часть заполнены вручную, стандартное заполнение не требуется:
// оно скопировало бы строки всех садов и организацию централизованной бухгалтерии.
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.ЖурналПроводокЕПСБУ.Очистить();
Движения.ЖурналПроводокЕПСБУ.Записывать = Истина;
Движения.ЖурналПроводокЕПСБУ.ДополнительныеСвойства.Вставить("НеФормироватьУчетныеДанныеИзПроводок");
// Методическая операция 1.3: Дт 303.05.831 — Кт 205.31.660 (п. 104 Инструкции № 162н).
СчетДт = БухгалтерскийУчет.СчетПоКоду("303.05", Дата, Организация);
СчетКт = БухгалтерскийУчет.СчетПоКоду("205.31", Дата, Организация);
КЭКДт = Справочники.КОСГУ.НайтиПоКоду("831");
КЭККт = Справочники.КОСГУ.НайтиПоКоду("660");
ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт);
// КПС строк наследуется из строк документа передачи (см. ЗаполнитьСтрокиПоДокументуПередачи).
Для Каждого СтрокаЗадолженности Из Задолженность Цикл
Движение = Движения.ЖурналПроводокЕПСБУ.Добавить();
Движение.Период = Дата;
Движение.Организация = Организация;
Движение.ИФО = ИФО;
Движение.КФО = КФО;
Движение.СчетДт = СчетДт;
Движение.СчетКт = СчетКт;
Движение.КПСДт = СтрокаЗадолженности.КПС;
Движение.КПСКт = СтрокаЗадолженности.КПС;
Движение.КЭКДт = КЭКДт;
Движение.КЭККт = КЭККт;
Движение.Сумма = СтрокаЗадолженности.Сумма;
Движение.ЖурналОпераций = ЖурналОпераций;
Движение.Содержание = "Принятие поступивших платежей по родительской плате из ЦБ";
// Аналитика по счёту 303.05 - вид платежа в бюджет ("Доходы от родительской платы"):
// обобщённая аналитика ожидаемых поступлений, задаётся пользователем в шапке документа.
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.ВидыНалоговИПлатежей] = ВидПлатежаВБюджет;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты] = СтрокаЗадолженности.Контрагент;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Договоры] = СтрокаЗадолженности.Договор;
КонецЦикла;
// В конфигурации есть подписка на событие "ОбработкаПроведения" (ЗаписатьТаблицуПроводок),
// которая выполняется после модуля объекта и перезаписывает проводки документа: если таблица
// проводок не передана, набор записей регистра очищается. Поэтому передаём сформированную
// таблицу через ДополнительныеСвойства.ДанныеАвтоПроведения.ТаблицаПроводок.
БухгалтерскиеОперацииСервер.ИнициализироватьБухгалтерскиеОперации(ЭтотОбъект);
ДополнительныеСвойства.ДанныеАвтоПроведения.ТаблицаПроводок = Движения.ЖурналПроводокЕПСБУ.Выгрузить();
КонецПроцедуры
Процедура ОбработкаУдаленияПроведения(Отказ)
Движения.ЖурналПроводокЕПСБУ.Записывать = Истина;
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
ЗаполнитьРеквизитыПоУмолчанию();
СуммаДокумента = Задолженность.Итог("Сумма");
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
// Изменение данных подписанного извещения обесценивает его электронный документ:
// расходящиеся электронные документы аннулируются.
ПС_ВнутреннийЭДОИзвещений.ПС_АннулироватьЭлектронныеДокументыПриИзменении(ЭтотОбъект, Отказ);
// Связанное извещение перезаполняется по актуальным строкам реестра,
// чтобы его печатная форма не разошлась с документом.
ПС_УчетРодительскойПлаты.ОбновитьИзвещениеПриИзмененииДокумента(ЭтотОбъект);
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если НЕ ЗначениеЗаполнено(Организация) Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнена организация (учреждение-сад)", , "Организация", "Объект", Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ЦБ) Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнен получатель - ЦБ (администратор доходов)", , "ЦБ", "Объект", Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ДокументПередачи) Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнен документ передачи платежей", , "ДокументПередачи", "Объект", Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(КФО) Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнен КФО", , "КФО", "Объект", Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ВидПлатежаВБюджет) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не заполнен вид платежа в бюджет - аналитика по счёту 303.05",
, "ВидПлатежаВБюджет", "Объект", Отказ);
КонецЕсли;
Если Задолженность.Количество() = 0 Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнена табличная часть ""Задолженность""", , "Задолженность", "Объект", Отказ);
Иначе
Для Каждого СтрокаЗадолженности Из Задолженность Цикл
Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.КПС) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не заполнен КПС строки табличной части ""Задолженность""."
+ " Заполните строки по документу передачи.",
, "Задолженность", "Объект", Отказ);
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
СуммаПоТаблице = Задолженность.Итог("Сумма");
Если СуммаДокумента <> СуммаПоТаблице Тогда
ОбщегоНазначения.СообщитьПользователю("Сумма документа не совпадает с итогом по табличной части", , "СуммаДокумента", "Объект", Отказ);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Заполняет счёт, корреспондирующий со счётом расчётов по доходам (205.31), и его КЭК
// значениями по умолчанию, если они не заданы пользователем.
//
Процедура ЗаполнитьРеквизитыПоУмолчанию()
Если НЕ ЗначениеЗаполнено(СчетКорреспондент) Тогда
СчетКорреспондент = ПС_УчетРодительскойПлаты.СчетКорреспондентПоУмолчанию();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(КЭККорреспондент) Тогда
КЭККорреспондент = ПС_УчетРодительскойПлаты.КЭККорреспондентПоУмолчанию();
КонецЕсли;
КонецПроцедуры
// Подбирает строки табличной части "Задолженность" из документа передачи по саду
// документа (реквизит "Организация"). Если сад не указан, табличная часть очищается.
//
// Параметры:
// ДокументПередачиСсылка - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения - документ-основание.
//
Процедура ЗаполнитьСтрокиПоДокументуПередачи(ДокументПередачиСсылка)
Задолженность.Очистить();
СуммаДокумента = 0;
Если НЕ ЗначениеЗаполнено(ДокументПередачиСсылка) ИЛИ НЕ ЗначениеЗаполнено(Организация) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СтрокиПередачи.Контрагент КАК Контрагент,
| СтрокиПередачи.Договор КАК Договор,
| СтрокиПередачи.Ребенок КАК Ребенок,
| СтрокиПередачи.ИДСтроки КАК ИДСтроки,
| СтрокиПередачи.Сумма КАК Сумма,
| СтрокиПередачи.КПС КАК КПС,
| СтрокиПередачи.ЛицевойСчет КАК ЛицевойСчет,
| СтрокиПередачи.НазначениеПлатежа КАК НазначениеПлатежа,
| СтрокиПередачи.РасчетныйСчет КАК РасчетныйСчет,
| СтрокиПередачи.Группа КАК Группа,
| СтрокиПередачи.ПериодОплаты КАК ПериодОплаты,
| СтрокиПередачи.ДатаПлатежа КАК ДатаПлатежа
|ИЗ
| Документ.ПС_ПередачаПоступившихПлатежейВУчреждения.Задолженность КАК СтрокиПередачи
|ГДЕ
| СтрокиПередачи.Ссылка = &ДокументПередачи
| И СтрокиПередачи.Ссылка.Учреждение = &Учреждение";
Запрос.УстановитьПараметр("ДокументПередачи", ДокументПередачиСсылка);
Запрос.УстановитьПараметр("Учреждение", Организация);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Задолженность.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
СуммаДокумента = СуммаДокумента + Выборка.Сумма;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -1186,12 +1186,7 @@
<i>2</i> <i>2</i>
<c> <c>
<f>59</f> <f>59</f>
<tl> <tl/>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content/>
</v8:item>
</tl>
</c> </c>
</c> </c>
<c> <c>
@@ -2360,12 +2355,7 @@
<i>2</i> <i>2</i>
<c> <c>
<f>59</f> <f>59</f>
<tl> <tl/>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content/>
</v8:item>
</tl>
</c> </c>
</c> </c>
<c> <c>
@@ -3992,8 +3982,6 @@
<endColumn>-1</endColumn> <endColumn>-1</endColumn>
</area> </area>
</namedItem> </namedItem>
<groupsBackColor>#000080</groupsBackColor>
<groupsColor>#000080</groupsColor>
<line width="1" gap="false"> <line width="1" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentCellLineType">Solid</v8ui:style> <v8ui:style xsi:type="v8ui:SpreadsheetDocumentCellLineType">Solid</v8ui:style>
</line> </line>
@@ -7,10 +7,10 @@
<listType typeId="b6d30a84-f05e-45db-9b7a-74d83b04e094" valueTypeId="3b6831ae-a9c9-4e03-8fae-e033e8b56bcf"/> <listType typeId="b6d30a84-f05e-45db-9b7a-74d83b04e094" valueTypeId="3b6831ae-a9c9-4e03-8fae-e033e8b56bcf"/>
<managerType typeId="d54b9abc-eabc-4baf-a305-964170119a69" valueTypeId="fba7fba5-fd39-4d09-add2-c0556074729f"/> <managerType typeId="d54b9abc-eabc-4baf-a305-964170119a69" valueTypeId="fba7fba5-fd39-4d09-add2-c0556074729f"/>
</producedTypes> </producedTypes>
<name>ПС_ПередачаЗадолженностиВЦБ</name> <name>ПС_ПринятиеПоступившихПлатежейИзЦБ</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Передача начислений в ЦБ</value> <value>Принятие поступивших платежей из ЦБ</value>
</synonym> </synonym>
<useStandardCommands>true</useStandardCommands> <useStandardCommands>true</useStandardCommands>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString> <fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
@@ -18,18 +18,18 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<objectPresentation> <objectPresentation>
<key>ru</key> <key>ru</key>
<value>Передача задолженности в ЦБ</value> <value>Принятие поступивших платежей из ЦБ</value>
</objectPresentation> </objectPresentation>
<listPresentation> <listPresentation>
<key>ru</key> <key>ru</key>
<value>Передача начислений в ЦБ</value> <value>Принятия поступивших платежей из ЦБ</value>
</listPresentation> </listPresentation>
<numberType>String</numberType> <numberType>String</numberType>
<numberLength>9</numberLength> <numberLength>9</numberLength>
<numberAllowedLength>Variable</numberAllowedLength> <numberAllowedLength>Variable</numberAllowedLength>
<checkUnique>true</checkUnique> <checkUnique>true</checkUnique>
<autonumbering>true</autonumbering> <autonumbering>true</autonumbering>
<defaultObjectForm>Document.ПС_ПередачаЗадолженностиВЦБ.Form.ФормаДокумента</defaultObjectForm> <defaultObjectForm>Document.ПС_ПринятиеПоступившихПлатежейИзЦБ.Form.ФормаДокумента</defaultObjectForm>
<registerRecords>AccountingRegister.ЖурналПроводокЕПСБУ</registerRecords> <registerRecords>AccountingRegister.ЖурналПроводокЕПСБУ</registerRecords>
<postInPrivilegedMode>true</postInPrivilegedMode> <postInPrivilegedMode>true</postInPrivilegedMode>
<unpostInPrivilegedMode>true</unpostInPrivilegedMode> <unpostInPrivilegedMode>true</unpostInPrivilegedMode>
@@ -37,7 +37,7 @@
<name>Организация</name> <name>Организация</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Организация</value> <value>Получатель (учреждение)</value>
</synonym> </synonym>
<type> <type>
<types>CatalogRef.Организации</types> <types>CatalogRef.Организации</types>
@@ -52,10 +52,10 @@
<name>ЦБ</name> <name>ЦБ</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>ЦБ (получатель)</value> <value>Отправитель (ЦБ)</value>
</synonym> </synonym>
<type> <type>
<types>CatalogRef.Контрагенты</types> <types>CatalogRef.Организации</types>
</type> </type>
<minValue xsi:type="core:UndefinedValue"/> <minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/>
@@ -100,21 +100,6 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="31bce547-9930-40db-a918-ab7e30903aab">
<name>ДокументНачисления</name>
<synonym>
<key>ru</key>
<value>Документ начисления</value>
</synonym>
<type>
<types>DocumentRef.НачислениеРодительскойПлаты</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="00e53b16-645f-4b9d-8fd9-31903396fbfb"> <attributes uuid="00e53b16-645f-4b9d-8fd9-31903396fbfb">
<name>ИФО</name> <name>ИФО</name>
<synonym> <synonym>
@@ -177,21 +162,6 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </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"> <attributes uuid="fa024c08-d4ea-4006-ab04-b9c110fc292d">
<name>КЭККорреспондент</name> <name>КЭККорреспондент</name>
<synonym> <synonym>
@@ -222,6 +192,51 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="258c40b5-b60e-4e39-b914-c45f32e186fb">
<name>ДокументПередачи</name>
<synonym>
<key>ru</key>
<value>Документ передачи платежей</value>
</synonym>
<type>
<types>DocumentRef.ПС_ПередачаПоступившихПлатежейВУчреждения</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="6eeef08e-4ea6-480c-a83a-c76dc5ce3daf">
<name>ВидПлатежаВБюджет</name>
<synonym>
<key>ru</key>
<value>Вид платежа в бюджет (аналитика 303.05)</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="eb39103c-0300-42f0-9014-2c115fc25b43">
<name>ИзвещениеВходящее</name>
<synonym>
<key>ru</key>
<value>Извещение входящее</value>
</synonym>
<type>
<types>DocumentRef.ИзвещениеВходящее</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<forms uuid="86b865a3-c942-4075-8741-0e6ab1beae1c"> <forms uuid="86b865a3-c942-4075-8741-0e6ab1beae1c">
<name>ФормаДокумента</name> <name>ФормаДокумента</name>
</forms> </forms>
@@ -286,7 +301,7 @@
<type> <type>
<types>String</types> <types>String</types>
<stringQualifiers> <stringQualifiers>
<length>25</length> <length>50</length>
</stringQualifiers> </stringQualifiers>
</type> </type>
<minValue xsi:type="core:UndefinedValue"/> <minValue xsi:type="core:UndefinedValue"/>
@@ -326,6 +341,108 @@
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
</attributes> </attributes>
<attributes uuid="ee7c7018-ba8a-490e-b8e9-d108fdf7dc2b">
<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"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="a6b27916-1714-43e9-9087-403039a110f7">
<name>НазначениеПлатежа</name>
<synonym>
<key>ru</key>
<value>Назначение платежа</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>200</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="c38ada5a-c764-4598-9ce7-51ee3f159798">
<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"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="e80a55cc-afbf-4740-9578-92fe3f81a616">
<name>Группа</name>
<synonym>
<key>ru</key>
<value>Группа</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>50</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="a489e87f-0799-4276-b1b8-73570272a448">
<name>ПериодОплаты</name>
<synonym>
<key>ru</key>
<value>Период оплаты</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>30</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="3e5d5ede-13ea-4171-9dac-b4944f728954">
<name>ДатаПлатежа</name>
<synonym>
<key>ru</key>
<value>Дата платежа</value>
</synonym>
<type>
<types>Date</types>
<dateQualifiers>
<dateFractions>Date</dateFractions>
</dateQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
</tabularSections> </tabularSections>
<templates uuid="6084d9e2-f455-4db2-8547-01bad3077e82"> <templates uuid="6084d9e2-f455-4db2-8547-01bad3077e82">
<name>ПФ_MXL_Извещение0504805_103н_ПС_РП</name> <name>ПФ_MXL_Извещение0504805_103н_ПС_РП</name>
@@ -13,24 +13,17 @@
<quickChoice>true</quickChoice> <quickChoice>true</quickChoice>
<choiceMode>BothWays</choiceMode> <choiceMode>BothWays</choiceMode>
<enumValues uuid="9201ca1d-ff23-49b6-ab2c-61b873778c0c"> <enumValues uuid="9201ca1d-ff23-49b6-ab2c-61b873778c0c">
<name>ПринятоОтУчреждения</name> <name>ПередачаВУчреждение</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Принято от учреждения</value> <value>Передача в учреждение</value>
</synonym> </synonym>
</enumValues> </enumValues>
<enumValues uuid="b02c965c-6f81-40ef-b563-22c141f39ffd"> <enumValues uuid="b02c965c-6f81-40ef-b563-22c141f39ffd">
<name>Оплата</name> <name>ПоступлениеПлатежа</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Оплата родительской платы</value> <value>Поступление родительской платы</value>
</synonym>
</enumValues>
<enumValues uuid="34b0b2e1-c9a0-4783-867e-a8aa8bf3a0c4">
<name>НачальноеСальдо</name>
<synonym>
<key>ru</key>
<value>Начальное сальдо</value>
</synonym> </synonym>
</enumValues> </enumValues>
</mdclass:Enum> </mdclass:Enum>
@@ -106,6 +106,10 @@
</v8:item> </v8:item>
</title> </title>
</field> </field>
<field xsi:type="DataSetFieldField">
<dataPath>ИДСтроки</dataPath>
<field>ИДСтроки</field>
</field>
<dataSource>ИсточникДанных1</dataSource> <dataSource>ИсточникДанных1</dataSource>
<query>ВЫБРАТЬ <query>ВЫБРАТЬ
ПС_ВзаиморасчетыПоРодительскойПлатеОстатки.Организация КАК Организация, ПС_ВзаиморасчетыПоРодительскойПлатеОстатки.Организация КАК Организация,
@@ -119,6 +123,10 @@
ИЗ ИЗ
РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Остатки(&amp;НачалоПериода,) КАК РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Остатки(&amp;НачалоПериода,) КАК
ПС_ВзаиморасчетыПоРодительскойПлатеОстатки ПС_ВзаиморасчетыПоРодительскойПлатеОстатки
ИНДЕКСИРОВАТЬ ПО
Организация,
Учреждение,
Ребенок
; ;
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@@ -134,8 +142,12 @@
ПС_ВзаиморасчетыПоРодительскойПлатеОбороты.СуммаРасход КАК Расход ПС_ВзаиморасчетыПоРодительскойПлатеОбороты.СуммаРасход КАК Расход
ПОМЕСТИТЬ ОборотыПоРП ПОМЕСТИТЬ ОборотыПоРП
ИЗ ИЗ
РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Обороты(&amp;НачалоПериода, &amp;КонецПериода, Регистратор,) КАК РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Обороты(&amp;НачалоПериода, ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&amp;КонецПериода, ДЕНЬ), СЕКУНДА, 1), Регистратор,) КАК
ПС_ВзаиморасчетыПоРодительскойПлатеОбороты ПС_ВзаиморасчетыПоРодительскойПлатеОбороты
ИНДЕКСИРОВАТЬ ПО
Организация,
Учреждение,
Ребенок
; ;
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@@ -149,8 +161,12 @@
ПС_ВзаиморасчетыПоРодительскойПлатеОстатки.СуммаОстаток КАК ОстатокНаКонец ПС_ВзаиморасчетыПоРодительскойПлатеОстатки.СуммаОстаток КАК ОстатокНаКонец
ПОМЕСТИТЬ ОстаткиПоРПНаКонец ПОМЕСТИТЬ ОстаткиПоРПНаКонец
ИЗ ИЗ
РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Остатки(&amp;КонецПериода,) КАК РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Остатки(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&amp;КонецПериода, ДЕНЬ), СЕКУНДА, 1),) КАК
ПС_ВзаиморасчетыПоРодительскойПлатеОстатки ПС_ВзаиморасчетыПоРодительскойПлатеОстатки
ИНДЕКСИРОВАТЬ ПО
Организация,
Учреждение,
Ребенок
; ;
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@@ -0,0 +1,483 @@
<?xml version="1.0" encoding="UTF-8"?>
<Rights xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://v8.1c.ru/8.2/roles" xsi:type="Rights">
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>false</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.КФО</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Document.ПС_ПередачаПоступившихПлатежейВУчреждения</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>Insert</name>
<value>true</value>
</right>
<right>
<name>Update</name>
<value>true</value>
</right>
<right>
<name>Delete</name>
<value>true</value>
</right>
<right>
<name>Posting</name>
<value>true</value>
</right>
<right>
<name>UndoPosting</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
<right>
<name>InteractiveInsert</name>
<value>true</value>
</right>
<right>
<name>Edit</name>
<value>true</value>
</right>
<right>
<name>InteractiveSetDeletionMark</name>
<value>true</value>
</right>
<right>
<name>InteractiveClearDeletionMark</name>
<value>true</value>
</right>
<right>
<name>InteractiveDeleteMarked</name>
<value>true</value>
</right>
<right>
<name>InteractivePosting</name>
<value>true</value>
</right>
<right>
<name>InteractivePostingRegular</name>
<value>true</value>
</right>
<right>
<name>InteractiveUndoPosting</name>
<value>true</value>
</right>
<right>
<name>InteractiveChangeOfPosted</name>
<value>true</value>
</right>
<right>
<name>InputByString</name>
<value>true</value>
</right>
<right>
<name>ReadDataHistory</name>
<value>true</value>
</right>
<right>
<name>ReadDataHistoryOfMissingData</name>
<value>true</value>
</right>
<right>
<name>UpdateDataHistory</name>
<value>true</value>
</right>
<right>
<name>UpdateDataHistoryOfMissingData</name>
<value>true</value>
</right>
<right>
<name>UpdateDataHistorySettings</name>
<value>true</value>
</right>
<right>
<name>UpdateDataHistoryVersionComment</name>
<value>true</value>
</right>
<right>
<name>ViewDataHistory</name>
<value>true</value>
</right>
<right>
<name>EditDataHistoryVersionComment</name>
<value>true</value>
</right>
<right>
<name>SwitchToDataHistoryVersion</name>
<value>true</value>
</right>
</object>
<object>
<name>Document.НачислениеРодительскойПлаты</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>Insert</name>
<value>true</value>
</right>
<right>
<name>Update</name>
<value>true</value>
</right>
<right>
<name>Delete</name>
<value>true</value>
</right>
<right>
<name>Posting</name>
<value>true</value>
</right>
<right>
<name>UndoPosting</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
<right>
<name>Edit</name>
<value>true</value>
</right>
<right>
<name>InteractiveSetDeletionMark</name>
<value>true</value>
</right>
<right>
<name>InteractiveClearDeletionMark</name>
<value>true</value>
</right>
<right>
<name>InteractiveDeleteMarked</name>
<value>true</value>
</right>
<right>
<name>InteractivePosting</name>
<value>true</value>
</right>
<right>
<name>InteractivePostingRegular</name>
<value>true</value>
</right>
<right>
<name>InteractiveUndoPosting</name>
<value>true</value>
</right>
<right>
<name>InteractiveChangeOfPosted</name>
<value>true</value>
</right>
<right>
<name>ReadDataHistory</name>
<value>true</value>
</right>
<right>
<name>ReadDataHistoryOfMissingData</name>
<value>true</value>
</right>
<right>
<name>UpdateDataHistory</name>
<value>true</value>
</right>
<right>
<name>UpdateDataHistoryOfMissingData</name>
<value>true</value>
</right>
<right>
<name>UpdateDataHistorySettings</name>
<value>true</value>
</right>
<right>
<name>UpdateDataHistoryVersionComment</name>
<value>true</value>
</right>
<right>
<name>ViewDataHistory</name>
<value>true</value>
</right>
<right>
<name>EditDataHistoryVersionComment</name>
<value>true</value>
</right>
<right>
<name>SwitchToDataHistoryVersion</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.Договор</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>Update</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
<right>
<name>Edit</name>
<value>true</value>
</right>
<right>
<name>TotalsControl</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.StandardAttribute.RecordType</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.StandardAttribute.Active</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.StandardAttribute.LineNumber</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.StandardAttribute.Recorder</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.StandardAttribute.Period</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Attribute.ВидОперации</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.Плательщик</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.ИФО</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Resource.Сумма</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Attribute.ДокументПередачи</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.Учреждение</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.Организация</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Document.ПС_ПринятиеПоступившихПлатежейИзЦБ</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>Insert</name>
<value>true</value>
</right>
<right>
<name>Update</name>
<value>true</value>
</right>
<right>
<name>Delete</name>
<value>true</value>
</right>
<right>
<name>Posting</name>
<value>true</value>
</right>
<right>
<name>UndoPosting</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
<right>
<name>InteractiveInsert</name>
<value>true</value>
</right>
<right>
<name>Edit</name>
<value>true</value>
</right>
<right>
<name>InteractiveSetDeletionMark</name>
<value>true</value>
</right>
<right>
<name>InteractiveClearDeletionMark</name>
<value>true</value>
</right>
<right>
<name>InteractiveDeleteMarked</name>
<value>true</value>
</right>
<right>
<name>InteractivePosting</name>
<value>true</value>
</right>
<right>
<name>InteractivePostingRegular</name>
<value>true</value>
</right>
<right>
<name>InteractiveUndoPosting</name>
<value>true</value>
</right>
<right>
<name>InteractiveChangeOfPosted</name>
<value>true</value>
</right>
<right>
<name>InputByString</name>
<value>true</value>
</right>
<right>
<name>ReadDataHistory</name>
<value>true</value>
</right>
<right>
<name>ReadDataHistoryOfMissingData</name>
<value>true</value>
</right>
<right>
<name>UpdateDataHistory</name>
<value>true</value>
</right>
<right>
<name>UpdateDataHistoryOfMissingData</name>
<value>true</value>
</right>
<right>
<name>UpdateDataHistorySettings</name>
<value>true</value>
</right>
<right>
<name>UpdateDataHistoryVersionComment</name>
<value>true</value>
</right>
<right>
<name>ViewDataHistory</name>
<value>true</value>
</right>
<right>
<name>EditDataHistoryVersionComment</name>
<value>true</value>
</right>
<right>
<name>SwitchToDataHistoryVersion</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.Ребенок</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.ИДСтроки</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ПС_УправлениеРасчетамиПоРодительскойПлате</name>
<right>
<name>Use</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Report.ПС_ВедомостьЦБПоРодительскойПлате</name>
<right>
<name>Use</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.КПС</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Role xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="b82e2998-dfde-414a-9d26-4f95c45fb346">
<name>ПС_ЗаписьРодительскойПлаты</name>
<synonym>
<key>ru</key>
<value>Родительская плата: запись</value>
</synonym>
</mdclass:Role>
@@ -4,7 +4,7 @@
<setForAttributesByDefault>false</setForAttributesByDefault> <setForAttributesByDefault>false</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects> <independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object> <object>
<name>Document.ПС_ПередачаЗадолженностиВЦБ</name> <name>Document.ПС_ПринятиеПоступившихПлатежейИзЦБ</name>
<right> <right>
<name>Read</name> <name>Read</name>
<value>true</value> <value>true</value>
@@ -27,7 +27,7 @@
</right> </right>
</object> </object>
<object> <object>
<name>Document.ПС_ПринятиеЗадолженностиОтУчреждения</name> <name>Document.ПС_ПередачаПоступившихПлатежейВУчреждения</name>
<right> <right>
<name>Read</name> <name>Read</name>
<value>true</value> <value>true</value>
@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<Rights xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://v8.1c.ru/8.2/roles" xsi:type="Rights">
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>false</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object>
<name>Document.ПС_ПередачаПоступившихПлатежейВУчреждения</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Document.ПС_ПринятиеПоступившихПлатежейИзЦБ</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате</name>
<right>
<name>Read</name>
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ПС_УправлениеРасчетамиПоРодительскойПлате</name>
<right>
<name>Use</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Report.ПС_ВедомостьЦБПоРодительскойПлате</name>
<right>
<name>Use</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Document.НачислениеРодительскойПлаты</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Role xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="52451e17-fda1-4de2-a69a-f8b4f3994203">
<name>ПС_ЧтениеРодительскойПлаты</name>
<synonym>
<key>ru</key>
<value>Родительская плата: чтение</value>
</synonym>
</mdclass:Role>
@@ -8,8 +8,8 @@
<commandInterface>Extended</commandInterface> <commandInterface>Extended</commandInterface>
</extension> </extension>
<includeInCommandInterface>true</includeInCommandInterface> <includeInCommandInterface>true</includeInCommandInterface>
<content>Document.ПС_ПередачаЗадолженностиВЦБ</content> <content>Document.ПС_ПринятиеПоступившихПлатежейИзЦБ</content>
<content>Document.ПС_ПринятиеЗадолженностиОтУчреждения</content> <content>Document.ПС_ПередачаПоступившихПлатежейВУчреждения</content>
<content>DataProcessor.ПС_УправлениеРасчетамиПоРодительскойПлате</content> <content>DataProcessor.ПС_УправлениеРасчетамиПоРодительскойПлате</content>
<parentSubsystem>Subsystem.ТаксиПлатноеОбразование</parentSubsystem> <parentSubsystem>Subsystem.ТаксиПлатноеОбразование</parentSubsystem>
</mdclass:Subsystem> </mdclass:Subsystem>
@@ -0,0 +1,74 @@
# ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0)
**Ветка:** `feature/ostatki-v-sadah`
**Статус:** концепция согласована; план доработки и рабочая документация — отдельным шагом
**Дата:** 14.10.2026
**Основание:** замечание заказчика к следствию текущей схемы — остатки по взаиморасчётам с детьми формируются в ЦБ; заказчик хочет видеть их в детских садах
---
## 1. Суть изменения
### 1.1. Как было (схема «Передача начислений в ЦБ»)
1. Сад начисляет плату типовым документом «Начисление родительской платы».
2. Сад передаёт задолженность в ЦБ документом `ПС_ПередачаЗадолженностиВЦБ` (Дт 304.04 — Кт 205.31).
3. ЦБ принимает задолженность документом `ПС_ПринятиеЗадолженностиОтУчреждения` (Дт 205.31 — Кт 304.04).
4. Реестр платежей из СУФД загружается в «Кассовое поступление», расшифровка платежа идентифицируется автоматически.
5. **Остатки взаиморасчётов с детьми формируются в ЦБ** — на стороне централизованной бухгалтерии.
### 1.2. Как стало
1. Платежи приходят **в ЦБ** — «Кассовое поступление» с автозаполнением расшифровки платежа. Идентификация платежа и заполнение расшифровки не меняются; разворачивается только направление движения по регистру взаиморасчётов (см. план).
2. ЦБ **собирает поступившие суммы** — с кредита счёта 205.31 — и заполняет ими документ, который **передаёт поступившие платежи в сады**. Механизм тот же: внутриведомственные расчёты, бухгалтерская запись та же.
3. На основании документа передачи в **каждом саду** создаётся свой документ **принятия поступивших платежей из ЦБ**. Документов столько, сколько садов в выписке: по выписке ЦБ за один день платежи поступают в адрес нескольких садов.
4. **Остатки взаиморасчётов с детьми формируются в садах.** Сады смотрят их **типовыми отчётами** — отдельная доработка не требуется.
Итог: меняются экономические смыслы и наименования документов; бухгалтерские записи и порядок поступления средств сохраняются.
---
## 2. Переименование документов (согласовано)
| Сейчас | Стало | Сторона | Роль в новой схеме |
|---|---|---|---|
| `ПС_ПринятиеЗадолженностиОтУчреждения` | `ПС_ПередачаПоступившихПлатежейВУчреждения` | ЦБ → сады | ЦБ собирает поступившие платежи и передаёт их в сады |
| `ПС_ПередачаЗадолженностиВЦБ` | `ПС_ПринятиеПоступившихПлатежейИзЦБ` | сад ← ЦБ | Сад принимает поступившие платежи из ЦБ; вводится на основании документа передачи, по одному на сад |
Наименования согласованы — отражают суть документов.
---
## 3. Что не меняется
- **Поступление средств:** «Кассовое поступление», автозаполнение расшифровки платежа, идентификация ребёнка по лицевому счёту, счёт расчётов 205.31, КОСГУ 131.
- **Направление движений регистра взаиморасчётов меняется:** «Кассовое поступление» даёт **приход** (поступившие платежи копятся у ЦБ), «Передача платежей» — **расход** (отдаём в сады). Так регистр обнуляется, когда всё передано.
- **Бухгалтерские записи** внутриведомственных расчётов. Направления сохраняются буквально: у ЦБ Дт 205.31 — Кт 304.04, у сада Дт 304.04 — Кт 205.31. В сторону ЦБ передавалась дебиторская задолженность, обратно передаётся кредиторская — поэтому записи не меняются.
- **Печать извещения (ф. 0504805)** — остаётся у обоих документов, как и было.
- **Пульт** `ПС_УправлениеРасчетамиПоРодительскойПлате` — не трогаем: он работает с теми же документами и счетами, меняются только наименования документов.
- **Наши регистры** (`AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате`) — пока не трогаем.
- **Типовые отчёты** сады используют как есть.
---
## 4. Что убираем
**Режим «Начальное сальдо»** — сейчас он живёт в документе сада вместе с командой «Заполнить по остаткам счёта 205.31». Надобность отпала: обороты переносятся в обратную сторону, сальдо там нет.
---
## 5. Изменение роли отчёта
`Report.ПС_ВедомостьЦБПоРодительскойПлате` раньше служил ЦБ для контроля взаиморасчётов по родительской плате. Теперь взаиморасчёты остаются в садах, и назначение отчёта смещается: он остаётся **инструментом ЦБ для контроля правильности формирования и проведения документов**. Критерий — если все поступившие платежи переданы в сады, остатки по отчёту должны быть нулевыми.
Имя отчёта сохраняется; при необходимости переименуем отдельным решением.
---
## 6. Что предстоит сделать (заготовка, план — позже)
- Переименовать два документа метаданных и проследить цепочку ссылок: формы, роли, подсистемы, движения регистров, макеты печатных форм, настройки вариантов отчётов.
- Убрать из документа сада режим «Начальное сальдо» и команду заполнения по остаткам.
- Перестроить логику заполнения: ЦБ собирает поступившие суммы с кредита 205.31 и передаёт их в сады; в садах принимают — по одному документу на сад.
- Проверить печать извещения на обоих документах.
- Обновить рабочую документацию (памятка, руководство пользователя, руководство по эксплуатации) под новую схему.
@@ -0,0 +1,120 @@
# ПЛАН. Остатки взаиморасчётов с детьми в садах (БГУ 2.0)
**Ветка:** `feature/ostatki-v-sadah`
**Основание:** `docs/ЗАДАЧА. Остатки взаиморасчётов с детьми в садах (БГУ 2.0).md`
**Дата:** 14.10.2026
**Статус:** решения получены полностью; можно начинать правки
---
## 0. Ревизия выполнена
Проведён разбор обоих документов и их связей. Ниже — что именно затронет работа.
**Документы и их текущая роль:**
| Роль сейчас | Объект | Проводка | Движения по регистрам |
|---|---|---|---|
| ЦБ принимает задолженность | `ПС_ПринятиеЗадолженностиОтУчреждения` | Дт 205.31 — Кт 304.04 | Журнал проводок **и** регистр взаиморасчётов (приход) |
| Сад передаёт задолженность | `ПС_ПередачаЗадолженностиВЦБ` | Дт 304.04 — Кт 205.31 | только Журнал проводок |
**Цепочка «ввод на основании»:** «Начисление родительской платы» → `ПС_ПередачаЗадолженностиВЦБ` (через `basedOn`) → `ПС_ПринятиеЗадолженностиОтУчреждения` (командой формы).
**Ссылки, которые надо пройти при переименовании:**
1. `Configuration.mdo` — состав документов.
2. `Roles\ПС_ОсновнаяРоль\Rights.rights` — два блока прав.
3. Подсистема `РодительскаяПлата.mdo` — состав содержимого.
4. `НачислениеРодительскойПлаты.mdo` — свойство `basedOn`.
5. Типы реквизитов `ДокументПередачи`: в `.mdo` ЦБ-документа и в регистре `ПС_ВзаиморасчетыПоРодительскойПлате`.
6. Код: `Тип("ДокументСсылка.…")`, тексты запросов `Документ.…`, `Документы.….СформироватьПечатныеФормыИзвещений`, `Документы.….ПолучитьМакет`, `ОткрытьФорму("Документ.….Форма.ФормаДокумента")` — в обоих документах, в общем модуле `ПС_УчетРодительскойПлаты`, в пульте, в форме «Начисления родительской платы».
7. Ключи параметров печати в `ПС_УчетРодительскойПлаты` (`ПАРАМЕТРЫ_ПЕЧАТИ_…`).
8. Типы в `.form`: `DocumentObject.…` в формах документов, `DocumentRef.…` в форме пульта.
9. Модули объектов и форм, модули менеджеров обоих документов, макеты печатных форм.
**Не затрагивается:** `ПС_РаботаСКонтрагентами`, `ПС_РазборПлатежейПоРодительскойПлате`, отчёт `ПС_ВедомостьЦБПоРодительскойПлате` (работает с регистром, а не с документами), интерфейс подсистемы, определяемые типы, подписки на события.
---
## 1. Переименование документов
| Сейчас | Стало |
|---|---|
| `ПС_ПринятиеЗадолженностиОтУчреждения` | `ПС_ПередачаПоступившихПлатежейВУчреждения` |
| `ПС_ПередачаЗадолженностиВЦБ` | `ПС_ПринятиеПоступившихПлатежейИзЦБ` |
Порядок работ: сначала переименование в метаданных, затем проход по цепочке ссылок из п. 0, затем код. Перед началом — переключить EDT на ветку и убедиться, что проект собирается.
---
## 2. Смена ролей и логики заполнения
- **ЦБ-документ** (`ПС_ПередачаПоступившихПлатежейВУчреждения`) — источник. Заполняется **из остатков регистра накопления** `ПС_ВзаиморасчетыПоРодительскойПлате`: в документ попадают поступившие платежи, ещё не переданные в сады.
- Почему не из расшифровки «Кассового поступления»: тогда пришлось бы отдельно контролировать, чтобы платежи одного поступления не уехали в несколько передач. Через регистр контроль не нужен — предыдущая передача выбирает остатки, следующая их уже не видит.
- Условие корректности — последовательность проведения: каждую следующую передачу проводить после предыдущей по дате.
- **Сад-документы** (`ПС_ПринятиеПоступившихПлатежейИзЦБ`) — вводятся **на основании** ЦБ-документа, **по одному на сад** (в выписке ЦБ за день платежи идут в адрес нескольких садов).
- **«Ввод на основании» разворачивается в обратную сторону:** снять `basedOn` у «Начисления родительской платы» (сейчас он указывает на сад-документ); первым заполняется ЦБ-документ передачи, а сад-документы вводятся по нему.
- Проверить и поправить автозаполнение реквизитов при вводе на основании: организация, учреждение, ИФО, КФО, суммы.
---
## 3. Снятие режима «Начальное сальдо»
Искореняется полностью:
- **Сад-документ:** реквизит `ПередачаСальдо`, команда `ЗаполнитьПоОстаткам20531` и её обработчик `ЗаполнитьПоОстаткам20531НаСервере`, процедуры `ОбновитьВидимостьРеквизитовРежимаСальдо` и `ПередачаСальдоПриИзменении`, связанные элементы формы.
- **ЦБ-документ:** реквизит `ПередачаСальдо` и ветка `ВидОперации = НачальноеСальдо` при формировании движений.
- **Перечисление** `ПС_ВидыОперацийПоВзаиморасчетам` — значение «Начальное сальдо» удаляется.
---
## 4. Проводки и печать — без изменений
- Проводки сохраняются буквально: у ЦБ Дт 205.31 — Кт 304.04, у сада Дт 304.04 — Кт 205.31. В ЦБ сторону уходила дебиторская задолженность, обратно возвращается кредиторская.
- Извещение ф. 0504805 — у обоих документов, как и было. Макеты и их имена не меняются.
---
## 5. Регистр взаиморасчётов и отчёт
- Регистр `ПС_ВзаиморасчетыПоРодительскойПлате` — главный инструмент контроля ЦБ: он должен показать, что **все данные о платежах уехали из ЦБ**. Пишется **только документами ЦБ** — «Кассовым поступлением» и «Передачей платежей»; сад-документы в него **не пишут**.
- Когда все документы проведены в правильной последовательности, регистр даёт **нулевые остатки**.
- Структуру регистра и отчёт `ПС_ВедомостьЦБПоРодительскойПлате` не трогаем. Отчёт остаётся средством контроля: нулевые остатки означают, что всё передано.
---
## 6. Пульт — не трогаем
- В форме пульта четыре запроса и типы реквизитов ссылаются на документы. После переименования их надо поправить механически, логику не менять.
---
## 7. Проверка
- Переработать приёмочные сценарии под новую схему: загрузка реестра → ЦБ собирает поступившие суммы → передача в сады → приём в каждом саду → нулевые остатки по регистру.
- Прогнать проверку маркеров EDT по изменённым объектам.
---
## 8. Документация
- **Убрать «Начальное сальдо»** из памятки (раздел 4) и руководства пользователя (п. 3.2) — режима больше нет.
- Переписать схему в руководстве пользователя и руководстве по эксплуатации под новую модель, переименовать документы во всех упоминаниях.
- Обновлять шар и `docs/` синхронно, после стабилизации результата.
---
## Решения по вопросам плана (согласовано)
1. **Источник заполнения ЦБ-документа** — остатки регистра накопления, а не расшифровка «Кассового поступления». Контроль дублей не нужен: предыдущая передача снимает остатки, следующая их не видит; требуется лишь соблюдать последовательность проведения по дате.
2. **Движения регистра** — остаются за ЦБ-документами: «Кассовым поступлением» и «Передачей платежей». Сад-документы движений в регистр не делают.
3. **«Начальное сальдо»** — искореняется полностью, включая значение в перечислении видов операций.
4. **`basedOn`** — разворачивается: первым заполняется ЦБ-документ передачи, на его основании вводятся документы приёма платежей в садах.
---
## Направление движений регистра (подтверждено)
«Кассовое поступление» даёт **приход** — поступившие платежи копятся у ЦБ. «Передача платежей» даёт **расход** — отдаём в сады. Регистр обнуляется, когда всё передано.
Это разворот относительно текущего кода: сейчас «Кассовое поступление» пишет расход (вид операции «Оплата» — платёж закрывал задолженность перед ЦБ). Направление меняется вместе с наименованиями: логика следует сути.
@@ -0,0 +1,169 @@
# РУКОВОДСТВО АДМИНИСТРАТОРА. Учёт родительской платы ЦБ ОУО (БГУ 2.0)
Расширение: `153_ЦБ_ОУО_БГУ.ПрофиСофт`, **версия 1.0.3**
Базовая конфигурация: БГУ 2.0 (2.0.107.53), режим совместимости расширения 8.3.24
Документ актуален на 30.10.2026.
Документ для администратора системы: установка, первичная настройка, права доступа, обновление, диагностика. Порядок ежедневной работы — в «РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ».
---
## 1. Состав поставки
| Объект | Назначение |
|---|---|
| `КассовоеПоступление` (типовой, расширен) | приход по регистру взаиморасчётов по строкам расшифровки платежа |
| `ПС_ПередачаПоступившихПлатежейВУчреждения` | ЦБ передаёт саду поступившие платежи |
| `ПС_ПринятиеПоступившихПлатежейИзЦБ` | сад принимает переданные суммы |
| `ПС_ВзаиморасчетыПоРодительскойПлате` | регистр накопления — единственный источник сумм по расчётам |
| `ПС_УправлениеРасчетамиПоРодительскойПлате` | пульт управления |
| `ПС_ВедомостьЦБПоРодительскойПлате` | оборотная ведомость |
| `ПС_УчетРодительскойПлаты`, `ПС_РазборПлатежейПоРодительскойПлате`, `ПС_ВнутреннийЭДОИзвещений` | общие модули: печать, разбор назначения платежа, извещения |
| `ПС_РеестрПлатежей` (общий макет) | вёрстка реестра, одна для обоих документов |
| `ПС_ЧтениеРодительскойПлаты`, `ПС_ЗаписьРодительскойПлаты` | роли доступа |
Файл поставки — `.cfe`. Версия указывается в имени файла и в свойствах расширения; **всегда сверяйте версию** перед установкой.
---
## 2. Установка расширения
1. Получить `.cfe` у разработчика.
2. В 1С: **Администрирование → Расширения конфигурации** (или «Расширения конфигурации» в разделе «НСИ и администрирование»).
3. **Добавить из файла** → выбрать `.cfe`.
4. **Обновить конфигурацию базы данных**. Сделать это в монопольном режиме или когда пользователи не работают.
5. Проверить: **Сервис → О программе** → блок «Расширения конфигурации» → строка `Профи софт`, колонка **«Версия»**. Должна совпасть с заявленной.
6. Проверить, что расширение **активно** (флажок «Активно» установлен).
Проверка версии — обязательный шаг. Если версия не совпадает, дальше разбираться бессмысленно: установлена не та сборка.
---
## 3. Первичная настройка базы
Выполняется один раз при внедрении и повторяется при добавлении нового учреждения.
### 3.1. Константа «Организация централизованной бухгалтерии»
Заполняется организацией ЦБ. По ней по умолчанию подставляется организация в пульте, в передаче и в принятии.
### 3.2. Справочник «Организации»
- ЦБ — отдельная организация.
- Каждый детский сад — отдельная организация.
- У обеих сторон заполнены ИНН, КПП, ИФО и счета.
### 3.3. Соответствие «Организация → Контрагент»
Извещения ф. 0504805 адресуются контрагентам, а документы расширения — организациям. Контрагент подбирается автоматически: штатной функцией БГУ (`БюджетнаяОтчетностьПолучениеНСИ.КонтрагентПоОрганизации` — ИНН + КПП + бюджет), при неудаче — по ИНН с уточнением по КПП и бюджету.
**Требование:** для ЦБ и **для каждого сада** должен существовать контрагент, который находится этим подбором. Без него извещение создаётся с пустым получателем/отправителем и не пройдёт проверку заполнения.
### 3.4. Типовая операция кассового поступления (критично)
Поступления родительской платы идут на счёт 303.05. В типовой конфигурации при заполненном корсчёте 303.00 сбрасывается признак «Родительская плата», и приход по регистру взаиморасчётов **не формируется**.
Рабочая настройка:
1. Скопировать типовую операцию «Поступление, зачисление в бюджеты» (для 303-го счёта).
2. В копии изменить отбор по корреспондирующему счёту на **«прочие счета»** (корсчёт не заполнен).
3. В документе выбирать эту операцию, корсчёт — «прочие счета», признак «Родительская плата» — установлен.
Страховка в расширении: если признак снят, но в назначении платежа распознан лицевой счёт ребёнка, при записи документа выводится предупреждение.
### 3.5. Справочники расчётов с родителями
| Справочник | Требования |
|---|---|
| `Дети` | код = лицевой счёт ребёнка (`X000013125` или `000010525`); **обязательно заполнен контрагент** |
| `Контрагенты` | плательщики (родители) |
| `Договоры` | у родителя должен быть **один** договор, иначе он не заполнится автоматически |
| `ВидыНалоговИПлатежей` | значение для аналитики счёта 303.05 в документе принятия |
| `ИсточникиФинансовогоОбеспечения` | заполняется в документах и реестрах |
| `ЛицевыеСчета` | раздел счёта с табличной частью «Допустимые КФО» — из неё берётся КФО строк расшифровки |
| `КОСГУ` | код 131 — КОСГУ назначения платежа родительской платы |
**КФО строк расшифровки.** Берётся из настроек лицевого счёта: раздел → «Допустимые КФО». Используется типовая функция `ПлатежноРасчетныеДокументыПовтИсп.ДопустимыеКФО`, поэтому результат совпадает с поведением типовых форм: подставляется **первое** допустимое значение (с наименьшим порядком перечисления КВД). Если у счёта допустимо несколько КФО — остальные бухгалтер выбирает вручную. Если КФО не заполнился — проверьте, что у лицевого счёта есть раздел и в нём заполнены допустимые КФО.
---
## 4. Роли и права
В расширении две роли. Третья, `ПС_ОсновнаяРоль`, создаётся платформой автоматически — **назначать её пользователям не нужно**.
| Право на объект | `ПС_ЧтениеРодительскойПлаты` | `ПС_ЗаписьРодительскойПлаты` |
|---|---|---|
| Документы передачи, принятия, начисления — Read, View | да | да |
| Те же документы — Insert, Update, Delete, Posting, UndoPosting | — | да |
| Регистр `ПС_ВзаиморасчетыПоРодительскойПлате` — Read | да | да |
| Тот же регистр — Update | — | да |
| Пульт и ведомость — Use, View | да | да |
**Важно:** роли расширения дают права только на объекты расширения. Пользователю дополнительно нужны штатные роли БГУ (базовые права, работа с документами, отчётами). Назначать только роль расширения недостаточно — интерфейс останется пустым.
Рекомендуемая схема:
| Кто | Роли |
|---|---|
| Бухгалтер ЦБ | `ПС_ЗаписьРодительскойПлаты` + штатные роли БГУ для работы с кассовыми документами |
| Бухгалтер сада | `ПС_ЗаписьРодительскойПлаты` + штатные роли БГУ своего учреждения |
| Руководитель, методист, контролёр | `ПС_ЧтениеРодительскойПлаты` + штатные роли для просмотра |
Роли удобно включать в профиль групп доступа, чтобы не назначать по одному пользователю.
Права на сами объекты метаданных (справочники, план счетов) не дублируются: они наследуются от базовой конфигурации.
---
## 5. Обновление расширения
1. Получить `.cfe`, сверить версию.
2. Сделать резервную копию базы.
3. Загрузить и обновить расширение (раздел 2).
4. Проверить версию в «О программе».
5. Если обновление меняло состав измерений регистра или структуру табличных частей — **перепровести** кассовые поступления и документы передачи за затронутый период. Признак необходимости: в передаче пусты лицевой счёт, расчётный счёт, группа, период оплаты, дата платежа.
6. Проверить на одном-двух документах: заполнение передачи, печать реестра, печать извещения.
---
## 6. Резервное копирование и обслуживание
- Резервная копия базы — перед каждым обновлением расширения, без исключений.
- Ежемесячно, после закрытия передач: сверить на пульте страницу «Сверка „передано / принято“». Расхождение ≠ 0 означает, что сад не принял документ.
- Ежемесячно: проверить на пульте «Остатки и обороты» — «Остаток у ЦБ» после передачи должен быть нулевым.
- После добавления нового сада: проверить контрагента (п. 3.3) и организацию (п. 3.2).
---
## 7. Диагностика
| Сообщение / симптом | Причина | Действия |
|---|---|---|
| В передаче пусты лицевой счёт, назначение, расчётный счёт, группа, период оплаты, дата | у записи регистра пуст `ИДСтроки` — кассовое поступление проведено до появления измерения | перепровести кассовое поступление, заново заполнить передачу |
| «По N строкам идентификатор квитанции есть, но строка расшифровки платежа не найдена» | состав строк расшифровки менялся после проведения | перепровести кассовое поступление |
| «Распознан лицевой счёт ребёнка, но признак „Родительская плата“ не установлен» | снят признак, обычно из-за заполненного корсчёта 303.00 | см. п. 3.4 |
| КФО в строках расшифровки пуст | у лицевого счёта нет раздела или в разделе нет допустимых КФО | заполнить раздел и допустимые КФО |
| «Для организации … не найден контрагент» | нет соответствия «организация → контрагент» | см. п. 3.3, пересоздать извещение |
| «Поступившие платежи найдены в разрезе нескольких ИФО и/или КФО» | ИФО и КФО задаются на весь документ | передавать отдельными документами по каждому ИФО/КФО |
| Пульт открывается, таблицы пустые | не задан период (обе границы) | указать период, нажать «Обновить» |
| Раздел «Родительская плата» не виден пользователю | нет ролей | назначить роли (раздел 4) |
| Печать реестра выводит пустой лист | не заполнено тело общего макета `ПС_РеестрПлатежей` | проверить макет в конфигураторе/EDT |
---
## 8. Технические сведения
- **Регистр `ПС_ВзаиморасчетыПоРодительскойПлате`.** Измерения: Организация, Учреждение, Плательщик, Ребёнок, Договор, ИФО, КФО, КПС, `ИДСтроки`. Ресурс: Сумма. Приход формирует кассовое поступление, расход — документ передачи. Все остатки и сверка считаются по нему.
- **`ИДСтроки`** — ключ строки квитанции в формате `<UUID кассового поступления>:<номер строки>`. По нему передача находит реквизиты реестра. Заполняется при проведении кассового поступления; у документов, проведённых до появления измерения, пуст.
- **Печать.** Оба документа печатают реестр из общего макета `ПС_РеестрПлатежей` через `ПолучитьОбщийМакет`. Макеты в самих документах удалены — вёрстка сопровождается в одном месте.
- **Извещения.** Создаются как обёртки: хранят ссылку на документ расширения и табличную часть «Задолженность». При изменении документа извещение перезаполняется, если оно не проведено и не помечено на удаление. Проведённое извещение не меняется.
- **Внутренний ЭДО** извещений не поддерживается: подписание и обмен — внешними средствами.
---
## 9. Ограничения текущей версии
- Извещения ф. 0504805 не формируют проводок и не участвуют в расчётах.
- Сверка «передано / принято» сравнивает суммы документов, а не построчные суммы регистра.
- Документ передачи адресный: один сад на документ; ИФО и КФО — на весь документ.
- В передачах, созданных до версии 1.0.0, реквизит «Принятие платежей» не заполнен — его нужно проставить вручную либо создать принятие кнопкой.
@@ -0,0 +1,271 @@
# РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0)
Расширение: `153_ЦБ_ОУО_БГУ.ПрофиСофт`, **версия 1.0.4**
Документ актуален на 02.11.2026.
Руководство для бухгалтера ЦБ ОУО и бухгалтера детского сада. Установку, настройку и обновление см. в «РУКОВОДСТВО АДМИНИСТРАТОРА».
---
## 1. Кто что делает
| Сторона | Роль в учёте | Что делает в системе |
|---|---|---|
| **Детский сад** | начисляет родительскую плату (счёт 205.31) | ведёт начисления, передаёт сведения о начислениях в ЦБ, **принимает** переданные ЦБ платежи, подписывает извещение |
| **ЦБ ОУО** | администратор кассовых поступлений | принимает деньги в бюджет, ведёт расчёты с садами, **передаёт** садам поступившие суммы |
Полный цикл всегда такой:
**сад начислил → сад сообщил начисление в ЦБ → деньги пришли в ЦБ → ЦБ передал их в сад → сад принял**.
Первые два шага — типовые документы БГУ (раздел 4). Шаги «пришли → передал → принял» — документы расширения (разделы 5–7).
---
## 2. Где что находится
| Что нужно | Где в 1С |
|---|---|
| Пульт управления расчётами | раздел **Родительская плата** → «Управление расчётами по родительской плате» |
| Начисление родительской платы | типовой документ «Начисление родительской платы» |
| Извещения ф. 0504805 | типовые документы «Извещение исходящее» и «Извещение входящее» |
| Кассовые поступления | раздел **Денежные средства** → «Кассовые поступления» |
| Передача платежей в учреждения (ЦБ) | раздел **Родительская плата** → «Передача поступивших платежей в учреждения» |
| Принятие платежей из ЦБ (сад) | раздел **Родительская плата** → «Принятие поступивших платежей из ЦБ» |
| Оборотная ведомость | кнопка **«Оборотная ведомость»** на пульте |
Если раздела «Родительская плата» не видно — у пользователя нет прав. Обратитесь к администратору (см. «Руководство администратора», раздел «Роли и права»).
---
## 3. Как часто выполнять передачу и принятие
В расширении **нет привязки к календарному месяцу**: передачу поступивших платежей и их принятие можно делать за любой период — за день, за неделю, за месяц. Ограничений в программе нет, период на пульте выбирается любой.
| Режим | Как выглядит | Когда удобен |
|---|---|---|
| **Ежедневный (оперативный)** | ЦБ каждый день передаёт суммы, поступившие за день; сад принимает их на следующий день | остаток у ЦБ близок к нулю, взаиморасчёты видны в любой момент |
| **Периодический** | передача раз в несколько дней или раз в неделю | меньше документов, контроль чаще, чем раз в месяц |
| **Месячный** | одна передача по итогам месяца | минимальный документооборот |
Выбранная периодичность фиксируется регламентом взаимодействия и учётной политикой. Внутри периода действует простое правило: **передавать и принимать можно столько раз, сколько нужно** — каждая передача забирает только те суммы, которые ещё не переданы.
Что важно при любом режиме:
- документ передачи адресный — один сад на документ;
- передача забирает остаток на момент документа, поэтому дважды одну сумму не отправит;
- сверка «передано / принято» на пульте строится за выбранный период, её рекомендуется делать не реже раза в месяц.
---
## 4. Передача сведений о начислениях в ЦБ (сад → ЦБ)
Типовые операции БГУ, расширением не автоматизируются. Нужны, чтобы ЦБ знал, сколько денег должно поступить, и мог сопоставить это с фактическими платежами.
### 4.1. Начисление родительской платы (сад)
Сад формирует начисление родительской платы типовым документом и проводит его:
```
Дт 205.31.560 Кт 401.10.131
```
Счёт 205.31 ведётся **только садом**. У ЦБ этого счёта по родительской плате нет.
### 4.2. Исходящее извещение «Начисление дохода» (сад)
На основании начисления сад формирует **исходящее извещение ф. 0504805** с видом **«Начисление дохода»** — одной суммой по учреждению, без построчной расшифровки по детям:
```
Дт 304.04.131 (КПС КРБ, КВР 801) Кт 303.05.731
```
Извещение направляется в ЦБ средствами ЭДО либо на бумаге.
### 4.3. Входящее извещение «Начисление дохода» (ЦБ)
ЦБ регистрирует полученное извещение **входящим извещением ф. 0504805** того же вида:
```
Дт 303.05.831 Кт 304.04.131 (КПС КДБ, АГПДБ 191)
```
Сумма этого извещения — **ожидаемые поступления**: контрольная величина, с которой потом сопоставляются фактические платежи.
### 4.4. Что важно знать
- Извещения о начислениях передаются **сводно, общими суммами по учреждению**. Построчная детализация по детям здесь не нужна — она содержится в реестре платежей (раздел 9).
- Сроки: начисление — до 5-го числа месяца, следующего за расчётным; извещение в ЦБ — до 10-го. Точные сроки — по регламенту.
- Остаток на счёте 303.05 (начислено минус поступило) — это разрыв сроков начисления и оплаты, а не ошибка.
- Счёт 304.04 у обеих сторон накапливает внутриведомственные расчёты и закрывается при завершении финансового года.
---
## 5. Ежедневно: кассовое поступление (ЦБ)
1. Открыть «Кассовое поступление», создать новый документ.
2. Заполнить шапку: организация — ЦБ, дата, счёт, ИФО.
3. Корреспондирующий счёт — **«прочие счета»**, типовая операция — специальная копия (её заводит администратор при внедрении).
4. Установить признак **«Родительская плата»**. Без него приход по взаиморасчётам не сформируется.
5. Заполнить таблицу «Расшифровка платежа». В колонке «Примечание» — назначение платежа из выписки.
6. Записать документ. По каждой распознанной строке автоматически заполняются:
- **контрагент** (родитель),
- **ребёнок**,
- **договор**,
- **счёт расчётов** 205.31,
- **КОСГУ назначения платежа** 131,
- **КФО** — из настроек лицевого счёта (раздел счёта → допустимые КФО; подставляется первый по порядку, как в типовых формах).
7. Провести документ.
Уже заполненные вручную значения при записи **не перезаписываются** — ручная правка сохраняется.
### 5.1. Бухгалтерские записи при кассовом поступлении
Кассовое поступление в ЦБ даёт **одну бухгалтерскую проводку** и **записи по регистру взаиморасчётов**:
| Что формируется | Запись | Смысл |
|---|---|---|
| Бухгалтерская проводка (типовая, по документу) | `Дт 210.02.131 Кт 303.05.731` | деньги пришли на лицевой счёт ЦБ и зачислены в бюджет как администрируемый доход |
| Регистр «Взаиморасчёты по родительской плате» (расширение) | приход по каждому ребёнку: плательщик, ребёнок, договор, КФО, КПС, сумма | оперативный учёт «кто и сколько заплатил» — **это не бухгалтерская проводка**, а аналитика расширения |
Что важно понимать про эти две части:
- проводка `Дт 210.02.131 Кт 303.05.731` **не различает детей** — она одна на всю сумму поступления. Детализация по детям живёт только в регистре взаиморасчётов и в реестре платежей (раздел 9);
- приход по регистру формируется **только по распознанным строкам** — там, где определились ребёнок и договор. Строка без ребёнка в регистр не попадает, но в проводку входит (деньги-то пришли);
- повторное проведение документа перезаписывает движения регистра, поэтому исправления безопасны: достаточно изменить строки и перепровести документ.
Полная картина по счёту 303.05 у ЦБ складывается из двух событий:
```
начислено садом (извещение «Начисление дохода», раздел 4) Дт 303.05.831 Кт 304.04.131
поступили деньги (кассовое поступление) Дт 210.02.131 Кт 303.05.731
```
### 5.2. Почему в ведомости и на пульте виден остаток
Остаток — это нормальное состояние расчётов, а не ошибка. Он означает разные вещи в зависимости от того, где вы смотрите:
| Где смотрим | Что показывает остаток | Когда обнуляется |
|---|---|---|
| Ведомость ЦБ / пульт, колонка «Остаток на конец» | **поступило, но ещё не передано в сады** | после проведения документа передачи (раздел 6) и принятия садом (раздел 7) |
| Счёт 303.05 у ЦБ | начислено по извещениям **минус** поступившие деньги — «ожидаемые поступления» | когда родители заплатят начисленные суммы |
| Счёт 205.31 у сада | начислено **минус** принято от ЦБ | когда сад примет переданные платежи |
Отсюда три типовые ситуации, которые не требуют исправлений:
1. **Приход есть, остаток по регистру не обнулился** — деньги поступили, но передача в сад ещё не сделана. Сделайте передачу (раздел 6).
2. **Остаток на 303.05 большой, а поступлений мало** — начислено больше, чем оплачено: это задолженность родителей, работа с ней ведётся в саду.
3. **В ведомости строка есть, а прихода нет** — по строке не определились ребёнок или договор, поэтому приход по регистру не сформировался (см. п. 6 выше и раздел 10 «Что делать, если»).
### 5.3. Формат назначения платежа
Для реестровых поступлений назначение разбирается по запятым, порядок частей фиксированный:
```
ГКДОУ д/с №26 Красная шапочка,л/с 03003001079,л/с X000013125,Саттыбекова Айлин Султановна,вторая группа ран.возр,Июнь
```
| Часть | Содержание | Куда попадает |
|---|---|---|
| 1 | наименование учреждения | не переносится |
| 2 | лицевой счёт учреждения | «Расчётный счёт» в реестре |
| 3 | лицевой счёт ребёнка | по нему определяется ребёнок |
| 4 | ФИО ребёнка | используется для поиска |
| 5 | группа | «Группа» в реестре |
| 6 | период оплаты (месяц) | «Период оплаты» в реестре |
Лицевой счёт ребёнка ищется после последнего «л/с»; латинская `X` и кириллическая `Х` считаются одинаковыми, наличие/отсутствие буквы перед цифрами тоже допускается.
**Разовый платёж от родителя** (не по реестру): достаточно указать `л/с X000013125`. Ребёнок определится, реквизиты реестра останутся пустыми — это нормальный режим.
### 5.4. Что проверить после проведения
На пульте, страница **«Кассовые поступления»**, колонка **«Строк не распознано»**. Если там не ноль — в этих строках ребёнок не определён, при передаче в сад они уйдут без реквизитов. Причины и что делать — раздел 10.
---
## 6. Передача поступивших платежей в сад (ЦБ)
1. Открыть «Передача поступивших платежей в учреждения», создать документ.
2. Указать: организация — ЦБ, **учреждение (один сад)**, период, ИФО.
3. Нажать **«Заполнить по поступившим платежам»**. Подбираются платежи, поступившие в ЦБ и ещё не переданные этому саду; реквизиты реестра подтягиваются из назначения платежа.
4. Проверить таблицу «Задолженность»: суммы, дети, договоры. Итог по колонке «Сумма» попадает в сумму документа.
5. Провести документ. Бухгалтерских проводок документ не формирует — он делает расход по регистру взаиморасчётов.
6. Нажать **«Создать приём платежей»** — создаётся документ принятия у сада и сразу открывается. Повторное нажатие открывает уже созданный документ, дубль не появляется.
7. Нажать **«Реестр платежей»** — печатная форма для сада.
8. Нажать **«Создать извещение»** — формируется исходящее извещение ф. 0504805 (вид «Получение дохода»). Повторное нажатие открывает существующее.
**Важно:** документ адресный — один сад на документ. Если в остатках оказались разные ИФО или КФО, система предупредит: передайте их отдельными документами.
---
## 7. Принятие платежей из ЦБ (сад)
1. Открыть документ принятия — проще всего из документа передачи кнопкой **«Создать приём платежей»**, тогда шапка и строки заполнятся автоматически.
2. Если создаёте вручную: указать организацию (сад), заполнить «Документ передачи», нажать **«Заполнить по документу передачи»**.
3. Проверить строки: суммы, дети, договоры.
4. Заполнить реквизит **«Вид платежа в бюджет»** — он нужен для аналитики счёта 303.05.
5. Провести документ: построчно формируются проводки `Дт 303.05.831 Кт 205.31.660`.
6. Нажать **«Реестр платежей»**, затем **«Создать извещение»** — создаётся входящее извещение (вид «Получение дохода») со ссылкой на извещение ЦБ.
Проверить проводки можно кнопкой **«Просмотр бухгалтерских записей»** в обоих документах.
---
## 8. Пульт «Управление расчётами по родительской плате»
Фильтры: период, организация (ЦБ), ИФО, учреждение (сад). После изменения фильтров — кнопка **«Обновить»**. По умолчанию подставляется текущий месяц и организация ЦБ; период можно поставить любой — день, неделю, месяц.
| Страница | Что показывает | Зачем нужна |
|---|---|---|
| **Начисления** | документы начисления родительской платы садов за период | увидеть, что сады начислили |
| **Документы передачи** | передачи ЦБ за период | контроль, что передано |
| **Документы принятия** | принятия садов; клик по строке передачи сужает список до этого документа | увидеть, кто ещё не принял |
| **Сверка «передано / принято»** | по каждой передаче: передано, принято, расхождение | главный контроль периода |
| **Остатки и обороты** | остатки по регистру взаиморасчётов: верхняя таблица — по садам, нижняя — по детям (клик по саду) | понять, что осталось у ЦБ |
| **Кассовые поступления** | поступления с признаком «Родительская плата», число строк и число нераспознанных | найти строки, требующие ручной правки |
**«Остаток у ЦБ»** = деньги поступили, но ещё не переданы в сад. При ежедневном режиме он близок к нулю, при месячном — накапливается до даты передачи; и в том и в другом случае это ровно та сумма, которую предстоит передать.
Кнопка **«Оборотная ведомость»** открывает отчёт с текущими отборами (организация, учреждение, ИФО).
---
## 9. Печатные формы
| Форма | Как получить | Особенности |
|---|---|---|
| **Реестр платежей** | кнопка «Реестр платежей» в передаче и в принятии | вёрстка одна и та же для ЦБ и сада; проведение не требуется |
| **Извещение ф. 0504805** | кнопка «Печать извещения» в передаче и в принятии | печатается по строкам «Задолженности», проведение не требуется |
В передаче печатается извещение **отправителя** (ЦБ), в принятии — **получателя** (сад).
Не пользуйтесь типовой командой печати из самого документа `ИзвещениеИсходящее` / `ИзвещениеВходящее`: она требует проведения документа. Кнопка расширения работает и без проведения.
---
## 10. Что делать, если…
| Симптом | Причина | Действия |
|---|---|---|
| В строках расшифровки не заполнился КФО | у лицевого счёта не задан раздел с допустимыми КФО | сообщить администратору: заполнить раздел лицевого счёта и допустимые КФО |
| В расшифровке не определился ребёнок | в назначении нет лицевого счёта ребёнка или его нет в справочнике «Дети» | проверить примечание строки и лицевой счёт в справочнике |
| «У ребёнка … не заполнен контрагент» | в справочнике «Дети» не заполнен контрагент | заполнить контрагента у ребёнка |
| «По контрагенту … найдено договоров — N, договор не заполнен» | у родителя несколько договоров | указать договор в строке вручную |
| В передаче пусты лицевой счёт, расчётный счёт, группа, период оплаты, дата платежа | кассовое поступление не перепроведено после обновления расширения | перепровести кассовое поступление и заново заполнить передачу |
| «Распознан лицевой счёт ребёнка, но признак „Родительская плата“ не установлен» | снят признак (часто из-за заполненного корсчёта 303.00) | корсчёт — «прочие счета», признак установить, перепровести |
| «Поступивших платежей, ещё не переданных в учреждения, не найдено» | всё уже передано либо не тот сад/период | проверить учреждение и остатки на пульте |
| «Для организации … не найден контрагент» | нет соответствия «организация → контрагент» для извещения | сообщить администратору |
| Суммы в сверке расходятся | сад ещё не принял документ или принял частично | запросить принятие у сада |
| На счёте 303.05 остаток | начислено больше, чем поступило: разрыв сроков оплаты | норма; при систематическом росте — разбирать задолженность родителей |
---
## 11. Что важно знать о текущей версии
- Извещения ф. 0504805 — **обёртки**: проводок они не формируют. Проводки остаются в передаче (регистр) и в принятии (бухгалтерские).
- Изменение документа передачи или принятия **перезаполняет** связанное извещение, если оно ещё не проведено и не помечено на удаление. Проведённое извещение автоматически не меняется — его нужно распровести или создать заново.
- Повторное нажатие «Создать извещение» / «Создать приём платежей» дублей не создаёт — открывает существующий документ.
- Обмен и подписание извещений — внешними средствами ЭДО, из расширения не выполняется.
- Извещения о начислениях (вид «Начисление дохода») и регистрация ожидаемых поступлений — типовые документы БГУ, расширением не автоматизируются.
- В передачах, созданных до версии 1.0.0, реквизит «Принятие платежей» не заполнен — кнопка создаст новый документ принятия.