Пятница, 19.04.2024, 12:52

ХОЧУ ВСЁ ЗНАТЬ!!!

 
Календарь
«  Апрель 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930
Поиск
Друзья сайта
Вход на сайт

Меню сайта
…оздатьОбъект.

Периодический — средство для работы с периодическими реквизитами справочников и периодическими константами. В программных модулях допускается создавать произвольное число объектов типа Периодический при помощи вызова системной функции СоздатьОбъект.

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

XBase – средство для работы с файлами баз данных DBF формата непосредственно из встроенного языка системы 1С:Предприятие. В программных модулях допускается создавать произвольное число объектов типа XBase при помощи вызова системной функции СоздатьОбъект.

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

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

Бухгалтерские Итоги – средство для организации доступа к бухгалтерским итогам в различных разрезах, за различные периоды и с разной степенью детализации. При наличии в системе 1С:Предприятие компоненты «Бухгалтерский учет» система автоматически реализует специальный механизм работы с бухгалтерскими итогами. Данный механизм обеспечивает хранение, динамический пересчет бухгалтерских итогов и их извлечение средствами встроенного языка. Система хранения бухгалтерских итогов поддерживается системой 1С:Предприятие автоматически на основе существующих планов счетов. При редактировании планов счетов — в конфигураторе или при работе с системой 1С:Предприятие — для счета могут быть установлены ряд свойств, которые влияют на организацию хранения бухгалтерских итогов: это признаки ведения валютного и количественного учета, а также включение аналитического учета по субконто. Изменение бухгалтерских итогов может производиться только проводками бухгалтерских операций. Каждый агрегатный тип данных, как правило, имеет набор атрибутов и методов. Атрибуты по свойствам напоминают переменные, т. е. им можно присваивать или читать их значения. Методы – это те действия, которые может выполнять агрегатный тип данных. Методы могут иметь или не иметь возвращаемое значение. Если метод имеет возвращаемое значение, то он может размещаться в правой части оператора присваивания, в выражениях, в описании фактических параметров других вызываемых методов, процедур или функций.

Типичная последовательность работы с объектом агрегатного типа данных выглядит следующим образом:

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

2. Объект позиционируется на нужном элементе данных;

3. Производятся различные манипуляции с объектом агрегатного типа данных через вызовы методов и обращения к его атрибутам.

4. В случае, если объект агрегатного типа данных больше не нужен, он может быть отсоединен от переменной посредством переприсваивания переменной какого-либо значения базового типа (например, числа 0). Отсоединение объекта выполнять не обязательно.

Пример:

// Создаем объект

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

// Позиционируем созданный объект по наименованию

Сотр.НайтиПоНаименованию(“Петров”);

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

     Сообщить(“Петров ”+Строка(Сотр.Оклад));

Иначе

Сообщить(“Петров не найден”);

КонецЕсли;

 

Для преобразования значения одного базового типа в другой используются функции Строка(<Значение>), Число(<Значение>), Дата(<Значение>).

3.9. Управляющие операторы

Для управления логикой выполнения программы используются логические выражения и управляющие операторы. Логическое выражение записывается с помощью символов сравнения  = (равно), <> (не равно), > (больше), < (меньше), <= (меньше либо равно), >=(больше или равно), при этом сравнение производится только над значениями одинаковых типов (то есть нельзя, например, сравнивать число и строку). Из нескольких сравнений можно построить более сложное условие с помощью булевых операций «и», «или», «не». Порядок сравнений можно определять с помощью круглых скобок.

 

3.9.1. Оператор ветвления

Если <Логическое_выражение> Тогда

ИначеЕсли <Логическое_выражение> Тогда

Иначе

КонецЕсли;

 

3.9.2. Циклы

 

Пока <Логическое_выражение> Цикл

[Прервать]

[Продолжить]

КонецЦикла;

 

Для <Имя_переменной> = <Выражение1> По <Выражение2> Цикл

[Прервать]

[Продолжить]

КонецЦикла;

 

Величина приращения счетчика при каждом выполнении цикла равна 1. Условие выполнения цикла всегда проверяется вначале, перед выполнением цикла.

 

3.9.3. Обработка ошибок

Попытка

[Исключение]

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

 

3.9.4. Работа с транзакциями

Транзакции применяются для выполнения длительных и критических для функционирования системы операций. В некоторых случаях система сама начинает транзакцию и специально описывать ее не надо. Например, это происходит при проведении документов: так как в программе могут работать одновременно несколько пользователей, то при записи документа (например, продажа товара со склада) недопустима ситуация «одновременного» проведения двух документов – все равно один из них должен быть проведен раньше, чем другой (иначе можно продать один и тот же товар два раза!). Поэтому система выполняет проведение документа в режиме транзакции, – база данных становится недоступной для записи остальных пользователей. Естественно, что при большом количестве пользователей, которые активно вводят данные в программу, работа системы замедляется. Одним из решений этой проблемы может быть установка версии для SQL, в этом случае процедуры записи выполняется на отдельном компьютере (сервере базы данных) с помощью MS SQL Server 7.0. В остальных случаях транзакцию начать и зафиксировать с помощью следующих функций:

