ТОП 10:

Как получить обороты по бухгалтерскому счету за период в 1с 8.3, 8.2



 

Процедура КакПолучитьОборотыПоСчету()

// Получим дебетовые обороты по всем счетам входящих в иерархию 60 счета

Запрос = Новый Запрос;

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

"ВЫБРАТЬ

| ХозрасчетныйОстатки.СуммаОборотДт

|ИЗ

| РегистрБухгалтерии.Хозрасчетный.Обороты(

| ДАТАВРЕМЯ(2013, 01, 01), ДАТАВРЕМЯ(2013, 12, 31),,

| Счет В ИЕРАРХИИ (

| ЗНАЧЕНИЕ(

| ПланСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками

| )

| )

| )

| КАК ХозрасчетныйОстатки";

РезультатЗапроса = Запрос.Выполнить();

ВыборкаЗапроса = РезультатЗапроса.Выбрать();

Если ВыборкаЗапроса.Следующий() Тогда

Сообщить(ВыборкаЗапроса.СуммаОборотДт);

КонецЕсли;

КонецПроцедуры

 

Как изменять и добавлять бухгалтерские проводки в 1с 8.3, 8.2

 

Процедура КакИзменятьИДобавлятьПроводки()

ВыбДок = Документы.ПриходныйКассовыйОрдер.Выбрать();

Если ВыбДок.Следующий() Тогда

Набор = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();

Набор.Отбор.Регистратор.Установить(ВыбДок.Ссылка);

Набор.Прочитать();

// изменение существующих записей

Для Каждого Движение Из Набор Цикл

Движение.Сумма = 100;

КонецЦикла;

// добавление новых записей

Движение = Набор.Добавить();

Движение.СчетДт = ПланыСчетов.Хозрасчетный.Касса;

Движение.СчетКт = ПланыСчетов.Хозрасчетный.Выручка;

Движение.Период = ТекущаяДата();

Движение.Сумма = 10;

// добавление новых записей

Движение = Набор.Добавить();

Движение.СчетДт = ПланыСчетов.Хозрасчетный.Касса;

Движение.СчетКт = ПланыСчетов.Хозрасчетный.Выручка;

Движение.Период = ТекущаяДата();

Движение.Сумма = 1000;

// удаление существующих записей

Набор.Удалить(0);

Набор.Записать(Истина);

КонецЕсли;

КонецПроцедуры

Регистр расчета

Прикладной объект, предназначенный для хранения записей о тех или иных видах расчета, которые необходимо выполнить, а также для хранения промежуточных данных и самих результатов выполненных расчетов.

Информация в регистре расчета хранится в виде записей, каждая из которых содержит значения измерений и соответствующие им значения ресурсов.

Измерения регистра описывают разрезы, в которых хранится информация, а ресурсы регистра непосредственно содержат хранимую информацию.

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

· выбор записей в заданном интервале по заданным критериям;

· выбор записей по регистратору;

· получение значения базы для записей регистра, удовлетворяющих заданному отбору;

· получение данных графика для записей регистра, удовлетворяющих заданному отбору;

· получение данных о записях, подлежащих перерасчету;

· чтение, изменение и запись набора записей в регистр.

 

Язык запросов платформы «1С:Предприятие».

Запросы – это один из базовых механизмов «1С:Предприятия» наряду со встроенным языком, который позволяет читать и обрабатывать данные, хранящиеся в базе. Для составления запросов «1С:Предприятие» использует собственный язык, основанный на SQL.

Основные конструкции языка запросов

Рассмотрим самые важные и интересные операторы языка запросов 1С.

ВЫБРАТЬ (SELECT)

В языке запросов 1С предприятия 8 любой запрос начинается с ключевого слова ВЫБРАТЬ. В языке 1С нет конструкций UPDATE, DELETE, CREATE TABLE, INSERT, эти манипуляция производятся в объектной технике. Предназначение его — только чтение данных.

Например:

ВЫБРАТЬ

ТекущийСправочник.Наименование

ИЗ

Справочник.Номенклатура КАК ТекущийСправочник

Запрос вернёт таблицу с наименованиями номенклатуры.

Рядом с конструкцией ВЫБРАТЬ, можно встретить ключевые слова ДЛЯ ИЗМЕНЕНИЯ, РАЗРЕШЕННЫЕ, РАЗЛИЧНЫЕ, ПЕРВЫЕ …

ДЛЯ ИЗМЕНЕНИЯ — блокирует записи таблицы на время транзакции (не актуально для управляемых блокировок). Подробнее в статье ДЛЯ ИЗМЕНЕНИЯ в запросас 1С.

РАЗРЕШЕННЫЕ — выбирает только записи из таблицы, на которые есть права у текущего пользователя.

