18c0693f

1С Предприятие. Практика программирования на платформе v7

Атрибуты объекта метаданных типа «Справочник»



Атрибут или Реквизит - это некое хранилище информации определенного типа. Каждый введенный нами реквизит позволит вводить в объект данного вида некоторые значения.
Для объектов некоторых видов характерны атрибуты, например: код и наименование для справочников. Ввод атрибутов обеспечивается системой автоматически, наименования идентификаторов атрибутов не изменяются.
Атрибуты Код и Наименование характерны для любого справочника. По ним можно производить сортировку элементов справочника. Тип Наименования - строка. Тип Кода можно задать — или число, или строка.
Атрибут Родитель определен для элементов или групп справочника подчиненных какой-либо группе справочника и возвращает ссылку на неё.. Доступ к значению родительской группы выбранного элемента справочника осуществляет Метод ИспользоватьРодителя(<Группа >), устанавливающий выборку элементов по группе справочника.
Метод ПринадлежитГруппе(<Группа>) проверяет, принадлежит ли указанной группе текущий элемент справочника (независимо на каком нижележащем уровне он находится). Метод возвращает: 1 - если элемент принадлежит указанной группе , 0 - если нет.
Атрибут Владелец определен для элементов подчиненного справочника и возвращает ссылку на сопряженный элемент справочника владельца. Доступ к владельцу выбранного элемента справочника в связанном справочнике осуществляет Метод ИспользоватьВладельца(<Элемент>). <Элемент> - это значение элемента связанного справочника, которому подчинен данный
62_______________________ 1С:Предприятие. Практика программирования на платформе V7
справочник. Метод устанавливает выборку по элементу связанного справочника и возвращает значение текущего владельца для справочника (на момент до исполнения метода). В контексте Модуля формы списка справочника метод относится ко всему текущему справочнику.
Реквизиты это дополнительные свойства справочника, создаваемые при конфигурировании. Реквизиты можно создавать и для элемента, и для группы справочника. Они предоставляют доступ к одному из свойств объекта.



Редактирование структуры справочника

Упражнение 5. Создадим два вида справочников: «Оборудование» и «Единицы», причем справочник «Единицы» сделаем подчиненным справочнику «Оборудование», Справочник «Оборудование» сделаем иерархическим, и определим в нем периодический реквизит элемента справочника, изменяемый документами «Цена», реквизит «График», тип реквизита — Календарь», предназначенный для вычисления интервалов времени по различным графикам работы, и реквизит «КоэффАморт», тип реквизита — Число, а также реквизит группы справочника «ГрЦена», тип реквизита — Число.

В дереве метаданных выделим ветвь «Справочники», далее в главном меню выберем пункт «Действие» и в появившемся подменю пункт «Новый элемент».



VII Справочники______________________________________________________________ 63

Появится окно редактирования структуры справочника (или конструктор справочника, если установлен флажок «Использовать конструкторы для создания новых объектов»), в которой редактируются свойства объекта.



Чтобы к объекту можно было обращаться, ему надо задать идентификатор, который не может содержать пробелов и специальных символов, кроме подчеркивания, и не должен начинаться с цифры, его длина не должна превышать 128 символов; кроме идентификатора, можно также задать комментарий и синоним. В отличие от идентификатора, на них не накладывается никаких ограничений. Синоним описывает пользовательское представление объекта, если он не задан, то для представления используется идентификатор. В комментариях обычно записывают текст, Расшифровывающий идентификатор или поясняющий назначение создаваемого объекта. Для подчиненных справочников задается свойство подчинения (связь со справочником владельцем типа «много к одному»). Для справочников любого вида характерны реквизиты «Код» и «Наименование», названия которых не изменяются, длина кода (не более 24 символов) и наименования (не более 100 символов). Также здесь задаются основные параметры для нумерации и сортировки элементов - «Контроль уникальности» и «Серии кодов». Из данной формы доступны различные формы представления справочника: форма элемента (индивидуальная карточка), форма группы, Формы списков и устанавливаются формы для редактирования элемента справочника: «в списке», «в диалоге» - в индивидуальной карточке или «обоими



64_______________________ 1С:Предприятие. Практика программирования на платформе V7

способами».

По умолчанию справочнику дается идентификатор «Новый1», изменим его на - «Оборудование», установим тип кода — «Текстовый».

Создание нового реквизита



Создание нового реквизита справочника может осуществляться как из дерева метаданных, через контекстное меню конкретного справочника, так и из вышеописанной формы нажатием кнопки «Новый». При этом на экране появляется окно палитры свойств - «Свойства реквизита». В верхней части закладки «Общие» следует ввести идентификатор нового реквизита. Идентификатор реквизита является некоторым уникальным словом, которое позволит отличить данный реквизит от других реквизитов данного объекта. При создании нового рекви-зита программа сама подставляет идентификатор «новый1». Целесообразно вводить идентифика-торы, отражающие назначение реквизита. Введем в справочник «Оборудование» реквизит «Цена» Тип вводимого реквизита указывается выбором из списка возможных типов в поле «Тип значения». Стандартными типами являются «Число», «Строка», «Дата». Они позволяют вводить, соответственно, числовое значение, произвольную строку символов или календарную дату. Установим тип значения реквизита «Число», который располагается вы-ше типа «Строка».

Для числовых реквизитов, кроме самого типа «Число», нужно также указать длину и точность (количество знаков после запятой). Обратите вни-мание, что длина числового реквизита указывается с учетом целой части, дробной и десятичной точки, на платформе 7.5 максимальная точность чисел - 5 знаков.

VII. Справочники_____________________________________________________________ 65

на платформе 7.7-9 знаков, максимальная длина чисел -19 знаков. На закладке «Дополнительные» можно задать разделение представления числа на триады -флажок «Разделять триады»,- которое не влияет на формат хранения чисел, то есть символ разделителя не включается в длину числа. Полностью данное свойство объекта метаданных можно именовать «Разделять триады цифр при показе числового значения объекта метаданных». Это свойство доступно для редактирования только для объектов метаданных с типом значения «число». Если это свойство включено, то при вводе и показе значения объекта метаданных будут автоматически вставляться разделители между тройками цифр, разделяя тысячи, миллионы, миллиарды и так далее. Здесь же можно установить флажок «Неотрицательный», который не позволит Вам интерактивно ввести отрицательное значение реквизита, причем при вводе отрицательного значения в «неотрицательный реквизит» система запишет положительное



значение.

Укажем для реквизита «Цена» длину 10 и точность 2, это значит, что максимальное число, которое можно будет ввести в реквизит количество, составит 9999999.99, то есть, в целой части количества мы сможем вводить 10-2-1 = 7 разрядов. При выборе длины и точности нужно ориентироваться на текущие потребности, оценив, какие при-мерно максимальные значения цены и с какой точностью встре-чаются в хозяйственных операциях. В дальнейшем можно легко увеличить и длину, и точность для любого реквизита. Максимальная точность числового значения - 9 знаков.

