Регистр накопления остатки на складе

Регистр накопления остатки на складе

Наша система позволяет отражать покупку и продажу товаров, однако для управления этого недостаточно. Когда менеджер по продажам обрабатывает заказ покупателя, он должен видеть что у него есть на складе. А менеджер по закупкам должен видеть, что необходимо заказать у поставщиков.

Поэтому нам необходимо автоматизировать учет товаров.

Усложним задачу. "Как оказалось" у нашей фирмы несколько складов.

1) Добавляем не иерархический справочник "МестаХранения" в подсистему "Предприятие"

2) В документах "ПриходнаяНакладная" и "РасходнаяНакладная" добавляем реквизит "Склад", тип "СправочникСсылка.МестаХранения".

3) В форме документов перетаскиваем реквизит "Склад" в элементы формы

4) Добавляем регистр накопления "ОстаткиТоваров", в подсистемы "Закупки" и "Продажи", вид регистра "Остатки" не изменяем.

5) На закладке "Данные" определяем структуру регистра.

"Склад" – (тип СправочникСсылка.МестаХранения);

"Номенклатура" – (тип СправочникСсылка. Номенклатура);

"Количество" – (тип "Число", длина 14, точность 3).

6) Указываем регистраторы "ПриходнаяНакладная" и "РасходнаяНакладная".

7) В документе "ПриходнаяНакладная" запускаем конструктор движений.

Указываем тип движения регистратора "Приход", табличная часть "товарыИУслуги" и нажимаем кнопку "Заполнить выражение"

Так как в табличной части "ТоварыИУслуги" могут быть и услуги, добавляем условие проверки на вид номенклатуры, благодаря чему услуги не попадут на склад.

8) В документе "РасходнаяНакладная" запускаем, конструктор движения, указываем тип движения регистратора "Расход", дальше тоже самое что и в приходной.

9) Запускаем 1С:Предприятие, заполняем в документах склад и перепроводим документы. Через главное меню открываем все функции и находим регистр накопления "ОстаткиТоваров".

Отчет ведомость по товарам.

Отчет " Ведомость по товарам" должен обеспечить получение детальной информации о движении товаров по складам и показать текущие остатки.

1) Добавляем отчет "ВедомостьПоТоварам" в подсистемы "Закупки" и "Продажи"

2) Открываем схему компоновки данных

3) Запускаем конструктор запросов

4) В конструкторе запросов:

— в разделе "База данных" находим виртуальную таблицу "ОстаткиИОбороты" регистра накопления "ОстаткиТоваров";

— перетаскиваем ее в раздел "Таблицы";

— в параметре виртуальной таблицы "Периодичность", выбираем значение "Авто";

— выбираем необходимые поля таблицы.

5) На закладке "Объединения/Псевдонимы" корректируем имена полей.

Нажимаем кнопку "Ок"

8) При помощи конструктора мы сформировали текст запроса, в котором описали из какой таблицы, какие поля берем. В результате выполнения запроса полученная таблица выбранных данных попадает в СКД.

9) На закладке ресурсы выбираем поля, которые СКД будет суммировать по группировкам.

10) На закладке "Настройки" запускаем, конструктор компоновки данных и выбираем тип отчета "Таблица"

11) Далее> выбираем поля, которые будут отражаться в отчете.

12) Далее> Выбираем поля "Склад" и "Номенклатура" для группировки таблицы отчета. Нажимаем "Ок"

13) Сохранив конфигурацию, запустив 1С, в разделе "Закупки" или "Продажи" запускаем отчет "Ведомость по товарам" и анализируем полученную информацию.

Управление взаиморасчетами с контрагентами

Постановка задачи

Усложним задачу. Руководство нашей фирмы хочет по средству программы контролировать поступление денежных средств от покупателей, и расход денежных средств поставщикам.

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

Анализ задачи

Для решения этой задачи необходимо ответить на следующие вопросы:

1) Где хранятся денежные средства на предприятии?

2) Какие события изменяют наличие денежных средств на предприятии?

3) Как эти события отразит в прикладном решении?

4) При помощи чего можно накопить данные о наличии денежных средств?

5) Что такое взаиморасчеты с контрагентами?

6) Какие события и как влияют на взаиморасчеты с контрагентами?

7) При помощи чего можно накопить данные о взаиморасчетах с контрагентами?