НачатьТранзакцию();

[ОтменитьТранзакцию();]

ЗафиксироватьТранзакцию();

Отмена транзакции применяется в случае обнаружения какой-то некорректной ситуации. В этом случае все изменения, внесенные в базы данных с момента начала транзакции, отменяются. Чтобы зафиксировать изменения необходимо выполнить функцию ЗафиксироватьТранзакцию().  

3.10. Работа с объектом «СписокЗначений»

 

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

         Элемент списка содержит три поля – значение, представление и пометка. Значение может принимать значение любого типа, представление же всегда имеет тип «Строка». В форме диалога отображается  представление (если оно задано). Пометка означает, помечено данное значение или нет.

         Основные функции работы со списком следующие:

ДобавитьЗначение(<Знач>,<Строка>)

НайтиЗначение(<Знач>)

ПолучитьЗначение(<Позиция>,<Перем>)

Получить(<Строка>)

УдалитьЗначение(<Позиция>,<Колич>)

УдалитьВсе()

РазмерСписка()

Сортировать(<Направление>)

СортироватьПоПредставлению(<Направление>)

Принадлежит(<Знач>)

Пометка (<Позиция>,<Отметка >)

ИзСтрокиСРазделителями(<Строка>)

ВСтрокуСРазделителями()

 

3.11. Работа с объектом «ТаблицаЗначений»

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

Пример.

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

// Определяем идентификаторы и параметры колонок

Т.НоваяКолонка(«Товар», «Строка», 30,, «Наименование товара», 20);

Т.НоваяКолонка(«Цена», «Число», 10, 2 , «Цена», 10);

Т.НоваяКолонка(«Количество», «Число», 10,  3, «Кол.», 10);

Т.НоваяКолонка(«Сумма», «Число», 15,  3, «Сумма», 10);

 

// Создаем новую строку

Т.НоваяСтрока();

Т.Товар= «Сыр»;

Т.Цена= 50;

Т.Количество= 10;

Т.Сумма= Т.Цена* Т.Количество;

 

Основные функции работы с таблице следующие:

НоваяКолонка(<Идентификатор>,<Тип>,<Длина>,<Точность>,<Заголовок>,<Ширина>,<Формат>,<Положение>)

НоваяСтрока()

УдалитьСтроку(<НомерСтроки>)

УдалитьСтроки()

ПолучитьСтрокуПоНомеру(<НомерСтроки>)

ПолучитьЗначение(<НомерСтроки>,<Колонка>),

<Колонка> - это либо номер колонки либо идентификатор колонки

НайтиЗначение(<Знач>,<Строка>,<Колонка>),

<Строка> – идентификатор     переменной, в которую возвращается номер найденной строки, <Колонка> – идентификатор переменной, в которую возвращается колонка найденной строки.

ВыбратьСтроки() – открыть выборку строк из таблицы

ПолучитьСтроку() – получить следующую строку из выборки

Сортировать(<Колонки>)

<Колонки> - это строка, содержащая список идентификаторов или номеров колонок, разделенных запятой, по которым выполняется сортировка строк таблицы значений

Свернуть(<ГрупКолонки>,<СумКолонки>)

<ГрупКолонки> - это строка, содержащая список идентификаторов или номеров колонок, разделенных запятой, по которым выполняется группировка строк таблицы значений (то есть если имеется несколько строк с одинаковыми значениями в группируемых колонках, то в результате свертки останется одна такая строка)

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

3.12. Запуск внешних приложений из 1С.

Для запуска внешнего приложения можно использовать функцию ЗапуститьПриложение().

Для запуска и управления внешним приложением можно использовать механизм OLE-Automation.

Пример.

Окно = СоздатьОбъект(«Excel.Application»);

Окно.Visible = 1; // делаем окно видимым

Окно.Caption = “Отчет”; // задаем имя окну

Окно.Workbooks.Add(); // создаем новую рабочую книгу

Для Н=1 По 10 Цикл

Ячейка = Окно.Cells(Н,1);

Ячейка.Value = Н;

КонецЦикла;

 

4. Работа со справочниками, документами и журналами документов

4.1. Справочники

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

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

4.1.1. Подчиненные справочники

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

4.1.2. Группы элементов

