При оформлении документов продажи в программе 1С:Бухгалтерия 3.0 (таких как «Реализация (акты, накладные, УПД)», «Счет покупателю» или «Акт оказания услуг») пользователи часто сталкиваются с ситуацией, когда программа автоматически подставляет цену в табличную часть. Если на предприятии практикуются индивидуальные тарифы, гибкие скидки или цены меняются ежедневно, автоподстановка старых цен начинает мешать работе. Менеджеры могут не заметить подставленные программой неактуальные данные, что приводит к ошибкам в первичных документах и спорам с контрагентами.
В этой статье мы подробно разберем, почему программа ведет себя подобным образом, как устроен алгоритм подбора цен изнутри, и рассмотрим все возможные варианты отключения автозаполнения цен — от современных штатных настроек программы до обходных путей в старых релизах конфигурации.
---
Для того чтобы эффективно решить проблему, проанализируем ситуацию и разберем логику работы конфигурации. Многие пользователи пытаются отключить функционал цен через снятие флага Использовать типы цен номенклатуры в константах или очищают периодический регистр сведений Цены номенклатуры. Однако автоподстановка цен в документах реализации все равно продолжается. Почему так происходит?
Дело в том, что в 1С:Бухгалтерия 3.0 встроен «умный» (и зачастую избыточный для многих) алгоритм заполнения цен. Если программа не находит явно установленный тип цен для договора или документа, она пытается определить цену по предыдущим сделкам. Алгоритм работает следующим образом:
ТипЦен в самом документе или в договоре с контрагентом.Цены номенклатуры и подтягивает действующее на дату документа значение.Цены документов номенклатуры (в некоторых релизах он называется Цены номенклатуры документов).Именно этот скрытый механизм подстановки по предыдущим продажам чаще всего и вызывает раздражение у пользователей, когда им требуется абсолютно «чистый» документ без цен.
---
Начиная с современных релизов (3.0.182 и новее), разработчики фирмы 1С услышали пожелания пользователей и добавили штатный механизм управления автозаполнением. Больше не нужно использовать сложные «костыли», достаточно изменить всего одну настройку.
Рассмотрим подробнее, как отключить автозаполнение через форму «Настройка заполнения цен»:
Из предыдущего документа (этот вариант обычно включен по умолчанию и заставляет программу тянуть старые цены);Из типа цен (классический поиск по установленным прайс-листам);Из карточки номенклатуры (статичная цена из поля карточки товара);Не заполнять — это именно тот вариант, который нам нужен!После сохранения этой настройки при добавлении любых товаров в табличную часть документов реализации колонка «Цена» будет гарантированно оставаться пустой (нулевой). Пользователю придется вводить стоимость вручную, что полностью исключает риск случайной отправки документов со старыми ценами.
---
Если вы работаете в старой версии конфигурации, где форма «Настройка заполнения цен» еще отсутствует, а обновиться в данный момент нет возможности, проблему можно решить с помощью методологического обхода алгоритмов 1С.
Поскольку при отсутствии типа цен программа принудительно задействует поиск по предыдущим продажам, наша задача — «обмануть» этот алгоритм, заставив систему думать, что у нас используется строго определенный тип цен, по которому при этом нет никаких записей. Разберем по шагам, как это реализовать:
Использовать типы цен номенклатуры).Установка цен номенклатуры по этому типу цен создавать не нужно. Он должен оставаться абсолютно пустым.Как это работает: При добавлении номенклатуры в табличную часть программа увидит, что в документе задан конкретный тип цен. Она обратится к регистру Цены номенклатуры, не найдет там записей по этой номенклатуре для данного типа цен и с чистой совестью подставит 0.00. При этом обращаться к истории предыдущих продаж и регистру Цены документов номенклатуры система уже не будет.
---
Если вы решили использовать Способ №2 или просто хотите избавиться от старых «хвостов» цен, которые программа уже успела запомнить, вам потребуется очистить регистр сведений, хранящий историю продаж. Сделать это можно двумя путями.
Цены документов номенклатуры (или Цены номенклатуры документов).Ctrl + A) и нажмите кнопку Удалить.Если записей в регистре слишком много и ручное удаление вызывает зависание системы, можно очистить регистр сведений с помощью внешней обработки или в консоли кода, написав простое программное решение, полностью очищающее набор записей:
НаборЗаписей = РегистрыСведений.ЦеныНоменклатурыДокументов.СоздатьНаборЗаписей();
// Записываем пустой набор без установки отборов, что приводит к полной очистке регистра
НаборЗаписей.Записать(Истина);
После очистки этого регистра программа «забудет» все цены предыдущих поставок и перестанет их подставлять до тех пор, пока вы не проведете новые документы реализации (если не настроен Способ №1 или Способ №2).
---
Иногда пользователям важно не просто получить нулевую цену, а сделать так, чтобы незаполненная цена явно привлекала к себе внимание при проверке документа перед печатью или отправкой. Нулевую цену в длинной табличной части визуально пропустить гораздо легче, чем некорректное копеечное значение.
Для реализации этого сценария можно установить для всей номенклатуры цену в размере 0,01 руб. (1 копейка):
0,01.При оформлении накладной программа автоматически заполнит цену значением 0,01. При итоговой проверке документа такая цена сразу бросится в глаза бухгалтеру или менеджеру, сигнализируя о том, что реальная цена сделки для этой позиции не была введена вручную.
---
Мы проанализировали проблему автоматической подстановки цен в 1С:Бухгалтерии 3.0 и рассмотрели различные методы борьбы с этим поведением системы. Подведем итоги:
Цены документов номенклатуры.