Работа в отраслевых решениях, таких как «1С:Общепит» (от разработчика «1С-Рарус»), требует понимания специфики производства и розничных продаж. Часто перед программистом или аналитиком ставится задача получить данные, которые не лежат на поверхности в одном стандартном отчете. Рассмотрим подробно, как собрать информацию о количестве питающихся, составе их заказов и способах оплаты.
В отличие от типовой бухгалтерии, в общепите учет ведется не только в разрезе номенклатуры, но и в разрезе посещений. Разберем, где в системе фиксируется количество «ртов».
Основным документом в розничной торговле общепита является ЧекОбщепита. Проанализируем его структуру. В шапке или в дополнительных реквизитах этого документа обычно присутствует поле КоличествоГостей (или КоличествоПерсон). Если на предприятии ведется строгий учет посадочных мест, официанты заполняют это поле при открытии счета.
Если же данные о гостях не заполняются вручную, проанализируем ситуацию косвенно. В этом случае под «количеством питающихся» можно понимать количество порций основных блюд. Однако это даст погрешность, если один человек заказал два блюда. Поэтому рекомендуем в первую очередь проверить заполнение реквизита КоличествоГостей в документах ЧекОбщепита и ОтчетОРозничныхПродажах.
Чтобы понять, «что они ели», нам необходимо обратиться к регистрам накопления, которые фиксируют факт реализации продукции. В системе «1С:Общепит» за это отвечают несколько механизмов:
Проанализируем структуру регистра накопления Продажи. Нам понадобятся измерения Номенклатура и Склад, а также ресурсы Количество и Сумма.
Выясним причину, по которой данные о деньгах могут храниться отдельно от данных о товарах. В 1С оплата фиксируется в привязке к чеку, но может распределяться по разным видам (эквайринг, наличные, питание в счет зарплаты). Разберем по шагам, как связать эти данные:
ВидыОплат. В нем должны быть заведены элементы «Наличные» и «Карта» (или «Эквайринг»).ЧекОбщепита или ОтчетОРозничныхПродажах.Пример логики запроса для получения оплат может выглядеть следующим образом:
ВЫБРАТЬ
Продажи.Регистратор,
Продажи.Номенклатура,
Продажи.Количество,
Оплата.ВидОплаты,
Оплата.Сумма
ИЗ
РегистрНакопления.ПродажиОбщепит КАК Продажи
ЛЕВОЕ СОЕДИНЕНИЕ
Документ.ЧекОбщепита.Оплата КАК Оплата
ПО
Продажи.Регистратор = Оплата.Ссылка
Прежде чем писать отчет с нуля, проанализируем существующий функционал, так как начальник в исходном сообщении упоминал, что «похожее есть». Рассмотрим следующие места:
ПродажиОбщепит. В настройках (кнопка «Изменить вариант») добавим группировку по Виду оплаты и выведем детальные записи по номенклатуре.Важно помнить, что общепит работает как производство. Рассмотрим ситуацию: когда гость ест салат, система списывает ингредиенты (помидоры, огурцы) согласно ТехнологическойКарте. Если заказчик требует отчет не просто «что съели», а «какие продукты потрачены на это количество людей», нам придется задействовать механизм калькуляций.
Выясним, какая себестоимость нас интересует: плановая или фактическая. Плановая рассчитывается исходя из нормативов, а фактическая — с учетом инвентаризации и списания порчи. Для нашей задачи (количество людей и их блюда) достаточно данных из контура реализации.
Для реализации задачи «зеленому прогеру» стоит придерживаться следующей структуры в конструкторе схемы компоновки данных:
ЧекОбщепита. Нам нужны поля: КоличествоГостей, Товары.Номенклатура, Товары.Количество, Оплата.ВидОплаты.ВидОплаты (Нал/Безнал).Номенклатура (Блюда).МАКСИМУМ или СРЕДНЕЕ по чеку, чтобы не суммировать их на каждую строку блюда).Сумма (СУММА), Количество (СУММА), КоличествоГостей (СУММА, но с осторожностью при группировке по блюдам).Таким образом, мы получим детальную картину: кто, сколько и на какую сумму поел, а также каким способом эти деньги поступили в кассу предприятия. Подобный подход позволит не только выполнить задачу руководства, но и глубже разобраться в архитектуре решения «1С:Общепит».