При адаптации 1С:УНФ под нужды мебельного или фасадного производства начинающие разработчики часто совершают критическую ошибку — пытаются создать новый документ "с нуля" вместо того, чтобы использовать штатные механизмы. Рассмотрим, почему создание дублирующих документов (например, "Свой заказ покупателя") ведет к потере связи с регистрами учета, и проанализируем правильные способы реализации специфических требований бизнеса.
В системе 1С:УНФ все цепочки документов жестко связаны. Типовой документ ЗаказПокупателя делает движения по множеству регистров накопления: ЗаказыПокупателей, Продажи, Запасы, ГрафикДвиженияДенежныхСредств и другим. Создав свой документ, вы будете вынуждены вручную прописывать движения по всем этим регистрам. В противном случае у вас перестанут работать типовые отчеты (например, "План-фактный анализ продаж" или "Анализ заказов").
Важный момент: если ваша задача — добавить высоту, ширину и квадратуру фасада, а также изменить логику списания (списывать материалы вместо готового изделия), рассмотрим пошагово, как это сделать грамотно.
Вместо изменения основной конфигурации "в лоб", проанализируем использование расширений. Это позволит сохранить программу на поддержке и упростит будущие обновления.
ЗаказПокупателя.Запасы в расширении. Они будут отображаться в форме документа как родные поля.&После или &Вместо для процедуры проведения.Рассмотрим пример кода в расширении, который позволяет добавить расчет квадратуры при изменении размеров прямо в форме документа:
&НаКлиенте
Процедура Расш1_ВысотаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Запасы.ТекущиеДанные;
Если ТекущаяСтрока <> Неопределено Тогда
// Рассчитываем квадратуру в метрах
ТекущаяСтрока.Квадратура = (ТекущаяСтрока.Высота * ТекущаяСтрока.Ширина) / 1000000;
// Пересчитываем количество, если это необходимо по логике бизнеса
ТекущаяСтрока.Количество = ТекущаяСтрока.Квадратура;
КонецЕсли;
КонецПроцедуры
Выясним причину, по которой автор темы хотел менять логику списания. Часто это связано с тем, что "Фасад" — это не готовый товар на складе, а изделие, которое нужно изготовить из материалов. В 1С:УНФ для этого существуют Паметрические спецификации.
Разберем алгоритм работы с ними:
[Высота] * [Ширина] / 1000000 * 1.1 (где 1.1 — коэффициент запаса).ЗаказеПокупателя пользователь вводит только параметры (Высота, Ширина), а система сама рассчитывает потребность в материалах.Этот метод позволяет не менять программный код проведения РасходнойНакладной. Списание материалов произойдет в момент оформления документа Производство, который будет создан на основании заказа.
Если бизнес-процесс предполагает, что производства как отдельного этапа нет, но при продаже "Фасада" со склада должны списываться "МДФ" и "Клей", используем Наборы. Рассмотрим, как это настроить:
РасходнойНакладной при выборе "Фасада" программа предложит списать его составные части.Преимущество: В печатной форме покупатель видит "Фасад", а в регистре Запасы фиксируется списание материалов. Программировать при этом ничего не нужно.
Если же вам все-таки необходимо, чтобы РасходнаяНакладная не делала движений по конкретной номенклатуре, проанализируем использование перехвата проведения. Вместо того чтобы удалять типовой код, мы можем очистить таблицу движений в самом конце процедуры.
&После("ОбработкаПроведения")
Процедура Расш1_ОбработкаПроведения(Отказ, РежимПроведения)
// Проверяем условие, при котором нам не нужно списывать запасы
Если ЭтотОбъект.ДополнительныеСвойства.Свойство("НеСписыватьЗапасы") Тогда
// Очищаем движения по конкретному регистру
Движения.Запасы.Очистить();
Движения.Запасы.Записывать = Истина;
КонецЕсли;
КонецПроцедуры
Важно помнить, что 1С:УНФ активно развивается. Версия 3.0 принесла значительные изменения в интерфейс и интеграцию с "1С:Розница". Если вы сейчас создадите "свой документ" в версии 1.6, то при обновлении на 3.0 вы столкнетесь с тем, что ваша доработка станет несовместимой с новыми АРМ (Автоматизированными рабочими местами) менеджеров. Используя дополнительные реквизиты и расширения, вы обеспечиваете легкую миграцию на новые версии программы.
Подведем итог: для решения задачи по расчету фасадов в 1С:УНФ следует комбинировать дополнительные реквизиты в расширении (для визуализации размеров) и параметрические спецификации (для автоматизации расчетов и списаний). Это сохранит целостность управленческого учета и позволит системе работать в штатном режиме без ошибок в регистрах.