Решение задачи

1) Наличные денежные средства хранятся в кассе предприятия, безналичные на банковском счету.

В нашем прикладном решении денежные средства будут храниться в кассах предприятия, поэтому нам нужен справочник "Кассы".

2) Наличие денежных средств на предприятии увеличивается, когда мы получаем деньги от покупателей, и уменьшается, когда выплачиваем деньги поставщикам.

3) Для отражения поступления денежных средств создадим документ "Приходный кассовый ордер" (ПКО), а для отражения выплаты "Расходный кассовый ордер" (РКО).

4) Для накопления данных о движении и наличие денежных средств создадим регистр накопления "ДенежныеСредства".

В документах ПКО и РКО, в процедуре " ОбработкаПроведения" опишем алгоритм добавления записей документов в накопления "ДенежныеСредства".

Для получения информации о наличии денежных средств создадим отчет "ВедомостьПоДенежнымСредствам".

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

Читайте также:  Что лучше варкрафт или старкрафт

6) В нашем прикладном решении всего четыре операции, определим как они влияют на состояние задолженности контрагента:

Операция Долг контрагента*
ПриходнаяНакладная
РасходнаяНакладная
ПКО
РКО

* Долг контрагента>0 когда он должен нам!

7) Для накопления данных о состоянии взаиморасчетов создадим регистр накопления " Взаиморасчеты".

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

Для получить информации о состоянии взаиморасчетов создадим отчет "ВедомостьПоВзаиморасчетам".

Реализация задачи

Самостоятельно реализуйте решение задачи в информационной базе

Задача любой учетной системы — хранение и оперативное отображение информации для пользователя, т.е. цель проектирования любой системы — оперативно предоставить пользователю отчет. С помощью полученных данных, как правило, принимаются управленческие решения на предприятиях.

Предположим, что у нас есть 1000 разных документов: поступление товаров, списание, возврат, продажа и т.д. И каждый из документов изменяет количество определенного товара на складе. Чтобы получить информацию о текущем количестве на складе, необходимо перебрать все документы: какие-то увеличивают количество товара, какие-то уменьшают, какие-то могут и увеличивать, и уменьшать. А если необходимо учитывать еще и склад, организацию. Такая система очень ресурсоёмкая.

Для упрощения данного процесса разработчики 1С придумали особые объекты конфигурации. Используются они для удобства хранения и получения информации, в 1С 8.3 и 8.2 используются всевозможные регистры, в данной статье речь пойдет именно про Регистры накопления.

Что же такое регистр накопления в 1С 8?

Сам регистр накопления представляет собой таблицу с информацией, в которой собраны все движения (поступления/списания или обороты) определенных документов. Рассмотрим, как выглядит таблица движения, на примере типового регистра накопления «Товары на складах» в конфигурации «Управление торговлей 10.3»:

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

Регистр накопления в конфигураторе

Что же такое регистр накопления с точки зрения разработки конфигурации? Начнем, пожалуй, с рассмотрения полей регистра накопления в конфигураторе:

Получите 267 видеоуроков по 1С бесплатно:

У регистра накопления есть Измерения, Ресурсы, Реквизиты и Стандартные реквизиты.

Рассмотрим сначала стандартные реквизиты регистра накопления:

  • период — дата движения, не обязательно должна совпадать с датой документа;
  • регистратор — документ, который производит запись в регистре;
  • номер строки — порядковый номер строки в наборе записи, уникален в пределах регистратора;
  • активность — отвечает за попадание записи в виртуальные таблицы (о них ниже);
  • виддвижения — приход или расход.

Измерения регистра накопления

Измерение — это разрез, в котором ведется учёт. На вышеприведенном примере разрезом учета являются: склад, номенклатура, характеристика номенклатуры, серия номенклатуры, качество. Т.е задав интересующие нас измерения, мы можем в любой момент получить количество — ресурс. В разрезе разных измерений в дальнейшем, например, можно получать остатки на определенную дату.

Ресурс регистра накопления

Ресурс — это числовое поле, в котором хранится информация в разрезе измерений, о которых писали выше.

Иначе взаимодействия измерений/ресурсов можно схематично изобразить как систему координат:

Два измерения — абсцисса и ордината системы координат, т.е. на данном примере измерения это склад и номенклатура. На пересечении измерений мы можем получить количество — ресурс. Например, на «основном» складе товара «карандаш» в наличии 1 штука.

