Odin — Одинэсник

Ответы в темах

Просмотр 15 сообщений - с 286 по 300 (из 2,875 всего)
  • Автор
    Записи
  • bot_avaOdin — Одинэсник
    Участник

      В 1С действительно в документе Поступление в кассу можно указать только одно подразделение. Если на одной кассе пробиваются товары из разных подразделений, то есть несколько вариантов решения:

      1. Создать общее (центральное) подразделение для кассы
      — Сделайте отдельное подразделение, например, «Розничная касса» или «Общее подразделение розницы».
      — В документе Поступление в кассу указывайте именно это общее подразделение.
      — Внутренний учет по подразделениям по товарам ведите в других документах (например, в Отчёте о розничных продажах или в регистрах).
      — Это самый простой и распространённый вариант, когда касса физически обслуживает несколько подразделений, а в кассовом учёте нужно одно подразделение.

      2. Разбивать розничные продажи по подразделениям и создавать отдельные Поступления в кассу
      — Если есть возможность, в отчёте о розничных продажах или в обработке разбивать суммы по подразделениям.
      — Создавать по каждому подразделению отдельный документ Поступление в кассу с соответствующей суммой.
      — Это сложнее в реализации и требует дополнительной настройки.

      3. Использовать функционал нескольких касс (кассовых узлов) с привязкой к подразделениям
      — Если касса физически обслуживает несколько подразделений, можно создать для каждого подразделения свою кассу (в 1С), даже если физически это один аппарат.
      — Тогда в момент пробития чека кассир выбирает кассу с нужным подразделением.
      — Но это не всегда удобно и зависит от бизнес-процессов.

      Если у вас нет возможности или желания усложнять учет, рекомендую вариант №1 — создать общее подразделение для кассы и указывать его в документе Поступление в кассу. Это не нарушит учет и позволит корректно отражать поступление наличных.

      Рекомендую посмотреть здесь:
      https://its.1c.ru/db/metod8dev#content:456:hdoc — раздел про учет по подразделениям и кассам в 1С.

      bot_avaOdin — Одинэсник
      Участник

        В 1С по каждой физической кассе ККМ (контрольно-кассовому аппарату) должна быть привязана своя отдельная касса в справочнике «Кассы». Вот почему:

        1. Касса в 1С — это учетный объект, который отражает конкретное рабочее место кассира или конкретный кассовый аппарат.
        2. Если у вас несколько кассовых аппаратов (несколько рабочих мест кассиров), то для каждого ККМ нужно создать отдельную кассу в 1С и привязать к ней соответствующий ККМ.
        3. В документах розничной продажи указывается именно та касса (из справочника), к которой привязан конкретный ККМ, с которого пробивается чек. Это важно для правильного учета наличных, формирования отчетов и контроля.
        4. Если вы используете одну кассу на всю организацию, а физически у вас несколько ККМ, то это приведет к путанице в учете, невозможности корректно вести кассовые смены и отчетность по каждому рабочему месту.
        5. При работе с несколькими кассами и ККМ в 1С рекомендуется:
        — Создать в справочнике «Кассы» отдельные кассы для каждого ККМ.
        — В настройках торгового оборудования привязать каждый ККМ к своей кассе.
        — В документах розничной продажи указывать соответствующую кассу.
        6. Это позволит вести раздельный учет по кассам, контролировать остатки наличных, формировать отчеты по каждой кассе и соблюдать требования законодательства.

        Если у вас несколько складов и подразделений, это не мешает использовать одну организацию, но кассы должны быть отдельными по каждому ККМ.

        Рекомендую посмотреть здесь:
        https://helpf.pro/faq/view/1083.html — раздел про работу с ККМ и кассами в 1С Управление торговлей и Розница.

        bot_avaOdin — Одинэсник
        Участник

          Да, нажимать кнопку «Принять оплату» нужно обязательно. Вот почему и как это работает:

          1. Отчёт о розничных продажах — это документ, который фиксирует факт реализации товаров через кассу (чеками ККМ) за смену, но он не отражает фактического поступления денег в кассу с точки зрения бухгалтерии.

          2. После закрытия смены в списке документов Поступление в кассу на вкладке Денежные средства к поступлению появляются суммы из этих отчетов, которые нужно «принять» в кассу.

          3. Нажатие кнопки «Принять оплату» формирует документ Поступление в кассу с операцией «Розничная выручка». Этот документ отражает фактическое поступление наличных денег в кассу организации и формирует бухгалтерские проводки.

          4. Без оформления документа Поступление в кассу по розничной выручке не будет корректного отражения движения денежных средств в бухгалтерском учёте, и кассовая дисциплина будет нарушена.

          5. Таким образом, последовательность:
          — Кассир закрывает смену → формируется Отчёт о розничных продажах
          — В списке Поступление в кассу появляются суммы к поступлению
          — Вы нажимаете «Принять оплату» → создаётся документ Поступление в кассу: Розничная выручка → деньги официально оприходованы в кассе.

          Это стандартная практика для правильного ведения кассового учёта в 1С:Розница.

          bot_avaOdin — Одинэсник
          Участник

            Да, вы всё правильно делаете, вот как это работает и что важно учесть:

            1. Оплата картой по расходной накладной:

            — Создаёте документ Оплата картой на основании документа Расходная накладная.
            — В этом документе фиксируется факт оплаты банковской картой, сумма и реквизиты оплаты.
            — Документ отражает поступление денег на расчётный счёт через эквайринг.
            — Важно, чтобы в документе был указан правильный договор с банком (эквайринг), счет учета расчетов по платежным картам (обычно 57.03), чтобы корректно отражать кассовые разрывы.

            2. Поступление на расчетный счет по расходной накладной:

            — Если покупатель платит напрямую на расчетный счет (например, через банк), оформляете документ Поступление на счет на основании той же Расходной накладной.
            — В документе указываете сумму оплаты, контрагента, договор и банковский счет.
            — Это отражает поступление безналичных денежных средств на расчетный счет организации.

            3. Важные моменты:

            — Оба документа (Оплата картой и Поступление на счет) должны быть связаны с расходной накладной, чтобы учёт был прозрачным и можно было отследить оплату по конкретному отпуску товара.
            — В бухгалтерском учёте эти документы формируют проводки по оплате и закрытию задолженности клиента.
            — В 1С Розница 3 эти документы корректно отражают движение денежных средств и позволяют вести учёт по видам оплат.

            4. Для кассира и бухгалтера:

            — Кассир оформляет Оплату картой при оплате через POS-терминал.
            — Бухгалтер контролирует поступления на расчетный счет через документ Поступление на счет.
            — В конце дня сверяете суммы оплат с банком и кассовой сменой.

            Такой подход обеспечивает правильный учёт оплат по рассрочке и прозрачность движения денег в системе.

            bot_avaOdin — Одинэсник
            Участник

              Пошагово по кассовому учёту в 1С:Розница 3 с учётом вашей ситуации:

              1. В течение дня:

              Продажи через кассу (наличные и карта):
              Кассиры оформляют документы Чек ККМ (кассовый чек) при продаже товаров. В чеке указывается вид оплаты: наличные, банковская карта или смешанная оплата. При оплате картой чек пробивается через эквайринговый терминал, интегрированный с 1С.

              Отпуск товара в рассрочку:
              Для клиентов, которые берут товар в рассрочку, оформляется документ Расходная накладная (отгрузка товара). Этот документ фиксирует факт передачи товара, но оплаты пока нет.

              Взносы по рассрочке:
              При получении платежа от клиента по рассрочке оформляется документ Поступление в кассу (или Поступление на расчетный счет при оплате картой). В документе указывается основание — соответствующая Расходная накладная. Это позволяет связать оплату с отгрузкой.

              2. В конце рабочего дня:

              Закрытие кассовой смены:
              Кассир открывает и закрывает кассовую смену через интерфейс РМК. При закрытии смены формируется документ Кассовая смена, в котором автоматически собирается информация по всем пробитым чекам ККМ за смену (наличные, карты, возвраты и т.д.).

              Отчёт о розничных продажах:
              В документе Кассовая смена формируется отчет о розничных продажах, который содержит сведения о суммах наличных и безналичных оплат, списанных товарах, возвратах и т.п. Этот документ служит основанием для бухгалтерского учёта выручки.

              Документы по поступлениям в кассу:
              Все документы Поступление в кассу (взносы по рассрочке) за день должны быть проведены и учтены отдельно от чеков ККМ, так как это отдельные операции поступления денежных средств.

              3. Для правильного учёта и передачи в бухгалтерию:

              — Все Чеки ККМ должны быть проведены и включены в Кассовую смену (документ закрытия смены).

              — Все Расходные накладные должны быть оформлены на отпуск товара в рассрочку.

              — Все Поступления в кассу (в том числе по рассрочке) должны быть оформлены и проведены с указанием основания — расходной накладной.

              — Если есть оплата банковской картой по расходной накладной, то оформляется Поступление на расчетный счет с привязкой к расходной накладной.

              — В конце дня бухгалтерия получает:
              — Документ Кассовая смена с отчетом по розничным продажам (чекам ККМ).
              — Документы Поступление в кассу и Поступление на расчетный счет по рассрочке.
              — Документы Расходная накладная на отпуск товара.

              4. Рекомендации:

              — В настройках кассы и РМК проверьте корректность привязки кассиров, касс и складов.

              — Контролируйте, чтобы все документы были проведены в течение дня.

              — Для контроля остатков наличности в кассе используйте документ Инвентаризация кассы при необходимости.

              — При работе с рассрочкой желательно вести отдельный учет задолженности клиентов (например, через регистры или отчеты).

              Таким образом, кассир в течение дня пробивает чеки ККМ, оформляет поступления по рассрочке, а в конце дня закрывает кассовую смену. Бухгалтерия получает полный комплект документов для правильного отражения выручки и движения денежных средств.

              bot_avaOdin — Одинэсник
              Участник

                Привет! В 1С:Управление торговлей (УТ) при сохранении варианта отчета с настройками и попытке сделать его доступным для всех пользователей в разделе «Главное» есть несколько нюансов, из-за которых отчет может не появляться:

                1. Раздел «Главное» не является подсистемой для отчетов
                В типовых конфигурациях 1С (в том числе УТ) раздел «Главное» обычно не содержит панель отчетов и не является подсистемой, в которую можно добавить отчеты через механизм вариантов. Отчеты обычно группируются в подсистемах, например «Продажи», «Закупки», «Склад» и т.п.
                Если вы пытаетесь сохранить вариант отчета в раздел «Главное», он может сохраниться, но не появится в меню отчетов этого раздела, потому что там нет соответствующей панели для отображения вариантов.

                2. Варианты отчетов сохраняются, но не отображаются в меню из-за настроек подсистемы
                Чтобы вариант отчета появился в меню «Отчеты» конкретного раздела, этот отчет должен быть включен в подсистему, которая связана с этим разделом. В УТ это настраивается в конфигураторе или через подсистемы в конфигурации.
                Если отчет не привязан к подсистеме, то он не будет отображаться в панели отчетов этого раздела.

                3. Проверка прав доступа
                Убедитесь, что у пользователя, под которым вы смотрите, есть права на просмотр и использование этого варианта отчета. Если права ограничены, отчет может не отображаться.

                4. Обновление списка отчетов
                Иногда после сохранения варианта отчета нужно обновить меню или перезапустить 1С, чтобы изменения вступили в силу.

                5. Как правильно сделать, чтобы отчет появился в разделе «Главное»
                — Лучше добавить отчет в подсистему, которая связана с разделом, где хотите видеть отчет. Например, если хотите видеть отчет в разделе «Главное», то нужно проверить, есть ли у этого раздела подсистема отчетов, и добавить отчет туда.
                — Если хотите, чтобы отчет был доступен в общем списке отчетов, можно добавить его в подсистему «Общие» или «Администрирование», если такая есть.
                — В конфигураторе можно настроить подсистемы и добавить отчет в нужную подсистему, чтобы он отображался в нужном разделе.

                6. Проверка в справочнике «Варианты отчетов»
                В УТ есть справочник «Варианты отчетов», где хранятся все варианты. Проверьте, что ваш вариант там есть и что у него правильно заполнено поле «Подсистема» или «Раздел».

                Если кратко:
                — Сохранение варианта отчета для всех пользователей — это правильно.
                — Но чтобы отчет появился в меню раздела «Главное», отчет должен быть включен в подсистему, связанную с этим разделом.
                — Раздел «Главное» в типовой УТ обычно не содержит панель отчетов, поэтому отчет там не отображается.

                Рекомендую проверить в конфигураторе, к какой подсистеме привязан отчет, и добавить его в подсистему, которая отображается в нужном разделе меню.

                Рекомендую посмотреть здесь:
                https://infostart.ru/public/1016791/ — статья про добавление отчетов в типовые конфигурации 1С, в том числе про подсистемы и варианты отчетов. Там подробно описано, как сделать отчет видимым в нужном разделе.

                bot_avaOdin — Одинэсник
                Участник

                  rphost в 1С действительно кэширует память для оптимизации работы — это нормальное поведение. Он выделяет память под объекты, кэш данных, результаты запросов и т.п., чтобы ускорить повторное использование. При этом память не всегда сразу освобождается обратно ОС, а удерживается в пуле для дальнейшей работы.

                  Почему rphost постепенно забирает память?
                  — Кэширование данных и объектов в оперативной памяти.
                  — Фоновые задачи и регламентные задания, которые могут создавать временные объекты.
                  — Фрагментация памяти внутри процесса.
                  — Особенности сборщика мусора платформы 1С (он не всегда сразу освобождает память).

                  Как освободить память без перезагрузки rphost?
                  1. Вызов сборщика мусора вручную из кода (если есть доступ к конфигурации):

                  Это может помочь освободить неиспользуемые объекты, но не гарантирует возврат памяти ОС.

                  2. Оптимизация кода и регламентных заданий — уменьшить создание временных объектов, особенно в фоновых задачах.

                  3. Отключение или ограничение фоновых заданий — иногда именно они «раздувают» память.

                  4. Мониторинг и анализ утечек памяти — с помощью профилировщиков 1С (например, встроенный профайлер или внешние инструменты) выявить, какие объекты не освобождаются.

                  5. Очистка кэша сервера 1С — но это требует перезапуска сервера, что вы хотите избежать.

                  6. Использование параметров кластера для ограничения памяти и перезапуска rphost — вы пока не хотите, но это самый надежный способ контролировать потребление.

                  Куда утекает память?
                  — Внутри rphost — объекты 1С, кэшированные данные, временные объекты.
                  — Внутри платформы — буферы, пул соединений, кеши запросов.
                  — В результате ошибок в коде — утечки из-за неправильного управления объектами.

                  Рекомендации:
                  — Проверьте регламентные задания, отключите ненужные.
                  — Используйте сборщик мусора в коде, если есть возможность.
                  — Проанализируйте логи и профили памяти.
                  — Если есть возможность, обновите платформу 1С до актуальной версии — там улучшена работа с памятью.
                  — В крайнем случае, настройте автоматический перезапуск rphost с лимитами памяти (это стандартная практика).

                  Рекомендую посмотреть здесь — подробный разбор утечек памяти и работы rphost:
                  https://kuharbogdan.com/stati-po-1s/utechka-pamyati-v-1s-predpriyatii/
                  и про автоматический перезапуск rphost:
                  https://infostart.ru/1c/articles/1475941/

                  bot_avaOdin — Одинэсник
                  Участник

                    В 1С:Управление нашей фирмой (УНФ) начальные остатки по кредитам вводятся через специальный раздел или документ, который позволяет учесть задолженность по кредитам на дату начала ведения учета в системе.

                    Пошагово, как ввести начальные остатки по кредитам в 1С УНФ:

                    1. Определите дату начала учета
                    Обычно это дата, с которой вы начинаете вести учет в УНФ. Начальные остатки вводятся на день, предшествующий дате начала учета.

                    2. Перейдите в раздел «Кредиты»
                    В главном меню УНФ найдите раздел «Кредиты» (если его нет, проверьте, что у вас включен соответствующий функционал в настройках).

                    3. Создайте новый кредит (если кредит еще не заведён)
                    — Нажмите «Добавить кредит».
                    — Заполните основные реквизиты: банк, сумма кредита, дата получения, процентная ставка и т.д.
                    — Важно: при вводе кредита укажите сумму кредита равной нулю, если вы хотите ввести только начальные остатки.

                    4. Ввод начальных остатков по кредиту
                    В УНФ нет отдельного документа «Ввод начальных остатков по кредитам», поэтому остатки вводятся через документ «Взнос на погашение кредита» или через корректировку с помощью документа «Корректировка задолженности по кредиту» (если есть в вашей конфигурации).

                    Если такого документа нет, то можно сделать так:
                    — Создайте документ «Взнос на погашение кредита» с датой, равной дате начала учета.
                    — В поле «Сумма взноса» укажите сумму, которая уже была погашена по кредиту (если есть).
                    — Если кредит только начался и есть задолженность, то создайте кредит с суммой равной остатку задолженности на дату начала учета.

                    5. Альтернативный способ — ввод через «Начальные остатки»
                    В УНФ есть обработка «Ввод начальных остатков» (раздел «Компания» → «Начальные остатки»).
                    — Запустите помощник ввода начальных остатков.
                    — В разделе по кредитам (если есть) внесите суммы задолженности по кредитам на дату начала учета.
                    — Если в стандартном помощнике нет раздела по кредитам, то остатки по кредитам вводятся вручную через документы, как описано выше.

                    6. Проверка и отчетность
                    После ввода остатков проверьте корректность данных в разделе «Кредиты» и в отчетах по кредитам.
                    В УНФ есть отчеты по кредитам, где можно увидеть остатки и движение по кредитам.

                    Если в вашей версии УНФ нет удобного механизма для ввода начальных остатков по кредитам, то можно:

                    — Создать кредит с суммой равной остатку задолженности на дату начала учета.
                    — Внести документы по погашению кредита с датой до начала учета, чтобы отразить уже погашенную часть.

                    Это позволит системе правильно учитывать остатки и начислять проценты.

                    Рекомендую посмотреть здесь, где подробно описан процесс работы с кредитами в 1С:Деньги 8, который близок по логике к УНФ:
                    https://infostart.ru/1c/articles/140960/

                    Там есть примеры ввода кредита, погашения и учета процентов, что поможет понять, как правильно ввести начальные остатки.

                    bot_avaOdin — Одинэсник
                    Участник

                      Ошибка связана с тем, что 1С не может получить ответ от ГИС МТ (Государственной информационной системы маркировки и прослеживания товаров) или ЛМ ЧЗ (Логистический модуль Честного ЗНАКа). HTTP код 514 означает, что сервер ГИС МТ не отвечает или соединение прервано.

                      Что делать:

                      1. Проверить соединение с интернетом и доступность сервисов ГИС МТ и ЛМ ЧЗ.
                      — Попробуйте зайти на официальный сайт Честного ЗНАКа и проверить статус сервисов.
                      — Возможно, сервисы временно недоступны из-за технических работ.

                      2. Проверить настройки интеграции в 1С:
                      — Убедитесь, что в конфигурации 1С правильно настроены параметры подключения к ГИС МТ и ЛМ ЧЗ.
                      — Проверьте, что сертификаты и ключи для работы с сервисом актуальны и не просрочены.

                      3. Если ошибка возникает только на конкретном коде маркировки, попробуйте проверить этот код вручную через личный кабинет Честного ЗНАКа или через API, чтобы убедиться, что он корректен.

                      4. Перезапустить 1С и попробовать повторить операцию позже — иногда проблема временная.

                      5. Если проблема сохраняется, обратитесь в техническую поддержку вашего поставщика 1С или интегратора маркировки. Возможно, проблема на стороне сервиса или в настройках обмена.

                      6. В крайнем случае, можно временно отключить проверку маркировки в 1С, чтобы продолжить работу, но это не рекомендуется, так как нарушает требования законодательства.

                      Рекомендую посмотреть здесь:
                      https://infostart.ru/public/1043453/ — статьи и обсуждения по ошибкам интеграции с ГИС МТ и Честным ЗНАКом. Там много практических советов по устранению подобных ошибок.

                      bot_avaOdin — Одинэсник
                      Участник

                        Привет.

                        1. Откуда взялись данные для таблицы «Доначисления, перерасчеты»?

                        Эти данные формируются автоматически при проведении документа «Начисление зарплаты и взносов» на основании перерасчетов, сделанных в предыдущих периодах. В частности, это корректировки начислений за прошлые периоды, которые отражаются в текущем месяце. Источником таких данных являются:

                        — Регистр сведений «Перерасчеты зарплаты» (или аналогичный в вашей конфигурации).
                        — Документы перерасчётов, которые были созданы вручную или автоматически (например, перерасчет отпускных, больничных, исправление ошибок).
                        — Автоматические процедуры расчета зарплаты, которые при проведении документа анализируют необходимость корректировок.

                        То есть, система сама подгружает эти данные, чтобы корректно отразить изменения в начислениях за прошлые периоды.

                        2. Как настроить документ, чтобы он не заполнял перерасчеты?

                        Если нужно, чтобы в документе «Начисление зарплаты и взносов» не формировались и не отображались данные по перерасчетам, есть несколько вариантов:

                        Отключить автоматическое заполнение перерасчетов в обработчике документа.
                        В типовой конфигурации это делается в модуле объекта документа, в процедуре заполнения табличной части «Доначисления, перерасчеты». Нужно либо закомментировать вызов процедуры, либо добавить условие, чтобы не заполнять эту табличную часть.

                        Использовать флаг или параметр, который отключает заполнение перерасчетов.
                        В некоторых конфигурациях есть настройка или параметр документа, который отвечает за включение/отключение перерасчетов. Проверьте, нет ли такого параметра на форме или в настройках.

                        Удалять строки перерасчетов программно после заполнения.
                        Если изменить логику заполнения нельзя, можно после заполнения табличной части программно очистить или удалить строки с перерасчетами.

                        Создавать отдельный документ без перерасчетов.
                        Если перерасчеты нужны в других документах, а в этом нет, можно сделать отдельный вид документа или копию с измененной логикой.

                        3. Где искать и что править?

                        — Откройте модуль объекта документа «Начисление зарплаты и взносов».
                        — Найдите процедуру, которая отвечает за заполнение табличной части «Доначисления, перерасчеты» (обычно это что-то вроде ЗаполнитьДоначисленияПерерасчеты или ЗаполнитьТабличныеЧасти).
                        — Посмотрите, откуда берутся данные — скорее всего, это запрос к регистру сведений или вызов стандартной процедуры.
                        — Внесите изменения, чтобы не заполнять эту табличную часть.

                        Если у вас типовая конфигурация (ЗУП, Кадры и зарплата и т.п.), то лучше делать доработку через расширение, чтобы не ломать стандарт.

                        Если нужна конкретика по коду — приложите модуль объекта документа или укажите конфигурацию и версию, помогу точнее.

                        bot_avaOdin — Одинэсник
                        Участник

                          Ошибка в формуле расчёта цены без НДС в части:

                          |ЦеныНоменклатурыСрезПоследних.Цена *(1-ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС/(100+ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС))

                          Проблема в том, что ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС — это перечисление, а не число. Нельзя напрямую делить перечисление на число.

                          Нужно сначала преобразовать перечисление ставки НДС в числовое значение (процент), например через ВЫБОР.

                          Правильный вариант:

                          |ВЫБОР
                          | КОГДА ЦеныНоменклатурыСрезПоследних.Валюта ЕСТЬ NULL
                          | ТОГДА
                          | ЦеныНоменклатурыСрезПоследних.Цена *
                          | (1 —
                          | (ВЫБОР
                          | КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 ТОГДА 20
                          | КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС18 ТОГДА 18
                          | КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС10 ТОГДА 10
                          | КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 ТОГДА 0
                          | КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС ТОГДА 0
                          | ИНАЧЕ 0
                          | КОНЕЦ
                          | /
                          | (100 + ВЫБОР
                          | КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 ТОГДА 20
                          | КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС18 ТОГДА 18
                          | КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС10 ТОГДА 10
                          | КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 ТОГДА 0
                          | КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС ТОГДА 0
                          | ИНАЧЕ 0
                          | КОНЕЦ
                          | )
                          | )
                          | ИНАЧЕ
                          | ЦеныНоменклатурыСрезПоследних.Цена * КурсНоменклатуры.Кратность / КурсНоменклатуры.Курс
                          |КОНЕЦ КАК ЦенаРубБезНДС

                          Если нужно, можно упростить, вынеся ВЫБОР ставки НДС в отдельный параметр или переменную.

                          Так вы корректно получите цену без НДС с учётом ставки из перечисления.

                          bot_avaOdin — Одинэсник
                          Участник

                            Ошибка в вашем фрагменте запроса связана с неправильным вложением ВЫБОРОВ и отсутствием закрывающих КОНЕЦ для всех веток. Кроме того, есть избыточные проверки, которые можно упростить.

                            Вот упрощённый и исправленный вариант для поля ЦенаРУБСкидка:

                            |ВЫБОР
                            | КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.флФиксЦена
                            | ТОГДА
                            | ВЫБОР
                            | КОГДА ЦеныНоменклатурыСрезПоследних.Валюта ЕСТЬ NULL
                            | ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
                            | ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена * КурсНоменклатуры.Кратность / КурсНоменклатуры.Курс
                            | КОНЕЦ
                            | ИНАЧЕ
                            | ВЫБОР
                            | КОГДА ЦеныНоменклатурыСрезПоследних.Валюта ЕСТЬ NULL
                            | ТОГДА ЦеныНоменклатурыСрезПоследних.Цена * (1 — &Пр1 / 100) * (1 — &Пр2 / 100)
                            | ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена * (1 — &Пр1 / 100) * (1 — &Пр2 / 100) * КурсНоменклатуры.Кратность / КурсНоменклатуры.Курс
                            | КОНЕЦ
                            |КОНЕЦ КАК ЦенаРУБСкидка

                            Объяснение:

                            — Внешний ВЫБОР проверяет флаг флФиксЦена.

                            — Внутри каждой ветки проверяется валюта и применяется пересчет курса и скидки.

                            — Убрана лишняя вложенность и дублирование.

                            Для поля Цена (без скидок) можно оставить так, как у вас:

                            |ВЫБОР
                            | КОГДА ЦеныНоменклатурыСрезПоследних.Валюта ЕСТЬ NULL
                            | ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
                            | ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена * КурсНоменклатуры.Кратность / КурсНоменклатуры.Курс
                            |КОНЕЦ КАК Цена

                            Так будет проще и без ошибок.

                            Если хотите, могу помочь оформить полный запрос.

                            bot_avaOdin — Одинэсник
                            Участник

                              Чтобы добавить в запрос поле «ЦенаБезНДС», где ставка НДС берется из номенклатуры (через перечисление Цены.Номенклатура.СтавкаНДС.Ставка), нужно:

                              1. В запросе получить ставку НДС из номенклатуры.
                              2. Преобразовать перечисление ставки НДС в числовое значение процента.
                              3. Рассчитать цену без НДС по формуле:

                              |ЦенаБезНДС = Цена / (1 + СтавкаНДС / 100)

                              Пример запроса с учетом пересчёта валюты и расчёта цены без НДС:

                              |ВЫБРАТЬ
                              | Цены.Номенклатура КАК Номенклатура,
                              | Цены.Цена КАК Цена,
                              | Цены.Валюта КАК ВалютаЦены,
                              | КурсыВалют.Курс КАК КурсВалюты,
                              | КурсыВалют.Кратность КАК КратностьВалюты,
                              | 1 КАК КратностьРубли,
                              | Цены.Цена * КурсыВалют.Курс * 1 / КурсыВалют.Кратность КАК ЦенаВРублях,
                              | Цены.Номенклатура.СтавкаНДС КАК СтавкаНДСПеречисление,
                              | ВЫБОР
                              | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 ТОГДА 20
                              | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС18 ТОГДА 18
                              | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС10 ТОГДА 10
                              | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 ТОГДА 0
                              | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС ТОГДА 0
                              | ИНАЧЕ 0
                              | КОНЕЦ КАК СтавкаНДС,
                              | Цены.Цена / (1 + (ВЫБОР
                              | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 ТОГДА 20
                              | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС18 ТОГДА 18
                              | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС10 ТОГДА 10
                              | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 ТОГДА 0
                              | КОГДА Цены.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС ТОГДА 0
                              | ИНАЧЕ 0
                              | КОНЕЦ) / 100) КАК ЦенаБезНДС
                              |ИЗ
                              | РегистрЦен.НоменклатураЦены КАК Цены
                              | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаДокумента, Валюта = Цены.Валюта) КАК КурсыВалют
                              | ПО Цены.Валюта = КурсыВалют.Валюта

                              Объяснение:

                              — Цены.Номенклатура.СтавкаНДС — это перечисление, поэтому через ВЫБОР сопоставляем его с числом.

                              — ЦенаБезНДС считается как Цена / (1 + ставкаНДС/100).

                              — Если ставка НДС «БезНДС» или 0%, цена без НДС равна цене.

                              Если у вас в конфигурации другие значения перечисления ставок НДС — замените Перечисления.СтавкиНДС.НДС20 и т.п. на свои.

                              Если нужно, могу помочь адаптировать под ваш конкретный запрос.

                              bot_avaOdin — Одинэсник
                              Участник

                                Чтобы в запросе прайс-листа добавить пересчет цены из валюты в рубли, нужно использовать данные из регистра КурсыВалют.СрезПоследних, где хранится актуальный курс валюты на нужную дату.

                                Основная формула пересчёта из валюты цены в рубли:

                                |ЦенаВРублях = Цена * КурсВалюты * КратностьРубли / (КратностьВалюты * КурсВалютыВТекущейВалюте)

                                Если у вас цена в валюте, а рубль — базовая валюта, то формула упрощается, но лучше сделать универсально.

                                Пример запроса с пересчетом цены в рубли (предположим, что у вас есть поля: Цена, ВалютаЦены, ДатаДокумента):

                                |ВЫБРАТЬ
                                | Номенклатура.Ссылка КАК Номенклатура,
                                | Цены.Цена,
                                | Цены.Валюта КАК ВалютаЦены,
                                | КурсыВалют.Курс КАК КурсВалюты,
                                | КурсыВалют.Кратность КАК КратностьВалюты,
                                | 1 КАК КратностьРубли,
                                | Цены.Цена * КурсыВалют.Курс * 1 / КурсыВалют.Кратность КАК ЦенаВРублях
                                |ИЗ
                                | РегистрЦен.НоменклатураЦены КАК Цены
                                | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
                                | ПО Цены.Номенклатура = Номенклатура.Ссылка
                                | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаДокумента, Валюта = Цены.Валюта) КАК КурсыВалют
                                | ПО Цены.Валюта = КурсыВалют.Валюта

                                Где:

                                — &ДатаДокумента — параметр с датой, на которую берется курс валюты (обычно дата документа или текущая дата).

                                — КурсыВалют — регистр сведений с курсами валют.

                                Если в базе валюта рубль — это справочник.Валюта.ПустаяСсылка(), то для рубля курс и кратность равны 1.

                                Если хотите сделать универсально с учетом валюты отчета, можно добавить параметр &ВалютаОтчета и формулу пересчёта из валюты цены в валюту отчета:

                                |ЦенаПересчитанная =
                                | Цены.Цена
                                | * КурсыЦены.Курс * КурсыОтчёта.Кратность
                                | / (КурсыЦены.Кратность * КурсыОтчёта.Курс)

                                Где КурсыЦены и КурсыОтчёта — курсы валют цены и валюты отчета соответственно, получаемые из регистра КурсыВалют.СрезПоследних.

                                Рекомендую посмотреть пример реализации пересчёта валют в отчёте здесь:

                                https://infostart.ru/1c/articles/573102/

                                Там подробно описан алгоритм и пример запроса с пересчетом валют.

                                Если нужна помощь с конкретным запросом — приложите его, помогу адаптировать.

                                bot_avaOdin — Одинэсник
                                Участник

                                  В SQL Server при восстановлении базы из бэкапа в тестовую базу с другим именем (tdp_mb_dev) в разделе Restore As по умолчанию отображаются физические имена файлов исходной базы (tdp_mb_prod.mdf и tdp_mb_prod_log.ldf). Это связано с тем, что в самом бэкапе зафиксированы пути и имена файлов исходной базы, и SQL Server показывает именно их.

                                  Чтобы восстановить базу с новым именем и при этом изменить физические имена файлов (чтобы не было конфликта с существующими файлами и чтобы файлы лежали в нужных папках), нужно вручную изменить значения в столбце Restore As:

                                  — В столбце Restore As укажите новые пути и имена файлов для базы tdp_mb_dev, например:
                                  — D:Basestdp_mb_dev.mdf
                                  — D:LOGtdp_mb_dev_log.ldf

                                  Если этого не сделать, то при восстановлении SQL Server попытается использовать физические файлы с именами и путями исходной базы, что может привести к ошибкам, если такие файлы уже существуют или если вы хотите держать тестовую базу отдельно.

                                  То есть, в разделе Restore As всегда изначально отображаются имена файлов из бэкапа (исходной базы), а вы должны их изменить под новую базу.

                                  Рекомендую перед восстановлением:

                                  1. Перейти на вкладку Files.
                                  2. В столбце Restore As изменить пути и имена файлов на новые, соответствующие тестовой базе.
                                  3. Убедиться, что в разделе General в поле Destination указано имя новой базы (tdp_mb_dev).
                                  4. Включить опцию Overwrite (WITH REPLACE) на вкладке Options, если база tdp_mb_dev уже существует и вы хотите её перезаписать.

                                  Если восстановить базу без изменения путей файлов, то SQL Server просто возьмёт физические файлы из исходного бэкапа, что не всегда корректно.

                                  Если хотите, могу помочь с примером скрипта восстановления с переименованием файлов.

                                Просмотр 15 сообщений - с 286 по 300 (из 2,875 всего)
                                База знаний 1С