Главная » 1С Предприятие » ОБЩИЕ СВОЙСТВА  АГРЕГАТНЫХ ТИПОВ  ДАННЫХ  1С

0

В  1С помимо числовых, символьных данных  и дат можно  работать  с  объектами, относящимися к данным  агрегатного типа. Всего в  1С определено около 30 агрегатных типов данных.  Большинство из них приведено в табл. 3.1.

Агрегатные  типы данных 1С

Таблица 3.1

Тип

Раздел,  где  рассматривается или  используется

БухгалтерскиеИтоги

-

ВидРасчета,  ГруппаРасчетов

7.3, 7.8,7.10, 7.11,7.12   7.15

ВидСубконто

-

ГрупповойКонтекст

1.13,5.2,5.4

Документ

5.8,7.6,7.9

Журнал   документов

5.8.3,7.6.5,7.9.5

ЖурналРасчетов,  РасчетныйПериод, ЗаписьЖурналаРасчетов

7.1,7.2,7.4,7.13

Запрос

5.11.3,7.4.7,7.17.4

Календарь, Праздники

7.5

Картинка

3.4.4

Константа

1.7

КорректныеПроводки

-

Метаданные

1.6,  1.7,4.1,7.5.2.3,9.3.1.2

Операция

-

Периодический

Гл.  6,9.3.1.2

Перечисление

1.13, Гл. 4, 7.3.3

ПланСчетов

-

Регистр

-

СписокЗначений, ТаблицаЗначений

1.8,3.3,3.4,7.17.2

Справочник

Гл.  5,7.3.7, 8.5.2

Счет

-

Текст

1.10,7.17.3

Таблица

1.9,5.11,7.17.2

Форма

1.8, 1.9, 3.3.4, 3.4.2, 5.3.3.1, 5.3.3.2, 5.7, 5.8.2,

5.8.3, 5.8.4, 5.10.1-5.10.3, 7.4.3, 7.6, 7.9

ФС

1.12,7.4.6

Xbase, Ключ

7.4.6,9.3.2

Замечание.  Язык   1С  не  предоставляет возможности  для  создания  иных,  кроме определенных в  языке, агрегатных типов  данных.  Также  нельзя  изменить  атрибуты (кроме реквизитов)  и методы, используемые  с объектами  агрегатных типов.

Агрегатные типы,  введенные  1С, позволяют  строить модели,  отражающие  процессы  в различных  подразделениях  предприятия, например  на складе, в отделе  снабжения  или сбыта, бухгалтерии  и др.

Агрегатные типы можно  разделить на две группы.

В   первую  отнесем  типы  специального  назначения,   например   Документ,   ЖурналРасчетов, ПланСчетов  и  др.  Объекты таких типов  определены в  конфигурации  системы,  поэтому,  открыв   ее,  вы   сможете   просмотреть   полный  перечень  типов   первой группы  и их разновидностей.

Создавая  в  программе тот  или  иной объект  этой  группы, прежде  необходимо  удостовериться,  что  он  присутствует в  конфигурации. Если  это  не так, то  следующий  код вызовет,  если  убрать  конструкцию  Попытка, ошибку исполнения,  приводящую к остаI нову вычислений:

// Невозможно создать объект Справочник.Сотрудники_2,

// поскольку его в конфигурации системы нет

// Для преодоления ошибки, чтобы избежать останова программы,

// используем конструкцию Попытка попытка

сСотр_2  =  СоздатьОбъект("Справочник.Сотрудники_2"); исключение

// Неудачная попытка создания объекта  Справочник.Сотрудники_2

Сообщить(ОписаниеОшибки()); конецПопытки;

После   добавления  в   конфигурацию  справочника  Сотрудники_2  приведенный  выше код имеет право на существование. Однако всякое изменение конфигурации связано  с нарастанием  проблем по ее обновлению, поэтому мы, имея скромный опыт  по обустройству 1С, отложим до лучших времен рассмотрение подобных объектов.

