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