При работе в программных продуктах 1С пользователи часто сталкиваются с ситуацией, когда после очередной синхронизации данных между конфигурациями 1С:Бухгалтерия предприятия 3.0 (БП) и 1С:Зарплата и управление персоналом 3.1 (ЗУП) основная организация неожиданно меняет свой юридический статус. Она приобретает признак обособленного подразделения, а в ее карточке появляется несуществующая головная организация. При этом стандартные попытки вернуть прежний вид организации блокируются интерфейсом программы: кнопки становятся неактивными, а стандартная обработка группового изменения реквизитов сообщает об успешном выполнении, но фактически ничего не меняет.
В этой статье мы подробно разберем, почему возникает этот неприятный сбой, как обойти жесткие блокировки платформы и вернуть организации статус юридического лица, а также выясним, что делать с внезапно выросшим размером базы данных и загадочным файлом $NEW$ в рабочей папке.
Для того чтобы эффективно решить проблему, нам необходимо понять физику процесса синхронизации. Сбой, при котором полноценное юридическое лицо превращается в обособленное подразделение, чаще всего происходит из-за некорректного сопоставления объектов обмена.
Проанализируем основные предпосылки возникновения этой ошибки:
1С:Зарплата и управление персоналом в карточке организации может быть установлена скрытая или забытая галочка У организации есть филиалы (обособленные подразделения). При выгрузке пакета данных XML-схема передает эти свойства в БП, принудительно перезаписывая реквизиты принимающей стороны.Многие пользователи пробуют исправить ситуацию "в лоб" с помощью встроенной обработки Групповое изменение реквизитов, но сталкиваются с тем, что программа игнорирует изменения. Это происходит потому, что при обычной записи элемента срабатывает внутренняя бизнес-логика конфигурации. База БП видит заполненное поле Головная организация и жестко блокирует попытку снять флаг обособленного подразделения, считая это нарушением целостности данных.
Рассмотрим, как обойти эту проверку и принудительно очистить системные поля по шагам:
Функции для технического специалиста (в старых релизах — Все функции). Если данный пункт скрыт, включим его: Главное меню — Настройки — Параметры — установить галочку Отображать команду "Функции для технического специалиста". Находим в списке обработок Групповое изменение реквизитов.Изменять: выберем справочник Организации. Нажмем на ссылку Все элементы рядом и добавим условие отбора: Ссылка Равно [Ваша пострадавшая организация]. Это критически важно, чтобы случайно не изменить данные других юридических лиц в базе.Дополнительные параметры в самом низу формы обработки. В открывшемся окне перейдем на вкладку Специальные возможности и установим флажки "Режим разработчика", "Показывать служебные реквизиты" и, если доступно, "Отключать проверки при записи". Нажмем ОК.Очистить (оставим поле абсолютно пустым). Найдем строку "Обособленное подразделение" (или "Вид организации") и установим для нее значение Ложь (снимем флажок).Изменить реквизиты. В режиме разработчика платформа запишет изменения напрямую в базу данных в обход стандартных экранных проверок. Вид организации вернется к стандартному юридическому лицу.Если групповая обработка по каким-то причинам не справилась с задачей, мы можем прибегнуть к программной перезаписи объекта. Для этого воспользуемся внешней обработкой "Групповой запуск кода" или встроенным конфигуратором. Нам необходимо отключить выполнение бизнес-логики при записи с помощью свойства ОбменДанными.Загрузка.
Проанализируем следующий пример программного кода:
// Выбираем нужную организацию по ИНН
ОрганизацияСсылка = Справочники.Организации.НайтиПоРеквизиту("ИНН", "7701020304");
Если Не ОрганизацияСсылка.Пустая() Тогда
// Получаем объект для редактирования
ОрганизацияОбъект = ОрганизацияСсылка.ПолучитьОбъект();
// Сбрасываем привязку к головной организации
ОрганизацияОбъект.ГоловнаяОрганизация = Справочники.Организации.ПустаяСсылка();
// Отключаем признак обособленного подразделения
ОрганизацияОбъект.ОбособленноеПодразделение = Ложь;
// Включаем режим обмена данными, чтобы обойти стандартные проверки транзакции
ОрганизацияОбъект.ОбменДанными.Загрузка = Истина;
// Записываем изменения в базу
ОрганизацияОбъект.Записать();
Сообщить("Вид организации успешно восстановлен программным путем!");КонецЕсли;
Этот простой скрипт гарантированно очистит заблокированные реквизиты карточки организации, вернув ей стандартный вид.
Даже если мы успешно исправили карточку организации в БП, при следующей же автоматической синхронизации данные могут перезаписаться снова. Чтобы этого не произошло, необходимо скорректировать настройки обмена информацией.
Выполним следующие действия:
1С:Зарплата и управление персоналом.Администрирование — Синхронизация данных — Настройки синхронизации.Настроить правила отправки данных.По всем организациям, установим переключатель в положение "Только по выбранным организациям".После проведения масштабных процедур синхронизации и исправления ошибок пользователи часто замечают, что в каталоге с базой данных (для файлового варианта работы) появляется огромный файл с расширением вида _$NEW$_.1CD, а свободное место на диске резко сокращается.
Разберем природу этого явления. Файл _$NEW$_.1CD представляет собой временную копию базы данных, создаваемую платформой 1С:Предприятие 8.3 при выполнении сложных транзакций, реструктуризации таблиц или тестировании физической целостности (например, при работе утилиты chdbfl.exe).
Если этот файл остался на диске после закрытия программы, это свидетельствует о следующем:
1cv8.exe через Диспетчер задач).Как безопасно вернуть дисковое пространство:
*.1cl) отсутствуют._$NEW$_.1CD и смело удалите его вручную. Это освободит занятые мегабайты на жестком диске.Конфигуратор, перейдите в меню Администрирование — Тестирование и исправление и запустите проверку логической и ссылочной целостности базы данных, чтобы исключить скрытые ошибки транзакций.Соблюдение этих простых инструкций и понимание внутренней логики работы платформы позволит вам быстро восстановить учет и избежать досадных сбоев при синхронизации данных в будущем.