Справочник может иметь иерархическую структуру. Число уровней иерархии определяется в поле «Кол-во уровней» в окне редактирования. Для задания иерархии используется реквизит «Родитель», который и определяет, к какой   группе относится элемент. Наиболее важные функции:

  • ЭтоГруппа()  – возвращает 1, если текущий элемент справочника – группа;
  • ПринадлежитГруппе(<Группа>) – возвращает 1, если текущий элемент  принадлежит группе <Группа>;
  • Уровень() – возвращает номер уровня текущего элемента.­

Глубина вложенности групп настраивается в конфигураторе и не может превышать 10 уровней.

4.1.3. Обработка элементов справочника

Обычно для обработки элементов справочника используется следующая последовательность команд:

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

 

Спр.ИспользоватьДату(<Дата>); // Используется, если есть периодические //реквизиты

 

Спр.ИспользоватьВладельца(<Владелец>); // Используется, если нужно //выбрать только элементы, подчиненные Владельцу

 

Спр.ИспользоватьРодителя(<Группа>); // Используется, если нужно выбрать //только элементы, принадлежащие Группе

 

Спр.ВыбратьЭлементы();  // Делаем выборку элементов

 

Пока Спр.ПолучитьЭлемент()=1 Цикл

     // Обработка текущего элемента выборки, например

     Сообщить(Спр.Код+« »+Спр.Наименование);

КонецЦикла;

 

4.1.4. Добавление нового элемента справочника

 

Спр.Новый();

Спр.Наименование = «ЭтоНовыйЭлемент»;

 

// Заполняем остальные реквизиты

 

Спр.Записать(); // Происходит запись нового элемент в базу данных

 

4.1.5. Поиск элемента справочника

 

         Есть несколько способов поиска элемента справочника:

 

  • НайтиЭлемент(<Элемент>),
  • НайтиПоКоду(<Код>),
  • НайтиПоНаименованию(<Наименование>),
  • НайтиПоРеквизиту (<Реквизит>, <Значение>).

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

Пример. Следующая функция выполняет поиск элемента справочника по наименованию. Если элемент с таким наименованием не найден, то создается новый элемент. Параметр «Справ» – строка с идентификатором справочника, «Наим» – наименование по которому производится поиск элемента. Функция возвращает ссылку на найденный или созданный элемент.

Функция ПоискЭлемента(Справ,Наим)

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

Спр.Вид(Справ);

Если Спр.НайтиПоНаименованию(Наим)=0 Тогда

Спр.Новый();

Спр.Наименование=Наим;

Спр.Записать();

КонецЕсли;

Возврат Спр.ТекущийЭлемент();

КонецФункции

 

4.1.6. Удаление элементов справочника

Для удаления текущего элемента справочника используется функция Удалить(<Режим>), где <режим>  может иметь значение  0  – пометка на удаление, 1 – непосредственное удаление (используется по умолчанию). Вообще непосредственное удаление  не рекомендуется, из-за возможного нарушения ссылочной целостности базы данных.

Чтобы удалить помеченные на удаление объекты через систему 1С:Предприятие 7.7, нужно зайти в программу в монопольном режиме и в меню «Операции» выбрать пункт «Удаление помеченных объектов…».

4.2. Документы

Документы в системе 1С: Предприятие используются для ввода, просмотра и корректировки информации о совершаемых хозяйственных операциях. У любого документа есть три обязательных реквизита «ДатаДок», «ВремяДок», «НомерДок». Дата и время, – наиболее важные характеристики документов, так как позволяют устанавливать строгую временную последовательность совершения операций. Форма документа редактируется при нажатии кнопки «Форма».

4.2.1. Реквизиты документа

Реквизиты шапки документа задаются в списке «Реквизиты шапки». Реквизиты табличной части задаются в списке «Реквизиты табличной части».

4.2.2. Проведение документа

Для того чтобы документ формировал проводки, необходимо

-         создать хотя бы один план счетов.

-         поставить флажок «Разрешить проведение документа».

-         поставить флажок «Бухгалтерский учет».

Формирование проводок происходит в «Модуле документа» в предопределенной процедуре «Обработка проведения».

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

Операция.СодержаниеПроводки = "Поступили товары";

Операция.НомерЖурнала = "ТВ";

Операция.Дебет.Счет = СчетПоКоду(«41.1»);

Операция.Дебет.Номенклатура = Товар;

Операция.Кредит.Счет = СчетПоКоду(«60.1»);

Операция.Кредит.Контрагенты = Контрагент;

Операция.Кредит.Договоры = Договор;

Операция.Количество = Количество;    

Операция.Сумма = УчетнаяСтоимость;

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

4.2.3. Обработка документов

Обычно для обработки документов используется следующая последовательность команд:

