feat(печать,роли): общий макет реестра, КФО из лицевого счёта, роли чтения и записи, версия 1.0.2

This commit is contained in:
11 changed files with 387 additions and 18 deletions
@@ -79,6 +79,7 @@
СтрокаКЗаполнению.СтрокаПлатежа = СтрокаПлатежа;
СтрокаКЗаполнению.Ребенок = Ребенок.Ссылка;
СтрокаКЗаполнению.Контрагент = Ребенок.Контрагент;
СтрокаКЗаполнению.Вставить("ЛицевойСчет", ДанныеПлатежа.ЛицевойСчет);
СтрокиКЗаполнению.Добавить(СтрокаКЗаполнению);
Контрагенты.Вставить(Ребенок.Контрагент, Истина);
@@ -108,8 +109,13 @@
// Договоры определяются одним запросом сразу по всем контрагентам документа.
Договоры = ДоговорыПоКонтрагентам(Контрагенты, ДокументОбъект, СчетРасчетов);
// КФО строк берётся из настройки лицевого счёта: раздел счёта -> допустимые КФО.
// Используется типовой механизм, поэтому выбор совпадает с поведением типовых форм:
// подставляется первое допустимое значение (наименьший порядок перечисления КВД).
КФОПоСчетам = КФОПоЛицевымСчетам(СтрокиКЗаполнению);
Результат.Заполнено = Результат.Заполнено + ЗаполнитьСтрокиРасшифровки(
СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа);
СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа, КФОПоСчетам);
Возврат Результат;
@@ -375,11 +381,14 @@
// договоры, определённые по контрагентам однозначно.
// СчетРасчетов - ПланСчетовСсылка.ЕПСБУ - счёт расчётов родительской платы.
// КОСГУНазначениеПлатежа - СправочникСсылка.КОСГУ - КОСГУ назначения платежа.
// КФОПоСчетам - Соответствие из Строка, ПеречислениеСсылка.КВД - КФО по номерам
// лицевых счетов, см. КФОПоЛицевымСчетам.
//
// Возвращаемое значение:
// Число - количество заполненных строк расшифровки платежа.
//
Функция ЗаполнитьСтрокиРасшифровки(СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа)
Функция ЗаполнитьСтрокиРасшифровки(СтрокиКЗаполнению, Договоры, СчетРасчетов, КОСГУНазначениеПлатежа,
КФОПоСчетам = Неопределено)
// Типовая загрузка реестров прописывает в КОСГУ назначения платежа код "000" -
// для родительской платы его нужно заменить принудительно.
@@ -411,6 +420,10 @@
СтрокаРасшифровки.КОСГУНазначениеПлатежа = КОСГУНазначениеПлатежа;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(СтрокаРасшифровки.КФО) И КФОПоСчетам <> Неопределено Тогда
СтрокаРасшифровки.КФО = КФОСтрокиПоЛицевомуСчету(КФОПоСчетам, СтрокаКЗаполнению.ЛицевойСчет);
КонецЕсли;
Заполнено = Заполнено + 1;
КонецЦикла;
@@ -419,6 +432,108 @@
КонецФункции
// Определяет КФО для лицевых счетов строк документа.
//
// КФО задаётся на разделе лицевого счёта (табличная часть "Допустимые КФО"). Список допустимых
// значений получаем типовой функцией, она же упорядочивает их по порядку перечисления КВД.
// Как и в типовых формах, берётся первое допустимое значение: если у счёта разрешено несколько
// КФО, подставляется значение с наименьшим порядком, остальные бухгалтер может выбрать вручную.
//
// Параметры:
// СтрокиКЗаполнению - Массив из Структура - строки, по которым определён ребёнок и контрагент.
//
// Возвращаемое значение:
// Соответствие из Строка, ПеречислениеСсылка.КВД - КФО по номерам лицевых счетов,
// по которым допустимый КФО определён.
//
Функция КФОПоЛицевымСчетам(СтрокиКЗаполнению)
Результат = Новый Соответствие;
Коды = Новый Массив;
Для Каждого СтрокаКЗаполнению Из СтрокиКЗаполнению Цикл
Для Каждого Код Из КодыПоискаРебенка(СтрокаКЗаполнению.ЛицевойСчет) Цикл
Коды.Добавить(Код);
КонецЦикла;
КонецЦикла;
Если Коды.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
Для Каждого ЛицевойСчет Из ЛицевыеСчетаПоКодам(Коды) Цикл
ДопустимыеКФО = ПлатежноРасчетныеДокументыПовтИсп.ДопустимыеКФО(, ЛицевойСчет.Значение);
Если ДопустимыеКФО.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
Результат.Вставить(ЛицевойСчет.Ключ, ДопустимыеКФО[0]);
КонецЦикла;
Возврат Результат;
КонецФункции
// Возвращает КФО строки по номеру лицевого счёта, распознанному в назначении платежа.
//
// Параметры:
// КФОПоСчетам - Соответствие из Строка, ПеречислениеСсылка.КВД - КФО по номерам лицевых счетов.
// ЛицевойСчет - Строка - лицевой счёт, распознанный в назначении платежа.
//
// Возвращаемое значение:
// ПеречислениеСсылка.КВД - КФО строки; пустая ссылка, если КФО определить не удалось.
//
Функция КФОСтрокиПоЛицевомуСчету(КФОПоСчетам, ЛицевойСчет)
Для Каждого Код Из КодыПоискаРебенка(ЛицевойСчет) Цикл
КФО = КФОПоСчетам[Код];
Если КФО <> Неопределено Тогда
Возврат КФО;
КонецЕсли;
КонецЦикла;
Возврат Перечисления.КВД.ПустаяСсылка();
КонецФункции
// Возвращает лицевые счета по их номерам.
//
// Параметры:
// Коды - Массив из Строка - номера лицевых счетов (варианты написания).
//
// Возвращаемое значение:
// Соответствие из Строка, СправочникСсылка.ЛицевыеСчета - лицевые счета по номерам.
//
Функция ЛицевыеСчетаПоКодам(Коды)
Результат = Новый Соответствие;
Если Коды.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЛицевыеСчета.Код КАК Код,
| ЛицевыеСчета.Ссылка КАК Ссылка
|ИЗ
| Справочник.ЛицевыеСчета КАК ЛицевыеСчета
|ГДЕ
| НЕ ЛицевыеСчета.ПометкаУдаления
| И ЛицевыеСчета.Код В (&Коды)";
Запрос.УстановитьПараметр("Коды", Коды);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Результат.Вставить(СокрЛП(Выборка.Код), Выборка.Ссылка);
КонецЦикла;
Возврат Результат;
КонецФункции
// Определяет лицевой счёт ребёнка по тексту назначения платежа.
// Лицевой счёт идёт после последнего вхождения "л/с" и может начинаться с буквы "Х" или "Г".
//
@@ -173,11 +173,12 @@
Возврат ТабличныйДокумент;
КонецЕсли;
// Макет общий для обоих документов: реестр у ЦБ и у сада одинаковый,
// поэтому сопровождается в одном месте - общем макете.
Макет = ПолучитьОбщийМакет("ПС_РеестрПлатежей");
Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПС_ПринятиеПоступившихПлатежейИзЦБ") Тогда
Макет = Документы.ПС_ПринятиеПоступившихПлатежейИзЦБ.ПолучитьМакет("РеестрПлатежей");
Учреждение = ДокументОбъект.Организация;
Иначе
Макет = Документы.ПС_ПередачаПоступившихПлатежейВУчреждения.ПолучитьМакет("РеестрПлатежей");
Учреждение = ДокументОбъект.Учреждение;
КонецЕсли;
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="a15c7128-6734-4d43-abc3-f62aca65c50f">
<name>ПС_РеестрПлатежей</name>
<synonym>
<key>ru</key>
<value>Реестр платежей</value>
</synonym>
</mdclass:CommonTemplate>
@@ -28,7 +28,7 @@
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
<defaultRoles>Role.ПС_ОсновнаяРоль</defaultRoles>
<version>1.0.1</version>
<version>1.0.2</version>
<defaultLanguage>Language.Русский</defaultLanguage>
<interfaceCompatibilityMode>TaxiEnableVersion8_2</interfaceCompatibilityMode>
<languages uuid="2f74bb63-c643-4692-af13-1f99a56719fb" extendedConfigurationObject="4b1b900f-9c8f-4b2b-8292-3a9a6db40715">
@@ -54,6 +54,9 @@
<commonPictures>CommonPicture.Сумма</commonPictures>
<roles>Role.ПС_ОсновнаяРоль</roles>
<roles>Role.БазовыеПраваБГУ</roles>
<roles>Role.ПС_ЧтениеРодительскойПлаты</roles>
<roles>Role.ПС_ЗаписьРодительскойПлаты</roles>
<commonTemplates>CommonTemplate.ПС_РеестрПлатежей</commonTemplates>
<commonModules>CommonModule.ПС_УчетРодительскойПлаты</commonModules>
<commonModules>CommonModule.ПС_РазборПлатежейПоРодительскойПлате</commonModules>
<commonModules>CommonModule.ВариантыОтчетовПереопределяемый</commonModules>
@@ -6,7 +6,7 @@
<languageInfo>
<id>ru</id>
<code>Русский</code>
<description>Русский</description>
<description/>
</languageInfo>
</languageSettings>
<columns>
@@ -389,7 +389,7 @@
</c>
<c>
<c>
<f>15</f>
<f>20</f>
<parameter>ДатаПлатежа</parameter>
</c>
</c>
@@ -407,7 +407,7 @@
<columnsID>c4c71b73-7783-4619-abbc-ece4486e4bdb</columnsID>
<c>
<c>
<f>20</f>
<f>21</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -418,14 +418,14 @@
</c>
<c>
<c>
<f>21</f>
<f>22</f>
<parameter>ОбщаяСумма</parameter>
</c>
</c>
</row>
</rowsItem>
<templateMode>true</templateMode>
<defaultFormatIndex>22</defaultFormatIndex>
<defaultFormatIndex>23</defaultFormatIndex>
<height>7</height>
<vgRows>7</vgRows>
<namedItem xsi:type="NamedItemCells">
@@ -478,7 +478,7 @@
<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>198</width>
<width>846</width>
</format>
<format>
<width>81</width>
@@ -553,6 +553,19 @@
</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>
@@ -436,7 +436,7 @@
<value>Извещение ф. 0504805 (103н) — получатель</value>
</synonym>
</templates>
<templates uuid="b7cee754-65c6-4a53-91aa-84068f8790e7">
<templates uuid="6b0f3cb3-1801-4f91-a94e-91cd8974a125">
<name>РеестрПлатежей</name>
<synonym>
<key>ru</key>
@@ -6,7 +6,7 @@
<languageInfo>
<id>ru</id>
<code>Русский</code>
<description>Русский</description>
<description/>
</languageInfo>
</languageSettings>
<columns>
@@ -389,7 +389,7 @@
</c>
<c>
<c>
<f>15</f>
<f>20</f>
<parameter>ДатаПлатежа</parameter>
</c>
</c>
@@ -407,7 +407,7 @@
<columnsID>c4c71b73-7783-4619-abbc-ece4486e4bdb</columnsID>
<c>
<c>
<f>20</f>
<f>21</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -418,14 +418,14 @@
</c>
<c>
<c>
<f>21</f>
<f>22</f>
<parameter>ОбщаяСумма</parameter>
</c>
</c>
</row>
</rowsItem>
<templateMode>true</templateMode>
<defaultFormatIndex>22</defaultFormatIndex>
<defaultFormatIndex>23</defaultFormatIndex>
<height>7</height>
<vgRows>7</vgRows>
<namedItem xsi:type="NamedItemCells">
@@ -478,7 +478,7 @@
<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>198</width>
<width>846</width>
</format>
<format>
<width>81</width>
@@ -553,6 +553,19 @@
</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>
@@ -0,0 +1,132 @@
<?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>
<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>
</object>
<object>
<name>Document.ПС_ПринятиеПоступившихПлатежейИзЦБ</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>View</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>
</object>
<object>
<name>Document.НачислениеРодительскойПлаты</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>View</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>
</object>
<object>
<name>AccumulationRegister.ПС_ВзаиморасчетыПоРодительскойПлате</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>Update</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>
</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>