Home » Уроки по 1С 8.3 » Урок 3: Продолжение создания системы складского учета
google




Урок 3: Продолжение создания системы складского учета

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

Поступление товара

Документ: ПоступлениеТМЦ

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

Параметры документа

Укажем Имя — ПоступлениеТМЦ, синоним будет сформирован автоматически, об этом рассказывалось в предыдущем уроке.
Включим документ в подсистему «СкладскойУчет» (вкладка Подсистемы)

Перейдем к созданию реквизитов

Данные

Нам потребуется создать:

  • Шапка:
    • Склад: Справочник.МестаХранения;
    • ВходящийНомер: Строка 20;
  • Табличная часть:
    • Номенклатура
      • Номенклатура: Справочник.Номенклатура;
      • Количество: Число 10,2;
      • Цена: Число 10,2;
      • Сумма: Число 10,2;

В 1С Предприятии 8 имеется возможность создания нескольких табличных частей у одного объекта метаданных (в более ранних можно было создать 1 табличную часть, причем только у документа).

Табличную часть можно создать для объектов:

  • Справочник
  • Документ
  • План видов характеристик
  • План счетов
  • План вида расчета
  • Бизнес-процесс
  • Задача

Создание реквизитов

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

Данные

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

Данные

Нумерация

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

В специальной ветке дерева метаданных создаем нумератор «ВходящиеДокументы».
Параметры нумератора не меняем, но рассмотрим каждый по-отдельности:
— Тип номера: Строка/Число. Строковой позволяет генерировать номера по типу: МойПрефикс-<НомерДокумента> (ВхДок-1000);
— Длина номера. Максимальная длина номера, включая префикс;
— Допустимая длина: Фиксированная/Переменная. Означает обрезает пробелы в конце или оставляет;
— Периодичность: Неперподический, В пределах года, В пределах квартала, В пределах месяца, В пределах дня. Т.е. как часто нумерация будет начинаться с 1.
— Контроль уникальности. Отвечает за возможность создания нескольких номеров с одинаковым значением, как правило запрещено;

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

Движения

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

Для хранения остатков товаров создадим регистр накопления «ОстаткиТМЦ». Вид регистра Остатки. На закладке данные воспроизведем структуру:

Данные

Установим регистр «ПоступлениеТМЦ».

Теперь рассмотрим более подробно каждый шаг.

Вид регистра: Остатки — хранение оборотов и остатков, например чтобы получить отчет вида: Поступило 10 шт, Продали 4, Осталось 6. Обороты — хранение только оборотов, т.е. можем получить: Поступило 10 шт, Продали 4.

  • Измерения: В разрезе чего будем получать движения/остатки.
  • Ресурсы: Какие расчетные поля будут у разрезов анализа.
  • Реквизиты: Дополнительная информация, не влияющая на расчет.
    В нашем случае получаем: возможно получить количество и сумму товара/товаров находящихся на складе/складах.

Переходим обратно к документу. Для записи данных в регистр воспользуемся конструктором. Ставим курсор на «ОстаткиТМЦ», нажимаем «Конструктор движений».

Формирование движений

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

Данные

Создание форм

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

Проверим что у нас получилось, сохраним конфигурацию и применим изменения. Запускаем 1С Предприятие. Нажимаем на «Поступление ТМЦ».

Режим 1С Предприятие - список документов

Как видим, платформа создала форму списка документов, разместила в ней все поля из шапки документа + ряд системных. Создаем новый документ.

Режим 1С Предприятие - новый документ ПоступлениеТМЦ

При попытке выбрать склад увидим всплывающее окно

Режим 1С Предприятие - выбор склада

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

Режим 1С Предприятие - новый склад