Во  второй  группе   агрегатных  типов  данных   разместим  типы  общего  назначения,  такие,  как  Текст,  СписокЗначений, ФС  и  др.  Объекты этих типов  называются   внешними  объектами  (поскольку  они   не   присутствуют  в  конфигурации).  Они  создаются на время  исполнения  программ для  решения  частных,  предусмотренных  алгоритмом задач.  Функция  ТипЗначения, заметим,  возвращает для  внешних объектов  число  100. Например:

тЗнач = СоздатьОбъект("ТаблицаЗначений"); Сообщить(ТипЗначения(тЗнач));                //Напечатает                 100

К  одному  и  тому  же  агрегатному типу данных  в   1С  могут  относиться  разные  объекты,  отличающиеся  в   некоторых  случаях   структурой.  Например,   переменные  сКД и  сСотр, появившиеся в  программе в результате  исполнения  кода

сКД  =  СоздатьОбъект("Справочник.КадровыеДанные"); сСотр  =  СоздатьОбъект("Справочник.Сотрудники");

имеют  один тип   Справочник, но  разную   структуру, определяемую  набором  их реквизитов  компонентов  агрегатного  типа,  значения   которых   хранятся  в  полях  DBF-

файлов  базы   данных   системы.   Объекты  одного   типа  будем  в  дальнейшем  называть

разновидностями типа.

Разновидности  имеющихся  в   конфигурации  типов  можно   вывести,  использовав применяемые с метаданными  методы  (разд.   1.7.3).

процедура Выполнить(   )

//

Вывод списка справочников

ОчиститьОкноСообщений();

//

Выводятся  идентификаторы справочников

для ин = 1 по Метаданные.Справочник( ) цикл

Сообщить(Метаданные.Справочник(ин).Идентификатор); конецЦикла; // для

// Имеем в окне сообщений:

// Аттестация

// БазаДополнительныхНачислений

// БазаНалогов

//…

конецПроцедуры // Выполнить

Замечание.  Объект, например  Справочник, можно  создать  без  определения  его  вида, то есть так:

спр = СоздатьОбъект("Справочник"); //  спр объект типа Справочник неопределенного вида В дальнейшем разновидность устанавливается и изменяется  методом  Вид,  например

// Теперь спр это объект с разновидностью типа Справочник.Сотрудники

спр.Вид("Сотрудники");

Агрегатные  типы  данных   первой  группы   описываются   в   конфигурации   своими характеристиками,  в  качестве  которых,  например, для  справочника  Сотрудники  используются следующие  величины:

Идентификатор                                  "Сотрудники" Синоним

Комментарий                                   "Список сотрудников предприятия" Владелец

КоличествоУровней                          "3" ДлинаКода                                         "8" ДлинаНаименования                         "40"

СерииКодов                                        "ВесьСправочник" ТипКода "Числовой"

ОсновноеПредставление                  "ВВидеНаименования" КонтрольУ         никальности          " 1"

АвтоНумерация                                  "2" ГруппыВпереди                                  " 1" СпособРедактирования                     "ВДиалоге" ЕдинаяФормаЭлемента                    "0"

ОсновнаяФорма                              "Справочник.Сотрудники.ФормаСписка.Административная"

ОсновнаяФормаДляВыбора             "Справочник.Сотрудники.ФормаСписка.ДляВвода" ОбластьРаспространения                 "ВсеИнформационныеБазы"

АвтоРегистрация                               " 1"

Идентификатор  объекта  задает  его  имя,  которое, в  частности, употребляется  при вызове функции  СоздатьОбъект.

Доступ  к характеристикам  типа можно  получить, как  мы  видели,  пользуясь  методами для метаданных, ну и, конечно же, через предусмотренный в конфигурации интерфейс.

С  каждым   агрегатным типом связаны  методы процедуры и  функции,  позволяющие обрабатывать  объекты  агрегатного типа.

Изменять и/или  добавлять  имеющиеся в  1С  для  агрегатных типов  данных  методы  нельзя; также  не  разрешается удалять, редактировать  названия или  добавлять характеристики агрегатных типов. Значения  характеристик константой не являются.

