Лекции по «Информационные технологии в экономике»

Автор работы: Пользователь скрыл имя, 03 Октября 2013 в 14:49, курс лекций

Краткое описание

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

Прикрепленные файлы: 1 файл

6. Лекционный комплекс.doc

— 393.00 Кб (Скачать документ)

Объект позволит исполнить  любой код на VBScript или JScript. Может  быть очень полезен, если нужно исполнить  код, который не может быть исполнен непосредственно в 1С:Предприятии. Например:

  • Для работы с некоторыми OLE-объектами (например, при работе с технологией WMI - образцы кода см. ниже) нужно использовать функцию "GetObject". Этой функции нет во встроенном языке 1С:Предприятие v7.7, но используя Microsoft Script Control, вы сможете работать с ней.
  • Не все методы и свойства различных OLE-объектов корректно работают непосредственно в 1С:Предприятии v7.7. Иногда не удаётся передать или получить какой-то параметр, т.к. не поддерживается тот или иной тип данных. С помощью Microsoft Script Control эти проблемы решаются.
  • В VBScript и JScript есть функции, которых нет во встроенном языке 1С:Предприятие v7.7 (например, функция, вычисляющая квадратный корень числа). Используя Microsoft Script Control, вы сможете полноценно работать с этими функциями.
  • 1С:Предприятие v7.7 не всегда корректно работает с объектами так называемых "коллекций", которые могут быть возвращены различными свойствами и методами тех или иных OLE-объектов. Используя Microsoft Script Control, вы сможете полноценно работать с любыми коллекциями, например, с помощью цикла "for each", которого нет во встроенном языке 1С:Предприятие v7.7.

