67 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Партионный учет 1С для программистов

Пример решения задачи 1С Специалист по платформе — Оперативный учет

Ниже я приведу пример решения типовой задачи для аттестационного билета «1С Специалист по платформе».

Условие задачи: оперативный учет

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

Складской учет товаров не ведется.

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

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

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

Необходимо построить отчет но продажам товаров за период и остаткам товара на указанную дату.

Продажи с 01.01.2010 по 31.03.2010

Прибыль рассчитывается как:

«Сумма продаж» — «Себестоимость» Остатки товаров па 01.01.2010

Решение задачи оперативного учета 1С Специалист 8

Структура хранения данных

Первая задача — определиться со структурой хранения данных.

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

Для хранения данных об остатках будем использовать регистр накопления «ОстаткиНоменклатуры» (тип — «Остатки»): измерения (разрезы) хранения у которого — «Номенклатура» и «Партия» (документ, которым был оприходован товар). В разрезе партий будет рассчитываться себестоимость товара.

Для хранения информации о продажах нам потребуется регистр накопления «Продажи» (тип — «Обороты»). Измерение одно — «Номенклатура». Ресурса три — «Количество», «Сумма», «Себестоимость». Решение хранить в регистре продаж «Себестоимость» достаточно спорное. В принципе, в вышеуказанном отчете можно было соединять два регистра для получения информации. Однако я считаю, что скорость и простота получения информации должны оцениваться выше, чем место на диске.

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

Для хранения настройки будем использовать регистр сведений «МетодСписанияТоваров» с периодичностью — один день. На закладке Данные укажем только ресурс — МетодСписания, а измерением будет период установки настройки. Для установки значения регистра сведений используем документ «УстановкаМетодаСписания», у которого укажем единственный реквизит — МетодСписания. В обработке проведения укажем следующий код:

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

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

Для решения данной задачи нам понадобится два документ — приходная накладная и расходная накладные. Рассмотрим их подробнее:

Приходная накладная

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

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

Расходная накладная

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

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

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

В качестве источника данных у нас будет использоваться табличная часть документа «СписокНоменклатуры».

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

После определения метода списания определяем количество товара для списания и формируем движения:

Тут необходимо отметить следующие моменты:

  1. В зависимости от метода списания мы меняем текст запроса с помощью следующей конструкции: Запрос.Текст = СтрЗаменить(Запрос.Текст, «ВОЗР», «УБЫВ»).
  2. Не забудьте проиндексировать поля временной таблицы, по которой будете соединять таблицы (ИНДЕКСИРОВАТЬ ПО Номенклатура).
  3. Не забудьте проверять значения в запросах на NULL с помощью конструкции ЕСТЬNULL. NULL может возникнуть при соединении с другими таблицами при отсутствии значения в присоединяемой таблице.
  4. Решение проблемы копеек: если количество списываемого товара по данной партии равно остатку под данной партии, то списать всю сумму. Это позволит избавиться от остатка от деления. В нашем примере: СуммаСписания = ?(ВыборкаНоменклатура.КоличествоОстаток = КСписанию, ВыборкаНоменклатура.СуммаОстаток, ВыборкаНоменклатура.СуммаОстаток/ВыборкаНоменклатура.КоличествоОстаток * КСписанию).
  5. Если не хватает какой-либо номенклатуры, мы устанавливаем параметр «Отказ» в значение «Истина», однако продолжаем движения по строкам документа, чтобы вывести все сообщения о нехватке товара.
  6. Количество товара проверяется только для товара, без учета услуг.
  7. В цикле мы списываем до тех пор, пока не погасили потребность из документа (ОсталосьСписать <> 0).
  8. Если списание производится «по средней», то НЕ указываем документ партии.
  9. Если списание производится «по средней», сумму необходимо брать из итоговой строки группировки.
Читать еще:  Материальная помощь в связи со смертью близкого родственника 2019 - 2020

Отчеты

С данной структурой регистров отчеты получаются элементарные:

Скачать решение задачи оперативного учета 1С специалист по платформе

Скачать вышеописанное решение Вы можете по ссылке.

Я буду рад Вашей критике, вопросам и замечаниям в комментариях, спасибо!

Удачи при подготовке!

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

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

Оперативный учет. Задача №1

Первая задача раздела «Оперативный учет»

Для начала, давайте выделим основные моменты из условий задачи:

  • Используется 2 документа (Приходная накладная, Расходная накладная)
  • Компания продает И товары И услуги. И товар и услуга находятся в одной табличной части
  • Аналитика по складам не требуется
  • Необходим контроль количества при продаже товаров
  • Применяется партионный учет (ФИФО или ЛИФО)
  • Учетная политики действует в пределах ГОДА
  • Плюс необходимо реализовать два отчета (Продажи, Остатки товаров)

Готовый пример решения

Справочник «Номенклатура»

Учетная политика

