| |
Структура регистра бухгалтерии
Ниже в примерах будет использован регистр бухгалтерии Основной, поддерживающий корреспонденцию и имеющий следующую структуру:
Субсчета
Любой счет в плане счетов может иметь субсчета. Это отличается от версии 7.7, где при создании счета спрашивалось, будет ли счет иметь субсчета и, в зависимости от ответа, он создавался группой или обычным счетом. Теперь любой счет может иметь субсчета, причем количество уровней их иерархии не ограничено.
В новой версии возможны проводки по родительским счетам. Даже если у счета есть субсчета, то по нему могут делаться проводки, например, допускается проводка Дт20 Кт76, хотя у счетов 20 и 76 могут быть субсчета.
Маска кода счета никак не связана с иерархией счетов. Это означает, что у счета 20 могут быть субсчета «Общехоз» или, например, субсчет 25, однако это может привести к путанице, поэтому рекомендуется назначать код счета в соответствии с уровнем иерархии.
Валютные остатки по счетам
Так как в нашем регистре есть измерение Валюта, то возможно получить остатки по каждой валюте в разрезе счетов и организаций. Это можно сделать следующим запросом:
ВЫБРАТЬ
| ОсновнойОстатки.Организация КАК Организация,
| |
| ОсновнойОстатки.Счет КАК Счет,
| |
| ОсновнойОстатки.Валюта КАК Валюта,
| |
| ОсновнойОстатки.ВалютнаяСуммаОстаток КАК Остаток
| |
ИЗ
| РегистрБухгалтерии.Основной.Остатки КАК ОсновнойОстатки
| |
УПОРЯДОЧИТЬ ПО
ИТОГИ СУММА(Остаток) ПО
Результат запроса показан ниже в виде сводной таблицы:
ЗначенияСубконто
| Доступ к значениям субконто. Обычно эта таблица соединяется в запросе с какой-нибудь другой таблицей.
| |
Базовые
? это такие виды расчета, результаты которых используются при расчете данного вида расчета. Например, сумма по окладу используется при расчете доплаты к окладу, а основные начисления являются базовыми для расчета НДФЛ.
В каждом регистре выделены измененные
В каждом регистре выделены измененные записи. Следовательно, связанные с ними записи в регистре Удержания стали неактуальными, т.е. требуют пересчета, что отражается в таблице пересчета.
Таким образом, перерасчет ? это таблица, сохраняющая значения измерений, по которым требуется перерасчет. Кроме измерений, в этой таблице хранятся виды расчетов и ссылки на документы-регистраторы. С помощью таблицы перерасчета можно определить, какие записи стали неактуальными и требуют перерасчета (или по крайней мере более пристального внимания).
Документы
предназначены для ввода записей в регистры рас-чета. Например, документы Отпуск, Премия.
Графики
Если у регистра установлен флажок «Период действия», то можно заполнить свойства «График», «Значение графика» и «Дата графика». Фактически график представляет собой непериодический регистр сведений, описывающий распределение во времени исходных данных для расчета. Например, это может быть график работы организации с разбивкой по рабочим дням и часам, график продолжительности рабочих смен, расписание лекционных часов и т.д.
Ниже приведен пример регистра сведений, который служит графиком работы.
Измерения
? это разрезы хранимой информации. Например, у регистра ОсновныеНачисления будут измерения Физлицо, Организация, Подразделение, Должность, а у регистра Налоги будут только два измерения: Физлицо и Организация.
Отчеты
используются для вывода детальной и сводной информации, например, отчеты РасчетныеЛистки, Свод. Так как в версии 8.0 все объекты конфигурации входят в стандартную поставку, то в прикладных решениях вполне возможно активно использовать регистры расчета совместно с регистрами накопления, планами счетов и регистрами бухгалтерии.
Перерасчеты
Система позволяет автоматически отслеживать записи, требующие перерасчета. Такая ситуация может возникнуть, когда их результаты каким-то образом связаны с другими видами расчета, а те были изменены (удалены или добавлены новые записи).
Например, при изменении начислений сотрудника нужно пересчитать налоги. Тогда для вида расчета «НДФЛ» начисления будут являться ведущими видами расчета, что настраивается в плане видов расчета на закладке «Ведущие».
Допустим, у нас есть регистры расчета ОсновныеНачисления, Премии и Удержания. Налоги рассчитываются после всех начислений и премий, так как используют их результаты.
Для автоматического отслеживания актуальности записей о налогах по каждому сотруднику необходимо у регистра Удержания создать перерасчет с измерением Физлицо. В качестве данных базовых регистров назначается измерение Физлицо из регистра ОсновныеНачисления и регистра Премии.
Ниже на примере показана схема работы перерасчета:
Регистр расчета "Основные начисления"
| |
| |
Предопределенные виды расчета
В плане видов расчетов еще на этапе разработки прикладного решения могут быть заведены предопределенные виды расчетов. При работе с программой пользователь может самостоятельно завести дополнительные виды расчета, если это не запрещено разработчиком.
Здесь прослеживается аналогия с планами счетов и предопределенными счетами. Фактически, с помощью предопределенных видов расчета на этапе разработки конфигурации задается схема расчета для конкретной предметной области.
Регистры сведений
могут хранить любую информацию, развернутую по нескольким измерениям. Кроме того, они могут быть периодическими, тогда информация дополнительно разворачивается во времени. При помощи регистров сведений реализуются графики учета времени (аналог календарей в версии 7.7). Например, при расчете зарплаты это будут графики работы сотрудников предприятия.
Реквизиты
? дополнительная характеристика записи расчета. Реквизиты могут быть почти любого сохраняемого в базе данных типа. Например, реквизиты Дни и Часы для регистра ОсновныеНачисления, реквизит ДокументОснование для регистра Удержания.
| Ниже на рисунке показана структура регистра расчета НачисленияСотрудников. |
Ресурсы
? результаты расчета, например, ресурс Начислено для регистра ОсновныеНачисления, ресурс Удержано для регистра Налоги и т.д. Ресурсы могут быть только числового типа.
Сложность
(необходимость хранения промежуточных результатов расчета, взаимное влияние записей, вытеснение по времени, перерасчеты одних записей при изменении других и т.д.).
| В новой версии 1С:Предприятия для реализации сложных периодических расчетов предназначены следующие объекты:
| |
Справочниках
хранятся объекты, которые используются в качестве разрезов периодических расчетов, например, физические лица, подразделения организации, должности сотрудников и т.д.
Ведущие
? это виды расчета, при изменении результатов которых нужно пересчитать данный вид расчета. Например, при изменении оплаты по окладу «задним числом» необходимо пересчитать оплату отпуска, поскольку при расчете отпускных используется средняя зарплата сотрудника за предыдущие месяцы. Список ведущих видов расчета может не совпадать со списком базовых.
Вытесняющие
? это виды расчета, период действия которых не должен пересекаться с периодом данного вида расчета. Вытесняющие виды расчета имеют больший приоритет вытеснения, поэтому они вытесняют по времени данный вид расчета. Например, оплата отпуска вытесняет оплату по окладу, а оплата по больничному вытесняет оплату отпуска и оплату по окладу.
При вытеснении записи с определенным периодом действия ее фактический период действия может измениться, т.е. уменьшится или разделится на несколько интервалов. Например, запись об отпуске с 10 по 20 число месяца вытесняет запись об окладе, у которой период действия ? весь месяц. Тогда фактический период действия записи об окладе будет состоять из двух интервалов: с 1 по 9 число и с 21 по конец месяца.
Взаимосвязь видов расчета
Для каждого вида расчета в следующем окне указываются базовые, ведущие и вытесняющие его виды расчетов:
Ниже приведено описание этих взаимосвязей между видами расчета:
Запросы к регистрам расчета
Запросы к данным регистра расчета позволяют извлечь информацию о произведенных расчетах. В запросах можно обращаться к следующим таблицам-источникам:
| · | основная таблица записей регистра расчета,
| |
| · | таблица фактического периода действия,
| |
С помощью средств механизма запросов можно группировать результаты расчета в необходимых разрезах, подсчитывать итоги, отбирать только нужные записи расчета. Это позволяет сформировать весь спектр необходимых отчетов, например, РасчетныеЛистки, ЛицевыеСчета, ВедомостьВыплатыЗарплаты и т.д. Механизм запросов был подробно описан в главе «Запросы». Список полей таблиц-источников регистров расчета приведен в документации.
Чтение DBF-файла
Чтение DBF-файла производится еще проще:
ФайлDBF = Новый XBase;
ФайлDBF.ОткрытьФайл("с:\staff.dbf",,Истина); //только для чтения
ФайлDBF.Первая();
Пока НЕ ФайлDBF.ВКонце() Цикл
| НовСотр = Справочники.Сотрудники.СоздатьЭлемент();
| |
| НовСотр.Наименование = ФайлDBF.Name;
| |
| НовСотр.Подразделение = ФайлDBF.Dер;
| |
| НовСотр.Оклад = ФайлDBF.Sum;
| |
КонецЦикла;
ФайлDBF.ЗакрытьФайл();
Чтение XML
Чтение XML-документов производится через объект Чтение XML с помощью метода Прочитать:
Чт = Новый ЧтениеXML;
Чт.ОткрытьФайл(ПутьКФайлу);
Пока Чт.Прочитать() Цикл
| Рез = "ТипУзла=" + Чт.ТипУзла;
| |
| Рез = Рез + " Имя='" + Чт.Имя;
| |
| Рез = Рез + "' ЛокальноеИмя='" + Чт.ЛокальноеИмя;
| |
| Рез = Рез + "' Префикс='" + Чт.Префикс;
| |
| Рез = Рез + "' Значение'" + Чт.Значение;
| |
КонецЦикла
Дополнительно система 1С:Предприятие 8.0 поддерживает преобразование с помощью XSL. Язык XSL или eXtensible Stylesheet Language ? это язык описания стилей отображения для XML-документов. Он позволяет описать способ отображения документов для различных носителей, будь то окно вебобозревателя или устройство печати. Данные в формате XML форматируются с помощью таблицы стилей в формате XSL, в результате создается отображение данных в соответствии с заданными стилями.
Полный список объектов, их свойств и методов для работы с XML-документами приведен в документации.
ДобавитьСтроку
| Добавляет строку в конец текстового документа.
| |
Индексы
Для упорядочивания содержимого DBF-файла и поиска в нем по значению одного или нескольких полей применяется механизм индексов. Его применение можно сравнить с сортировкой картотеки по определенному признаку (совокупности признаков). Однако, в отличие от картотеки, файл может иметь сразу несколько индексов, и, соответственно, являться упорядоченным одновременно по нескольким признакам.
Индексы хранятся в индексном файле, причем один индексный файл может содержать сразу несколько индексов. Рекомендуется для одного файла DBF иметь один индексный файл, в котором хранятся все индексы этого файла.
Интернет-соединение
С помощью объекта ИнтернетСоединение можно устанавливать и разрывать соединение с провайдером через коммутируемые линии (модем). После установления соединения можно отправлять и принимать почту, обращаться к сайтам (веб-серверам) по протоколам HTTP/HTTPS и к FTP-серверам.
Для операций через эти протоколы можно также использовать процедуры и функции глобального контекста для работы с файлами, например, КопироватьФайл.
Электронная почта (e-mail)
Для работы с электронной почтой в 1C:Предприятии 8.0 существуют следующие объекты:
КоличествоСтрок
| Получает количество строк в тексте.
| |
КомандаСистемы
| Вызывает на исполнение команду операционной системы, как если бы она была введена в командной строке. После загрузки приложения управление возвращается в 1С:Предприятие 8.0, и исполнение модуля продолжается.
| |
Объект «ЧтениеТекста»
Объект ЧтениеТекста предназначен для последовательного чтения текстовых файлов. Следующий фрагмент прочитает ранее записанный файл:
Файл = Новый
ЧтениеТекста("с:\test.txt",КодировкаТекста.ANSI,Символы.ПС);
Строка1 = Файл.Прочитать(7);
Строка2 = Файл.ПрочитатьСтроку();
Строка3 = Файл.Прочитать();
Файл.Закрыть();
Объект «ТекстовыйДокумент»
Объект ТекстовыйДокумент предназначен для манипулирования строками текстового файла. Все строки в системе хранятся в ко-дировке UNICODE, но есть возможность записи и чтения текстов в других кодировках. С помощью методов Прочитать и Записать текстовый документ считывается из файла или записывается в файл.
При работе с текстовым документом можно манипулировать его строками, для чего предназначены следующие методы:
Объект «ЗаписьТекста»
Объект ЗаписьТекста предназначен для последовательной записи текстовых файлов.
Приведенный ниже фрагмент запишет небольшой текстовый файл:
Файл= Новый
ЗаписьТекста("с:\test.txt",КодировкаТекста.ANSI.Символы.ПС);
Файл.Записать("Строка1");
Файл.ЗаписатьСтроку("Строка2");
Файл.Записать("Строка3");
Файл.3акрыть();
В результате работы программы получится следующий текстовый файл:
Строка1Строка2
Строка3
Поле HTML-документа
Элемент управления ПолеНТМL Документа позволяет отобразить HTML-страницу. Это могут быть как локальные страницы, так и страницы из Интернета.
У данного элемента управления есть метод Перейти, который позволяет указать адрес страницы (URL) или HTML-макет, хранящийся в конфигурации.
Следующий фрагмент демонстрирует, как можно указать адрес сайта (веб-сервера) для данного элемента управления:
ЭлементыФормы.ПолеНТМLДокумента.Перейти("http://www.1c.ru");
ПолучитьСтроку
| Получает строку текстового документа по номеру.
| |
Следующий пример демонстрирует применение этих методов:
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать("catalog.txt", КодировкаТекста.ANSI);
Текст.ЗаменитьСтроку(52, "Установка оборудования " + Стоимость);
Текст.ВставитьСтроку(53, "Замена оборудования... ");
Текст.УдалитьСтроку(10);
Текст.ДобавитьСтроку("Конец файла");
Для н = 1 По Текст.КоличествоСтрок() Цикл
| стр = Текст.ПолучитьСтроку(н);
| |
КонецЦикла;
Текст.Записать("catalog2.txt",КодировкаТекста.ANSI);
Текст.ТолькоПросмотр = Истина;
Текст.Показать();
Можно прочитать весь текстовый документ в строковую переменную или, наоборот, в текстовый документ записать значение строковой переменной. Для этого предназначены методы ПолучитьТекст и УстановитьТекст. Текст, содержащийся в текстовом документе до исполнения метода УстановитьТекст, удаляется:
стр = ТекстДок. ПолучитьТекст ();
ТекстДок.УстановитьТекст(стр);
Метод Очистить позволяет полностью очистить текстовый документ (удалить все строки). С помощью метода Показать текстовый документ можно отобразить на экране. Если установить свойство ТолькоПросмотр в значение Истина, то пользователь не сможет изменить текстовый документ.
Последовательный доступ к тексту
При работе с большими текстовыми файлами бывает необходимо применить последовательный доступ, при котором весь файл не загружается в память и в один момент времени производится обработка только фрагмента файла. После чтения/записи очередного фрагмента к нему нельзя уже вернуться (в памяти его больше нет), поэтому такой доступ называется последовательным. Текст обычно хранится в кодировке UNICODE, но объекты ЧтениеТекста и ЗаписьТекста умеют работать и с другими кодировками.
Работа с FTP
Система 1С:Предприятие 8.0 имеет средства для работы с файлами по протоколу FTP. Можно подключаться к FTP-серверам, скачивать и закачивать файлы, переименовывать их, обращаться к их свойствам, создавать каталоги и т.д.
Ниже показан простой пример, в котором устанавливается соединение с FTP-сервером, скачивается один файл, а на его место помещается другой:
FTP = Новый FTPСоединение
("ftp://ftp.mysite.ru",21,"login","password");
FTP.УстановитьТекущийКаталог("htdocs");
FTP.Получить("index.htm", "с:\old\index.htm");
FTP.Записать("с:\new\index.htm", "index.htm");
Удаленные записи
Файлы DBF устроены таким образом, что удаление записи не приводит к физическому удалению записи из файла. Запись просто помечается на удаление и пропускается при переборе. Таким образом, размер файла остается прежним. Чтобы физически удалить все помеченные на удаление записи, нужно применить метод Сжать. Средства встроенного языка позволяют работать с записями, помеченными на удаление, перебирать их и даже отменять пометку на удаление.
Удалить Строку
| Удаляет из текстового документа строку с указанным номе-ром.
| |
ВставитьСтроку
| Вставляет в текстовый документ строку с указанным номе-ром.
| |
Приведенный ниже пример подключает внешнюю
| Приведенный ниже пример подключает внешнюю компоненту Math.dll', содержащую различные математические функции, и использует из нее генератор псевдослучайных чисел:
|
| ЗагрузитьВнешнююКомпоненту("Math.dll");
|
| МФ = Новый("Addln.Math");
|
| //Для инициализации датчика случайных чисел используется процедура MO.SRAND(IOOO);
|
| //параметр может быть от 0 до 32767
|
| Сообщить(МФ.RAND()); //случайное число в промежутке от 0 до 32767
|
| Разработчик внешней компоненты Math.dll ? внедренческий центр «Чип и Дейл» (Новосибирск)
|
ЗаменитьСтроку
| Заменяет строку с указанным номером на переданную.
| |
Запись DBF-файла
Следующий фрагмент программы создает DBF-файл с тремя полями и выгружает в него справочник Сотрудники:
ФайлDBF = Новый XBase;
ФайлDBF.Поля.Добавить("Name","S",100);
ФайлDBF.Поля.Добавить("Dep","S",50);
ФайлDBF.Поля.Добавить("Sum","N",10,2);
ФайлDBF.Кодировка = КодировкаХВаsе.ОЕМ; //кодировка DOS
ФайлDBF.СоздатьФайл("с:\staff.dbf");
Сотрудники = Справочники.Сотрудники.Выбрать();
Пока Сотрудники.Следующий() Цикл
| ФайлDBF.Name = Сотрудники.Наименование;
| |
| ФайлDBF.Dер = Сотрудники.Подразделение;
| |
| ФайлDBF.Sum = Сотрудники.Оклад;
| |
КонецЦикла;
ФайлDBF.ЗакрытьФайл();
Запись XML
Следующий фрагмент создает простой XML-документ и записывает его в файл. Иерархический отступ конструкций языка показывает вложенность XML-элементов друг в друга:
Файл = Новый ЗаписьXML;
Файл.ОткрытьФайл(ПутьКФайлу);
Файл.ЗаписатьОбъявлениеXML();
| Файл.ЗаписатьНачалоЭлемента("goods");
| |
| Файл.ЗаписатьНачалоЭлемента("good");
| |
| Файл.ЗаписатьНачалоЭлемента("name");
| |
| Файл.ЗаписатьТекст("Ботинки");
| |
| Файл.ЗаписатьКонецЭлемента();
| |
| Файл.ЗаписатьНачалоЭлемента("price");
| |
| Файл.ЗаписатьТекст(XMLСтрока(600));
| |
| Файл.ЗаписатьКонецЭлемента();
| |
| Файл.ЗаписатьКонецЭлемента();
| |
| Файл.ЗаписатьНачалоЭлемента("good");
| |
| Файл.3аписатьНачалоЭлемента("name");
| |
| Файл.ЗаписатьТекст("Сапоги");
| |
| Файл.ЗаписатьКонецЭлемента();
| |
| Файл.ЗаписатьНачалоЭлемента("price");
| |
| Файл.ЗаписатьТекст(XMLСтрока(1000)) ;
| |
| Файл.ЗаписатьКонецЭлемента();
| |
| Файл.ЗаписатьКонецЭлемента();
| |
Файл.ЗаписатьКонецЭлемента() ;
В результате работы программы получился следующий XML-документ:
<?xml version="1.0"?>
<goods>
</goods>
ЗапуститьПриложение
| Выполняет запуск внешнего приложения либо открытие файла с использованием связанного с ним приложения.
| |