Почему в печатной форме УКД изменяется цена товара, если корректировалось только количество в 1С:УТ 11.5?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В работе с 1С:Управление торговлей (УТ) 11.5 мы часто сталкиваемся с ситуациями, когда при формировании Универсального корректировочного документа (УКД) в его печатной форме обнаруживается изменение цены на товар, несмотря на то, что в документе корректировалось исключительно его количество. Такая ситуация может привести к путанице, поскольку логично предположить, что корректировка количества не должна влиять на стоимость единицы товара. Однако система 1С обладает сложной логикой пересчета и взаимодействия документов, что может приводить к подобным, на первый взгляд, неожиданным результатам.

Давайте подробно разберемся, почему такое происходит и как мы можем последовательно выявить и устранить причину расхождения цен. Мы рассмотрим основные аспекты системы 1С, которые могут спровоцировать это поведение, начиная от стандартных механизмов пересчета и заканчивая специфическими настройками и возможными доработками.

1. Автоматический пересчет цены при изменении количества

Одной из наиболее распространенных причин изменения цены в УКД является встроенная логика автоматического пересчета в 1С. Система часто спроектирована таким образом, чтобы при корректировке одной из взаимосвязанных величин (количество, цена, сумма) она автоматически пересчитывала остальные, стремясь сохранить общую сумму строки неизменной, если пользователь не указал иное.

Рассмотрим подробнее, как это может произойти:

  1. Предположим, у нас есть строка в исходной реализации или корректировке: 10 шт. * 100 руб. = 1000 руб.
  2. Пользователь открывает документ Корректировка реализации (который является основой для УКД) и изменяет только поле Количество, например, на 5 шт.
  3. Если пользователь не меняет поле Сумма и не меняет поле Цена, а просто переходит к следующему полю или сохраняет документ, система 1С может автоматически пересчитать цену за единицу таким образом, чтобы общая сумма строки осталась прежней (если такая логика преобладает). В нашем примере это приведет к пересчету цены: 5 шт. * 200 руб. = 1000 руб.
  4. В результате, в печатной форме УКД, где обычно отображаются показатели "до изменения" и "после изменения", мы увидим, что цена изменилась со 100 руб. до 200 руб., хотя корректировалось лишь количество.

Почему система так делает? Эта логика по умолчанию часто применяется для упрощения ввода данных. Например, если нам нужно уменьшить количество, но при этом сохранить общую стоимость партии, то автоматический пересчет цены будет удобен. В таких случаях полезно использовать умный пересчёт цен по проценту, чтобы избежать ручного редактирования. Однако, если ожидается, что цена за единицу останется прежней, а общая сумма должна измениться пропорционально количеству, такое поведение будет некорректным.

Как мы можем это проверить и что делать:

  1. Проверьте сам документ: Нам необходимо открыть документ Корректировка реализации (который является исходным для УКД) в режиме редактирования. Обратите внимание на поведение полей Количество, Цена и Сумма. Попробуйте изменить количество вручную и посмотрите, какое из полей (цена или сумма) пересчитывается автоматически.
  2. Настройки ввода данных: В 1С существуют настройки, которые определяют приоритет пересчета. В старых версиях 1С была прямая настройка "что менять при изменении количества, цену или сумму", как упоминалось в сообщении 6 форума. В 1С:УТ 11.5 это часто регулируется через механизмы ввода на основании, или же через настройки формы документа для пользователя, где для полей Цена и Сумма могут быть заданы различные свойства, влияющие на автоматический пересчет.
  3. Обсудите с пользователем: Если такое поведение наблюдается, мы должны выяснить у пользователя, какое поведение является ожидаемым: должна ли цена за единицу оставаться фиксированной, а сумма пересчитываться, или же сумма должна оставаться фиксированной, а цена за единицу пересчитываться. В зависимости от ответа, потребуется либо изменить порядок действий пользователя (например, сначала изменить количество, затем вручную проставить прежнюю цену, чтобы сумма пересчиталась), либо скорректировать настройки системы.

2. Настройки видов цен и их влияние

Система ценообразования в 1С:УТ 11.5 является одной из самых мощных и гибких подсистем. Цены на товары могут быть не просто фиксированными значениями, а результатом сложного расчета, привязанного к определенным ВидамЦен. Любое изменение условий, влияющих на этот расчет, может привести к пересчету цены за единицу, даже если мы корректировали только количество.