В задаче ПОДЧЕРКИВАЕТСЯ! Учетная политика действует в пределах года. Значит нам нужен регистр сведений, с периодичностью «В пределах года». Структура регистра довольно простая, это один ресурс «МетодСписания» с типом «ПеречислениеСсылка.УчетнаяПолитика»

Регистр накопления «ОстаткиНоменклатуры»

Документ «Приходная накладная»

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

Вот так выглядит результат работы конструктора движений Но можно (так будет лучше, выше производительность) сделать по-другому. Получить все поля в запросе, и загрузить готовый результат в движения. Например вот так: И последний штрих! Будем заполнять реквизит «СуммаПоДокументу» перед записью. Для этого в модуле объекта используем процедуру «ПередЗаписью»

Документ «Расходная накладная»

Теперь самое интересное! Читаем задачу 1.1, и отмечаем основные моменты которые необходимо учитывать при проведении документа «Расходная накладная»:

  • Учитывать порядок списания себестоимости товаров, указанный в учетной политике (ФИФО или ЛИФО)
  • При проведении расходной накладной, необходимо контролировать остатки товаров
  • В случае нехватки товаров, выводить предупреждение, и не проводить документ
  • В табличной части могут быть как товары так И услуги, но нас интересуют только ТОВАРЫ и остатки по ним

