From 4a35751282589a858cb19d9001bd032c78f33564 Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Mon, 2 Nov 2026 13:03:56 +0500 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B4=D0=BE=D0=B3=D0=BE=D0=B2=D0=BE?= =?UTF-8?q?=D1=80=D1=8B=20=D0=BF=D0=BE=20=D0=BE=D1=80=D0=B3=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D1=80=D0=B5=D0=B1=D1=91?= =?UTF-8?q?=D0=BD=D0=BA=D0=B0=20=D0=B8=20=D0=B1=D0=B5=D0=B7=20=D0=B0=D1=80?= =?UTF-8?q?=D1=85=D0=B8=D0=B2=D0=B0,=20=D0=B0=D0=B2=D1=82=D0=BE=D0=BE?= =?UTF-8?q?=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF?= =?UTF-8?q?=D1=83=D0=BB=D1=8C=D1=82=D0=B0,=20=D0=B2=D0=B5=D1=80=D1=81?= =?UTF-8?q?=D0=B8=D1=8F=201.0.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ПС_РазборПлатежейПоРодительскойПлате/Module.bsl | 83 +++- .../src/Configuration/Configuration.mdo | 8 +- .../Forms/Форма/Form.form | 16 + .../Forms/Форма/Module.bsl | 52 +++ .../src/Roles/ПС_ЗаписьРодительскойПлаты/Rights.rights | 391 +++++++++++++++++- 5 files changed, 517 insertions(+), 33 deletions(-) diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl index 536a9df..d7127fe 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/CommonModules/ПС_РазборПлатежейПоРодительскойПлате/Module.bsl @@ -59,6 +59,7 @@ // Второй проход: отбор строк, по которым ребёнок и его контрагент определены однозначно. СтрокиКЗаполнению = Новый Массив; Контрагенты = Новый Соответствие; + ОрганизацииКонтрагентов = Новый Соответствие; Для Каждого ДанныеПлатежа Из РазобранныеСтроки Цикл @@ -83,6 +84,9 @@ СтрокиКЗаполнению.Добавить(СтрокаКЗаполнению); Контрагенты.Вставить(Ребенок.Контрагент, Истина); + // Договор ищется только по организации ребёнка: при переводе ребёнка из сада в сад + // у родителя остаются договоры прежних учреждений. + ОрганизацииКонтрагентов.Вставить(Ребенок.Контрагент, Ребенок.Организация); КонецЦикла; @@ -107,7 +111,7 @@ КонецЕсли; // Договоры определяются одним запросом сразу по всем контрагентам документа. - Договоры = ДоговорыПоКонтрагентам(Контрагенты, ДокументОбъект, СчетРасчетов); + Договоры = ДоговорыПоКонтрагентам(Контрагенты, ОрганизацииКонтрагентов, ДокументОбъект, СчетРасчетов); // КФО строк берётся из настройки лицевого счёта: раздел счёта -> допустимые КФО. // Используется типовой механизм, поэтому выбор совпадает с поведением типовых форм: @@ -209,6 +213,8 @@ // // Параметры: // Контрагенты - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты (дети) документа. +// ОрганизацииКонтрагентов - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Организации - +// организация ребёнка по контрагенту. Пустая ссылка - отбор по организации не применяется. // ДокументОбъект - ДокументОбъект.КассовоеПоступление - документ, по дате и организации которого ищутся остатки. // СчетРасчетов - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы (205.31). // @@ -216,7 +222,7 @@ // Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - договоры по контрагентам, // определённые однозначно. // -Функция ДоговорыПоКонтрагентам(Контрагенты, ДокументОбъект, СчетРасчетов) +Функция ДоговорыПоКонтрагентам(Контрагенты, ОрганизацииКонтрагентов, ДокументОбъект, СчетРасчетов) КонтрагентыМассив = Новый Массив; Для Каждого Элемент Из Контрагенты Цикл @@ -228,10 +234,12 @@ КоличествоДоговоров = Новый Соответствие; // 1. Договоры из остатков по счёту 205.31 - приоритетный источник. - ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ДокументОбъект, СчетРасчетов, Результат, Неоднозначные); + ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ОрганизацииКонтрагентов, ДокументОбъект, СчетРасчетов, + Результат, Неоднозначные); // 2. Для остальных контрагентов - единственный договор, отобранный по реквизиту "Контрагент". - ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, Результат, Неоднозначные, КоличествоДоговоров); + ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, ОрганизацииКонтрагентов, Результат, Неоднозначные, + КоличествоДоговоров); // 3. Диагностика по контрагентам, для которых договор определить не удалось. Для Каждого Элемент Из Контрагенты Цикл @@ -266,12 +274,15 @@ // // Параметры: // КонтрагентыМассив - Массив из СправочникСсылка.Контрагенты - контрагенты (дети), по которым ищутся остатки. +// ОрганизацииКонтрагентов - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Организации - +// организация ребёнка по контрагенту. Пустая ссылка - отбор по организации не применяется. // ДокументОбъект - ДокументОбъект.КассовоеПоступление - документ, по дате и организации которого ищутся остатки. // Счет20531 - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы (205.31). // Результат - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - дополняется найденными договорами. // Неоднозначные - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты с несколькими договорами в остатках. // -Процедура ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ДокументОбъект, Счет20531, Результат, Неоднозначные) +Процедура ЗаполнитьДоговорыПоОстаткам20531(КонтрагентыМассив, ОрганизацииКонтрагентов, ДокументОбъект, Счет20531, + Результат, Неоднозначные) Если НЕ ЗначениеЗаполнено(Счет20531) Тогда Возврат; @@ -287,15 +298,19 @@ Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Остатки.Субконто1 КАК Контрагент, - | Остатки.Субконто2 КАК Договор + | Остатки.Субконто2 КАК Договор, + | Договоры.Организация КАК Организация |ИЗ | РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Остатки( | &Дата, | Счет В ИЕРАРХИИ (&Счет20531), | &ВидыСубконто, | Организация = &Организация И Субконто1 В (&Контрагенты)) КАК Остатки + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Договоры КАК Договоры + | ПО Остатки.Субконто2 = Договоры.Ссылка |ГДЕ - | Остатки.СуммаОстаток <> 0"; + | Остатки.СуммаОстаток <> 0 + | И НЕ Договоры.ВАрхиве"; Запрос.УстановитьПараметр("Дата", ДокументОбъект.Дата); Запрос.УстановитьПараметр("Счет20531", Счет20531); Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто); @@ -309,6 +324,10 @@ Продолжить; КонецЕсли; + Если НЕ ОрганизацияДоговораПодходит(Выборка.Организация, ОрганизацииКонтрагентов[Выборка.Контрагент]) Тогда + Продолжить; + КонецЕсли; + НайденныйДоговор = Результат[Выборка.Контрагент]; Если НайденныйДоговор = Неопределено Тогда Результат.Вставить(Выборка.Контрагент, Выборка.Договор); @@ -321,24 +340,32 @@ КонецПроцедуры // Дополняет результат единственным договором, отобранным по реквизиту "Контрагент". +// Учитываются только действующие договоры (не помеченные на удаление и не находящиеся в архиве), +// организация договора должна совпадать с организацией ребёнка: при переводе ребёнка из сада в сад +// у родителя остаются договоры прежних учреждений. // // Параметры: // КонтрагентыМассив - Массив из СправочникСсылка.Контрагенты - контрагенты (дети), по которым отбираются договоры. +// ОрганизацииКонтрагентов - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Организации - +// организация ребёнка по контрагенту. Пустая ссылка - отбор по организации не применяется. // Результат - Соответствие из СправочникСсылка.Контрагенты, СправочникСсылка.Договоры - дополняется найденными договорами. // Неоднозначные - Соответствие из СправочникСсылка.Контрагенты, Булево - контрагенты с неоднозначным договором. // КоличествоДоговоров - Соответствие из СправочникСсылка.Контрагенты, Число - количество найденных договоров. // -Процедура ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, Результат, Неоднозначные, КоличествоДоговоров) +Процедура ЗаполнитьДоговорыПоОтбору(КонтрагентыМассив, ОрганизацииКонтрагентов, Результат, Неоднозначные, + КоличествоДоговоров) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Договоры.Контрагент КАК Контрагент, - | Договоры.Ссылка КАК Договор + | Договоры.Ссылка КАК Договор, + | Договоры.Организация КАК Организация |ИЗ | Справочник.Договоры КАК Договоры |ГДЕ | НЕ Договоры.ПометкаУдаления + | И НЕ Договоры.ВАрхиве | И Договоры.Контрагент В (&Контрагенты) |УПОРЯДОЧИТЬ ПО | Договоры.Контрагент"; @@ -348,6 +375,10 @@ Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл + Если НЕ ОрганизацияДоговораПодходит(Выборка.Организация, ОрганизацииКонтрагентов[Выборка.Контрагент]) Тогда + Продолжить; + КонецЕсли; + ДоговорыКонтрагента = Найденные[Выборка.Контрагент]; Если ДоговорыКонтрагента = Неопределено Тогда ДоговорыКонтрагента = Новый Массив; @@ -371,6 +402,29 @@ КонецПроцедуры +// Проверяет, что договор относится к организации ребёнка. +// +// При переводе ребёнка из сада в сад по нему остаются договоры прежних учреждений, +// поэтому договор без проверки организации выбирается неверно. +// +// Параметры: +// ОрганизацияДоговора - СправочникСсылка.Организации - организация, указанная в договоре. +// ОрганизацияРебенка - СправочникСсылка.Организации - текущая организация ребёнка; +// пустая ссылка или Неопределено - отбор по организации не применяется. +// +// Возвращаемое значение: +// Булево - Истина, если договор подходит; Ложь - если относится к другой организации. +// +Функция ОрганизацияДоговораПодходит(ОрганизацияДоговора, ОрганизацияРебенка) + + Если НЕ ЗначениеЗаполнено(ОрганизацияРебенка) Тогда + Возврат Истина; + КонецЕсли; + + Возврат ОрганизацияДоговора = ОрганизацияРебенка; + +КонецФункции + // Заполняет реквизиты строк расшифровки платежа по результатам разбора назначения. // КОСГУ "000", проставленный типовой загрузкой реестров, заменяется принудительно; // остальные заполненные значения не перезаписываются. @@ -678,7 +732,8 @@ | Дети.Код КАК Код, | Дети.Ссылка КАК Ссылка, | Дети.Наименование КАК Наименование, - | Дети.Контрагент КАК Контрагент + | Дети.Контрагент КАК Контрагент, + | Дети.Организация КАК Организация |ИЗ | Справочник.Дети КАК Дети |ГДЕ @@ -688,8 +743,12 @@ Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл - Результат.Вставить(СокрЛП(Выборка.Код), Новый Структура("Ссылка, Наименование, Контрагент", - Выборка.Ссылка, Выборка.Наименование, Выборка.Контрагент)); + Ребенок = Новый Структура; + Ребенок.Вставить("Ссылка", Выборка.Ссылка); + Ребенок.Вставить("Наименование", Выборка.Наименование); + Ребенок.Вставить("Контрагент", Выборка.Контрагент); + Ребенок.Вставить("Организация", Выборка.Организация); + Результат.Вставить(СокрЛП(Выборка.Код), Ребенок); КонецЦикла; Возврат Результат; diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo index 136d7f6..7dc1313 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Configuration/Configuration.mdo @@ -11,6 +11,8 @@ Checked Checked Checked + Extended + Extended Extended @@ -28,8 +30,10 @@ PersonalComputer Russian Role.ПС_ОсновнаяРоль - 1.0.3 + 1.0.4 Language.Русский + + TaxiEnableVersion8_2 Русский @@ -52,6 +56,8 @@ CommonPicture.ОтменитьДействие CommonPicture.ПовторитьДействие CommonPicture.Сумма + CommonPicture.ПС_Лого_Родительская_Плата + CommonPicture.ПС_Заставка_Родительская_Плата Role.ПС_ОсновнаяРоль Role.БазовыеПраваБГУ Role.ПС_ЧтениеРодительскойПлаты diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form index 7266f66..76c5480 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Form.form @@ -22,6 +22,10 @@ Объект.Период + + OnChange + ПериодПриИзменении + ПолеПериодРасширеннаяПодсказка 13 @@ -67,6 +71,10 @@ Объект.Организация + + OnChange + ОрганизацияПриИзменении + ПолеОрганизацияРасширеннаяПодсказка 16 @@ -112,6 +120,10 @@ Объект.ИФО + + OnChange + ИФОПриИзменении + ПолеИФОРасширеннаяПодсказка 19 @@ -157,6 +169,10 @@ Объект.Учреждение + + OnChange + УчреждениеПриИзменении + ПолеУчреждениеРасширеннаяПодсказка 307 diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl index 12738e6..9b1614f 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/DataProcessors/ПС_УправлениеРасчетамиПоРодительскойПлате/Forms/Форма/Module.bsl @@ -22,6 +22,58 @@ #КонецОбласти +#Область ОбработчикиСобытийЭлементовШапкиФормы + +// Обновляет таблицы пульта при изменении периода отбора. +// +// Параметры: +// Элемент - ПолеФормы - изменённое поле отбора. +// +&НаКлиенте +Процедура ПериодПриИзменении(Элемент) + + ОбновитьТаблицыНаСервере(); + +КонецПроцедуры + +// Обновляет таблицы пульта при изменении организации (ЦБ). +// +// Параметры: +// Элемент - ПолеФормы - изменённое поле отбора. +// +&НаКлиенте +Процедура ОрганизацияПриИзменении(Элемент) + + ОбновитьТаблицыНаСервере(); + +КонецПроцедуры + +// Обновляет таблицы пульта при изменении ИФО. +// +// Параметры: +// Элемент - ПолеФормы - изменённое поле отбора. +// +&НаКлиенте +Процедура ИФОПриИзменении(Элемент) + + ОбновитьТаблицыНаСервере(); + +КонецПроцедуры + +// Обновляет таблицы пульта при изменении учреждения (сада). +// +// Параметры: +// Элемент - ПолеФормы - изменённое поле отбора. +// +&НаКлиенте +Процедура УчреждениеПриИзменении(Элемент) + + ОбновитьТаблицыНаСервере(); + +КонецПроцедуры + +#КонецОбласти + #Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаДокументыПередачи // Сужает таблицу принятий до принятий по выбранному документу передачи. diff --git a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЗаписьРодительскойПлаты/Rights.rights b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЗаписьРодительскойПлаты/Rights.rights index 29e5a5a..d92b064 100644 --- a/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЗаписьРодительскойПлаты/Rights.rights +++ b/153_ЦБ_ОУО_БГУ.ПрофиСофт/src/Roles/ПС_ЗаписьРодительскойПлаты/Rights.rights @@ -3,16 +3,19 @@ false false false + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.КФО + + View + true + + Document.ПС_ПередачаПоступившихПлатежейВУчреждения Read true - - View - true - Insert true @@ -33,35 +36,84 @@ UndoPosting true - - - Document.ПС_ПринятиеПоступившихПлатежейИзЦБ - - Read - true - View true - Insert + InteractiveInsert true - Update + Edit true - Delete + InteractiveSetDeletionMark true - Posting + InteractiveClearDeletionMark true - UndoPosting + InteractiveDeleteMarked + true + + + InteractivePosting + true + + + InteractivePostingRegular + true + + + InteractiveUndoPosting + true + + + InteractiveChangeOfPosted + true + + + InputByString + true + + + ReadDataHistory + true + + + ReadDataHistoryOfMissingData + true + + + UpdateDataHistory + true + + + UpdateDataHistoryOfMissingData + true + + + UpdateDataHistorySettings + true + + + UpdateDataHistoryVersionComment + true + + + ViewDataHistory + true + + + EditDataHistoryVersionComment + true + + + SwitchToDataHistoryVersion true @@ -71,10 +123,6 @@ Read true - - View - true - Insert true @@ -95,6 +143,85 @@ UndoPosting true + + View + true + + + Edit + true + + + InteractiveSetDeletionMark + true + + + InteractiveClearDeletionMark + true + + + InteractiveDeleteMarked + true + + + InteractivePosting + true + + + InteractivePostingRegular + true + + + InteractiveUndoPosting + true + + + InteractiveChangeOfPosted + true + + + ReadDataHistory + true + + + ReadDataHistoryOfMissingData + true + + + UpdateDataHistory + true + + + UpdateDataHistoryOfMissingData + true + + + UpdateDataHistorySettings + true + + + UpdateDataHistoryVersionComment + true + + + ViewDataHistory + true + + + EditDataHistoryVersionComment + true + + + SwitchToDataHistoryVersion + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.Договор + + View + true + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате @@ -106,6 +233,223 @@ Update true + + View + true + + + Edit + true + + + TotalsControl + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.StandardAttribute.RecordType + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.StandardAttribute.Active + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.StandardAttribute.LineNumber + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.StandardAttribute.Recorder + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.StandardAttribute.Period + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Attribute.ВидОперации + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.Плательщик + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.ИФО + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Resource.Сумма + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Attribute.ДокументПередачи + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.Учреждение + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.Организация + + View + true + + + + Document.ПС_ПринятиеПоступившихПлатежейИзЦБ + + Read + true + + + Insert + true + + + Update + true + + + Delete + true + + + Posting + true + + + UndoPosting + true + + + View + true + + + InteractiveInsert + true + + + Edit + true + + + InteractiveSetDeletionMark + true + + + InteractiveClearDeletionMark + true + + + InteractiveDeleteMarked + true + + + InteractivePosting + true + + + InteractivePostingRegular + true + + + InteractiveUndoPosting + true + + + InteractiveChangeOfPosted + true + + + InputByString + true + + + ReadDataHistory + true + + + ReadDataHistoryOfMissingData + true + + + UpdateDataHistory + true + + + UpdateDataHistoryOfMissingData + true + + + UpdateDataHistorySettings + true + + + UpdateDataHistoryVersionComment + true + + + ViewDataHistory + true + + + EditDataHistoryVersionComment + true + + + SwitchToDataHistoryVersion + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.Ребенок + + View + true + + + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.ИДСтроки + + View + true + DataProcessor.ПС_УправлениеРасчетамиПоРодительскойПлате @@ -129,4 +473,11 @@ true + + AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате.Dimension.КПС + + View + true + +