Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Использование конструктора запросов
Запроса можно создать с помощью конструктора запросов. С его помощью можно в диалоговых формах задать параметры запроса и конструктор сам сгенерирует процедуру и таблицу для печати результатов отчета. |
| 3.3.5 Работа со служебными типами данных и объектами компоненты " Бухгалтерский учет" |
Работа с бухгалтерскими счетами
Счет – это агрегатный тип данных для доступа к объектам данных – бухгалтерским счетам. Бухгалтерские счета используются для идентификации разрезов синтетического учета наличия и движения средств.
В конфигурации может быть несколько планов счетов. Объект типа «Счет» может относиться к конкретному плану счетов или быть неопределенного вида, т.е. принимать значения различных планов счетов.
Структура данных объектов типа «Счет» задается в конфигураторе в разделе «Планы счетов» и является одинаковой для всех планов счетов.
У счета определены следующие атрибуты:
· «Код» – в общем случае представляет собой символьную строку вида < Код счета>.< Код субсчета>.< Код субсчета> и т.д.
· «Наименование» – наименование счета.
· «Валютный» – признак ведения валютного учета.
· «Количественный» – признак ведения количественного учета.
· «Забалансовый» – признак того, что счет является забалансовым.
· «Активный» – принимает три значения: 1 – активный, 2 – пассивный, 3 – активно-пассивный.
Наиболее важные функции: «КоличествоСубконто()» – возвращает количество субконто у текущего счета, «ВидСубконто()» – устанавливает/возвращает вид субконто по порядковому номеру.
Работа с операциями и проводками
Для отражения в бухгалтерском учете информации о движении средств используются «Операции» и «Проводки».
· Объект типа «Операция» используется для формирования и анализа проводок, формируемых документом. Для этого у агрегатного объекта «Документ» существует атрибут «Операция», который обеспечивает доступ к операции данного документа. Чтобы документ формировал операцию необходимо, чтобы в документе стоял флажок «Бухгалтерский учет».
· Объект «Операция» также доступен непосредственно в контекстах формы «операции», формы «журнала операций» и формы «журнала проводок».
· Объект «Операция» используется для перебора существующих операций и проводок при формировании отчетов и других выборок. В этом случае объект создается при помощи вызова функции СоздатьОбъект(«Операция»).
Операция имеет следующие атрибуты:
«ДатаОперации», «Содержание», «СуммаОперации», «Документ» – документ, которому принадлжит операция, «Сумма» – сумма текущей проводки операции, «Валюта» – валюта текущей проводки, «ВалСумма» – валютная сумма текущей проводки, «Количество» – количество текущей проводки, «Дебет» – обращение к дебету проводки, «Кредит» – обращение к кредиту проводки. Объекты «Дебет» и «Кредит» имеют следующие атрибуты: «Счет», «Субконто»
Пример
Опер=СоздатьОбъект(«Операция»);
Опер.ВыбратьОперации(Дата1, Дата2);
Пока Опер.ПолучитьОперацию()=1 Цикл
Опер.ВыбратьПроводки();
Пока Опер.ПолучитьПроводку()=1 Цикл
Если Опер.Дебет.Счет=СчетПоКоду(«60.1») Тогда
Сообщить(«Субконто»+Опер.Дебет.Организация);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Чтобы проводки не попадали в бухгалтерские итоги, используется функция «ОтключитьПроводки()».
Работа с корректными проводками
Для работы с корректными проводками в системе используется специальный тип данных «КорректныеПроводки». Объект создается функцией «СоздатьОбъект». Атрибуты: «Комментарий», «СчетДт», «СчетКт».
Для добавления новой корректной проводки используется функция «Новая()»;
Пример
КП=СоздатьОбъект(«КорректныеПроводки»);
КП.Новая();
КП.Комментарий= «НДС с комиссионного вознаграждения»;
КП.СчетДт=СчетПоКоду(«46.28»);
КП.СчетКт=СчетПоКоду(«68.2»);
КП.Записать();
|
| 3.3.6 Работа с бухгалтерскими итогами |
При наличии в системе 1С: Предприятие компоненты «Бухгалтерский учет» система автоматически реализует специальный механизм работы с бухгалтерскими итогами. Данный механизм обеспечивает хранение, динамический пересчет бухгалтерских итогов и их извлечение средствами встроенного языка.
Изменение бухгалтерских итогов может производиться только проводками бухгалтерских операций.
Хранение итогов поддерживается системой с детализацией до месяца. В итогах хранятся остатки и обороты по счетам с детализацией по субконто и обороты между счетами (без детализации по субконто).
Обращение к бухгалтерским итогам выполняется при помощи агрегатного объекта типа «БухгалтерскиеИтоги». Объект может работать в трех режимах:
· работа с основными итогами,
· работа с временными итогами,
· работа в режиме запроса.
Объект типа «БухгалтерскиеИтоги» при создании функцией «СоздатьОбъект()» работает в первом режиме. Переключение в другие режимы производится функциями «Рассчитать()» и «ВыполнитьЗапрос()».
Функции «ИспользоватьПланСчетов()» и «ИспользоватьРазделитель Учета()» позволяют назначить план счетов и разделитель учета по которым будут выдаваться итоги.
Работа с основными итогами
В пункте меню «Управление бухгалтерскими итогами» в системе «1С: Предприятие» устанавливается последний рассчитанный период. В режиме работы с основными итогами осуществляется доступ только к итогам по рассчитанный месяц включительно.
Функции работы с итогами:
· ПериодД(< ДатаНач>, < ДатаКон>) – установка периода итогов
· СНД(< Cчет>, < ТипСуммы>, < Валюта>, < Cубконто1>, …) – сальдо начальное дебетовое;
· СНК() – сальдо начальное кредитовое;
· СКД() – сальдо конечное дебетовое;
· СКК() – сальдо конечное кредитовое;
· ДО() – дебетовый оборот по счету за период;
· КО() – кредитовый оборот по счету за период;
Параметры: < Cчет> – счет, < ТипСуммы> = 1 – сумма, 2 – валютная сумма, 3 – количество, < Валюта> – значение типа “Справочник.Валюты”, < Субконто1> – значение первого субконто счета, < Субконто2> – значение второго субконто счета и т.д.
· ОБ(< СчетДеб>, < СчетКред>, < ТипСуммы>, < Валюта>) – обороты между счетами;
Для получения остатков и оборотов по счетам, имеющим субсчета, используются аналогичные функции: СНДР(), СКДР(), СКДР(), СККР().
Работа с временными итогами
Чтобы получить итоги на любую дату нужно выполнять временный расчет (временный, потому что он хранится только во время существования переменной типа «БухгалтерскиеИтоги») с помощью функции
Рассчитать(< ДатаНач>, < ДатаКон>, < ФильтрПоСчетам>, < ТолькоСинтетика>, < ПланСчетов>, < РазделительУчета>).
В параметре < ФильтрПоСчетам> можно задать в виде строки список счетов, разделенных запятой или точкой с запятой, по которым будет делаться расчет. Если параметр < ТолькоСинтетика> = 1, то расчет будет делаться только по счетам, иначе по счетам и субконто.
Работа в режиме запроса
Для получения большего количества итогов (обороты и остатки по разным видам группировок) используется режим запроса.
Выполнение запроса
Перед выполнением запроса устанавливаются различные фильтры:
· ВключатьСубсчета() – устанавливать режим отбора по субсчетам.
· ИспользоватьСубконто(< ВидСубконто>, < Значение>, < ТипФильтра>, < ПоГруппам>) – устанавливать режим отбора итогов в разрезе субконто. Параметр < ВидСубконто> задается выражением типа “ВидСубконто” или строкой, содержащей имя идентификатора вида субконто. Параметр < Значение> задает конкретное значение субконто. Если < ТипФильтра> =1, тогда итоги будут разворачиваться по этому виду субконто. Если < ТипФильтра> =2, тогда итоги будут отбираться по значению субконто. Если < ТипФильтра> =3, тогда это субконто вообще не будет учитываться.
· Функцию ИспользоватьСубконто() можно выполнять несколько раз для задания в запросе нескольких видов субконто. Обращение к субконто производится по порядковому номеру (порядок определяется последовательностью команд «ИспользоватьСубконто()»).
· ИспользоватьКорСубконто(< ВидСубконто>, < Значение>, < ТипФильтра>, < ПоГруппам>) – устанавливать режим отбора итогов по корреспондирующим счетам в разрезе субконто.
Затем выполняется сам запрос функцией ВыполнитьЗапрос(< ДатаНач>, < ДатаКон>, < ФильтрПоСчетам>, < ФильтрПоКорСчетам>, < Валюта>, < ТипИтогов>, < Периодичность>, < ТипСуммы>),
которая возвращает 1, если запрос выполнился успешно.
Параметр < ТипИтогов> принимает следующие значения: 1 – остатки и обороты по счетам, 2 – обороты между счетами, 3 – и то и другое.
Параметр < Периодичность> может принимать следующие значения:
1 («Период») – промежуточные итоги не рассчитываются;
2 («Операция») – промежуточные итоги рассчитываются по операциям;
3 («Проводка») – по проводкам;
4 («День») – по дням;
5 («Неделя») – по неделям;
6 («Декада») – по декадам;
7 («Месяц») – по месяцам;
8 («Квартал») – по кварталам;
9 («Год») – по годам;
Обращение к результатам запроса
Для перебора группировок используются следующие функции:
· ВыбратьСчета(), ПолучитьСчет();
· ВыбратьКорСчета(), ПолучитьКорСчет();
· ВыбратьВалюты(), ПолучитьВалюту();
· ВыбратьПериоды(), ПолучитьПериод();
· ВыбратьСубконто(), ПолучитьСубконто();
· ВыбратьКорСубконто(), ПолучитьКорСубконто();
Функции получения остатков и оборотов такие же, как и при работе с основными итогами.
Пример.
БИ=СоздатьОбъект(«БухгалтерскиеИтоги»);
БИ.ИспользоватьСубконто(«Номенклатура»);
БИ.ВыполнитьЗапрос(Дата1, Дата2, «41.1»);
БИ.ВыбратьСчета();
Пока БИ.ПолучитьСчет()=1 Цикл
// выводим итоги по счету
БИ.ВыбратьСубконто(1);
Пока БИ.ПолучитьСубконто()=1 Цикл
// выводим итоги по субконто
Сообщить(«Остаток на начало по счету» + БИ.Счет.Код + «товара» + БИ.Субконто(1)+Строка(БИ.СНД(3)) + «ед.»);
КонецЦикла;
КонецЦикла;
|
| 3.3.7 Работа с таблицами для ввода данных |
Свойства таблицы в режиме ввода данных
Работать в режиме ввода данных могут таблицы в отчетах и обработках. Данный режим использования таблицы включается через свойства формы (вызов свойств формы выполняется из меню «Действия» пунктом «Свойства формы»).
Режим ввода данных позволяет совместить в одной форме отчета диалог формы вместе с табличным документом или вообще заменить диалог табличным документом. У ячеек таблицы в режиме ввода в свойствах появляется дополнительная закладка, обозначающая тип данных. Для ячеек, в которые предполагается вводить данные, требуется выключить флажок «защита».
Работа в режиме ввода имеет несколько особенностей с точки зрения обращения к таблице средствами встроенного языка. Во-первых, доступ к таблице осуществляется с помощью ключевого слова «Таблица». Кроме того, в модуле формы допустимо непосредственное обращение к значениям именованных ячеек по их именам. При обращении к области таблицы используется атрибут «Значение», который предоставляет доступ значению ячеек. При этом тип значений определяется типом, выбранным в закладке свойств ячейки «Данные».
В свойствах ячеек можно задавать формулы. Формула выполняется непосредственно после ввода значений в ячейку и используется обычно для вызова процедуры обработки значений других ячеек. У ячеек, имеющих признак «защита», формула является обычным выражением и вычисляет собственно значение ячейки как у элементов диалога типа «Текст».
Выгрузка и загрузка значений таблицы с помощью объекта " СписокЗначений"
Для выгрузки и загрузки большого числа переменных удобно использовать объект типа «СписокЗначений». Объект этого типа создается функцией «СоздатьОбъект». У каждого элемента списка значений есть «значение» и «представление».
Добавление нового элемента в список осуществляется функцией «ДобавитьЗначение(< Значение>, < Представление>)».
Для загрузки элементов из списка значений используется функция «Загрузить(< Список>)», причем < Значение> элемента списка будет записано в ячейку с именем < Представление>. Кроме имени можно использовать и строковое выражение вида “R1C1”, обозначающее ряд и колонку ячейки.
После ввода данных пользователем делается выгрузка данных из таблицы функцией «Вырузить(< Список>)».
Пример. Следующая программа осуществляет запись чисел от 1 до 30 в первую колонку таблицы
Сп=СоздатьОбъект(" СписокЗначений");
Для Н=1 по 30 Цикл
Сп.ДобавитьЗначение(Строка(Н), " R" +Строка(Н)+" C1");
КонецЦикла;
Таблица.Загрузить(Сп);
Работа с " Пустой" таблицей
Кроме режимов работы с таблицей в режиме «вывода» и «ввода» есть еще один компромиссный вариант. В этом случае в свойствах формы нужно выбрать вариант «Использовать таблицу «Пустую». Тогда в диалоге формы также будет отображаться таблица, доступ к которой осуществляется по ключевому слову «Таблица». Однако для этой таблицы, в отличие от таблицы для ввода, доступны стандартные функции «ИсходнаяТаблица()», «ВывестиСекцию()» и др. Для того, чтобы изменения в таблице стали видны, нужно выполнить функцию Показать(). Чтобы прочитать или записать значение в ячейку таблицы используется работа с объектом «Область».
Пример. Следующая процедура считывает из ячеек таблицы значения и увеличивает их в два раза.
//*******************************************
Процедура Увеличить()
Для Ном=1 По 10 Цикл
Обл=Таблица.Область(Ном, 1, Ном, 1);
Обл.Текст=Строка(Число(Обл.Текст)*2);
КонецЦикла;
Таблица.Показать();
КонецПроцедуры
|
| 3.3.8 Операции экспорта - импорта данных |
На практике очень часто возникает необходимость в осуществлении переноса данных из одной программы в другую. Система 1С: Предприятие предоставляет мощные механизмы для выполнения таких операций.
Использование текстовых файлов для переноса данных
Для работы с файлами в системе используется специальный агрегатный тип данных – «ФС». По умолчанию в системе всегда доступен уже существующий объект с именем «ФС», к которому можно применять методы объекта типа «ФС». Кроме того, можно создать произвольное число объектов типа «ФС» при помощи функции «СоздатьОбъект(«ФС»)».
У объекта типа «ФС» имеются стандартные функции для работы с файлами: «ВыбратьФайл()» – открывает диалог выбора файла, «ВыбратьКаталог()»– открывает диалог выбора каталога, «СуществуетФайл()» – проверяет, существует ли файл с указанным именем, «КопироватьФайл()», «УдалитьФайл()», «ПереименоватьФайл()» и др.
Для работы с текстами в системе используется специальный тип данных «Текст». Средства языка позволяют выводить строк в текстовые файлы и считывать из имеющихся файлов текст с последующим разбором его по строкам.
· Открыть(< ИмяФайла>) – открывает файл.
· КодоваяСтраница(< Режим>) – получить/установить режим кодировки. < Режим> = 0 – Windows-кодировка, 1 – DOS-кодировка
· Показать(< Заголовок>, < ИмяФайла>) – открыть окно редактирования текста.
· Записать(< ИмяФайла>) – записывает текст в файл.
Чтение текста
· КоличествоСтрок() – количество строк в тексте.
· ПолучитьСтроку(< НомерСтроки>) – получить строку текста по номеру
Пример. Из файла «exp_imp.txt» загружается справочник номенклатуры
Спр=СоздатьОбъект(«Справочник.Номенклатура»);
Текст = СоздатьОбъект(«Текст»);
Список = СоздатьОбъект(«СписокЗначений»);
Текст.ОткрытьФайл(«exp_imp.txt»);
Для Ном=1 По Текст.КоличествоСтрок() Цикл
Стр = Текст.ПолучитьСтроку(Ном);
Список.ИзСтрокиСРазделителями(Стр); // преобразуем строку
//в список значений
Если Спр.НайтиПоКоду(Список.ПолучитьЗначение(1))=0 Тогда
Спр.Новый();
Спр.Код= Список.ПолучитьЗначение(1);
Спр.Наименование= Список.ПолучитьЗначение(2);
Спр.Записать();
КонецЕсли;
КонецЦикла;
Запись текста
· ВставитьСтроку(< НомерСтроки>, < Строка>) – вставить строку с указанным номером.
· ЗаменитьСтроку(< НомерСтроки>, < Строка>) – заменить строку с указанным номером.
· УдалитьСтроку(< НомерСтроки>) – удалить строку с указанным номером.
· ДобавитьСтроку(< Строка>) – добавить строку в конец текста.
· Очистить() –удалить все строки текста.
Пример. В файл «exp_imp.txt» выгружается справочник номенклатуры
Текст = СоздатьОбъект(«Текст»);
Список = СоздатьОбъект(«СписокЗначений»);
Спр=СоздатьОбъект(«Справочник.Номенклатура»);
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
Список.ДобавитьЗначение(Спр.Код);
Список.ДобавитьЗначение(Спр.Наименование);
// и другие поля…
// выводим список в текст
Текст.ДобавитьСтроку(Список.ВСтрокуСРазделителями());
Список.УдалитьВсе(); // очищаем список
КонецЦикла;
Текст.Записать(«exp_imp.txt»);
Работа с файлами в формате " DBE"
Для работы с базами данных в формате «DBF» используется объект типа «XBase». При этом надо учитывать следующие ограничения:
1. Не поддерживаются поля типа memo.
2. База данных открывается монопольно
3. Поддерживаются только индексные файлы в формате “CDX”
Доступ к полям базы данных осуществляется через точку с именем поля.
Пример
БД=СоздатьОбъект(“XBase”);
БД.ОткрытьФайл(«data.dbf»);
Если БД.Открыта()=1 Тогда
БД.Первая(); //встаем на первую запись
Пока 1=1 Цикл
// Обработка записи базы данных
Сообщить(Строка(БД.CODE) + «» + БД.Name);
Если БД.Следующая()=0 Тогда
// не удалось перейти к следующей записи
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Обмен данными с помощью OLE Automation
Для запуска системы 1С: Предприятие в качестве OLE Automation сервера из внешнего приложения (например, из другой программы 1С), выполняется следующая последовательность действий:
- Создается объект с OLE идентификатором:
· V1СEnterprise.Application — версия независимый ключ;
· V77.Application — версия зависимый ключ;
· V77S.Application — версия зависимый ключ, SQL версия;
· V77L.Application — версия зависимый ключ, локальная версия;
· V77M.Application — версия зависимый ключ, сетевая версия.
- Выполняется инициализация системы 1С: Предприятие методом Initialize.
- Вызываются атрибуты и методы системы 1С: Предприятие как OLE Automation сервера
Пример.
Процедура Загрузить()
Если ФС.Существуетфайл(Путь + " \NUL") = 0 Тогда
Предупреждение(" Путь информационной базы не найден! ");
Иначе
V7 = СоздатьОбъект(" V77.Application");
Открыта = V7.Initialize(V7.RMTrade, " /d" + Путь +
" /M /N" + Пользователь, " ");
Если Открыта = 0 Тогда
Предупреждение(" Ошибка открытия информационной базы");
Возврат;
КонецЕсли;
Импорт = V7.CreateObject(" Справочник.Контрагенты");
Импорт.ВыбратьЭлементы();
Пока Импорт.ПолучитьЭлемент() = 1 Цикл
Если Импорт.ЭтоГруппа() = 0 Тогда
Сообщить(Импорт.Наименование);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
|