d9e5a92d

ВЫВОДЫ

Пример вызова Результат Тип
str(5.234) 5
str(5.234, 5) 5
str(5.234, 6, 4) 5.2340
substr("Небосклон", 3, 3) бос
substr("Hебосклон", 5) склон
иррегСНебосклон'') НЕБОСКЛОН
va1("Небосклон") 0 Числовой
val(”-1.23") -1.23
val(,,+432”) 432
val(”1.3e+2”) 130
9.4. ВЫВОДЫ

1. Объект XBase подсоединяется к DBF-файлу в режиме монопольного доступа.

2. Чтобы индексный файл соответствовал своему DBF-файлу, необходимо открывать первый вместе с DBF-файлом. Тогда изменения в DBF-файле автоматически вызовут необходимые изменения индексного файла.

3. Если какое-то время DBF-файл редактировался при закрытом индексном файле, то, открывая последний, следует выполнить его переиндексацию.

4. Атрибут Ключ объекта XBase используется для задания операндов индексного выражения.

5. Для поиска по составному ключу следует использовать метод НайтиПоКлючу взамен метода Найти.

6. Для просмотра находящихся в работе DBF-файлов полезно иметь процедуру, переносящую записи файла в таблицу значений. Вывод таблицы значений можно осуществить как в одноименный элемент диалога, так и в окно, открываемое методом ВыбратьСтроку.

ПРИЛОЖЕНИЕ 1. ПРИМЕРЫ СТРУКТУР МЕТАДАННЫХ

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

Так, для созданной нами константы к5 файл будет содержать следующую информацию:

- Константа

- Идентификатор

- Синоним

- Комментарий

- Тип -Вид

- Длина

- Точность

- Неотрицательный

- РазделятьТриады -Периодический

- ОбластьРаспространения
"к5"

"Коэффициент к5"

"Для вычисления премии 1234" "Число"

"5"

"2"

"0"

"0"

"1"

"ВсеИнформационныеБазы"
Если бы константа имела агрегатный тип специального назначения (разд. 3.1), то для нее было бы определено значение компонента Вид. Например, константа ГлБухгалтер имеет разновидность типа Справочник.Сотрудники_2, то есть ее компонент Вид равен Сотрудники_2.

Способ доступа к компонентам константы посредством объекта метаданные рассмотрен в разд. 1.7.3.

Справочник Сотрудники_2 имеет следующую структуру метаданных:

- Справочник

"Сотрудники_2"

Сотрудники"

Простой справочник"

3"

5"

"30"

’ВПределахПодчинения"

Числовой"

'ВВидеНаименования"

1"

2"

1"

ОбоимиСпособами"

"0"

- Идентификатор

- Синоним

- Комментарий

- Владелец

- КоличествоУровней

- ДлинаКода

- ДлинаНаименования

- СерииКодов

- ТипКода

- ОсновноеПредставление

- КонтрольУникальности

- АвтоНумерация

- ГруппыВпереди

- СпособРедактирования

- ЕдинаяФормаЭлемента

ОсновнаяФорма

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

ОсновнаяФормаДляВыбора

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

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

Дополнительные КодыИБ

Реквизит
" 1"
- Идентификатор

- Синоним

- Комментарий

- Тип

- Вид
"Оклад"

"Оклад сотрудника"

"Меняется документом ИзменениеОклада" "Число"
-Длина

- Точность

- Неотрицательный -РазделятьТриады

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

- Сортировка

- Отбор

- РучноеИзменение

- ИзменяетсяДокументами

- Использование

Реквизит
"10"

"2"

"1"

"1"

"1"

"0"

"0"

"1"

"1"

"ДляЭлемента"
- Идентификатор

- Синоним

- Комментарий

- Тип

- Вид

- Длина

- Точность

- Неотрицательный

- РазделятьТриады

- Периодический -Сортировка -Отбор

- РучноеИзменение

- ИзменяетсяДокументами

- Использование

Реквизит
"Образование"

"Образование"

"Выбирается из справочника Образование "Справочник"

"Образование_2"

"0"

"0"

"0"

"0"

"0"

"1"

"1"

"1"

"0"

"ДляЭлемента"
- Идентификатор

- Синоним

- Комментарий

- Тип

- Вид -Длина

- Точность

- Неотрицательный

- РазделятьТриады

- Периодический
"ПриказОклад"

"Приказ об изменении оклада"

"Ссылка на документ о новом окладе" "Документ"

"ИзменениеОклада"

"0"

"0"

"0"

"0"

"0"
"0"

- Сортировка

- Отбор

- РучноеИзменение

- ИзменяетсяДокументами

- Использование -Реквизит

- Идентификатор

- Синоним

- Комментарий

- Тип

- Вид

- Длина

- Точность

- Неотрицательный

- РазделятьТриады

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

- Сортировка

- Отбор

-РучноеИзменение

- ИзменяетсяДокументами

- Использование

- Реквизит

- Идентификатор

- Синоним

- Комментарий

- Тип -Вид

- Длина

- Точность

- Неотрицательный

- РазделятьТриады

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

- Сортировка

- Отбор

-РучноеИзменение

- ИзменяетсяДокументами

- Использование

- ФормаСписка

- Идентификатор

- Синоним

- Комментарий

- ФормаСписка

- Идентификатор

- Синоним

- Комментарий

"0"

1"

"0"

"ДляЭлемента"

’ПриказПрием"

'Приказ о зачислении в штат"

Ссылка на документ ПриказОПриеме" "Документ"

ПриказОПриеме"

"0"

"0"

"0"

"0"

"0"

"0"

"0"

1"

"0"

"ДляЭлемента"

"Календарь"

"Календарь"

"Ссылка на объект типа Календарь" "Календарь"

"0"

"0"

"0"

"0"

"0"

"0"

"0"

1"

"0"

"ДляЭлемента"

"ФормаСписка"

"В форме запрещен выбор групп"

"ФормаДляВыбора"

"Форма для выбора"

"В форме разрешен выбор групп"

Все компоненты структуры объекта Справочник. Сотрудники_2 можно прочитать, употребив объект Метаданные, например так, как это выполнено в разд. 9.3.1.2.

Документ

- Идентификатор

- Синоним

- Комментарий

- Журнал

- ПериодичностьНомера

- ДлинаНомера

- ТипНомера

- АвтоНумерация

- КонтрольУникальности

- Нумератор
"ИзменениеОклада"

"Приказ о новом окладе"

"Можно выпустить для группы сотрудников' "Журнал. ПриказыКадровые"

"Все"

"5"

"Числовой"

"2"

"1"
- ОперативныйУчет -Расчет

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

- СоздаватьОперацию
"0"

"1"

"0"
- АвтоНумерацияСтрок

- АвтоудалениеДвижений

- РедактированиеОпераций

- РазрешитьПроведение

- ВводимыеНаОснованииДокументы
"1"

"1"

"0"

"1"
- ОснованиеДляЛюбогоДокумента

- ОбластьРаспространения

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

- ДополнительныеКодыИБ

- РеквизитШапки
"0"

"ВсеИнформационныеБазы"

" 1"
- Идентификатор

- Синоним

- Комментарий

- Тип -Вид
"ДатаНовОклада"

"Дата нового оклада"

"Дата, с которой вступает в силу новый оклад" "Дата"
- Длина

- Точность

- Неотрицательный

- РазделятьТриады

- РеквизитТабличнойЧасти
о о о о
- Идентификатор

- Синоним

- Комментарий

- Тип

- Вид

- Длина

- Точность

- Неотрицательный

- РазделятьТриады

- ИтогПоКолонке

- РеквизитТабличнойЧасти
"Сотрудник"

"Сотрудник"

"Ссылка на справочник Сотрудники_2" "Справочник"

"Сотрудники_2"

"0"

"0"

"0"

"0"

"0"
- Идентификатор

- Синоним
"ПрежнийОклад"

"Действующий оклад"
"Носит осведомительный характер”

- Комментарий

- Тип -Вид -Длина

- Точность

- Неотрицательный

- РазделятьТриады

- ИтогПоКолонке

- РеквизитТабличнойЧасти

- Идентификатор

- Синоним

- Комментарий

- Тип -Вид -Длина

- Точность -Неотрицательный

- РазделятьТриады

- ИтогПоКолонке

Число"

”10”

’2”

1”

1”

”0”

''НовыйОклад''

Новый оклад”

'Оклад, назначенный настоящим приказом” Число”

”10”

”2”

1”

” 1”

”0”

Журналы документов характеризуются следующими данными (на примере журнала Табель):

- Журнал

- Идентификатор

- Синоним

- Комментарий

- ТипЖурнала

- Состав

- ОсновнаяФорма

- ОсновнаяФормаДляВыбора

- ДляЖурналаПодчиненныхДокументов

- ДляПолногоЖурнала

- ФормаСписка

- Идентификатор

- Синоним

- Комментарий

”Табель”

”Табель”

”Журнал документов учета рабочего времени” ”Обычный”

"Журнал.Табель. Форма. ФормаСписка” "Журнал.Табель. Форма. ФормаСписка”

”0”

”0”

”ФормаСписка”

Содержит графы Дата, Время, Документ и Номер

Структуру метаданных перечислений представим на примере введенного нами

в разд. 7.3.3 перечисления ВР2:

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

- Идентификатор

- Синоним

- Комментарий

- Значение

- Идентификатор

- Комментарий

- Представление

- Значение

- Идентификатор

- Комментарий

- Представление

”ВР_2”

”Выбор расчета”

”Документы, вводящие расчеты с разными ВР” ”НачСальдо”

"Расчеты с ВР НачСальдо_2”

”Начальное сальдо”

”Табель”

"Расчеты с ВР Оклад_2, НДФЛ2 и ВБанк_2” "Расчеты Оклад/Тариф, НДФЛ и ВБанк”

- Значение

- Идентификатор "Премия"

- Комментарий "ПремияКоэф_2, ПремияСум_2 и Премия 1234_2"

-Представление "Премия коэффициентом, суммой и 1234"

Метаданные для журнала Зарплата_2:

- ЖурналРасчетов

- Идентификатор

- Синоним

- Комментарий

- ОсновнойСправочник

- ОсновнаяФорма

- ОсновнаяФормаДляВыбора

- РазмерПериода

- ДатаОтсчета

- ДлинаРезультата

- ТочностьРезультата

- ТипГрафОтбора

- Реквизит

- Идентификатор

- Синоним

- Комментарий

- Тип -Вид

- Длина

- Точность

- Неотрицательный

- РазделятьТриады

- Реквизит

- Идентификатор

- Синоним

- Комментарий

- Тип

- Вид

- Длина

- Точность

- Неотрицательный

- РазделятьТриады

- Реквизит

- Идентификатор

- Синоним

- Комментарий

- Тип -Вид

. -Длина

- Точность

- Неотрицательный

- РазделятьТриады

- ФормаСписка

- Идентификатор

- Синоним

- Комментарий

"Зарплата_2"

Журнал заработной платы"

'Расчеты сотрудников из справочника Сотрудники_2" "Справочник. Сотрудники_2"

"ЖурналРасчетов.Зарплата_2. Форма.ФормаСписка" "ЖурналРасчетов.Зар плата_2. Форма. ФормаСписка" Месяц"

"20010101"

"10"

"2"

НаКонецПериода"

"всегоЧасов"

Отработанные часы"

'Число часов, отработанных сотрудником в РП"

"Число"

’5"

1"

1"

"0"

"хозОп"

"Хозоперация"

"Введена для бухучета зарплаты"

"Справочник"

"ХозяйственнаяОперация"

"0"

"0"

"0"

"0"

"строкаДок"

"Номер строки документа"

’Номер строки документа, породившего расчет" "Число"

"5"

"0"

"0"

"0"

"ФормаСписка"

’Данные расчета помещаются в одной строке"

Относительно правил перерасчета метаданные сообщают следующее (на примере правила перерасчета Премия 12342):

- ПравилоПерерасчета

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

- Комментарий

- ТипПравила

- КоличествоПериодов

- ВедушийВидРасчета

- ПодчиненныйВидРасчета

"Премия1234_2"

"Правило перерасчета Премия 1234_2" "Правило для премии 1234" "СледующийПериод"

" 1"

"ВидРасчета.Оклад_2"

"ВидРасчета. ПремияКоэф_2" "ВидРасчета. ПремияСум_2"

"ВидРасчета.Премия1234_2"

Виды расчетов представляются следующими метаданными:

- ВидРасчета

- Идентификатор

- Синоним

- Комментарий

- Очередность

- ВытесняетВидРасчета

- ВытесняетсяВидомРасчета

- ГруппаРасчетов

Группы ВР описываются так:

- ГруппаРасчетов

- Идентификатор

- Синоним

- Комментарий

- ВидРасчета

'ПремияКоэф_2"

'Премия коэффициентом"

"Премия, зависящая от отработанного времени" "5"

"ВидРасчета. ПремияКоэф_2"

"ВидРасчета. ПремияКоэф_2" "ВидРасчета.ПремияСум_2"

"ГруппаРасчетов.ВсеНачисления_2"

'ВсеНачисления_2"

'Все начисления"

"Для сотрудников из справочника Сотрудники_2"

ВидРасчета.Оклад_2"

'ВидРасчета.ПремияКоэф_2"

'ВидРасчета.ПремияСум_2"

'ВидРасчета.Премия1234_2"

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

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

ПРИЛОЖЕНИЕ 2. ИНСТРУКЦИЯ ПО РАБОТЕ С ДИСКЕТОЙ

Прилагаемая к пособию дискета содержит архивный файл lSConfig.zip, включающий файлы информационной базы и файлы внешних обработок в папке ExtForms.

Кроме того, в папке DBF вы найдете файлы bal.dbf и bal.cdx, которые мы использовали для загрузки начального сальдо (разд. 7.4.6.), а также файлы employee.dbf, employee.cdx и salary.dbf, salary.cdx, в которые мы сбросили данные справочника Со-трудники_2 (разд. 9.3.1).

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

#ЗагрузитьИзФайла d:\l с?77\Тс8І\ТХТ\измОклМ

При необходимости код из текстовых файлов можно перенести в модули соответствующих объектов.

В папку BMP помещен файл p.bmp, содержащий последовательность пиктограмм для таблицы значений (см. пример 8 из разд. 3.4.4).

В директорию USRDEF записаны сведения о зарегистрированных пользователях (разд. 1.3).

Порядок использования дискеты таков:

1) в папке 1CV77, содержащей систему 1С:Предприятие версии 7.7, создайте директорию Test;