Док=СоздатьОбъект(«Документ.НазваниеДокумента»);

 

Док.ВыбратьДокументы(); // Делаем выборку документов

 

Пока Док.ПолучитьДокумент()=1 Цикл

 

     // Обработка шапки документа, например

 

     Сообщить(«Вид документа »+Строка(Док.Вид())); 

     Сообщить(«Дата документа »+Строка(Док.ДатаДок));   

     Сообщить(«Номер документа »+Строка(Док.НомерДок)); 

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

 

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

         // Обработка строк табличной части документа

     Сообщить(«Товар »+Док.Товар.Наименование);

 

     КонецЦикла

 

     Сообщить(Строка(Спр.Код)+Спр.Наименование);

 

КонецЦикла;

4.2.4. Ввод нового документа

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

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

Для просмотра списка документов используется «Журналы  документов». Создание журнала производится в конфигураторе. В диалоговой форме задаются графы – реквизиты документов, входящих в журнал. Реквизиты табличной части можно добавить в журнал только в том случае, если в свойствах реквизита в закладке «Дополнительно» стоит флажок «Итог по колонке».

 5. Работа с запросами и создание отчетов

5.1. Таблица

         Для создания печатных форм и для ввода табличных данных используется объект «Таблица». Таблицы могут располагаться в разделе «Общие таблицы» и в формах визуальных объектов системы. Форма может иметь одну таблицу для ввода и много таблиц для вывода.

5.1.1. Таблица для ввода

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

5.1.2. Таблица для вывода

         Таблица для вывода фактически является шаблоном для вывода данных. В свойствах каждая ячейки таблицы можно задать тип ячейки: «Текст», «Выражение», «Шаблон» и «Фиксированный шаблон». «Текст» печатается так, как он задан в конфигураторе. «Выражение» вычисляется и в ячейку записывается результат. «Шаблон» – это текст, в котором может присутствовать выражение, которое задается в квадратных скобках. Пример шаблона: «Сумма равна [ПечСумма]».

         Вывод данных производится по секциям. Секции бывают горизонтальные и вертикальные (см. рисунок). 

Пример.

 

Таб=СоздатьОбъект(«Таблица»);    // Создаем объект

 

Таб.ИсходнаяТаблица(«ТОРГ-12»);  // Задаем конкретную таблицу

 

Таб.ВывестиСекцию(«Шапка»); // Выводим горизонтальную секцию

 

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

 

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

 

Таб.ВывестиСекцию(«Строка|БезНГСМиНП»);   //Выводим ячейки на //пересечении секций «Строка» и «БезНГСМиНП»

     Если ПечататьНП=1 Тогда

     Таб.ПрисоединитьСекцию(«Строка|НГСМиНП»); //Присоединяем //к текущей секции ячейки на пересечении секций «Строка» и //«НГСМиНП»

КонецЕсли;

КонецЦикла;

 

Таб.ВывестиСекцию(«Подвал»);

 

Таб.Показать(); // Выводим таблицу на экран

 

5.2. Запросы

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

5.2.1. Создание запроса

Запрос создается функцией «СоздатьОбъект(«Запрос»)». Для выполнения запроса используется функция «Выполнить(<ТекстЗапроса>)», которая возвращает 1, если запрос выполнился. <ТекстЗапроса> – это строковое выражение на “языке запросов”.

Пример:

НашЗапрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"//{{ЗАПРОС(Сформировать)

|СКЛАД = Документ.РасходнаяНакладная.Склад;

|ТОВАР = Документ.РасходнаяНакладная.Товар;

|КОЛИЧЕСТВО = Документ.РасходнаяНакладная.Количество;

|Группировка ТОВАР Упорядочить По ТОВАР.Код;

|Группировка СКЛАД Упорядочить По СКЛАД.Код;

|Функция КОЛ = Сумма(КОЛИЧЕСТВО);

|"//}}ЗАПРОС

;

// Если ошибка в запросе, то выход из процедуры

Если НашЗапрос.Выполнить(ТекстЗапроса) = 0 Тогда

Возврат;

КонецЕсли;

Структура временного набора данных, созданная запросом "НашЗапрос" после его выполнения, представлена на следующем рисунке:

 

Товар

Склад

Кол.

Итог общий

X

X

62

Итог по товару Стол

Стол

X

35

Строка по товару Стол на складе Первый

Стол

Первый

10

Строка по товару Стол на складе Второй

Стол

Второй

20

Строка по товару Стол на складе Третий

Стол

Третий

5

Итог по товару Стул

Стул

X

9

Строка по товару Стул на складе Второй

Стул

Второй

7

Строка по товару Стул на складе Третий

Стул

Третий

2

Итог по товару Шкаф

Шкаф

X

18

Продолжение »