0

Движение регистра это 1с

Кто-нибудь, объясните тугодуму, что делает этот код и что конкретно значит каждая строка

Процедура ОбработкаПроведения (Отказ, Режим)

// Данный фрагмент построен конструктором.

// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!! !

Для Каждого ТекСтрокаПереченьТоваров Из ПереченьТоваров Цикл

// регистр КоличествоТоваров Приход

Движение = Движения. КоличествоТоваров. Добавить ();

Движение. ВидДвижения = ВидДвиженияНакопления. Приход;

Движение. Период = Дата;

Движение. Товар = ТекСтрокаПереченьТоваров. Товар;

Движение. Филиал = Филиал;

Движение. Количество = ТекСтрокаПереченьТоваров. Количество;

Документы – суть ведения учета в 1С. Каждый документ имеет результат, например пришло товаров +10 шт.

Отчеты – позволяют смотреть результаты. Суммируют эти результаты и показывают пользователю.

Однако документов много и если бы приходилось суммировать их результаты, то это было бы слишком сложно. Поэтому придуман лучший способ!

Документы записывают свои результаты (называют «движения») в специальные таблицы – регистры 1с, которые сами суммируют результаты, чтобы отчет просто отобразил заранее посчитанные итоги.

Сегодня мы поговорим про регистры 1С и их использование.

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

Документ, который записал движения в регистр 1С, называют Регистратор. Дата и время движения равны (в 99% случаев) дате документа. Дату движения называют Период.

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

Конечно же никто не делает одно основное измерение к у регистра 1С. Ведь если мы учитываем движения товаров, то нам интересно не только какой товар уменьшился или прибавился, но и например, по какому складу. Поэтому всегда есть три-пять дополнительных измерений «на всякий случай», которые можно назвать дополнительной аналитикой регистра 1С.

Как документ проводится по регистрам?

Движения документа по регистрам 1С

Посмотрим как работают регистры 1С. Вот у нас есть документ поступления товаров, в котором мы видим, что поступил товар Масло на склад Главный.

С точки зрения логики и математики этот документ имеет результат:

Масло кремлевское, Главный склад +10 (шт)

Проверим – так ли это?

Этот пункт меню покажет нам все движения документа, которые он сделал по регистрам. Как мы видим, документ сделал движения по целой куче регистров 1С, в каждый из которых он записал разную информацию (в соответствии с назначением регистра 1С). По регистру 1С Товары на складах он сделал ту проводку, которую мы с Вами рассчитали.

Как же это выглядит в регистре 1С? Откроем регистр 1С через меню Операции.

Открылся регистр 1С. Данных в нем много. Сделаем отбор только по нашему документу.

В результате мы видим движение нашего документа по регистру 1С. Оно ровно совпадает с тем, что мы рассчитали вручную:

  • Плюс – вид движения (приход/расход)
  • Регистратор – наш документ
  • Активность – эта строка движения действительна (то есть не отключена)
  • Номенклатура, основное измерение
  • Склад, дополнительное измерение
  • Количество, ресурс (то есть цифра, которую мы считаем).

Если мы поставим отбор не по документу, а по номенклатуре (точно таким же образом), то мы увидим движения всех документов, которые трогали эту номенклатуру. Один документ – мы купили товар. Другой – продали. Итого естественно сам регистр 1С не показывает – для этого нужно использовать отчет или запрос.

Регистры 1С бывают разные (ниже мы обсудим это). Проводки по разным регистрам 1С выглядят тоже по разному. Мы сейчас смотрели проводки по регистру накопления 1С. Вот так выглядят проводки нашего этого же документа по бухгалтерскому регистру 1С, который работает на основании бухгалтерского (налогового) плана счетов 1С.

Зачем нужны регистры 1С