Давайте проанализируем различные механизмы пересчета, которые могут повлиять на цену:

  1. Расчет цены по формуле (наценка на базовую цену):

    Если используемый в документе вид цены, например, "Цена реализации", рассчитывается как "Базовая цена + определенная наценка" или "Себестоимость + процент", то любое изменение базовой цены или себестоимости (возможно, в результате перепроведения документов поступления, закрытия месяца или регламентных заданий) может спровоцировать пересчет "Цены реализации".

    Например, если базовая цена изменилась с 80 руб. до 90 руб., а наценка составляет 25%, то цена реализации пересчитается с 100 руб. (80 * 1.25) до 112.5 руб. (90 * 1.25). Также на итоговую сумму может повлиять корректная замена ставок НДС. При формировании УКД, если для поля "цена после" система использует актуальный расчет по виду цен, а для поля "цена до" — зафиксированное значение из старого документа, мы увидим расхождение.

  2. Пересчет по курсу валюты:

    Если цена товара установлена в одной валюте (например, в долларах), а документ выписывается в другой (например, в рублях), то цена за единицу в валюте документа будет зависеть от курса валюты на дату документа. Если дата создания исходной реализации и дата создания Корректировки реализации (которая является основой для УКД) различаются, и за это время курс валюты изменился, то система может пересчитать цену в валюте документа (пригодится пример пересчета цен по курсу). Даже если мы корректируем только количество, новая цена будет отражать актуальный курс.

    Кроме того, важную роль играет ВалютаЦены и ВалютаДокумента, а также установленный в настройках Курс на дату. Если эти параметры изменились, это повлияет на конечную цену.

  3. Настройки округления:

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

    Например, если расчетная цена 99.99999 руб., а округление до двух знаков дает 100.00 руб. или 99.99 руб. в зависимости от точности промежуточных вычислений.

Как мы можем проверить настройки видов цен:

  1. Перейдите в настройки: Откройте раздел Маркетинг и планирование в 1С:УТ 11.5, затем перейдите в Настройки и справочники и выберите Виды цен.
  2. Изучите используемый вид цены: Найдите вид цены, который был использован в исходном документе реализации и который используется в Корректировке реализации.
  3. Анализируйте метод расчета: Внимательно изучите поле Способ расчета. Это может быть Статический (цена фиксирована), Динамический (цена рассчитывается по формуле), По ценовым группам или Наценка на другой вид цен. Если способ расчета динамический, нам необходимо детально изучить формулу и параметры, на которые она опирается (например, другие виды цен, себестоимость, курсы валют).
  4. Проверьте параметры округления: Обязательно посмотрите настройки округления для данного вида цены.
  5. Дополнительные обработки и установки цен: Убедитесь, что между моментом оформления исходной реализации и созданием УКД не использовались дополнительные обработки, которые могли изменить цены номенклатуры (например, Установка цен номенклатуры, обработки по массовому пересчету цен или регламентные задания по обновлению цен). Такие действия могли изменить базовую цену, от которой затем пересчитывается цена в УКД.

3. Цепочка корректирующих документов (УКД на УКД)

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

Принцип подчиненности и его влияние:

Типичная цепочка документов может выглядеть так: Заказ клиента -> Реализация товаров и услуг -> Корректировка реализации -> УКД. Важно понимать, что каждый последующий документ может брать исходные данные не из самого первого документа в цепочке, а из непосредственно предшествующего ему.

Рассмотрим сценарий, который может привести к расхождениям:

  1. Исходная Реализация: Предположим, была Реализация товаров и услуг с товаром А: 10 шт. * 100 руб. = 1000 руб.
  2. Первая Корректировка: По какой-то причине была создана Корректировка реализации №1 на основании этой Реализации. В этой корректировке, возможно, изменили не только количество (например, на 8 шт.), но и цену (например, по ошибке, или из-за пересмотра условий). В итоге в Корректировке реализации №1 могло получиться: 8 шт. * 110 руб. = 880 руб.
  3. Вторая Корректировка (текущий случай): Теперь мы создаем новую Корректировку реализации №2 (которая станет основой для нашего проблемного УКД) на основании Корректировки реализации №1. Нам нужно скорректировать только количество, например, на 6 шт.
  4. Неожиданный результат: Если Корректировка реализации №2 берет "исходную" цену для пересчета из Корректировки реализации №1 (то есть 110 руб.), а не из самой первой Реализации (100 руб.), то в УКД мы увидим, что "цена до изменения" была 110 руб., а "цена после изменения" может быть 110 руб. (если пересчет не сработал) или другое значение, если сработал механизм из пункта 1. Это приведет к тому, что отображение цен "до изменения" в УКД будет отличаться от фактической цены в самой первой реализации.

Как мы можем проанализировать структуру подчиненности:

  1. Откройте проблемный УКД: Сначала откройте сам Универсальный корректировочный документ.
  2. Перейдите к документу-основанию: Найдите в нем ссылку на документ-основание (как правило, это Корректировка реализации). Откройте его.
  3. Постройте всю цепочку: Из формы документа Корректировка реализации (или любого другого документа в цепочке) найдите кнопку Связанные документы или Структура подчиненности (расположена обычно в меню Ещё или на панели навигации).
  4. Изучите каждый документ: Внимательно просмотрите все документы в сформированной структуре подчиненности:
    • Какие изменения вносились в каждом из них (количество, цена, сумма)?
    • Какие цены были зафиксированы в табличной части каждого документа?
    • Какие даты имеют эти документы? Разница в датах может влиять на курсы валют или применимость видов цен.
  5. Важность полей "До изменения" и "После изменения": Помните, что формат УКД специально предусматривает поля для отражения показателей "до изменения" и "после изменения". Мы должны убедиться, что логика заполнения этих полей в документе Корректировка реализации корректно подтягивает данные из правильного исходного документа в цепочке. Если исходные данные берутся из уже скорректированного промежуточного документа, это может привести к путанице.

