Довольно специфическая ситуация: нужно исправить документы с пустыми датами в базе (1C v7). Проблемный документ нашел, но сохранить нет возможности - дата документа меньше даты в константе ДатаЗапретаРедактирования - самостоятельно поменять значение константы не получится (база периферийная, а средствами конфигурации запрещено изменение значения этой константы не в центре). По процедуре это нужно делать так: Объяснить центральной бухгалтерии, для чего нужно стереть значение константы ДатаЗапретаРедактирования - заставить их это сделать - организовать выгрузку данных из центра на несколько периферийных отделений - проконтролировать их прием на местах и загрузку - провести нужные изменения через удалённый доступ на местах - выгрузить базы в центр - проконтролировать их прием и изменение константы в центре - и опять выгрузиться на филиалы. Нет ничего проще ))) Человеческий фактор на каждом этапе. Но значение константы можно поправить через SQL-запрос. Такие изменения нужно проводить максимально осторожно, до конца контролируя свои действия, не трогая ничего лишнего, помня о том, что нормальное (средствами 1С) изменение документов, справочников может потянуть за собой массу изменений в регистрах, проводках, справочниках и т.д. И вносить рассогласование в базу - создавать пользователям и себе массу лишних проблем. После осознания необходимости действовать аккуратно можно приступать к работе. Нужно запустить Enterprise Manager, пройти по пути Console Root - Microsoft SQL Servers - SQL Server Group - (local) Windows NT - Databases. Константы и периодические реквизиты справочников хранятся в таблице _1SCONST нужной базы (ссылка). Нужно понимать, что для изменения значения константы необходимо узнать её id. Мало того, константы с одинаковыми именами в различных конфигурациях имеют разные id. Вопрос поиска id будет рассмотрен позже. Допустим, id найден и равен 141. Поэтому запрос SELECT * FROM _1sconst WHERE id = 141 покажет значение нужной мне константы (в данном случае это ДатаЗапретаРедактирования - хорошо, что константа не периодическая). Запрос UPDATE _1sconst SET value = '' WHERE id = 141 сбросит значение этой константы (опять-таки
хорошо, что константа не периодическая).
А запрос UPDATE _1sconst SET value = '08.01.2013' WHERE id = 141 установит значение константы ДатаЗапретаРедактирования на 8 января этого года. Для выполнения запроса нужно в Enterprise Manager запустить Tools - SQL Query Analyzer, выбрать нужную базу, внести запрос в поле ввода и нажать F5.Теперь о том, как найти id константы. Эта информация находится внутри md-файла. Для её нахождения можно использовать плагин t1clister (универсальный плагин для просмотра файлов 1С). Он идёт в составе Total Commander 1C Edition. Можно достать оттуда и прицепить к своему Total Commanderу.
С подключенным плагином необходимо стать на md-файл базы и нажать F3. Перейти в раздел "Состав конфигурации" и найти строку, похожую на эту: {"141","ДатаЗапретаРедактирования","Дата, запрета редактирование данных","","D","0","0","0","0","0","0"}, id идёт в самом начале строки. |