Уменьшение длины и точности реквизита может привести к потере существующих значе-ний в уже введенных элементах, но программа предупредит вас об этом.

На закладке «Дополнительные» свойств реквизита установим флажки «Неотрицательный», «Периодический», чтобы сохранялись все значения реквизита с привязкой к дате изменения, и «Изменяется документами», чтобы

66_______________________ 1С:Предприятие. Практика программирования на платформе V7

можно было отслеживать историю изменения значения по документам; флажок «Ручное изменение» устанавливается системой и служит для обеспечения возможности ручного ввода или изменения значений в истории реквизита.



Для подтверждения введенных нами данных нужно нажать кнопку «ОК.». При этом палитра свойств будет закрыта, а введенный реквизит будет располагаться в списке реквизитов, в окне редактирования реквизитов.

При необходимости использования выборки или поиска по реквизиту у последнего должен быть установлен на закладке «Дополнительные» флаг «Сортировка», а для возможности отбора элементов по значению реквизита -флаг «Отбор по реквизиту». Установим флаг сортировки для реквизита «График».



V//. Справочники_____________________________________________________________ 67

Вернемся в окно редактирования свойств справочника «Оборудование» и создадим возможность группировать элементы справочника по группам. Для этого установим значение поля ввода «Кол-во, уровней» больше единицы.



Свойство реквизита многоуровенного справочника «Использовать» позволяет определить, для каких записей будет использоваться данный реквизит: «для элемента», «для группы» или «для обоих».





68_______________________ 1С:Предприятие. Практика программирования на платформе V7

Далее нажмем последовательно кнопки «Формы списка» и «Редактировать». Форм списка может быть несколько. Две из них можно определить для просмотра каталога и для подбора значений по умолчанию.







При нажатии на кнопку «Открыть» списка конструктор предложит нам ввести реквизиты Код, Наименование, ГрЦена, Цена и График. Не забудьте установить флажок «Вставить дерево групп». Нажмем кнопку «Вставить» и выбранные реквизиты будут помещены в форму списка справочника «Оборудование».

VII. Справочники_____________________________________________________________     69

Напомню, что форма включает в себя:

1. Диалоговое окно, в котором мы задаем расположение реквизитов, кнопок

и информационных полей (создаем визуальное представление объекта для пользователя);

2. Модуль формы, в который мы помещаем те процедуры и функции, которые

выполняются в момент интерактивного открытия, заполнения, сохранения и изменения объекта;

3. Табличный шаблон, в котором мы создаем, если это необходимо, шаблон

печатной формы данного объекта.

Упражнение 6. Самостоятельно создайте Форму списка для подбора элементов справочника «Оборудование»,которая будет содержать дерево групп, а в таблице атрибуты код и наименование.



Чтобы можно было установить вручную нужную ширину колонок многострочной части, следует сначала отключить режим автоматического определения ширины колонок (в 7.7 этот режим по умолчанию отключен). Автоматическое определение ширины колонок отключается в палитре свойств многострочной части документа, для этого нужно дважды щелкнуть мышью в многострочную часть. В палитре свойств следует щелкнуть мышью флажок «Автоматическая настройка ширины колонок» и нажать кнопку «ОК», чтобы подтвердить произведенные изменения. После этого можно перетаскиванием вертикальных границ колонок табличной части установить для них желаемую Ширину. Для перетаскивания границ колонок необходимо поместить указатель Мыши над линией, разделяющей колонки в табличной части, чтобы курсор мыши принял соответствующую форму, затем нажать правую кнопу мыши и, не опуская ее, перетащить разделитель колонок в новое место.



70_______________________ 1С:Предприятие. Практика программирования на платформе V7

Если все колонки не помещаются в видимой области табличной части, то, для «прокрутки» колонок по горизонтали, следует щелкать мышью в левую или правую стрелку горизонтальной полосы прокрутки у нижней границы табличной части.

Можно изменить порядок следования колонок, перетаскивая их в пределах табличной части. Для перетаскивания колонки её следует выделить, щелкнув мышью в ее заголовок, и переместить указатель мыши, при нажатой левой кнопке, в то место, где должна располагаться колонка, при этом выделенной, т.е. редактируемой, колонкой останется та же колонка по номеру позиции; например, была выделена 5-я колонка и перемещена в 3-ю позицию, но выделенной станет колонка в 5-ой позиции, то есть та, которая была 4-ой.

Упражнение 7. Создайте диалоговую Форму для элементов справочника «Оборудование».

Редактирование формы в основном выполняется мышью. Основным приемом работы является «перетаскивание». При перетаскивании щелкают левой кнопкой мыши в элемент, который нужно перетащить и, не отпуская левую кнопку, ведут указатель мыши к тому месту, куда перетаскивается элемент, а затем кнопка мыши отпускается. Все элементы диалога размещаются в пределах шаблона окна диалога. Также можно поместить элемент и вне шаблона, но тогда при работе с диалогом этот элемент будет невиден и недоступен. Сначала отодвинем вниз нижнюю границу диалога. Щелкните мышью в пустое серое пространство диалога (в любое место). При этом граница формы будет выделена пунктирной линией, на которой будут размещены маркеры. Эта линия показывает тот элемент диалога, над которым будут выполняться какие-либо действия. Для изменения вертикального размера диалога нужно перетащить мышью маркер на пунктирной линии обозначающей нижнюю границу диалога. При этом в нижней части диалога образуется пустое место. Теперь нужно перетащить ближе к нижней границе две кнопки: «ОК» и «Закрыть». Кнопки можно перетащить по одной, а можно выделить их обе и перетащить две одновременно. Для выделения кнопок щелкните мышью од-ну кнопку, затем нажмите клавишу Shift и, не отпуская ее, щелкните мышью другую кнопку. Вокруг каждой кнопки будет нарисована синяя пунктирная линия с маркерами. Перетащить такую группу элементов можно, перетаскивая любой элемент. Выделять элементы диалога можно также, просто «обводя» их мышью - границу выделяемой области будет показывать тонкая пунктирная линия. Но таким образом можно выделять только элементы, расположенные рядом. Выделенные элементы можно отформатировать по шаблону. Для выбора



VIl. Справочники______________________________________________________________ 71

шаблона, нажав клавишу Ctrl, щелкните левой кнопкой мыши нужный элемент формы диалога.



В форме элемента желательно увидеть, к какой группе справочника принадлежит данный элемент. Причем, элемент может находиться на верхнем (первом) уровне справочника и не иметь родительской группы. Создадим в форме реквизит с соответствующим текстом. Выберем в меню «Вставить» или в панели инструментов инструмент «Текст» и наметим курсором место в форме, куда мы поместим реквизит формы. Для этого нужно поместить курсор в левый верхний угол предполагаемой области формы диалога, в которую предполагается их поместить, нажать левую кнопку мыши, не отпуская ее, переместить курсор к правому нижнему углу предполагаемой области размещения реквизита, и отпустить кнопку мыши. Так как текст в реквизите мы будем выводить с помощью выражения на встроенном языке в поле «Формула» на закладке «Дополнительные», то текст заголовка реквизита надо удалить.



