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

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

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

Выясняем причину: методология учета розницы в 1С

Для начала разберем, почему программа ведет себя именно так. В системе 1С:Бухгалтерия реализовано разделение розничных складов на два типа: АТТ (Автоматизированная торговая точка) и НТТ (Неавтоматизированная торговая точка). Видимость колонок в табличной части Товары напрямую зависит от того, какой тип склада выбран в шапке документа.

Рассмотрим логику разработчиков 1С:

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

Посмотрим на программный код формы. Видимость этих колонок жестко завязана на параметр УчетВПродажныхЦенах, который принимает значение Истина только если в учетной политике настроен учет по продажным ценам И выбран склад типа НТТ.

Проверка настроек учетной политики

Перед тем как переходить к программным правкам, проанализируем настройки программы. Чтобы колонки розничных цен могли появиться в принципе (хотя бы для НТТ), должны быть соблюдены следующие условия:

Способ 1: Использование штатного механизма для АТТ

Если вы работаете с АТТ, правильный (с точки зрения методологии 1С) алгоритм действий будет следующим:

  1. Оформляем документ Поступление (акт, накладная) по ценам поставщика.
  2. На основании этого документа создаем документ Установка цен номенклатуры. В нем фиксируем розничные цены.
  3. При проведении поступления программа сама «подсмотрит» действующую розничную цену из регистра сведений и сформирует проводки по дебету 41.11 и кредиту 42.01 (торговая наценка).

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

Способ 2: Программный вывод колонок (для программистов)

Если бизнес-процесс клиента требует видеть розничные цены именно в форме поступления (например, для контроля наценки «на лету» или для специфических печатных форм), можно прибегнуть к программной модификации. Рассмотрим пример кода, который заставляет форму думать, что перед нами НТТ, тем самым открывая колонки.

В модуле формы документа или через расширение (что предпочтительнее) можно воздействовать на реквизит формы НТТ или напрямую управлять видимостью элементов. Посмотрим на пример кода, предложенный участниками обсуждения, который можно внедрить в процедуру ПриОткрытии или ПриИзменении склада:


// В обработчике изменения склада или при чтении на сервере
&НаСервере
Процедура УстановитьВидимостьРозничныхКолонок()
    
    // Проверяем тип склада
    Если Объект.Склад.ТипСклада = ПредопределенноеЗначение("Перечисление.ТипыСкладов.РозничныйМагазин") Тогда
        // Принудительно включаем флаг, отвечающий за отображение колонок
        ЭтаФорма.УчетВПродажныхЦенах = Истина;
        
        // Устанавливаем видимость элементов формы напрямую
        Элементы.ТоварыЦенаВРознице.Видимость = Истина;
        Элементы.ТоварыСуммаВРознице.Видимость = Истина;
    КонецЕсли;
    
КонецПроцедуры

Стоит отметить, что простое включение видимости может быть недостаточно, так как при изменении склада или других реквизитов типовые процедуры 1С могут заново пересчитать видимость и скрыть колонки. Поэтому наиболее эффективным является перехват процедуры УстановитьВидимостьЭлементов (название может варьироваться в зависимости от релиза БП 3.0).

Способ 3: Использование расширений (рекомендуемый)

Чтобы не снимать конфигурацию с поддержки, создадим расширение. Нам нужно изменить логику работы формы ФормаДокументаОбщая (или ФормаДокументаТовары). Проанализируем процедуру, отвечающую за обновление состояния формы на сервере.

В расширении добавим следующий обработчик:


&После("УстановитьСостояниеПолейФормы")
Процедура Расш1_УстановитьСостояниеПолейФормы(Форма, ПараметрыВидимости)
    
    // Если склад — АТТ, но мы хотим видеть розничные цены
    Если Форма.Объект.Склад.ТипСклада = ПредопределенноеЗначение("Перечисление.ТипыСкладов.РозничныйМагазин") Тогда
        Форма.Элементы.ТоварыЦенаВРознице.Видимость = Истина;
        Форма.Элементы.ТоварыСуммаВРознице.Видимость = Истина;
        // Также разрешаем редактирование, если это необходимо
        Форма.Элементы.ТоварыЦенаВРознице.ТолькоПросмотр = Ложь;
        Форма.Элементы.ТоварыСуммаВРознице.ТолькоПросмотр = Ложь;
    КонецЕсли;
    
КонецПроцедуры

Важный нюанс: при таком подходе нужно помнить, что ручной ввод розничной цены в документе поступления для АТТ не приведет к автоматическому изменению цен в регистре ЦеныНоменклатуры. Это будет лишь расчетная величина для формирования проводки по 42 счету в данном конкретном документе.

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

Мы выяснили, что скрытие колонок — это не программная ошибка, а осознанная позиция методистов 1С. Разделим итоги на несколько пунктов:

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

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

← На главную