Реквизиты регистра накопления 1C

Реквизиты регистры накопления несут в себе роль «комментария» или дополнительной информации, в разрезе измерений нельзя получить остатки/обороты. Используются достаточно редко.

Виды регистра накопления

Существует два вида регистра накопления — обороты и остатки.

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

Если же среди целей использования регистра накопления — получение остатков на определенный период, нам необходим регистр с видом остатки. Такой тип позволяет получать как остатки, так и обороты. Для такого регистра система автоматически рассчитывает остатки. Пример «остаточного» регистра — товары на складах, деньги в кассе.

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

Читайте также:  Как слить слои в фотошопе горячие клавиши

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

Для регистра накопления это:

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

Правильное проектирование регистров накопления

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

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

Индексация измерений регистра накопления

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

Например, регистр «ТоварыНаСкладах», измерения — «Склад, Номенклатура», ресурс — «Количество».

Правильнее проиндексировать «Номенклатуру», а поле»Склад» индексировать не стоит, потому как количество складов в системе, как правило, не существенное.

Другие статьи по 1С:

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

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

О регистрах накопления

В нескольких статьях представлены основные сведения о внутреннем устройстве регистров накопления, о SQL-запросах платформы при работе с ними и их изменение в зависимости от настроек регистра. Подробно описана работа платформы с разными типами регистров (остатков и накопления), а также принцип действия агрегатов.

Материалы созданы во времена платформы 8.2, поэтому некоторые моменты могут быть уже не актуальными, но основные принципы работы остались неизменными.

Давным давно мной был создан блог DevelPlatform, в котором были статьи по разработке на платформе 1С, администрированию, онлайн-инструменты, а также немного о платформе .NET.

Больше года назад сайт был закрыт. Некоторые из его материалов будут реанимированы на Инфостарт.

Конкретно в этой статье речь идет о виртуальных таблицах "Остатки" и "Остатки и обороты" регистров накопления в базе данных. Все примеры из публикации Вы можете найти на GitHub.

Предисловие

В предыдущих статьях мы говорили о структуре хранения регистров накопления в базе данных, а также о работе платформы с виртуальной таблицей "Обороты" этих регистров в зависимости от настроек хранения итогов. Все эксперименты проводились на тестовой конфигурации, содержащей два регистра накопления видов "Остатки" и "Обороты" (подробнее см. в предыдущих статьях).

Сегодня в статье рассмотрим действия платформы при работе с виртуальными таблицами "Остатки" и "Остатки и обороты" регистра накопления с видом "Остатки".

Общие сведения

Регистр накопления с видом "Остатки" позволяет разработчику использовать дополнительно к виртуальной таблице "Обороты" регистра еще и таблицу "Остатки".

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

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

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

Теперь рассмотрим формируемые платформой SQL-запросы к базе данных для получения остатков через названную виртуальную таблицу. Проанализируем изменение запроса для включенных/отключенных текущих итогов.

За кулисами

Выполним в нашей тестовой базе следующий запрос на языке платформы:

Для регистра "ОстаткиНоменклатуры" установим дату рассчитанных итогов на конец февраля (28.02.2013). Первый запрос выполним с включенными текущими итогами регистра накопления.

Первым делом платформа обратится к настройкам регистра накопления. Этот запрос был рассмотрен в предыдущей статье. Перейдем непосредственно к SQL-запросу платформы при использовании виртуальной таблицы "Остатки".

Получим следующий SQL-запрос платформы:

Обратите внимание на параметр "Период", переданный в виртуальную таблицу. Напомню, в нашем случае включены текущие итоги. Поскольку граница рассчитанных итогов регистра установлена на 28.02.2013, платформа не может получить итоги по остаткам на предыдущий месяц, а использовать последние рассчитанные итоги на конец февраля 2013 года и затем корректировать остаток в соответствии с движениями за последующие 3 месяца было бы не оптимально.

Читайте также:  Не подключаются колонки к ноутбуку windows 10

Поэтому программа получает текущие остатки (остатки на текущую дату, которые хранятся с периодом 01.11.5999 00:00:00) и корректирует их в соответствии с движениями в период с значения параметра "Период" вирт. таблицы и по дату текущий остатков. Если мы отключим текущие итоги, то тот же запрос на языке платформы будет преобразован в следующий SQL-запрос, имеющий незначительные изменения:

То есть, если параметр "Период" виртуальной таблицы больше периода последних рассчитанных итогов, то тогда платформа получает текущие остатки и корректирует их по движениям в диапазоне с [ПараметрПериодВиртуальнойТаблицы] по [ПериодТекущихИтогов]. В случае, если для регистра отключены текущие итоги, то платформа получает последние рассчитанные итоги и корректирует их по движениям с периода этих итогов по период, установленный в параметрах виртуальной таблицы.

Прежде чем перейти к выводам, отмечу, что во всех вариантах SQL-запроса при наложении условия на период получаемых движений, условие верхней границы диапазона всегда представляет собой:

т.е. условие всегда "МЕНЬШЕ". Если период движения равен дате, установленной в верхнем диапазоне, то эти движения не будут учитываться при получении остатков. Вот она та самая особенность виртуальной таблицы остатков, из-за которой не учитывается последняя секунда в параметрах виртуальной таблицы.

Делаем выводы

Подведем небольшой итог. На следующей схеме представлены действия платформы для получения остатков при различных настройках регистра накопления и параметра периода виртуальной таблицы "Остатки".

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

Некоторые действия платформа могла бы выполнять более оптимально. Например, при использовании текущих остатков для регистра выбирать получать ли текущие остатки или последние рассчитанные итоги по периоду виртуальной таблицы. Выбор бы осуществлялся по принципу "что ближе".

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

Все эксперименты проводил на платформе 1С:Предприятие 8.2.17.169.

Далее рассмотрим самую "тяжелую" виртуальную таблицу регистров накопления "ОстаткиИОбороты".

"Тяжелая" таблица

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

Выполним следующий запрос на языке запросов платформы:

Параметрам запроса присвоим следующие значения:

Такие параметры как "Периодичность" и "МетодДополнения" мы оставили без заполнения. Сначала платформа выполнить запрос для получения настроек регистра накопления. Его мы подробно рассмотрели в статье по виртуальной таблице "Обороты", поэтому сейчас останавливаться на нем не будем.

При таких настройках платформа сформирует следующий SQL-запрос для рассматриваемой виртуальной таблицы:

Прокомментировал основные моменты в запросе. Общая схема работы запроса такая:

  1. Получаем обороты регистра по таблице движений за установленный период.
  2. Получаем остатки на значение даты параметра "Начало периода".
  3. Объединяем предыдущие два результата, при этом поле "НачальныйОстаток" — это остаток по данным таблицы остатков, а "КонечныйОстаток" вычисляется как : "НачальныйОстаток" + "Оборот"
  4. Полученные данные группируются по выбранным в запросе измерениям и проверяются на наличие хотя бы одного заполненного ресурса (не равного 0).

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

Сам SQL-запрос может изменяться в зависимости от значений параметров виртуальной таблицы. Например, если мы добавим периодичность, то в запрос будет добавлено дополнительное поле "Период", по которому результат будет группироваться. При установке параметра "МетодДополнения" в запрос будут попадать границы периода, если установлено значение "ДвиженияИГраницыПериода" (именно с таким значением параметра мы анализировали SQL-запрос), иначе в результате запроса будут только движения.

Что дальше

В этой и предыдущих статьях мы рассмотрели SQL-запросы платформы при работе с виртуальными таблицами регистров накопления. Представленная информация должна помочь в выборе виртуальных таблиц при разработке, а также в написании оптимальных запросов к базе данных на языке платформы.

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

Ссылка на основную публикацию
Работа с far manager
Фар менеджер - один из самых удобных файловых менеджеров, рассчитанный на работу с файлами и папками на дисках, прежде всего,...
Программы для поиска транспорта
Грузы Широкие возможности фильтров позволяют найти точно подходящую для вашего транспорта загрузку. Несколько тысяч свежих предложений. Каждый сможет найти себе...
Программы для полной очистки жесткого диска
Подборка программ, которые помогут очистить жёсткий диск Windows компьютера и его съёмные устройства от ненужных файлов. Эти инструменты помогут найти...
Работа с классами python
Серия контента: Этот контент является частью # из серии # статей: Этот контент является частью серии: Следите за выходом новых...
Adblock detector