Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Как получить обороты по бухгалтерскому счету за период в 1С 8. 3, 8. 2 ⇐ ПредыдущаяСтр 8 из 8
Процедура КакПолучитьОборотыПоСчету() // Получим дебетовые обороты по всем счетам входящих в иерархию 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; просмотров: 672; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.126.74 (0.055 с.) |