Полное описание объекта на английском языке можно скачать вместе с  его дистрибутивом с сайта Microsoft. При этом, если у вас не слишком  старая версия Windows, ничего устанавливать  вам скорее всего вообще не придётся. Описание свойств и методов объекта на русском языке в формате синтакс-помощника 1С:Предприятие v7.7 (als-файл) вы можете скачать здесь. Скопируйте ALS-файл в каталог программы (например, "C:\Program Files\1Cv77\BIN\"), и в конфигураторе в синтакс-помощнике появится ветка "Некоторые объекты Automation". CHM-файл справки на русском языке по встроенным константам и функциям языка VBScript вы можете скачать здесь. Примеры работы с объектом Microsoft Script Control вы можете также получить, рассмотрев код маленькой конфигурации для 1С:Предприятия v7.7 "Администратор 1С", которую вы можете скачать на главной страничке этого сайта.

Примеры работы

Функция читает список компьютеров, зарегистрированных в доменах локальной сети, и  возвращает таблицу значений с колонками "Домен" и "Компьютер":

Функция глПолучитьКомпьютеры() Экспорт

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

ТаблЗнач.НоваяКолонка("Домен");

ТаблЗнач.НоваяКолонка("Компьютер");

 

Попытка

ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");

ScrptCtrl.Language="vbscript";

ScrptCtrl.AddCode("

|Function GetComputers()

| Set WinNT = GetObject(""WinNT:"")

| WinNT.Filter = Array(""domain"")

| strInfo=vbNullString

| For Each Domain In WinNT

|  Set ADSI = GetObject(""WinNT://"" & Domain.Name)

|  ADSI.Filter = Array(""computer"")

|  For Each Comp In ADSI

|   strInfo=strInfo & Domain.Name & vbTab & Comp.Name & vbCrLf

|  Next

| Next

| GetComputers = strInfo

|End Function

|");

Текст=СокрЛП(ScrptCtrl.Run("GetComputers"));

Исключение

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

Возврат ТаблЗнач;

КонецПопытки;

 

Для ы=1 по СтрКоличествоСтрок(Текст) Цикл

СтрКомп=СтрПолучитьСтроку(Текст,ы);

Разд=Найти(СтрКомп,СимволТабуляции);

Домен=Лев(СтрКомп,Разд-1);

Компьютер=Прав(СтрКомп,СтрДлина(СтрКомп)-Разд);

ТаблЗнач.НоваяСтрока();

ТаблЗнач.Домен=Домен;

ТаблЗнач.Компьютер=Компьютер;

КонецЦикла;

ТаблЗнач.Сортировать("Домен,Компьютер");

Возврат ТаблЗнач;

КонецФункции //глПолучитьКомпьютеры

Функция читает список зарегистрированных информационных баз 1С из реестра Windows и возвращает таблицу значений с  колонками "Название" и "Путь":

Функция глПолучитьСписокИБ() Экспорт

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

ТаблЗнач.НоваяКолонка("Название");

ТаблЗнач.НоваяКолонка("Путь");

 

Попытка

ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");

ScrptCtrl.Language="vbscript";

ScrptCtrl.AddCode("

|Function Get1CV77Titles()

| const HKEY_CURRENT_USER = &H80000001

| Set oReg=GetObject(""winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv"")

| strKeyPath = ""Software\1C\1Cv7\7.7\Titles""

| oReg.EnumValues HKEY_CURRENT_USER, strKeyPath, arrValues

| strInfo=vbNullString

| For i = LBound(arrValues) To UBound(arrValues)

|  call oReg.GetStringValue(HKEY_CURRENT_USER,strKeyPath,arrValues(i),Value)

|  strInfo=strInfo & arrValues(i) & vbTab & Value & vbCrLf

| Next

| Get1CV77Titles = strInfo

|End Function

|");

Текст=СокрЛП(ScrptCtrl.Run("Get1CV77Titles"));

Исключение

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

Возврат ТаблЗнач;

КонецПопытки;

 

Для ы=1 по СтрКоличествоСтрок(Текст) Цикл

СтрБазы=СтрПолучитьСтроку(Текст,ы);

Разд=Найти(СтрБазы,СимволТабуляции);

Путь=Лев(СтрБазы,Разд-1);

Название=Прав(СтрБазы,СтрДлина(СтрБазы)-Разд);

ТаблЗнач.НоваяСтрока();

ТаблЗнач.Название=Название;

ТаблЗнач.Путь=Путь;

КонецЦикла;

ТаблЗнач.Сортировать("Название");

Возврат ТаблЗнач;

КонецФункции //глПолучитьСписокИБ

Процедура делает Log Off (Парам=4), Shutdown (Парам=5) или Reboot (Парам=6) выбранному компьютеру:

Процедура глViolateComputer(ИмяКомпа,Парам) Экспорт

Попытка

ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");

ScrptCtrl.Language="vbscript";

ScrptCtrl.AddCode("

|Function ViolateComputer()

| Set WMI = GetObject(""winmgmts:{(Shutdown,RemoteShutdown)}\\"+СокрЛП(ИмяКомпа)+"\Root\CIMV2"")

| For Each OS In WMI.ExecQuery(""SELECT * FROM Win32_OperatingSystem"")

|  OS.Win32Shutdown("+Парам+")

| Next

|End Function

|");

ScrptCtrl.Run("ViolateComputer");

Исключение

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

КонецПопытки;

КонецПроцедуры //глViolateComputer

Функция вычисляет квадратный корень числа:

Функция КвКорень(Чсл)

Попытка

ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");

ScrptCtrl.Language="vbscript";

ScrptCtrl.AddCode("

|Function GetSqr(x)

| GetSqr = Sqr(x)

|End Function

|");

Рез=ScrptCtrl.Modules("Global").CodeObject.GetSqr(Чсл);

Исключение

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

Возврат 0;

КонецПопытки;

Возврат Рез;

КонецФункции //КвКорень

 

Лекция № 12 Табличный редактор. Администрирование

Описание таблиц 1С

Таблица _1SCONNECT - Сессии (соединения)

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

 

Название поля

Описание

CONNECTUUID

GUID (уникальный идентификатор) первого  сеанса, соединившегося с 1С в  режиме предприятия. Тип - Строка(36).


 

Таблица _1SCONST - Константы

Краткое описание: таблица предназначена  для хранения значений констант и  периодических реквизитов справочников.

 

Название поля

Описание

ROW_ID

Порядковый номер записи в таблице. Тип - Число(int).

OBJID

ID объекта периодического реквизита  (справочника) или периодической  константы, для непериодических  констант это поле равно ‘     0   ’. Тип - Строка(9).

ID

ID (идентификатор) константы или  периодического реквизита справочника.  Тип представлен в виде десятичного  числа (_StrToID()). Тип - Число(int).

DATE

Дата установки периодического реквизита. Для базы в формате SQL и для непериодического реквизита (или константы) поле заполняется значением '1753-01-01 00:00:00.000'. Тип - Дата (datetime для SQL).

VALUE

Значение константы или периодического реквизита. Для неопределенных типов  по умолчанию заполняется «U». Тип- Строка(255).

DOCID

ID (идентификатор) документа (поле, связанное с полем IDDOC таблицы журналов (_1SJOURN)). Для значений установленных вручную или непериодических заполняется '     0   '.

TIME

Время установки значения в десятичном формате ((Часы*3600+Минуты*60+секунды)*10000). Тип - Число(int).

ACTNO

Номер движения документа (включая  каждое движения по регистрам и запись периодических реквизитов за исключением  проводок). В случае непериодического значения заполняется нулем. Тип - Число(int).

LINENO_

Номер строки документа (заполняется  при вызове метода ПривязыватьСтроку(), если привязка не выполнена или непериодическое значение - заполняется нулем). Тип - Число(tinyint).

TVALUE

Заполняется только для неопределенных реквизитов, для типов данных 1С (когда  длина ID равна 23 символам). Тип - Строка(3).


 

Таблица _1SCRDOC - Ссылки документов

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

 

Название поля

Описание

ROW_ID

Порядковый номер записи в таблице. Номер проставляется автоматически  при вводе новой строки. При изменении даты документа, введенного на основании, это поле «переприсваивается». Тип - Число(int).

MDID

Номер графы отбора подчиненного документа. Тип - Число(int).

PARENTVAL

Полный идентификатор документа  родителя. Тип – Строка(23).

CHILD_DATE_TIME_IDDOC

Дата + Время (в 36-ричном формате) + ИД подчиненного документа. Тип – Строка(23).

CHILDID

ИД подчиненного документа. Тип  – Строка(9).

FLAGS

??? Тип – Число(1).


 

Таблица _1SJOURN - Журналы

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

 

Название поля

Описание

ROW_ID

Порядковый номер записи в таблице. Номер присваивается в порядке ввода документов. При изменении даты или времени – не изменяется. Тип - Число(4).

IDJOURNAL

ID журнала документов, которому  принадлежит документ (из метаданных). Тип - Число(4).

IDDOC

ID документа в 36-ричной системе  счисления. Тип - Строка(9).

IDDOCDEF

ID вида документа. Номер документа  из метаданных (номер, а не 36-ричное  представление). Тип - Число(4).

APPCODE

Число, отражающее принадлежность документа  к компонентам. Возможные значения:

  • 0 - не принадлежит никакому учету.
  • (1) 000001 - опер учет.
  • (2) 000010 - расчет.
  • (4) 000100 - бух учет.
  • (8) 001000 - движения периодических реквизитов.
  • (16) 010000 - существует документ операция у документа (документ может быть не проведен, но тогда должно быть выбрано "Создавать операцию - Всегда" в окне свойств документа).
  • (32) 100000 - Выполнен метод Операция.Записать(); в документе, принадлежащем бух. учету.
  • (20) 010100 - Это документ "Операция".

Возможна их комбинация, например 6 = 2+4 (бух. учет + расчет), 7 = все три  компоненты. Тип - Число(2).

DATE_TIME_IDDOC

Составное поле, обозначающее позицию  документа во времени + ID документа.

  • 8 первых символов - дата документа в виде «ГГГММДД».
  • 6 следующих символов - время документа в 36-ричной системе исчисления, причем время рассчитывается от начала дня в сотых частях миллисекунды (10-5), т.е. время 00:00:01 будет равно 10000, или же в 36-ричной системе «7PS».
  • 9 последних символов - ID документа. Этот ID также составной, 6 символов - порядковый номер введенного документа в систему в 36-ричной системе (причем считаются не только сохраненные документы, а также те, которые не были сохранены), последние 3 символа - идентификатор базы УРИБ (если данные вводятся в распределенной ИБ).

Тип - Строка(23).

DNPREFIX

Префикс номера документа. Тип - Строка(18). Для документов, у которых код числовой, это поле равно десятичному ID вида документа. Если нумерация в пределах периода - то также хранится и период в виде ГГГГММДД (например 2006 для нумерации в пределах года).

DOCNO

Номер документа. Длина определяется максимальным номером всех документов. Тип - Строка (максимальное значение - 20).

CLOSED

Флаг проведения документа. Для  каждого набора компонент свое значение (аналогично полю APPCODE). Значение последнего байта отвечает за флаг проведения документа. Тип - Число(1).

ISMARK

Флаг пометки на удаление. 0 - не помечен, 1 - помечен. Тип - Число(1,0) (бинарное значение).

ACTCNT

Счетчик действий (движения) для документа (один документ может вызывать несколько  движений регистров). Фактически хранит информацию о количестве движений по всем регистрам + записи периодических реквизитов (без учета проводок по бух. учету). Тип – Число(4).

VERSTAMP

Количество изменений записи таблицы. Изменением считается любое действие "Изменить (открыть)" + действия при изменении структуры. Тип - Число(4).

RFxxx

Флаг наличия движений по регистру "xxx". Тип - Число(1,0).

SPyyy

Значение общих реквизитов документов, в которых установлено свойство «отбор». Если свойство «отбор» не установлено, то общие реквизиты хранятся в таблицах документов (DHxxx). Тип - Число, Строка, Дата.

TSPyyy

Дополнение к общим реквизитам, заполняется только для неопределенных типов значений реквизитов отбора (используется совместно с полем «SPyyy»). Тип - Строка(3).

DSzzz

Флаг принадлежности последовательности. ZZZ - десятичный ID последовательности. Принимает 3 значения: 0 - документ не принадлежит последовательности, 1 - документ находится на границе или за границей последовательности (или находился на ней), 2 - документ находится перед границей последовательности (устанавливается в момент проведения).

Информация о работе Лекции по «Информационные технологии в экономике»