72_______________________ 1С:Предприятие. Практика программирования на платформе V7

Запишем выражение в поле «Формула» свойств текста, используя, оператор конкатенации строк:



Метод ?(<Логич_выраж>,<Выраж1>,<Выраж2>) возвращает значение первого выражения, если условие истинно, иначе - значение второго выражения.

Метод Выбран( ) возвращает флаг выбора элемента справочника; 1 - если элемент справочника выбран, О - если не выбран.

Шрифт отредактирован на закладке «Шрифт» текстового реквизита.



Создадим предопределенную процедуру ВводНового() в модуле формы элемента справочника, в которой будем вводить значение цены по группе справочника в реквизит элемента «Цена» по умолчанию. Форму элемента справочника мы открываем для просмотра и редактирования существующих записей справочника, а также для создания новых записей в справочнике.

Метод Уровень() возвращает номер уровня записанного в базу данных текущего элемента справочника.

В последнем случае во время работы в форме элемент ещё не записан, поэтому метод Уровень() вернет значение 0. Поэтому для определения принадлежности элемента группе справочника используем знакомый нам метод Выбран() для атрибута Родитель.



VII. Справочники_____________________________________________________________ 73_

Процедура ВводНового()

Если Родитель.Выбран()=1 Тогда

Цена=Родитель.ГрЦена; КонецЕсли;

КонецПроцедуры

Предопределенная процедура при интерактивном вводе нового элемента справочника

ВводНового(<ПризнКопирования>,<ОбъектКопирования>).

Параметры:<ПризнКопирования> - признак того, что объект введен копированием. Число: 1 - объект

введен копированием, 0 - просто новый объект. Данный признак может быть использован для анализа

необходимости инициализации реквизитов нового объекта.<ОбъектКопирования> - объект, который

был скопирован.

При копировании записей справочника копируются все реквизиты, кроме кода записи справочника. Отредактируем принудительно атрибут элемента «Наименование», используя параметры предопределенной процедуры ВводНового() и метод ВвестиСтроку().

Метод ВвестиСтроку(<Строка>,<Подсказка>,<ДлинаСтроки>,<Признак>,<Таймаут>) Вызывает окно

интерактивного диалога для ввода строки. Возвращает:

1 - если в диалоге нажата кнопка ОК;

О - если нажата кнопка Отмена;

-1 - если закончилось время ожидания ответа.

Параметры: <Строка> - имя переменной, объявленной в модуле для приема вводимого значения;

<Подсказка> - текст заголовка окна диалога ввода; <ДлинаСтроки> - длина вводимой строки;

<Признак> - если 0 или опущен - ввод одной строки, если 1 - ввод многострочного текста с

разделителями строк; <Таймаут> - число секунд времени ожидания ответа (если опущен или 0, то без

ограничения).

Процедура ВводНового(признак,копируемый)

Если признак=1 Тогда

ВвестиСтроку(Наименование,”Введите наименование”,25);

КонецЕсли;

Если Родитель.Выбран()=1 Тогда Цена=Родитель.ГрЦена;

КонецЕсли; КонецПроцедуры

Запишем аналогичный алгоритм в форме списка справочника. В этом контексте свой список предопределенных процедур. Для ввода цены по Умолчанию используем предопределенную процедуру ПриРедактированииНовойСтроки(). Проверить операцию копирования в форме списка мы не можем.



Процедура ПриРедактированииНовойСтроки () Если Родитель.Выбран()=1 Тогда

Цена=Родитель.ГрЦена; КонецЕсли;

КонецПроцедуры

74_______________________ 1С:Предприятив. Практика программирования на платформе V7

Упражнение 8. Создайте справочник «Единицы». В окне редактирования справочника «Единицы» установите подчинение (в поле ввода «Подчинен») справочнику «Оборудование» и создайте реквизит «Коэффициент», в который будут записываться значения коэффициентов пересчета соответствующие единицам измерений. В форме элемента и в форме списка справочника в текстовом реквизите формы покажите владельца элемента справочника.

Для вставки в табличную часть формы списка текстового реквизита щелкнем мышью кнопку с синей буквой «Т» в панели элементов диалога или соответствующую строку в меню «Вставить», установим его на табличную часть, курсор мыши при этом примет специальный вид, и ещё раз щелкнем левой кнопкой мыши. Появится дополнительная колонка без названия в самой правой позиции табличной части формы, чтобы её увидеть, как правило, надо прокрутить табличную часть стрелкой вправо. Для ввода формулы нужно активизировать свойства колонки. Сначала щелчком мыши в табличную часть мы должны активизировать табличную часть, а затем двойным щелчком в заголовок колонки активизировать свойства этой колонки. При этом появляется палитра свойств колонки. Зададим колонке название в поле «Заголовок», а в поле «Формула» напишем — Владелец.


Атрибуты операции и проводки


Бухгалтерская операция имеет аналогию с документом, это просто другое представление документа.
Атрибуты операции — это реквизиты шапки, они, как правило, и берутся из Шапки бухгалтерского документа:
ДатаОперации (Дата, обычно это дата документа), Содержание (обычно произвольная строка),
154______________________ 1С:Предприятие. Практика программирования на платформе V7
СуммаОперации (Число, обычно это итог по сумме — Итог(«Сумма»)),
Документ (ссылка на документ, создавший операцию). Атрибуты проводки — это реквизиты многострочной части.
Количество (Число),
Валюта (элемент справочника, определенный в свойствах планов счетов для валютного учета),
ВалСумма (Число),
Сумма (Число, для валютных счетов — это рублевое покрытие).
Параметры синтетического и аналитического учета задаются в проводке по дебету и кредиту:
Атрибуты Дебета и Кредита:
•    Счет,
Субконто (виды и количество субконто определяются выбранным счетом).

Упражнение 28 В документе Приход создайте реквизит шапки ТипУчета типа перечисление ТипыУчета. Предусмотрите ввод его значения по умолчанию -текущее значение константы ТекТипУчета, при создании нового документа в информационной базе.
Х Основы построения «Бухгалтерского учёта» в системе 1С:Предприятие_________ 155
В зависимости от значения этого реквизита мы будем выполнять движения по документу. У этого перечисления три значения: Красное, Белое и Черное. Определим условия проведения документа.

В результате если значение перечисления Красное — документ будет проведен и по оперативному, и по бухгалтерскому учету.
Описание алгоритма Операции в модуле документа.
После того, как мы сконфигурировали объекты бухгалтерского учета можно создать в модуле приходного документа операцию с проводками.
Проводки по документу создаются через атрибут «Операция».
Упражнение 29. Создадим алгоритм формирования операции по документу «Приход» с учетом формирования партии приходным документом и условия списания по бухгалтерскому или оперативному учету.



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