Регистры 1С бывают разных видов. Цель использования регистра 1С зависит от его вида.

  • Регистры сведений 1С
    Это обычная таблица, как в Excel. Она не имеет никаких движений (приходов/расходов). Регистр сведений 1С обычно используется для хранения дополнительных данных справочников. С помощью регистра сведений 1С можно организовать периодический реквизит справочника, как это делать мы обсуждали здесь.
  • Регистры бухгалтерии 1С
    С точки зрения пользователя учет ведется на бухгалтерском плане счетов. На самом деле учет ведется в таблице регистров бухгалтерии 1С, которые сделаны в разрезе плана счетов 1С.
  • Регистры накопления 1С (регистр остатков 1С)
    Таблица движения документов + и –, которая автоматически вычисляет итого на начало периода и итого на конец периода. Например движения товара Лопата было +10, а потом -8. Значит остаток на начало был 0, а остаток на конец стал 2.
Читайте также:  Диагностика по информатике 9 класс

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

Регистр остатков 1С используют в том случае, когда у справочника логически может быть остаток. Например, когда мы учитываем движения товаров, то мы будем использовать регистр остатков 1С – ведь мы можем сказать, что товара Лопата осталось 3 штуки.
Регистры накопления 1С (регистр оборотов 1С)
Таблица движения документов + и -, которая не считает итого.

Регистр оборотов 1С ничем не отличается от регистра остатков, за исключением того, что у него не рассчитываются автоматически остатки.

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

Например, продажи товаров были +10 (мы продали) а потом -2 (нам вернули). Мы не можем сказать что остаток продаж стал 8, потому что логически понятия остатка продаж не существует, мы скажем что итого оборота (сумма каждой строки оборота) стала 8.
Регистры расчетов 1С

Таблица движений в разрезе видов расчета и периодов. Используется в начислении заработной платы (называют Сложные периодические расчеты).

Где находятся регистры 1С

Когда мы с Вами обсуждали справочники и документы, то мы говорили, что они обычно расположены в тех или иных меню.

Регистры 1С – это внутренний, программистский объект 1С. Пользователи с ним не работают. Пользователи смотрят результаты в отчетах. Поэтому никакие регистры 1С в интерфейс пользователя обычно не выведены и их через меню открыть нельзя.

Конечно же это не касается двух программистских меню. В толстом клиенте меню Операции (в интерфейсе пользователя с административными правами):

В тонком клиенте меню Все функции, которое аналогично меню Операции, но по умолчанию спрятано (см. пункт меню Сервис, чтобы его включить):

В конфигураторе регистры расположены в соответствующих ветках.

Как происходит работа с регистрами 1С

Как мы уже обсудили только что – документ «проводится» по регистрам 1С. Понятие процесса «проведение» — имеется ввиду запись документом в регистры 1С своих результатов. Как не сложно догадаться – если документ не проведен, то он ничего не записал в регистр 1С. Это используется для создания черновиков документов.

В списке документов в первой колонке отображается статус документа. Зеленая галочка – документ проведен. В следующих колонках отмечено по каким типам регистров 1С проведен документ (наличие этих колонок зависит от конфигурации). «У» управленческий учет – регистры накопления 1С. «Б» и «Н» бухгалтерский и налоговый учет – бухгалтерские регистры 1С.

Чтобы провести документ, нажмите на него в списке правой кнопкой и нажмите Провести.

Или в самом документе кнопки проведения. Также кнопка ОК записывает и проводит документ.

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

