1С: объекты конфигурации и язык запросов

Объекты конфигурации 1С — справочники, документы, регистры накопления, механизм проведения документов, язык запросов, построение отчётов на СКД.

Курсовая по 1С обычно требует разработать конфигурацию для учёта: справочники, документы, движения по регистрам и отчёты. Разберём эту схему целиком — она одинакова для склада, кадров и услуг.

Объекты конфигурации

ОбъектНазначениеПример
СправочникУсловно-постоянные данныеНоменклатура, Контрагенты, Сотрудники
ДокументСобытие хозяйственной жизниПоступление товаров, Приказ о приёме
Регистр накопленияКоличественный и суммовой учётОстаткиТоваров, Продажи
Регистр сведенийХранение значений с привязкой к периодуЦены, КурсыВалют
ПеречислениеФиксированный набор значенийВидОплаты: Наличная, Безналичная
ОтчётПредставление данныхОстаткиНаСкладе, АнализПродаж
ОбработкаСлужебное действиеЗагрузкаИзExcel
Ключевая идея учётной системы: документы не хранят итоги, они лишь порождают движения по регистрам. Остаток товара нигде не записан как число — он вычисляется как сумма движений. Поэтому исправление старого документа автоматически меняет текущие остатки.

Проведение документа

Процедура ОбработкаПроведения(Отказ, Режим)

    // Контроль заполнения
    Если НЕ ЗначениеЗаполнено(Склад) Тогда
        Отказ = Истина;
        Сообщить("Не указан склад");
        Возврат;
    КонецЕсли;

    Движения.ОстаткиТоваров.Записывать = Истина;

    Для Каждого СтрокаТовары Из Товары Цикл

        Если СтрокаТовары.Количество <= 0 Тогда
            Отказ = Истина;
            Сообщить("Некорректное количество в строке " + СтрокаТовары.НомерСтроки);
            Продолжить;
        КонецЕсли;

        Движение = Движения.ОстаткиТоваров.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
        Движение.Период      = Дата;
        Движение.Номенклатура = СтрокаТовары.Номенклатура;
        Движение.Склад       = Склад;
        Движение.Количество  = СтрокаТовары.Количество;
        Движение.Сумма       = СтрокаТовары.Количество * СтрокаТовары.Цена;

    КонецЦикла;

КонецПроцедуры

Язык запросов

ВЫБРАТЬ
    Остатки.Номенклатура                     КАК Товар,
    Остатки.Номенклатура.ЕдиницаИзмерения    КАК Единица,
    Остатки.КоличествоОстаток                КАК Остаток,
    Остатки.СуммаОстаток                     КАК Сумма
ИЗ
    РегистрНакопления.ОстаткиТоваров.Остатки(
        &ДатаОстатков,
        Склад = &Склад
            И Номенклатура.ВидТовара = &ВидТовара) КАК Остатки
ГДЕ
    Остатки.КоличествоОстаток > 0
УПОРЯДОЧИТЬ ПО
    Товар
ИТОГИ
    СУММА(Остаток), СУММА(Сумма)
ПО
    ОБЩИЕ
// Выполнение запроса в коде
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Номенклатура, КоличествоОстаток ИЗ
              |РегистрНакопления.ОстаткиТоваров.Остатки(&Дата, Склад = &Склад)";
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
Запрос.УстановитьПараметр("Склад", Склад);

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Номенклатура.Наименование + ": " + Выборка.КоличествоОстаток);
КонецЦикла;

Контроль отрицательных остатков

// При расходе проверяем, хватает ли товара
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|   Товары.Номенклатура КАК Номенклатура,
|   Товары.Количество   КАК Требуется,
|   ЕСТЬNULL(Остатки.КоличествоОстаток, 0) КАК Остаток
|ИЗ
|   Документ.РасходТоваров.Товары КАК Товары
|   ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(&Дата, ) КАК Остатки
|   ПО Товары.Номенклатура = Остатки.Номенклатура
|ГДЕ Товары.Ссылка = &Ссылка";

// Если Требуется > Остаток — отказываем в проведении
ЕСТЬNULL обязателен при левом соединении с таблицей остатков: если товара на складе никогда не было, соединение вернёт NULL, и любая арифметика с ним даст NULL вместо ошибки. Логика проверки молча перестанет работать.

Отчёты на СКД

  1. Создать объект Отчёт и открыть схему компоновки данных.
  2. Набор данных — запрос: указать таблицы регистров и поля.
  3. Настроить связи, вычисляемые поля и ресурсы (итоги по числовым полям).
  4. Задать параметры: период, склад, вид товара.
  5. В настройках задать структуру: группировки, таблицу или диаграмму.
  6. Настроить условное оформление — например, выделять красным отрицательные остатки.

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

Что требуют в курсовой по 1С

Частые вопросы

Чем регистр накопления отличается от регистра сведений?

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

Зачем нужны документы, если можно писать в регистр напрямую?

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

Какую версию платформы выбрать для курсовой?

1С:Предприятие 8.3 в учебной версии: она бесплатна, ограничение по объёму данных для курсовой несущественно. Управляемые формы предпочтительнее обычных — на них строятся все современные конфигурации.

Читайте также

Сделаем работу по этой теме

Опишите задачу — ответим в течение 15 минут в личных сообщениях ВКонтакте, назовём срок и цену. Предоплаты за оценку нет.

  • Оценка заявки бесплатно
  • Правки по замечаниям преподавателя
  • Работы по всем техническим и IT-дисциплинам

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