156______________________ 1С:Лрвдприятие. Практика программирования на платформе V7

В конструкторе заполним атрибуты операции и проводки. Определяемый атрибут проводки выделяем в нижней таблице. Формулу, вычисляющую его значения, определяем по значению или берем из данных документа.



После редактирования модуль документа должен выглядеть примерно так:

// ********************

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку() =1 Цикл

// Запись истории периодического реквизита справочника

Если НовЦенаоОборудование. Цена. Получить (ТекудийДокумент () ) Тогда

ПривязыватьСтроку(НомерСтроки);

УстановитьРеквизитСправочника(Оборудование,"Цена",НовЦена);

КонецЕсли;

Если ТипУчетаоПеречисление.ТипыУчета.Бел Тогда

//}}ДВИЖЕНИЯ_РЕГИСТРОВ

Регистр.Амортизация.Оборудование = Оборудование; Регистр.Амортизация.Партия = ТекущийДокумент(); Регистр.Амортизация.Количество = Количество* Единица.Коэффициент;

Регистр.Амортизация.Стоимость = Сумма;

Х Основы построения «Бухгалтерского учёта» в системе 1С:Предприятие_________ 157

Регистр.Амортизация.ПривязыватьСтроку(НомерСтроки);

Регистр.Амортизация.ДвижениеПриходВыполнить();

//}}ДВИЖЕНИЯ_РЕГИСТРОВ

КонецЕсли;

Если ТипУчетаоПеречисление.ТипыУчета.Чер Тогда

//{{Ф0РМИР0ВАНИЕ_ОПЕРАЦИИ

Операция.НоваяПроводка();

Операция.Дебет.Счет =СчетПоКоду("ОБ.ПР",ПланыСчетов.Учебный);

Операция.Дебет.Оборудование = Оборудование;

Операция.Дебет.Партия = ТекущийДокумент();

Операция.Кредит.Счет=СчетПоКоду("ОБ.СП",ПланыСчетов.Учебный); Операция.Кредит.Оборудование = Оборудование;

Операция.Количество = Количество*Единица.Коэффициент;

Операция.Сумма = Сумма;

Операция.ТипУчета = ТипУчета;

КонецЕсли;



КонецЦикла;

Если ТипУчетаоПеречисление.ТипыУчета.Чер Тогда

Операция.Содержание = "Приход оборудования";

Операция.СуммаОперации = Итог("Сумма");

Операция.Записать();

//}}ФОРМИРОВАНИЕ_ОПЕРАЦИИ

КонецЕсли;

КонецПроцедуры

Обратите внимание, что, в отличие от движений регистров, для которых записывается каждое движение по строке документа, проводки по документу записываются в информационную базу все сразу при записи операции. Если возникает необходимость записать сформированные проводки, например, Чтобы посмотреть бухгалтерские итоги, используется метод Операция.ЗаписатьПроводки(). Метод может использоваться только для атрибута "Операция" документа в момент проведения (в процедуре ОбработкаПроведения). При этом происходит обновление бухгалтерских итогов. Это позволяет при проведении документа обращаться к бухгалтерским итогам, уже измененным проводками, записанными этим документом. После

158    ____________________ 1С:Предприятие. Практика программирования на платформе V7

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

При добавлении нового субконто или валютного учета («+») по счёту в плане счетов, в модулях документов, по которым проводки формируются интерактивно, необходимо прописать движения по созданным атрибутам счёта: <тип субконто> или <ВалСумма>.

Операция. ВалСумма=...;


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


Бухгалтерские Итоги (далее БИ) - это служебный объект позволяющий читать и отбирать информацию из объектов метаданных бухгалтерского учета. Он имеет два режима: режим итогов и режим бухгалтерского запроса.


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


Все хозяйственные операции находят свое отражение на счетах бухгалтерского учета. Если зафиксировать показатели учета на определенную дату, они будут представлены в виде остатков (сальдо) по счетам. При рассмотрении показателей во времени, принято оперировать понятием отчетного периода, в котором можно выделить начальные остатки, обороты и конечные остатки по счетам.
Другими словами бухгалтерский счет - это "регистр", на котором ведется учет некоторого разреза хозяйственной деятельности предприятия. Отличие от регистров оперативного учета в том, что балансовые счета — это взаимосвязанные разрезы учета. Взаимосвязь счетов обусловлена корреспонденциями — то есть двойными записями.
Сальдо и обороты по счетам бухгалтерского учета (самолетики)
Оборот - приход или расход объекта учета на счете за определенный период времени.
Сальдо — остаток объекта учета на счете на дату сальдирования (расчета остатка).
Балансовые счета можно разделить на активные, пассивные и активно-пассивные. Активные счета имеют дебетовое сальдо (остаток), пассивные кредитовое сальдо (остаток). Красным «неправильным» сальдо называют ненулевое конечное кредитовое сальдо на активном счете или конечное дебетовое сальдо на пассивном счете в конце балансового периода. Активно-пассивные счета позволяют в одном разрезе учета вести и активные, и пассивные статьи баланса.

СНД — сальдо начальное дебетовое, СКД — сальдо конечное дебетовое, ДО — дебетовый оборот, КО — кредитовый оборот, СНК — сальдо конечное кредитовое, СКК — сальдо конечное кредитовое.
X. Основы построения «Бухгалтерского учёта» в системе 1С:Предприятие________ 149


Движения документа Создание записей периодического реквизита Справочника по документу


Документы в системе «1С:Предприятие» являются инструментом для записи движений в учетные базы данных, в которых ведутся записи по различным разрезам учета. Эти записи вводятся только программно в модуле документа в предопределенной процедуре ОбработкаПроведения().
Простейшим примером такой базы является совокупность записей периодических реквизитов справочников, создаваемая документами.
Для записи движений при создании документа необходимо в окне редактирования установить флажок «Разрешить проведение документа» и определить типы учетных баз, в которых данный документ будет создавать записи: Оперативный учет, Бухгалтерский учет или Расчет.
Модуль документа открывается из окна редактирования документа (не формы Документа) или через контекстное меню документа в дереве метаданных. Следует обратить внимание, что контекст модуля документа не связан с контекстом формы документа, поэтому в контексте модуля документа Доступны только атрибуты (реквизиты) документа.
Если в окне редактирования документа установлен флажок «Автоматическое
112______________________ 1С:Предприятие. Практика программирования на платформе V7
удаление движений», то при удалении или пометке к удалению документа движения созданные в учетных базах по данному документу удаляются.
Упражнение 20. Создадим в модуле документа алгоритм формирования записей истории периодического реквизита справочника «Оборудование» «Цена».
Новую цену оборудования мы задаем в приходном документе, определяя значение реквизита «ЦенаНов», поэтому создадим в модуле документа записи истории периодического реквизита справочника оборудование по каждой строке документа. Чтобы не записи в истории периодического реквизита справочника не дублировались, нужно проверить была ли изменена цена в документе.
Метод
УстановитьРеквизитСправочника(ОлементСправочника>,<НазваниеРеквизита>,<Значение>,
<ДатаУстановки>,<ИмяТипа>,<Длина>,<Точность>) позволяет записать значение периодического
реквизита справочника с привязкой к проведению документа.