Агрегатный тип имеет атрибуты  изменяемые  величины,  являющиеся  компонентами  разновидностей   типа.  Так,  атрибутами  объектов  агрегатного  типа  Справочник являются   в   частности  реквизиты   справочника,  которые   ссылаются  на   поля   DBFфайлов, хранящих  используемые   справочником  данные.  Например, справочник  Сотрудники  отображает данные,  записанные в  файл  SC2.DBF и  связанные  с ним файлы. Имена (идентификаторы)  реквизитов  и  соответствующих им  полей  DBF-файлов  различаются.  Реквизиты,  в  отличие от  характеристик  типа,  могут  удаляться, добавляться и  редактироваться.

Перечень  характеристик  и   атрибутов   каждой   разновидности   типа  первой   группы  можно   выгрузить в  текстовый  файл,  выбрав  в  конфигурации  пункты   меню  Конфигурация Описание структуры  метаданных. Понятно, что разновидности  одного  и того же агрегатного типа имеют один и тот же набор  характеристик (с разными значениями).

Список идентификаторов и представлений  (описаний) реквизитов, например справочника Сотрудники,  выведет в  окно   сообщений   следующий,  анализирующий  метаданные код:

процедура Выполнить() ОчиститьОкноСообщений();

видСпр = "Сотрудники";                  //           Вид справочника Сообщить("Реквизиты справочника " + видСпр +

" (их идентификаторы и представления).");

для ин = 1 по Метаданные.Справочник(видСпр).Реквизит( ) цикл

иден = Метаданные.Справочник(видСпр).Реквизит(ин).Идентификатор; предст  =  Метаданные.Справочник(видСпр).Реквизит(ин).Представление(); Сообщить(иден + " -" + предст);

конецЦикла; // Результат  приведен после кода процедуры

конецПроцедуры // Выполнить

Результат:

Реквизиты справочника Сотрудники (их идентификаторы и представления).

Оклад Оклад Тариф Тариф Разряд Разряд

РазрядРабочих Разряд  рабочих ПроцентЕжемесПремии % ежемес. премии Ставка Ставка

Категория Категория ГрафикРаботы График работы МестоРаботы  Место работы

Должность Должность Подразделение Подразделение формаТруда Форма оплаты  труда ТипСотрудника Тип сотрудника ПрофСоюз Членство в профсоюзе Аванс Аванс

ОплачиватьПитание ОплачиватьПитание ОплачиватьПроезд ОплачиватьПроезд КоличествоАкций Количество акций

ДатаСправки ДатаСправки СальдоПН Сальдо  по под. налогу ВозвратПН ВозвратПН ДатьЛьготы ДатьЛьготы ДатаРождения  ДатаРождения

СевернНадбавка % северной надбавки

ДатаСевернСтажа ДатаСевернСтажа ДатаСтажаДляВыслугиЛет ДатаСтажаДляВыслугиЛет ПриказОприеме ПриказОприеме

ПриказОбУвольнении ПриказОбУвольнении • СправкаНаНачРасч СправкаНаНачРасч СправкаСПрМестаР СправкаСПрМестаР

РК Районный коэффициент Военнослужащий Военнослужащий ХО-ХО

СальдоПН_Фед Сальдо  по под. налогу в фед. бюдж.

БезВзнСРаботод Взимать с работодателя взносы в фонды БезВзнССотр Взимать с сотр. взносы в фонды КоэфОплаты Коэф-т оплаты

БезВзносовВПФР БезВзносовВПФР БезВзносовВФСС БезВзносовВФСС БезВзносовВФОМС БезВзносовВФОМС Срочник Срочник

ПодоходныйПосчитан ПодоходныйПосчитан

Замечания:

1.      Наименование и  Код  являются  заданными  по  умолчанию, не  подлежащими  переименованию атрибутами  (реквизитами) любого   справочника  1С.  Атрибут  Наименование удаляется,  если  его  длина задается  равной  нулю.  Атрибут Код  удалению не подлежит.

2.       Представление    реквизита  несет    ту   же   нагрузку,   что    и    синоним    константы (разд. 1.7.1).