Проведение документа в коде (в программе) прописывается программистом. Для этого откройте модуль объекта любого документа (как это сделать мы обсуждали в уроке про модули 1С). Найдите строку вида «Процедура ОбработкаПроведения(». Раскройте крестик и Вы видите программу проведения этого документа.

    Настройка проведения документа происходит следующим образом:

В конфигураторе, в документе, на закладке Движения необходимо галочками проставить те регистры 1С, по которым будет проведен документ.

После этого нажмите кнопку Конструктор движений. Эта кнопка генерирует код (программу) для указанной выше процедуры ОбработкаПроведения(). Поэтому Вы должны использовать или эту кнопку или писать код вручную, так как эта кнопка затирает написанный вручную код.


После нажатия кнопки Вам будет предложено выбрать один из регистров 1С, на которые Вы установили галочку (если Вы выбрали несколько регистров 1С).

Задача проста – Вы видите справа вверху реквизиты документа, слева внизу реквизиты регистра 1С. Нужно заполнить какой реквизит документа попадет в какой реквизит регистра 1С. Помочь в этом может кнопка «Заполнить выражения».

Настройка и разработка Регистров 1С

Основные особенности Регистров 1С, по закладкам:

Читайте также:  Как войти в подъезд с домофоном

    Основные – название регистра 1С в конфигураторе (Имя) и в режиме Предприятие (Синоним). Здесь же Вы выбираете основные свойства регистра 1С, для регистра накопления 1С – остатки или обороты, для регистра сведений 1С – периодичность.

  • Подсистемы и Функциональные опции – на какой закладке рабочего стола пользователя в тонком клиенте будет находится справочник, условия его видимости
  • Данные — здесь указываются «реквизиты» регистра 1С
    o Измерения – основное измерение (ради чего создается регистр 1С) и дополнительные измерения (на всякий случай), мы обсуждали это ранее
    o Ресурсы – цифры, которые мы будем считать, обычно количество и сумма
    o Реквизиты – дополнительная информация, такая как Комментарий
  • Регистраторы – документы, которые будут проводится по этому регистру 1С, для некоторых регистров сведений 1С могут не использоваться
  • Формы – формы, которые видит пользователь при работе со регистром 1С – обычно только форма списка
  • Рассылка
    Курс лекций
    Статьи
    Программы
    Ссылки

    Форум

    mista.ru / 1С:Предприятие / Учебник / Регистры
    Назначение регистров
    Запись движений
    Обращение к итогам
    Обращение к движениям
    Фильтрация движений
    Временный расчет
    Запрос к регистру
    Народная примета: если программист в девять утра уже на работе, значит, он еще на работе.

    Назначение регистров

    Регистры – это таблицы для накопления оперативных данных и получения сводной информации.

    Данные в регистры добавляются только при проведении документов. Сведения из регистров используются для формирования отчетов. Классическая схема использования регистров в 1С:Предприятие выглядит следующим образом:

    Документы => Регистры => Отчеты


    Измерения и ресурсы

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

    Измерения регистра – это то, в каких разрезах требуется хранение информации.
    Ресурсы регистра – это количественные или суммовые данные, которые хранятся в регистре.

    Предположим, что регистр «Остатки товаров» должен содержать сведения о количестве и стоимости каждого товара на каждом складе. В идеологии системы 1С:Предприятие регистр такого вида представляет собой прямоугольную систему координат на одной оси которой находятся склады, на другой — товары, а на пересечении конкретного склада и конкретного товара находятся цифры количества товара и стоимости товара.

    Регистр: Остатки товаров
    Измерения: Товар, Склад
    Ресурсы: Кол-во, Стоимость

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

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

    Одна строка из этой таблицы называется "движение". Движения в регистрах создаются только при проведении документов. В регистре, кроме измерений и ресурсов, можно задать реквизиты. Реквизиты – это дополнительные сведения, сопровождающие движение. Методами встроенного языка можно отбирать движения с заданным значением реквизита.

    В системе 1С:Предприятие возможно использование регистров двух типов: регистры остатков и регистры оборотов. Разница между ними понятна из их названия и заключается в характере хранимой информации: в регистрах остатков всегда хранится информация о конечном состоянии средств, а в регистрах оборотов, образно выражаясь, — как это состояние было достигнуто.

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

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

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

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

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

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

    Читайте также:  Вертикальный пылесос kitfort kt 535 2 отзывы

    Основы программирования

    Оборотный регистр Доходы
    Измерения: Клиент, Товар
    Ресурсы: Доход
    Реквизиты: нет
    Периодичность: День Регистр остатков Товары
    Измерения: Товар, Склад
    Ресурсы: Количество, Стоимость
    Реквизиты: нет Хранит доходы от продаж за день в разрезе клиентов и товаров. Хранит остатки товаров на каждом складе в количественном и суммовом выражении.

    Запись движений в регистр остатков
    (только при проведении документа)
    р.Доходы.ДвижениеПриход(Покупатель,КупленныйТовар,СуммаПокупки)

    Методы ДвижениеПриходВыполнить и ДвижениеРасходВыполнить
    Пример:

    Регистр.Доходы.Клиент = Покупатель;
    Регистр.Доходы.Товар = КупленныйТовар;
    Регистр.Доходы.Доход = СуммаПокупки;
    Регистр.Доходы.ДвижениеПриходВыполнить();

    Запись движений в оборотный регистр
    (только при проведении документа)

    1. Метод Движение

    Пример: Регистр.Товары.Движение (ПоступившийТовар, ТекСклад, КолвоПоНакладной, СуммаПоНакладной)

    2. Метод ДвижениеВыполнить
    Пример:
    Регистр.Товары.Товар = ПоступившийТовар;
    Регистр.Товары.Склад = ТекСклад;
    Регистр.Товары.Количество = КолвоПоНакладной;
    Регистр.Товары.Стоимость = СуммаПоНакладной;
    Регистр.Товары.ДвижениеВыполнить();

    Примечание: Если сумма или количество в движении будет отрицательным, то это движение будет расходом, иначе приходом.

    Обращение к итогам регистра

    1-й способ.
    РегТовары = СоздатьОбъект("Регистр.Товары");
    РегТовары. ВыбратьИтоги();
    Пока РегТовары.ПолучитьИтог()=1 Цикл
    . Сообщить("Товар " + Строка(РегТовары.Товар) +
    . " на складе " + Строка(РегТовары.Склад) +
    . " кол-во: " + Строка(РегТовары.Количество) +
    . " стоимость: " + Строка(РегТовары.Стоимость) +
    КонецЦикла;

    2-й способ. Выгрузка итогов в таблицу значений

    РегДоходы = СоздатьОбъект("Регистр.Доходы");
    ТабЗнач = СоздатьОбъект("ТаблицаЗначений");

    РегДоходы.ВыгрузитьИтоги(ТабЗнач);

    ТабЗнач.ВыбратьСтроки();
    Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
    . Сообщить("Товар " + Строка(ТабЗнач.Товар) +
    . " на складе " + Строка(ТабЗнач.Склад) +
    . " кол-во: " + Строка(ТабЗнач.Количество) +
    . " стоимость: " + Строка(ТабЗнач.Стоимость) +
    КонецЦикла;

    Обращение к итогам оборотного регистра

    РегДоходы = СоздатьОбъект("Регистр.Доходы");
    //установить период выборки "30 ноября 2001 года"
    РегДоходы.ИспользоватьПериод(2001,11,30);

    1. Метод Итог

    Пример:
    //получить доход за день по данному клиенту и данному товару
    Доход = РегДоходы.Итог(ТекКлиент, ТекТовар, "Доход");

    2. Метод Итоги
    Пример:
    //получить доход за день по данному клиенту и данному товару
    РегДоходы.Итоги(ТекКлиент, ТекТовар);
    Доход = РегДоходы.Доход;

    3. Метод СводныйИтог

    Могут быть указаны не все измерения. Фиксируются только указанные измерения.

    Пример:
    //получить сводные итоги за день
    ДоходПоКлиенту = РегДоходы.СводныйИтог(ТекКлиент,,"Доход");
    ДоходПоТовару = РегДоходы.СводныйИтог(,ТекТовар,"Доход");

    4. Метод СводныеИтоги

    Могут быть указаны не все измерения. Фиксируются только указанные измерения.

    Пример:
    //получить сводные итоги за день по клиенту
    РегДоходы.СводныеИтоги(ТекКлиент,); //указано только одно измерение
    ДоходПоКлиенту = РегДоходы.Доход;

    //получить сводные итоги за день по товару
    РегДоходы.СводныеИтоги(,ТекТовар); //указано только одно измерение
    ДоходПоТовару = РегДоходы.Доход;

    Обращение к итогам регистра остатков

    Пример:
    //получить остаток данного товара на данном складе
    Колво = РегТовары.Остаток (ТекТовар, ТекСклад, "Количество");

    //получить стоимость данного товара на данном складе
    Стоимость = РегТовары.Остаток (ТекТовар, ТекСклад, "Стоимость");

    2. Метод Остатки

    Пример:
    //получить остаток данного товара на данном складе по кол-ву и по сумме
    РегТовары.Остатки (ТекТовар, ТекСклад);
    Колво = РегТовары.Количество;
    Стоимость = РегТовары.Стоимость;

    3. Метод СводныйОстаток

    Могут быть указаны не все измерения. Фиксируются только указанные измерения.

    Пример:
    //получить остаток данного товара на всех складах
    КолвоТовара = РегТовары.СводныйОстаток (ТекТовар,,"Количество");
    СтоимостьТовара = РегТовары.СводныйОстаток (ТекТовар,,"Стоимость");

    //получить стоимость всех товаров на данном складе
    СтоимостьПоСкладу = РегТовары.СводныйОстаток (,ТекСклад,"Стоимость");

    4. Метод СводныеОстатки
    Пример:
    //получить сводные остатки по товару
    РегТовары.СводныеОстатки(ТекТовар,); //указано только одно измерение
    КолвоТовара = РегТовары.Количество;
    СтоимостьТовара = РегТовары.Стоимость;

    //получить стоимость всех товаров на данном складе
    РегТовары.СводныеИтоги(,ТекСклад); //указано только одно измерение
    СтоимостьПоСкладу = РегТовары.Стоимость;

    Обращение к движениям регистра

    РегТовары.ВыбратьДвижения(ДатаНач, ДатаКон);
    Пока РегТовары.ПолучитьДвижение()=1 Цикл
    . Сообщить("Дата движения " + Строка(РегТовары.ТекущийДокумент.ДатаДок));
    . Сообщить("Клиент: " + РегТовары.Клиент);
    . Сообщить("Товар: " + РегТовары.Товар);
    . Сообщить("Сумма: " + РегТовары.Доход);
    КонецЦикла;

    Фильтрация движений и итогов

    1. Метод УстановитьФильтр

    Пример:
    //выбрать все движения по данному складу за период
    РегТовары.УстановитьФильтр(,ТекСклад);
    РегТовары.ВыбратьДвижения(ДатаНач, ДатаКон);
    Пока РегТовары.ПолучитьДвижение()=1 Цикл
    .
    КонецЦикла;

    //выбрать все товары на данном складе
    РегТовары.УстановитьФильтр(,ТекСклад);
    РегТовары.ВыбратьИтоги();
    Пока РегТовары.ПолучитьИтог()=1 Цикл
    .
    КонецЦикла;

    2. Метод УстановитьЗначениеФильтра

    Пример:
    //выбрать все движения по данному складу за период
    РегТовары.УстановитьЗначениеФильтра("Склад", ТекСклад);

    //далее идет выборка движений или итогов

    3. Метод ВыбратьДвиженияДокумента

    4. Метод ВыбратьДвиженияСОстатками
    Применяется только для регистра остатков.

    Временный расчет регистров

    Временный расчет регистров требуется, если нужно выбрать итоги или движения на определенную дату. По умолчанию итоги регистров выдаются на Точку актуальности.

    РегТовары = СоздатьОбъект("Регистр.Товары");
    РегДоходы = СоздатьОбъект("Регистр.Доходы");

    //установка флага временного расчета для регистров
    РегТовары.ВременныйРасчет(1);
    РегДоходы.ВременныйРасчет(1);

    1. Метод РассчитатьРегистрыНа
    Рассчитать все регистры с установленным флагом временного расчета на начало события.
    (на начало даты или на момент до проведения документа)

    2. Метод РассчитатьРегистрыПо
    Рассчитать все регистры с установленным флагом временного расчета на конец события.
    (на конец даты или на момент после проведения документа)

    Запрос к регистру
    В запросах к регистрам применяются функции НачОст, КонОст, Приход, Расход. В запросах к оборотным регистрам обязательно указывается Период.

    ТекстЗапроса = "
    |Период С ДатаНач По ДатаКон;
    |Товар = Регистр.Доходы.Товар;
    |Клиент = Регистр.Доходы.Клиент;
    |Доход = Регистр.Доходы.Доход;
    |Условие (Товар = ТекТовар);
    |Группировка Клиент;
    |Функция ПриходПоКлиенту = Приход(Доход);
    |";

    admin

    Добавить комментарий

    Ваш e-mail не будет опубликован. Обязательные поля помечены *