2) скопируйте с дискеты файл lSConfig.zip и извлеките из него имеющиеся в нем данные, используя опции архиватора WinZip, представленные на рис. П-2.1.

ВЫВОДЫ
Рис. П-2.1. Извлекаем архивные файлы
3) убедитесь, что в папке Test есть директории ExtForms, DBF, TXT, BMP и USRDEF; при отсутствии повторите процедуру разархивации;

4) загружая 1С, зарегистрируйте информационную базу (рис. П-2.2);

ВЫВОДЫ


Рис. П-2.2. Первая загрузка 1С с новой информационной базой

5) при авторизации доступа выбирается имя пользователя Ученик; пароль отсутствует;

6) в загруженной системе доступны все представленные в книге объекты.

В пособии примеры, сопровождающие новый материал, запускались из обработки Проба, которая модифицировалась в соответствии с решаемой задачей. Читателю, начинающему изучение языка, полезно самостоятельно выполнить необходимые для запуска примеров действия. В то же время для оперативного запуска примеров в папке ExtForms читатель найдет обработки, содержащие эти примеры. При этом программы, не использующие переменные диалога (за исключением указанных ниже процедур), размещены в обработке Проба. Все программы, кроме одной, предназначенной для исполнения, должны быть закомментированы. (Напомним, что для управления комментарием в 1С имеются иконки // и //Х, которые работают с выделенным текстом.)

Каждая программа модуля обработки Проба начинается текстом, содержащим ссылку на раздел, откуда программа взята, например такую:

// Пример из разд. 1.4.2. ПЕРВАЯ ПРОГРАММА

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

#ЗагрузитьИзФайла d:\lcv77\Test\TXT\npoбa.txt

Эта возможность реализована в обработке Проба. Поэтому нет необходимости открывать ее в конфигураторе, а достаточно выполнить надлежащие изменения в файле пpoбa.txt, открыв его в 1 С: Предприятии. Напомним, что .изменения возымеют эффект после их записи на диск и повторного вызова обработки, для чего у нас есть соответствующий пункт меню или ускоритель Alt+1.

В файл Пробам не включен ряд программ, изменяющих состояние системы. Например, в нем нет процедуры из разд. 7.2, выполняющей смену расчетного периода, процедур из разд. 7.4.5 удаления записей ЖЗ и мягкой смены расчетного периода, процедур и функций из разд. 7.4.6, выполняющих загрузку начального сальдо из DBF-файла, и т. д.

Замечание. Из-за большого числа строк в файле пpoбa.txt его компиляция может занять продолжительное время. Его можно уменьшить либо разбив файл на несколько частей, либо удалив не представляющий интереса код.

Отдельно в обработке Проба_1.ег1; размещена процедура Выполнить из разд. 5.12.2, Демонстрирующая общие методы справочников.

Примеры, использующие помимо кнопок Пуск и Закрыть иные элементы диалога, демонстрируются обработками, список которых представлен в табл. П-2.1.

Таблица П-2.1

Обработки для примеров пособия
Имя

обработки
Что демонстрирует
Проба.ет! Большинство программ, не использующих переменные диалога.

Запускает из меню интерфейса Ученик в результате выбора Проба -Пуск или Alt+1
Проба_1.ет1 Общие методы справочников (процедура Выполнить из разд. 5.12.2)
Проба_2.м1 Пример из разд. 1.5. Диалог с числовым полем приведен на рис. 1.20
Проба_3.ет1 Список непериодических констант в таблице значений (пример из разд. 1.8)
Проба_4.м1 Отчет со списком непериодических констант (пример из разд. 1.9)
Открыть.м! Пример из разд. 1.12. Запускает из меню интерфейса Ученик в результате выбора Проба - Открыть или Alt+5
Открыть_2.сг1,

Проба_5.ет1
Контекст обработки Проба_5, загружаемой из обработки Открыть_2. Модифицированный пример из разд. 1.13
Проба_6.eгt Список значений как элемент диалога (пример из разд. 3.3.4)
Проба_7хЛ Редактирование таблицы значений в диалоге (пример из разд. 3.4.2)
Проба_8.сг1 Использование пиктограмм в таблице значений (пример 8 из разд. 3.4.4)
Проба_9.eгt Отчет о сотрудниках по справочнику Сотрудники_2 (пример из разд. 5.11.1)
Проба_10.eгt Тот же отчет, что и в npo6a_9.ert, но с запросом (пример из разд. 5.11.2)
Проба_11.eгt Данные запроса о суммарных результатах по хозяйственным операциям (программа из разд. 7.17.4.)
Проба_12.eгt То же, но с выводом данных о составе групп (программа из разд. 7.17.4)
Проба_13.eгt Данные о суммарных результатах по хозяйственным операциям возвращаются не запросом, а функцией сумХозОп2 (программа из разд. 7.17.4)
Проба_14.eгt Процедуры и функции из разд. 9.3.1.2 переноса данных 1С а DBF-файлы
Проба_15.ет1 Вывод произвольного DBF-файла в таблицу значений (пример 6 из разд. 9.3.2.2)
Замечания:
1. Обработку из табл. П-2.1 будет проще открыть, если в меню интерфейса Ученик выбрать Проба - Открыть или использовать Al1+5 и затем работать с приведенным на рис. П-2.3 диалогом.

ВЫВОДЫ
Рис. П-2.3. Диалог формы, открывающей обработку
2. В некоторых примерах есть ссылки на удаленные объекты (например, в примере из разд. 2.5 есть ссылка на справочник Сотрудники, который затем был заменен на справочник Сотрудники_2; это связано с тем, что написание этих примеров предшествовало устранению объектов из конфигурации - такова логика создания пособия). Чтобы восстановить работоспособность программ, в ссылках на справочник имя Сотрудники заменяется на имя Сотрудники_2, имя Зарплата - на Зар-плата_2 и т. д.

ЛИТЕРАТУРА

1. 1С:Предприятие 7.7. Описание встроенного языка: В 2 ч. Номер издания 77.001.03, 1999.909 с.

2. Агафонова М. Ю. и др. Большой экономический словарь / Под ред. А. Н. Азрилияна. М.: Институт новой экономики, 1997. 864 с.

3. Бартеньев О. В. Современный Фортран. М.: Диалог-МИФИ, 2000. 448 с.

4. Он же. Фортран для профессионалов. Математическая библиотека IMSL: Ч. 1. М.: Диалог-МИФИ, 2000. 448 с.

5. Майерс Г. Искусство тестирования программ. М.: Финансы и статистика, 1982.176 с.

6. Ленгсам Й., Огенстайн М., Тененбаум А. Структуры данных д ля персональных ЭВМ. М.: Мир, 1989. 568 с.

7. Любимский Э. 3., Мартынюк В. В., Трифонов Н. П. Программирование. М.: Наука, 1980. 608 с.

8. Microsoft Visual FoxPro. Developer's Guide. Microsoft Corporation, 1995. 496 p.



Содержание раздела