Выключили контроль остатков в УТ, а документ все равно не проводится

06.10.26

Разработка - Механизмы типовых конфигураций

В УТ есть кнопка «Отключить контроль остатков (на время сеанса)». Ее нажимают, когда документ не проводится из-за остатка. Нажали, провели заново — документ опять не прошел, а текст отказа стал другим. Разбираем, почему так. Переключателей в персональных настройках три, а не один, и за нехватку товара на складе отвечает не тот, на котором написано «остатки». Внутри типовой флаг отключения берется только из параметра про резервы, причем сообщение про нехватку физического остатка формируется исключительно при выключенном контроле — и оно запрещает проведение. То есть выключение не снимает отказ, а меняет его причину. Еще — как проверить, что журнал регистрации в базе вообще пишет. Пустая выборка по событию похожа на «такого не было», а означать может «журнал выключен». И почему проведение документа мимо его формы спотыкается на нерассчитанных скидках. Тексты отказов приведены дословно, с проверкой на демобазе УТ 11.5.22.149.

В «Управлении торговлей» есть кнопка «Отключить контроль остатков (на время сеанса)». Лежит она в персональных настройках, подсказка обещает «выключение контроля остатков товаров организаций для текущего пользователя на время сеанса работы». Человек нажимает ее ровно в одном случае: документ не проводится, остатка не хватает, а отгрузить надо сейчас.

Нажали. Провели заново. Документ не прошел — и текст отказа стал другим.

Разберем, что эта кнопка делает на самом деле, почему переключателей там три, а не один, и какой из них отвечает за какую проверку. Проверено 02.10.2026 на демобазе УТ 11.5.22.149.

 

Если некогда читать

Нехватку товара на складе отпускает не эта кнопка, а соседняя, про резервы. И только ту часть, где товар есть, но занят.

 

Три кнопки, а не одна

В персональных настройках рядом стоят три переключателя. Выглядят они одинаково, названия похожи, и это главная ловушка: за ними стоят три разных параметра сеанса, и каждый отпускает свою проверку.

 

Кнопка Параметр сеанса Запись в журнале регистрации
Отключить контроль остатков (на время сеанса) ПроводитьБезКонтроляОстатковТоваровОрганизаций Контроль остатков товаров организаций
Отключить контроль резервов (на время сеанса) ПроводитьБезКонтроляРезервовТоваровПоЗаказам Контроль резервов товаров по заказам
то же для ретро-бонусов ПроводитьБезКонтроляОстатковРетроБонусовКлиентов Контроль остатков ретро-бонусов

 

Каждое нажатие пишет в журнал регистрации запись уровня «Предупреждение» с текстом вида «Пользователем Иванов в рамках своего сеанса выключен контроль остатков товаров организаций». Обратное нажатие пишет такую же запись со словом «возобновлен». Видимость кнопок зависит от прав: без соответствующего права пользователь их просто не увидит.

Второе штатное место — «НСИ и администрирование», и там эти кнопки разнесены по разным разделам. «Отключить контроль остатков» лежит в настройках финансового результата и контроллинга, в группе «Учет товаров», прямо под флажком «Контролировать остатки товаров организаций».

 

 

«Отключить контроль резервов» стоит в другом разделе совсем — в настройках склада и доставки, в группе «Обеспечение потребностей».

 

 

Кнопки про ретро-бонусы во втором месте нет вовсе, она есть только в персональных настройках. Код там, где кнопка продублирована, повторен один в один, вплоть до текста, который уходит в журнал, а подсказка под кнопкой отсылает обратно в персональные настройки. То есть попасть в это состояние можно двумя дорогами, и ни одна из них не требует ничего, кроме права.

 

Что видно в прогоне

Чтобы увидеть разницу, нужен документ, которому товара заведомо не хватает. Делается это руками за минуту: открываем любую проведенную реализацию, копируем ее, в строке товара ставим количество на несколько порядков больше, чем есть на складе, и пробуем провести.

В демобазе на складе «Склад бытовой техники» кондиционера было 151 штука. В копии документа поставили 100 000 и поставили дату 02.10.2026. Дальше — три попытки одного и того же проведения.

Попытка первая, все контроли включены. Отказ, одна причина:

Для отгрузки/резервирования необособленного товара "Кондиционер FIRMSTAR 12М",
"С ручным управлением" на складе "Склад бытовой техники" недостаточно свободного
остатка в количестве 99 970 шт.
Проведение не выполнено Реализация товаров и услуг ТДУТ-000026

Попытка вторая, выключили контроль остатков. Нажали ту самую кнопку, в журнале появилась запись. Текст отказа — слово в слово тот же. Документ не провелся.