3.       Значения  объектов  типа Справочник, Документ и  Перечисление  можно  получить, вызвав встроенную  функцию  ВвестиЗначение, рассмотренную в разд.  2.5.

4.       Идентификатор   реквизита,  например  идентификатор Должность  реквизита справочника Сотрудники,  используется  для  доступа  к  значению  реквизита. Для  этого может  быть  пригоден  следующий  код  (на  примере  разновидности  типа  Справочник.Сотрудники):

сСотр = СоздатьОбъект("Справочник. Сотрудники");

// Устанавливаем дату, на которую  выбираются периодические реквизиты справочника сСотр.ИспользоватьДату(РабочаяДата());

// Ищем сотрудника, фамилия которого начинается с подстроки стр

стр = "Га";

// Значение второго параметра нуль, следовательно,

// поиск осуществляем во всем справочнике флаг = сСотр.НайтиПоНаименованию(стр, 0);

если флаг =  1 тогда                      //              Сотрудник найден

// Наименование атрибут справочника Сотрудники, Должность его реквизит.

Сообщить(сСотр.Наименование);       //    Вывод фамилии найденного сотрудника Сообщить(сСотр.Должность);           //      Должность сотрудника

иначе

Предупреждение("Сотрудник, фамилия которого начинается  с букв " + стр + " не найден.");

конецЕсли;

Изучение агрегатных типов мы начнем со списка и таблицы значений, объекты которых не фиксируются в  конфигурации системы, но зато часто применяются в пользо вательских программах.  Однако  прежде вновь вернемся к понятию  "пустое  значение", распространив его на все типы данных  1С.

3.2. ОБОБЩЕНИЕ ПУСТОГО ЗНАЧЕНИЯ

Переменная после  ее  объявления оператором Перем  не  определена, то  есть  имеет пустое  значение, причем неопределенного типа. Например:

перем а;

// Напечатает 0, что соответствует неопределенному типу данных Сообщить(ТипЗначения(а));

Однако   неопределенной   переменной,   употребив   встроенную    функцию   ПолучитьПустоеЗначение, можно  присвоить  пустое значение некоторых  имеющихся в  1С типов данных, таких, как

Число; Строка; Дата;

Справочник;

Документ; Счет; ВидСубконто; ВидРасчета; Календарь. Например:

// После объявления а неопределенная  переменная неопределенного типа перем а;

а = ПолучитьПустоеЗначение("Дата"); Сообщить(ТипЗначенияСтр(а));                //                 Напечатает Дата

а = ПолучитьПустоеЗначение("ВидСубконто"); Сообщить(ТипЗначенияСтр(а));                //          Напечатает ВидСубконто

Другие типы данных пустых значений не имеют.  Например: а =  ПолучитьПустоеЗначение("КорректныеПроводки");

// Напечатает 0, что соответствует неопределенному типу данных

Сообщить(ТипЗначения(а));

Также  пустое значение заданного  типа можно  получить, передав  функции  ПолучитьПустоеЗначение не имя типа, а имя разновидности типа, например

а =  ПолучитьПустоеЗначение("ВидРасчета.ВыплатаЧерезБанк"); Сообщить(ТипЗначенияСтр(а));                //          Напечатает ВидРасчета

При  этом  функция ПолучитьПустоеЗначение вернет верное значение  агрегатного типа, даже если ее аргумент задает несуществующую разновидность типа. Например:

а= ПолучитьПустоеЗначение("Справочник.НетТакогоСправочника"); Сообщить(ТипЗначенияСтр(а));               //         Напечатает Справочник

Добавим, что константа  или определенная  переменная  символьного типа, если они содержат  только  пробелы, считаются пустыми, например

Сообщить(ПустоеЗначение("  "));             //        Напечатает  1

Равное нулю число пустым  не является, например Сообщить(ПустоеЗначение(0));                //                Напечатает 0

Источник: Бартеньев О. В. 1С:Предприятие:  программирование для  всех.  Базовые объекты и расчеты на одной дискете. М.: Диалог-МИФИ, 2005. 464 с.

По теме:

  • Комментарии