12 Commits

Author SHA1 Message Date
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
42 changed files with 5858 additions and 1584 deletions
@@ -46,22 +46,6 @@
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="41aaa445-1ed9-4189-9d41-fdb0af01e3fe">
<name>ИДСтроки</name>
<synonym>
<key>ru</key>
<value>ИД строки (квитанции)</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>25</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="97856254-22f9-4198-9f0f-b7118e28d143">
<name>ДокументПередачи</name>
<synonym>
@@ -93,10 +77,10 @@
<name>Учреждение</name>
<synonym>
<key>ru</key>
<value>Учреждение-отправитель</value>
<value>Учреждение (сад)</value>
</synonym>
<type>
<types>CatalogRef.Контрагенты</types>
<types>CatalogRef.Организации</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
@@ -187,4 +171,21 @@
<fullTextSearch>Use</fullTextSearch>
<useInTotals>true</useInTotals>
</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>
@@ -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"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c575ba64-5d30-4a94-93ca-951ca20211ec">
<name>ПС_РаботаСКонтрагентами</name>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="df60b70c-4101-4771-b92e-bbd114678406">
<name>ПС_ВнутреннийЭДОИзвещений</name>
<synonym>
<key>ru</key>
<value>ПС Работа с контрагентами</value>
<value>ПС_Внутренний ЭДО извещений</value>
</synonym>
<server>true</server>
<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).
//
@@ -158,7 +222,7 @@
// Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - договоры по контрагентам,
// определённые однозначно.
//
Функция ДоговорыПоКонтрагентам(Контрагенты, ДокументОбъект, СчетРасчетов)
Функция ДоговорыПоКонтрагентам(Контрагенты, ОрганизацииКонтрагентов, ДокументОбъект, СчетРасчетов)
КонтрагентыМассив = Новый Массив;
Для Каждого Элемент Из Контрагенты Цикл
@@ -170,10 +234,12 @@
КоличествоДоговоров = Новый Соответствие;
// 1. Договоры из остатков по счёту 205.31 - приоритетный источник.
ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ДокументОбъект, СчетРасчетов, Результат, Неоднозначные);
ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ОрганизацииКонтрагентов, ДокументОбъект, СчетРасчетов,
Результат, Неоднозначные);
// 2. Для остальных контрагентов - единственный договор, отобранный по реквизиту "Контрагент".
ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, Результат, Неоднозначные, КоличествоДоговоров);
ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, ОрганизацииКонтрагентов, Результат, Неоднозначные,
КоличествоДоговоров);
// 3. Диагностика по контрагентам, для которых договор определить не удалось.
Для Каждого Элемент Из Контрагенты Цикл
@@ -208,12 +274,15 @@
//
// Параметры:
// КонтрагентыМассив - Массив из СправочникСсылка.Контрагенты - контрагенты (дети), по которым ищутся остатки.
// ОрганизацииКонтрагентов - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Организации -
// организация ребёнка по контрагенту. Пустая ссылка - отбор по организации не применяется.
// ДокументОбъект - ДокументОбъект.КассовоеПоступление - документ, по дате и организации которого ищутся остатки.
// Счет20531 - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы (205.31).
// Результат - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - дополняется найденными договорами.
// Неоднозначные - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты с несколькими договорами в остатках.
//
Процедура ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ДокументОбъект, Счет20531, Результат, Неоднозначные)
Процедура ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ОрганизацииКонтрагентов, ДокументОбъект, Счет20531,
Результат, Неоднозначные)
Если НЕ ЗначениеЗаполнено(Счет20531) Тогда
Возврат;
@@ -229,15 +298,19 @@
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Остатки.Субконто1 КАК Контрагент,
| Остатки.Субконто2 КАК Договор
| Остатки.Субконто2 КАК Договор,
| Договоры.Организация КАК Организация
|ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Остатки(
| &Дата,
| Счет В ИЕРАРХИИ (&Счет20531),
| &ВидыСубконто,
| Организация = &Организация И Субконто1 В (&Контрагенты)) КАК Остатки
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Договоры КАК Договоры
| ПО Остатки.Субконто2 = Договоры.Ссылка
|ГДЕ
| Остатки.СуммаОстаток <> 0";
| Остатки.СуммаОстаток <> 0
| И НЕ Договоры.ВАрхиве";
Запрос.УстановитьПараметр("Дата", ДокументОбъект.Дата);
Запрос.УстановитьПараметр("Счет20531", Счет20531);
Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
@@ -251,6 +324,10 @@
Продолжить;
КонецЕсли;
Если НЕ ОрганизацияДоговораПодходит(Выборка.Организация, ОрганизацииКонтрагентов[Выборка.Контрагент]) Тогда
Продолжить;
КонецЕсли;
НайденныйДоговор = Результат[Выборка.Контрагент];
Если НайденныйДоговор = Неопределено Тогда
Результат.Вставить(Выборка.Контрагент, Выборка.Договор);
@@ -263,24 +340,32 @@
КонецПроцедуры
// Дополняет результат единственным договором, отобранным по реквизиту "Контрагент".
// Учитываются только действующие договоры (не помеченные на удаление и не находящиеся в архиве),
// организация договора должна совпадать с организацией ребёнка: при переводе ребёнка из сада в сад
// у родителя остаются договоры прежних учреждений.
//
// Параметры:
// КонтрагентыМассив - Массив из СправочникСсылка.Контрагенты - контрагенты (дети), по которым отбираются договоры.
// ОрганизацииКонтрагентов - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Организации -
// организация ребёнка по контрагенту. Пустая ссылка - отбор по организации не применяется.
// Результат - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - дополняется найденными договорами.
// Неоднозначные - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты с неоднозначным договором.
// КоличествоДоговоров - Соответствие из СправочникСсылка.Контрагенты, Число - количество найденных договоров.
//
Процедура ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, Результат, Неоднозначные, КоличествоДоговоров)
Процедура ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, ОрганизацииКонтрагентов, Результат, Неоднозначные,
КоличествоДоговоров)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Договоры.Контрагент КАК Контрагент,
| Договоры.Ссылка КАК Договор
| Договоры.Ссылка КАК Договор,
| Договоры.Организация КАК Организация
|ИЗ
| Справочник.Договоры КАК Договоры
|ГДЕ
| НЕ Договоры.ПометкаУдаления
| И НЕ Договоры.ВАрхиве
| И Договоры.Контрагент В (&Контрагенты)
|УПОРЯДОЧИТЬ ПО
| Договоры.Контрагент";
@@ -290,6 +375,10 @@
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если НЕ ОрганизацияДоговораПодходит(Выборка.Организация, ОрганизацииКонтрагентов[Выборка.Контрагент]) Тогда
Продолжить;
КонецЕсли;
ДоговорыКонтрагента = Найденные[Выборка.Контрагент];
Если ДоговорыКонтрагента = Неопределено Тогда
ДоговорыКонтрагента = Новый Массив;
@@ -313,6 +402,29 @@
КонецПроцедуры
// Проверяет, что договор относится к организации ребёнка.
//
// При переводе ребёнка из сада в сад по нему остаются договоры прежних учреждений,
// поэтому договор без проверки организации выбирается неверно.
//
// Параметры:
// ОрганизацияДоговора - СправочникСсылка.Организации - организация, указанная в договоре.
// ОрганизацияРебенка - СправочникСсылка.Организации - текущая организация ребёнка;
// пустая ссылка или Неопределено - отбор по организации не применяется.
//
// Возвращаемое значение:
// Булево - Истина, если договор подходит; Ложь - если относится к другой организации.
//
Функция ОрганизацияДоговораПодходит(ОрганизацияДоговора, ОрганизацияРебенка)
Если НЕ ЗначениеЗаполнено(ОрганизацияРебенка) Тогда
Возврат Истина;
КонецЕсли;
Возврат ОрганизацияДоговора = ОрганизацияРебенка;
КонецФункции
// Заполняет реквизиты строк расшифровки платежа по результатам разбора назначения.
// КОСГУ "000", проставленный типовой загрузкой реестров, заменяется принудительно;
// остальные заполненные значения не перезаписываются.
@@ -323,11 +435,14 @@
// договоры, определённые по контрагентам однозначно.
// СчетРасчетов - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы.
// КОСГУНазначениеПлатежа - СправочникСсылка.КОСГУ - КОСГУ назначения платежа.
// КФОПоСчетам - Соответствие из Строка, ПеречислениеСсылка.КВД - КФО по номерам
// лицевых счетов, см. КФОПоЛицевымСчетам.
//
// Возвращаемое значение:
// Число - количество заполненных строк расшифровки платежа.
//
Функция ЗаполнитьСтрокиРасшифровки(СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа)
Функция ЗаполнитьСтрокиРасшифровки(СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа,
КФОПоСчетам = Неопределено)
// Типовая загрузка реестров прописывает в КОСГУ назначения платежа код "000" -
// для родительской платы его нужно заменить принудительно.
@@ -359,6 +474,10 @@
СтрокаРасшифровки.КОСГУНазначениеПлатежа = КОСГУНазначениеПлатежа;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(СтрокаРасшифровки.КФО) И КФОПоСчетам <> Неопределено Тогда
СтрокаРасшифровки.КФО = КФОСтрокиПоЛицевомуСчету(КФОПоСчетам, СтрокаКЗаполнению.ЛицевойСчет);
КонецЕсли;
Заполнено = Заполнено + 1;
КонецЦикла;
@@ -367,6 +486,108 @@
КонецФункции
// Определяет КФО для лицевых счетов строк документа.
//
// КФО задаётся на разделе лицевого счёта (табличная часть "Допустимые КФО"). Список допустимых
// значений получаем типовой функцией, она же упорядочивает их по порядку перечисления КВД.
// Как и в типовых формах, берётся первое допустимое значение: если у счёта разрешено несколько
// КФО, подставляется значение с наименьшим порядком, остальные бухгалтер может выбрать вручную.
//
// Параметры:
// СтрокиКЗаполнению - Массив из Структура - строки, по которым определён ребёнок и контрагент.
//
// Возвращаемое значение:
// Соответствие из Строка, ПеречислениеСсылка.КВД - КФО по номерам лицевых счетов,
// по которым допустимый КФО определён.
//
Функция КФОПоЛицевымСчетам(СтрокиКЗаполнению)
Результат = Новый Соответствие;
Коды = Новый Массив;
Для Каждого СтрокаКЗаполнению Из СтрокиКЗаполнению Цикл
Для Каждого Код Из КодыПоискаРебенка(СтрокаКЗаполнению.ЛицевойСчет) Цикл
Коды.Добавить(Код);
КонецЦикла;
КонецЦикла;
Если Коды.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
Для Каждого ЛицевойСчет Из ЛицевыеСчетаПоКодам(Коды) Цикл
ДопустимыеКФО = ПлатежноРасчетныеДокументыПовтИсп.ДопустимыеКФО(, ЛицевойСчет.Значение);
Если ДопустимыеКФО.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
Результат.Вставить(ЛицевойСчет.Ключ, ДопустимыеКФО[0]);
КонецЦикла;
Возврат Результат;
КонецФункции
// Возвращает КФО строки по номеру лицевого счёта, распознанному в назначении платежа.
//
// Параметры:
// КФОПоСчетам - Соответствие из Строка, ПеречислениеСсылка.КВД - КФО по номерам лицевых счетов.
// ЛицевойСчет - Строка - лицевой счёт, распознанный в назначении платежа.
//
// Возвращаемое значение:
// ПеречислениеСсылка.КВД - КФО строки; пустая ссылка, если КФО определить не удалось.
//
Функция КФОСтрокиПоЛицевомуСчету(КФОПоСчетам, ЛицевойСчет)
Для Каждого Код Из КодыПоискаРебенка(ЛицевойСчет) Цикл
КФО = КФОПоСчетам[Код];
Если КФО <> Неопределено Тогда
Возврат КФО;
КонецЕсли;
КонецЦикла;
Возврат Перечисления.КВД.ПустаяСсылка();
КонецФункции
// Возвращает лицевые счета по их номерам.
//
// Параметры:
// Коды - Массив из Строка - номера лицевых счетов (варианты написания).
//
// Возвращаемое значение:
// Соответствие из Строка, СправочникСсылка.ЛицевыеСчета - лицевые счета по номерам.
//
Функция ЛицевыеСчетаПоКодам(Коды)
Результат = Новый Соответствие;
Если Коды.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЛицевыеСчета.Код КАК Код,
| ЛицевыеСчета.Ссылка КАК Ссылка
|ИЗ
| Справочник.ЛицевыеСчета КАК ЛицевыеСчета
|ГДЕ
| НЕ ЛицевыеСчета.ПометкаУдаления
| И ЛицевыеСчета.Код В (&Коды)";
Запрос.УстановитьПараметр("Коды", Коды);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Результат.Вставить(СокрЛП(Выборка.Код), Выборка.Ссылка);
КонецЦикла;
Возврат Результат;
КонецФункции
// Определяет лицевой счёт ребёнка по тексту назначения платежа.
// Лицевой счёт идёт после последнего вхождения "л/с" и может начинаться с буквы "Х" или "Г".
//
@@ -412,6 +633,29 @@
КонецФункции
// Убирает префикс "л/с" (в любом регистре и написании) из значения части назначения платежа.
//
// Параметры:
// Значение - Строка - часть назначения платежа, например "л/с 03003001079".
//
// Возвращаемое значение:
// Строка - значение без префикса и лишних пробелов.
//
Функция УбратьПрефиксЛицевогоСчета(Значение)
Текст = СокрЛП(Значение);
ВерхнийРегистр = ВРЕГ(Текст);
Если Лев(ВерхнийРегистр, 3) = "Л/С" Тогда
Возврат СокрЛП(Сред(Текст, 4));
ИначеЕсли Лев(ВерхнийРегистр, 2) = "ЛС" Тогда
Возврат СокрЛП(Сред(Текст, 3));
КонецЕсли;
Возврат Текст;
КонецФункции
// Возвращает ФИО ребёнка из текста назначения платежа (4-я часть, разделитель - запятая).
// Для поиска используется пара "Фамилия Имя", как в реестрах.
//
@@ -488,7 +732,8 @@
| Дети.Код КАК Код,
| Дети.Ссылка КАК Ссылка,
| Дети.Наименование КАК Наименование,
| Дети.Контрагент КАК Контрагент
| Дети.Контрагент КАК Контрагент,
| Дети.Организация КАК Организация
|ИЗ
| Справочник.Дети КАК Дети
|ГДЕ
@@ -498,8 +743,12 @@
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Результат.Вставить(СокрЛП(Выборка.Код), Новый Структура("Ссылка, Наименование, Контрагент",
Выборка.Ссылка, Выборка.Наименование, Выборка.Контрагент));
Ребенок = Новый Структура;
Ребенок.Вставить("Ссылка", Выборка.Ссылка);
Ребенок.Вставить("Наименование", Выборка.Наименование);
Ребенок.Вставить("Контрагент", Выборка.Контрагент);
Ребенок.Вставить("Организация", Выборка.Организация);
Результат.Вставить(СокрЛП(Выборка.Код), Ребенок);
КонецЦикла;
Возврат Результат;
@@ -43,10 +43,7 @@
// Вёрстка и набор областей повторяют типовую печатную форму документа ИзвещениеИсходящее.
// Заполняется та сторона, от которой печатается извещение: для передачи поступивших платежей -
// отправитель (централизованная бухгалтерия), для принятия платежей - получатель (учреждение).
// Суммы и счета берутся из проводок документа, поэтому печатается только проведённый документ.
//
// Документ передачи платежей ЦБ охватывает несколько учреждений, поэтому из него формируется
// отдельное извещение на каждое учреждение, присутствующее в табличной части "Задолженность".
// Данные берутся из табличной части "Задолженность", поэтому печатается и непроведённый документ.
//
// Параметры:
// ДокументСсылка - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения,
@@ -54,7 +51,7 @@
//
// Возвращаемое значение:
// ТабличныйДокумент - печатная форма; пустой табличный документ, если документ не записан,
// не проведён, нет проводок или не найден макет.
// в нём нет строк или не найден макет.
//
Функция ПечатьИзвещения0504805(ДокументСсылка) Экспорт
@@ -74,18 +71,10 @@
Возврат ТабличныйДокумент;
КонецЕсли;
Если НЕ ДокументОбъект.Проведен Тогда
ОбщегоНазначения.СообщитьПользователю(
"Печатная форма извещения формируется по проводкам документа, поэтому печатается"
+ " только проведённый документ. Проведите документ и повторите печать.");
Возврат ТабличныйДокумент;
КонецЕсли;
Проводки = ПроводкиИзвещения(ДокументСсылка);
Проводки = ДанныеИзвещенияПоРеестру(ДокументОбъект);
Если Проводки.Количество() = 0 Тогда
ОбщегоНазначения.СообщитьПользователю(
"По документу не найдено проводок в регистре бухгалтерии - печатная форма"
+ " извещения не сформирована.");
"Печатная форма извещения не сформирована: в документе нет строк с платежами.");
Возврат ТабличныйДокумент;
КонецЕсли;
@@ -113,8 +102,8 @@
Иначе
// ЦБ передаёт поступившие платежи: печатается сторона отправителя,
// отдельное извещение на каждое учреждение документа.
// ЦБ передаёт поступившие платежи: печатается сторона отправителя.
// Документ адресный, поэтому извещение одно - по учреждению документа.
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПС_ПередачаПоступившихПлатежейВУчреждения_Извещение0504805";
Макет = Документы.ПС_ПередачаПоступившихПлатежейВУчреждения.ПолучитьМакет("ПФ_MXL_Извещение0504805_103н_ПС_РП_Получатель");
Если Макет = Неопределено Тогда
@@ -123,30 +112,19 @@
Возврат ТабличныйДокумент;
КонецЕсли;
Учреждения = УчрежденияДокументаПередачи(ДокументОбъект);
Если Учреждения.Количество() = 0 Тогда
Если НЕ ЗначениеЗаполнено(ДокументОбъект.Учреждение) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Печатная форма извещения не сформирована: в табличной части ""Задолженность"""
+ " не заполнены учреждения.");
"Печатная форма извещения не сформирована: не заполнено учреждение (получатель).");
Возврат ТабличныйДокумент;
КонецЕсли;
Для Каждого Учреждение Из Учреждения Цикл
ПараметрыИзвещения = НоваяСтруктураИзвещения("Отправитель", ДокументОбъект.Организация,
ДокументОбъект.Учреждение,
"Передача поступивших платежей по родительской плате за "
+ Формат(ДокументОбъект.Период, "ДФ=MMMM yyyy")
+ ". Основание: " + Строка(ДокументСсылка) + ".");
ПроводкиУчреждения = ПроводкиПоУчреждению(Проводки, Учреждение);
Если ПроводкиУчреждения.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
ПараметрыИзвещения = НоваяСтруктураИзвещения("Отправитель", ДокументОбъект.Организация,
Учреждение,
"Передача поступивших платежей по родительской плате за "
+ Формат(ДокументОбъект.Период, "ДФ=MMMM yyyy")
+ ". Основание: " + Строка(ДокументСсылка) + ".");
ВывестиИзвещение(ТабличныйДокумент, Макет, ДокументСсылка, ДокументОбъект, ПараметрыИзвещения, ПроводкиУчреждения);
КонецЦикла;
ВывестиИзвещение(ТабличныйДокумент, Макет, ДокументСсылка, ДокументОбъект, ПараметрыИзвещения, Проводки);
КонецЕсли;
@@ -156,10 +134,477 @@
КонецФункции
// Формирует печатную форму реестра поступивших платежей по документу подсистемы.
//
// Реестр строится по табличной части "Задолженность" и не зависит от проводок документа,
// поэтому печатается и непроведённый документ.
//
// Параметры:
// ДокументСсылка - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения,
// ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ - печатаемый документ.
//
// Возвращаемое значение:
// ТабличныйДокумент - печатная форма реестра; пустой табличный документ, если документ
// не записан, не содержит строк или в документе нет макета.
//
Функция ПечатьРеестраПлатежей(ДокументСсылка) Экспорт
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Если НЕ ЗначениеЗаполнено(ДокументСсылка) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Печатная форма реестра не сформирована: документ не записан в базу."
+ " Запишите документ и повторите печать.");
Возврат ТабличныйДокумент;
КонецЕсли;
ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
Если ДокументОбъект = Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю(
"Печатная форма реестра не сформирована: не удалось прочитать документ.");
Возврат ТабличныйДокумент;
КонецЕсли;
Если ДокументОбъект.Задолженность.Количество() = 0 Тогда
ОбщегоНазначения.СообщитьПользователю(
"Печатная форма реестра не сформирована: в документе нет строк с платежами.");
Возврат ТабличныйДокумент;
КонецЕсли;
// Макет общий для обоих документов: реестр у ЦБ и у сада одинаковый,
// поэтому сопровождается в одном месте - общем макете.
Макет = ПолучитьОбщийМакет("ПС_РеестрПлатежей");
Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ") Тогда
Учреждение = ДокументОбъект.Организация;
Иначе
Учреждение = ДокументОбъект.Учреждение;
КонецЕсли;
Если Макет = Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю(
"Печатная форма реестра не сформирована: в документе не найден макет печатной формы.");
Возврат ТабличныйДокумент;
КонецЕсли;
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьЗаголовок.Параметры.ЗаголовокРеестра =
"Реестр поступивших платежей по родительской плате за "
+ Формат(ДокументОбъект.Период, "ДФ='MMMM yyyy'");
ОбластьЗаголовок.Параметры.РеквизитыДокумента =
"Документ № " + ДокументОбъект.Номер + " от " + Формат(ДокументОбъект.Дата, "ДЛФ=DD")
+ ", " + Строка(Учреждение);
ТабличныйДокумент.Вывести(ОбластьЗаголовок);
ТабличныйДокумент.Вывести(Макет.ПолучитьОбласть("ОбластьШапкаТаблицы"));
ОбластьСтрока = Макет.ПолучитьОбласть("ОбластьСтрокаТаблицы");
ИтогоСумма = 0;
Для Каждого СтрокаРеестра Из ДокументОбъект.Задолженность Цикл
ОбластьСтрока.Параметры.Плательщик = СтрокаРеестра.Контрагент;
ОбластьСтрока.Параметры.Сумма = СтрокаРеестра.Сумма;
ОбластьСтрока.Параметры.ЛицевойСчет = СтрокаРеестра.ЛицевойСчет;
ОбластьСтрока.Параметры.Ребенок = СтрокаРеестра.Ребенок;
ОбластьСтрока.Параметры.НазначениеПлатежа = СтрокаРеестра.НазначениеПлатежа;
ОбластьСтрока.Параметры.Организация = Учреждение;
ОбластьСтрока.Параметры.РассчетныйСчет = СтрокаРеестра.РасчетныйСчет;
ОбластьСтрока.Параметры.Группа = СтрокаРеестра.Группа;
ОбластьСтрока.Параметры.Период = СтрокаРеестра.ПериодОплаты;
ОбластьСтрока.Параметры.ДатаПлатежа = СтрокаРеестра.ДатаПлатежа;
ТабличныйДокумент.Вывести(ОбластьСтрока);
ИтогоСумма = ИтогоСумма + СтрокаРеестра.Сумма;
КонецЦикла;
ОбластьПодвал = Макет.ПолучитьОбласть("ОбластьПодвалТаблицы");
ОбластьПодвал.Параметры.ОбщаяСумма = ИтогоСумма;
ТабличныйДокумент.Вывести(ОбластьПодвал);
Возврат ТабличныйДокумент;
КонецФункции
// Создаёт (или перезаполняет) исходящее извещение ф. 0504805 по документу передачи платежей.
//
// Извещение создаётся как обёртка: заполняются шапка и табличная часть "Передаваемые проводки"
// (она же данные печати), документ не проводится - бухгалтерские проводки остаются в документе
// передачи. Извещение служит носителем шапки, связей и данных для электронного документооборота.
//
// Параметры:
// ДокументПередачи - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения - документ-основание.
//
// Возвращаемое значение:
// ДокументСсылка.ИзвещениеИсходящее - созданное или перезаполненное извещение;
// пустая ссылка, если извещение проведено.
//
Функция СоздатьИзвещениеПоПередаче(ДокументПередачи) Экспорт
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументПередачи,
"Организация, Учреждение, ИФО, Период, Ответственный, ИзвещениеИсходящее");
ИзвещениеОбъект = Неопределено;
ЭтоНовоеИзвещение = Истина;
Если ЗначениеЗаполнено(Реквизиты.ИзвещениеИсходящее) Тогда
ИзвещениеОбъект = Реквизиты.ИзвещениеИсходящее.ПолучитьОбъект();
ЭтоНовоеИзвещение = ИзвещениеОбъект = Неопределено;
КонецЕсли;
Если ЭтоНовоеИзвещение Тогда
ИзвещениеОбъект = Документы.ИзвещениеИсходящее.СоздатьДокумент();
ИначеЕсли ИзвещениеОбъект.ПомеченНаУдаление Тогда
ОбщегоНазначения.СообщитьПользователю(
"Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " помечено на удаление: изменения в него не вносятся."
+ " Снимите пометку удаления или отвяжите извещение от документа передачи.");
Возврат Документы.ИзвещениеИсходящее.ПустаяСсылка();
ИначеЕсли ИзвещениеОбъект.Проведен Тогда
ОбщегоНазначения.СообщитьПользователю(
"Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " проведено: изменения в него не вносятся."
+ " Распроведите извещение или отвяжите его от документа передачи.");
Возврат Документы.ИзвещениеИсходящее.ПустаяСсылка();
КонецЕсли;
Если ЭтоНовоеИзвещение Тогда
ИзвещениеОбъект.Дата = ТекущаяДатаСеанса();
КонецЕсли;
ИзвещениеОбъект.Организация = Реквизиты.Организация;
ИзвещениеОбъект.Получатель = КонтрагентПоОрганизации(Реквизиты.Учреждение);
ИзвещениеОбъект.ВидИзвещения = Перечисления.ВидыОперацийИсходящееИзвещение.ПолучениеДохода;
ИзвещениеОбъект.ИФО = Реквизиты.ИФО;
ИзвещениеОбъект.Ответственный = Реквизиты.Ответственный;
ИзвещениеОбъект.Комментарий =
"Передача поступивших платежей по родительской плате за "
+ Формат(Реквизиты.Период, "ДФ='MMMM yyyy'")
+ ". Основание: " + Строка(ДокументПередачи) + ".";
ЗаполнитьПроводкиИзвещения(ИзвещениеОбъект, ДокументПередачи);
ИзвещениеОбъект.Записать(РежимЗаписиДокумента.Запись);
Возврат ИзвещениеОбъект.Ссылка;
КонецФункции
// Создаёт (или перезаполняет) входящее извещение ф. 0504805 по документу принятия платежей.
//
// Извещение создаётся как обёртка: заполняются шапка и табличная часть "Передаваемые проводки",
// документ не проводится - проводки формирует документ принятия.
//
// Параметры:
// ДокументПринятия - ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ - документ-основание.
//
// Возвращаемое значение:
// ДокументСсылка.ИзвещениеВходящее - созданное или перезаполненное извещение;
// пустая ссылка, если извещение проведено.
//
Функция СоздатьИзвещениеПоПринятию(ДокументПринятия) Экспорт
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументПринятия,
"Организация, ЦБ, ИФО, Период, Ответственный, ИзвещениеВходящее, ДокументПередачи");
ИзвещениеОбъект = Неопределено;
ЭтоНовоеИзвещение = Истина;
Если ЗначениеЗаполнено(Реквизиты.ИзвещениеВходящее) Тогда
ИзвещениеОбъект = Реквизиты.ИзвещениеВходящее.ПолучитьОбъект();
ЭтоНовоеИзвещение = ИзвещениеОбъект = Неопределено;
КонецЕсли;
Если ЭтоНовоеИзвещение Тогда
ИзвещениеОбъект = Документы.ИзвещениеВходящее.СоздатьДокумент();
ИначеЕсли ИзвещениеОбъект.ПомеченНаУдаление Тогда
ОбщегоНазначения.СообщитьПользователю(
"Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " помечено на удаление: изменения в него не вносятся."
+ " Снимите пометку удаления или отвяжите извещение от документа принятия.");
Возврат Документы.ИзвещениеВходящее.ПустаяСсылка();
ИначеЕсли ИзвещениеОбъект.Проведен Тогда
ОбщегоНазначения.СообщитьПользователю(
"Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " проведено: изменения в него не вносятся."
+ " Распроведите извещение или отвяжите его от документа принятия.");
Возврат Документы.ИзвещениеВходящее.ПустаяСсылка();
КонецЕсли;
Если ЭтоНовоеИзвещение Тогда
ИзвещениеОбъект.Дата = ТекущаяДатаСеанса();
КонецЕсли;
ИзвещениеОбъект.Организация = Реквизиты.Организация;
ИзвещениеОбъект.Отправитель = КонтрагентПоОрганизации(Реквизиты.ЦБ);
ИзвещениеОбъект.ВидИзвещения = Перечисления.ВидыОперацийВходящееИзвещение.ПолучениеДохода;
ИзвещениеОбъект.ИФО = Реквизиты.ИФО;
ИзвещениеОбъект.Ответственный = Реквизиты.Ответственный;
ИзвещениеОбъект.Комментарий =
"Принятие поступивших платежей по родительской плате за "
+ Формат(Реквизиты.Период, "ДФ='MMMM yyyy'")
+ ". Основание: " + Строка(ДокументПринятия) + ".";
Если ЗначениеЗаполнено(Реквизиты.ДокументПередачи) Тогда
ИзвещениеОбъект.ДокументОснование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Реквизиты.ДокументПередачи, "ИзвещениеИсходящее");
КонецЕсли;
ЗаполнитьПроводкиИзвещения(ИзвещениеОбъект, ДокументПринятия);
ИзвещениеОбъект.Записать(РежимЗаписиДокумента.Запись);
Возврат ИзвещениеОбъект.Ссылка;
КонецФункции
// Синхронизирует связанное извещение с изменившимся документом подсистемы.
//
// Вызывается из обработчика записи документов передачи и принятия платежей: извещение
// перезаполняется по актуальным строкам реестра, чтобы его печатная форма не разошлась
// с учётным документом. Проведённое извещение и извещение, помеченное на удаление,
// не изменяются - такие документы пользователь приводит в порядок сам.
//
// Параметры:
// ДокументОбъект - ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения,
// ДокументОбъект.ПС_ПринятиеПоступившихПлатежейИзЦБ - записываемый документ.
//
Процедура ОбновитьИзвещениеПриИзмененииДокумента(ДокументОбъект) Экспорт
Если ДокументОбъект.ЭтоНовый() Тогда
Возврат;
КонецЕсли;
ЭтоПередача = ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения");
Извещение = ?(ЭтоПередача, ДокументОбъект.ИзвещениеИсходящее, ДокументОбъект.ИзвещениеВходящее);
Если НЕ ЗначениеЗаполнено(Извещение) Тогда
Возврат;
КонецЕсли;
СостояниеИзвещения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Извещение,
"Проведен, ПометкаУдаления");
Если СостояниеИзвещения.Проведен ИЛИ СостояниеИзвещения.ПометкаУдаления Тогда
Возврат;
КонецЕсли;
Если ЭтоПередача Тогда
СоздатьИзвещениеПоПередаче(ДокументОбъект.Ссылка);
Иначе
СоздатьИзвещениеПоПринятию(ДокументОбъект.Ссылка);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Заполняет табличную часть "Передаваемые проводки" извещения по строкам реестра документа.
//
// Строки отражают операцию зачисления в доход бюджета: Дт 303.05 (КЭК 831) - Кт 205.31 (КЭК 660).
// КПС берётся из строки реестра, КФО - из шапки документа.
//
// Параметры:
// ИзвещениеОбъект - ДокументОбъект.ИзвещениеИсходящее, ДокументОбъект.ИзвещениеВходящее - заполняемое извещение.
// ДокументСсылка - ДокументСсылка - документ подсистемы, по строкам которого заполняется извещение.
//
Процедура ЗаполнитьПроводкиИзвещения(ИзвещениеОбъект, ДокументСсылка)
ИзвещениеОбъект.ПередаваемыеПроводки.Очистить();
ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
Если ДокументОбъект = Неопределено Тогда
Возврат;
КонецЕсли;
СчетДт = БухгалтерскийУчет.СчетПоКоду("303.05", ДокументОбъект.Дата, ДокументОбъект.Организация);
СчетКт = БухгалтерскийУчет.СчетПоКоду("205.31", ДокументОбъект.Дата, ДокументОбъект.Организация);
КЭКДт = Справочники.КОСГУ.НайтиПоКоду("831");
КЭККт = Справочники.КОСГУ.НайтиПоКоду("660");
Для Каждого СтрокаРеестра Из ДокументОбъект.Задолженность Цикл
Проводка = ИзвещениеОбъект.ПередаваемыеПроводки.Добавить();
Проводка.КФО = ДокументОбъект.КФО;
Проводка.СчетДт = СчетДт;
Проводка.КПСДт = СтрокаРеестра.КПС;
Проводка.КЭКДт = КЭКДт;
Проводка.СчетКт = СчетКт;
Проводка.КПСКт = СтрокаРеестра.КПС;
Проводка.КЭККт = КЭККт;
Проводка.Сумма = СтрокаРеестра.Сумма;
Проводка.Содержание = "Поступление родительской платы";
КонецЦикла;
КонецПроцедуры
// Возвращает контрагента, соответствующего организации, для подстановки в извещение.
//
// Параметры:
// Организация - СправочникСсылка.Организации - организация (сад или централизованная бухгалтерия).
//
// Возвращаемое значение:
// СправочникСсылка.Контрагенты - контрагент организации; пустая ссылка, если соответствие не найдено.
//
Функция КонтрагентПоОрганизации(Организация)
Если НЕ ЗначениеЗаполнено(Организация) Тогда
Возврат Справочники.Контрагенты.ПустаяСсылка();
КонецЕсли;
Контрагент = БюджетнаяОтчетностьПолучениеНСИ.КонтрагентПоОрганизации(Организация);
Если ЗначениеЗаполнено(Контрагент) Тогда
Возврат Контрагент;
КонецЕсли;
// Штатный подбор сравнивает одновременно ИНН, КПП и бюджет организации с реквизитами
// юридического лица контрагента. Если КПП или бюджет расходятся, контрагент не находится -
// подбираем по ИНН и уточняем по КПП и бюджету.
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Организация, "ИНН, КПП, Бюджет");
Если НЕ ЗначениеЗаполнено(Реквизиты.ИНН) Тогда
ОбщегоНазначения.СообщитьПользователю(
"У организации " + Строка(Организация) + " не заполнен ИНН:"
+ " контрагент для извещения не подобран, заполните его вручную.");
Возврат Справочники.Контрагенты.ПустаяСсылка();
КонецЕсли;
Кандидаты = КонтрагентыПоИНН(Реквизиты.ИНН);
Контрагент = ОтобратьКонтрагента(Кандидаты, Реквизиты);
Если ЗначениеЗаполнено(Контрагент) Тогда
Возврат Контрагент;
КонецЕсли;
ВсеПомеченные = Кандидаты.Количество() > 0;
Для Каждого Кандидат Из Кандидаты Цикл
Если НЕ Кандидат.ПометкаУдаления Тогда
ВсеПомеченные = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
Если ВсеПомеченные Тогда
ОбщегоНазначения.СообщитьПользователю(
"Для организации " + Строка(Организация)
+ " найден только контрагент, помеченный на удаление: снимите пометку удаления"
+ " или заведите действующего контрагента.");
Возврат Справочники.Контрагенты.ПустаяСсылка();
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(СтрШаблон(
"Для организации %1 не найден контрагент: ИНН %2, КПП %3, кандидатов по ИНН - %4."
+ " Проверьте КПП и бюджет в юридическом лице контрагента или заполните контрагента вручную.",
Строка(Организация), Реквизиты.ИНН,
?(ЗначениеЗаполнено(Реквизиты.КПП), Реквизиты.КПП, "<не заполнен>"), Кандидаты.Количество()));
Возврат Справочники.Контрагенты.ПустаяСсылка();
КонецФункции
// Возвращает контрагентов-юрлиц с указанным ИНН (без помеченных на удаление).
//
// Параметры:
// ИНН - Строка - ИНН организации.
//
// Возвращаемое значение:
// Массив из Структура - кандидаты: Контрагент, КПП, Бюджет.
//
Функция КонтрагентыПоИНН(ИНН)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Ссылка КАК Контрагент,
| ЮридическиеЛица.КПП КАК КПП,
| ЮридическиеЛица.Бюджет КАК Бюджет,
| Контрагенты.ПометкаУдаления КАК ПометкаУдаления
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ЮридическиеЛица КАК ЮридическиеЛица
| ПО Контрагенты.ЮридическоеФизическоеЛицо = ЮридическиеЛица.Ссылка
|ГДЕ
| Контрагенты.ВидКонтрагента = &ВидКонтрагента
| И ЮридическиеЛица.ИНН = &ИНН";
Запрос.УстановитьПараметр("ВидКонтрагента", Перечисления.ЮрФизЛицо.ЮрЛицо);
Запрос.УстановитьПараметр("ИНН", ИНН);
Кандидаты = Новый Массив;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Кандидаты.Добавить(Новый Структура("Контрагент, КПП, Бюджет, ПометкаУдаления",
Выборка.Контрагент, Выборка.КПП, Выборка.Бюджет, Выборка.ПометкаУдаления));
КонецЦикла;
Возврат Кандидаты;
КонецФункции
// Выбирает контрагента из кандидатов по ИНН, уточняя по КПП и бюджету организации.
//
// Параметры:
// Кандидаты - Массив из Структура - кандидаты, найденные по ИНН.
// Реквизиты - Структура - реквизиты организации: ИНН, КПП, Бюджет.
//
// Возвращаемое значение:
// СправочникСсылка.Контрагенты - единственный подходящий контрагент;
// пустая ссылка, если однозначно выбрать нельзя.
//
Функция ОтобратьКонтрагента(Кандидаты, Реквизиты)
// Помеченные на удаление в работу не принимаются: из них можно только подсказать причину.
Рабочие = Новый Массив;
Для Каждого Кандидат Из Кандидаты Цикл
Если НЕ Кандидат.ПометкаУдаления Тогда
Рабочие.Добавить(Кандидат);
КонецЕсли;
КонецЦикла;
Если Рабочие.Количество() = 0 Тогда
Возврат Справочники.Контрагенты.ПустаяСсылка();
КонецЕсли;
// ИНН уникален для организации: единственный кандидат принимается без уточнений,
// даже если КПП в юридическом лице контрагента отличается.
Если Рабочие.Количество() = 1 Тогда
Возврат Рабочие[0].Контрагент;
КонецЕсли;
Кандидаты = Рабочие;
Если ЗначениеЗаполнено(Реквизиты.КПП) Тогда
Кандидаты = ОтобратьПоРеквизиту(Кандидаты, "КПП", Реквизиты.КПП);
Если Кандидаты.Количество() = 1 Тогда
Возврат Кандидаты[0].Контрагент;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Реквизиты.Бюджет) Тогда
Кандидаты = ОтобратьПоРеквизиту(Кандидаты, "Бюджет", Реквизиты.Бюджет);
Если Кандидаты.Количество() = 1 Тогда
Возврат Кандидаты[0].Контрагент;
КонецЕсли;
КонецЕсли;
Возврат Справочники.Контрагенты.ПустаяСсылка();
КонецФункции
// Оставляет кандидатов с указанным значением реквизита.
//
// Параметры:
// Кандидаты - Массив из Структура - кандидаты.
// ИмяРеквизита - Строка - имя реквизита структуры-кандидата.
// Значение - Произвольный - требуемое значение реквизита.
//
// Возвращаемое значение:
// Массив из Структура - отобранные кандидаты.
//
Функция ОтобратьПоРеквизиту(Кандидаты, ИмяРеквизита, Значение)
Отобрано = Новый Массив;
Для Каждого Кандидат Из Кандидаты Цикл
Если Кандидат[ИмяРеквизита] = Значение Тогда
Отобрано.Добавить(Кандидат);
КонецЕсли;
КонецЦикла;
Возврат Отобрано;
КонецФункции
// Формирует структуру параметров одного извещения для вывода.
//
// Параметры:
@@ -183,7 +628,7 @@
КонецФункции
// Выводит в табличный документ одно извещение по переданным проводкам.
// Выводит в табличный документ одно извещение по переданным данным.
//
// Параметры:
// ТабличныйДокумент - ТабличныйДокумент - печатная форма, в которую выводится извещение.
@@ -191,7 +636,7 @@
// ДокументСсылка - ДокументСсылка - печатаемый документ.
// ДокументОбъект - ДокументОбъект - печатаемый документ.
// ПараметрыИзвещения - Структура - параметры извещения, см. НоваяСтруктураИзвещения.
// Проводки - ТаблицаЗначений - проводки извещения, см. ПроводкиИзвещения.
// Проводки - ТаблицаЗначений - данные извещения, см. ДанныеИзвещенияПоРеестру.
//
Процедура ВывестиИзвещение(ТабличныйДокумент, Макет, ДокументСсылка, ДокументОбъект, ПараметрыИзвещения, Проводки)
@@ -239,64 +684,6 @@
КонецПроцедуры
// Возвращает список учреждений, присутствующих в табличной части "Задолженность" документа передачи.
//
// Параметры:
// ДокументОбъект - ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения - документ передачи платежей.
//
// Возвращаемое значение:
// Массив из СправочникСсылка.Контрагенты - уникальные учреждения в порядке появления в табличной части.
//
Функция УчрежденияДокументаПередачи(ДокументОбъект)
Учреждения = Новый Массив;
Для Каждого СтрокаЗадолженности Из ДокументОбъект.Задолженность Цикл
Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.Учреждение) Тогда
Продолжить;
КонецЕсли;
Если Учреждения.Найти(СтрокаЗадолженности.Учреждение) = Неопределено Тогда
Учреждения.Добавить(СтрокаЗадолженности.Учреждение);
КонецЕсли;
КонецЦикла;
Возврат Учреждения;
КонецФункции
// Возвращает проводки документа, относящиеся к указанному учреждению.
//
// Учреждение определяется по субконто кредита счёта расчётов (304.04), поэтому проверяются
// все позиции субконто.
//
// Параметры:
// Проводки - ТаблицаЗначений - проводки документа, см. ПроводкиИзвещения.
// Учреждение - СправочникСсылка.Контрагенты - учреждение, по которому отбираются проводки.
//
// Возвращаемое значение:
// ТаблицаЗначений - проводки указанного учреждения, колонки как у Проводки.
//
Функция ПроводкиПоУчреждению(Проводки, Учреждение)
Результат = Проводки.Скопировать();
СтрокиДляУдаления = Новый Массив;
Для Каждого Проводка Из Результат Цикл
Если Проводка.СубконтоКт1 = Учреждение
ИЛИ Проводка.СубконтоКт2 = Учреждение
ИЛИ Проводка.СубконтоКт3 = Учреждение Тогда
Продолжить;
КонецЕсли;
СтрокиДляУдаления.Добавить(Проводка);
КонецЦикла;
Для Каждого Проводка Из СтрокиДляУдаления Цикл
Результат.Удалить(Проводка);
КонецЦикла;
Возврат Результат;
КонецФункции
// Заполняет реквизиты стороны извещения (отправителя или получателя) для области "Заголовок".
//
// Параметры:
@@ -471,47 +858,105 @@
КонецФункции
// Возвращает проводки документа по данным регистра бухгалтерии.
// Возвращает идентификатор строки поступления для регистра взаиморасчётов.
//
// Идентификатор связывает строку табличной части "Задолженность" наших документов
// со строкой расшифровки платежа кассового поступления: "<UUID документа>:<номер строки>".
// Длина не должна превышать 50 символов (измерение регистра и реквизит табличных частей).
//
// Параметры:
// ДокументСсылка - ДокументСсылка - печатаемый документ.
// ДокументСсылка - ДокументСсылка.КассовоеПоступление - документ поступления.
// НомерСтроки - Число - номер строки табличной части "Расшифровка платежа".
//
// Возвращаемое значение:
// ТаблицаЗначений - колонки: СчетДт, КПСДт, КЭКДт, СчетКт, КПСКт, КЭККт, КФО, Сумма, Содержание,
// СубконтоКт1, СубконтоКт2, СубконтоКт3.
// Строка
//
Функция ПроводкиИзвещения(ДокументСсылка)
Функция ИдентификаторСтрокиПоступления(ДокументСсылка, НомерСтроки) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Проводки.СчетДт КАК СчетДт,
| Проводки.КПСДт КАК КПСДт,
| Проводки.КЭКДт КАК КЭКДт,
| Проводки.СчетКт КАК СчетКт,
| Проводки.КПСКт КАК КПСКт,
| Проводки.КЭККт КАК КЭККт,
| Проводки.КФО КАК КФО,
| Проводки.Сумма КАК Сумма,
| Проводки.Содержание КАК Содержание,
| Проводки.СубконтоКт1 КАК СубконтоКт1,
| Проводки.СубконтоКт2 КАК СубконтоКт2,
| Проводки.СубконтоКт3 КАК СубконтоКт3
|ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ДвиженияССубконто(, , Регистратор = &ДокументСсылка) КАК Проводки
|
|УПОРЯДОЧИТЬ ПО
| Проводки.НомерСтроки";
Запрос.УстановитьПараметр("ДокументСсылка", ДокументСсылка);
Если НЕ ЗначениеЗаполнено(ДокументСсылка) Тогда
Возврат "";
КонецЕсли;
Возврат Запрос.Выполнить().Выгрузить();
Возврат Строка(ДокументСсылка.УникальныйИдентификатор()) + ":" + Формат(НомерСтроки, "ЧГ=0");
КонецФункции
// Возвращает данные извещения по строкам табличной части "Задолженность".
//
// Извещение не имеет собственных проводок: строки отражают операцию зачисления в доход
// бюджета (Дт 303.05, КЭК 831 - Кт 205.31, КЭК 660), которую выполняет документ подсистемы.
// КПС берётся из строки реестра, КФО - из шапки документа.
//
// Параметры:
// ДокументОбъект - ДокументОбъект - печатаемый документ.
//
// Возвращаемое значение:
// ТаблицаЗначений - колонки: СчетДт, КПСДт, КЭКДт, СчетКт, КПСКт, КЭККт, КФО, Сумма, Содержание.
//
Функция ДанныеИзвещенияПоРеестру(ДокументОбъект)
Данные = Новый ТаблицаЗначений;
Данные.Колонки.Добавить("СчетДт");
Данные.Колонки.Добавить("КПСДт");
Данные.Колонки.Добавить("КЭКДт");
Данные.Колонки.Добавить("СчетКт");
Данные.Колонки.Добавить("КПСКт");
Данные.Колонки.Добавить("КЭККт");
Данные.Колонки.Добавить("КФО");
Данные.Колонки.Добавить("Сумма");
Данные.Колонки.Добавить("Содержание");
СчетДт = ПланыСчетов.ЕПСБУ.НайтиПоКоду("303.05");
СчетКт = ПланыСчетов.ЕПСБУ.НайтиПоКоду("205.31");
КЭКДт = Справочники.КОСГУ.НайтиПоКоду("831");
КЭККт = Справочники.КОСГУ.НайтиПоКоду("660");
Для Каждого СтрокаРеестра Из ДокументОбъект.Задолженность Цикл
СтрокаДанных = Данные.Добавить();
СтрокаДанных.СчетДт = СчетДт;
СтрокаДанных.КПСДт = СтрокаРеестра.КПС;
СтрокаДанных.КЭКДт = КЭКДт;
СтрокаДанных.СчетКт = СчетКт;
СтрокаДанных.КПСКт = СтрокаРеестра.КПС;
СтрокаДанных.КЭККт = КЭККт;
СтрокаДанных.КФО = ДокументОбъект.КФО;
СтрокаДанных.Сумма = СтрокаРеестра.Сумма;
СтрокаДанных.Содержание = СодержаниеСтрокиИзвещения(СтрокаРеестра);
КонецЦикла;
Возврат Данные;
КонецФункции
// Формирует текст содержания строки извещения.
//
// Параметры:
// СтрокаРеестра - СтрокаТаблицыЗначений - строка табличной части "Задолженность".
//
// Возвращаемое значение:
// Строка
//
Функция СодержаниеСтрокиИзвещения(СтрокаРеестра)
ЧастиСодержания = Новый Массив;
Если ЗначениеЗаполнено(СтрокаРеестра.Ребенок) Тогда
ЧастиСодержания.Добавить("Ребенок: " + Строка(СтрокаРеестра.Ребенок));
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаРеестра.Договор) Тогда
ЧастиСодержания.Добавить("Договор: " + Строка(СтрокаРеестра.Договор));
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаРеестра.ПериодОплаты) Тогда
ЧастиСодержания.Добавить("Период: " + СтрокаРеестра.ПериодОплаты);
КонецЕсли;
Возврат СтрСоединить(ЧастиСодержания, "; ");
КонецФункции
// Сворачивает проводки по счетам для раздела "Обороты в журнал операций".
//
// Параметры:
// Проводки - ТаблицаЗначений - проводки документа, см. ПроводкиИзвещения.
// Проводки - ТаблицаЗначений - данные извещения, см. ДанныеИзвещенияПоРеестру.
//
// Возвращаемое значение:
// ТаблицаЗначений - колонки: СчетДт, КПСДт, КЭКДт, СчетКт, КПСКт, КЭККт, КФО, Сумма.
@@ -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>
<defaultLanguage>Checked</defaultLanguage>
<interfaceCompatibilityMode>Checked</interfaceCompatibilityMode>
<logo>Extended</logo>
<splash>Extended</splash>
<defaultRoles>Extended</defaultRoles>
</extension>
<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"/>
<keepMappingToExtendedConfigurationObjectsByIDs>true</keepMappingToExtendedConfigurationObjectsByIDs>
<namePrefix>ПС_</namePrefix>
<configurationExtensionCompatibilityMode>8.3.14</configurationExtensionCompatibilityMode>
<configurationExtensionCompatibilityMode>8.3.24</configurationExtensionCompatibilityMode>
<configurationExtensionPurpose>Customization</configurationExtensionPurpose>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
<defaultRoles>Role.ПС_ОсновнаяРоль</defaultRoles>
<version>1.0.4</version>
<defaultLanguage>Language.Русский</defaultLanguage>
<logo/>
<splash/>
<interfaceCompatibilityMode>TaxiEnableVersion8_2</interfaceCompatibilityMode>
<languages uuid="2f74bb63-c643-4692-af13-1f99a56719fb" extendedConfigurationObject="4b1b900f-9c8f-4b2b-8292-3a9a6db40715">
<name>Русский</name>
@@ -51,13 +56,22 @@
<commonPictures>CommonPicture.ОтменитьДействие</commonPictures>
<commonPictures>CommonPicture.ПовторитьДействие</commonPictures>
<commonPictures>CommonPicture.Сумма</commonPictures>
<commonPictures>CommonPicture.ПС_Лого_Родительская_Плата</commonPictures>
<commonPictures>CommonPicture.ПС_Заставка_Родительская_Плата</commonPictures>
<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>
<settingsStorages>SettingsStorage.ХранилищеВариантовОтчетов</settingsStorages>
<definedTypes>DefinedType.ОснованиеВнутреннегоЭлектронногоДокумента</definedTypes>
<commonForms>CommonForm.УстановкаСтатусаПлатежноРасчетногоДокумента</commonForms>
<catalogs>Catalog.Контрагенты</catalogs>
<catalogs>Catalog.Договоры</catalogs>
@@ -71,10 +85,13 @@
<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>
<enums>Enum.КВД</enums>
<enums>Enum.ПС_ВидыОперацийПоВзаиморасчетам</enums>
<reports>Report.ПС_ВедомостьЦБПоРодительскойПлате</reports>
@@ -22,6 +22,58 @@
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
// Обновляет таблицы пульта при изменении периода отбора.
//
// Параметры:
// Элемент - ПолеФормы - изменённое поле отбора.
//
&НаКлиенте
Процедура ПериодПриИзменении(Элемент)
ОбновитьТаблицыНаСервере();
КонецПроцедуры
// Обновляет таблицы пульта при изменении организации (ЦБ).
//
// Параметры:
// Элемент - ПолеФормы - изменённое поле отбора.
//
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОбновитьТаблицыНаСервере();
КонецПроцедуры
// Обновляет таблицы пульта при изменении ИФО.
//
// Параметры:
// Элемент - ПолеФормы - изменённое поле отбора.
//
&НаКлиенте
Процедура ИФОПриИзменении(Элемент)
ОбновитьТаблицыНаСервере();
КонецПроцедуры
// Обновляет таблицы пульта при изменении учреждения (сада).
//
// Параметры:
// Элемент - ПолеФормы - изменённое поле отбора.
//
&НаКлиенте
Процедура УчреждениеПриИзменении(Элемент)
ОбновитьТаблицыНаСервере();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаДокументыПередачи
// Сужает таблицу принятий до принятий по выбранному документу передачи.
@@ -42,6 +94,26 @@
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаСадыОстатки
// Показывает остатки по детям выбранного сада.
// Строка сада берётся из таблицы «Остатки по садам»; при пустой строке детализация
// остаётся по всем садам из отбора формы.
//
&НаКлиенте
Процедура ТаблицаСадыОстаткиПриАктивизацииСтроки(Элемент)
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьОстаткиПоДетям(ТекущиеДанные.Учреждение);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
// Обновляет данные таблиц формы по установленным фильтрам.
@@ -101,58 +173,31 @@
КонецЕсли;
Отборы = ОтборыДокументовНаСервере();
Если Отборы = Неопределено Тогда
ОчиститьТаблицы();
Возврат;
КонецЕсли;
ЗаполнитьНачисления(Отборы.СадОрганизация);
ЗаполнитьДокументыПередачи(Отборы.ЦБОрганизация, Отборы.СадКонтрагент);
ЗаполнитьДокументыПринятия(Отборы.ЦБКонтрагент, Отборы.СадОрганизация);
ЗаполнитьСверку(Отборы.ЦБОрганизация, Отборы.СадКонтрагент);
ЗаполнитьТаблицуОстатков();
ЗаполнитьДокументыПередачи(Отборы.ЦБОрганизация, Отборы.СадОрганизация);
ЗаполнитьДокументыПринятия(Отборы.ЦБОрганизация, Отборы.СадОрганизация);
ЗаполнитьСверку(Отборы.ЦБОрганизация, Отборы.СадОрганизация);
ЗаполнитьОстаткиПоСадам();
ЗаполнитьОстаткиПоДетям(Неопределено);
ЗаполнитьКассовыеПоступления();
КонецПроцедуры
// Приводит отборы формы (ЦБ и учреждение) к значениям, в терминах которых они хранятся
// в документах.
// Возвращает отборы формы в терминах, в которых они хранятся в документах.
//
// Отборы формы заданы в терминах ЦБ: Организация - это ЦБ (справочник Организации),
// Учреждение - сад (справочник Контрагенты). В документах те же стороны хранятся
// по-разному: документ передачи платежей хранит ЦБ как Организацию, а сад - как
// Контрагента в табличной части "Задолженность"; документ принятия - наоборот.
// Приводим значения отбора к типам, которые есть в документах, сопоставлением по ИНН.
// ЦБ и учреждение (сад) хранятся в документах передачи и принятия организациями,
// поэтому значения отборов передаются в запросы как есть.
//
// Возвращаемое значение:
// Структура - отборы документов: ЦБОрганизация, ЦБКонтрагент, СадОрганизация,
// СадКонтрагент. Неопределено - отбор не удалось сопоставить с данными
// документов (причина уже выведена пользователю).
// Структура - отборы документов: ЦБОрганизация, СадОрганизация.
//
&НаСервере
Функция ОтборыДокументовНаСервере()
Отборы = Новый Структура;
Отборы.Вставить("ЦБОрганизация");
Отборы.Вставить("ЦБКонтрагент");
Отборы.Вставить("СадОрганизация");
Отборы.Вставить("СадКонтрагент");
Если ЗначениеЗаполнено(Объект.Организация) Тогда
Отборы.ЦБОрганизация = Объект.Организация;
Отборы.ЦБКонтрагент = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(Объект.Организация, "Организация (ЦБ)");
Если НЕ ЗначениеЗаполнено(Отборы.ЦБКонтрагент) Тогда
Возврат Неопределено;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Учреждение) Тогда
Отборы.СадКонтрагент = Объект.Учреждение;
Отборы.СадОрганизация = ПС_РаботаСКонтрагентами.ОрганизацияПоКонтрагенту(Объект.Учреждение, "Учреждение (сад)");
Если НЕ ЗначениеЗаполнено(Отборы.СадОрганизация) Тогда
Возврат Неопределено;
КонецЕсли;
КонецЕсли;
Отборы.Вставить("ЦБОрганизация", ?(ЗначениеЗаполнено(Объект.Организация), Объект.Организация, Неопределено));
Отборы.Вставить("СадОрганизация", ?(ЗначениеЗаполнено(Объект.Учреждение), Объект.Учреждение, Неопределено));
Возврат Отборы;
@@ -168,7 +213,8 @@
ДокументыПередачи.Очистить();
ДокументыПринятия.Очистить();
Сверка.Очистить();
ТаблицаОстатков.Очистить();
ТаблицаОстатковСады.Очистить();
ТаблицаОстатковДети.Очистить();
КассовыеПоступления.Очистить();
КонецПроцедуры
@@ -224,23 +270,24 @@
// Таблица показывает документы передачи поступивших платежей в учреждения (документ ЦБ).
//
// Параметры:
// ЦБОрганизация - CatalogRef.Организации - ЦБ в виде организации (документ передачи
// хранит ЦБ в реквизите "Организация"); Неопределено - отбор не задан.
// СадКонтрагент - CatalogRef.Контрагенты - учреждение (сад) в табличной части
// "Задолженность"; Неопределено - отбор по учреждению не задан.
// ЦБОрганизация - CatalogRef.Организации - ЦБ (документ передачи хранит ЦБ
// в реквизите "Организация"); Неопределено - отбор не задан.
// СадОрганизация - CatalogRef.Организации - учреждение (сад) в реквизите
// "Учреждение"; Неопределено - отбор по учреждению не задан.
//
&НаСервере
Процедура ЗаполнитьДокументыПередачи(ЦБОрганизация, СадКонтрагент)
Процедура ЗаполнитьДокументыПередачи(ЦБОрганизация, СадОрганизация)
ДокументыПередачи.Очистить();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
"ВЫБРАТЬ
| Документы.Ссылка КАК Ссылка,
| Документы.Дата КАК Дата,
| Документы.Номер КАК Номер,
| Документы.Организация КАК Организация,
| Документы.Учреждение КАК Учреждение,
| Документы.ИФО КАК ИФО,
| Документы.Период КАК Период,
| Документы.СуммаДокумента КАК СуммаДокумента,
@@ -248,15 +295,13 @@
| Документы.ПометкаУдаления КАК ПометкаУдаления
|ИЗ
| Документ.ПС_ПередачаПоступившихПлатежейВУчреждения КАК Документы
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПС_ПередачаПоступившихПлатежейВУчреждения.Задолженность КАК Строки
| ПО Документы.Ссылка = Строки.Ссылка
|ГДЕ
| Документы.Период >= &НачалоПериода
| И Документы.Период <= &КонецПериода
| И (&ЦБОрганизация = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.Организация = &ЦБОрганизация)
| И (&СадКонтрагент = НЕОПРЕДЕЛЕНО
| ИЛИ Строки.Учреждение = &СадКонтрагент)
| И (&СадОрганизация = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.Учреждение = &СадОрганизация)
| И (&ИФО = НЕОПРЕДЕЛЕНО
| ИЛИ Документы.ИФО = &ИФО)
|УПОРЯДОЧИТЬ ПО
@@ -265,7 +310,7 @@
Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания);
Запрос.УстановитьПараметр("ЦБОрганизация", ЦБОрганизация);
Запрос.УстановитьПараметр("СадКонтрагент", СадКонтрагент);
Запрос.УстановитьПараметр("СадОрганизация", СадОрганизация);
Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено));
Выборка = Запрос.Выполнить().Выбрать();
@@ -279,16 +324,15 @@
// Таблица показывает документы принятия поступивших платежей из ЦБ (документ учреждения).
//
// Параметры:
// ЦБКонтрагент - CatalogRef.Контрагенты - ЦБ в виде контрагента (документ принятия
// хранит ЦБ в реквизите "ЦБ"); Неопределено - отбор не задан.
// СадОрганизация - CatalogRef.Организации - учреждение (сад) в виде организации
// (документ принятия хранит сад в реквизите "Организация");
// ЦБОрганизация - CatalogRef.Организации - ЦБ (документ принятия хранит ЦБ
// в реквизите "ЦБ"); Неопределено - отбор не задан.
// СадОрганизация - CatalogRef.Организации - учреждение (сад) в реквизите "Организация";
// Неопределено - отбор по учреждению не задан.
// ДокументПередачи - ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения - документ
// передачи, по которому отбираются принятия; Неопределено - отбор не задан.
//
&НаСервере
Процедура ЗаполнитьДокументыПринятия(ЦБКонтрагент, СадОрганизация, ДокументПередачи = Неопределено)
Процедура ЗаполнитьДокументыПринятия(ЦБОрганизация, СадОрганизация, ДокументПередачи = Неопределено)
ДокументыПринятия.Очистить();
@@ -325,7 +369,7 @@
Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания);
Запрос.УстановитьПараметр("Организация", СадОрганизация);
Запрос.УстановитьПараметр("ЦБ", ЦБКонтрагент);
Запрос.УстановитьПараметр("ЦБ", ЦБОрганизация);
Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено));
Запрос.УстановитьПараметр("ДокументПередачи", ДокументПередачи);
@@ -346,12 +390,8 @@
Процедура ЗаполнитьПринятияПоПередачеНаСервере(ДокументПередачи)
Отборы = ОтборыДокументовНаСервере();
Если Отборы = Неопределено Тогда
ДокументыПринятия.Очистить();
Возврат;
КонецЕсли;
ЗаполнитьДокументыПринятия(Отборы.ЦБКонтрагент, Отборы.СадОрганизация, ДокументПередачи);
ЗаполнитьДокументыПринятия(Отборы.ЦБОрганизация, Отборы.СадОрганизация, ДокументПередачи);
КонецПроцедуры
@@ -360,13 +400,13 @@
// реквизит ДокументПередачи документа принятия.
//
// Параметры:
// ЦБОрганизация - CatalogRef.Организации - ЦБ в виде организации (документ передачи
// хранит ЦБ в реквизите "Организация"); Неопределено - отбор не задан.
// СадКонтрагент - CatalogRef.Контрагенты - учреждение (сад) в табличной части
// "Задолженность"; Неопределено - отбор по учреждению не задан.
// ЦБОрганизация - CatalogRef.Организации - ЦБ (документ передачи хранит ЦБ
// в реквизите "Организация"); Неопределено - отбор не задан.
// СадОрганизация - CatalogRef.Организации - учреждение (сад) в реквизите
// "Учреждение"; Неопределено - отбор по учреждению не задан.
//
&НаСервере
Процедура ЗаполнитьСверку(ЦБОрганизация, СадКонтрагент)
Процедура ЗаполнитьСверку(ЦБОрганизация, СадОрганизация)
Сверка.Очистить();
@@ -386,10 +426,11 @@
| ДокументПередачи
|;
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|ВЫБРАТЬ
| Передача.Ссылка КАК ДокументПередачи,
| Передача.Период КАК Период,
| Передача.Организация КАК ЦБ,
| Передача.Учреждение КАК Сад,
| Передача.СуммаДокумента КАК СуммаПередано,
| ЕСТЬNULL(ВТПринято.СуммаПринято, 0) КАК СуммаПринято,
| Передача.СуммаДокумента - ЕСТЬNULL(ВТПринято.СуммаПринято, 0) КАК Расхождение,
@@ -398,8 +439,6 @@
| Документ.ПС_ПередачаПоступившихПлатежейВУчреждения КАК Передача
| ЛЕВОЕ СОЕДИНЕНИЕ ВТПринято КАК ВТПринято
| ПО Передача.Ссылка = ВТПринято.ДокументПередачи
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПС_ПередачаПоступившихПлатежейВУчреждения.Задолженность КАК Строки
| ПО Передача.Ссылка = Строки.Ссылка
|ГДЕ
| НЕ Передача.ПометкаУдаления
| И Передача.Период >= &НачалоПериода
@@ -407,17 +446,17 @@
| И (&ЦБ = НЕОПРЕДЕЛЕНО
| ИЛИ Передача.Организация = &ЦБ)
| И (&Сад = НЕОПРЕДЕЛЕНО
| ИЛИ Строки.Учреждение = &Сад)
| ИЛИ Передача.Учреждение = &Сад)
| И (&ИФО = НЕОПРЕДЕЛЕНО
| ИЛИ Передача.ИФО = &ИФО)
|УПОРЯДОЧИТЬ ПО
| Передача.Период,
| Передача.Организация";
| Передача.Учреждение";
Запрос.УстановитьПараметр("НачалоПериода", Объект.Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", Объект.Период.ДатаОкончания);
Запрос.УстановитьПараметр("ЦБ", ЦБОрганизация);
Запрос.УстановитьПараметр("Сад", СадКонтрагент);
Запрос.УстановитьПараметр("Сад", СадОрганизация);
Запрос.УстановитьПараметр("ИФО", ?(ЗначениеЗаполнено(Объект.ИФО), Объект.ИФО, Неопределено));
Выборка = Запрос.Выполнить().Выбрать();
@@ -427,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).
// Модуль объекта оставлен пустым намеренно.
@@ -38,7 +38,7 @@
<value>Учреждение (сад)</value>
</synonym>
<type>
<types>CatalogRef.Контрагенты</types>
<types>CatalogRef.Организации</types>
</type>
<minValue 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.
// Без признака приход по регистру взаиморасчётов не формируется, поэтому предупреждаем
// по факту распознанного и найденного лицевого счёта ребёнка.
Если НЕ РодительскаяПлата
И ПС_РазборПлатежейПоРодительскойПлате.ЕстьЛицевыеСчетаДетей(ЭтотОбъект) Тогда
ОбщегоНазначения.СообщитьПользователю(
"В расшифровке платежа распознан лицевой счёт ребёнка, но признак ""Родительская плата"""
+ " не установлен: приход по взаиморасчётам по родительской плате не будет сформирован.");
КонецЕсли;
КонецПроцедуры
&После("ОбработкаПроведения")
@@ -51,31 +61,25 @@
Возврат;
КонецЕсли;
// Сады детей загружаем одним запросом, контрагента сада ищем по одному разу на сад:
// обращение к базе внутри цикла по строкам недопустимо.
// Сады детей загружаем одним запросом: обращение к базе внутри цикла по строкам недопустимо.
ОрганизацииСадов = ПС_ОрганизацииСадовДетей(Дети);
КонтрагентыСадов = Новый Соответствие;
Для Каждого СтрокаРасшифровки Из СтрокиОплаты Цикл
ОрганизацияСада = ОрганизацииСадов[СтрокаРасшифровки.Ребенок];
КонтрагентСада = КонтрагентыСадов[ОрганизацияСада];
Если КонтрагентСада = Неопределено Тогда
КонтрагентСада = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(ОрганизацияСада, "Учреждение");
КонтрагентыСадов.Вставить(ОрганизацияСада, КонтрагентСада);
КонецЕсли;
Движение = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьПриход();
Движение.Период = Дата;
Движение.Организация = Организация;
Движение.Учреждение = КонтрагентСада;
Движение.Учреждение = ОрганизацияСада;
Движение.Плательщик = СтрокаРасшифровки.Контрагент;
Движение.Ребенок = СтрокаРасшифровки.Ребенок;
Движение.Договор = СтрокаРасшифровки.Договор;
Движение.ИФО = ИФО;
Движение.КФО = СтрокаРасшифровки.КФО;
Движение.КПС = СтрокаРасшифровки.КБКНазначениеПлатежа;
Движение.ИДСтроки = ПС_УчетРодительскойПлаты.ИдентификаторСтрокиПоступления(
Ссылка, СтрокаРасшифровки.НомерСтроки);
Движение.Сумма = СтрокаРасшифровки.Сумма;
Движение.ВидОперации = Перечисления.ПС_ВидыОперацийПоВзаиморасчетам.ПоступлениеПлатежа;
@@ -51,6 +51,47 @@
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Учреждение</name>
<id>110</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.Учреждение</segments>
</dataPath>
<extendedTooltip>
<name>УчреждениеРасширеннаяПодсказка</name>
<id>112</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>УчреждениеКонтекстноеМеню</name>
<id>111</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Период</name>
<id>16</id>
@@ -364,47 +405,6 @@
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЗадолженностьУчреждение</name>
<id>103</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.Задолженность.Учреждение</segments>
</dataPath>
<extendedTooltip>
<name>ЗадолженностьЗадолженностьУчреждениеРасширеннаяПодсказка</name>
<id>105</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗадолженностьЗадолженностьУчреждениеКонтекстноеМеню</name>
<id>104</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ЗадолженностьГруппаКонтрагента</name>
<id>92</id>
@@ -685,6 +685,276 @@
<textSize>Normal</textSize>
</extInfo>
</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>
<name>ЗадолженностьКоманднаяПанель</name>
<id>30</id>
@@ -835,6 +1105,50 @@
<items xsi:type="form:FormGroup">
<name>ГруппаСтраницыОбщихДанных</name>
<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">
<name>ИФО</name>
<id>10</id>
@@ -922,6 +1236,46 @@
<textSize>Normal</textSize>
</extInfo>
</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">
<name>Комментарий</name>
<id>81</id>
@@ -1291,6 +1645,58 @@
<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>
<autoFill>true</autoFill>
</autoCommandBar>
@@ -1298,6 +1704,10 @@
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
</handlers>
<handlers>
<event>NotificationProcessing</event>
<name>ОбработкаОповещения</name>
</handlers>
<saveWindowSettings>true</saveWindowSettings>
<autoTitle>true</autoTitle>
<autoUrl>true</autoUrl>
@@ -1392,6 +1802,38 @@
</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>
<navigationPanel/>
<commandBar/>
@@ -20,6 +20,9 @@
Объект.Организация = Константы.ОрганизацияЦентрализованнаяБухгалтерия.Получить();
КонецЕсли;
// Состояние внутреннего ЭДО (подсистема БГУ): организация документа уже определена.
ОбщегоНазначенияБГУ.ПриСозданииНаСервере(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
@@ -27,6 +30,8 @@
БухгалтерскиеОперацииСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект, Элементы.БухгалтерскаяОперация);
ОбщегоНазначенияБГУ.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
@@ -57,6 +62,25 @@
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
// Обновляет гиперссылку состояния внутреннего ЭДО.
ОбщегоНазначенияБГУКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура Подключаемый_ДекорацияБГУНажатие(Элемент, СтандартнаяОбработка)
ОбщегоНазначенияБГУКлиент.ДекорацияНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыЗадолженность
@@ -80,6 +104,25 @@
КонецПроцедуры
&НаКлиенте
Процедура ПечатьРеестраПлатежей(Команда)
ТабличныйДокумент = ПечатьРеестраПлатежейНаСервере(Объект.Ссылка);
ТабличныйДокумент.Показать("Реестр платежей");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьИзвещение(Команда)
Извещение = СоздатьИзвещениеНаСервере();
Если ЗначениеЗаполнено(Извещение) Тогда
ПараметрыФормы = Новый Структура("Ключ", Извещение);
ОткрытьФорму("Документ.ИзвещениеИсходящее.Форма.ФормаДокумента", ПараметрыФормы, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПросмотрБухгалтерскихЗаписей(Команда)
@@ -97,42 +140,21 @@
&НаКлиенте
Процедура СоздатьПринятиеПлатежей(Команда)
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = "Сначала запишите документ передачи платежей.";
СообщениеПользователю.Сообщить();
Возврат;
КонецЕсли;
Если НЕ Объект.Проведен Тогда
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = "Перед созданием приёма платежей документ передачи должен быть проведён.";
СообщениеПользователю.Сообщить();
Возврат;
КонецЕсли;
// По каждому учреждению табличной части открывается форма нового документа принятия:
// строки подбираются по саду документа, записывает документы пользователь.
ОрганизацииСадов = ОрганизацииСадовНаСервере();
Если ОрганизацииСадов.Количество() = 0 Тогда
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = "В табличной части ""Задолженность"" не заполнены учреждения (получатели).";
СообщениеПользователю.Сообщить();
Возврат;
КонецЕсли;
Для Каждого ОрганизацияСада Из ОрганизацииСадов Цикл
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ДокументПередачи", Объект.Ссылка);
ПараметрыФормы.Вставить("ОрганизацияСада", ОрганизацияСада);
Принятие = СоздатьПринятиеПлатежейНаСервере();
Если ЗначениеЗаполнено(Принятие) Тогда
ПараметрыФормы = Новый Структура("Ключ", Принятие);
ОткрытьФорму("Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ.Форма.ФормаДокумента",
ПараметрыФормы,
ЭтотОбъект,
Строка(Объект.Ссылка) + ":" + Строка(ОрганизацияСада));
Строка(Принятие));
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуБГУ(Команда)
ОбщегоНазначенияБГУКлиент.ВыполнитьПодключаемуюКоманду(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
@@ -147,6 +169,72 @@
КонецФункции
&НаСервере
Функция ПечатьРеестраПлатежейНаСервере(ДокументСсылка)
Возврат ПС_УчетРодительскойПлаты.ПечатьРеестраПлатежей(ДокументСсылка);
КонецФункции
&НаСервере
Функция СоздатьПринятиеПлатежейНаСервере()
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОбщегоНазначения.СообщитьПользователю("Сначала запишите документ передачи платежей.");
Возврат Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.ПустаяСсылка();
КонецЕсли;
Если НЕ Объект.Проведен Тогда
ОбщегоНазначения.СообщитьПользователю(
"Перед созданием приёма платежей документ передачи должен быть проведён.");
Возврат Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.ПустаяСсылка();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Учреждение) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не заполнено учреждение (получатель) документа передачи.");
Возврат Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.ПустаяСсылка();
КонецЕсли;
// Документ передачи адресный: приём платежей по нему один. Если он уже создан,
// открывается существующий - повторное нажатие не плодит документы.
Если ЗначениеЗаполнено(Объект.ПринятиеПлатежей) Тогда
Существующий = Объект.ПринятиеПлатежей.ПолучитьОбъект();
Если Существующий <> Неопределено И НЕ Существующий.ПометкаУдаления Тогда
Возврат Объект.ПринятиеПлатежей;
КонецЕсли;
КонецЕсли;
Принятие = Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.СоздатьДокумент();
Принятие.Организация = Объект.Учреждение;
Принятие.Заполнить(Объект.Ссылка);
Принятие.Записать(РежимЗаписиДокумента.Запись);
Объект.ПринятиеПлатежей = Принятие.Ссылка;
Записать();
Возврат Принятие.Ссылка;
КонецФункции
&НаСервере
Функция СоздатьИзвещениеНаСервере()
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОбщегоНазначения.СообщитьПользователю("Сначала запишите документ передачи платежей.");
Возврат Документы.ИзвещениеИсходящее.ПустаяСсылка();
КонецЕсли;
Извещение = ПС_УчетРодительскойПлаты.СоздатьИзвещениеПоПередаче(Объект.Ссылка);
Если ЗначениеЗаполнено(Извещение) Тогда
Объект.ИзвещениеИсходящее = Извещение;
Записать();
КонецЕсли;
Возврат Извещение;
КонецФункции
&НаСервере
Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию()
@@ -161,8 +249,10 @@
КонецПроцедуры
// Подбирает в табличную часть "Задолженность" поступившие платежи, ещё не переданные
// в учреждения: остатки регистра накопления ПС_ВзаиморасчетыПоРодительскойПлате.
// Предыдущая передача выбирает остатки, поэтому следующая их уже не видит.
// в учреждения: остатки регистра накопления ПС_ВзаиморасчетыПоРодительскойПлате в разрезе
// квитанций (измерение "ИДСтроки"). Предыдущая передача выбирает остатки, поэтому следующая
// их уже не видит. Реквизиты реестра (лицевой счёт, расчётный счёт, группа, период оплаты,
// назначение платежа) разбираются из назначения платежа строки расшифровки кассового поступления.
//
&НаСервере
Процедура ЗаполнитьПоПоступившимПлатежамНаСервере()
@@ -173,10 +263,16 @@
Возврат;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Учреждение) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Заполнение невозможно: не заполнено учреждение (получатель).");
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.Учреждение КАК Учреждение,
| Остатки.ИДСтроки КАК ИДСтроки,
| Остатки.Плательщик КАК Контрагент,
| Остатки.Договор КАК Договор,
| Остатки.Ребенок КАК Ребенок,
@@ -187,12 +283,12 @@
|ИЗ
| РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Остатки(
| &МоментВремени,
| Организация = &Организация) КАК Остатки
| Организация = &Организация
| И Учреждение = &Учреждение) КАК Остатки
|ГДЕ
| Остатки.СуммаОстаток <> 0
|
|УПОРЯДОЧИТЬ ПО
| Остатки.Учреждение,
| Остатки.Плательщик,
| Остатки.Договор";
// Поступившие платежи собираются на границу конца дня документа: кассовые поступления
@@ -200,6 +296,7 @@
// в остатки не попадали.
Запрос.УстановитьПараметр("МоментВремени", КонецДня(Объект.Дата) + 1);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("Учреждение", Объект.Учреждение);
Выборка = Запрос.Выполнить().Выбрать();
@@ -208,30 +305,87 @@
ЗначенияИФО = Новый Соответствие;
ЗначенияКФО = Новый Соответствие;
СтрокиОстатков = Новый Массив;
Пока Выборка.Следующий() Цикл
СтрокаОстатка = Новый Структура;
СтрокаОстатка.Вставить("ИДСтроки", Выборка.ИДСтроки);
СтрокаОстатка.Вставить("Контрагент", Выборка.Контрагент);
СтрокаОстатка.Вставить("Договор", Выборка.Договор);
СтрокаОстатка.Вставить("Ребенок", Выборка.Ребенок);
СтрокаОстатка.Вставить("КПС", Выборка.КПС);
СтрокаОстатка.Вставить("Сумма", Выборка.Сумма);
СтрокиОстатков.Добавить(СтрокаОстатка);
ЗначенияИФО.Вставить(Выборка.ИФО, Истина);
ЗначенияКФО.Вставить(Выборка.КФО, Истина);
НоваяСтрока = Объект.Задолженность.Добавить();
НоваяСтрока.Учреждение = Выборка.Учреждение;
НоваяСтрока.Контрагент = Выборка.Контрагент;
НоваяСтрока.Договор = Выборка.Договор;
НоваяСтрока.Ребенок = Выборка.Ребенок;
НоваяСтрока.КПС = Выборка.КПС;
НоваяСтрока.Сумма = Выборка.Сумма;
КонецЦикла;
Если Объект.Задолженность.Количество() = 0 Тогда
Если СтрокиОстатков.Количество() = 0 Тогда
ОбщегоНазначения.СообщитьПользователю(
"Поступивших платежей, ещё не переданных в учреждения, не найдено.");
Возврат;
КонецЕсли;
// Расшифровки платежей читаются одним запросом на весь документ.
Расшифровки = РасшифровкиПлатежейПоИД(СтрокиОстатков);
СтрокБезИдентификатора = 0;
СтрокБезРасшифровки = 0;
Для Каждого СтрокаОстатка Из СтрокиОстатков Цикл
НоваяСтрока = Объект.Задолженность.Добавить();
НоваяСтрока.Контрагент = СтрокаОстатка.Контрагент;
НоваяСтрока.Договор = СтрокаОстатка.Договор;
НоваяСтрока.Ребенок = СтрокаОстатка.Ребенок;
НоваяСтрока.КПС = СтрокаОстатка.КПС;
НоваяСтрока.Сумма = СтрокаОстатка.Сумма;
НоваяСтрока.ИДСтроки = СтрокаОстатка.ИДСтроки;
ДанныеРасшифровки = Расшифровки[СтрокаОстатка.ИДСтроки];
Если ДанныеРасшифровки = Неопределено Тогда
// Идентификатор строки пишется в регистр при проведении кассового поступления:
// у документов, проведённых до появления измерения, он пуст.
Если СтрДлина(СокрЛП(СтрокаОстатка.ИДСтроки)) < 38 Тогда
СтрокБезИдентификатора = СтрокБезИдентификатора + 1;
Иначе
СтрокБезРасшифровки = СтрокБезРасшифровки + 1;
КонецЕсли;
Продолжить;
КонецЕсли;
ТекстНазначения = СокрЛП(ДанныеРасшифровки.Примечание);
ДанныеПлатежа = ПС_РазборПлатежейПоРодительскойПлате.РазобратьНазначениеПлатежа(ТекстНазначения);
НоваяСтрока.НазначениеПлатежа = Лев(ТекстНазначения, 200);
НоваяСтрока.ЛицевойСчет = ДанныеПлатежа.ЛицевойСчет;
НоваяСтрока.РасчетныйСчет = ДанныеПлатежа.РасчетныйСчет;
НоваяСтрока.Группа = ДанныеПлатежа.Группа;
НоваяСтрока.ПериодОплаты = ДанныеПлатежа.ПериодОплаты;
НоваяСтрока.ДатаПлатежа = ДанныеРасшифровки.Дата;
КонецЦикла;
Объект.СуммаДокумента = Объект.Задолженность.Итог("Сумма");
Если СтрокБезИдентификатора > 0 Тогда
ОбщегоНазначения.СообщитьПользователю(СтрШаблон(
"По %1 строкам в регистре нет идентификатора квитанции: кассовое поступление не перепроведено."
+ " Лицевой счёт, назначение платежа, расчётный счёт, группа, период оплаты и дата платежа"
+ " не заполнены. Перепроведите кассовые поступления и заполните документ заново.",
СтрокБезИдентификатора));
КонецЕсли;
Если СтрокБезРасшифровки > 0 Тогда
ОбщегоНазначения.СообщитьПользователю(СтрШаблон(
"По %1 строкам идентификатор квитанции есть, но строка расшифровки платежа не найдена:"
+ " кассовое поступление изменялось после проведения. Перепроведите кассовые поступления"
+ " и заполните документ заново.", СтрокБезРасшифровки));
КонецЕсли;
// Разрезов ИФО и КФО в табличной части нет - они задаются на весь документ,
// поэтому переносим их в шапку, если в остатках они единственные.
ЗаполнитьИФОиКФОПоОстаткам(ЗначенияИФО, ЗначенияКФО);
@@ -244,6 +398,70 @@
КонецПроцедуры
// Возвращает расшифровки платежей по идентификаторам строк поступлений.
//
// Параметры:
// СтрокиОстатков - Массив из Структура - строки остатков регистра взаиморасчётов
// с полем "ИДСтроки" вида "<UUID документа>:<номер строки>".
//
// Возвращаемое значение:
// Соответствие из Строка, Структура - расшифровки по идентификатору строки:
// * Примечание - Строка - текст назначения платежа;
// * Дата - Дата - дата кассового поступления.
//
&НаСервере
Функция РасшифровкиПлатежейПоИД(СтрокиОстатков)
Результат = Новый Соответствие;
Идентификаторы = Новый Соответствие;
ДокументыПоступления = Новый Массив;
Для Каждого СтрокаОстатка Из СтрокиОстатков Цикл
Идентификатор = СокрЛП(СтрокаОстатка.ИДСтроки);
Если СтрДлина(Идентификатор) < 38 Тогда
Продолжить;
КонецЕсли;
ИдентификаторДокумента = Лев(Идентификатор, 36);
Если Идентификаторы[ИдентификаторДокумента] <> Неопределено Тогда
Продолжить;
КонецЕсли;
Идентификаторы.Вставить(ИдентификаторДокумента, Истина);
ДокументыПоступления.Добавить(Документы.КассовоеПоступление.ПолучитьСсылку(
Новый УникальныйИдентификатор(ИдентификаторДокумента)));
КонецЦикла;
Если ДокументыПоступления.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Расшифровка.Ссылка КАК Ссылка,
| Расшифровка.НомерСтроки КАК НомерСтроки,
| Расшифровка.Примечание КАК Примечание,
| Расшифровка.Ссылка.Дата КАК Дата
|ИЗ
| Документ.КассовоеПоступление.РасшифровкаПлатежа КАК Расшифровка
|ГДЕ
| Расшифровка.Ссылка В (&ДокументыПоступления)";
Запрос.УстановитьПараметр("ДокументыПоступления", ДокументыПоступления);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Результат.Вставить(
ПС_УчетРодительскойПлаты.ИдентификаторСтрокиПоступления(Выборка.Ссылка, Выборка.НомерСтроки),
Новый Структура("Примечание, Дата", Выборка.Примечание, Выборка.Дата));
КонецЦикла;
Возврат Результат;
КонецФункции
&НаСервере
Процедура ЗаполнитьИФОиКФОПоОстаткам(ЗначенияИФО, ЗначенияКФО)
@@ -271,39 +489,8 @@
ОткрытьФорму("РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ФормаСписка",
ПараметрыФормы,
ЭтотОбъект,
УникальныйИдентификатор);
"Проводки" + Строка(ДокументСсылка));
КонецПроцедуры
// Возвращает организации садов (учреждений), представленных в табличной части "Задолженность".
// Учреждение хранится в документе контрагентом, поэтому организация ищется по ИНН.
//
// Возвращаемое значение:
// Массив из СправочникСсылка.Организации - организации получателей в порядке появления в табличной части.
//
&НаСервере
Функция ОрганизацииСадовНаСервере()
Учреждения = Новый Массив;
Для Каждого СтрокаЗадолженности Из Объект.Задолженность Цикл
Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.Учреждение) Тогда
Продолжить;
КонецЕсли;
Если Учреждения.Найти(СтрокаЗадолженности.Учреждение) = Неопределено Тогда
Учреждения.Добавить(СтрокаЗадолженности.Учреждение);
КонецЕсли;
КонецЦикла;
Организации = Новый Массив;
Для Каждого Учреждение Из Учреждения Цикл
Организация = ПС_РаботаСКонтрагентами.ОрганизацияПоКонтрагенту(Учреждение, "Получатель (учреждение)");
Если ЗначениеЗаполнено(Организация) Тогда
Организации.Добавить(Организация);
КонецЕсли;
КонецЦикла;
Возврат Организации;
КонецФункции
#КонецОбласти
@@ -21,6 +21,60 @@
КонецФункции
// Заполняет список команд печати документа.
//
// Параметры:
// КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати.
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Документ.ПС_ПередачаПоступившихПлатежейВУчреждения";
КомандаПечати.Идентификатор = "Извещение0504805";
КомандаПечати.Представление = "Извещение (ф. 0504805)";
КомандаПечати.Порядок = 1;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Документ.ПС_ПередачаПоступившихПлатежейВУчреждения";
КомандаПечати.Идентификатор = "РеестрПлатежей";
КомандаПечати.Представление = "Реестр платежей";
КомандаПечати.Порядок = 2;
КонецПроцедуры
// Формирует печатные формы документа для подсистемы БСП "Печать".
//
// Параметры:
// МассивОбъектов - Массив из ДокументСсылка.ПС_ПередачаПоступившихПлатежейВУчреждения - печатаемые документы.
// ПараметрыПечати - Структура - параметры печати.
// КоллекцияПечатныхФорм - ТаблицаЗначений - коллекция печатных форм.
// ОбъектыПечати - Соответствие из КлючИЗначение - соответствие объектов печати.
// ПараметрыВывода - Структура - параметры вывода.
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Извещение0504805") Тогда
Для Каждого ДокументСсылка Из МассивОбъектов Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"Извещение0504805",
"Извещение (ф. 0504805)",
ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805(ДокументСсылка));
КонецЦикла;
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "РеестрПлатежей") Тогда
Для Каждого ДокументСсылка Из МассивОбъектов Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"РеестрПлатежей",
"Реестр платежей",
ПС_УчетРодительскойПлаты.ПечатьРеестраПлатежей(ДокументСсылка));
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -1,7 +1,7 @@
// ПС_ПередачаПоступившихПлатежейВУчреждения: модуль объекта.
// Сторона ЦБ: Дт 205.31.56X — Кт 304.04.130.
// Проводки формируются в процедуре ОбработкаПроведения прямым заполнением
// набора записей регистра бухгалтерии ЖурналПроводокЕПСБУ.
// Сторона ЦБ — администратор кассовых поступлений. Бухгалтерских проводок документ не формирует:
// учёт ведётся в регистре накопления ПС_ВзаиморасчетыПоРодительскойПлате, а информация
// передаётся учреждению реестром платежей и извещением (ф. 0504805).
// Документ собирает поступившие платежи (приход в регистре накопления
// ПС_ВзаиморасчетыПоРодительскойПлате, сделанный кассовыми поступлениями)
// и передаёт их учреждениям — расход по тому же регистру. Пока передано не всё,
@@ -13,55 +13,16 @@
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.ЖурналПроводокЕПСБУ.Очистить();
Движения.ЖурналПроводокЕПСБУ.Записывать = Истина;
Движения.ЖурналПроводокЕПСБУ.ДополнительныеСвойства.Вставить("НеФормироватьУчетныеДанныеИзПроводок");
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Очистить();
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина;
СчетДт = БухгалтерскийУчет.СчетПоКоду("205.31", Дата, Организация);
// Счёт, корреспондирующий со счётом расчётов по доходам, и его КЭК задаются
// реквизитами документа (по умолчанию 304.04 и 131) и могут быть изменены пользователем.
СчетКт = СчетКорреспондент;
Если НЕ ЗначениеЗаполнено(СчетКт) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не заполнен счёт, корреспондирующий со счётом 205.31. Проведение невозможно.",
, "СчетКорреспондент", "Объект", Отказ);
Возврат;
КонецЕсли;
ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт);
// КПС строк заполняется при подборе поступивших платежей (см. модуль формы),
// КЭК счёта 205.31 определяется по настройкам счёта и типу контрагента (подстатья КОСГУ).
Для Каждого СтрокаЗадолженности Из Задолженность Цикл
Движение = Движения.ЖурналПроводокЕПСБУ.Добавить();
Движение.Период = Дата;
Движение.Организация = Организация;
Движение.ИФО = ИФО;
Движение.КФО = КФО;
Движение.СчетДт = СчетДт;
Движение.СчетКт = СчетКт;
Движение.КПСДт = СтрокаЗадолженности.КПС;
Движение.КПСКт = СтрокаЗадолженности.КПС;
Движение.КЭКДт = КЭКПроводки(СчетДт, "Дт", СтрокаЗадолженности.Контрагент, СтрокаЗадолженности.Договор);
Движение.КЭККт = КЭККорреспондент;
Движение.Сумма = СтрокаЗадолженности.Сумма;
Движение.ЖурналОпераций = ЖурналОпераций;
Движение.Содержание = "Передача поступивших платежей по родительской плате в учреждение";
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты] = СтрокаЗадолженности.Контрагент;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Договоры] = СтрокаЗадолженности.Договор;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.КорреспондентыПоВнутреннимРасчетам] = СтрокаЗадолженности.Учреждение;
// Взаиморасчёты: переданные в учреждение поступившие платежи списываются расходом.
ДвижениеПС = Движения.ПС_ВзаиморасчетыПоРодительскойПлате.ДобавитьРасход();
ДвижениеПС.Период = Дата;
ДвижениеПС.Организация = Организация;
ДвижениеПС.Учреждение = СтрокаЗадолженности.Учреждение;
ДвижениеПС.Учреждение = Учреждение;
ДвижениеПС.Плательщик = СтрокаЗадолженности.Контрагент;
ДвижениеПС.Ребенок = СтрокаЗадолженности.Ребенок;
ДвижениеПС.Договор = СтрокаЗадолженности.Договор;
@@ -74,18 +35,10 @@
КонецЦикла;
// В конфигурации есть подписка на событие "ОбработкаПроведения" (ЗаписатьТаблицуПроводок),
// которая выполняется после модуля объекта и перезаписывает проводки документа: если таблица
// проводок не передана, набор записей регистра очищается. Поэтому передаём сформированную
// таблицу через ДополнительныеСвойства.ДанныеАвтоПроведения.ТаблицаПроводок.
БухгалтерскиеОперацииСервер.ИнициализироватьБухгалтерскиеОперации(ЭтотОбъект);
ДополнительныеСвойства.ДанныеАвтоПроведения.ТаблицаПроводок = Движения.ЖурналПроводокЕПСБУ.Выгрузить();
КонецПроцедуры
Процедура ОбработкаУдаленияПроведения(Отказ)
Движения.ЖурналПроводокЕПСБУ.Записывать = Истина;
Движения.ПС_ВзаиморасчетыПоРодительскойПлате.Записывать = Истина;
КонецПроцедуры
@@ -104,6 +57,22 @@
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
// Изменение данных подписанного извещения обесценивает его электронный документ:
// расходящиеся электронные документы аннулируются.
ПС_ВнутреннийЭДОИзвещений.ПС_АннулироватьЭлектронныеДокументыПриИзменении(ЭтотОбъект, Отказ);
// Связанное извещение перезаполняется по актуальным строкам реестра,
// чтобы его печатная форма не разошлась с документом.
ПС_УчетРодительскойПлаты.ОбновитьИзвещениеПриИзмененииДокумента(ЭтотОбъект);
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если НЕ ЗначениеЗаполнено(Организация) Тогда
@@ -114,16 +83,14 @@
ОбщегоНазначения.СообщитьПользователю("Не заполнен КФО", , "КФО", "Объект", Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Учреждение) Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнено учреждение (получатель)", , "Учреждение", "Объект", Отказ);
КонецЕсли;
Если Задолженность.Количество() = 0 Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнена табличная часть ""Задолженность""", , "Задолженность", "Объект", Отказ);
Иначе
Для Каждого СтрокаЗадолженности Из Задолженность Цикл
Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.Учреждение) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не заполнено учреждение в строке табличной части ""Задолженность"".",
, "Задолженность", "Объект", Отказ);
Прервать;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(СтрокаЗадолженности.КПС) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не заполнен КПС строки табличной части ""Задолженность""."
@@ -160,34 +127,6 @@
КонецПроцедуры
// Возвращает КЭК проводки, определённый по настройкам счёта
// и типу контрагента (подстатья КОСГУ).
//
// Параметры:
// Счет - ПланСчетовСсылка.ЕПСБУ - счёт проводки.
// ДтКт - Строка - сторона проводки: "Дт" или "Кт".
// Субконто1 - Произвольный - значение первого субконто проводки.
// Субконто2 - Произвольный - значение второго субконто проводки.
//
// Возвращаемое значение:
// СправочникСсылка.КОСГУ - КЭК проводки.
//
Функция КЭКПроводки(Счет, ДтКт, Субконто1 = Неопределено, Субконто2 = Неопределено)
ПараметрыКЭК = БухгалтерскийУчетКлиентСервер.ПараметрыРасчетаКЭКПроводки();
ПараметрыКЭК.Организация = Организация;
ПараметрыКЭК.ИФО = ИФО;
ПараметрыКЭК.КФО = КФО;
ПараметрыКЭК.Дата = Дата;
ПараметрыКЭК.Счет = Счет;
ПараметрыКЭК.ДтКт = ДтКт;
ПараметрыКЭК.Субконто1 = Субконто1;
ПараметрыКЭК.Субконто2 = Субконто2;
Возврат БухгалтерскийУчет.КЭКПроводки(ПараметрыКЭК);
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -10,7 +10,7 @@
<name>ПС_ПередачаПоступившихПлатежейВУчреждения</name>
<synonym>
<key>ru</key>
<value>Передача поступивших платежей в учреждения</value>
<value>Передача поступивших платежей в учреждение</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
@@ -22,7 +22,7 @@
</objectPresentation>
<listPresentation>
<key>ru</key>
<value>Передачи поступивших платежей в учреждения</value>
<value>Передачи поступивших платежей в учреждение</value>
</listPresentation>
<numberType>String</numberType>
<numberLength>9</numberLength>
@@ -30,7 +30,6 @@
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<defaultObjectForm>Document.ПС_ПередачаПоступившихПлатежейВУчреждения.Form.ФормаДокумента</defaultObjectForm>
<registerRecords>AccountingRegister.ЖурналПроводокЕПСБУ</registerRecords>
<registerRecords>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате</registerRecords>
<postInPrivilegedMode>true</postInPrivilegedMode>
<unpostInPrivilegedMode>true</unpostInPrivilegedMode>
@@ -178,6 +177,51 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</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">
<name>ФормаДокумента</name>
</forms>
@@ -242,7 +286,7 @@
<type>
<types>String</types>
<stringQualifiers>
<length>25</length>
<length>50</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
@@ -282,14 +326,102 @@
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="8cf37a05-a457-4693-bc91-d9c1d37fede5">
<name>Учреждение</name>
<attributes uuid="ad45f7d8-7e98-40e6-8d46-6f3cd5786e60">
<name>ЛицевойСчет</name>
<synonym>
<key>ru</key>
<value>Получатель (учреждение)</value>
<value>Лицевой счет</value>
</synonym>
<type>
<types>CatalogRef.Контрагенты</types>
<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"/>
@@ -722,6 +722,276 @@
<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>
<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>
<name>ЗадолженностьКоманднаяПанель</name>
<id>30</id>
@@ -902,19 +1172,18 @@
<id>112</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
<hyperlink>true</hyperlink>
<border xsi:type="core:BorderDef">
<width>1</width>
</border>
</extInfo>
</items>
<items xsi:type="form:FormField">
@@ -1004,6 +1273,51 @@
<textSize>Normal</textSize>
</extInfo>
</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">
<name>ГруппаКорреспондентующегоСчёта</name>
<id>109</id>
@@ -1128,6 +1442,46 @@
<currentRowUse>Auto</currentRowUse>
</extInfo>
</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">
<name>Комментарий</name>
<id>87</id>
@@ -1381,6 +1735,58 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>ПечатьРеестраПлатежей</name>
<id>137</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаПечатьРеестраПлатежейРасширеннаяПодсказка</name>
<id>138</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>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>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
@@ -1466,6 +1872,38 @@
</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>Создать извещение 0504805</value>
</title>
<id>5</id>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>СоздатьИзвещение</name>
</handler>
</action>
</formCommands>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -36,11 +36,14 @@
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.ЦБ) Тогда
Объект.ЦБ = ПС_РаботаСКонтрагентами.КонтрагентЦБПоУмолчанию();
Объект.ЦБ = Константы.ОрганизацияЦентрализованнаяБухгалтерия.Получить();
КонецЕсли;
КонецЕсли;
// Состояние внутреннего ЭДО (подсистема БГУ): организация документа уже определена.
ОбщегоНазначенияБГУ.ПриСозданииНаСервере(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
@@ -48,6 +51,8 @@
БухгалтерскиеОперацииСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект, Элементы.БухгалтерскаяОперация);
ОбщегоНазначенияБГУ.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
@@ -78,10 +83,25 @@
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
// Обновляет гиперссылку состояния внутреннего ЭДО (подсистема БГУ).
ОбщегоНазначенияБГУКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура Подключаемый_ДекорацияБГУНажатие(Элемент, СтандартнаяОбработка)
ОбщегоНазначенияБГУКлиент.ДекорацияНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДокументПередачиПриИзменении(Элемент)
@@ -119,6 +139,25 @@
КонецПроцедуры
&НаКлиенте
Процедура ПечатьРеестраПлатежей(Команда)
ТабличныйДокумент = ПечатьРеестраПлатежейНаСервере(Объект.Ссылка);
ТабличныйДокумент.Показать("Реестр платежей");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьИзвещение(Команда)
Извещение = СоздатьИзвещениеНаСервере();
Если ЗначениеЗаполнено(Извещение) Тогда
ПараметрыФормы = Новый Структура("Ключ", Извещение);
ОткрытьФорму("Документ.ИзвещениеВходящее.Форма.ФормаДокумента", ПараметрыФормы, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПросмотрБухгалтерскихЗаписей(Команда)
@@ -147,6 +186,13 @@
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуБГУ(Команда)
ОбщегоНазначенияБГУКлиент.ВыполнитьПодключаемуюКоманду(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -158,6 +204,31 @@
КонецФункции
&НаСервере
Функция ПечатьРеестраПлатежейНаСервере(ДокументСсылка)
Возврат ПС_УчетРодительскойПлаты.ПечатьРеестраПлатежей(ДокументСсылка);
КонецФункции
&НаСервере
Функция СоздатьИзвещениеНаСервере()
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОбщегоНазначения.СообщитьПользователю("Сначала запишите документ принятия платежей.");
Возврат Документы.ИзвещениеВходящее.ПустаяСсылка();
КонецЕсли;
Извещение = ПС_УчетРодительскойПлаты.СоздатьИзвещениеПоПринятию(Объект.Ссылка);
Если ЗначениеЗаполнено(Извещение) Тогда
Объект.ИзвещениеВходящее = Извещение;
Записать();
КонецЕсли;
Возврат Извещение;
КонецФункции
&НаСервере
Процедура ЗаполнитьКорреспондирующийСчетПоУмолчанию()
@@ -21,6 +21,60 @@
КонецФункции
// Заполняет список команд печати документа.
//
// Параметры:
// КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати.
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ";
КомандаПечати.Идентификатор = "Извещение0504805";
КомандаПечати.Представление = "Извещение (ф. 0504805)";
КомандаПечати.Порядок = 1;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Документ.ПС_ПринятиеПоступившихПлатежейИзЦБ";
КомандаПечати.Идентификатор = "РеестрПлатежей";
КомандаПечати.Представление = "Реестр платежей";
КомандаПечати.Порядок = 2;
КонецПроцедуры
// Формирует печатные формы документа для подсистемы БСП "Печать".
//
// Параметры:
// МассивОбъектов - Массив из ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ - печатаемые документы.
// ПараметрыПечати - Структура - параметры печати.
// КоллекцияПечатныхФорм - ТаблицаЗначений - коллекция печатных форм.
// ОбъектыПечати - Соответствие из КлючИЗначение - соответствие объектов печати.
// ПараметрыВывода - Структура - параметры вывода.
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Извещение0504805") Тогда
Для Каждого ДокументСсылка Из МассивОбъектов Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"Извещение0504805",
"Извещение (ф. 0504805)",
ПС_УчетРодительскойПлаты.ПечатьИзвещения0504805(ДокументСсылка));
КонецЦикла;
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "РеестрПлатежей") Тогда
Для Каждого ДокументСсылка Из МассивОбъектов Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"РеестрПлатежей",
"Реестр платежей",
ПС_УчетРодительскойПлаты.ПечатьРеестраПлатежей(ДокументСсылка));
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -1,5 +1,7 @@
// ПС_ПринятиеПоступившихПлатежейИзЦБ: модуль объекта.
// Сторона детского сада: Дт 304.04.130 — Кт 205.31.66X.
// Сторона детского сада, методическая операция 1.3: Дт 303.05.831 — Кт 205.31.660
// (п. 104 Инструкции № 162н) — зачисление суммы в доход бюджета на основании извещения
// от администратора кассовых поступлений.
// Проводки формируются в процедуре ОбработкаПроведения прямым заполнением
// набора записей регистра бухгалтерии ЖурналПроводокЕПСБУ.
// Документ вводится на основании документа передачи платежей ЦБ и принимает
@@ -35,9 +37,9 @@
ИФО = РеквизитыПередачи.ИФО;
КонецЕсли;
// Отправитель (ЦБ) определяется по организации документа передачи: в документе передачи
// ЦБ хранится организацией, а в документе сада - контрагентом, сопоставляем по ИНН.
ЦБ = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(РеквизитыПередачи.Организация, "Отправитель (ЦБ)");
// Отправитель (ЦБ) определяется по организации документа передачи:
// в документе передачи и в документе сада ЦБ хранится организацией.
ЦБ = РеквизитыПередачи.Организация;
// Строки подбираются по саду документа: сад задаётся реквизитом "Организация".
// Если сад ещё не указан, строки заполняются командой формы после его выбора.
@@ -57,22 +59,15 @@
Движения.ЖурналПроводокЕПСБУ.Записывать = Истина;
Движения.ЖурналПроводокЕПСБУ.ДополнительныеСвойства.Вставить("НеФормироватьУчетныеДанныеИзПроводок");
// Методическая операция 1.3: Дт 303.05.831 — Кт 205.31.660 (п. 104 Инструкции № 162н).
СчетДт = БухгалтерскийУчет.СчетПоКоду("303.05", Дата, Организация);
СчетКт = БухгалтерскийУчет.СчетПоКоду("205.31", Дата, Организация);
// Счёт, корреспондирующий со счётом расчётов по доходам, и его КЭК задаются реквизитами
// документа (по умолчанию 304.04 и 131) и могут быть изменены пользователем.
СчетДт = СчетКорреспондент;
Если НЕ ЗначениеЗаполнено(СчетДт) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не заполнен счёт, корреспондирующий со счётом 205.31. Проведение невозможно.",
, "СчетКорреспондент", "Объект", Отказ);
Возврат;
КонецЕсли;
КЭКДт = Справочники.КОСГУ.НайтиПоКоду("831");
КЭККт = Справочники.КОСГУ.НайтиПоКоду("660");
ЖурналОпераций = БухгалтерскийУчетПовтИсп.НомерЖурнала(СчетДт, СчетКт);
// КПС строк наследуется из строк документа передачи (см. ЗаполнитьСтрокиПоДокументуПередачи),
// КЭК счёта 205.31 определяется по настройкам счёта и типу контрагента (подстатья КОСГУ).
// КПС строк наследуется из строк документа передачи (см. ЗаполнитьСтрокиПоДокументуПередачи).
Для Каждого СтрокаЗадолженности Из Задолженность Цикл
Движение = Движения.ЖурналПроводокЕПСБУ.Добавить();
@@ -84,13 +79,16 @@
Движение.СчетКт = СчетКт;
Движение.КПСДт = СтрокаЗадолженности.КПС;
Движение.КПСКт = СтрокаЗадолженности.КПС;
Движение.КЭКДт = КЭККорреспондент;
Движение.КЭККт = КЭКПроводки(СчетКт, "Кт", СтрокаЗадолженности.Контрагент, СтрокаЗадолженности.Договор);
Движение.КЭКДт = КЭКДт;
Движение.КЭККт = КЭККт;
Движение.Сумма = СтрокаЗадолженности.Сумма;
Движение.ЖурналОпераций = ЖурналОпераций;
Движение.Содержание = "Принятие поступивших платежей по родительской плате из ЦБ";
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.КорреспондентыПоВнутреннимРасчетам] = ЦБ;
// Аналитика по счёту 303.05 - вид платежа в бюджет ("Доходы от родительской платы"):
// обобщённая аналитика ожидаемых поступлений, задаётся пользователем в шапке документа.
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.ВидыНалоговИПлатежей] = ВидПлатежаВБюджет;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты] = СтрокаЗадолженности.Контрагент;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Договоры] = СтрокаЗадолженности.Договор;
@@ -125,6 +123,22 @@
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
// Изменение данных подписанного извещения обесценивает его электронный документ:
// расходящиеся электронные документы аннулируются.
ПС_ВнутреннийЭДОИзвещений.ПС_АннулироватьЭлектронныеДокументыПриИзменении(ЭтотОбъект, Отказ);
// Связанное извещение перезаполняется по актуальным строкам реестра,
// чтобы его печатная форма не разошлась с документом.
ПС_УчетРодительскойПлаты.ОбновитьИзвещениеПриИзмененииДокумента(ЭтотОбъект);
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если НЕ ЗначениеЗаполнено(Организация) Тогда
@@ -143,6 +157,12 @@
ОбщегоНазначения.СообщитьПользователю("Не заполнен КФО", , "КФО", "Объект", Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ВидПлатежаВБюджет) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не заполнен вид платежа в бюджет - аналитика по счёту 303.05",
, "ВидПлатежаВБюджет", "Объект", Отказ);
КонецЕсли;
Если Задолженность.Количество() = 0 Тогда
ОбщегоНазначения.СообщитьПользователю("Не заполнена табличная часть ""Задолженность""", , "Задолженность", "Объект", Отказ);
Иначе
@@ -198,13 +218,6 @@
Возврат;
КонецЕсли;
// В документе передачи сад хранится контрагентом (как в регистре взаиморасчётов),
// а в документе сада - организацией, поэтому сопоставляем по ИНН.
КонтрагентСада = ПС_РаботаСКонтрагентами.КонтрагентПоОрганизации(Организация, "Учреждение");
Если НЕ ЗначениеЗаполнено(КонтрагентСада) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
@@ -213,14 +226,20 @@
| СтрокиПередачи.Ребенок КАК Ребенок,
| СтрокиПередачи.ИДСтроки КАК ИДСтроки,
| СтрокиПередачи.Сумма КАК Сумма,
| СтрокиПередачи.КПС КАК КПС
| СтрокиПередачи.КПС КАК КПС,
| СтрокиПередачи.ЛицевойСчет КАК ЛицевойСчет,
| СтрокиПередачи.НазначениеПлатежа КАК НазначениеПлатежа,
| СтрокиПередачи.РасчетныйСчет КАК РасчетныйСчет,
| СтрокиПередачи.Группа КАК Группа,
| СтрокиПередачи.ПериодОплаты КАК ПериодОплаты,
| СтрокиПередачи.ДатаПлатежа КАК ДатаПлатежа
|ИЗ
| Документ.ПС_ПередачаПоступившихПлатежейВУчреждения.Задолженность КАК СтрокиПередачи
|ГДЕ
| СтрокиПередачи.Ссылка = &ДокументПередачи
| И СтрокиПередачи.Учреждение = &Учреждение";
| И СтрокиПередачи.Ссылка.Учреждение = &Учреждение";
Запрос.УстановитьПараметр("ДокументПередачи", ДокументПередачиСсылка);
Запрос.УстановитьПараметр("Учреждение", КонтрагентСада);
Запрос.УстановитьПараметр("Учреждение", Организация);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
@@ -233,34 +252,6 @@
КонецПроцедуры
// Возвращает КЭК проводки, определённый по настройкам счёта
// и типу контрагента (подстатья КОСГУ).
//
// Параметры:
// Счет - ПланСчетовСсылка.ЕПСБУ - счёт проводки.
// ДтКт - Строка - сторона проводки: "Дт" или "Кт".
// Субконто1 - Произвольный - значение первого субконто проводки.
// Субконто2 - Произвольный - значение второго субконто проводки.
//
// Возвращаемое значение:
// СправочникСсылка.КОСГУ - КЭК проводки.
//
Функция КЭКПроводки(Счет, ДтКт, Субконто1 = Неопределено, Субконто2 = Неопределено)
ПараметрыКЭК = БухгалтерскийУчетКлиентСервер.ПараметрыРасчетаКЭКПроводки();
ПараметрыКЭК.Организация = Организация;
ПараметрыКЭК.ИФО = ИФО;
ПараметрыКЭК.КФО = КФО;
ПараметрыКЭК.Дата = Дата;
ПараметрыКЭК.Счет = Счет;
ПараметрыКЭК.ДтКт = ДтКт;
ПараметрыКЭК.Субконто1 = Субконто1;
ПараметрыКЭК.Субконто2 = Субконто2;
Возврат БухгалтерскийУчет.КЭКПроводки(ПараметрыКЭК);
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -55,7 +55,7 @@
<value>Отправитель (ЦБ)</value>
</synonym>
<type>
<types>CatalogRef.Контрагенты</types>
<types>CatalogRef.Организации</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
@@ -207,6 +207,36 @@
<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">
<name>ФормаДокумента</name>
</forms>
@@ -271,7 +301,7 @@
<type>
<types>String</types>
<stringQualifiers>
<length>25</length>
<length>50</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
@@ -311,6 +341,108 @@
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</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>
<templates uuid="6084d9e2-f455-4db2-8547-01bad3077e82">
<name>ПФ_MXL_Извещение0504805_103н_ПС_РП</name>
@@ -106,6 +106,10 @@
</v8:item>
</title>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>ИДСтроки</dataPath>
<field>ИДСтроки</field>
</field>
<dataSource>ИсточникДанных1</dataSource>
<query>ВЫБРАТЬ
ПС_ВзаиморасчетыПоРодительскойПлатеОстатки.Организация КАК Организация,
@@ -119,6 +123,10 @@
ИЗ
РегистрНакопления.ПС_ВзаиморасчетыПоРодительскойПлате.Остатки(&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>
@@ -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>
@@ -1,76 +0,0 @@
# ПАМЯТКА. Учёт родительской платы ЦБ ОУО (БГУ 2.0)
**Кому:** бухгалтер ЦБ, бухгалтер детского сада.
**Где:** 1С:Предприятие → раздел **«Платное обучение»** → **«Сервис»** → обработка **«Управление расчётами по родительской плате»** (далее — рабочее место).
**Дата:** 07.10.2026
---
## 1. Порядок работы в течение месяца
| № | Кто | Что делает | Где |
|---|---|---|---|
| 1 | Сад | Табель посещаемости, документ **«Начисление родительской платы»** | Типовой механизм БГУ |
| 2 | ЦБ | Проверить, что начисления всех садов пришли | Рабочее место → страница **«Начисления»** |
| 3 | Сад | **«Передача задолженности в ЦБ»** → печать извещения (ф. 0504805) | Раздел «Платное обучение» → «Сервис» |
| 4 | ЦБ | **«Принятие задолженности от учреждения»** (ввод на основании передачи) | Раздел «Платное обучение» → «Сервис» |
| 5 | ЦБ | Сверить переданное и принятое | Рабочее место → страница **«Сверка «передано / принято»»** |
| 6 | ЦБ | Загрузить реестр платежей из СУФД → создаётся **«Кассовое поступление»** | Типовой механизм БГУ |
| 7 | ЦБ | Проверить, все ли строки платежей распознаны | Рабочее место → страница **«Кассовые поступления»** |
В рабочем месте перед работой задайте **Период** (по умолчанию «Этот месяц»), при необходимости — **Организацию (ЦБ)**, **ИФО**, **Учреждение (сад)**, и нажмите **«Обновить»**.
## 2. Кассовые поступления: что делается автоматически
При записи документа «Кассовое поступление» с признаком **«Родительская плата»** система сама заполняет в строках табличной части «Расшифровка платежа»:
- **Ребёнок** — по лицевому счёту из назначения платежа;
- **Контрагент** — родитель (плательщик) из карточки ребёнка;
- **Договор** — см. правила ниже;
- **Счёт расчётов** — 205.31;
- **КОСГУ назначения платежа** — 131.
**Как определяется договор** (по убыванию приоритета):
1. если по счёту 205.31 есть остатки — договор берётся из остатков;
2. иначе — единственный договор, отобранный по контрагенту;
3. если договоров нет или их больше одного — поле остаётся пустым и выводится сообщение.
**Что не перезаписывается:** строки, в которых уже заполнен ребёнок, повторно не обрабатываются; счёт расчётов заполняется только в пустое поле. Исключение — КОСГУ: код «000», который проставляет типовая загрузка, принудительно заменяется на 131.
**Что происходит при проведении.** Проведение документа «Кассовое поступление» с признаком «Родительская плата» закрывает задолженность: по каждой строке, где определён ребёнок и договор, формируется расход по регистру взаиморасчётов — оплата родительской платы. Сумма платежа уменьшает остаток по ребёнку. Если задолженности нет, образуется отрицательный остаток — это переплата, в учёте она допустима.
## 3. Если строка не распозналась
1. В рабочем месте на странице **«Кассовые поступления»** найдите документ с ненулевой колонкой **«Строк не распознано»**.
2. Откройте документ и прочитайте сообщения. Возможные тексты:
| Сообщение | Что означает | Что проверить |
|---|---|---|
| «не найден ребёнок с лицевым счётом …» | лицевого счёта нет в справочнике «Дети» | код ребёнка в справочнике (код = лицевой счёт), лишние пробелы и символы |
| «не удалось определить лицевой счёт ребёнка» | в назначении платежа нет фрагмента «л/с …» | текст назначения платежа в строке |
| «у ребёнка … не заполнен контрагент» | в карточке ребёнка пустой контрагент | карточка ребёнка → контрагент (родитель) |
| «не найден счёт 205.31» / «не найден код 131» | справочники не настроены | план счетов ЕПСБУ, справочник КОСГУ |
3. Заполните строку вручную (ребёнок, контрагент, договор) и запишите документ.
## 4. Начальное сальдо при запуске системы
1. Документ **«Передача задолженности в ЦБ»** с признаком **«Начальное сальдо»**.
2. Команда **«Заполнить по остаткам счёта 205.31»** — табличная часть заполнится остатками на дату документа (строки можно править и добавлять).
3. Печать извещения (ф. 0504805) и передача в ЦБ.
4. В ЦБ — **«Принятие задолженности от учреждения»** на основании документа передачи.
Переплаты вводятся **отрицательной суммой** в строке.
## 5. Отчёты и контроль
- **Оборотная ведомость** — кнопка в рабочем месте (передаются текущие отборы и период). Отчёт строится по учреждениям, внутри — по детям; колонки: остаток на начало, приход, расход, остаток на конец. Если период не задан, отчёт показывает все данные.
- **Остатки и обороты** — страница рабочего места (счета 205.31 и 304.04, в разрезе ИФО).
- **Сверка «передано / принято»** — страница рабочего места (расхождения по документам передачи).
> Остатки в рабочем месте берутся из бухгалтерских проводок и только в разрезе ИФО — отбор по учреждению (саду) на них не влияет, о чём выводится предупреждение.
## 6. Куда обращаться
- Вопросы по методике учёта — бухгалтерия ЦБ.
- Технические проблемы (ошибки при записи, незаполненные поля, расхождения) — сопровождение с указанием: документ, дата, номер, текст сообщения.
@@ -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, реквизит «Принятие платежей» не заполнен — его нужно проставить вручную либо создать принятие кнопкой.
@@ -1,170 +0,0 @@
# РУКОВОДСТВО ПО ЭКСПЛУАТАЦИИ. Учёт родительской платы ЦБ ОУО (БГУ 2.0)
**Конфигурация:** Бухгалтерия государственного учреждения, редакция 2.0 (БГУ 2.0.107.53), платформа 8.5.1, режим совместимости 8.3.24
**Расширение:** `153_ЦБ_ОУО_БГУ.ПрофиСофт`, префикс объектов `ПС_`, режим совместимости 8.3.14
**Базовая конфигурация:** на полной поддержке, не модифицируется
**Версия документа:** 1.2 от 12.10.2026
---
## 1. Назначение и состав
### 1.1. Назначение
Расширение реализует учёт родительской платы по схеме «детский сад → централизованная бухгалтерия»: передачу и принятие задолженности, печать извещений (ф. 0504805), идентификацию кассовых поступлений по назначению платежа, контроль расчётов.
### 1.2. Состав объектов расширения
| Объект | Назначение |
|---|---|
| `Document.ПС_ПередачаЗадолженностиВЦБ` | Передача задолженности из сада в ЦБ, печать извещения (ф. 0504805) |
| `Document.ПС_ПринятиеЗадолженностиОтУчреждения` | Принятие задолженности в ЦБ, движения регистра взаиморасчётов |
| `AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате` | Аналитический учёт взаиморасчётов на стороне ЦБ (8 измерений: организация, учреждение, плательщик, ребёнок, договор, ИФО, КФО, КПС; ресурс «Сумма»; реквизиты: вид операции, ИД строки (квитанции), документ передачи) |
| `Enum.ПС_ВидыОперацийПоВзаиморасчетам` | Виды операций: принято от учреждения, оплата, начальное сальдо |
| `CommonModule.ПС_УчетРодительскойПлаты` | Проводки и печатные формы 0504805 |
| `CommonModule.ПС_РаботаСКонтрагентами` | Сопоставление ЦБ ↔ контрагент и сад ↔ организация по ИНН |
| `CommonModule.ПС_РазборПлатежейПоРодительскойПлате` | Разбор назначения платежа и заполнение расшифровки платежа |
| `DataProcessor.ПС_УправлениеРасчетамиПоРодительскойПлате` | Рабочее место управления расчётами |
| `Report.ПС_ВедомостьЦБПоРодительскойПлате` | Оборотная ведомость по расчётам по родительской плате (СКД, на штатных механизмах БСП) |
| `Role.ПС_ОсновнаяРоль` | Права на объекты расширения |
| Макет `ПФ_MXL_Извещение0504805_103н_ПС_РП` | Печатная форма извещения (ф. 0504805, 103н) |
**Заимствованные объекты типовой конфигурации:**
| Объект | Что изменено |
|---|---|
| `Document.КассовоеПоступление` | Добавлены обработчики `&После("ПередЗаписью")` — автозаполнение расшифровки платежа, и `&После("ОбработкаПроведения")` — формирование расхода по регистру взаиморасчётов (закрытие задолженности); заимствованы реквизиты `РодительскаяПлата`, `Организация`, `ИФО` и табличная часть `РасшифровкаПлатежа` с реквизитами `Примечание`, `Контрагент`, `Ребенок`, `Договор`, `СчетРасчетов`, `КОСГУНазначениеПлатежа`, `КБКНазначениеПлатежа`, `КФО` |
| Подсистемы `ТаксиПлатноеОбразование` / `РодительскаяПлата` | Размещение новых документов и обработок |
| `Subsystem.ПодключаемыеОтчетыИОбработки` | Подключение отчёта расширения к механизму «Варианты отчётов» БСП |
| `CommonModule.ВариантыОтчетовПереопределяемый` | Описание отчёта и его варианта в механизме БСП (в доработке) |
| `CommonForm.ФормаОтчета` | Общая форма отчёта БСП — назначена основной формой отчёта |
> Заимствование реквизитов и табличной части — не «украшательство»: без него статический анализатор EDT не видит наследованную структуру документа и выдаёт предупреждения SU232 на каждое обращение в коде расширения.
---
## 2. Установка и подключение
1. Собрать расширение в EDT (проект `153_ЦБ_ОУО_БГУ.ПрофиСофт`) и получить файл расширения (`.cfe`).
2. В 1С:Предприятие: **Администрирование → Печатные формы, отчёты и обработки → Расширения** → добавить файл расширения → **перезапустить сеанс**.
3. Убедиться, что расширение активно и в разделе **«Платное обучение»** → **«Сервис»** появилась обработка «Управление расчётами по родительской плате».
4. Проверить права: пользователям ЦБ и садов должны быть доступны объекты расширения (роль `ПС_ОсновнаяРоль` или права, включённые в используемые роли).
> После изменения состава формы или метаданных расширения необходимо **пересобрать проект** и заново подключить (обновить) расширение, иначе изменения формы не появятся в пользовательском режиме.
---
## 3. Настройка перед началом работы
| Что настроить | Требование |
|---|---|
| **Организация ЦБ** | Константа «Организация централизованная бухгалтерия» — подставляется в рабочее место автоматически |
| **Справочник «Дети»** | Код элемента = **лицевой счёт ребёнка** (15 символов, например `Х000012877`); обязательно заполнен реквизит **«Контрагент»** (родитель-плательщик) |
| **Справочник «Контрагенты»** | Сады и родители; ИНН садов должен совпадать с ИНН соответствующих организаций — по ИНН работает сопоставление в рабочем месте |
| **Справочник «Организации»** | Сады (ПБС) и ЦБ (АДБ) с корректными ИНН |
| **Справочник «Договоры»** | Договоры привязаны к контрагенту (реквизит «Контрагент»). Справочник **не иерархический** |
| **Справочник «КОСГУ»** | Должен существовать код **131** (используется как КОСГУ назначения платежа) |
| **План счетов ЕПСБУ** | Должны существовать счета **205.31** и **304.04** |
| **Источники финансирования (ИФО)** | Заполнены у садов и в проводках |
| **Права пользователей** | Доступ к документам расширения и обработке |
---
## 4. Регламент загрузки реестров платежей из СУФД
1. Реестр платежей загружается **штатным механизмом БГУ** («Импорт данных из файлов платёжных поручений на общую сумму с реестром»). Расширение XML не разбирает.
2. В результате создаётся документ **«Кассовое поступление»**; строки реестра попадают в табличную часть **«Расшифровка платежа»** (назначение платежа — в реквизите «Примечание»).
3. Для документов с признаком **«Родительская плата»** при записи автоматически заполняются: ребёнок, контрагент, договор, счёт расчётов 205.31, КОСГУ 131.
4. После загрузки: рабочее место → страница **«Кассовые поступления»** → проверить колонку **«Строк не распознано»**; по документам с ненулевым значением выполнить ручной доввод строк.
5. При **проведении** документа с признаком «Родительская плата» формируется **расход** по регистру взаиморасчётов: по каждой строке, где определён ребёнок и договор, задолженность закрывается (вид операции «Оплата»). Разрезы движения: организация — из шапки (ЦБ); учреждение (сад) — по организации ребёнка через сопоставление с контрагентом; плательщик, ребёнок, договор, КФО, КПС — из строки расшифровки; ИФО — из шапки документа. Если задолженности нет, образуется отрицательный остаток — переплата (допустима).
**Важно:** обработчик автозаполнения срабатывает **на записи документа**, а закрытие задолженности — **на проведении**. Документы, загруженные до установки/обновления расширения, нужно перезаписать (открыть и записать) — либо довводить строки вручную. Непроведённое кассовое поступление движений по регистру взаиморасчётов не создаёт.
**См. также — документация БГУ 2.0 на ИТС:**
- [Импорт данных из файлов платежных поручений на общую сумму с реестром](https://its.1c.ru/db/metbud81/content/7407/hdoc) — как настроить загрузку реестров платежей: по реестру формируется «Кассовое поступление» с заполненной расшифровкой платежа.
---
## 5. Проверка работоспособности (приёмочные сценарии)
| № | Сценарий | Ожидаемый результат |
|---|---|---|
| 1 | Открыть рабочее место, задать период, нажать «Обновить» | Все страницы заполняются без ошибок; период по умолчанию — «Этот месяц»; организация ЦБ подставлена |
| 2 | Открыть рабочее место → «Остатки и обороты» | Остатки и обороты по 205.31 и 304.04 в разрезе ИФО |
| 3 | Провести документ «Передача задолженности в ЦБ» | Проводки Дт 304.04 — Кт 205.31; печать извещения формируется |
| 4 | Ввести «Принятие задолженности» на основании передачи | Проводки Дт 205.31 — Кт 304.04; движения регистра; сверка «передано/принято» без расхождений |
| 5 | Документ передачи с признаком «Начальное сальдо» → «Заполнить по остаткам счёта 205.31» | Табличная часть заполнена остатками на дату документа; поле «Документ начисления» скрыто |
| 6 | Загрузить реестр с корректными лицевыми счетами | В расшифровке платежа заполнены ребёнок, контрагент, договор, счёт расчётов 205.31, КОСГУ 131 |
| 7 | Загрузить реестр со строкой «чужого» лицевого счёта | Строка не распознана, выведено сообщение с номером строки и причиной; поле ребёнка пустое |
| 8 | Повторно записать обработанный документ | Ранее заполненные строки не перезаписаны; КОСГУ «000» заменён на 131 |
| 9 | Контрагент с несколькими договорами и без остатков | Договор пустой, выведено диагностическое сообщение |
| 10 | Провести кассовое поступление с распознанными строками | Сформирован расход по регистру взаиморасчётов (вид операции «Оплата»); остаток по ребёнку уменьшился |
| 11 | Провести кассовое поступление по ребёнку без задолженности | Образован отрицательный остаток — переплата (ошибок нет) |
| 12 | Кнопка «Оборотная ведомость» в рабочем месте | Открывается отчёт `ПС_ВедомостьЦБПоРодительскойПлате` в общей форме отчёта БСП; структура — учреждения, внутри дети; колонки: остаток на начало, приход, расход, остаток на конец |
---
## 6. Типовые ошибки и их устранение
### 6.1. Ошибки времени выполнения
| Симптом | Причина | Устранение |
|---|---|---|
| `Поле не найдено "Субконто1"` при записи кассового поступления | Отбор по субконто стоял в позиции «Счет» виртуальной таблицы `Остатки` | В параметрах ВТ `Остатки(<Период>, <Счет>, <Субконто>, <Условие>)` условия по `Субконто<Номер>` допустимы **только в «Условии»** (4-й параметр) |
| `Неверные параметры "…ОстаткиИОбороты, 5"` при открытии рабочего места | Условие по счёту стояло в позиции «Субконто» | Порядок параметров ВТ `ОстаткиИОбороты` — `(Начало периода, Конец периода, Периодичность, Метод дополнения, **Счет**, Субконто, Условие)`: счёт идёт **пятым**. Ориентир — типовые отчёты `СправкаРасчетСебестоимостьПродукции`, `СправкаРасчетКалькуляцииСебестоимости` |
| `Поле не найдено "Договоры.ЭтоГруппа"` | Справочник «Договоры» не иерархический | Убрать условие `НЕ Договоры.ЭтоГруппа` из запросов |
| `Кассовое поступление …: контрагент не определён — не найден ребёнок с лицевым счётом …` по всем строкам | Отбор по организации в поиске ребёнка (в документе организация — ЦБ, а дети относятся к садам) | Идентифицировать ребёнка **только по лицевому счёту**, без отбора по организации |
| Сообщение по строке, хотя лицевой счёт верный | Код в справочнике «Дети» хранится дополненным пробелами до длины 15 | Нормализовать сравнение (`СокрЛП`) с обеих сторон |
| КОСГУ остаётся «000» после записи | Код «000» проставляет типовая загрузка реестров, а правило «заполнять только пустое» его не трогает | КОСГУ «000» заменять на 131 принудительно |
| Автозаполнение не срабатывает | Документ загружен до установки расширения, либо снят признак «Родительская плата» | Перезаписать документ; проверить признак |
| Таблицы рабочего места пусты, выведено сообщение о сопоставлении | Не удалось сопоставить организацию и контрагента по ИНН | Сверить ИНН в справочниках «Организации» и «Контрагенты» |
### 6.2. Ошибки при разработке и сборке (EDT)
| Симптом | Причина | Устранение |
|---|---|---|
| SU232 «Свойство (метод) объекта не обнаружено» на реквизиты/ТЧ заимствованного документа | Анализатор не видит наследованную структуру | Заимствовать в расширение используемые реквизиты документа и реквизиты табличной части |
| SU89 «Запрос в цикле» | Обращения к базе внутри цикла по строкам | Собирать данные в цикле без запросов, выполнять один пакетный запрос на документ |
| SU47/SU67 на расширяющем методе | Метод расширения виден на клиенте | Оборачивать обработчик в `#Если Сервер` |
| Коллизия имён `РодительскаяПлата` | В конфигурации есть одноимённый общий модуль | Не использовать «голое» имя реквизита в модуле объекта; проверку признака выполнять внутри общего модуля расширения |
| Ошибка «Файл был изменён после чтения» | Параллельная правка файла | Перечитать файл и повторить правку |
| Ошибки SU112 по табличной части | Артефакт записи `.mdo` | Повторить проверку маркеров после пересборки |
| «Метод объекта не обнаружен (`ПриОпределенииНастроек`)» при чтении настроек отчёта | Отчёт включён в `ПодключаемыеОтчетыИОбработки`, но в модуле менеджера нет обязательного метода | Добавить в модуль менеджера отчёта процедуру `ПриОпределенииНастроек(Настройки) Экспорт` |
| Параметр периода в запросе СКД пуст или ошибка типа | Двойное экранирование `&` при записи текста запроса через метаданные (`&amp;amp;`) | Перезаписать текст запроса, передавая `&` как есть |
---
## 7. Обновление
1. **Обновление типовой конфигурации:** после обновления БГУ 2.0 проверить заимствованные объекты (`Document.КассовоеПоступление`, подсистемы) — при изменении типовой структуры требуется повторное заимствование реквизитов и повторная сборка расширения.
2. **Обновление расширения:** пересобрать проект в EDT → сформировать `.cfe` → обновить расширение в 1С:Предприятие → перезапустить сеансы.
3. После обновления прогнать приёмочные сценарии из раздела 5.
4. **Обновление БСП / типовой:** в расширение заимствованы объекты БСП (`ПодключаемыеОтчетыИОбработки`, `ВариантыОтчетовПереопределяемый`, общая форма `ФормаОтчета`). После обновления типовой их состав нужно проверять и при необходимости перезаимствовать — расширение несёт их копии.
5. **Перед любым обновлением** — резервная копия информационной базы.
---
## 8. Ограничения и известные особенности
1. **Период платежа не разбирается** — для заполнения расшифровки он не используется.
2. **Поиск ребёнка по ФИО не выполняется** (ФИО не уникально); идентификатор — только лицевой счёт.
3. **Сад в шапке кассового поступления не определяется** — организация в документе это ЦБ; сад виден только по строкам.
4. **Остатки в рабочем месте — без разреза по саду** (только ИФО): в проводках по 205.31/304.04 нет разреза по учреждению.
5. **Отбор/вывод вида операции «начальное сальдо»** в оборотной ведомости не реализован.
6. **Смена лицевого счёта ребёнка** не переидентифицирует ранее загруженные платежи.
7. **Массовый повторный разбор** существующих документов не автоматизирован — доввод выполняется по документу вручную.
8. **Отчёт «Оборотная ведомость» переведён на штатные механизмы БСП**: структура (учреждение → ребёнок) и выводимые поля заданы в схеме компоновки данных, период — стандартный параметр `Период` с вычисляемыми границами; отчёт открывается общей формой отчёта БСП. Программная сборка структуры из модуля отчёта убрана.
9. **Вывод поля периода в шапке отчёта** (в общей форме БСП) и **размещение отчёта в разделе** «Родительская плата» — в доработке.
---
## 9. Сопровождение
При обращении фиксировать:
- документ (вид, дата, номер), организацию, период;
- номер строки расшифровки платежа и текст назначения платежа;
- полный текст сообщения системы;
- действия, приведшие к ошибке.
Разбор инцидентов «строка не распознана» начинается с проверки справочника «Дети» (код = лицевой счёт, заполнен контрагент) и наличия договора у контрагента.
@@ -1,246 +1,271 @@
# РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. Учёт родительской платы ЦБ ОУО (БГУ 2.0)
**Конфигурация:** Бухгалтерия государственного учреждения, редакция 2.0 (БГУ 2.0), платформа 8.5.1
**Расширение:** `153_ЦБ_ОУО_БГУ.ПрофиСофт` (префикс объектов `ПС_`)
**Версия документа:** 1.1 от 07.10.2026
Расширение: `153_ЦБ_ОУО_БГУ.ПрофиСофт`, **версия 1.0.4**
Документ актуален на 02.11.2026.
Руководство для бухгалтера ЦБ ОУО и бухгалтера детского сада. Установку, настройку и обновление см. в «РУКОВОДСТВО АДМИНИСТРАТОРА».
---
## 1. Общие сведения
## 1. Кто что делает
### 1.1. Назначение
Расширение реализует учёт **родительской платы** в схеме «детский сад → централизованная бухгалтерия (ЦБ)»:
- начисление платы ведётся в садах (типовым документом БГУ);
- начисления **передаются в ЦБ** документом «Передача задолженности в ЦБ» с печатной формой извещения (ф. 0504805);
- ЦБ **принимает** задолженность документом «Принятие задолженности от учреждения»;
- платежи родителей, поступающие реестром из СУФД, **автоматически идентифицируются** по назначению платежа;
- расчёты контролируются в **рабочем месте «Управление расчётами по родительской плате»**.
### 1.2. Роли
| Роль | Кто | Что делает |
| Сторона | Роль в учёте | Что делает в системе |
|---|---|---|
| Бухгалтер сада | ПБС, лицевой счёт 03 | Начисление, передача задолженности в ЦБ, печать извещения |
| Бухгалтер ЦБ | АДБ, лицевой счёт 04 | Принятие задолженности, загрузка реестров платежей, идентификация платежей, контроль расчётов |
| **Детский сад** | начисляет родительскую плату (счёт 205.31) | ведёт начисления, передаёт сведения о начислениях в ЦБ, **принимает** переданные ЦБ платежи, подписывает извещение |
| **ЦБ ОУО** | администратор кассовых поступлений | принимает деньги в бюджет, ведёт расчёты с садами, **передаёт** садам поступившие суммы |
### 1.3. Термины
Полный цикл всегда такой:
| Термин | Значение |
|---|---|
| ЦБ | Централизованная бухгалтерия — организация, в которой ведётся учёт и принимаются платежи |
| Сад | Дошкольное учреждение (ПБС), начисляющее плату |
| Лицевой счёт ребёнка | Код ребёнка в справочнике «Дети» (синоним «Лицевой счёт», 15 символов, например `Х000012877`) |
| Расшифровка платежа | Табличная часть документа «Кассовое поступление», по строке на каждого плательщика |
| Назначение платежа | Текст из реестра СУФД; в расшифровке платежа хранится в реквизите «Примечание» |
**сад начислил → сад сообщил начисление в ЦБ → деньги пришли в ЦБ → ЦБ передал их в сад → сад принял**.
Первые два шага — типовые документы БГУ (раздел 4). Шаги «пришли → передал → принял» — документы расширения (разделы 5–7).
---
## 2. Начало работы
## 2. Где что находится
### 2.1. Открытие рабочего места
1С:Предприятие → раздел **«Платное обучение»** → **«Сервис»** → обработка **«Управление расчётами по родительской плате»**.
### 2.2. Отборы и период
В верхней части формы расположена группа **«Параметры периода»**:
| Поле | Назначение |
| Что нужно | Где в 1С |
|---|---|
| **Период** | Стандартный период. По умолчанию — «Этот месяц». Если период не заполнен, таблицы очищаются и выводится сообщение |
| **Организация (ЦБ)** | Организация централизованной бухгалтерии. При открытии подставляется автоматически из константы «Организация централизованная бухгалтерия» |
| **ИФО** | Источник финансового обеспечения |
| **Учреждение (сад)** | Детский сад (справочник «Контрагенты») |
| Пульт управления расчётами | раздел **Родительская плата** → «Управление расчётами по родительской плате» |
| Начисление родительской платы | типовой документ «Начисление родительской платы» |
| Извещения ф. 0504805 | типовые документы «Извещение исходящее» и «Извещение входящее» |
| Кассовые поступления | раздел **Денежные средства** → «Кассовые поступления» |
| Передача платежей в учреждения (ЦБ) | раздел **Родительская плата** → «Передача поступивших платежей в учреждения» |
| Принятие платежей из ЦБ (сад) | раздел **Родительская плата** → «Принятие поступивших платежей из ЦБ» |
| Оборотная ведомость | кнопка **«Оборотная ведомость»** на пульте |
Кнопки:
- **«Обновить»** — пересчитать все таблицы по установленным отборам;
- **«Оборотная ведомость»** — открыть отчёт с текущими отборами и периодом.
### 2.3. Страницы рабочего места
| Страница | Содержание |
|---|---|
| **Документы** | Документы принятия задолженности (ЦБ) и передачи задолженности (сад), колонка «Начальное сальдо» |
| **Начисления** | Документы «Начисление родительской платы» за период |
| **Сверка «передано / принято»** | Сопоставление переданных и принятых сумм по каждому документу передачи |
| **Остатки и обороты** | Остатки и обороты по счетам 205.31 и 304.04 в разрезе ИФО |
| **Кассовые поступления** | Документы «Кассовое поступление» с признаком «Родительская плата» и числом нераспознанных строк |
> Значения отборов сопоставляются между справочниками «Организации» и «Контрагенты» по ИНН. Если сопоставление не удалось, таблицы очищаются и выводится причина.
Если раздела «Родительская плата» не видно — у пользователя нет прав. Обратитесь к администратору (см. «Руководство администратора», раздел «Роли и права»).
---
## 3. Работа с документами
## 3. Как часто выполнять передачу и принятие
### 3.1. Начисление родительской платы (сад)
В расширении **нет привязки к календарному месяцу**: передачу поступивших платежей и их принятие можно делать за любой период — за день, за неделю, за месяц. Ограничений в программе нет, период на пульте выбирается любой.
Выполняется **типовым** документом БГУ «Начисление родительской платы». Расширение его не меняет. Начисления видны в рабочем месте на странице «Начисления» и служат основанием для передачи задолженности в ЦБ.
| Режим | Как выглядит | Когда удобен |
|---|---|---|
| **Ежедневный (оперативный)** | ЦБ каждый день передаёт суммы, поступившие за день; сад принимает их на следующий день | остаток у ЦБ близок к нулю, взаиморасчёты видны в любой момент |
| **Периодический** | передача раз в несколько дней или раз в неделю | меньше документов, контроль чаще, чем раз в месяц |
| **Месячный** | одна передача по итогам месяца | минимальный документооборот |
### 3.2. Передача задолженности в ЦБ (сад)
Выбранная периодичность фиксируется регламентом взаимодействия и учётной политикой. Внутри периода действует простое правило: **передавать и принимать можно столько раз, сколько нужно** — каждая передача забирает только те суммы, которые ещё не переданы.
**Документ:** «Передача задолженности в ЦБ».
Что важно при любом режиме:
| Реквизит | Что указывать |
|---|---|
| Организация | Сад (ПБС) |
| ИФО | Источник финансового обеспечения сада |
| ЦБ | Централизованная бухгалтерия (получатель) |
| Период | Месяц начисления |
| Документ начисления | Основание — документ «Начисление родительской платы» |
| Сумма документа | Итог по табличной части |
| Счёт-корреспондент | По умолчанию 304.04 |
| КЭК корреспондент | По умолчанию 131 |
Табличная часть **«Задолженность»**: контрагент (родитель), договор, ребёнок, сумма, КПС, КЭК.
**Проводки:** Дт 304.04 — Кт 205.31 (счёт и КЭК корреспондирующей стороны берутся из реквизитов документа).
**Печать:** команда печати формирует **извещение (ф. 0504805)** по данным документа.
#### Режим «Начальное сальдо»
Для переноса сальдо на момент запуска системы:
1. установите признак **«Начальное сальдо»**;
2. нажмите **«Заполнить по остаткам счёта 205.31»** — табличная часть заполнится остатками на дату документа (строки можно править и добавлять);
3. при необходимости скорректируйте счёт-корреспондент и КЭК;
4. проведите документ и распечатайте извещение.
В этом режиме поле «Документ начисления» скрыто и не требуется. Переплаты вводятся **отрицательной суммой** в строке.
> Если у сада остатки по 205.31 лежат в нескольких ИФО или КФО, команда заполнения предупреждает об этом — такое сальдо переносится отдельными документами.
### 3.3. Принятие задолженности от учреждения (ЦБ)
**Документ:** «Принятие задолженности от учреждения». Удобнее всего вводить **на основании** документа передачи — тогда организация, учреждение, период, суммы и табличная часть заполнятся автоматически.
**Проводки:** Дт 205.31 — Кт 304.04. Документ также формирует движения регистра «Взаиморасчёты по родительской плате».
**Печать:** извещение (ф. 0504805), зеркальная сторона.
После ввода документа проверьте страницу **«Сверка «передано / принято»»**: расхождения по суммам должны быть нулевыми.
- документ передачи адресный — один сад на документ;
- передача забирает остаток на момент документа, поэтому дважды одну сумму не отправит;
- сверка «передано / принято» на пульте строится за выбранный период, её рекомендуется делать не реже раза в месяц.
---
## 4. Кассовые поступления и идентификация платежей
## 4. Передача сведений о начислениях в ЦБ (сад → ЦБ)
### 4.1. Как появляется документ
Типовые операции БГУ, расширением не автоматизируются. Нужны, чтобы ЦБ знал, сколько денег должно поступить, и мог сопоставить это с фактическими платежами.
Реестр платежей из СУФД загружается **штатным механизмом БГУ** («Импорт данных из файлов платёжных поручений на общую сумму с реестром»). В результате создаётся документ **«Кассовое поступление»**, а строки реестра попадают в табличную часть **«Расшифровка платежа»**.
### 4.1. Начисление родительской платы (сад)
Расширение не разбирает XML: работа идёт по факту записи документа с признаком **«Родительская плата»**.
### 4.2. Что заполняется автоматически
При записи документа система заполняет в строках расшифровки платежа:
| Реквизит | Значение |
|---|---|
| **Ребёнок** | Найден по лицевому счёту из назначения платежа |
| **Контрагент** | Родитель (плательщик) из карточки ребёнка |
| **Договор** | По правилам п. 4.3 |
| **Счёт расчётов** | 205.31 |
| **КОСГУ назначения платежа** | 131 |
Идентификация выполняется по **лицевому счёту**: он уникален для ЦБ и всех подшефных садов, поэтому отбор по организации не применяется.
### 4.3. Правила определения договора
1. Если по счёту 205.31 есть остатки у контрагента — договор берётся **из остатков**.
2. Иначе — **единственный** договор, отобранный по контрагенту.
3. Если договоров нет или их больше одного — выводится диагностическое сообщение, поле остаётся **пустым**.
### 4.4. Что не перезаписывается
- Строки, в которых **уже заполнен ребёнок**, повторно не обрабатываются (признак «строка уже обработана»).
- Счёт расчётов заполняется только в пустое поле.
- Исключение — **КОСГУ**: код «000», который проставляет типовая загрузка, принудительно заменяется на 131.
Поэтому повторная запись уже обработанного документа безопасна: ручные правки сохраняются.
### 4.5. Проведение документа: закрытие задолженности
При **проведении** документа «Кассовое поступление» с признаком «Родительская плата» задолженность закрывается: по каждой строке расшифровки, в которой определён ребёнок и договор, формируется **расход** по регистру «Взаиморасчёты по родительской плате» (оплата родительской платы). Сумма платежа уменьшает остаток по ребёнку.
Разрезы движения берутся из строки расшифровки: ребёнок, плательщик (контрагент), договор, учреждение (сад) — по лицевому счёту; КФО и КПС — из расшифровки платежа; ИФО — из шапки документа.
Если задолженности нет, образуется **отрицательный остаток** — это переплата; в учёте она допустима (в бухгалтерском учёте отражается по кредиту счёта).
### 4.6. Контроль нераспознанных строк
Рабочее место → страница **«Кассовые поступления»**:
| Колонка | Значение |
|---|---|
| Строк всего | Количество строк расшифровки платежа в документе |
| **Строк не распознано** | Строки, в которых не определён ребёнок — требуют ручного доввода |
Порядок работы:
1. найдите документ с ненулевой колонкой «Строк не распознано»;
2. откройте документ и прочитайте сообщения (см. п. 5);
3. заполните строку вручную и запишите документ.
### 4.7. Формат назначения платежа
Реестр СУФД передаёт назначение платежа шестью фрагментами через запятую:
Сад формирует начисление родительской платы типовым документом и проводит его:
```
ГКДОУ д/с №17 Сказка, л/с 03003001013, л/с Х000012877, Долгих Анна Артемовна, вторая группа ран.возр, май
Дт 205.31.560 Кт 401.10.131
```
| № | Фрагмент | Как используется |
|---|---|---|
| 1 | Наименование ДОУ | справочно |
| 2 | Лицевой счёт сада | справочно |
| 3 | **Лицевой счёт ребёнка** | **основной идентификатор** (код в справочнике «Дети») |
| 4 | ФИО ребёнка | справочно |
| 5 | Группа | справочно |
| 6 | Период | справочно (для заполнения расшифровки не используется) |
Счёт 205.31 ведётся **только садом**. У ЦБ этого счёта по родительской плате нет.
Лицевой счёт ищется после последнего фрагмента «л/с»; латинская буква `X` приравнивается к кириллической `Х`, допускается вариант записи без буквы.
### 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. Диагностические сообщения
## 5. Ежедневно: кассовое поступление (ЦБ)
Сообщения выводятся при записи документа «Кассовое поступление» и при работе в рабочем месте.
1. Открыть «Кассовое поступление», создать новый документ.
2. Заполнить шапку: организация — ЦБ, дата, счёт, ИФО.
3. Корреспондирующий счёт — **«прочие счета»**, типовая операция — специальная копия (её заводит администратор при внедрении).
4. Установить признак **«Родительская плата»**. Без него приход по взаиморасчётам не сформируется.
5. Заполнить таблицу «Расшифровка платежа». В колонке «Примечание» — назначение платежа из выписки.
6. Записать документ. По каждой распознанной строке автоматически заполняются:
- **контрагент** (родитель),
- **ребёнок**,
- **договор**,
- **счёт расчётов** 205.31,
- **КОСГУ назначения платежа** 131,
- **КФО** — из настроек лицевого счёта (раздел счёта → допустимые КФО; подставляется первый по порядку, как в типовых формах).
7. Провести документ.
| Сообщение | Причина | Действия |
Уже заполненные вручную значения при записи **не перезаписываются** — ручная правка сохраняется.
### 5.1. Бухгалтерские записи при кассовом поступлении
Кассовое поступление в ЦБ даёт **одну бухгалтерскую проводку** и **записи по регистру взаиморасчётов**:
| Что формируется | Запись | Смысл |
|---|---|---|
| «Кассовое поступление …, строка …: контрагент не определён — не найден ребёнок с лицевым счётом …» | Лицевого счёта нет в справочнике «Дети» | Проверить код ребёнка: должен совпадать с лицевым счётом (без лишних символов и пробелов). Заполнить строку вручную |
| «… контрагент не определён — не удалось определить лицевой счёт ребёнка» | В назначении платежа нет фрагмента «л/с …» | Проверить текст назначения платежа, заполнить строку вручную |
| «… контрагент не определён — у ребёнка … не заполнен контрагент» | В карточке ребёнка не заполнен контрагент (родитель) | Заполнить контрагента в карточке ребёнка |
| «в плане счетов ЕПСБУ не найден счёт 205.31 — счёт расчётов не заполнен» | Не настроен план счетов | Обратиться к сопровождению |
| «в справочнике КОСГУ не найден код 131 — КОСГУ назначения платежа не заполнен» | Не настроен справочник КОСГУ | Обратиться к сопровождению |
| «Остатки и обороты не рассчитаны: в плане счетов ЕПСБУ не найден счет 205.31 и/или 304.04» | Не настроен план счетов | Обратиться к сопровождению |
| «Остатки не рассчитаны: не найдены остатки по счёту 205.31 …» | По счёту нет остатков на дату / по организации | Проверить дату и организацию |
| «Заполнение по остаткам невозможно: в плане счетов ЕПСБУ не найден счет 205.31» | Не настроен план счетов | Обратиться к сопровождению |
| Предупреждение о том, что отбор по учреждению на остатки не влияет | Остатки берутся из проводок, где разрез по саду отсутствует | Учитывать при анализе |
| Сообщение о невозможности сопоставить организацию и контрагента по ИНН | Расхождение ИНН в справочниках | Проверить ИНН организации и контрагента |
| Бухгалтерская проводка (типовая, по документу) | `Дт 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. Отчёты
## 6. Передача поступивших платежей в сад (ЦБ)
| Отчёт | Как открыть | Что показывает |
|---|---|---|
| **Оборотная ведомость по расчётам по родительской плате** | Кнопка «Оборотная ведомость» в рабочем месте | Обороты и остатки по регистру взаиморасчётов в разрезе учреждений и детей (колонки: остаток на начало, приход, расход, остаток на конец); отборы и период передаются из рабочего места. Если период не задан, показываются все данные |
| **Остатки и обороты** | Страница рабочего места | Остатки и обороты по счетам 205.31 и 304.04 в разрезе ИФО |
| **Сверка «передано / принято»** | Страница рабочего места | Суммы переданные и принятые по каждому документу передачи, расхождение |
| Извещение (ф. 0504805) | Команда печати в документах передачи и принятия | Печатная форма для передачи в ЦБ и сад |
1. Открыть «Передача поступивших платежей в учреждения», создать документ.
2. Указать: организация — ЦБ, **учреждение (один сад)**, период, ИФО.
3. Нажать **«Заполнить по поступившим платежам»**. Подбираются платежи, поступившие в ЦБ и ещё не переданные этому саду; реквизиты реестра подтягиваются из назначения платежа.
4. Проверить таблицу «Задолженность»: суммы, дети, договоры. Итог по колонке «Сумма» попадает в сумму документа.
5. Провести документ. Бухгалтерских проводок документ не формирует — он делает расход по регистру взаиморасчётов.
6. Нажать **«Создать приём платежей»** — создаётся документ принятия у сада и сразу открывается. Повторное нажатие открывает уже созданный документ, дубль не появляется.
7. Нажать **«Реестр платежей»** — печатная форма для сада.
8. Нажать **«Создать извещение»** — формируется исходящее извещение ф. 0504805 (вид «Получение дохода»). Повторное нажатие открывает существующее.
**Важно:** документ адресный — один сад на документ. Если в остатках оказались разные ИФО или КФО, система предупредит: передайте их отдельными документами.
---
## 7. Ограничения и особенности
## 7. Принятие платежей из ЦБ (сад)
1. **Период платежа не разбирается** — для заполнения расшифровки платежа он не нужен (начисление сопоставляется по контрагенту и ребёнку).
2. **Поиск ребёнка по ФИО не выполняется** — ФИО не уникально; единственный надёжный идентификатор — лицевой счёт.
3. **Сад в шапке кассового поступления не определяется** — в документе организация — это ЦБ; сад виден только по строкам расшифровки.
4. **Остатки в рабочем месте — без разреза по саду** (только в разрезе ИФО): в проводках по 205.31/304.04 разрез по учреждению отсутствует.
5. **Отчёт по виду операции «начальное сальдо»** — отбор/вывод вида операции в оборотной ведомости пока не реализован.
6. При смене лицевого счёта ребёнка в справочнике «Дети» ранее загруженные платежи автоматически не переидентифицируются — требуется ручной доввод.
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, реквизит «Принятие платежей» не заполнен — кнопка создаст новый документ принятия.