1c учет номенклатуры в различных единицах измерения

Учет товара в нескольких единицах измерения

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

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

Вариант с использованием упаковок

product705 1

Кнопкой Создать добавляем новый набор, вводим:

Нажимаем Записать и переходим по ссылке Упаковки.

product705 2

product705 3

product705 4

Записываем и закрываем номенклатурную позицию.

product705 5

product705 6

product705 7

В отчете видим, что в наличии на складе все поступившие 70 кг товара.

product705 8

product705 9

В отчете видим количество болтов в штуках с учетом наших настроек упаковки.

product705 10

product705 11

product705 12 product705 13

product705 14 product705 15

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

product705 16

Кнопкой Создать добавляем новую упаковку. Так как 1 болт весит 0,01 кг, тогда 200 шт будет весить 2 кг, указываем это в форме упаковке. Вводим наименование упаковки 200 шт (2кг).

product705 17

Записываем и закрываем. Создаем еще одну упаковку 400 шт, где 1 шт состоит из 4 кг, а наименование 400 шт (4 кг).

product705 18

В отчете мы видели, что осталось 6100 шт на складе. При оформлении реализации теперь укажем по одной упаковке 200 шт и 400 шт.

product705 19

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

product705 20

Вариант без использования упаковок

Рассмотрим второй вариант решения. В карточке номенклатурной позиции (для примера создан товар Болт 2) в поле Единица хранения выбираем наименьшую для нашей задачи, то есть штука. Единица для отчетов здесь нужно выбрать килограмм. Представим, что Единица для отчетов 1 кг содержит 100 шт болтов, и далее при установке флажка Вес указываем, что 1 шт весит 0,010 кг, как и в прошлом варианте с упаковками (мы представили, что один болт весит 0,010 кг). Выберем также, что Можно указывать количество в кг в документах.

product705 21

Записываем номенклатуру. Теперь сделаем закупку товара у поставщика. Как и в первом варианте, с помощью документа Приобретение товаров и услуг, закупаем 70 кг товара Болт 2.

product705 22

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

product705 23

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

product705 24

product705 25

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

product705 26

product705 27

В отчете Ведомость по товарам на складах также видим верные данные о приходе, расходе и конечном остатке нашего товара в единицах хранения и единицах для отчетов.

product705 28 product705 29

Какой вариант выбрать

Первый вариант с использованием упаковок рекомендуется использовать, если есть несколько вариантов продажи, например, по одной штуке, в упаковках по 200, 300, 400, 750 штук или в кг. Вариант без использования упаковок подойдет, если продажа только в штуках и кг.

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

Это поможет сайту развиваться и расширять аудиторию.

Вас может заинтересовать

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

Применение автоматических скидок в оптовых и розничных продажах с использованием промокодов.

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

Источник

Задачи оперативного учета – тема № 4:
Как реализовать учет номенклатуры в различных единицах измерения

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

Например, батарейки в розницу продаются упаковками по 4 штуки. В магазин со склада они поступают в коробках по 25 упаковок (100 штук), а на складе их получают от поставщика и хранят в ящиках по 10 коробок (1 000 штук).

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

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

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

Предположим, что в магазин поступило 3 коробки, было продано 10 упаковок, и 2 штуки израсходованы на хозяйственные нужды. Сколько осталось в магазине?

Если считать напрямую, получится бессмыслица: (3 коробки – 10 упаковок – 2 штуки) = –9, причем непонятно чего: коробок? упаковок? штук?

Если принять, что для количества батареек в остатках используют единицу измерения «штука», то получается корректный результат: (3 x 100 – 10 x 4 – 2) = 258 штук.

Единицу измерения, в которой указывается количество остатка товара, называют единицей хранения остатков. Как правило, это самая мелкая из используемых для работы с товаром единиц измерения.

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

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

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

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

