Найти тему
1С: Программирование

Урок 76. Задача 1. Разработка решения для учета товара - часть 1

Доброго времени суток.

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

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

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

Давайте начнем с самой простейшей задачи.

Заказчик выдал ТЗ, в котором описаны следующие условия:

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

Пояснения к разработке функционала учета товара:

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

Условие задачи на этом все, теперь необходимо перейти к решению задачи.

Создаем новую информационную базу (если вы не знаете как это сделать, то это нужно обратиться к этому уроку - Урок 1).

Теперь необходимо понять то, какие объекты нам нужны. Программа должна производить учет товаров, а товары - это справочник "Номенклатура". Его лучше сразу создавать иерархическим, так как будут разные категории товаров.

Создаем справочник "Номенклатура" и делаем его иерархическим (Рисунок 2).

Рисунок 2
Рисунок 2

Заходим в предприятие и заполним какими-то данными (Рисунок 3).

Рисунок 3
Рисунок 3

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

Приход и уход товара - это всегда какое-то движение и должно учитываться (влиять) в системе, то есть должно отображаться в деятельности нашего предприятия. Такой функционал имеет только документ, у которого есть свойство "Движение".

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

Создаем объект документ "Приход товара" (Рисунок 4).

Рисунок 4
Рисунок 4

Для отображения информации о товаре нужно создать табличную часть с реквизитами соответствующего типа (Рисунок 5).

Рисунок 5
Рисунок 5

Создадим документ с приходом товара (Рисунок 6).

Рисунок 6
Рисунок 6

Таким же образом создаем документ "Уход товара" или можно просто скопировать и переименовать его (Рисунок 7).

Рисунок 7
Рисунок 7

То есть я просто взял его, скопировал и переименовал. Зачем мне тратить время и создавать такой же объект, если можно сэкономить время свое и просто его скопировать, а потом переименовать.

В режиме пользователя для второго документа тоже добавим уход товара (Рисунок 8).

Рисунок 8
Рисунок 8

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

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

Таким объектом служит регистр накопления.

Создаем регистр и называем его, например, учет остатков (Рисунок 9).

Рисунок 9
Рисунок 9

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

Задаем структуру, указывая нужный тип данных (ссылка на справочник и число) (Рисунок 10).

Рисунок 10
Рисунок 10

Указываем источники, так как их будет два: приход товара и уход (Рисунок 11).

Рисунок 11
Рисунок 11

Более подробно про регистр накопления можно посмотреть тут - Урок 30.

Теперь переходим в каждый документ и делаем отображение информации о приходе и отдельно об уходе.

Для прихода (Рисунок 12).

Рисунок 12
Рисунок 12

И появится модуль с автоматически генерируемым кодом движения товара (Рисунок 13).

Рисунок 13
Рисунок 13

Для второго документа делаем уход (Рисунок 14).

Рисунок 14
Рисунок 14

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

Теперь откроем приход и уход, сделаем проведение документов и проверим, чтобы информация появилась в регистре (Рисунок 15).

Рисунок 15
Рисунок 15

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

Контроль остатков рассматривается в этих уроках - Урок 50, Урок 51, Урок 52, но необходимо будет дописать несколько строк кода .

В итоге у вас должен получиться в модуле объекта у документа "Уход товара" следующий код (Рисунок 16).

Рисунок 16
Рисунок 16

И нужно дописать строку кода, чтобы все правильно работало (Рисунок 17).

Рисунок 17
Рисунок 17

Проверим работу (Рисунок 18).

Рисунок 18
Рисунок 18

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

И теперь осталось сделать отчет, который будет показывать остаток товара на какой-то определенный день, а точнее на конец дня с точностью до секунды.

Как создать простой отчет, можете посмотреть здесь - Урок 31.

Создали отчет и переходим в схему компоновки данных. Там создаем запрос, выбирая источники (Рисунок 19).

-19

После этого меняем, чтобы у нас столбец назывался остаток (Рисунок 20).

-20

Переходим на вкладку "Настройки" и там добавляем группировку без иерархии и выбираем поля для отчета (Рисунок 20 - 21).

-21
-22

Сформируем отчет (Рисунок 22).

-23

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

Эти и другие настройки мы разработаем в следующем уроке.

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

Всем спасибо.

Благодарности:

Буду благодарен за чаевые - https://yoomoney.ru/to/4100116532836145.

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

Ссылка для вступления телеграм-канал - t.me.Apiscourses

Подписаться в группу ВКонтакте

Или написать на электронную почту - awesome.razrab@yandex.ru

Ссылка для вступления в чат на Дзен - https://yandex.ru/chat/#/join/34271c4c-039e-4d1d-97af-b24b3204ad08.

Прошлые уроки:

Введение Урок 1 Урок 2 Урок 3 Урок 4 Урок 5 Урок 6 Урок 7 Урок 8 Урок 9 Урок 10 Урок 11 Урок 12 Урок 13 Урок 14 Урок 15 Урок 16 Урок 17 Урок 18 Урок 19 Урок 20 Урок 21 Урок 22 Урок 23 Урок 24 Урок 25 Урок 26 Урок 27 Урок 28 Урок 29 Урок 30 Урок 31 Урок 32 Урок 33 Урок 34 Урок 35 Урок 36 Урок 37 Урок 38 Урок 39 Урок 40 Урок 41 Урок 42 Урок 43 Урок 44 Урок 45 Урок 46 Урок 47 Урок 48 Урок 49 Урок 50 Урок 51 Урок 52 Урок 53 Урок 54 Урок 55 Урок 56 Урок 57 Урок 58 Урок 59 Урок 60 Урок 61 Урок 62 Урок 63 Урок 64 Урок 65 Урок 66 Урок 67 Урок 68 Урок 69 Урок 70 Урок 71 Урок 72 Урок 73 Урок 74 Урок 75

На этом все. Жду Вас на следующем занятии.

P.S. Подписывайтесь на мой канал :-)

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