<ЭлементСправочника> - элемент справочника, в который будет запись;

<НазваниеРеквизита> - название периодического реквизита справочника;

<3начение> - новое значение периодического реквизита;

<ДатаУстановки> - дата установки нового значения периодического реквизита. Дата установки имеет

смысл только для не оперативных документов.

<ИмяТипа> - необязательный параметр. Строковое выражение - название типа данных (или Вид

субконто);

<Длина> - необязательный параметр. Число - длина числового или строкового значения;

<Точность> - необязательный параметр. Число знаков после десятичной точки.

Параметры <ИмяТипа>, <Длина> и <Точность> следует указывать при установке значения

периодического реквизита справочника, имеющего неопределенный тип. Метод доступен только в

Модуле документа в предопределенной процедуре ОбработкаПроведения.

Метод ПривязыватьСтроку(<НомерСтроки>) позволяет записывать номер строки документа в

движениях документа. <НомерСтроки> - номер строки Документа.

Метод устанавливает номер строки для всех последующих движений регистров, при записи значений

периодических реквизитов справочников с привязкой к документу, а также при записи бухгалтерских

проводок. Метод доступен только в Модуле документа в предопределенной процедуре

ОбработкаПроведения.

Процедура  ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку() =1 Цикл

Если НовЦенаоОборудование.Цена.Получить(ТекущийДокумент())   Тогда

ПривязыватьСтроку(НомерСтроки);

УстановитьРеквизитСправочника (Оборудование , "Цена" , НовЦена) ;

КонецЕсли;

КонецЦикла;

КонецПроцедуры

Глобальный контекст


Глобальный контекст доступен из модуля любого объекта и позволяет оптимизировать алгоритмическую структуру и уменьшить объём конфигурации. В состав Глобального контекста входят:
Глобальный модуль
\/ Формат исходных текстов программных модулей._____________________________ 41
Общие таблицы
Библиотека картинок Константы Перечисления Группы расчетов
Предположим, что счет-фактура у нас распечатывается из различных документов, тогда можно создать один шаблон печатной формы счета-фактуры в Общих таблицах и одну процедуру печати счет-фактуры в Глобальном модуле.


Глобальный модуль



Глобальный модуль имеет такую же структуру, как и любой другой модуль. В нём помещаются процедуры и функции, которые необходимо выполнять при запуске системы «1С:Предприятие», а также глобальные переменные, процедуры и функции, к которым можно обращаться из модуля любого объекта. Для этого при их описании указывается ключевое слово Экспорт.
Передача контекста объекта
Контекст - это элемент данных, на котором в данный момент интерактивно или программно спозиционирован объект. По значению контекста доступна вся совокупность значений атрибутов объекта. Для передачи контекста объекта в Глобальный контекст служит ключевое слово Контекст, которое используется в качестве фактического параметра при вызове процедур и
42_______________________ 1С:Предприятие. Практика программирования на платформе V7
функций Глобального модуля, в описании которых есть ключевое слово Экспорт.
Различают контекст объекта и контекст интерактивной формы объекта. Контекст формы можно передавать через параметр КонтФормы в формы других объектов, открываемые методами ОткрытьФорму() и ОткрытьПодбор(), а также через параметр предопределенной процедуры ОбработкаПодбора(). Этот параметр позволяет управлять реквизитами первой формы, из которой была открыта вторая форма, в контексте второй формы.


IIIСтруктура системы :Предприятие














Система «1С:Предприятие» является совокупностью двух тесно связанных частей: технологической платформы и конфигурации.








Система «1С:Предприятие» предназначена для решения задач по автоматизации учёта товарных и материальных средств, взаиморасчётов с контрагентами, расчёта заработной платы, расчёта амортизационных средств, бухгалтерского учёта по любым разделам и других необходимых предприятию разрезов учёта. Она представляет собой систему управления различными объектамив предметной области и позволяющих записывать, корректировать и получать информацию в заданном виде и формате. Существует четыре режима запуска системы: собственно Предприятие, где вводятся конкретные значения элементов данных, т.е. производится заполнение базы данных, Конфигуратор, описывающий структуру системы и алгоритмы обработки данных, Отладчик - для отладки алгоритмов в пошаговом режиме и хронометрирования времени выполнения операторов программы, и Монитор - для контроля над деятельностью пользователей в системе.
Технологическая платформа разрабатывается фирмой «1С». Конфигурация, в отличие от технологической платформы, может произвольно изменяться конечным пользователем. В конфигураторе системы настраиваются конкретный набор объектов и особенности учёта. К ним относятся основные свойства плана счетов, виды аналитического учёта, состав и структура используемых справочников, документов, отчётов, система хранения
/// Структура системы 1С:Предприятие________________________________________ 19
оперативных итогов и т.д. На уровне системы «1С:Предприятие» определены сами понятия и стандартные операции по их обработке. Средства конфигурирования позволяют описать конкретные структуры информации (объекты) и алгоритмы (процедуры и функции), описывающие специфику их обработки, для отражения различных особенностей учёта.
Конфигуратор позволяет записать в конфигурацию информацию об авторе конфигурации и его логотип, и, если необходимо, защитить эту информацию паролем от несанкционированного изменения. Просмотр информации об авторе конфигурации выполняется при помощи пункта «О программе» из меню «Помощь» главного меню системы 1С:Предприятие - как в режиме запуска «1С:Предприятие», так и в режиме Конфигуратора. Кроме этого, Конфигуратор позволяет также заменить центральную часть заставки системы в режиме запуска «1С:Предприятие».


IIОсновные понятия системы


Ключевым понятием системы 1С: Предприятие является объект.
Представьте себе, что мы хотим описать машину, состоящую из множества узлов, в процессе работы. В алгоритмических системах свойства машины мы можем представить в виде элементов данных, описываемых простыми типами данных: число, дата и строка, изменяя которые можно управлять машиной в целом или отдельными её узлами.
В нашей системе, для описания машины, мы можем создать структуру, состоящую из отдельных взаимосвязанных узлов и агрегатов машины, а так же их свойств. Элементами системы будут как сама машина, так и её составные части, и их свойства. В отдельные объекты выделяются группы элементов данных с одинаковыми параметрами и предназначением. При описании автомобиля можно выделить следующие объекты: автомобиль в целом, система подачи топлива, карбюратор, жиклеры, другие агрегаты системы подачи топлива с детализацией, ходовая часть и её узлы с детализацией, другие части машины с детализацией. К этим объектам можно обращаться, как к элементам данных, а не только к их свойствам, описываемым простыми типами данных. Для объекта необходимо определить соответствующие методы, которые характерные только для него. В самом деле, очевидно, что методы управления карбюратором не будут работать для передней подвески или рулевой колонки. Такая система позволяет создавать новые типы данных с характерными для них методами обработки и управления, что, в свою очередь, позволяет абстрагироваться от элементарных свойств описываемого предмета, и создавать более глубокие и разветвленные связи в реляционной структуре данных.
Таким образом, объект - это инкапсуляция данных и алгоритмов их обработки (от английского encapsulation - пакетирование). Другими словами - это формальное описание совокупности понятий, характеризующих элементы данных с одинаковыми свойствами (синий и красный — это различные значения одного и того же свойства - «цвет») и предназначением, в котором объединяются как свойства этих данных, так и методы обработки, характерные для типа данных. В контексте баз данных объект — совокупность данных с



