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

Урок 82. Задача 2. Разработка решения для учета скоропортящихся товаров - часть 2

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

Продолжаем решать задачу по скоропортящимся продуктам.

На очереди документ "Уход товара" и разработка отчетов через СКД.

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

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

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

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

Откроем модуль этого документа и создадим там вручную обработку проведения (Рисунок 1).

Рисунок 1
Рисунок 1

Пропишем запись в истину и сделаем блокировку по регистру (Рисунок 2).

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

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

Эти запросы проще всего сделать через создание запроса с обработкой результата, вызвав контекстное меню правой кнопкой мыши (Рисунок 3).

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

Прописываем два пакета запросов и получаем результат (Рисунок 4).

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

Теперь необходимо установить параметры. У нас их два: ссылка и момент времени. Первый параметр просто так прописываем, а второй будет устанавливаться при выполнении условия.

Устанавливаем первый параметр (Рисунок 5).

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

Устанавливаем второй параметр по условию. Он будет зависеть от режима проведения документа (Рисунок 6).

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

Делаем выполнение запроса и выставляем истину для записи в регистры (Рисунок 7).

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

На рисунке 7 указаны регистры. Чтобы этот код сработал, необходимо, чтобы для этих регистров были указаны регистраторы на вкладке "Регистратор" (Рисунок 8).

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

И для второго регистра должно быть так же.

Начинаем проверять выборку товара через цикл (Рисунок 9).

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

Проверяем остатки через условие и выдаем сообщение (Рисунок 10).

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

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

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

Внутри цикла будет два условия, которые будут проверять партию и сколько списать по количеству.

Прописываем эти условия (Рисунок 12).

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

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

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

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

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

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

Теперь проверим, что списываются сначала товары с более ранней датой. Для этого нужно провести количество, которое есть в наличии и открыть регистр (Рисунок 16).

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

На этом рисунке видно, что списывается сначала 5 штук от 18 числа, которые есть в наличии и 3 штуки от 19 числа. Всего списывается 8 штук (Рисунок 17).

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

Система видит, что 18 числа пришло всего 5, а ей еще не хватает 3 единиц и она начинает брать от второго прихода 19 числа (Рисунок 18).

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

Создаем отчет по остаткам. Через конструктор запроса выбираем нужные данные (Рисунок 19).

Рисунок 19
Рисунок 19

На вкладке "Параметры" добавляем новый параметр и редактируем тот, который там был (Рисунок 20).

Рисунок 20
Рисунок 20

Отчет у на сбудет состоять из заголовка и самой таблички. Добавляем заголовок - детальные записи и сами поля - детальные записи (Рисунок 21).

Рисунок 21
Рисунок 21

Выбираем поля для отчета (Рисунок 22).

Рисунок 22
Рисунок 22

Параметр "Дата отчета" делаем доступным пользователю (Рискнок 23).

Рисунок 23
Рисунок 23

Убираем автоматические параметры (Рисунок 24).

Рисунок 24
Рисунок 24

Для заголовка нужно убрать автоматически выбранные поля (Рисунок 25).

Рисунок 25
Рисунок 25

И осталось добавить заголовок в макет.

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

Рисунок 26
Рисунок 26

Добавляем макет группировки (Рисунок 27).

Рисунок 27
Рисунок 27

Указываем заголовок (Рисунок 28).

Рисунок 28
Рисунок 28

Указываем область (Рисунок 29).

Рисунок 29
Рисунок 29

Делаем объединенные столбцы в строке шаблоном в свойствах этой ячейки (Рисунок 30).

Рисунок 30
Рисунок 30

Добавляем текст шаблона и он сразу появится в нескольких местах (Рисунок 31).

Рисунок 31
Рисунок 31

Для параметра необходимо прописать выражение, определяющее формат даты (Рисунок 32).

Рисунок 32
Рисунок 32

Запустим и сформируем отчет (Рисунок 33).

Рисунок 33
Рисунок 33

Второй отчет будет делаться аналогично.

Формируем запрос (Рисунок 34).

Рисунок 34
Рисунок 34

Редактируем параметры (Рисунок 35).

Рисунок 35
Рисунок 35

Создаем детальные записи и выбираем поля (Рисунок 36).

Рисунок 36
Рисунок 36

Начало и конец периода делаем доступными для пользователя (Рисунок 37).

Рисунок 37
Рисунок 37

Для отчета выбираем параметры и отбор (Рисунок 38).

Рисунок 38
Рисунок 38

Добавляем в макет заголовок, который будет выводить месяц и год (Рисунок 39).

Рисунок 39
Рисунок 39

Формируем отчет (Рисунок 40).

Рисунок 40
Рисунок 40

Начало и конец периода обязательные. Если их не выбрать, то получим уведомление (Рисунок 41).

Рисунок 41
Рисунок 41

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

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

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

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

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

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

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

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

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

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

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

Введение Урок 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 Урок 76 Урок 77 Урок 78 Урок 79 Урок 80 Урок 81

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

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

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

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