Попытка третья, выключили еще и контроль резервов. Документ не провелся, но причин стало две, и первая новая:

Для отгрузки/резервирования необособленного товара "Кондиционер FIRMSTAR 12М",
"С ручным управлением" на складе "Склад бытовой техники" недостаточно остатка
в наличии в количестве 99 968 шт.
Для отгрузки/резервирования необособленного товара ... недостаточно свободного
остатка в количестве 99 970 шт.
Проведение не выполнено

Разницу видите?

Сообщение про «остаток в наличии» появилось только после того, как контроль выключили. До этого его не было вовсе. То есть выключение контроля не убрало отказ, а поменяло его причину — и заодно подкинуло вторую.

 

Почему так

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

ОтключитьКонтроль = ПараметрыСеанса.ПроводитьБезКонтроляРезервовТоваровПоЗаказам;

Флаг берется из параметра про резервы. Параметр про остатки товаров организаций в этой процедуре не участвует вообще. Поэтому кнопка «Отключить контроль остатков» на этот блок проверок не влияет — и вторая попытка в прогоне дала тот же текст, что первая.

Дальше процедура разбирает каждую ошибку контроля на три части и ведет себя с ними по-разному.

Физический остаток. Блок начинается так:

Количество = ОшибкаКонтроля.КоличествоФизическийОстаток;
Если Количество > 0 И ОтключитьКонтроль Тогда
	...
	ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, Объект, Неопределено, Неопределено, Отказ);
КонецЕсли;

Условие содержит И ОтключитьКонтроль. Это значит, что сообщение про нехватку остатка в наличии формируется только при выключенном контроле — и формируется с передачей Отказ, то есть проведение запрещает. При включенном контроле до этого блока дело просто не доходит.

Свободный остаток. Здесь наоборот:

Если ОтключитьКонтроль Тогда
	ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, Объект, Неопределено, Неопределено, Неопределено);
Иначе
	ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, Объект, Неопределено, Неопределено, Отказ);
КонецЕсли;

При выключенном контроле пятым параметром идет Неопределено вместо Отказ. Сообщение читателю остается, но проведение больше не блокирует. Ровно так же устроен третий блок, про нехватку запасов для обеспечения заказов.

Сложим это вместе. Выключение контроля резервов снимает жесткость с двух проверок из трех и добавляет третью, которой до этого не было. Поэтому документ, которому товара физически нет, не проведется никогда — ни с включенным контролем, ни с выключенным. Меняется только текст, которым вам об этом скажут.

Логика тут, если присмотреться, вполне разумная. Свободный остаток — это то, что осталось после резервов под заказы; запретить отгрузку сверх него — защита чужих обещаний, и ее пользователю разрешают снять под свою ответственность. Физический остаток — это товар, который лежит на полке; отгрузить больше нельзя не по регламенту, а по арифметике. Поэтому второй блок проверок после снятия контроля и включается: до этого он был не нужен, потому что первый отсекал раньше и строже.

Догадается ли об этом человек, который видит кнопку со словом «остатки» и подсказку про остатки товаров организаций?

По нашему опыту — нет. Первое, что он делает после неудачи, это нажимает кнопку второй раз, а потом идет писать в поддержку, что настройка не работает.

 

Так что же делает кнопка про остатки

Второй параметр сеанса работает в другом слое — там, где УТ сводит остатки товаров организаций. Решение принимается строкой вида:

КонтролироватьОтрицательныеОстатки = Не ПараметрыСеанса.ПроводитьБезКонтроляОстатковТоваровОрганизаций
	И Константы.КонтролироватьОстаткиТоваровОрганизаций.Получить();

Обратите внимание на вторую половину условия. Если константа «Контролировать остатки товаров организаций» выключена, контроля нет и так, независимо от кнопки. Если включена — кнопка его снимает. То есть кнопка про остатки отвечает за учет по организациям, а не за то, хватит ли товара на складе.

Отсюда практический вывод, который экономит время на разборе такой заявки. Сначала надо понять, какой именно остаток не сошелся, и только потом трогать кнопки:

  • отгружаем то, что физически есть, но зарезервировано под чужой заказ — нужна кнопка про резервы;
  • минус по остаткам товаров организаций при передаче между организациями — кнопка про остатки;
  • товара нет физически — ни одна кнопка не поможет, нужно оприходование или другой склад.

Спутать первые два случая легко, потому что в интерфейсе кнопки стоят рядом и названия у них почти одинаковые.

 

Куда смотреть потом: журнал регистрации

