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