Поступление и продажа товаров отражаются документами «Приходная накладная» и «Расходная накладная» соответственно. В этих документах требуется реализовать возможность задания количества товаров в различных единицах измерения. Например:

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

Для другого товара:

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

Такая подзадача – пересчет количества из единицы измерения, указанной в документе, в единицу хранения остатков – встречается в следующих задачах сборника для подготовки к экзамену «1С:Специалист по платформе»: 1.10, 1.15, 1.23.

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

Построение учетной схемы

Основные объекты

Исходя из постановки задачи, для решения потребуются следующие объекты:

Для справочника Номенклатура будет достаточно стандартного реквизита – Наименование.

Справочник «Единицы измерения» будет подчинен справочнику «Номенклатура» (напомним, для каждой позиции номенклатуры могут быть свои индивидуальные единицы измерения). Для единицы измерения определим коэффициент пересчета – числовой реквизит Коэффициент, который задает количество содержащихся в ней единиц хранения остатков. Он понадобится для пересчета из одной единицы в другую.

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

Будем исходить из предположения, что единица хранения остатков – это единица измерения, у которой коэффициент пересчета равен 1.

В документах «Приходная накладная» и «Расходная накладная» будет табличная часть со следующими реквизитами: Номенклатура, ЕдиницаИзмерения, Количество, Коэффициент. Заполняться коэффициент пересчета (реквизит Коэффициент) в строке документа будет автоматически при выборе пользователем единицы измерения. При проведении документов для вычисления количества в единицах хранения остатков будет использоваться значение реквизита Коэффициент из строки табличной части документа.

Для хранения данных об остатках товаров будет использоваться регистр накопления «Остатки номенклатуры» (вид регистра – остатки). У него будет одно измерение – Номенклатура и один ресурс – Количество.

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

Почему бы не упростить решение?

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

Казалось бы, это вполне рабочее решение. Однако оно обладает следующими недостатками.

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

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

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

Проиллюстрируем это на примере.

30 апреля пользователь Иванов оприходовал на склад 5 коробок бумаги, в каждой коробке по 5 пачек, итого поступило на склад 25 пачек бумаги. Затем 1 июня бумага поступила на склад в новой упаковке – в коробках по 10 пачек. И пользователь Петров, вместо того, чтобы завести новую единицу измерения «Коробка (10 пачек)», по ошибке исправил данные у существующей единицы измерения «Коробка (5 пачек)», изменив коэффициент пересчета с 5 на 10.

Новый документ провелся корректно, на тот момент данные по остаткам товаров на складе соответствовали реальности.

Далее, 30 июня в рамках операции закрытия 2 квартала были перепроведены все документы движения ТМЦ за квартал. При этом первый документ изменил свои движения, в результате чего теперь на складе числится на 25 пачек бумаги больше. В итоге через некоторое время инвентаризация на складе покажет ошибочную недостачу в 25 пачек бумаги, и найти причину этой ошибки будет довольно трудно, ведь изменений данных самих документов нигде не зафиксировано.

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

Чтобы избавиться от описанных выше недостатков, мы и поместили коэффициент пересчета (реквизит Коэффициент) в табличные части документов. В нашем варианте при проведении документа для пересчета в единицу хранения остатков будет использоваться значение коэффициента пересчета, сохраненное в строке документа. Это обеспечит корректное перепроведение документов, которое не будет зависеть от изменений в справочнике «Единицы измерения».

Неявное определение единицы хранения остатков

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

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

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

Одна из единиц измерения из классификатора назначается для позиции номенклатуры как единица хранения остатков. Для позиции номенклатуры создается также список всех возможных единиц измерения (из классификатора) – через подчиненный справочник «Единицы измерения». Каждый из элементов этого справочника содержит ссылку на единицу измерения из классификатора – так происходит сопоставление позиции номенклатуры и тех единиц измерения из классификатора, которые могут применяться для данной номенклатуры.

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

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

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

