Как отключить автоматическое заполнение цен в документах реализации в 1С:Бухгалтерия 3.0?

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

При оформлении документов продажи в программе 1С:Бухгалтерия 3.0 (таких как «Реализация (акты, накладные, УПД)», «Счет покупателю» или «Акт оказания услуг») пользователи часто сталкиваются с ситуацией, когда программа автоматически подставляет цену в табличную часть. Если на предприятии практикуются индивидуальные тарифы, гибкие скидки или цены меняются ежедневно, автоподстановка старых цен начинает мешать работе. Менеджеры могут не заметить подставленные программой неактуальные данные, что приводит к ошибкам в первичных документах и спорам с контрагентами.

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

---

Почему программа заполняет цены автоматически? Выясняем причину

Для того чтобы эффективно решить проблему, проанализируем ситуацию и разберем логику работы конфигурации. Многие пользователи пытаются отключить функционал цен через снятие флага Использовать типы цен номенклатуры в константах или очищают периодический регистр сведений Цены номенклатуры. Однако автоподстановка цен в документах реализации все равно продолжается. Почему так происходит?

Дело в том, что в 1С:Бухгалтерия 3.0 встроен «умный» (и зачастую избыточный для многих) алгоритм заполнения цен. Если программа не находит явно установленный тип цен для договора или документа, она пытается определить цену по предыдущим сделкам. Алгоритм работает следующим образом:

  1. При выборе номенклатуры в документе система проверяет, заполнен ли реквизит ТипЦен в самом документе или в договоре с контрагентом.
  2. Если тип цен указан, программа обращается к регистру сведений Цены номенклатуры и подтягивает действующее на дату документа значение.
  3. Если тип цен не задан, программа обращается к специальному скрытому непериодическому регистру сведений — Цены документов номенклатуры (в некоторых релизах он называется Цены номенклатуры документов).
  4. В этот регистр автоматически записывается цена товара из каждого проведенного документа реализации. При создании новой реализации система ищет в этом регистре последнюю цену по данной номенклатуре для конкретного покупателя (или в целом по базе) и подставляет ее в форму.

Именно этот скрытый механизм подстановки по предыдущим продажам чаще всего и вызывает раздражение у пользователей, когда им требуется абсолютно «чистый» документ без цен.

---

Способ 1. Современное и самое правильное решение (для новых релизов 1С:БП)

Начиная с современных релизов (3.0.182 и новее), разработчики фирмы 1С услышали пожелания пользователей и добавили штатный механизм управления автозаполнением. Больше не нужно использовать сложные «костыли», достаточно изменить всего одну настройку.

Рассмотрим подробнее, как отключить автозаполнение через форму «Настройка заполнения цен»:

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

После сохранения этой настройки при добавлении любых товаров в табличную часть документов реализации колонка «Цена» будет гарантированно оставаться пустой (нулевой). Пользователю придется вводить стоимость вручную, что полностью исключает риск случайной отправки документов со старыми ценами.

---

Способ 2. Решение для устаревших релизов программы (Обходной путь)

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

Поскольку при отсутствии типа цен программа принудительно задействует поиск по предыдущим продажам, наша задача — «обмануть» этот алгоритм, заставив систему думать, что у нас используется строго определенный тип цен, по которому при этом нет никаких записей. Разберем по шагам, как это реализовать:

  1. Перейдите в раздел Администрирование (или «Настройки») — Параметры учета — Заполнение реквизитов по умолчанию. Убедитесь, что у вас включена возможность использования типов цен номенклатуры (должна быть активна константа Использовать типы цен номенклатуры).
  2. Откройте справочник Типы цен номенклатуры (его можно найти через функции для технического специалиста или в разделе справочников продаж).
  3. Создайте новый тип цен и назовите его, например, «Договорная (пустая)» или «Ручной ввод». Документ Установка цен номенклатуры по этому типу цен создавать не нужно. Он должен оставаться абсолютно пустым.
  4. Теперь откройте карточки ваших договоров с контрагентами (или создайте шаблон договора) и в поле Тип цен укажите созданный нами пустой тип цен «Договорная (пустая)».
  5. В самом документе реализации также следите, чтобы в форме «Цены и валюта» был выбран именно этот тип цен.

Как это работает: При добавлении номенклатуры в табличную часть программа увидит, что в документе задан конкретный тип цен. Она обратится к регистру Цены номенклатуры, не найдет там записей по этой номенклатуре для данного типа цен и с чистой совестью подставит 0.00. При этом обращаться к истории предыдущих продаж и регистру Цены документов номенклатуры система уже не будет.

---

Способ 3. Очистка истории предыдущих продаж (Программный или ручной метод)

Если вы решили использовать Способ №2 или просто хотите избавиться от старых «хвостов» цен, которые программа уже успела запомнить, вам потребуется очистить регистр сведений, хранящий историю продаж. Сделать это можно двумя путями.

Ручное удаление через интерфейс:

  1. В главном меню программы (в правом верхнем углу) нажмите на кнопку «Сервис и настройки» (три полоски или шестеренка) и выберите пункт «Функции для технического специалиста» (в старых релизах — «Все функции»). Если этого пункта нет, его нужно включить в настройках параметров системы.
  2. В открывшемся дереве объектов найдите ветку Регистры сведений.
  3. Найдите регистр с названием Цены документов номенклатуры (или Цены номенклатуры документов).
  4. Откройте его, выделите все записи (сочетанием клавиш Ctrl + A) и нажмите кнопку Удалить.

Программное удаление (для программистов):

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


НаборЗаписей = РегистрыСведений.ЦеныНоменклатурыДокументов.СоздатьНаборЗаписей();
// Записываем пустой набор без установки отборов, что приводит к полной очистке регистра
НаборЗаписей.Записать(Истина);

После очистки этого регистра программа «забудет» все цены предыдущих поставок и перестанет их подставлять до тех пор, пока вы не проведете новые документы реализации (если не настроен Способ №1 или Способ №2).

---

Способ 4. Установка цены «в 1 копейку» (чтобы цена бросалась в глаза)

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

Для реализации этого сценария можно установить для всей номенклатуры цену в размере 0,01 руб. (1 копейка):

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

При оформлении накладной программа автоматически заполнит цену значением 0,01. При итоговой проверке документа такая цена сразу бросится в глаза бухгалтеру или менеджеру, сигнализируя о том, что реальная цена сделки для этой позиции не была введена вручную.

---

Резюме и рекомендации

Мы проанализировали проблему автоматической подстановки цен в 1С:Бухгалтерии 3.0 и рассмотрели различные методы борьбы с этим поведением системы. Подведем итоги:

← На главную