14_______________________ 1C:Предприятие. Практика программирования на платформе V7

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



Объектная архитектура - это архитектура, в которой процессы, структуры данных (файлы), операции ввода/вывода информации и любые другие составные части архитектуры представляются как объекты.

В системе "1С:Предприятие" нельзя создать любой объект с заданными свойствами. Эта система изначально содержит в себе типовые наборы свойств и методов объектов, и можно создавать в системе объекты, используя эти наборы, называемые видами метаданных их можно представить в виде некоторых шаблонов объектов, создаваемых в "1С:Предприятии".



Это те "кирпичики" и "шестеренки" из которых создаются объекты системы. Таким образом мы будем создавать не любые объекты, а объекты метаданных.

Благодаря такой структуре существенно уменьшается время разработки БД. Экономится время на описание объектов: в "1С:Предприятии" связанный объект с двумя - тремя десятками реквизитов (связей) можно "накидать" за 5-7 минут. Основное время разработки при этом уделяется описанию

//, Основные понятия системы________________________________________________ 15

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

Другими словами, метаданные - это "информация о данных", представляющая виды данных, характерные для системы "1С:Предприятие".



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



Объект метаданных - это объект определенного в конфигурации вида метаданных.

Таким образом:

• Объекты метаданных, создаваемые при конфигурировании, подразделяются

по видам.

• Свойства вида метаданных определены в самой системе «1С:Предприятие»

и распространяются на любой объект метаданных данного вида.

• Мы можем создать объект только определенного на платформе вида

метаданных.

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

16_______________________ 1С:Предприятие. Практика программирования на платформе V7

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



Примерами объектов метаданных являются конкретные объекты определенного вида метаданных, создаваемые пользователем в процессе конфигурирования:

Справочник.Номенклатура, Документ.РасходнаяНакладная, а также атрибуты и реквизиты агрегатных объектов метаданных: например цена в справочнике Номенклатура или в документе расхода товаров.

Таким образом, при создании нового объекта метаданных основные его свойства: ключевые поля, методы и др., задаются системой в соответствии со свойствами выбранного вида метаданных. Система "1С:Предприятие", однако, позволяет присоединять объекты, созданные в других средах разработки, с помощью директивы ЗагрузшпьВнешнююКомпоненту("<Имя файла>").


Индексация БД


Для облегчения поиска элемента данных по БД создаются таблицы индексов, в которых содержатся первичные ключи — значения ключевых полей БД, и описание очередности записей. Таблица БД остается неупорядоченной. Таблица индексов, как правило, гораздо меньше таблицы БД, поэтому поиск и сортировка записей таблицы индексов происходит гораздо быстрее, чем поиск и сортировка по таблице БД.
Наряду с первичным индексом таблица индексов может содержать индексы по другим полям таблицы БД, что позволяет упорядочить БД по значению индексированного поля. Записи индексных таблиц можно сортировать.



Использование периодических реквизитов справочников


Использование периодических реквизитов существенно облегчает реализацию многих прикладных моментов конфигурации, однако, использование периодических реквизитов требует при конфигурировании особого внимания. Во-первых, не следует злоупотреблять этим свойством.  Установка свойства «периодический» для каждого реквизита должна быть обоснованным и хорошо продуманным шагом, иначе это просто усложнит работу пользователей со справочниками, но не даст большого выигрыша. Во-вторых, при конфигурировании следует всегда помнить, что для использования значения периодического реквизита справочника необходимо обязательно указывать дату, на которую потребуется выбрать или
78        ___________________ 1С:Предприятие. Практика программирования на платформе V7
записать значение. Установка даты использования периодических реквизитов

задается либо методом ИспользоватьДату ( [Дата] ) , либо методами

Получить([Дату])и Установить ([Дата] , [Значение]) (через точку

после самого реквизита). Одновременно использовать оба эти способа задания

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

ИспользоватьДату! [Дата] ) не вызывался, то к периодическому реквизиту

справочника следует обращаться с помощью методов Получить ( [Дату] ) и

Установить                     ( [Дата] , [Значение] ).     Если     метод
ИспользоватьДату ( [Дата] ) был вызван, то можно обращаться только непосредственно к значениям реквизитов.
На платформе 7.7 можно не указывать значение даты для метода Получить(), по умолчанию устанавливаются следующие значения: значение точки актуальности - если используется компонента "Оперативный учет", или Рабочая дата - если компонента "Оперативный учет"не используется.
Вызов метода ИспользоватьДату([Дата]) должен располагаться обязательно до позиционирования объекта на определенный элемент.
Примером, целесообразного использования метода ИспользоватьДату ( [Дата] ) может являться печать справочника с большим количеством периодических реквизитов. В этом случае, один раз вызвав в самом начале этот метод, Вы сможете получать значения всех реквизитов непосредственно, без вызова метода Получить ( [Дату] ).



Форма элемента справочника открывается с определенной датой. Если элемент открывается из списка справочника, то дата берется из списка. Если список в свою очередь открыт для выбора реквизита документа, то его дата будет совпадать с датой документа. Даты в формах списка и элемента справочника выводятся в заголовке окна и используются только для вывода и записи периодических реквизитов. По умолчанию это Рабочая дата, но её можно изменить из встроенного языка в модуле формы списка или элемента (группы). При записи элемента редактируемого в форме, если существуют периодические реквизиты, то выдается специальный запрос, в котором пользователь отмечает какие значения периодических реквизитов нужно установить на дату формы, вызов и вид запроса можно откорректировать методом модуля формы элемента справочника СохранениеПериодическихРеквизитов().

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

По умолчанию изменения реквизитов выставляются на основании сравнения значений со значениями, записанными на ближайшую предыдущую дату. Данный запрос выдается только для реквизитов, непосредственно

VII. Справочники______________________________________________________________ 79

