Показать сообщение отдельно
Старый 26.04.2018, 16:49   #2  
Cathome is offline
Cathome
Участник
Аватар для Cathome
 
54 / 23 (1) +++
Регистрация: 10.11.2010
Адрес: Москва
В общем, отвечу на свой вопрос сама.
На мой взгляд, декларация работает вообще некорректно (или я не смогла постичь высшего смысла, вложенного в неё Микрософтом).

Если выбрать тип местоположения = по местонахождению недвижимости (281), в диалоге печати подбирается головная организация и независимые подразделения.
Отметив галками необходимого налогоплательщика (в нашем случае, это одно независимое подразделение, где недвижимость), справедливо было бы ожидать, что распечатаются данные по нему. Однако в процессе печати для подбора данных из регистров выбираются все ОКТМО, которые там встречаются, и дальше каким-то образом обрабатываются.

В частности, в классе печати 1-й раздел декларации для данного ОКТМО заполняется в случае, если выполняется проверка наличия 2-3 разделов.
Внутри этой проверки false возвращается только в том случае (не считая отсутствия в регистрах строк из 2 и 3 разделов), если

X++:
if (((taxDeclarationLocation != RAssetTaxDeclarationLocation::DetachedDepartment &&
              taxDeclarationLocation != RAssetTaxDeclarationLocation::ImmovableProperty) ||
             !curVendAccount)                                                            &&
            regQuery.getField(#RCOAD)!= curRCOAD)
        {
            return false;
        }
Переводя на русский язык, если выбранный из регистров код ОКТМО не соответствует тому коду, для которого мы в данный момент печатаем декларацию, класс печати решит, что по нему нет 2-3 разделов, если только мы печатаем по всей организации или не нашли соответствующего этому ОКТМО поставщика.

Т.е. в нашем случае, для печати по местоположению недвижимости в печати отмечается наличие 2 или 3 разделов и заполняется 1 раздел для кодов ОКТМО, которые мы не выбирали.

Непонятно, какой в этом смысл, если непосредственно в методе, набивающем данные для 2 раздела, стоит проверка:

X++:
if (rcoad != curRCOAD || section != '2') //это проверка равенства ОКТМО из регистра
                                         //и ОКТМО, для которого печатаем декларацию
    {
         continue;
    }
Поэтому печать 2 раздела инициализируется, но он ничем не заполняется.

С третьим разделом немного лучше, заполнение 3 раздела проверяется в методе проверки наличия 2-3 разделов до того, как начать заполнять его данными. Но опять же, 3 раздел печатается только по данным выбранного нами в диалоге независимого подразделения.

Потом я подумала, что, раз при печати по местоположению 281 головная организация всё равно выделяется в отдельную декларацию, неплохо бы воспользоваться этим и распечатать её без недвижимости, а не выделять эту самую недвижимость из печати по местонахождению 214 (головной организации). Но не тут-то было. Оказалось, если выбрать в качестве налогоплательщика себя, а не филиал, то выбор ОКТМО, включаемых в одну декларацию, идёт по другой ветке, где все встречающиеся в регистрах ОКТМО включаются в одну декларацию. Т.е. недвижимость попадает в неё, несмотря на то, что мы выбрали местоположение 281. Непонятно, зачем это - если нужно распечатать всё, есть коды 213, 214.

Короче говоря, пришлось подтюнить.
__________________
"казалось бы, зачем виртуализировать виртуализаторы виртуализаторов виртуальных ява-машин, но Оракл было уже не остановить..." © Башорг
За это сообщение автора поблагодарили: Logger (1).