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