включаемых в форму. Если некоторый периодически реквизит непосредственно в форму не включен, а изменяется из встроенного языка, то он не будет выдаваться в этом запросе и сохраняться. Для того, чтобы в реквизит участвовал в запросе о записи периодических реквизитов можно вставить его в форму, установив ему признак «Сделать невидимым». Периодические реквизиты содержат значения только начиная с даты первой записи истории значений реквизита, однако и в историю реквизита можно записать «пустое значение» на какую-либо дату. Например, если самая первая запись периодического реквизита «Цена» отмечена датой '02.12.94' со значением 48.00, а мы в программном модуле запросили значение этого реквизита на '30.11.94', то система вам вернет «пустое значение», т.е. ноль; если «пустое значение» установлено на дату '04.12.94', а следующее не пустое значение на '14.12.94', то с 04 по 13.12.94 система также вернет вам «пустое значение».

Пример записи значения периодического реквизита справочника:

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

Если Словарь.НайтиЭлемент(Элемент)  = 1  Тогда

Периодич = СоздатьОбъект(«Периодический»);

Периодич.ИспользоватьОбъект(«Цена», Словарь.ТекущийЭлемент());

Периодич.Значение= 2 5;

Периодич.ДатаЗнач = '17.05.00';

Периодич.Записать();

КонецЕсли;

Здесь «Элемент» - переменная или реквизит объекта с типом значения Справочник. Оборудование.


Использование подчиненных справочников


При создании конкретных конфигураций довольно часто возникают задачи, когда надо реализовать для каждого конкретного элемента справочника -список относящихся к нему объектов (отношение один-ко-многим). В нашем примере имеется справочник оборудования, и каждый элемент справочника может иметь произвольный список единиц измерения данного оборудования. Для того чтобы ввести новый или отредактировать существующий элемент справочника «Единицы», сначала откройте форму списка справочника владельца «Оборудование», выберите в нем курсором нужный элемент. Затем откройте форму списка подчиненного справочника «Единицы», он будет отображать список единиц измерения данного оборудования. Теперь можно добавлять, редактировать или удалять записи в справочнике «Единицы». Выбор элементов подчиненного справочника, в форме, при условии, что в форме существует элемент диалога, в котором выбран элемент справочника владельца, для которого производится выбор, реализуется в конфигурации при помощи указания в палитре свойств реквизита формы, предназначенного для выбора элемента подчиненного справочника, параметра «Связан с». В нем вводится имя идентификатора реквизита формы, который содержит элемент родительского справочника. В этом случае при выборе элемента подчиненного справочника автоматически будет производиться выбор из элементов, подчиненных выбранному элементу справочника-родителя. Другим способом установки элемента справочника владельца, по значению которого должен выполняться выбор подчиненного справочника является вызов метода ИспользоватьВладельца() для объекта подчиненного
VII. Справочники_____________________________________________________________ 75
справочника. Это позволяет определить выбор подчиненного справочника даже в том случае, когда в форме нет элемента диалога имеющего тип справочника - владельца. Для выборки элементов подчиненного справочника по владельцу, после метода ИсполъзоватьВладельца(< ?>) надо вызвать метод ВыбратьЭлементы() и далее методы ПолучитьЭлемент() или НайтиЭлемент(< ?>), НайтиПоКоду(< ?>), НайтиПоНаименованию(< ?>).



Упражнение 9. (Необязательное) Создайте в форме элемента и форме списка справочника «Оборудование» алгоритм, позволяющий при создании нового элемента программно создавать подчиненный элемент в справочнике «Единицы» с Наименованием «шт.» и Коэффициентом равным 1.

Опишем для этого предопределенные процедуры ПриЗакрытии() в модуле формы и в модуле формы списка справочника «Оборудование», потому что последовательность директив в кнопке «ОК» в форме следующая: #3аписать? Закрыть.

Метод ТекущийЭлемент() возвращает значение записанного в базу данных позиционированного текущего элемента справочника.

В модуле формы:

Перем ФлагНового;

Процедура ВводНового(признак,копируемый)

Если признак=1 Тогда

ВвестиСтроку(Наименование,"Введите наименование",25);

КонецЕсли;

Если Родитель.Выбран()=1 Тогда

Цена=Родитель.ГрЦена;

КонецЕсли;

ФлагНового-1;

КонецПроцедуры

Процедура ПриЗакрытии()

Если ФлагНового=1 Тогда

Ед=Создать0бъект("Справочник.Единицы");

Ед.ИспользоватьВладельца(ТекущийЭлемент());

Ед.Новый();

Ед.Наименование="шт.";

Ед.Коэффициент=1;

Ед.Записать();

КонецЕсли;

76   ______________________ 1C:Предприятие. Практика программирования на платформе V7

КонецПроцедуры ФлагНового=0;

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

Метод РазмерСписка( ) возвращает число элементов в списке значений.

Метод ПолучитьЗначение(<Позиция>,<Строка>) позволяет получить значение из указанной

позиции списка. Возвращает значение из списка.

<Позиция> - номер позиции в списке, из которой возвращается значение (изменяется от 1 до

РазмерСписка); <Строка> - идентификатор переменной, в которой возвращается символьное

представление получаемого значения.

Метод НаЙтиПоКоду(<Код>,<ФлагПоиска>) позволяет найти элемент справочника по коду.

Возвращает: 1 - если действие выполнено;

О - если действие не выполнено (элемент не найден).

<Код> - выражение со значением искомого кода,



<флагПоиска> - флаг поиска (необязателен):

0 - поиск во всем справочнике вне зависимости от родителя;

1 - поиск внутри установленного подчинения (родителя);

2 - поиск по полному коду через разделитель.

Значение по умолчанию:

О - если код уникален во всем справочнике; 2 - если код уникален только'в группе. Его можно использовать только для объектов, созданных функцией СоздатьОбъект.

Перем СписокНовых;

Процедура ПриРедактированииНовойСтроки ()

Если Родитель.Выбран()=1 Тогда

Цена=Родитель.ГрЦена;

КонецЕсли;

СписокНовых.ДобавитьЗначение(Код,Наименование);

КонецПроцедуры

Процедура ПриЗакрытии()

Перем Стр;

Если СписокНовых.РазмерСписка()>0 Тогда

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

Для i=1 по  СписокНовых.РазмерСписка() Цикл

Если Новый.НайтиПоКоду (СписокНовых.ПолучитьЗначение (i, Стр),0) =1  Тогда

Ед=СоздатьОбъект("Справочник.Единицы"); Ед.ИспользоватьВладельца(Новый.ТекущийЭлемент());

Ед.Новый();

Ед.Наименование="шт.";

Ед.Коэффициент = 1;

Ед.Записать();

КонецЕсли;

VII. Справочники_____________________________________________________________ 77

КонецЦикла;//

КонецЕсли;

КонецПроцедуры СписокНовых=Создать0бъект("СписокЗначений");

На приведенном ниже рисунке показано, как выглядят формы списков обоих справочников и форма элемента справочника «Единицы». В форме списка справочника «Единицы» отключен режим иерархии, но благодаря текстовому реквизиту «Владелец» можно различить единицы измерения с одинаковыми наименованиями и кодами , принадлежащие разным владельцам, в форме списка.