Мы не создавали форму редактирования склада, но она открылась, об этом писал выше: платформа автоматически генерирует формы.
Назовем склад «Основной», сохраним элемент и выберем его. Платформа самостоятельно выбрала созданный элемент, облегчив нам поиск и выбор, это очень удобно если справочник большой.
В поле входящий номер внесем 1 и перейдем к табличной части документа.
Добавить новую строку можно опять же кнопкой «Добавить». Справочник Номенклатура у нас тоже пустой, сразу перейдем к созданию новой записи. Укажем наименование «Детский крем», тип номенклатуры Товар. Укажем количество 2, цена 30, Сумма не посчиталась, т.к. мы не указывали правила расчета, поэтому внесем ее вручную — 60. Проведем документ, кнопка «Провести и закрыть». В списке документов появится созданный нами документ, но как же посмотреть его движения по регистру? Для этого придется воспользоваться меню:

Режим 1С Предприятие - меню

Режим 1С Предприятие - меню

ent7

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

На вкладке Формы создадим форму редактирования документа, в нашем случае можно нажать на кнопку просмотра напротив поля Форма документа

Создание формы редактирования

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

Создание формы редактирования

Создание формы редактирования

Немного изменим расположение элементов на форме. Поля Номер и Дата расположим рядом друг с другом. В дереве элементов формы нажмем правой кнопкой мышки на поле Номер, выберем: Добавить -> Группа — Обычная группа без отображения. Выделим поля Номер, Дата перетащим их в созданную группу. Внешне ничего не изменилось, т.к. по умолчанию платформа предлагает вертикальное расположение элементов, нам же нужно горизонтальное, меняем свойство Группировка у созданной группы на Горизонтальная. Перенесем в эту же группу и ВходящийНомер.

Создание формы редактирования

Теперь сделаем автоматический расчет Суммы при изменении Количества и Цены.
Выделяем поле «НоменклатураКоличество» в дереве элементов формы, в панели свойств, внизу, находим событие «ПриИзменении», нажимаем на значок Лупы (открыть). В появившемся окне ничего не меняем (оставляем «Создать на клиенте»), жмем Ок. Попадаем в модуль формы документа. Теперь напишем наш первый код на языке 1С, который будет отвечать за расчет Суммы при измении Количества.

Запускаем 1С, смотирм что получилось. Находим наш документ, меняем количество на 3, подтверждаем изменение.

Расчет суммы

Самостоятельно сделаем расчет Суммы при изменении Цены. Но с небольшим отличием: Процедуру расчета будем создавать из дерева элементов формы. Правой кнопкой мышки кликаем на НоменклатураЦена, в меню События -> ПриИзменении. Получаем:

Проверяем в режиме 1С Предприятие: установим Количество = 3, Цена = 40.

Расчет суммы

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

Рассмотрим подробно написанный код.
В управляемых формах есть определенные правила работы с данными, суть которых в общем-то проста: Обработка данных происходит на Сервере, управление отображением на Клиенте, при этом присваивать значения реквизитов можно как на клиенте, так и на сервере. Главное запомнить это основополагающее правило, остальное уже нюансы, которые могут вам потребоваться не скоро / часто.

Каждая процедура/функция имеет директиву выполнения, рассмотрим основные:
— НаСервере: Выполняется на сервере, при этом на сервер передается контекст формы (чаще всего используется эта директива);
— НаКлиенте: Выполняется на клиенте, например управление видимостью полей или присваивание значения реквизиту;
— НаСервереБезКонтекста: Выполняется на сервере, без передачи контекста формы. Потребляет меньше всего ресурсов, но не всегда удобно.

Продемонстрируем работу с серверной частью
— Переходим на вкладку «Команды формы»;
— Создаем команду «Уведомление»;
— Создаем обработчик события (нажимаем на лупу у свойства «Действие»);
— Выбираем вариант: На Клиенте и на Сервере

Получаем модуль формы вида:

— Переносим команду на форму (обычный drug-n-drop);
— Запускаем 1С, входим в документ и нажимаем кнопку «Уведомить», получаем сообщение

Вывод склада

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