Теперь давайте по-порядку! Открываем модуль объекта документа «Расходная накладная», и работаем с процедурой «ОбработкаПроведения».
Первое что определим, это порядок списания себестоимости! Далее напишем запрос для получения товаров из табличной части, и остатков по партиям товаров Немного поясним что здесь происходит. Итак:

  1. Первое что нужно сделать, это поместить выборку товаров из табличной части во временную таблицу. Это нужно для того чтобы во-первых оставить там только товары, во-вторых получить общее количество по каждому товару (т.к. один и тот же товар может быть в двух и более строках табличной части, тогда при левом соединении с таблицей остатков мы получим ошибочные данные по остаткам
  2. К выборке товаров, получаем остатки из виртуальной таблицы «Остатки» регистра накопления «ОстаткиНоменклатуры»
  3. В параметрах виртуальной таблицы указываем период, а также ограничиваем номенклатуру по которой нужно остатки получить
  4. Упорядочиваем выборку по дате партии
  5. И делаем итоги по номенклатуре. Т.е. при обходе сразу будет видно, достаточное ли количество на остатках
Читать еще:  Почему доллар стал мировой валютой и когда

Теперь делаем обход результата выборки, и формируем движения по регистру, либо не формируем и ставим флаг отказа
Запустив конфигурацию в режиме «Предприятие», и создав документ «Расходная накладная» с необходимым количеством, можно убедиться что написанный алгоритм работает


Так же, рекомендуем посмотреть решение задачи 5.1 (Просмотр движений документа «Расходная накладная», для контроля правильности)

Система упрощения партионного учета для 1С 8.1

Материал предоставлен компанияей ИТЦ «Мотива»

Что упрощать?

Партионный учет, пожалуй, самая сложная подсистема любой конфигурации 1С.

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

Но это ещё полбеды. Дальше могут возникать ситуации, когда товар не распределился по партиям. Причины этого могут быть различными: непоследовательное занесение поступления партий и их списание, пересорт товара, просто отсутствие партий и т.д. Но результат этого всегда один и тот же — невозможность определить себестоимость списанного товара и, следовательно, некорректная информация по валовой прибыли, затратам и т.п. Следовательно, такие ситуации необходимо отслеживать и своевременно корректировать. Первая же проблема на пути корректировки: информация по не распределенным товарам выдаётся только непосредственно при перепроведении документов! Даже при однопользовательской работе на процесс сбора такой информации без жалости смотреть невозможно. Что уж говорить о многопользовательском варианте. Процесс же корректировки ситуаций нераспределения по партиям — вообще творческая и кропотливая работа!

И, наконец, актуальность полученных данных. Да, да! Корректировкой дело не заканчивается. Работа с документами «задним числом» (корректировка, добавление, изменение, удаление) приводит к неактуальности текущего распределения партий товаров. Например, себестоимость уже списанной партии может просто изменится, либо появится новая партия, а то и, вообще, списанная партия может быть удалена. В любом случае, данные о списанной себестоимости товара уже не будут отвечать выбранному методу распределения (FIFO, LIFO, По-среднему) и снова будут вводить в заблуждение менеджеров, изучающих отчеты, устанавливающих цены, закупающих товар. Во избежание такого развития событий предусмотрен механизм восстановления последовательности партий товаров. Но, как правило, работа с ним не отличается удобством: требуется монопольный режим, невозможно прервать восстановление, любое перепроведение документа (даже без внесения изменений) расценивается как нарушение последовательности и т.д.

Как упрощать?

Компания ИТЦ «Мотива» предлагает систему, позволяющую значительно упростить работу с партионным учетом в Вашей конфигурации! Упрощение идет по таким направлениям, как поиск не распределенных, корректировка не распределенных, восстановление последовательности.

Система состоит из модулей:

* Быстрое восстановление последовательности партий товаров.

* Отчет по товарам, не распределенным по партиям.

* Автокорректировка ситуаций нераспределения.

* Корректировка методом буфера.

Указанные модули позволяют забыть о проблемах партионного учета и переводят работу с базой данных на качественно новый уровень. Актуальность последовательности восстанавливается незаметно в реальном времени или раз в день, отнимая 5-15 минут. Информация по товарам, нераспределенным по партиям появляется за секунду нажатием кнопки. Рутинные работы по корректировке не распределения автоматизированы.

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

Быстрое восстановление последовательности партий товаров.

Данные о списанных партиях критичны к правильной последовательности проведения документов – они только тогда отражают действительное положение вещей, когда документы проводятся последовательно!

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

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

Стандартная обработка в случае нарушения последовательности будет перепроводить ВСЕ документы последовательности, начиная с даты нарушения. Данная процедура может занять достаточно длительное время в зависимости от объёма базы и даты нарушения (зачастую, не успевает выполнится за ночь). Она будет восстанавливать последовательность даже тогда, когда актуальность восстановления попросту отсутствует (просто перепровели документ, не изменяя его товарной составляющей). К тому же, нет необходимости перепроводить все документы — ведь важно восстановление партий только по определенным товарам.

Читать еще:  Что такое волатильность простыми словами

Система оптимизированного (ускоренного) восстановления, которую предлагает компания ИТЦ «Мотива», выполняя ту же задачу, что и стандартная, позволяет восстановить последовательность на порядок быстрее, поскольку:

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

· Перепроводит только документы, содержащие товары, по которым последовательность была нарушена.

· При перепроведении тратит время только для восстановления партионного учета – остальные алгоритмы проведения нет нужды задействовать. Не перепроводит документы образования партий («Поступление», «Оприходование» и пр.) по аналогичным соображениям.

· Не требует монопольного режима(отсутствия других пользователей в базе). Для восстановления даже не требуется, чтобы перепроводимый документ был закрыт пользователем!

· Позволяет прерывать выполнение восстановления и продолжать дальше в более удобное время.

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

Резюмируя, эта система оптимизирует восстановление путем введения детального анализа на стадии нарушения последовательности. Основное преимущество — уникальный алгоритм, отслеживающий, было ли нарушение последовательности при перепроведении документа. В сочетании с остальными методами оптимизации разработка позволяет для восстановлении последовательности перепроводить в среднем на 85-95% меньше документов! Другими словами, не перепроводятся те документы, которые после этого заведомо не изменят свои движения по партиям.

Компания ИТЦ «Мотива» предлагает Систему упрощения партионного учета (далее СУПУ), которая наилучшим образом выполнит задачи восстановления любых последовательностей документов!

Отчет по товарам, не распределенным по партиям.

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

Вероятно Вы задавались вопросом, как быстро посмотреть эти сообщения без перепроведения документов?

Вот и ответ: для того, чтобы в любой момент за считанные секунды увидеть все ситуации не распределения (документ, товар, недостающее количество) служит данный отчет. Теперь проверка списания товаров по партиям станет удобным и увлекательным занятием! Удивительно, но отчёт способен работать с любыми периодами документов сразу после установки. Так что если Вам предстоит битва с запущенной последовательностью за последние N лет — Система упрощения партионного учета Вам окажет неоценимую помощь!

Автокорректировка ситуаций нераспределения.

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

Корректировка методом буфера.

Иногда, чтобы не разбираться в прошлых периодах с распределением партий, проще оприходовать определенное количество товара до момента возникновения ошибок нераспределения, чтобы списать его позже, когда череда ошибок пройдёт. Определением оптимальных параметров такой операции с попутным созданием документов Оприходования / Списания и занимается этот модуль.

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

Сомневаетесь в безопасности и эффективности работы СУПУ? Данный продукт начиная с 2006 года и 1с версии 8.0 успешно работает в промышленной эксплуатации на многих предприятиях самого различного профиля. За всё это время мы не получили нареканий относительно его функционала — только пожелания по улучшению сервисных механизмов, которые реализовываем в новых версиях. К тому же СУПУ не меняет данные, он просто перепроводит документы, используя их стандартный алгоритм проведения. И в отличие от типовых аналогов, далеко не все, а только необходимые. Система упрощения партионного учета — абсолютно безопасный и эффективный помощник!

* Система встраивается в конфигурации на базе типовых 1С 8.1 «Управление торговлей», «Управление производственным предприятием». О возможности использования в других конфигурациях или для восстановления других последовательностей документов уточняйте.

* Продукт устанавливается «сбоку» и не требует внесения изменений в типовой код конфигурации. Т.е. обновление новыми версиями типовых конфигураций происходит как обычно. Установка занимает 10 минут.

Ссылка на основную публикацию
Adblock
detector