IX Основы построения «Оперативного учёта» в системе :Предприятие



Регистры, используемые компонентой Оперативный учёт, предназначены для накопления и хранения информации о наличии и движении различных объектов учёта. Регистры оперируют понятиями «Измерение», «Ресурс», «Реквизит» и «Точка актуальности». Движения регистров записываются в «модуле документа» в предопределённой процедуре ОбработкаПроведения(). При записи движений регистров происходит накопление численных значений Ресурсов и записи значений Реквизитов в узлах некоторой многомерной таблицы, параметрическими координатами которой являются значения Измерений, причем соблюдается порядок вложенности Измерений.
В системе предусмотрено два типа регистров: оборотные регистры и регистры остатков. Для оборотных регистров характерен параметр «Периодичность», который задает период, для выбора итогов методом ИспользоватьПериод(). Для регистров остатков характерны типы движений «Приход» и «Расход», и параметр «Период актуальности», задающий период, в течение которого хранятся или восстанавливаются, для временного объекта, созданного методом СоздатьОбъект(), движения регистра. «Период актуальности» регистров остатков задается и редактируется, в отличие от оборотных регистров, в режиме «Предприятие», меню «Операции», пункт «Управление оперативными итогами...».
Оборотные регистры предназначены для хранения и оперативной выборки информации об общем объеме (обороте) учитываемого параметра за определенный период. Можно сказать, что оборотные регистры хранят информацию о том, как накапливались остатки.
Регистры остатков предназначены для хранения и оперативной выборки информации об остатках учитываемого параметра на определенный момент времени.
124______________________ 1С:Предприятие. Практика программирования на платформе V7
На платформе V7.7 предусмотрена «Быстрая обработка движений», позволяющая ускорить операции чтения из регистров - запросы, временные расчеты итогов, обход движений регистров, однако установка этого признака замедляет запись движений данного регистра.
Точка актуальности, последовательность документов



Точка Актуальности (ТА) — это момент времени, определяемый позицией документа, на который системой по умолчанию выдаются значения остатков и итогов по регистрам, и периодические значения. Позиция документа формируется при его записи и представляет собой метку на оси времени. Если документ проводится после точки актуальности, и нет более поздних проведенных документов, то точка актуальности сдвигается на позицию этого документа. Система предполагает, что все документы оперативного учета вводятся последовательно, в хронологическом порядке.



Нарушение последовательности документов происходит из-за неправильногс вода хозяйственных операций. Если последовательность записи все; документов соответствовала фактической последовательности хозяйственных операций, то ввод Документа5, отражающего реальную хоз. операцию, которая была совершена, но не записана своевременно, не нарушит стройности учета Если же были и другие нарушения записи хоз. операций, например: некоторый приход был введен после того, как часть товаров из него была уже продана, то в промежутке между Документом 5 и ТА может быть обнаружен расходный документ, в котором недостаточно товаров для списания.

Для корректировки последовательности надо перепровести документы  за период от введенного с нарушением последовательности документа до ТА:

Меню "Операции" - "Проведение документов".

Точка актуальности, период итогов

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

/X. Основы построения «Оперативного учёта» в системе 1С:Предприятие_________ 125

оборотного регистра. Имя таблицы (файла) остатков/оборотов имеет префикс RG***.dbf.



В журнале документов ТА отображается красной галочкой с подчеркиванием.

После ТА записи в регистрах недоступны ни для чтения, ни для записи. При попытке рассчитать регистры или провести документ после проведенных документов, расположенных после ТА (они помечены сиреневой галочкой в журнале документов), система выдаст сообщение: «Существуют более ранние проведенные документы::...».





126______________________ 1С:Предприятие. Практика программирования на платформе V7

Структура записей регистра

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



В нашем примере в регистре «Амортизация» по каждому элементу справочника «Оборудование» накапливаются записи по приходным документам, а не наоборот, как в документе. В результате, мы можем получить из регистра, например, количество и стоимость элемента оборудования, или список партий для выбранного элемента справочника «Оборудование» с ненулевыми значениями количества или стоимости, или текущую

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

Создание регистра

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

При создании оборотного регистра обратите внимание на его периодичность. Изменить периодичность оборотного регистра, имеющего записи движений, нельзя.



IX. Основы построения «Оперативного учёта» в системе 1С:Предприятие_________ 127

Упражнение 23. Создадим Регистр остатков «Амортизация» с измерениями «Оборудование» типа Справочник.Оборудование и «Партия» типа документ.Приход, ресурсами «Количество» и «Стоимость» и движение Приход по каждой строке документа «Приход».




Элементы встроенного языка


Процедуры и функции
Действия, заданные в диалоге, оформляются в модуле как процедуры. Процедурой является некоторый отдельный алгоритм, имеющий имя - имя процедуры. Процедура оформляется строкой начала процедуры и строкой конца процедуры.
Процедура МояПроцедура()
<Тело процедуры> КонецПроцедуры
Между этими строками располагается тело процедуры - алгоритм, описывающий действия, которые процедура будет выполнять. В процедуре можно определить список передаваемых параметров, значения которым передаются при вызове процедуры и используются в теле процедуры. По умолчанию параметру процедуры всегда передается ссылка на значение. Для передачи самого значения используется ключевое слово Знач.
• Передача параметров по ссылке
Процедура Моя(а)
а = 12;
КонецПроцедуры Процедура А1(а)
а=10  ;
б = а  ;
Моя(б); КонецПроцедуры
В конце процедуры А1 переменная «б» равна 12, потому что и переменная «б», и параметр процедуры Моя «а» идентифицируют один и тот же адрес.
\/ Формат исходных текстов программных модулей._____________________________ 33_
¦ Передача параметров по значению
Процедура Моя(а)
а=12;
КонецПроцедуры Процедура А1(а)
а=10  ;
б = а ;
Моя   (  Знач б); КонецПроцедуры
В конце процедуры А1 переменная «б» равна 10 , потому что при вызове процедуры Моя() передавалась не ссылка, а значение.
Функция отличается тем, что возвращает значение, используя, оператор «Возврат».
Функция МояФункция()
           ··················
Возврат Авс; КонецФункции
Поэтому функции можно ставить в правой части операции присваивания и в поле «формула» элемент а диалоговой формы типа «Текст».
В языке также определено предварительное описание процедур и функций с помощью ключевого слова Далее
Процедура Моя(а) Далее Процедура al(a)
Моя(б) ;
КонецПроцедуры Процедура Моя(а)
а=12; КонецПроцедуры
Переменная — это строка идентификатора, определяющая область оперативной памяти, в которую записываются значения объекта.
Переменные могут определяться явно, с помощью ключевого слова Перем перед именем переменной, или неявно при присваивании им значения.



Область действия переменной определяется контекстом, в котором она создана. Это может быть локальный контекст процедуры или функции,

34_______________________ 1С:Првдприятие. Практика программирования на платформе V7

Функция С1()

Перем а, б, в;