Пытаеся запустить отладку и получаем следующее:

Вывод склада

Но почему так произошло? Ответ: все дело в Контексте. Система не знает ничего, что не передано ей напрямую. Модифицируем немного код функций ответственных за Уведомить2.

Как видим сообщение выводится.

Добавим вывод итоговой суммы по документу (перетащим поле в удобное для нас место): Форма документа -> Реквизиты -> Объект -> Номенклатура -> ИтогСумма.

Расчет суммы

На вкладке формы создадим форму списка документов ПоступлениеТМЦ, выведем только колонки: Дата, Номер, Склад.

ent12

На этом закончим блок по поступлению ТМЦ.

Выбытие Товара

Документ.ВыбытиеТМЦ

Создадим документ методом копирования существующего «ПоступлениеТМЦ».
Внесем правки в параметрах документа:
— Имя: ВыбытиТМЦ;
— Очистим нумератор (кнопка «Х» в поле Нумератор)
— Изменим модуль проведения: Прочие -> Модуль объекта

Вместо операции Приход сделаем Расход.

Создадим в режиме 1С Предприятие несколько документов обоих видов, можно копированием.
Посмотрим на таблицу движений регистра ОстаткиТМЦ:

ent13

Таким образом смотреть остатки товара не удобно, поэтому создадим отчет «ОстаткиТМЦ».

Перемещение товара

Документ.ПеремещениеТМЦ

Создадим новый Документ «ПеремещениеТМЦ».
— Реквизиты шапки:
— СкладОтправитель: Справочник.МестаХранения;
— СкладПолучатель: Справочник.МестаХранения;
— Табличная часть
— Номенклатура
— Номенклатура: Справочник.Номенклатура;
— Количество: Число 10,2;

Поля складов разместим друг напротив друга (создав группу и установив свойство Группировка в Горизонтальная).
Документ будет двигать регистр ОстаткиТМЦ, воспользуемся конструктором движений или же напишем код вручную.
В итоге должно получиться подобный код:

В режиме 1С Предприятие создаем и проводим документ, потребуется для тестирования отчета.

Вывод склада

Вывод склада

Отчетность

Отчет.ОстаткиТМЦ

В дереве метаданных становимя на ветку «Отчеты», нажимаем «Добавить».
Заполняем:
— Имя: ОстаткиТМЦ
— Подсистема: СкладскойУчет

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

На вкладке Основные нажимаем на «Открыть схему компоновки данных».
Наборы данных: СКД позволяет делать отчет используя несколько наборов данных (фактически запросов к источникам). Источником данных могут служить: Запросы 1С, ТаблицаЗначений.
Создаем набор данных на основе запроса. При помощи конструктора запросов генерируем текст запроса.
— Разворачиваем дерево: Таблицы и поля -> Регистры накопления, Двойной щелчок на ОстаткиТМЦ.Остатки. Двойной щелчок на таблице в секции Таблицы (включаем в выборку все поля из таблицы).
— Страница Группировка: Склад, Номенклатура помещаем в Групповое поле, КоличествоОстаток, СуммаОстаток в Суммируемое поле.

СКД - Запрос

СКД - Запрос - Группировка

СКД

СКД - Настройки

Вариант отображения данных «Отчет -> Склад -> Детальные записи» получаем созданием группировок в секции отчет и ниже (Детальные записи — поле Группировка не заполняется), переносим поля из доступных в отображаемые в отчете (двойной клик в списке).

Отчет готов, можно проверять. Запускаем 1С Предприятие, выбираем отчет и формируем.

СКД - Результат отчета

Скачать базу урока


Posted on by Ушаков Сергей
Categories: Уроки по 1С 8.3 Метки: ,,,,



Добавить комментарий

Войти с помощью: 

Google




Социальные сети


Я в Twitter
Яндекс.Поиск
Поиск обычный
Счетчики
Рейтинг@Mail.ru Яндекс.Метрика