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