4. Кастомизация печатной формы

Если все предыдущие пункты не дали ответа, и мы убедились, что в самом документе Корректировка реализации (который является основой для УКД) цены отображаются корректно, а расхождения возникают только в печатной форме, то проблема может быть связана с доработанной печатной формой.

Потенциальный источник ошибок в доработанных формах:

В 1С:УТ существует механизм редактирования макетов печатных форм. Если ваша печатная форма УКД не является типовой (то есть, она была изменена или создана с нуля программистом), то в ее программном коде или непосредственно в макете может быть заложена иная логика расчета или получения данных для отображения цены, чем та, что используется в самом документе 1С.

Причины расхождений в кастомизированных формах:

  1. Различные алгоритмы округления: Документ может округлять цену до двух знаков после запятой, а код в печатной форме — до трех, или вообще не округлять, что приведет к небольшим, но заметным расхождениям в отображении.
  2. Использование других источников данных: Программист мог ошибочно или намеренно прописать в коде печатной формы запрос, который берет цену не из табличной части текущего документа Корректировка реализации, а, например, из регистра цен на определенную дату, или из совершенно другого документа, или даже из старой версии данных. Это может привести к тому, что форма покажет данные, отличные от тех, что хранятся в самом объекте документа.
  3. Ошибки в коде: Простая синтаксическая или логическая ошибка в формуле расчета цены в коде печатной формы, или некорректное обращение к полям документа могут стать причиной неправильного отображения. Например, вместо поля "Цена" может быть случайно взято "Сумма" или другое числовое поле.
  4. Передача параметров: Неправильная передача параметров в макет или ошибочное использование глобальных переменных может исказить конечный результат отображения цены.

Как мы можем проверить доработанную печатную форму:

  1. Сравнение с типовой формой: Если есть возможность, попробуйте распечатать УКД с помощью стандартной типовой печатной формы 1С (если она доступна и отличается от используемой вами). Если в типовой форме цена отображается корректно, а в вашей — нет, то проблема, скорее всего, именно в кастомизированной форме.
  2. Привлечение программиста 1С: Если вы используете доработанную форму, нам потребуется помощь программиста 1С. Программист должен будет проанализировать:
    • Код модуля объекта или модуля команды печати: Здесь происходит подготовка данных для печатной формы.
    • Макет печатной формы: Откройте макет (через Администрирование -> Печатные формы, отчеты и обработки -> Макеты печатных форм или через конфигуратор). Изучите, как заполняются поля, отвечающие за цену "до изменения" и "после изменения". Особое внимание уделите выражениям в ячейках макета, которые могут содержать формулы или ссылки на параметры.
    • Запросы к базе данных: Внутри кода могут быть запросы, которые извлекают данные для печати. Необходимо убедиться, что эти запросы корректно выбирают нужные цены и не используют устаревшие или неверные регистры/документы.
  3. Взаимодействие с Корректировкой реализации: Важно помнить, что печатная форма УКД берет свои данные из документа Корректировка реализации (или Корректировка поступления для покупателя). Именно этот документ является основным источником информации. Следовательно, любые несоответствия в печатной форме требуют сверки с данными, которые хранятся и обрабатываются в Корректировке реализации.

Заключение

Чтобы точно определить и устранить причину изменения цены в печатной форме УКД при корректировке только количества в 1С:УТ 11.5, нам необходимо применять комплексный и системный подход. Последовательное выполнение следующих шагов поможет нам локализовать проблему:

  1. Начинаем всегда с проверки самого документа: В первую очередь, мы должны убедиться, что проблема не на уровне данных или логики самого документа Корректировка реализации. Откройте его и проследите, как поля "Количество", "Цена" и "Сумма" взаимодействуют при изменении одного из них. Выясните ожидаемое поведение и сравните его с фактическим.
  2. Далее анализируем настройки видов цен: Исследуйте используемые ВидыЦен в Корректировке реализации. Проверьте Способы расчета, зависимость от курсов валют и правила округления. Убедитесь, что никакие внешние факторы (например, регламентные задания или ручные установки цен) не изменили базовые ценовые параметры между созданием исходного документа и корректировки.
  3. Затем изучаем всю структуру подчиненности: С помощью функции Структура подчиненности мы просматриваем всю цепочку документов от исходной реализации до текущей корректировки. Ищем любые промежуточные корректировки, которые могли изменить цену или условия, влияющие на ценообразование, и которые могли послужить некорректной базой для текущего УКД.
  4. И только в последнюю очередь проверяем саму печатную форму: Если все предыдущие шаги не дали результата и в самом документе все корректно, переходим к анализу печатной формы. Проверьте, является ли она типовой или доработанной. Если она доработана, привлеките программиста для анализа кода и макета, чтобы выявить возможные ошибки в логике сбора и отображения данных.

Тщательный анализ каждого из этих пунктов позволит нам точно определить источник проблемы и обеспечить корректное формирование Универсальных корректировочных документов в вашей системе 1С:УТ 11.5, избегая расхождений и обеспечивая прозрачность учета.

← На главную