Для решения экзаменационной задачи такой вариант вполне подойдет. И именно этот вариант реализован в нашем решении.

Зачем создавать формы у документов?

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

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

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

Зачем выносить алгоритм в общий модуль?

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

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

Запрет пустых значений

Исходя из логики задачи, значения номенклатуры в документах и регистре не могут быть пустыми. Также не имеют смысла незаполненные значения для количества, единицы измерения и коэффициента пересчета. Поэтому для реквизитов Номенклатура, Количество, ЕдиницаИзмерения, Коэффициент документов «Приходная накладная» и «Расходная накладная», а также для реквизита Коэффициент справочника «Единицы измерения» установим свойство «Проверка заполнения» в значение «Выдавать ошибку». А для измерения Номенклатура регистра «Остатки номенклатуры» установим свойство «Запрет незаполненных значений» в Истина.

Практическая реализация

Создание объектов конфигурации

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

Справочник «Номенклатура» из каркасной конфигурации нас полностью устраивает.

Справочник «Единицы измерения» отсутствует, создадим его:

dev att operuchet 04 01 min

Рисунок 1 – Реквизиты справочника «Единицы измерения»

dev att operuchet 04 02 min

Рисунок 2 – Настройка подчинения справочника «Единицы измерения»

Для реквизита Коэффициент установим свойство «Проверка заполнения» в значение «Выдавать ошибку»:

dev att operuchet 04 03 min

Рисунок 3 – Свойства реквизита Коэффициент справочника «Единицы измерения»

Документы «Приходная накладная» и «Расходная накладная» уже имеются в каркасной конфигурации. Изменим их, как описано ниже.

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

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

В результате документ «Приходная накладная» будет иметь следующую структуру:

dev att operuchet 04 04 min

Рисунок 4 – Структура документа «Приходная накладная»

Для реквизитов Номенклатура, ЕдиницаИзмерения, Коэффициент, Количество установим свойство «Проверка заполнения» в значение «Выдавать ошибку»:

dev att operuchet 04 05 min

Рисунок 5 – Свойства реквизита Номенклатура документа «Приходная накладная»

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

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

dev att operuchet 04 06 min

Рисунок 6 – Свойства «Связи параметров выбора» для реквизита документа ЕдиницаИзмерения

Из доступных реквизитов перенесем СписокНоменклатуры.Номенклатура в таблицу Параметры и убедимся, что «Режим изменения связанного значения» установлен в значение «Очищать»:

dev att operuchet 04 07 min

Рисунок 7 – Настройка свойства «Связи параметров выбора» для реквизита ЕдиницаИзмерения

Заметим, что свойство «Связи параметров выбора» имеется и у элемента формы, и эффект от его установки был бы аналогичным. Если у элемента формы и реквизита документа есть совпадающие свойства, свойства элемента формы являются более приоритетными и позволяют переопределить настройки для реквизита.

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

Для документа «Расходная накладная» проделаем те же действия, что и для документа «Приходная накладная» – структура этих документов идентичная.

Для хранения остатков будем использовать уже имеющийся в каркасной конфигурации регистр накопления «Остатки номенклатуры». Вид данного регистра – Остатки:

dev att operuchet 04 08 min

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

Он имеет следующую структуру:

dev att operuchet 04 09 min

Рисунок 9 – Структура данных регистра накопления «Остатки номенклатуры»

Состав измерений и ресурсов этого регистра нас полностью устраивает, оставим их без изменения:

Для измерения Номенклатура установим свойство «Запрет незаполненных значений» в Истина:

dev att operuchet 04 10 min

Рисунок 10 – Свойства измерения Номенклатура регистра накопления
«Остатки номенклатуры»

Установим для регистра в качестве регистраторов документы «Приходная накладная» и «Расходная накладная»:

dev att operuchet 04 11 min

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

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

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

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

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1c создание макетов печатных форм
  • 1c предприятие бухгалтерский учет для украинцев