В процессе ведения учета в программе «1С:Бухгалтерия предприятия 3.0» пользователи часто сталкиваются с необходимостью скорректировать код элемента в справочнике Договоры контрагентов. По умолчанию это поле скрыто от редактирования на форме элемента, и стандартное нажатие на клавиши редактирования не приносит результата. Система оберегает уникальность кодов, чтобы не нарушить встроенные механизмы автонумерации.
Тем не менее, иногда ручная корректировка кода жизненно необходима — например, при исправлении ошибок ручного ввода, после некорректного переноса данных или при сбоях синхронизации. В этой статье мы подробно разберем, как решить эту задачу исключительно штатными средствами платформы 1С, не прибегая к программированию и изменению конфигурации.
Самый быстрый и простой способ изменить код конкретного договора — временно вывести скрытый реквизит Код на форму самого элемента и отредактировать его. Разберем этот процесс по шагам:
Договоры и перейдем в карточку нужного нам договора, код которого требуется изменить.Шапка, затем подгруппу ШапкаПравая (в зависимости от релиза конфигурации расположение может немного отличаться, но поле всегда находится внутри корневой группы Шапка).Код и установим напротив него флажок видимости.После выполнения операции настоятельно рекомендуется вернуть настройки формы в исходное состояние (через Ещё — Изменить форму — Установить стандартные настройки), чтобы рядовые пользователи случайно не изменили коды других договоров.
Если нам требуется изменить код без вывода реквизита на форму или обработать несколько элементов сразу, воспользуемся мощным встроенным инструментом администрирования. Рассмотрим, как это сделать аккуратно, чтобы не повредить другие данные в информационной базе.
Договоры контрагентов.Все элементы, добавим условие отбора: Ссылка Равно [Выбираем наш договор]. Нажмем кнопку ОК. Если пропустить этот шаг, программа изменит коды абсолютно всех договоров в базе!Код останется заблокированным для группового редактирования. Нажмем Перечитать данные.Код.Часто пользователи пытаются изменить код договора из-за того, что в базе случайно образовались два одинаковых договора, и им хочется переименовать код одного из них, чтобы «развести» их в учете. В такой ситуации правильнее использовать другой штатный инструмент — Поиск и замена дублей.
Этот инструмент находится в разделе Администрирование — Обслуживание — Корректировка данных — Поиск и замена дублей. Он позволяет объединить два дублирующих договора в один. При этом система автоматически перенаправит все движения в документах на правильный элемент, а некорректный договор с «плохим» кодом будет помечен на удаление. Это гораздо безопаснее, чем ручная перекодировка.
Изменение кода элемента в справочниках 1С — это действие, которое может повлечь за собой серьезные технические последствия. Выясним основные причины, почему разработчики платформы по умолчанию скрывают и защищают этот реквизит:
00-000015). Если пользователь вручную запишет код без нулей (например, просто 16) или добавит буквенные префиксы (например, Д-16), алгоритм платформы собьется. Следующий созданный автоматически договор получит неверный код, а при достижении предела уникальности система начнет выдавать критическую ошибку «Код справочника стал не уникальным» и полностью заблокирует создание новых договоров.1С:Бухгалтерия обменивается данными с другими конфигурациями (например, 1С:Управление торговлей или 1С:ЗУП), сопоставление объектов часто завязано на комбинацию полей Владелец (Контрагент) + Организация + Код договора. Смена кода в одной базе приведет к тому, что при очередном обмене синхронизация не найдет договор и создаст в системе дубликат объекта с исходным кодом.Если после ваших манипуляций или действий других пользователей система перестала автоматически присваивать коды новым договорам, паниковать не стоит. Ситуацию можно исправить. Для этого выполним следующие действия:
00-000028, а пользователь записал его как 28, вернем все недостающие нули и префиксы.Для наглядности приведем пример небольшого программного кода на языке 1С, который разработчики используют для автоматического восстановления длины кодов справочника (добавления лидирующих нулей):
// Процедура для автоматического восстановления правильного формата кодов
Выборка = Справочники.ДоговорыКонтрагентов.Выбрать();
Пока Выборка.Следующий() Цикл
ТекущийКод = СокрЛП(Выборка.Код);
// Допустим, стандартная длина кода договора в конфигурации составляет 9 символов
Если СтрДлина(ТекущийКод) < 9 Тогда
НовыйКод = ТекущийКод;
Пока СтрДлина(НовыйКод) < 9 Цикл
НовыйКод = "0" + НовыйКод;
КонецЦикла;
ДоговорОбъект = Выборка.ПолучитьОбъект();
ДоговорОбъект.ОбменДанными.Загрузка = Истина; // Отключаем платформенные проверки при записи
ДоговорОбъект.Код = НовыйКод;
ДоговорОбъект.Записать();
КонецЕсли;
КонецЦикла;
Использование свойства ОбменДанными.Загрузка = Истина позволяет записать объект напрямую в базу данных, обходя жесткие проверки уникальности кода на этапе записи, что упрощает массовое исправление ошибок кодирования силами специалистов.
Таким образом, мы детально изучили все возможные стандартные способы редактирования кодов договоров в 1С 8.3 без программирования, узнали о потенциальных опасностях этих действий и методах ликвидации их последствий. Будьте предельно внимательны при работе со служебными реквизитами программы!