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