Каждое нажатие оставляет след, и это хорошая новость для разбора задним числом. Запись уровня «Предупреждение», имя события — «Контроль остатков товаров организаций», в комментарии имя пользователя. Номер сеанса в записи есть, значит документы, проведенные тем же сеансом в те же минуты, видны рядом.

Плохая новость в том, что следа может не оказаться, и причина будет не в пользователе.

В нашей демобазе оказалось, что журнал регистрации выключен целиком. Выглядело это так: записи не находятся, хотя кнопку нажимали. Если в такой момент записать строку в журнал программно, вызов отработает без ошибки — и строки в журнале не появится. Пустой результат выборки похож на «такого не было», а на самом деле означает «журнал ничего не пишет».

Разница между этими двумя выводами стоит дорого. Первый отправляет разбираться с данными, второй — с настройкой базы. А выглядят они одинаково: ноль строк в отборе.

Проверить это можно двумя способами, и первый не требует вообще ничего.

Посмотреть на каталог базы. Рядом с файлом базы лежит папка 1Cv8Log. Если самый свежий файл в ней датирован прошлым месяцем, журнал не ведется. У нас последний файл был от 20.08.2026, а прогон шел 02.10.2026 — полтора месяца тишины, которые легко принять за спокойную базу.

Спросить платформу. Метод ПолучитьИспользованиеЖурналаРегистрации возвращает массив уровней, которые регистрируются. Если массив пуст, журнал выключен. Метод не принимает параметров — и это та грабля, на которой легко посидеть полчаса: лишний аргумент дает ошибку компиляции, а она уносит весь модуль целиком. Форма после этого не открывается, а платформа показывает «К сожалению, возникла непредвиденная ситуация» без имени метода и без номера строки.

Включить журнал можно и из кода, парным методом УстановитьИспользованиеЖурналаРегистрации, которому тоже нужен массив уровней. И нужен монопольный доступ к базе: пока в ней есть другой сеанс, метод падает с «Ошибка исключительной блокировки информационной базы» и перечисляет, кто мешает. В файловой базе мешает обычно сам стартовавший сеанс: при запуске поднимается фоновое задание, и оно держит базу секунд двадцать. Повтор раз в две секунды проходит с десятой или одиннадцатой попытки. Ключ командной строки, отключающий регламентные задания, тут не помогает — он про регламентные, а это задание запущено программно.

 

Побочная находка про проведение из списка

Пока мы готовили документ для прогона, УТ отказала по совсем другой причине:

В документе Реализация товаров и услуг ТДУТ-000024 не рассчитаны автоматические
скидки (наценки). Проведение невозможно.

Дальше типовая прямо советует провести документ из его формы — там скидки пересчитываются. Проверка стоит в ПередЗаписью и смотрит на реквизит СкидкиРассчитаны вместе с функциональной опцией про автоматические скидки в продажах. Документов с такой проверкой ровно четыре: реализация товаров и услуг, заказ клиента, акт выполненных работ и заявка на возврат товаров от клиента.

Практический смысл простой: если количество или цену меняли не в форме документа, а любым другим путем, и потом провели, — скидки останутся нерассчитанными, и проведение встанет. Текст сообщения при этом не намекает ни на количество, ни на цену, поэтому первая мысль обычно уходит в другую сторону.

 

Третий переключатель, про который обычно не вспоминают

Рядом с двумя разобранными стоит третий, отключение контроля остатков ретро-бонусов. Устроен он так же: свой параметр сеанса, свое имя события в журнале, своя кнопка с заголовком, который после нажатия меняется на «Возобновить».

Держать его в голове стоит по одной причине. Когда разбираешь задачу «документ не проводится, а пользователь говорит, что контроль выключил», важно помнить, что выключений три и каждое снимает свою проверку. Ответ «я нажал кнопку» не говорит ничего, пока не выяснено, какую именно из трех.

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

 

Как связать запись журнала с документами

Запись о выключении контроля сама по себе дает мало: она говорит, что человек нажал кнопку, но не говорит, что он после этого провел. Связать одно с другим помогает номер сеанса, он есть и в записи о выключении, и в записях о проведении документов.

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

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

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

 

Короткий итог

Кнопка «Отключить контроль остатков» названа шире, чем работает. Она не разрешает отгрузить то, чего нет; она снимает контроль по организациям, и то лишь когда включена соответствующая константа. Нехватку товара на складе отпускает соседняя кнопка, про резервы, — и отпускает только ту часть, где товар физически есть, но занят. Физический дефицит остается жестким отказом всегда, просто текст отказа после выключения контроля меняется, и это сбивает с толку сильнее всего.