РАЗЛИЧНЫЕ — означает, что в результат не попадет дублирующих строк.

ПЕРВЫЕ n — в языке 1С 8.3, запрос отберет только n первых записей.

ВЫБОР (CASE)

Очень часто данная конструкция недооценивается программистами. Пример её использования:

ВЫБРАТЬ

ТекущийСправочник.Наименование,

ВЫБОР

КОГДА ТекущийСправочник.Услуга ТОГДА

«Услуга»

ИНАЧЕ

«Товар»

КОНЕЦ КАК ВидНоменклатуры

ИЗ

Справочник.Номенклатура КАК ТекущийСправочник

Пример возвратит в поле «ВидНоменклатуры» текстовое значение — «Товар» или «Услуга».

ГДЕ (WHERE)

Конструкция языка запросов 1C, позволяющая наложить отбор на получаемые данные. Учтите, что от сервера система получает все данные, а только потом отбираются по данному параметру.

Пример:

ВЫБРАТЬ

Справочник.Наименование

ИЗ

ТекущийСправочник.Номенклатура КАК ТекущийСправочник

ГДЕ ТекущийСправочник.Услуга = ИСТИНА

В примере мы отбираем записи, у которых значения реквизита «Услуга» установлено в положение «Истина». В данном примере можно было бы обойтись и таким условием:

«ГДЕ Услуга»

По сути, мы отбираем строки, у которых выражение после ключевого слова равно «Истина».

В выражениях можно использовать прямые условия:

ГДЕ Код = «005215»

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

ГДЕ ТипНоменклатуры= Значение(Перечисление.ТипыНоменклатуры.Товар)

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

ГДЕ ДатаПоступления > ДАТАВРЕМЯ(2012,01,01):

Чаще всего условия указываются в виде параметров, передаваемых в запрос:

ГДЕ НоменклатурнаяГруппа= &НоменклатурнаяГруппа

Условие можно наложить на тип реквизита, если он составного типа:

ГДЕ РегистрНакопления.Регистратор ССЫЛКА Документ.ПоступленияТоваров

Если необходимо ограничивать отбор из списка значений или массива, можно поступить следующим образом:

ГДЕ РегистрНакопления.Регистратор В (&СписокДокументовДляОтбора)

Условие может быть и сложное, состоящее из нескольких условий:

ГДЕ ДатаПоступления > ДАТАВРЕМЯ(2012,01,01) И НоменклатурнаяГруппа= &НоменклатурнаяГруппа И НЕ Услуга

СГРУППИРОВАТЬ ПО (GROUP BY)

Конструкция языка запросов 1С 8.2, используемая для группировки результата.

Например:

ВЫБРАТЬ

ПоступлениеТоварвУслугTовары.Товар,

СУММА(ПоступлениеТоварвУслугTовары.Количество) КАК Количество,

СУММА(ПоступлениеТоварвУслугTовары.Сумма) КАК Сумма

ИЗ

Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоварвУслугTовары

СГРУППИРОВАТЬ ПО

ПоступлениеТоварвУслугTовары.Товар

Данный запрос просуммирует все поступления по сумме и количеству в разрезе номенклатуры.

Помимо ключевого слова СУММА, можно использовать другие агрегатные функции: КОЛИЧЕСТВО, КОЛИЧЕСТВО РАЗНЫХ, МАКСИМУМ, МИНИМУМ, СРЕДНЕЕ.

ИМЕЮЩИЕ (HAVING)

Конструкция, о которой часто забывают, но она очень важна и полезна. Она позволяет указать отбор в виде агрегатной функции, этого нельзя сделать в конструкции ГДЕ.

Например:

ВЫБРАТЬ

ПоступлениеТоваровУслугТовары.Товар,

СУММА(ПоступлениеТоваровУслугТовары.Количество) КАК Количество,

СУММА(ПоступлениеТоваровУслугТовары.Сумма) КАК Сумма

ИЗ

Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары

СГРУППИРОВАТЬ ПО

ПоступлениеТоваровУслугТовары.товар

ИМЕЮЩИЕ

СУММА(ПоступлениеТоваровУслугТовары.Количество) > 5

Так мы отберем количество товаров, которых поступило более 5 штук.

ЗНАЧЕНИЕ()

В запросе 1C ЗНАЧЕНИЕ () можно использовать для указания предопределенных значений, таких как значения перечисления, пустую ссылку или значение предопределенного элемента (справочника, плана счетов, ПВХ и т.д).

Например:

ГДЕ Банк = Значение(Справочник.Банки.ПустаяСсылка)

или

ГДЕ ВидНоменклатуры = Значение(Справочник.ВидыНоменклатуры.Товар)

или

