| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
| фармэксперт.учёт:отчёты:torg29 [07032025/ 09:29] – [12. Выделять комиссию в отчете] Олег Поникаренко | фармэксперт.учёт:отчёты:torg29 [29112025/ 11:27] (текущий) – Дописал как считается "Сумма розн НДС" #67592 Рощупкин Олег |
|---|
| ==== Инструкция для пользователя по настройке товарного отчета (форма ТОРГ-29) ==== | ==== Товарный отчет (форма ТОРГ-29) ==== |
| |
| Товарный отчет (форма ТОРГ-29) позволяет пользователю получить информацию о суммовом движении товаров на складе за выбранный период времени. В данной инструкции описаны все возможные настройки отчета, их назначение и правила работы. | Товарный отчет (форма ТОРГ-29) позволяет пользователю получить информацию о суммовом движении товаров на складе за выбранный период времени. В данной инструкции описаны все возможные настройки отчета, их назначение и правила работы. |
| |
| ==== Настройка складов ==== | ==== Настройка складов ==== |
| * **Описание:** Позволяет выбрать один или несколько складов, по которым будет сформирован отчет. | * **Описание:** Позволяет выбрать один или несколько складов, по которым будет сформирован отчет. |
| * **Как настроить:** | * **Как настроить:** |
| * В интерфейсе отчета откройте вкладку "Склад". | * В интерфейсе отчета откройте вкладку "Склад". |
| * Выберите склад(ы) из списка доступных. Для выбора нескольких складов удерживайте клавишу `Ctrl` (или аналогичную для вашей системы) и кликайте по нужным складам. | * Выберите склад(ы) из списка доступных. Для выбора нескольких складов удерживайте клавишу `Ctrl` (или аналогичную для вашей системы) и кликайте по нужным складам. |
| * Если склад не выбран, отчет не будет сформирован (см. проверку в методе `validate`). | * Если склад не выбран, отчет не будет сформирован (см. проверку в методе `validate`). |
| * **Отображение данных при выборе нескольких складов:** | * **Отображение данных при выборе нескольких складов:** |
| * Если выбрано несколько складов, данные по всем выбранным складам агрегируются в единый отчет. | * Если выбрано несколько складов, данные по всем выбранным складам агрегируются в единый отчет. |
| * В шапке отчета в секции "по складу" указываются названия всех выбранных складов, разделенные запятыми (см. метод `_render`, формирование `unitName`). | * В шапке отчета в секции "по складу" указываются названия всех выбранных складов, разделенные запятыми (см. метод `_render`, формирование `unitName`). |
| * Суммы и операции по каждому складу суммируются без разделения по складам в итоговой таблице, если не включена детализация. | * Суммы и операции по каждому складу суммируются без разделения по складам в итоговой таблице, если не включена детализация. |
| * **Особенности:** | * **Особенности:** |
| * Если выбран только один склад, совпадающий с текущим складом пользователя (`cnf()->myUnit()`), появляется дополнительная опция "Добавить данные по локальным складам" (см. ниже). | * Если выбран только один склад, совпадающий с текущим складом пользователя (`cnf()->myUnit()`), появляется дополнительная опция "Добавить данные по локальным складам" (см. ниже). |
| * При выборе нескольких складов детализация по локальным складам недоступна. | * При выборе нескольких складов детализация по локальным складам недоступна. |
| |
| ==== Опция "Добавить данные по локальным складам" ==== | ==== Опция "Добавить данные по локальным складам" ==== |
| * **Описание:** Добавляет в отчет данные по локальным складам, связанным с основным выбранным складом. | * **Описание:** Добавляет в отчет данные по локальным складам, связанным с основным выбранным складом. |
| * **Условие активации:** Доступна только если выбран один склад и он совпадает с текущим складом пользователя (`cnf()->myUnit()`). | * **Условие активации:** Доступна только если выбран один склад и он совпадает с текущим складом пользователя (`cnf()->myUnit()`). |
| * **Как работает:** | * **Как работает:** |
| * При активации этой опции к основному складу автоматически добавляются все локальные склады, указанные в конфигурации (`cnf()->localUnits()`). | * При активации этой опции к основному складу автоматически добавляются все локальные склады, указанные в конфигурации (`cnf()->localUnits()`). |
| * Данные по локальным складам включаются в общий расчет сумм и операций, но не выделяются отдельно в отчете. | * Данные по локальным складам включаются в общий расчет сумм и операций, но не выделяются отдельно в отчете. |
| * **Отображение:** В шапке отчета названия локальных складов добавляются к основному складу через запятую. | * **Отображение:** В шапке отчета названия локальных складов добавляются к основному складу через запятую. |
| |
| ==== Опция "Округлять суммы в отчете до копеек" ==== | ==== Опция "Округлять суммы в отчете до копеек" ==== |
| * **Описание:** Применяет округление всех суммовых значений в отчете до двух знаков после запятой (копеек). | * **Описание:** Применяет округление всех суммовых значений в отчете до двух знаков после запятой (копеек). |
| * **Как работает:** | * **Как работает:** |
| * Если опция включена, метод `roundValuesToKopeika` корректирует значения в структуре `TLineData` (b1, b2, b3, b4, b5 и их аналоги без НДС) так, чтобы итоговые суммы сходились с детализацией по НДС (10%, 20%, без НДС). | * Если опция включена, метод `roundValuesToKopeika` корректирует значения в структуре `TLineData` (b1, b2, b3, b4, b5 и их аналоги без НДС) так, чтобы итоговые суммы сходились с детализацией по НДС (10%, 20%, без НДС). |
| * Округление выполняется с учетом возможных расхождений, распределяя разницу между значениями (см. метод `roundValuesToKopeika`). | * Округление выполняется с учетом возможных расхождений, распределяя разницу между значениями (см. метод `roundValuesToKopeika`). |
| * **Влияние:** | * **Влияние:** |
| * Включение этой опции может привести к небольшим расхождениям в итоговых суммах между столбцами, так как округление применяется к каждому блоку отдельно. | * Включение этой опции может привести к небольшим расхождениям в итоговых суммах между столбцами, так как округление применяется к каждому блоку отдельно. |
| * Без этой опции суммы выводятся с полной точностью, что может привести к значениям с большим количеством знаков после запятой. | * Без этой опции суммы выводятся с полной точностью, что может привести к значениям с большим количеством знаков после запятой. |
| |
| === Вкладка "Временной интервал" === | === Вкладка "Временной интервал" === |
| |
| * **Описание:** Определяет период, за который формируется отчет. | * **Описание:** Определяет период, за который формируется отчет. |
| * **Как настроить:** | * **Как настроить:** |
| * Откройте вкладку "Временной интервал". | * Откройте вкладку "Временной интервал". |
| * Укажите начальную дату (`left`) и конечную дату (`right`) в соответствующих полях. | * Укажите начальную дату (`left`) и конечную дату (`right`) в соответствующих полях. |
| * По умолчанию начальная дата — текущая дата минус один месяц, конечная дата — текущая дата (28 февраля 2025 года). | * По умолчанию начальная дата — текущая дата минус один месяц, конечная дата — текущая дата (28 февраля 2025 года). |
| * **Как работает:** | * **Как работает:** |
| * Все операции, выполненные в период между начальной и конечной датами (включительно), включаются в отчет. | * Все операции, выполненные в период между начальной и конечной датами (включительно), включаются в отчет. |
| * Даты используются в SQL-запросах (например, `po.addDate>=? and po.addDate<=?`). | * Даты используются в SQL-запросах (например, `po.addDate>=? and po.addDate<=?`). |
| * **Отображение:** | * **Отображение:** |
| * В шапке отчета указывается отчетный период в формате "с DD.MM.YYYY по DD.MM.YYYY" (см. метод `headerNumberBlock`). | * В шапке отчета указывается отчетный период в формате "с DD.MM.YYYY по DD.MM.YYYY" (см. метод `headerNumberBlock`). |
| * Остаток на начало периода выводится в строке "Остаток на начало DD.MM.YYYY". | * Остаток на начало периода выводится в строке "Остаток на начало DD.MM.YYYY". |
| |
| === Вкладка "Настройка столбцов" === | === Вкладка "Настройка столбцов" === |
| |
| * **Описание:** Позволяет выбрать, какие столбцы будут отображаться в отчете, и определяет порядок их формирования. | * **Описание:** Позволяет выбрать, какие столбцы будут отображаться в отчете, и определяет порядок их формирования. |
| | * **Доступные столбцы:** Список столбцов задается в `pList` в конструкторе `torg29Report`: |
| * **Доступные столбцы:** Список столбцов задается в `pList` в конструкторе `torg29Report`: | - "Опт Без НДС" — оптовая сумма без учета НДС. |
| | |
| - "Опт Без НДС" — оптовая сумма без учета НДС. | |
| - "Опт с НДС" — оптовая сумма с учетом НДС. | - "Опт с НДС" — оптовая сумма с учетом НДС. |
| - "Сумма опт НДС" — разница между оптовой суммой с НДС и без НДС. | - "Сумма опт НДС" — разница между оптовой суммой с НДС и без НДС. |
| - "Розн Без НДС" (или "Продажа опт Без НДС") — розничная сумма без НДС (название зависит от конфигурации `unit.orderIncomeProvider`). | - "Розн Без НДС" (или "Продажа опт Без НДС") — розничная сумма без НДС (название зависит от конфигурации `unit.orderIncomeProvider`). |
| - "Розн с НДС" (или "Продажа опт с НДС") — розничная сумма с НДС. | - "Розн с НДС" (или "Продажа опт с НДС") — розничная сумма с НДС. |
| - "Сумма розн НДС" — разница между розничной суммой с НДС и без НДС. | - "Сумма розн НДС" — разница между розничной суммой с НДС и без НДС. Столбец показывает сумму НДС, рассчитанную от розничной стоимости товара на основе выбранной ставки НДС. Программа выбирает ставку НДС автоматически. Если включён функционал **[[фармэксперт.учёт:номенклатурный_каталог:розничный_ндс|розничного НДС]]**, используются ставки, указанные в Номенклатурном каталоге. Если функционал не задействован, применяется оптовая ставка НДС из накладной поставщика. Для позиций со ставками 5% и 7% оптовая ставка устанавливается равной 0, так как эти ставки не являются общеустановленными для расчёта НДС. |
| - "Наценка от Без НДС" — разница между розничной суммой с НДС и оптовой без НДС. | - "Наценка от Без НДС" — разница между розничной суммой с НДС и оптовой без НДС. |
| - "Наценка от с НДС" — разница между розничной суммой с НДС и оптовой с НДС. | - "Наценка от с НДС" — разница между розничной суммой с НДС и оптовой с НДС. |
| - "Наценка от Без НДС в %" — процент наценки от оптовой суммы без НДС. | - "Наценка от Без НДС в %" — процент наценки от оптовой суммы без НДС. |
| - "Наценка от с НДС в %" — процент наценки от оптовой суммы с НДС. | - "Наценка от с НДС в %" — процент наценки от оптовой суммы с НДС. |
| * **Как настроить:** | * **Как настроить:** |
| * Откройте вкладку "Настройка столбцов". | * Откройте вкладку "Настройка столбцов". |
| * Отметьте галочками столбцы, которые нужно включить в отчет. | * Отметьте галочками столбцы, которые нужно включить в отчет. |
| * Порядок столбцов в интерфейсе соответствует порядку их вывода в отчете (слева направо). | * Порядок столбцов в интерфейсе соответствует порядку их вывода в отчете (слева направо). |
| * **Правила работы:** | * **Правила работы:** |
| * Минимум один столбец должен быть выбран, иначе отчет не сформируется (проверка в `validate`). | * Минимум один столбец должен быть выбран, иначе отчет не сформируется (проверка в `validate`). |
| * Выбранные столбцы отображаются в таблице в порядке их следования в `pList`. | * Выбранные столбцы отображаются в таблице в порядке их следования в `pList`. |
| * Данные для каждого столбца рассчитываются в методе `line` на основе структуры `TLineData` (b1, nb1 и др.). | * Данные для каждого столбца рассчитываются в методе `line` на основе структуры `TLineData` (b1, nb1 и др.). |
| * **Отображение:** | * **Отображение:** |
| * В заголовке таблицы столбцы группируются по блокам: "Товар (весь)", "ЖНВЛС" (если включена детализация), "НДС 10", "НДС 20%", "Без НДС" (см. метод `header`). | * В заголовке таблицы столбцы группируются по блокам: "Товар (весь)", "ЖНВЛС" (если включена детализация), "НДС 10", "НДС 20%", "Без НДС" (см. метод `header`). |
| * Каждый блок повторяет выбранные столбцы в указанном порядке. | * Каждый блок повторяет выбранные столбцы в указанном порядке. |
| |
| === Вкладка "Настройка детализации" === | === Вкладка "Настройка детализации" === |
| |
| ==== 1. Выводить детализацию по ЖНВЛС ==== | ==== 1. Выводить детализацию по ЖНВЛС ==== |
| * **Описание:** Добавляет блок "ЖНВЛС" в таблицу, показывающий суммы для товаров, отнесенных к ЖНВЛС (жизненно необходимые и важнейшие лекарственные средства). | * **Описание:** Добавляет блок "ЖНВЛС" в таблицу, показывающий суммы для товаров, отнесенных к ЖНВЛС (жизненно необходимые и важнейшие лекарственные средства). |
| * **Как работает:** | * **Как работает:** |
| * Если включено, в таблице появляется дополнительный блок столбцов "ЖНВЛС" с выбранными столбцами из "Настройка столбцов". | * Если включено, в таблице появляется дополнительный блок столбцов "ЖНВЛС" с выбранными столбцами из "Настройка столбцов". |
| * Данные для ЖНВЛС извлекаются из поля `pdGNVLS.value` в SQL-запросах (например, `sum(case when pdGNVLS.value=1 then ...)`). | * Данные для ЖНВЛС извлекаются из поля `pdGNVLS.value` в SQL-запросах (например, `sum(case when pdGNVLS.value=1 then ...)`). |
| * **Отображение:** Блок "ЖНВЛС" следует за блоком "Товар (весь)". | * **Отображение:** Блок "ЖНВЛС" следует за блоком "Товар (весь)". |
| | |
| ==== 2. Выводить детализацию по НДС ==== | ==== 2. Выводить детализацию по НДС ==== |
| * **Описание:** Добавляет блоки "НДС 10%", "НДС 20%" и "Без НДС" в таблицу, разделяя суммы по ставкам НДС. | * **Описание:** Добавляет блоки "НДС 10%", "НДС 20%" и "Без НДС" в таблицу, разделяя суммы по ставкам НДС. |
| * **Как работает:** | * **Как работает:** |
| * Если включено, данные делятся на три категории в зависимости от ставки НДС (10%, 18/20%, без НДС), определяемой полем `detailNDS` или `detailNDSSale`. | * Если включено, данные делятся на три категории в зависимости от ставки НДС (10%, 18/20%, без НДС), определяемой полем `detailNDS` или `detailNDSSale`. |
| * Расчет выполняется в SQL-запросах с условиями вроде `sum(case when %7=10 then ...)` (см. методы `bDetailSale`, `bDetailCashlessDoc` и др.). | * Расчет выполняется в SQL-запросах с условиями вроде `sum(case when %7=10 then ...)` (см. методы `bDetailSale`, `bDetailCashlessDoc` и др.). |
| * **Отображение:** Блоки следуют за "Товар (весь)" и "ЖНВЛС" (если включен). | * **Отображение:** Блоки следуют за "Товар (весь)" и "ЖНВЛС" (если включен). |
| | |
| ==== 3. Распределение сумм по ставкам НДС при детализации по НДС ==== | ==== 3. Распределение сумм по ставкам НДС при детализации по НДС ==== |
| * **Описание:** Определяет, как распределяются суммы по ставкам НДС в детализированных данных. | * **Описание:** Определяет, как распределяются суммы по ставкам НДС в детализированных данных. |
| | |
| * **Варианты:** | * **Варианты:** |
| - Розничные продажи по РознНДС операции, остальные операции по ОптНДС: | - Розничные продажи по РознНДС операции, остальные операции по ОптНДС: |
| * Для розничных продаж используется НДС из `poNDS.nds`, для остальных операций — `pdNDSPercent.value`. | * Для розничных продаж используется НДС из `poNDS.nds`, для остальных операций — `pdNDSPercent.value`. |
| - Распределение по Розн.НДС на момент операции: | - Распределение по Розн.НДС на момент операции: |
| * Используется `po.data3` (НДС на момент операции) для всех операций. | * Используется `po.data3` (НДС на момент операции) для всех операций. |
| * **Как работает:** | * **Как работает:** |
| * Выбранный вариант влияет на переменные `detailNDS` и `detailNDSSale` в методе `_render`. | * Выбранный вариант влияет на переменные `detailNDS` и `detailNDSSale` в методе `_render`. |
| * Эти переменные определяют логику условий в SQL-запросах. | * Эти переменные определяют логику условий в SQL-запросах. |
| * **Отображение:** Влияет на значения в блоках "НДС 10%", "НДС 20%" и "Без НДС". | * **Отображение:** Влияет на значения в блоках "НДС 10%", "НДС 20%" и "Без НДС". |
| | |
| | [[фармэксперт.учёт:отчёты:prod_kkm#расчёт_ндс_в_соответствии_с_офд|Расчёт НДС при продаже через ККМ в соответствии с ОФД]] |
| |
| ==== 4. Выводить детализацию по операциям ==== | ==== 4. Выводить детализацию по операциям ==== |
| * **Описание:** Включает разбивку операций по дням или документам в зависимости от типа операции. | * **Описание:** Включает разбивку операций по дням или документам в зависимости от типа операции. |
| * **Как работает:** | * **Как работает:** |
| * Если включено, для каждого типа операции (например, продажи, приход, расход) добавляются строки с детализацией (см. методы `bDetailSale`, `detailOperationLavel1` и др.). | * Если включено, для каждого типа операции (например, продажи, приход, расход) добавляются строки с детализацией (см. методы `bDetailSale`, `detailOperationLavel1` и др.). |
| * Без этой опции данные агрегируются по группам без разбивки. | * Без этой опции данные агрегируются по группам без разбивки. |
| * **Отображение:** Под каждой группой операций появляются строки с датой, номером документа и суммами. | * **Отображение:** Под каждой группой операций появляются строки с датой, номером документа и суммами. |
| |
| ==== 5. При отключенной детализации выделять скидку в продажах ==== | ==== 5. При отключенной детализации выделять скидку в продажах ==== |
| * **Описание:** Выделяет сумму скидок в блоке продаж, даже если детализация по операциям отключена. | * **Описание:** Выделяет сумму скидок в блоке продаж, даже если детализация по операциям отключена. |
| * **Как работает:** | * **Как работает:** |
| * Если включено, скидки рассчитываются отдельно в методе `bDetailDiscount` и добавляются как отдельные строки. | * Если включено, скидки рассчитываются отдельно в методе `bDetailDiscount` и добавляются как отдельные строки. |
| * **Отображение:** Скидки отображаются в блоке "Расход. Продажа" с комментарием. | * **Отображение:** Скидки отображаются в блоке "Расход. Продажа" с комментарием. |
| ==== 6. Номера накладных поставщика в детализации приходных накладных ==== | ==== 6. Номера накладных поставщика в детализации приходных накладных ==== |
| * **Описание:** Включает номера накладных поставщика в строках детализации приходных накладных. | * **Описание:** Включает номера накладных поставщика в строках детализации приходных накладных. |
| * **Как работает:** | * **Как работает:** |
| * Если включено, в методе `detailOperationLavel2` для операции типа 1 (приход) используется поле `x.internalNumber` вместо `d.number`. | * Если включено, в методе `detailOperationLavel2` для операции типа 1 (приход) используется поле `x.internalNumber` вместо `d.number`. |
| * **Отображение:** В столбце "номер" отображается номер накладной поставщика. | * **Отображение:** В столбце "номер" отображается номер накладной поставщика. |
| | |
| ==== 7. Внутренние номера накладных в детализации приходных накладных ==== | ==== 7. Внутренние номера накладных в детализации приходных накладных ==== |
| * **Описание:** Включает внутренние номера накладных в строках детализации приходных накладных. | * **Описание:** Включает внутренние номера накладных в строках детализации приходных накладных. |
| * **Как работает:** | * **Как работает:** |
| * Если включено, используется поле `d.number`. Если включены оба варианта (поставщика и внутренние), номера комбинируются через "/". | * Если включено, используется поле `d.number`. Если включены оба варианта (поставщика и внутренние), номера комбинируются через "/". |
| * **Отображение:** В столбце "номер" отображается внутренний номер или комбинация номеров. | * **Отображение:** В столбце "номер" отображается внутренний номер или комбинация номеров. |
| | |
| ==== 8. Номера КСФ при детализации возвратов поставщикам ==== | ==== 8. Номера КСФ при детализации возвратов поставщикам ==== |
| * **Описание:** Включает номера корректировочных счетов-фактур (КСФ) в детализации возвратов. | * **Описание:** Включает номера корректировочных счетов-фактур (КСФ) в детализации возвратов. |
| * **Как работает:** | * **Как работает:** |
| * Если включено, в методе `detailOperationLavel2` для операции типа 6 используется поле `cashlessAttr.corrSchetFact`. | * Если включено, в методе `detailOperationLavel2` для операции типа 6 используется поле `cashlessAttr.corrSchetFact`. |
| * **Отображение:** В столбце "номер" отображается номер КСФ вместо стандартного номера документа. | * **Отображение:** В столбце "номер" отображается номер КСФ вместо стандартного номера документа. |
| | |
| ==== 9. Не группировать по поставщикам в детализации приходных накладных ==== | ==== 9. Не группировать по поставщикам в детализации приходных накладных ==== |
| * **Описание:** Отключает группировку приходных накладных по поставщикам. | * **Описание:** Отключает группировку приходных накладных по поставщикам. |
| * **Как работает:** | * **Как работает:** |
| * Если включено, метод `detailOperationLavel1` для операции типа 1 вызывает `detailOperationLavel2` напрямую, минуя группировку. | * Если включено, метод `detailOperationLavel1` для операции типа 1 вызывает `detailOperationLavel2` напрямую, минуя группировку. |
| * **Отображение:** Каждая накладная отображается отдельной строкой без промежуточных итогов по поставщикам. | * **Отображение:** Каждая накладная отображается отдельной строкой без промежуточных итогов по поставщикам. |
| | |
| ==== 10. Не детализировать по накладным в блоке Приходная накладная ==== | ==== 10. Не детализировать по накладным в блоке Приходная накладная ==== |
| * **Описание:** Убирает разбивку по накладным в блоке приходных операций. | * **Описание:** Убирает разбивку по накладным в блоке приходных операций. |
| * **Как работает:** | * **Как работает:** |
| * Если включено, метод `detailOperationLavel2` для операции типа 1 не вызывается, и данные агрегируются. | * Если включено, метод `detailOperationLavel2` для операции типа 1 не вызывается, и данные агрегируются. |
| * **Отображение:** Блок "Приходная накладная" содержит только общие суммы без детализации. | * **Отображение:** Блок "Приходная накладная" содержит только общие суммы без детализации. |
| | |
| ==== 11. Исключать блоки с галками ==== | ==== 11. Исключать блоки с галками ==== |
| * **Описание:** Позволяет исключить из отчета определенные блоки операций. | * **Описание:** Позволяет исключить из отчета определенные блоки операций. |
| * **Варианты:** | * **Варианты:** |
| * "Приход. Возврат продажи" | * "Приход. Возврат продажи" |
| * "Приход. Излишки" | * "Приход. Излишки" |
| * "Расход. Продажа" | * "Расход. Продажа" |
| * "Расход. Списание" | * "Расход. Списание" |
| * "Прочие. Переоценка" | * "Прочие. Переоценка" |
| * "Прочие. Разукомплектация" | * "Прочие. Разукомплектация" |
| * **Как работает:** | * **Как работает:** |
| * Отмеченные блоки исключаются из расчета в методе `_render` (проверка `excludeBlock.contains()`). | * Отмеченные блоки исключаются из расчета в методе `_render` (проверка `excludeBlock.contains()`). |
| * Исключение может привести к расхождению итогов с содержимым отчета (предупреждение в интерфейсе). | * Исключение может привести к расхождению итогов с содержимым отчета (предупреждение в интерфейсе). |
| * **Отображение:** Исключенные блоки не появляются в таблице. | * **Отображение:** Исключенные блоки не появляются в таблице. |
| | |
| ==== 12. Выделять комиссию в отчете ==== | ==== 12. Выделять комиссию в отчете ==== |
| * **Описание:** Разделяет отчет на две части: без комиссии и по комиссии. | * **Описание:** Разделяет отчет на две части: без комиссии и по комиссии. |
| * **Как работает:** | * **Как работает:** |
| * Если включено, отчет формируется дважды: | * Если включено, отчет формируется дважды: |
| * Сначала с фильтром `pdCommission.value=0` (без комиссии). | * Сначала с фильтром `pdCommission.value=0` (без комиссии). |
| * Затем с фильтром `pdCommission.value!=0` (по комиссии). | * Затем с фильтром `pdCommission.value!=0` (по комиссии). |
| * Оба отчета выводятся последовательно с разделителем (`hr()`). | * Оба отчета выводятся последовательно с разделителем (`hr()`). |
| * **Отображение:** Заголовок отчета дополняется "(без комиссии)" или "(по комиссии)". | * **Отображение:** Заголовок отчета дополняется "(без комиссии)" или "(по комиссии)". |
| |
| === Вкладка "Подписи" === | === Вкладка "Подписи" === |
| |
| * **Описание:** Позволяет настроить подписи и ориентацию печати. | * **Описание:** Позволяет настроить подписи и ориентацию печати. |
| * **Опции:** | * **Опции:** |
| * Верхняя подпись: Добавляет блок подписей в начало отчета (материально-ответственное лицо и заведующая/бухгалтер). | * Верхняя подпись: Добавляет блок подписей в начало отчета (материально-ответственное лицо и заведующая/бухгалтер). |
| * Нижняя подпись: Добавляет блок подписей в конец отчета (руководитель, материально-ответственное лицо, бухгалтер/заведующая). | * Нижняя подпись: Добавляет блок подписей в конец отчета (руководитель, материально-ответственное лицо, бухгалтер/заведующая). |
| * Ориентация печати: Выбор между книжной (Portrait) и альбомной (Landscape) ориентацией. | * Ориентация печати: Выбор между книжной (Portrait) и альбомной (Landscape) ориентацией. |
| * **Как работает:** | * **Как работает:** |
| * Подписи формируются в методах `printTopSignBlock` и `printBottomSignBlock` с использованием данных из конфигурации (`unit.my.somebodyPersonFIO`, `unit.my.rukovod` и др.). | * Подписи формируются в методах `printTopSignBlock` и `printBottomSignBlock` с использованием данных из конфигурации (`unit.my.somebodyPersonFIO`, `unit.my.rukovod` и др.). |
| * Ориентация задается через `defaultPrinterOrientation`. | * Ориентация задается через `defaultPrinterOrientation`. |
| * **Отображение:** | * **Отображение:** |
| * Верхняя подпись: перед таблицей. | * Верхняя подпись: перед таблицей. |
| * Нижняя подпись: после таблицы с указанием количества приложенных документов (`docCount`). | * Нижняя подпись: после таблицы с указанием количества приложенных документов (`docCount`). |
| |
| === Вкладка "Тип позиций" === | === Вкладка "Тип позиций" === |
| |
| * **Описание:** Фильтрует данные по типу позиций (Мираптек и маркировка). | * **Описание:** Фильтрует данные по типу позиций (Мираптек и маркировка). |
| * **Опции:** | * **Опции:** |
| * Мираптек: | * Мираптек: |
| * "Все позиции" — без фильтрации. | * "Все позиции" — без фильтрации. |
| * "Кроме Мираптек" — исключает позиции с `pdMiraptek.value=1`. | * "Кроме Мираптек" — исключает позиции с `pdMiraptek.value=1`. |
| * "Только Мираптек" — включает только позиции с `pdMiraptek.value=1`. | * "Только Мираптек" — включает только позиции с `pdMiraptek.value=1`. |
| * Маркировка: | * Маркировка: |
| * Условие фильтрации задается через `statementMarked().condition` (например, по `pdMark.value`). | * Условие фильтрации задается через `statementMarked().condition` (например, по `pdMark.value`). |
| * **Как работает:** | * **Как работает:** |
| * Фильтры применяются в SQL-запросах через условия `mirAptek` и `markedCondition`. | * Фильтры применяются в SQL-запросах через условия `mirAptek` и `markedCondition`. |
| * **Отображение:** Влияет на выборку данных, но не выделяется отдельно в отчете. | * **Отображение:** Влияет на выборку данных, но не выделяется отдельно в отчете. |
| |
| === Правила и рекомендации === | === Правила и рекомендации === |