А если следов нажатия в журнале не видно — прежде чем верить пользователю на слово, посмотрите, пишет ли журнал вообще. У нас на этом ушло полдня: сначала мы искали, кто нажимал кнопку 02.10.2026, и только потом сообразили посмотреть, записывается ли вообще хоть что-нибудь.

Вступайте в нашу телеграмм-группу Инфостарт

контроль остатков проведение документов УТ 11.5 Управление торговлей превышение доступного количества недостаточно физического остатка персональные настройки резервы склад отказ в проведении журнал регистрации скидки расчет скидок реализация товаров заказ клиента остатки товаров проведение документа программно типовая конфигурация учет запасов диагностика

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика Механизмы типовых конфигураций Разработчик 1С 8.5 1С:Управление нашей фирмой 3.0 Абонемент ($m)

Кто ссылается на этот справочник, на что ссылается документ и какие регистры он двигает — обработка показывает это схемой прямо в базе. Выбранный объект — в центре, слева — кто ссылается на него, справа — на что ссылается он, под схемой — через какой реквизит; щелчок по соседу делает центром его. Много соседей — группы по видам, связи через составные типы — пунктиром и отключаются флажком. Для документации схему можно взять текстом PlantUML или сохранить файлом HTML вместе с таблицей связей. В статье я разбираю код: связи по типам реквизитов, движениям и владельцам, временное хранилище формы, схему в поле HTML и щелчок по узлу.

2 стартмани

30.09.2026    891    18    Petr_32    2    

6

Механизмы типовых конфигураций Разработчик 1С:Предприятие 8 Абонемент ($m)

Использование переопределяемых процедур в 1С на управляемых формах.

1 стартмани

01.09.2026    4297    waider    3    

15

Механизмы типовых конфигураций Разработчик 1С:Предприятие 8 1С:Управление торговлей 11 Россия Бесплатно (free)

С 1 сентября компании с выручкой от 120 миллионов обязаны принимать цифровой рубль, за отказ — штраф до 50 тысяч за каждый случай. Я снял выгрузку с актуального релиза «Управления торговлей» и пошёл смотреть, где это включается. Оказалось, что казначейский контур в типовой сделан подробно, а кассового нет вообще — и это не забывчивость, а решение, записанное в конфигурации прямым текстом.

31.08.2026    2423    G_100802897175107255412    6    

5

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Разработчик 1С 8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Данное расширение — это механизм, сделанный при помощи двух модулей из БСП (3.1.11.415), который позволяет динамически добавлять команды (кнопки и не только при желании) на формы управляемого приложения без изменения конфигурации. На примере данного механизма удобно рассмотреть некоторые возможности для расширения функционала объектов, которые подключены к механизму библиотеки стандартных подсистем.

1 стартмани

20.03.2026    5370    InFlach    0    

6

Механизмы типовых конфигураций Разработчик Стажер 1С 8.3 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)

Интервальные регистры в 1С:ЗУП 3.1 заменяют тяжелые срезы последних, ускоряя отчеты по кадровым данным через интервалы ДатаНачала–ДатаОкончания. Разбираем отличия, примеры кода, плюсы и способы синхронизации.

12.03.2026    7219    AlexeyPROSTO_1C    5    

21

Механизмы типовых конфигураций Разработчик Стажер 1С 8.3 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)

Как в ЗУП работает механизм расстановки времени в регистрах сведений с помощью подписки на события?Рассматривается логика сдвигов для разных типов документов (прием, увольнение, отпуск) и дается инструкция по подключению нового регистра к этому механизму.

03.03.2026    4627    YA_1100893639    1    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. RocKeR_13 1490 06.10.26 17:53 Сейчас в теме
Внутри типовой флаг отключения берется только из параметра про резервы, причем сообщение про нехватку физического остатка формируется исключительно при выключенном контроле — и оно запрещает проведение.

Я честно прочел это раза три и ничего не понял) Бросайте вы эти ЧатыГПТ и изучайте лучше конфигурацию: по коду или по официальным источникам.

Кнопка «Отключить контроль остатков» названа шире, чем работает. Она не разрешает отгрузить то, чего нет; она снимает контроль по организациям, и то лишь когда включена соответствующая константа. Нехватку товара на складе отпускает соседняя кнопка, про резервы, — и отпускает только ту часть, где товар физически есть, но занят.

Названа она ровно так, как и работает. А вы в контроле остатков так до конца и не разобрались.
IgorS; Tochka-Scarab; +2 – Ответить
Для отправки сообщения требуется регистрация/авторизация