ГДЕ ТипНоменклатуры= Значение(Перечисление.ТипыНоменклатуры.Услуга)

ТИП в запросе

Тип данных можно проверить следующим образом с помощью функций ТИП() и ТИПЗНАЧЕНИЯ() или с помощью логический оператора ССЫЛКА.

Пример:

ГДЕ ТИПЗНАЧЕНИЯ(Проект.Ссылка) <> ТИП(Справочник.Проект)

или

ГДЕ Проект.Ссылка ССЫЛКА Справочник.Проект

ВЫРАЗИТЬ()

Оператор выразить служит для преобразования данных в запросе.

Синтаксис: ВЫРАЗИТЬ(<Выражение> КАК <Тип значения>)

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

Среди практического применения оператора Выразить() очень часто используется для преобразования полей неограниченной длинны, потому что поля неограниченной длинный нельзя отбирать, группировать и тд. Если такие поля не преобразовывать, вы получите ошибку Нельзя сравнивать поля неограниченной длины и поля несовместимых типов.

Пример:

ВЫБРАТЬ

КонтактнаяИнформация.Объект,

ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(150)) КАК Представление

ИЗ

РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация

СГРУППИРОВАТЬ ПО

ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(150)),

КонтактнаяИнформация.Объект

ЕСТЬNULL (ISNULL)

Достаточно полезная функция языка запросов 1С, которая проверяет значение в записи, и, если оно равно NULL, то позволяет заменить на своё значение. Чаще всего используется при получении виртуальных таблиц остатков и оборотов что бы скрыть NULL и поставить понятный 0 (ноль).

Пример:

ЕСТЬNULL(НалогиПредМесяца.ПримененнаяЛьготаФСС, 0)

Такая функция с ЕСТЬNULL, при отсутствии значения вернет ноль, что позволит избежать ошибки.

СОЕДИНЕНИЕ (JOIN)

Соединения бывают 4 типов: ЛЕВОЕ, ПРАВОЕ, ПОЛНОЕ, ВНУТРЕННЕЕ.

ЛЕВОЕ и ПРАВОЕ СОЕДИНЕНИЕ

Соединения используются для связи двух таблиц по определенному условию. Особенность при ЛЕВОМ СОЕДИНЕНИИ в том, что мы берём первую указанную таблицу полностью и привязываем по условию вторую таблицу. Поля второй таблицы, которые не удалось привязать по условию, заполняются значением NULL.

Например:

ВЫБРАТЬ

Клиенты.Ссылка КАК Контрагент,

Банки.Ссылка КАК Банк

ИЗ

Справочник.Контрагенты КАК Клиенты

ЛЕВОЕ СОЕДИНЕНИЕ

Справочник.Банки КАК Банки

ПО

Клиенты.Наименование = Банки.Наименование

Вернет всю таблицу Контрагентов и заполнит поле «Банк», лишь в тех местах, где будет соблюдаться условие «Контрагенты.Наименование = Банки.Наименование». Если условие не соблюдается, в поле Банк будет установлено NULL.

ПРАВОЕ СОЕДИНЕНИЕ, в языке 1С 8.3, абсолютно аналогично ЛЕВОМУ соединению, за исключением одного отличия — в ПРАВОМ СОЕДИНЕНИИ «главная» таблица — вторая, а не первая.

ПОЛНОЕ СОЕДИНЕНИЕ

ПОЛНОЕ СОЕДИНЕНИЕ отличается от левого и правого тем, выводит все записи из двух таблиц, соединяет лишь те, которые может соединить по условию.

Например:

ВЫБРАТЬ

Клиенты.Ссылка КАК Клиенты,

Банки.Ссылка КАК Банк

ИЗ

Справочник.Контрагенты КАК Клиенты

ПОЛНОЕ СОЕДИНЕНИЕ

Справочник.Банки КАК Банки

ПО

Клиенты.Наименование = Банки.Наименование

Язык запросов вернет обе таблицы полностью, лишь по выполненному условию соединить записи. В отличие от левого/правого соединения возможно появления NULL в двух полях.

ВНУТРЕННЕЕ СОЕДИНЕНИЕ

ВНУТРЕННЕЕ СОЕДИНЕНИЕ отличается от полного тем, что выводит только те записи, которые смогли соединить по заданному условию.

Например:

ВЫБРАТЬ

Клиенты.Ссылка КАК Клиенты,

Банки.Ссылка КАК Банк

ИЗ

Справочник.Контрагенты КАК Клиенты

ВНУТРЕННЕЕ СОЕДИНЕНИЕ

Справочник.Банки КАК Банки

ПО

Клиенты.Наименование = Банки.Наименование

 

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







Последнее изменение этой страницы: 2017-02-05; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.232.188.251 (0.011 с.)