В процессе ведения розничной и оптовой торговли часто возникает необходимость оперативно изменить цены на весь ассортимент товаров или на определенные группы номенклатуры. В конфигурации «Бухгалтерия предприятия 2.0» (на платформе 1С 8.2) этот процесс автоматизирован, но требует понимания работы встроенных обработок. Разберем по шагам, как правильно выполнить массовую переоценку, и проанализируем последствия популярной, но опасной «хотелки» пользователей — добавления цены в наименование товара.
Для того чтобы изменить цены продажи относительно цен закупки или просто проиндексировать их на определенный процент, в системе предусмотрен специализированный документ. Рассмотрим алгоритм работы с ним:
Проанализируем возможности окна «Изменение цен». Это мощный инструмент, который позволяет выполнять групповые расчеты:
После завершения всех манипуляций в обработке нажимаем кнопку «ОК», данные переносятся в документ Установка цен номенклатуры. Не забудьте провести документ, чтобы новые цены вступили в силу.
Иногда пользователи просят добавить текущую цену прямо в название товара (например, было «Чайник Tefal», стало «Чайник Tefal 2500р»). Рассмотрим ситуацию, почему это решение является ошибочным с точки зрения архитектуры 1С и учета.
Риск 1: Искажение истории документов. В 1С 8.2 справочник номенклатуры связан с документами по ссылке. Если вы переименуете товар сегодня, то при попытке перепечатать накладную за прошлый год (например, по запросу налоговой или клиента), в печатной форме выйдет новое название с новой ценой. Это создаст прямое несоответствие между бумажным оригиналом и данными в базе, что недопустимо для бухгалтерского учета.
Риск 2: Длина наименования. Стандартное поле Наименование имеет ограничение по длине (обычно 100 символов). При добавлении цены длинные названия товаров могут обрезаться, что сделает их нечитаемыми в списках и отчетах.
Риск 3: Трудоемкость. Цены меняются часто. Если вы будете переименовывать справочник при каждой переоценке, вы получите огромный объем лишней работы и «замусоренную» базу данных.
Если пользователям жизненно необходимо видеть цену рядом с названием, мы рекомендуем использовать штатные возможности интерфейса вместо изменения данных:
Если решение о переименовании всё же принято (например, для разовой выгрузки на сайт), не стоит писать сложный код в конфигураторе. Можно воспользоваться типовой обработкой «Групповая обработка справочников и документов». Однако, она умеет только заменять значение на статичное.
Для динамического изменения (взять старое имя + добавить цену) лучше использовать универсальные обработки с возможностью написания произвольного алгоритма на языке 1С. Схематично код для такой обработки выглядел бы так:
// Пример логики для универсальной обработки
Для Каждого Строка Из ВыбранныеОбъекты Цикл
ТоварОбъект = Строка.Ссылка.ПолучитьОбъект();
АктуальнаяЦена = РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(ТекущаяДата(), Новый Структура("Номенклатура, ТипЦен", ТоварОбъект.Ссылка, НужныйТипЦен)).Цена;
ТоварОбъект.Наименование = СокрЛП(ТоварОбъект.Наименование) + " " + АктуальнаяЦена + " руб.";
ТоварОбъект.Записать();
КонецЦикла;
Важно: Перед любыми массовыми действиями со справочниками обязательно создавайте архивную копию базы данных!
Подведем итог: массовое изменение цен в «Бухгалтерии 2.0» эффективно реализуется через документ Установка цен номенклатуры. А вот от идеи переименования элементов справочника ради вывода цены лучше отказаться в пользу настройки форм подбора или специализированных отчетов.