Объект 1С «Планы счетов» — это прикладные объекты конфигурации, каждый из которых позволяет описать совокупность синтетических счетов, предназначенных для группировки информации о хозяйственной деятельности предприятия.
Путем настройки плана счетов организуется требуемая система учета; на план счетов ссылается регистр бухгалтерии.
Количество планов счетов в конфигурации не ограничено. Как правило, основной план счетов используется для бухгалтерского учета, а если требуется учет по иным стандартам (управленческий, МСФО и т.д.), то подключаются дополнительные планы счетов.
Счета в план могут быть добавлены как в конфигураторе (предопределенные), так и в пользовательском режиме.
План счетов может быть организован иерархично, ограничений по числу уровней вложенности нет.
Рисунок
[свернуть]
Предопределенные планы счетов
Типовые решения, в состав которых входит подсистема бухгалтерского учета, поставляются с предопределенным планом счетов.
Рисунок
[свернуть]
Как и любые предопределенные данные, эти счета можно отредактировать (добавить дополнительные счета) в режиме 1С:Предприятие, но нельзя удалить совсем.
Особенности работы с предопределенным планом счетов:
- В режиме конфигуратора у предопределенного счета разработчик может изменить имя, порядок, код, наименование.
Рисунок
[свернуть]
- Изменить родителя предопределенного субсчета можно и в режиме 1С:Предприятие, и в режиме Конфигуратора.
- Обязательными реквизитами у предопределенного счета являются:
- «Имя» (с пустым — сохранить не даст);
- «Вид»;
- «Забалансовый» (флаг по умолчанию установлен «ЛОЖЬ»).
Рисунок
[свернуть]
Планы счетов поддерживают многоуровневую иерархию «счет — субсчета»:
- каждый план счетов может включать необходимое количество счетов первого уровня;
- к каждому счету может быть открыто нужное количество субсчетов;
- каждый субсчет может иметь свои субсчета, и т.д.
Количество уровней вложенности субсчетов в системе 1С:Предприятие 8 не ограничено.
Создание и редактирование счетов может выполняться:
- разработчиком (предопределенные счета);
- пользователем, в процессе работы с прикладным решением (пользователь не может удалять счета, созданные разработчиком).
По любому счету или субсчету возможно ведение аналитического учета. При создании и редактировании плана счетов требуемому счету или субсчету можно поставить в соответствие необходимое количество субконто — объектов аналитического учета.
Для того чтобы иметь возможность указания субконто для счетов, план счетов связывается с планом видов характеристик, в котором описаны виды субконто, применяемые для этого плана счетов.
Для каждого счета можно задать:
- несколько признаков учета (например, количественный и валютный);
- несколько признаков учета субконто (например, суммовой, количественный, валютный), которые позволяют установить признак использования того или иного вида субконто при формировании предопределенных счетов.
Также с каждым счетом и субсчетом может быть связан ряд дополнительной информации, которая хранится в реквизитах (например, это может быть признак, запрещающий использовать счет в проводках).
Особенности работы с планами счетов:
- В режиме 1С:Предприятие создать новый план счетов пользователь не может. Новые планы счетов добавляются только в конфигураторе. Каждый план счетов — это отдельный тип объекта метаданных.
- Конфигурация может содержать неограниченное количество планов счетов.
- В плане счетов используется иерархия элементов. Первый, родительский, счет по своим свойствам не должен отличаться от обычного (тем более что технически на него может быть сделана проводка).
- Изменить вид иерархии для плана счетов нельзя (задать вид иерархии для плана счетов нельзя: по умолчанию это — иерархия элементов).
- Родитель счета определяется вне зависимости от кода и порядка счета (родитель определяется соответствующим стандартным реквизитом, в котором и содержится ссылка на вышестоящий счет).
Рисунок
[свернуть]
- У плана счетов не может быть владельца (ни один объект конфигурации не может использоваться как владелец счета — см. скриншот выше со стандартными реквизитами, владельца там нет).
- Представление счета может определяться:
- кодом счета;
- наименованием счета.
Рисунок
[свернуть]
- Количество уровней субсчетов, которые можно задать в конфигурации, не ограничено.
- Количество стандартных табличных частей в плане счетов — максимум одна при заданном (не нулевом) максимальном количестве субконто.
Рисунок
[свернуть]
- Определить единый план счетов для компании с возможностью фильтрации по организациям можно с помощью табличной части «Используется в организациях».
- Контроль уникальности в плане счетов осуществляется по коду.
Код счета и порядок счетов
Как многие объекты информационной базы, каждый счет характеризуется кодом.
Код, как правило, имеет сложную структуру, например 90.01.1, что обусловлено традицией бухучета. На практике часто возникает прикладная задача упорядочить счета по коду, и в некоторых случаях это упорядочивание может сработать некорректно.
Например, есть счета 90.01.1, 90.01.2 и 90.01.12; в этом случае при прямой сортировке по коду последний из перечисленных субсчетов встанет в середину, а не на последнее место. Для исключения таких ситуаций, у счетов есть свойство «Порядок» — это «технический» код, по которому будет идти сортировка. Для правильной сортировки порядок у указанных субсчетов нужно выставить как 90.01.01, 90.01.12, 90.01.02.
По умолчанию свойство «Порядок» заполняется автоматически на основании кода, за это отвечает флаг «Автопорядок по коду».
Рисунок
[свернуть]
Если флаг отключить, то значение реквизита «Порядок» нужно будет прописывать вручную.
Особенности работы с кодами счетов:
- Для кода счета можно задать строковый тип данных (до 628 знаков).
- В плане счетов не предусмотрены:
- автоматическая нумерация кода (код по умолчанию не заполняется, его контролирует пользователь, т.к. код счета всегда несет за собой определенный смысл);
- автоматическое заполнение порядка.
- Порядок кода предназначен для произвольного упорядочивания счетов.
- При отключенном автопорядке по коду для длины порядка можно задать от 0 до 628 знаков.
- Количество знаков, которое можно задать для длины порядка при использовании автопорядка, ограничено:
- верхнее значение — возможностями платформы 1С Предприятие;
- нижнее — длиной кода.
[свернуть]
Маска кода счета 1С
Каждый счет плана счетов должен характеризоваться кодом и наименованием. Для унификации (стандартизации) кода для плана счетов может быть задана маска.
Если пользователи не укажет какие-то символы, то платформа автоматически дозаполнит их нулями.
Возможные символы маски код счета:
- ! – любой введенный символ преобразуется в верхний регистр;
- # – допустимо ввести произвольный символ цифры, или — (знак минус), или + (знак плюс), или пробел;
- N – допустимо ввести любые алфавитно-цифровые символы (буквы или цифры);
- U – допустимо ввести любые алфавитно-цифровые символы (буквы или цифры), и любой введенный символ преобразуется в верхний регистр;
- X (латинского алфавита) – допустимо ввести произвольный символ;
- @ – допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел;
- ^ – недопустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка;
- h – допустим ввод символов обозначения шестнадцатеричных цифр;
- 9 — допустим ввод любого символа цифры.
Для того чтобы использовать в маске один из специальных символов, нужно поставить перед ним символ «\». Если маска кода содержит точки или не содержит запятых , то при вводе кода счета все точки будут автоматически заменяться запятыми.
Маска задается в настройках плана счетов.
Рисунок
[свернуть]
Особенности работы с маской кода счета:
- Маска кода определяет шаблон кода счета.
- Задание маски на закладке «Данные» в окне редактирование задает представление кода:
- в конфигураторе при работе с предопределенными счетами и
- в пользовательском режиме, но только для обычных форм (на управляемые формы маска не действует).
- Для определения маски кода можно использовать символы «!»,»9″,»N»,»h»,»U»,»Х», «@», » # «, «^».
- Если требуется заблокировать интерактивное изменение у кода счета «60.1» значения «60»в маске кода необходимо использовать символ «^».
[свернуть]
Субконто плана счетов
Субконто
Субконто (от англ. subcount — субсчет) — термин из бухгалтерского учета, может иметь следующие значения:
- Субконто — аналитический признак («разрез») счета бухгалтерского учёта. Низший иерархический элемент в структуре бухгалтерских счетов. Используется в бухгалтерских программах. Например, в программе 1C — аналитический признак бухгалтерского счета. По назначению схож с субсчетом.
- Субконто — объект аналитического учета. Под видом субконто понимается множество однотипных объектов аналитического учета, из которого выбирается объект.
[свернуть]
Платформа 1С поддерживает аналитический учет: данные каждого счета могут «горизонтально» разделяться по признакам учета, совместно именуемым «субконто». Например, задолженность по расчетам с поставщиками пользователю интересно анализировать по субконто «Контрагенты» и «Договоры».
Рисунок
[свернуть]
Субконто к счету можно добавить:
- в конфигураторе;
- в режиме 1С:Предприятие.
Таблица данных, разнесенных по субконто, довольно требовательна к ресурсам системы. Поэтому не рекомендуется делать свыше 3-4 субконто, т.к. это негативно скажется на производительности.
Технически количество возможных субконто начиная с платформы 8.2 ограничено числом 50, но для конкретного плана счетов можно задать максимально возможное их число.
Рисунок
[свернуть]
ВидыСубконтоХозрасчетные на рисунке выше — это ссылка с плана счетов на план видов характеристик (ПВХ, подробнее о плане видов характеристик). Типы данных, включенные в ПВХ, могут быть установлены как субконто на соответствующем плане счетов.
Рисунок
[свернуть]
Аналогично тому, как для плана счетов в целом могут быть добавлены признаки учета, для каждой аналитики можно задать признаки учета субконто:
Рисунок
[свернуть]
Многие счета имеют подчиненные им субсчета.
Пример
Так, счету 01 (Основные средства) подчинены субсчета: 01.01 (ОС в организации), 01.03 (Арендованное имущество) и другие.
[свернуть]
Если у счета имеются субсчета, то в программе его нельзя использовать в проводках, использовать можно только подчиненные ему субсчета.
Особенности работы с субконто планов счетов:
- Для хранения информации о возможной дополнительной аналитике по счетам бухгалтерского учета (субконто) в конфигурации используются планы видов характеристик.
- План видов характеристик может содержать виды субконто для нескольких планов счетов (из нескольких планов счетов можно сослаться на один ПВХ).
- В плане счетов определяются:
- ограничение по количеству субконто;
- варианты признаков учета субконто.
Рисунок
[свернуть]
- Платформой поддерживается максимальное количество субконто — до 50.
- Если для хранения значений субконто требуется справочник, то новые виды субконто можно определять в конфигураторе и 1С:Предприятии с использованием справочника, подчиненного плану видов характеристик, используемого для хранения видов субконто.
- Если не выбран план видов характеристик, то в плане счетов может быть недоступно изменение максимального количества субконто.
Рисунок
[свернуть]
- Для определения признака учета субконто может использоваться только тип данных «Булево» (либо ведем учет по данному признаку, либо нет).
- В платформе всегда существует один предопределенный признак учета субконто «Только обороты» (он имеет смысл для любой бизнес-модели, поскольку есть данные, анализ которых в разрезе остатков не имеет смысла, например, денежные средства в разрезе статей).
- Если в карточке счета в табличной части система не отображает новый признак учета субконто в конфигураторе, то причина в том, что не выбрали максимальное количество субконто (логика мне не понятна).
- Предопределенные субконто задаются только в конфигураторе в плане видов характеристик.
Рисунок
[свернуть]
- Кнопка «Добавить» для табличной части «Виды субконто» в конфигураторе может быть не активна в случае:
- не указано количество видов субконто;
- количество записей табличной части достигло максимального значения.
- Значение дополнительного признака учета при добавлении нового субконто в табличную часть «Виды субконто» в Конфигураторе устанавливается всегда «Истина».
- На изменение состава табличной части «Виды субконто» в 1С:Предприятие существует ограничение: недопустимо только изменение предопределенных строк табличной части.
Признаки учета счетов
Признак учета счета — это аналитический разрез, который позволяет разделять данные и ограничивает ввод данных в регистре бухгалтерии по выбранному счету. Например, если счет не отмечен как «Валютный», то операций в валюте, отличной от основной, по нему провести нельзя.
Тип значения у признака счета может быть только «Булево».
Признаки учета задаются на закладке «Данные» плана счетов и затем становятся доступными на форме счета.
Рисунок
[свернуть]
Счета могут иметь следующие признаки:
- Вид. Счет может быть активным (А), пассивным (П) или активно-пассивным (АП).
- Валютный учет (Вал.) Признак установлен для счетов, на которых производится учет денежных средств в иностранной валюте.
- Количественный учет (Кол.) Признак установлен для таких счетов, на которых, кроме суммового учета, ведется количественный. К примеру, счет 10 (Материалы), счет 41 (Товары) и другие. В стандартных бухгалтерских отчетах по этим счетам отображаются сумма и количество.
- Учет по подразделениям (Подр.) Если этот признак установлен, проводки по счету выполняются в разрезе подразделений.
- Признак налогового учета по налогу на прибыль (НУ). Используется, когда организация применяет ПБУ 18/02. Если данный признак установлен, проводки по счету отражаются не только в бухучете, но также и в налоговом учете.
- Признак забалансового учета (Заб.). Установлен для забалансовых счетов, таких как «Арендованные основные средства», «ТМЦ, принятые на ответственное хранение» и других. Также забалансовым является счет 001, используемый для операции ввода начальных остатков.
Особенности работы с признаками учета счетов:
- На закладке «Данные» одного из Планов счетов добавляем новый признак учета, затем обновляем конфигурацию базы данных. Необходимости перепроведения документов или ручного изменения движений для обеспечения возможности обращения к итогам по ранее введенным операциям нет (на имевшиеся итоги новый признак учета никак не повлияет).
- Новые признаки учета счета можно определить в окне редактирования объекта конфигурации плана счетов.
- Конфигуратор позволяет создавать неограниченное количество признаков учета.
- Признак учета счета ограничивает ввод данных в регистре бухгалтерии по выбранному счету. Например, если счет не отмечен как «Валютный», то операций в валюте, отличной от основной, по нему провести нельзя.
Формы «Плана счетов» 1С
Для того чтобы пользователь мог просматривать и изменять данные, содержащиеся в плане счетов, система поддерживает несколько форм представления плана счетов.
Система может автоматически генерировать все нужные формы. Разработчик имеет возможность создать собственные формы, которые система будет использовать вместо форм по умолчанию.
Форма списка плана счетов
Форма списка плана счетов используется для просмотра данных, содержащихся в плане счетов, и позволяет:
- выполнять навигацию по плану счетов;
- просматривать счета в иерархии и в виде простого списка;
- добавлять, помечать на удаление и удалять счета;
- выполнять сортировку и отбор отображаемой информации по нескольким критериям.
Форма счета
Форма счета используется для просмотра и изменения отдельных счетов. Как правило, она представляет данные в удобном для восприятия и редактирования виде.
Форма выбора плана счетов
Форма выбора плана счетов предназначена для выбора конкретного счета из списка и, обычно, содержит минимальный набор информации, необходимой для выбора того или иного счета. Может использоваться, например, для выбора счета при создании бухгалтерской операции.
О чем эта статья
Эта статья продолжает цикл статей «Первые шаги в разработке на 1С». В ней на практических примерах рассматривается механизм предопределенных данных, в т.ч. и в распределенной информационной базе.
Применимость
В статье рассматривается платформа 1С:Предприятие версии 8.3.4.465. Материал актуален и для текущих релизов платформы.
Предопределенные элементы в «1С:Предприятие 8.3»
При реализации алгоритмов разработчики часто опираются на определенные данные – элементы справочников, планов счетов, планов видов расчета и т.д.
Во встроенном языке существуют методы для поиска данных, например, НайтиПоКоду() или НайтиПоНаименованию().
Однако алгоритмы, опирающиеся на код или наименование, зачастую являются ненадежными.
Поскольку в пользовательском режиме код или наименование элемента справочника могут быть изменены, что может привести к неработоспособности алгоритмов.
Именно для решения этой проблемы и предназначены предопределенные данные – данные, созданные в конфигураторе, обратиться к которым возможно по имени, не прибегая к предварительному поиску элемента.
Таким образом, у предопределенных данных есть две “стороны”: во-первых, существует список предопределенных элементов, созданный в конфигураторе, а, во-вторых, для данных информационной базы указывается, является ли конкретный элемент предопределенным.
Предопределенные элементы могут быть созданы у:
- справочников;
- планов счетов;
- планов видов характеристик;
- планов видов расчета.
В статье рассмотрены новшества, касающиеся предопределенных данных на платформе 8.3, а также особенности работы с ними в распределенных базах (как центральных, так и периферийных) и в информационных базах в режиме разделения данных.
Для примера, создадим в справочнике Организации предопределенный элемент ОсновнаяОрганизация:
Для увеличения нажмите на изображение.
Обращение к этому элементу из программного кода будет следующим:
В платформе 8.3 реализована возможность связать предопределенные данные с элементами соответствующего типа.
Для этого у объектов, которые могут иметь предопределенные элементы (они указаны выше), добавлено новое свойство ИмяПредопределенныхДанных. Оно отображается в списке стандартных реквизитов:
Выберем при помощи запроса все поля из справочника Организации:
Для увеличения нажмите на изображение.
На рисунке видно, что в поле ИмяПредопределенныхДанных указан именно тот идентификатор, который мы ввели в режиме конфигуратора.
Предопределенный элемент в списке отображается специальной пиктограммой:
Чтобы “отсоединить” элемент данных от элемента предопределенных данных, нужно присвоить свойству ИмяПредопределенныхДанных пустую строку и записать элемент:
&НаКлиенте
Процедура Отсоединить(Команда)
ОтсоединитьНаСервере();
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ОтсоединитьНаСервере()
ОбъектДанных = Справочники.Организации.ОсновнаяОрганизация.ПолучитьОбъект();
ОбъектДанных.ИмяПредопределенныхДанных = “”;
ОбъектДанных.Записать();
КонецПроцедуры
Пиктограмма в списке изменилась:
Теперь предопределенный элемент существует только в конфигурации и в данных нет элемента, привязанного к идентификатору ОсновнаяОрганизация:
Для увеличения нажмите на изображение.
Обращение из программного кода к предопределенному элементу вызовет исключение:
Чтобы связать предопределенный элемент с новой записью, нужно присвоить свойству ИмяПредопределенныхДанных имя предопределенного элемента:
&НаКлиенте
Процедура Привязать(Команда)
ПривязатьНаСервере();
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПривязатьНаСервере()
НайденнаяСсылка = Справочники.Организации.НайтиПоНаименованию(“ООО “”Товары”””);
ОбъектДанных = НайденнаяСсылка.ПолучитьОбъект();
ОбъектДанных.ИмяПредопределенныхДанных = “ОсновнаяОрганизация”;
ОбъектДанных.Записать();
КонецПроцедуры
Теперь с пиктограммой предопределенного элемента выводится другой элемент справочника:
При записи объекта проверяется, не существует ли в информационной базе другого элемента данных с таким же идентификатором предопределенных данных.
В случае его обнаружения будет выдано сообщение об ошибке:
При помощи запроса обратимся к полю ИмяПредопределенныхДанных.
Запрос = Новый Запрос;
Запрос.УстановитьПараметр(“ИмяПредопределенныхДанных”, ИмяПредопределенныхДанных);
Запрос.Текст =
“ВЫБРАТЬ
| Организации.Ссылка,
| Организации.Наименование,
| Организации.Код
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.ИмяПредопределенныхДанных = &ИмяПредопределенныхДанных”;
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = Выборка.Наименование;
Сообщение.Сообщить();
КонецЕсли;
Если параметр запроса ИмяПредопределенныхДанных принимает значение “ОсновнаяОрганизация”, запрос выполняется без ошибок.
Если используется любое другое значение, не указанное в конфигураторе, то во время выполнения произойдет исключение:
При использовании в конфигурации Библиотеки стандартных подсистем (БСП) версии 2.1.4 и выше рекомендуется использовать функцию ПредопределенныйЭлемент общего модуля ОбщегоНазначенияКлиентСервер, которая возвращает Неопределено для несуществующих в информационной базе предопределенных элементов:
Организация= ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент(“Справочник.Организации.
ОсновнаяОрганизация”);
Платформа позволяет получить список только предопределенных элементов, присутствующих в данных. Это можно сделать, например, при помощи запроса.
ОбъектДанных= Метаданные.Справочники.Организации;
ТекстЗапроса = ”
|ВЫБРАТЬ
| ИмяОбъекта.Ссылка
|ИЗ
| “ + ОбъектДанных.ПолноеИмя() + ” КАК ИмяОбъекта
|
|ГДЕ
| ИмяОбъекта.Предопределенный;
Запрос = Новый Запрос(ТекстЗапроса);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ИмяПредопределенного = Справочники[ОбъектДанных.Имя].ПолучитьИмяПредопределенного
(Выборка.Ссылка);
Сообщить(ИмяПредопределенного);
КонецЦикла;
Получение списка предопределенных элементов, заданных в метаданных, при помощи встроенного языка – невозможно.
Однако начиная с платформы 8.3.3, метод ПолучитьИмяПредопределенного() является устаревшим и поддерживается для совместимости, поэтому даже в Синтакс-помощнике платформы 8.3.4 он не отображается.
В платформе 8.3 существует метод глобального контекста ПолучитьПолноеИмяПредопределенногоЗначения(). Этот метод выполняет действие, обратное методу ПредопределенноеЗначение(), – по ссылке на предопределенный элемент возвращает полное имя предопределенного значения.
В платформе 8.3 разрешено помечать предопределенные данные на удаление и производить удаление предопределенных данных. Если же удаление предопределенных элементов в разрабатываемой конфигурации недопустимо, то следует настроить права доступа.
Теперь в платформе присутствуют новые права доступа, определяющие возможность редактирования предопределенных данных:
- ИнтерактивноеУдалениеПредопределенныхДанных,
- ИнтерактивнаяПометкаУдаленияПредопределенныхДанных,
- ИнтерактивноеСнятиеПометкиУдаленияПредопределенныхДанных,
- ИнтерактивноеУдалениеПомеченныхПредопределенныхДанных.
Ограничения доступа к данным одновременно назначаются на поля Предопределенный и ИмяПредопределенныхДанных (оба флажка устанавливаются и снимаются одновременно):
Однако “интерактивные” права на просмотр и редактирование стандартных реквизитов Предопределенный и ИмяПредопределенныхДанных можно установить по отдельности:
Для увеличения нажмите на изображение.
Для корректного функционирования системы необходимо, чтобы предопределенные элементы не только были созданы в конфигураторе, но и в данных информационной базы существовали связанные с ними элементы.
Для указания стратегии создания или изменения предопределенных данных было реализовано системное перечисление ОбновлениеПредопределенныхДанных, содержащее следующие значения:
- Авто – необходимость создания предопределенных элементов и обновление существующих будет определяться системой автоматически;
- НеОбновлятьАвтоматически – не будет выполняться автоматическое создание предопределенных элементов и обновление существующих значений. В случае отсутствия элемента данных, связанного с предопределенным элементом, будет сгенерировано исключение при попытке обращения к нему;
- ОбновлятьАвтоматически – будет выполняться автоматическое создание предопределенных элементов и обновление существующих значений.
Чтобы принять решение, нужно ли создавать и обновлять предопределенные данные, система последовательно анализирует следующие значения:
- значение, установленное для объекта в данных;
- значение, установленное для объекта метаданных в конфигураторе;
- значение, установленное в целом для информационной базы;
- вид информационной базы – центральная (либо не распределенная база) или периферийная база.
Обратите внимание на первые два пункта. При некотором внешнем сходстве формулировок между этими пунктами есть принципиальная разница: второе значение устанавливается разработчиком для объекта метаданных в конфигураторе, а первое хранится в данных информационной базы.
Подробнее будет рассмотрено ниже.
Такое большое количество анализируемых значений было реализовано для возможности полноценно управлять созданием и обновлением предопределенных данных.
Например, в периферийной базе предопределенные данные не должны создаваться автоматически, а в случае отключения базы от РИБа нельзя допустить автоматического создания элементов.
Кроме того, разработчик в зависимости от логики прикладного решения должен иметь возможность управлять процессом создания предопределенных элементов.
Теперь рассмотрим последовательность действий, которые выполняет система, чтобы определить, нужно ли создавать или обновлять предопределенные данные.
1. Если для объекта метаданных в информационной базе (т.е. в данных) установлен режим обновления, отличный от Авто, то используется это значение.
Получить и установить значение этого свойства для каждого объекта метаданных в пользовательском режиме можно с помощью методов ПолучитьОбновлениеПредопределенныхДанных() и
УстановитьОбновлениеПредопределенныхДанных().
Эти методы доступны у объектов типа СправочникМенеджер, ПланСчетовМенеджер, ПланВидовХарактеристикМенеджер, ПланВидовРасчетаМенеджер.
Следует учитывать, что метод УстановитьОбновлениеПредопределенныхДанных() невозможно использовать во время фоновой реструктуризации базы.
2. Иначе если для объекта метаданных в конфигурации установлен режим обновления, отличный от Авто, то используется это значение.
3. Иначе если для информационной базы установлен режим обновления, отличный от Авто, то используется это значение.
Получить и установить значение этого свойства для каждого объекта метаданных в пользовательском режиме можно с помощью методов ПолучитьОбновлениеПредопределенныхДанныхИнформационнойБазы() и УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы().
4. Иначе анализируется вид узла распределенной базы. Если это периферийный узел, то предопределенные данные не будут обновлены (соответствует значению НеОбновлятьАвтоматически).
Если проверка выполняется для центрального узла распределенной базы или для базы, не являющейся распределенной, обновление предопределенных данных будет выполнено (соответствует значению ОбновлятьАвтоматически).
Если база находится в режиме совместимости “Версия 8.3.3”, то алгоритм определения необходимости обновления предопределенных данных выглядит немного по-другому.
Обновление не будет производиться:
- если в метаданных или в данных установлено НеОбновлятьАвтоматически;
- если в метаданных или в данных установлено Авто и текущий узел является периферийным.
В противном случае предопределенные данные будут обновлены.
Создание в информационной базе данных, связанных с предопределенными, может быть выполнено следующими способами:
1. При реструктуризации информационной базы в случае, когда разрешено автоматическое создание и обновление предопределенных данных, а также предопределенные данные ранее создавались в этой области данных или информационной базе.
2. При первом обращении к таблице с данными объекта конфигурации. Создание предопределенных элементов будет выполняться при условии, что их создание не запрещено.
3. С помощью кода на встроенном языке, в котором заполняется значение свойства ИмяПредопределенныхДанных. Этот способ можно использовать, если автоматическое создание предопределенных элементов запрещено в свойствах объектов конфигурации.
Обновление данных, связанных с предопределенными, будет выполняться, если:
- разрешено автоматическое обновление предопределенных данных;
- предопределенные данные связаны с данными информационной базы;
- предопределенные данные изменены в конфигураторе.
Во всех остальных случаях информация о предопределенных элементах из конфигуратора не будет перенесена в информационную базу.
Если в конфигураторе удалить предопределенный элемент, то будут выполнены следующие действия:
- элемент данных, связанный с предопределенным элементом, будет помечен на удаление;
- в списке субконто элемента плана счетов будут удалены соответствующие записи;
- в списках ведущих, базовых и вытесняющих видов расчета будут удалены соответствующие записи.
Установим для справочника Организации в конфигураторе свойство ОбновлениеПредопределенныхДанных в НеОбновлятьАвтоматически и удалим предопределенный элемент ОсновнаяОрганизация.
В пользовательском режиме у элемента справочника, связанного с предопределенным, значение свойства ИмяПредопределенныхДанных стало равным #708c7031-c7bd-45d4-a8c9-65b2fecfde62, где символы после знака “#” – это уникальный идентификатор удаленного элемента метаданных.
Для увеличения нажмите на изображение.
При использовании распределенной информационной базы предопределенные элементы из конфигурации передаются вместе с сообщением, содержащим изменения конфигурации.
А элементы данных, связанные с предопределенными, регистрируются в планах обмена так же, как и обычные данные.
Автоматического создания предопределенных данных в периферийной базе не происходит.
В распределенной базе иногда могут возникать ошибки, которые исправляются после отключения от РИБа, загрузки в периферийную базу конфигурации центральной базы и дальнейшего подключения к распределенной базе.
При работе на платформе 8.3 следует учитывать следующую особенность.
База, у которой главный узел стал не установлен (базу отключили от РИБа), не является периферийной, поэтому при запуске этой базы в пользовательском режиме может произойти обновление предопределенных данных согласно алгоритму, описанному выше.
Чтобы не допустить такого поведения, можно использовать метод глобального контекста УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы() или использовать параметр командной строки в пакетном режиме запуска конфигуратора /SetPredefinedDataUpdate, который предназначен для указания режимов обновления предопределенных данных.
Этот параметр может принимать одно из трех значений:
- UpdateAutomatically – при реструктуризации информационной базы будет выполняться автоматическое создание предопределенных элементов и обновление существующих значений;
- DoNotUpdateAutomatically – при реструктуризации информационной базы не будет выполняться автоматическое создание новых предопределенных элементов и обновление их значений;
- Auto – фактическое значение вычисляется автоматически. Для главного узла информационной базы значение будет равно UpdateAutomatically, для периферийного узла информационной базы будет равно DoNotUpdateAutomatically.
Командная строка запуска конфигуратора с этим параметром будет выглядеть следующим образом:
“C:Program Files1cv88.3.4.437bin1cv8.exe DESIGNER /F”ПутьКБазе” /N”Администратор” /P”Пароль” /SetPredefinedDataUpdate -DoNotUpdateAutomatically”
Таким образом возможно задавать признак обновления предопределенных данных, когда информационная база отключается от РИБ, например, для восстановления работоспособности.
Так же можно поступить в случае, если с помощью обмена без использования РИБ взаимодействуют две конфигурации, где предопределенные данные задаются в одной базе, а в другую они должны попасть после обмена.
Для информационной базы, где создаются предопределенные элементы, следует использовать значение UpdateAutomatically, а для второй информационной базы – DoNotUpdateAutomatically.
В платформе 8.3 для объектов конфигурации, которые могут содержать предопределенные данные (справочники, планы счетов, планы видов характеристик, планы видов расчета), реализована возможность устанавливать свойство ИмяПредопределенныхДанных в значение специального вида, состоящее из символа “#” и текстового представления уникального идентификатора.
Таким образом можно создавать обработки загрузки предопределенных данных из файла.
В платформе 8.2.14 появился механизм разделения данных. При использовании разделенной базы предопределенные элементы создавали ряд ограничений.
Так, было невозможно использовать предопределенные данные для объектов конфигурации, входящих в состав разделителя в режиме “Независимо и совместно”.
Теперь в платформе 8.3 предопределенные данные можно использовать для объектов, входящих в состав любых разделителей.
Ссылки на предопределенные элементы более не являются одинаковыми, в том числе и в различных областях (даже для объектов, входящих в состав разделителя в режиме Независимо).
Например, рассмотрим предопределенный элемент ОсновнаяОрганизация в справочнике Организации.
Пусть в базе есть две области: с кодами 01 и 02.
Значит, уникальный идентификатор элемента данных, связанного с элементом ОсновнаяОрганизация в области с кодом 01, не будет равен уникальному идентификатору элемента данных, связанного с элементом ОсновнаяОрганизация в области 02.
Подведем итоги. Рассмотрим, для чего было внесено столько нововведений в работу с предопределенными данными.
Прежний вариант использования предопределенных элементов накладывал ограничения при работе в режиме разделенной информационной базы.
Так, невозможно было использовать предопределенные данные для объектов конфигурации, входящих в состав разделителя в режиме “Независимо и совместно”. Невозможно было связать существующий объект данных с предопределенными данными.
Один предопределенный элемент имел одинаковую ссылку во всех областях данных.
При обмене данными с использованием РИБа предопределенные данные передавались только с изменениями конфигурации прикладного решения. Управлять созданием и обновлением предопределенных данных было невозможно.
Таким образом, рассмотренные нововведения направлены на развитие возможностей платформы по работе в режиме разделенной информационной базы, что особенно актуально в рамках модели SaaS (“программы как сервис”), которую также называют работой “в облаке”.
На этом мы завершаем наше первое знакомство с предопределенными элементами.
Вы, скорее всего, уже заметили, что основное время во время написания программного кода мы находились в конфигураторе. И, наверное, вы уже задавались вопросом, что значат все эти кнопки, панели и меню в нем. Когда и зачем их нужно использовать?
Пока мы обходили стороной все эти вопросы, набирая необходимую базу знаний для старта. Теперь же, кажется, самое время изучить конфигуратор более подробно, и в этом вам поможет наша следующая статья.
PDF-версия статьи для участников группы ВКонтакте
Мы ведем группу ВКонтакте – http://vk.com/kursypo1c.
Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Если Вы уже участник группы – нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.
|
|||
Snik_666
30.07.11 — 11:57 |
Добрый день!
Форма.Форма.Форма(7)}: Ошибка при вызове метода контекста (Записать)
по причине: |
||
Grusswelle
1 — 30.07.11 — 12:09 |
(0) Основные реквизиты предопределённых элементов задаются в конфигураторе. |
||
Snik_666
2 — 30.07.11 — 20:13 |
Просто у меня в конфигураторе 8.2 (8.2.14.519) Хозрасчетный-Признаки учета-Налоговый учет , в предопределенных галка у большинства стоит, но в режиме предприятия на форме счета не стоит и работают алгоритмы Счет.НалоговыйУчет = Ложь… |
||
Grusswelle
3 — 30.07.11 — 20:15 |
(2) Понятно и доступно объяснил! |
||
Snik_666
4 — 30.07.11 — 21:21 |
(3) а толку ? |
||
Vladal
5 — 08.08.11 — 12:52 |
Украина? Как это сделать — выгрузко/загрузкой данных |
||
Живой Ископаемый
6 — 08.08.11 — 12:57 |
да.. Об.ОбменДанными.Загрузка = Истина; |
||
max402
7 — 19.08.11 — 20:04 |
Не обязательно откатываться на 13 платформу. Можно удалить этот признак учета из плана счетов конфигурации, обновить конфигурацию базы данных, потом сравнить/объединить с типовой конфой и вернуть признак и его значения для всех предопределенных счетов на место. Это самый быстрый способ |
||
MikleV
8 — 19.08.11 — 20:41 |
(7) неверное мнение |
||
AlexNew
9 — 19.08.11 — 20:42 |
(1) Где? |
||
AlexNew
10 — 19.08.11 — 20:44 |
(1) Кроме кода и наименования??? |
||
AlexNew
11 — 19.08.11 — 20:45 |
Стас, я надеюсь они не с твоих курсов? |
||
max402
12 — 20.08.11 — 01:53 |
(8) обоснуй. лишь бы что-то ляпнуть. Я сегодня именно так решил задачу. Правда платформу обновил до 8.2.14.528 сначала |
||
MikleV
13 — 20.08.11 — 01:55 |
(12)я дятлам ничего не обосновываю |
||
max402
14 — 22.08.11 — 12:48 |
(13) ты баран. Давай не разводи тут оффтоп |
||
MikleV
15 — 22.08.11 — 20:24 |
(14)иди на *уй. |
||
Живой Ископаемый
16 — 22.08.11 — 21:18 |
(15) ничего что я к вам спиной? так вот в (7) подробный рецепт. может и не лучший, но годный. А от вас — только фырканье и оценочные суждения.. Так что тут предельно ясно кто из вас двоих надутый дятел… |
||
MikleV
17 — 22.08.11 — 23:41 |
(16)да без разницы. |
||
Naumov 18 — 22.08.11 — 23:54 |
Открыть модуль объекта и посотреть на процедуру ПередЗаписью() |
Читай всё полезное и впитывай, а нападки игнорируй. Здесь так принято. aka AMIGO |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Добавление, просмотр и редактирование счетов бухгалтерского учета
Как мы уже отмечали ранее, программа поставляется с уже готовым Планом счетов. Он сформирован в Конфигураторе, следовательно – все счета и субсчета по умолчанию являются предопределенными. Но вы можете самостоятельно добавлять новые или редактировать имеющиеся счета, и о том, как это делать, мы расскажем в данном разделе.
ПРИМЕЧАНИЕ
Для предопределенного счета в режиме 1С: Предприятие можно будет изменить только его код, наименование, родительский счет и признак запрета использования в проводках, а также информацию по субконто.
Чтобы просмотреть или отредактировать счет (субсчет), выделите его в списке щелчком мыши и выполните команду Действия ? Изменить или нажмите клавишу F2 (можно также воспользоваться соответствующей кнопкой инструментальной панели). Чтобы ввести в План счетов новый счет, выполните команду Действия ? Добавить или нажмите клавишу Insert. В любом случае на экране откроется окно ввода и редактирования счета, изображенное на рис. 3.50.
Рис. 3.50. Ввод и редактирование счета
В верхней части данного окна в поле Код счета нужно с клавиатуры ввести код счета. Для большинства счетов этот код состоит из двух разрядов, а для субсчетов вводится еще два разряда после точки. Например, если счет 41 имеет субсчета 01, 02 и 03, то для каждого из них код будет выглядеть следующим образом: 41.01, 41.02 и 41.03.
Что касается забалансовых счетов, то их код, как правило, состоит из трех разрядов, причем все они вводятся до точки (например, 001, 002, 003 и т. д.), а после точки можно ввести два разряда субсчета забалансового счета.
В поле Вид из раскрывающегося списка выбирается признак активности счета. Возможен выбор одного из трех вариантов – Активный, Пассивный или Активный/Пассивный. Ранее мы уже отмечали особенности каждого из этих видов счетов, связанные с формированием итогового сальдо. Здесь же добавим, что увеличение сальдо у активных счетов происходит по дебету, а у пассивных – по кредиту.
В поле Код для быстрого выбора указывается код, с помощью которого можно будет быстро найти данный счет в интерфейсах списка и выбора (для этого нужно будет просто набрать этот код с клавиатуры). Значение данного поля формируется программой автоматически сразу после заполнения поля Код счета, но при необходимости вы можете отредактировать его с клавиатуры.
Для субсчетов в поле Подчинен счету нужно указать счет, к которому относится данный субсчет. Например, если вы хотите ввести субсчет 05 к счету 41, то в поле Код счета нужно вывести значение 41.05, а в поле Подчинен счету – значение 41. Чтобы заполнить данное поле, нажмите кнопку выбора и в открывшемся окне списка счетов укажите требуемый счет.
В поле Наименование с клавиатуры вводится произвольное название счета бухгалтерского учета. Рекомендуется присваивать счетам такие названия, чтобы они кратко характеризовали суть и назначение счета – это позволит впоследствии безошибочно вспомнить или определить, для чего данный счет предназначен.
Забалансовый, Валютный, Количественный – с помощью данных флажков устанавливаются признаки соответственно забалансового счета, валютного счета и количественного учета по счету. Данные параметры недоступны для предопределенных счетов.
Запретить использовать в проводках – при установленном данном флажке счет нельзя будет использовать в бухгалтерских проводках. Как мы уже отмечали ранее, по умолчанию данное ограничение применяется ко всем родительским счетам, имеющим субсчета.
В нижней части окна формируется список субконто, в разрезе которых будет вестись аналитический учет по данному счету.
ПРИМЕЧАНИЕ
В программе «1С Бухгалтерия 8» субконто – это аналитический разрез, позволяющий детализировать учет по счету. Например, по счету 41 «Товары» можно вести аналитический учет первого уровня – в разрезе номенклатуры, второго уровня – в разрезе складов или поставщиков, а третьего уровня – в разрезе партий. По счетам 60, 62 и 76 можно вести аналитический учет первого уровня – в разрезе контрагентов, а второго уровня – в разрезе договоров, и т. д.
По каждому счету возможно применение до трех уровней субконто. Над списком субконто (на рис. 3.50 этот список содержит одну позицию – Статьи затрат) расположена инструментальная панель, кнопки которой предназначены для добавления субконто в список, изменения текущего субконто, удаления текущего субконто, а также для изменения порядка следования субконто (две последние кнопки со стрелками).
Каждому субконто с помощью соответствующих флажков можно назначить перечисленные ниже атрибуты учета.
? Только обороты – данный параметр нужно включить, если вы намерены по данному субконто вести учет только оборотов.
? Суммовой – этот атрибут присваивается, если по данному субконто обороты и остатки необходимо выводить в национальной денежной единице.
? Количественный – этот параметр присутствует лишь тогда, когда для редактируемого счета установлен признак количественного учета (флажок Количественный, который на рис. 3.50 снят, поэтому и параметр Количественный в табличной части окна отсутствует). Этот параметр устанавливается для тех субконто, по которым остатки и обороты должны рассчитываться в натуральных показателях (например, для ведения учета товарно-материальных ценностей).
? Валютный – этот параметр присутствует лишь тогда, когда для редактируемого счета установлен признак валютного учета (флажок Валютный, он также на рис. 3.50 снят, поэтому в табличной части окна соответствующий параметр отсутствует). Этот параметр устанавливается для тех субконто, по которым остатки и обороты должны рассчитываться в валюте.
При добавлении субконто в списке сформируется новая позиция, номер которой будет сформирован автоматически. При нажатии на кнопку выбора в поле Вид на экране отображается окно с перечнем видов субконто, в котором необходимо выделить курсором требуемую позицию и нажать клавишу Enter.
Завершается процесс формирования нового либо редактирования текущего счета нажатием кнопки ОК либо Записать (в первом случае окно редактирования будет закрыто с сохранением выполненных изменений, во втором – изменения будут сохранены, но окно при этом не закроется); также для этого можно воспользоваться командами Действия ? Записать и закрыть или Действия ? Записать. С помощью кнопки Закрыть осуществляется выход из режима редактирования без сохранения выполненных изменений.
Данный текст является ознакомительным фрагментом.
Продолжение на ЛитРес
Читайте также
2.2. План счетов бухгалтерского учета
2.2. План счетов бухгалтерского учета Как уже отмечалось, основными элементами учетной политики являются:• рабочий план счетов бухгалтерского учета;• формы первичных учетных документов, разработанные организацией;• порядок проведения инвентаризации активов и
ПЛАН СЧЕТОВ БУХГАЛТЕРСКОГО УЧЕТА
ПЛАН СЧЕТОВ БУХГАЛТЕРСКОГО УЧЕТА Для правильной организации бухгалтерского учета решающее значение имеет использование Плана счетов бухгалтерского учета финансово-хозяйственной деятельности предприятия и инструкций, устанавливающих единые подходы к отражению
19. План счетов бухгалтерского учета
19. План счетов бухгалтерского учета План счетов бухгалтерского учета – это систематизированный перечень счетов, применяемых в практике ведения учета. В Российской Федерации разработан и используется единый План счетов, утвержденный Министерством финансов РФ.План
21. План счетов в международной практике бухгалтерского учета
21. План счетов в международной практике бухгалтерского учета Применение Плана счетов и кодирования хозяйственных операций в системах международного бухгалтерского учета в США, Великобритании и других странах более свободное, чем в российском учете.В организациях
4.3. Информация о состоянии счетов бухгалтерского учета
4.3. Информация о состоянии счетов бухгалтерского учета Программа «1С:Бухгалтерия 8.0» содержит большое количество разнообразных отчетов, которые позволяют получить всю необходимую информацию в различных разрезах. В «1С:Бухгалтерии 8.0» используются отчеты четырех типов:
Закрытие счетов бухгалтерского учета
Закрытие счетов бухгалтерского учета Закрытие счета 44.01Все остатки счета 44.01 по бухгалтерскому учету по статьям затрат с видом, отличным от вида «Транспортные расходы», закрываются на счет 90.07 «Расходы на продажу» по номенклатурным группам пропорционально
26. План счетов бухгалтерского учета
26. План счетов бухгалтерского учета План счетов бухгалтерского учета –?это систематизированный перечень счетов, применяемых в практике ведения учета. В Российской Федерации разработан и используется единый План счетов, утвержденный Министерством финансов РФ.План
28. План счетов в международной практике бухгалтерского учета
28. План счетов в международной практике бухгалтерского учета Применение Плана счетов и кодирования хозяйственных операций в системах международного бухгалтерского учета в США, Великобритании и других странах более свободное, чем в российском учете.В организациях
27. План счетов бухгалтерского учета
27. План счетов бухгалтерского учета С 1 января 2001 г. предприятия независимо от организационно—правовых форм переведены на новый план счетов бухгалтерского учета, который является единым для всех предприятий. Необходимость введения этого нового плана счетов
3.1. План счетов бухгалтерского учета.
3.1. План счетов бухгалтерского учета. В конфигурацию включен План счетов бухгалтерского учета финансово-хозяйственной деятельности организаций, утвержденный приказом Министерства Финансов Российской Федерации от 31 октября 2000 г. № 94н. Счета в компьютерный план счетов
Классификации счетов по группам объектов бухгалтерского учета
Классификации счетов по группам объектов бухгалтерского учета Еще одним концентрированным выражением классификации счетов по экономическому смыслу является их классификация в соответствии с объектами бухгалтерского учета. Классификация объектов бухгалтерского
Просмотр и редактирование Плана счетов
Просмотр и редактирование Плана счетов Основой бухгалтерского учета и его ключевым элементом является план счетов. Он позволяет группировать и сортировать все сведения о финансово-хозяйственной деятельности предприятия. Иначе говоря, только с помощью Плана счетов
Список счетов бухгалтерского учета
Список счетов бухгалтерского учета Чтобы перейти к работе с Планом счетов бухгалтерского учета, выполните команду главного меню Предприятие ? Планы счетов ? План счетов бухгалтерского учета. Можно поступить и иначе: для этого нужно выполнить команду главного меню
14. План счетов бухгалтерского учета
14. План счетов бухгалтерского учета План счетов бухгалтерского учета – систематизированный перечень счетов, применяемых в практике ведения учета. В Российской Федерации разработан и используется единый План счетов, утвержденный Министерством финансов РФ.План счетов
15. Значение Плана счетов в регулировании бухгалтерского учета
15. Значение Плана счетов в регулировании бухгалтерского учета В системе нормативного регулирования План счетов занимает промежуточное место между нормативными документами второго и третьего уровней, но в практической деятельности бухгалтерских служб Плану счетов
1.3. План счетов бухгалтерского учета в учреждениях здравоохранения (2-й ур.)
1.3. План счетов бухгалтерского учета в учреждениях здравоохранения (2-й ур.) Способ применения плана счетов бухгалтерского учета для отражения операций по исполнению сметы доходов и расходов бюджетных средств.Отражение операций при ведении бюджетного учета учреждениями
В этой статье речь пойдет о предопределенных элементах, которые можно создать в платформе 1С:Предприятие 8.
Для чего нужны предопределенные элементы
Ответ на этот вопрос вполне очевиден — для того, чтобы разработчик в коде мог обратиться к таким элементам надежным способом, т.к. поиск по коду или по наименованию не является надежным. Захардкодить поиск по уникальному идентификатору элемента в код — также не является хорошим тоном.
Куда можно добавить
Предопределенные элементы могут быть созданы у:
- справочников;
- планов счетов;
- планов видов характеристик;
- планов видов расчета.
Предопределенные элементы не могут быть у подчиненного справочника, т.е. если справочник имеет хотя бы одного владельца, то в него не могут быть добавлены предопределенные элементы. И наоборот, если справочник, имеет хотя бы один предопределенный элемент — его нельзя сделать подчиненным.
Рис. 1. Добавление предопределенных элементов невозможно https://its.1c.ru/db/v8315doc#bookmark:dev:TI000000306
Это очень важная особенность про которую стоит помнить. Как-то у меня на проекте была задача создать подчиненный справочник, а в последствии встала задача добавить в него предопределенные элементы — пришлось все переделывать. Такое поведение платформы не очевидно, но вполне логично, т.к. в нормальных условиях у элемента подчиненного справочника свойство Владелец всегда указано, а при добавлении предопределенного элемента в конфигураторе мы можем лишь указать его имя, код и наименование.
В платформе 8.3 появилась возможность удалять предопределенные элементы в режиме 1С:Предприятие, ровно как и связывать существующие, задав им имена. В связи с этим в было добавлено системное перечисление ОбновлениеПредопределенныхДанных, содержащее следующие значения:
- Авто;
- НеОбновлятьАвтоматически – предопределенные элементы не создаются в БД;
- ОбновлятьАвтоматически – предопределенные элементы будут созданы.
При удалении предопределенного элемента в режиме Конфигуратор, связанная с ним запись в базе данных будет помечена на удаление если для справочника свойство ОбновлениеПредопределенныхДанных = ОбновлятьАвтоматически.
Рассмотрим свойство ИмяПредопределенныхДанных. Оно служит для связи записи в базе данных элементом предопределенных данных, заданным в конфигурации. Таким образом имеется возможность связать существующие записи в БД с элементами предопределенных данных, например, следующим кодом:
А также можно «отвязать» элемент в базе данных от предопределенного элемента.
Получить список предопределенных элементов данных можно обратившись к метаданным, следующим образом:
Код Икс Пи ☆ Центр автоматизации, сопровождения и поддержки
При реализации алгоритмов разработчики часто опираются на определенные данные – элементы справочников, планов счетов, планов видов расчета и т.д.
Во встроенном языке существуют методы для поиска данных, например, НайтиПоКоду() или НайтиПоНаименованию().
Однако алгоритмы, опирающиеся на код или наименование, зачастую являются ненадежными.
Поскольку в пользовательском режиме код или наименование элемента справочника могут быть изменены, что может привести к неработоспособности алгоритмов.
Именно для решения этой проблемы и предназначены предопределенные данные – данные, созданные в конфигураторе, обратиться к которым возможно по имени, не прибегая к предварительному поиску элемента.
Таким образом, у предопределенных данных есть две “стороны”: во-первых, существует список предопределенных элементов, созданный в конфигураторе, а, во-вторых, для данных информационной базы указывается, является ли конкретный элемент предопределенным.
Предопределенные элементы могут быть созданы у:
- справочников;
- планов счетов;
- планов видов характеристик;
- планов видов расчета.
В статье рассмотрены новшества, касающиеся предопределенных данных на платформе 8.3, а также особенности работы с ними в распределенных базах (как центральных, так и периферийных) и в информационных базах в режиме разделения данных.
Для примера, создадим в справочнике Организации предопределенный элемент ОсновнаяОрганизация:
&НаКлиенте Процедура Отсоединить(Команда) ОтсоединитьНаСервере(); КонецПроцедуры &НаСервереБезКонтекста Процедура ОтсоединитьНаСервере() ОбъектДанных = Справочники.Организации.ОсновнаяОрганизация.ПолучитьОбъект(); ОбъектДанных.ИмяПредопределенныхДанных = “”; ОбъектДанных.Записать(); КонецПроцедуры
Пиктограмма в списке изменилась:
Чтобы связать предопределенный элемент с новой записью, нужно присвоить свойству ИмяПредопределенныхДанных имя предопределенного элемента:
Теперь с пиктограммой предопределенного элемента выводится другой элемент справочника:
Запрос = Новый Запрос; Запрос.УстановитьПараметр(“ИмяПредопределенныхДанных”, ИмяПредопределенныхДанных); Запрос.Текст = “ВЫБРАТЬ | Организации.Ссылка, | Организации.Наименование, | Организации.Код |ИЗ | Справочник.Организации КАК Организации |ГДЕ | Организации.ИмяПредопределенныхДанных = &ИмяПредопределенныхДанных”; Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = Выборка.Наименование; Сообщение.Сообщить(); КонецЕсли;
Если параметр запроса ИмяПредопределенныхДанных принимает значение “ОсновнаяОрганизация”, запрос выполняется без ошибок.
Если используется любое другое значение, не указанное в конфигураторе, то во время выполнения произойдет исключение:
ОбъектДанных= Метаданные.Справочники.Организации; ТекстЗапроса = “ |ВЫБРАТЬ | ИмяОбъекта.Ссылка |ИЗ | “ + ОбъектДанных.ПолноеИмя() + ” КАК ИмяОбъекта | |ГДЕ | ИмяОбъекта.Предопределенный; Запрос = Новый Запрос(ТекстЗапроса); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ИмяПредопределенного = Справочники[ОбъектДанных.Имя].ПолучитьИмяПредопределенного (Выборка.Ссылка); Сообщить(ИмяПредопределенного); КонецЦикла;
Получение списка предопределенных элементов, заданных в метаданных, при помощи встроенного языка – невозможно.
Однако начиная с платформы 8.3.3, метод ПолучитьИмяПредопределенного() является устаревшим и поддерживается для совместимости, поэтому даже в Синтакс-помощнике платформы 8.3.4 он не отображается.
В платформе 8.3 разрешено помечать предопределенные данные на удаление и производить удаление предопределенных данных. Если же удаление предопределенных элементов в разрабатываемой конфигурации недопустимо, то следует настроить права доступа.
Теперь в платформе присутствуют новые права доступа, определяющие возможность редактирования предопределенных данных:
- ИнтерактивноеУдалениеПредопределенныхДанных,
- ИнтерактивнаяПометкаУдаленияПредопределенныхДанных,
- ИнтерактивноеСнятиеПометкиУдаленияПредопределенныхДанных,
- ИнтерактивноеУдалениеПомеченныхПредопределенныхДанных.
Однако “интерактивные” права на просмотр и редактирование стандартных реквизитов Предопределенный и ИмяПредопределенныхДанных можно установить по отдельности:
Для корректного функционирования системы необходимо, чтобы предопределенные элементы не только были созданы в конфигураторе, но и в данных информационной базы существовали связанные с ними элементы.
Для указания стратегии создания или изменения предопределенных данных было реализовано системное перечисление ОбновлениеПредопределенныхДанных, содержащее следующие значения:
- Авто – необходимость создания предопределенных элементов и обновление существующих будет определяться системой автоматически;
- НеОбновлятьАвтоматически – не будет выполняться автоматическое создание предопределенных элементов и обновление существующих значений. В случае отсутствия элемента данных, связанного с предопределенным элементом, будет сгенерировано исключение при попытке обращения к нему;
- ОбновлятьАвтоматически – будет выполняться автоматическое создание предопределенных элементов и обновление существующих значений.
Чтобы принять решение, нужно ли создавать и обновлять предопределенные данные, система последовательно анализирует следующие значения:
- значение, установленное для объекта в данных;
- значение, установленное для объекта метаданных в конфигураторе;
- значение, установленное в целом для информационной базы;
- вид информационной базы – центральная (либо не распределенная база) или периферийная база.
Обратите внимание на первые два пункта. При некотором внешнем сходстве формулировок между этими пунктами есть принципиальная разница: второе значение устанавливается разработчиком для объекта метаданных в конфигураторе, а первое хранится в данных информационной базы.
Подробнее будет рассмотрено ниже.
Такое большое количество анализируемых значений было реализовано для возможности полноценно управлять созданием и обновлением предопределенных данных.
Например, в периферийной базе предопределенные данные не должны создаваться автоматически, а в случае отключения базы от РИБа нельзя допустить автоматического создания элементов.
Кроме того, разработчик в зависимости от логики прикладного решения должен иметь возможность управлять процессом создания предопределенных элементов.
Теперь рассмотрим последовательность действий, которые выполняет система, чтобы определить, нужно ли создавать или обновлять предопределенные данные.
1. Если для объекта метаданных в информационной базе (т.е. в данных) установлен режим обновления, отличный от Авто, то используется это значение.
Получить и установить значение этого свойства для каждого объекта метаданных в пользовательском режиме можно с помощью методов ПолучитьОбновлениеПредопределенныхДанных() и
УстановитьОбновлениеПредопределенныхДанных().
Эти методы доступны у объектов типа СправочникМенеджер, ПланСчетовМенеджер, ПланВидовХарактеристикМенеджер, ПланВидовРасчетаМенеджер.
Следует учитывать, что метод УстановитьОбновлениеПредопределенныхДанных() невозможно использовать во время фоновой реструктуризации базы.
2. Иначе если для объекта метаданных в конфигурации установлен режим обновления, отличный от Авто, то используется это значение.
3. Иначе если для информационной базы установлен режим обновления, отличный от Авто, то используется это значение.
Получить и установить значение этого свойства для каждого объекта метаданных в пользовательском режиме можно с помощью методов ПолучитьОбновлениеПредопределенныхДанныхИнформационнойБазы() и УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы().
4. Иначе анализируется вид узла распределенной базы. Если это периферийный узел, то предопределенные данные не будут обновлены (соответствует значению НеОбновлятьАвтоматически).
Если проверка выполняется для центрального узла распределенной базы или для базы, не являющейся распределенной, обновление предопределенных данных будет выполнено (соответствует значению ОбновлятьАвтоматически).
Если база находится в режиме совместимости “Версия 8.3.3”, то алгоритм определения необходимости обновления предопределенных данных выглядит немного по-другому.
Обновление не будет производиться:
- если в метаданных или в данных установлено НеОбновлятьАвтоматически;
- если в метаданных или в данных установлено Авто и текущий узел является периферийным.
В противном случае предопределенные данные будут обновлены.
Создание в информационной базе данных, связанных с предопределенными, может быть выполнено следующими способами:
1. При реструктуризации информационной базы в случае, когда разрешено автоматическое создание и обновление предопределенных данных, а также предопределенные данные ранее создавались в этой области данных или информационной базе.
2. При первом обращении к таблице с данными объекта конфигурации. Создание предопределенных элементов будет выполняться при условии, что их создание не запрещено.
3. С помощью кода на встроенном языке, в котором заполняется значение свойства ИмяПредопределенныхДанных. Этот способ можно использовать, если автоматическое создание предопределенных элементов запрещено в свойствах объектов конфигурации.
Обновление данных, связанных с предопределенными, будет выполняться, если:
- разрешено автоматическое обновление предопределенных данных;
- предопределенные данные связаны с данными информационной базы;
- предопределенные данные изменены в конфигураторе.
Во всех остальных случаях информация о предопределенных элементах из конфигуратора не будет перенесена в информационную базу.
Если в конфигураторе удалить предопределенный элемент, то будут выполнены следующие действия:
- элемент данных, связанный с предопределенным элементом, будет помечен на удаление;
- в списке субконто элемента плана счетов будут удалены соответствующие записи;
- в списках ведущих, базовых и вытесняющих видов расчета будут удалены соответствующие записи.
Установим для справочника Организации в конфигураторе свойство ОбновлениеПредопределенныхДанных в НеОбновлятьАвтоматически и удалим предопределенный элемент ОсновнаяОрганизация.
В пользовательском режиме у элемента справочника, связанного с предопределенным, значение свойства ИмяПредопределенныхДанных стало равным #708c7031-c7bd-45d4-a8c9-65b2fecfde62, где символы после знака “#” – это уникальный идентификатор удаленного элемента метаданных.
При использовании распределенной информационной базы предопределенные элементы из конфигурации передаются вместе с сообщением, содержащим изменения конфигурации.
А элементы данных, связанные с предопределенными, регистрируются в планах обмена так же, как и обычные данные.
Автоматического создания предопределенных данных в периферийной базе не происходит.
В распределенной базе иногда могут возникать ошибки, которые исправляются после отключения от РИБа, загрузки в периферийную базу конфигурации центральной базы и дальнейшего подключения к распределенной базе.
При работе на платформе 8.3 следует учитывать следующую особенность.
База, у которой главный узел стал не установлен (базу отключили от РИБа), не является периферийной, поэтому при запуске этой базы в пользовательском режиме может произойти обновление предопределенных данных согласно алгоритму, описанному выше.
Чтобы не допустить такого поведения, можно использовать метод глобального контекста УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы() или использовать параметр командной строки в пакетном режиме запуска конфигуратора /SetPredefinedDataUpdate, который предназначен для указания режимов обновления предопределенных данных.
Этот параметр может принимать одно из трех значений:
- UpdateAutomatically – при реструктуризации информационной базы будет выполняться автоматическое создание предопределенных элементов и обновление существующих значений;
- DoNotUpdateAutomatically – при реструктуризации информационной базы не будет выполняться автоматическое создание новых предопределенных элементов и обновление их значений;
- Auto – фактическое значение вычисляется автоматически. Для главного узла информационной базы значение будет равно UpdateAutomatically, для периферийного узла информационной базы будет равно DoNotUpdateAutomatically.
Командная строка запуска конфигуратора с этим параметром будет выглядеть следующим образом:
“C:Program Files1cv88.3.4.437bin1cv8.exe DESIGNER /F”ПутьКБазе” /N”Администратор” /P”Пароль” /SetPredefinedDataUpdate -DoNotUpdateAutomatically”
Таким образом возможно задавать признак обновления предопределенных данных, когда информационная база отключается от РИБ, например, для восстановления работоспособности.
Так же можно поступить в случае, если с помощью обмена без использования РИБ взаимодействуют две конфигурации, где предопределенные данные задаются в одной базе, а в другую они должны попасть после обмена.
Для информационной базы, где создаются предопределенные элементы, следует использовать значение UpdateAutomatically, а для второй информационной базы – DoNotUpdateAutomatically.
В платформе 8.3 для объектов конфигурации, которые могут содержать предопределенные данные (справочники, планы счетов, планы видов характеристик, планы видов расчета), реализована возможность устанавливать свойство ИмяПредопределенныхДанных в значение специального вида, состоящее из символа “#” и текстового представления уникального идентификатора.
Таким образом можно создавать обработки загрузки предопределенных данных из файла.
В платформе 8.2.14 появился механизм разделения данных. При использовании разделенной базы предопределенные элементы создавали ряд ограничений.
Так, было невозможно использовать предопределенные данные для объектов конфигурации, входящих в состав разделителя в режиме “Независимо и совместно”.
Теперь в платформе 8.3 предопределенные данные можно использовать для объектов, входящих в состав любых разделителей.
Ссылки на предопределенные элементы более не являются одинаковыми, в том числе и в различных областях (даже для объектов, входящих в состав разделителя в режиме Независимо).
Например, рассмотрим предопределенный элемент ОсновнаяОрганизация в справочнике Организации.
Пусть в базе есть две области: с кодами 01 и 02.
Значит, уникальный идентификатор элемента данных, связанного с элементом ОсновнаяОрганизация в области с кодом 01, не будет равен уникальному идентификатору элемента данных, связанного с элементом ОсновнаяОрганизация в области 02.
Подведем итоги. Рассмотрим, для чего было внесено столько нововведений в работу с предопределенными данными.
Прежний вариант использования предопределенных элементов накладывал ограничения при работе в режиме разделенной информационной базы.
Так, невозможно было использовать предопределенные данные для объектов конфигурации, входящих в состав разделителя в режиме “Независимо и совместно”. Невозможно было связать существующий объект данных с предопределенными данными.
Один предопределенный элемент имел одинаковую ссылку во всех областях данных.
При обмене данными с использованием РИБа предопределенные данные передавались только с изменениями конфигурации прикладного решения. Управлять созданием и обновлением предопределенных данных было невозможно.
Таким образом, рассмотренные нововведения направлены на развитие возможностей платформы по работе в режиме разделенной информационной базы, что особенно актуально в рамках модели SaaS (“программы как сервис”), которую также называют работой “в облаке”.
Обновление предопределенных значений при обновлении конфигурации
От типовых конфигураций ожидается, что обновления будут проходить всегда без сучка, без задоринки. Но иногда из-за того, что возможности по конфигурированию системы переносятся на уровень 1с:Предприятия, возникают неожиданные сложности при установке обновления даже на базовые версии типовых конфигураций. Рассмотрим пример ошибки обновления Бухгалтерии предприятия базовая, редакция 3.0.
При обновлении на релиз 3.0.103.12 при выполнении процедур обновления в режиме 1с:Предприятия на одной из баз возникала следующая ошибка: Справочник.КодыОперацийПрослеживаемости.УКДНаУменьшениеВыданный Предопределенный элемент отсутствует в данных.
На всякий случай проверяем, что в конфигурации предопределенное значение УКДНаУменьшениеВыданный справочника КодыОперацийПрослеживаемости на месте, хотя ошибка в случае отсутствия предопределенного имени была бы «Поле оъекта не обнаружено», значит, действительно по каким-то причинам нового значения не оказалось на уровне базы данных.
Начиная с определенного релиза платформы с предопределенными данными стало возможно работать программно: привязывать предопределенное имя к конкретному элементу справочника, что вызвало необходимость синхронизации данных в конфигураторе и в базе данных, а также необходимость настраивать политику обновления предопределенных значений.
Бывает три значения настройки политики обновления предопределенных значений: Авто, ОбновлятьАвтоматически, НеОбновлятьАвтоматически. В случае указания ОбновлятьАвтоматически в 1с:Предприятии при обновлении сам создается нужный элемент справочника и привязывается к предопределенному имени. В случае НеОбновлятьАвтоматически — элемент справочника и связь с предопределенным именем надо создавать самому. Настройка Авто нужна для того, что сделать настройки многоуровневыми, регулирующими поведение как конкретного справочника (плана видов характеристик, плана видов субконто), так и всей базы в целом.
Настройка политики обновления предопределенных значений задается одновременно на трех разных уровнях:
- для таблицы базы данных,
- для объекта метаданных в конфигураторе
- для всей информационной базы.
Итоговое значение настройки, которое и влияет на результат обновления, вычисляется по следующему алгоритму. Сначала проверяется настройка для таблицы базы данных (это настройка на уровне базы данных, она зависит от конкретного экземпляра базы данных, а не от релиза конфигурации). Если она не равна Авто, то используется именно она. Если на уровне таблицы установлено Авто, то проверяется настройка для объекта метаданных в конфигураторе (эта настройка зависит от релиза, она находится в метаданных).
В конфигурации настройка — это свойство справочника «Обновление предопределенных данных».
Если она тоже Авто, то проверяется настройка для всей информационной базы (так же эта настройка хранится в данных информационной базы и не зависит от релиза). Если и она равна Авто, то смотрим, является ли данная база периферийным узлом распределенной информационной базы. Если да, то используется НеОбновлятьАвтоматически. В противном случае настройка будет ОбновлятьАвтоматически.
В таблице Редактора предопределенных значений Портативных инструментов разработчика выведены как текущие настройки разных уровней, так и результирующее значение которое будет применено при обновлении.
В данном случае мы видим, что на уровне всей базы установлена глобальная настройка НеОбновлятьАвтоматически и поскольку и на уровне таблицы, и на уровне метаданных стоит Авто, то именно она и была применена в процессе обновления, вызывая ошибку отсутствия предопределенного элемента!
Поскольку база не является узлом РИБ, то достаточно установить глобальный режим Авто, чтобы требуемое обновление было благополучно установлено. Согласно порядку определения итоговой настройки она будет тогда ОбновлятьАвтоматически.
Таким образом у нас получается один уровень настройки в конфигураторе, а два — самый детальный и самый общий — на уровне данных информационной базы, чем и объясняется неожиданное появление ошибки при многократных успешных обновлениях других баз.
Если под рукой нет Портативных инструментов разработчика, эти настройки легко установить самостоятельно. Для установки данной настройки на уровне таблицы базы данных используется метод УстановитьОбновлениеПредопределенныхДанных.
Значение = ОбновлениеПредопределенныхДанных.НеОбновлятьАвтоматически;
Справочники.КодыОперацийПрослеживаемости.УстановитьОбновлениеПредопределенныхДанных(Значение);
Установка настройка для всей информационной базы делается с помощью метода УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы.
Значение = ОбновлениеПредопределенныхДанных.НеОбновлятьАвтоматически;
УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы(Значение);
Осталось тайной, как в рассмотренном случае в базе оказались именно такие настройки. Будут идеи — пишите свои версии, обсудим!
Анна Коваленко,
специалист отдела
автоматизации и сопровождения
информационных систем
ООО «Байт»
Свежие записи
- Критично: срочно, сегодня обновите платформу «1С:Предприятие 8»!
- «Зависшие» остатки количества на счетах 106 бюджетного учета в БГУ 2.0 и 1.0
- С Днем Победы!
- С Днем Рождения, Шеф!
- ВАЖНО! 4-ФСС на сегодня, 26 апреля продлен прием.
- Услуги
- 1С:ERP
- Решения 1С
- Цены
- Акции
- О компании
- +7 (495) 827-19-30
- sales@bytenet.ru
- 142403, Россия, г. Ногинск, ул. Советской конституции, д. 2a