В типовых решениях «1С:Бухгалтерия 8.3» программная логика часто скрывает определенные поля в зависимости от настроек учетной политики. Одной из самых частых проблем является скрытие колонки Себестоимость (или Сумма) в документе «Требование-накладная» (или «Расход материалов»), если в настройках выбран способ оценки запасов «По средней». В этой статье мы подробно разберем, как обойти это ограничение и заставить форму отображать нужные данные.
Прежде чем приступать к правкам, проанализируем ситуацию. В управляемом приложении 1С видимость элемента формы может определяться несколькими независимыми механизмами. Если вы изменили свойство Видимость в конфигураторе, но в режиме «Предприятие» ничего не изменилось, значит, работают другие факторы:
ПриСозданииНаСервере или ПриЧтенииНаСервере часто вызываются общие модули, которые скрывают колонки на основании параметров учета.
КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "МатериалыСебестоимость");
Даже если закомментировать эти строки, колонка может не появиться из-за наличия других ограничителей.
Разберем одну из самых глубоких причин — связь элемента формы с Функциональными опциями. В 1С:Бухгалтерии отображение суммовых показателей часто завязано на опции, проверяющие способ списания ТМЦ.
Чтобы разорвать эту связь, выполним следующие действия:
МатериалыСебестоимость).Часто программист вносит изменения в конфигурацию, но не видит их в режиме пользователя. Выясним причину: управляемые формы сохраняют настройки отображения (ширину, видимость, порядок колонок) для каждого пользователя индивидуально. Эти настройки имеют приоритет над тем, что задано в конфигураторе.
Рассмотрим, как сбросить эти настройки:
Это действие принудительно обновит форму до состояния, заданного в актуальной версии конфигурации.
Проанализируем интересное решение, к которому пришел автор темы. Иногда в метаданных формы накапливаются неявные связи или ошибки кэширования, которые мешают отображению конкретного элемента. Если колонка МатериалыСебестоимость упорно не хочет показываться, а колонка МатериалыКоличество работает корректно, можно применить «хитрость» с копированием свойств.
Разберем по шагам:
МатериалыСебестоимость (предварительно запомнив его путь к данным).МатериалыКоличество) в ту же таблицу.Имя на МатериалыСебестоимость.ПутьКДанным укажем реквизит табличной части, отвечающий за себестоимость: Объект.Материалы.Себестоимость.Важный момент: при таком копировании новый элемент наследует настройки видимости и доступности от «работающего» соседа, игнорируя старые проблемные настройки, которые могли быть жестко прописаны для старого имени элемента.
Выясним критически важную деталь: просто вывести колонку на экран недостаточно для того, чтобы данные из нее попали в учет. В типовой «Бухгалтерии предприятия» при способе списания «По средней» алгоритм проведения игнорирует заполненную сумму в документе. Он рассчитывает её автоматически по формуле: (СуммаОстатка / КолОстатка) * КолСписываемое.
Если ваша задача — загружать данные из сторонней программы, где суммы уже рассчитаны, вам потребуется модифицировать модуль объекта:
ОбработкаПроведения.Себестоимость программа брала значение именно оттуда, а не выполняла расчет по среднему.Пример логики в коде (условно):
Для Каждого СтрокаТЧ Из Объект.Материалы Цикл
Движение = Проводки.Добавить();
Движение.Сумма = ?(СтрокаТЧ.Себестоимость <> 0, СтрокаТЧ.Себестоимость, РассчитаннаяПоСреднейСумма);
// Остальные реквизиты проводки...
КонецЦикла;
Мы рассмотрели комплексный подход к решению проблемы отображения колонок. Помните, что в управляемых формах 1С 8.3 видимость — это совокупность свойств элемента, функциональных опций, программного кода и пользовательских настроек. Использование метода пересоздания элемента (копирования работающего) является эффективным «быстрым» решением, когда стандартный поиск причины затягивается.