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

- Объекты и форма с нуля
- Проверка до записи
- Печать сохранённого заказа
- Сценарии для демонстрации в портфолио
Содержание
Глава 1. Зафиксируйте границы
Это авторский учебный проект, а не готовая программа для настоящей мастерской. Нет налогового учёта, складских движений, оплаты, разграничения ролей и фискальных документов. Печать — учебная ведомость заказа, не юридический бланк.
Правила простые: клиент выбран, есть хотя бы одна работа, у каждой работы выбрана услуга, количество больше нуля, цена неотрицательная. Бесплатная работа допустима. Сумма строки округляется до двух знаков; итог складывается из округлённых сумм строк.

Глава 2. Создайте объекты
Создайте пустую файловую учебную базу и откройте конфигурацию. Выберите управляемое приложение. Добавьте подсистему «Мастерская». Справочники и документ ниже включите в эту подсистему, чтобы их команды были доступны в предприятии.
У справочников оставьте стандартные код и наименование, длину наименования задайте 100. У документа запретите проведение: в этом проекте он только записывается. Не добавляйте регистры, которые потом никто не заполняет.
Почему в заказе храним ссылку на клиента или услугу, а не весь объект, разбираем в примере ссылки и объекта.
| Объект | Реквизиты |
|---|---|
| Справочник Клиенты | Код, Наименование |
| Справочник Услуги | Код, Наименование |
| Документ ЗаказМастерской | Клиент: СправочникСсылка.Клиенты; СуммаЗаказа: Число(15,2) |
| Табличная часть Работы | Услуга: СправочникСсылка.Услуги; Количество: Число(10,3); Цена: Число(10,2); Сумма: Число(15,2) |
Глава 3. Соберите форму
Создайте основную управляемую форму документа. Перетащите Объект.Клиент и табличную часть Объект.Работы в элементы формы. Выведите четыре колонки работ. Сумму строки и СуммаЗаказа сделайте доступными только для просмотра.
Оставьте штатную команду записи. Добавьте собственную команду «ПечатьЗаказа» и кнопку для неё. Пока не связывайте расчёт только с изменением поля: тогда программная запись могла бы сохранить другой итог. Главная проверка будет в модуле объекта.
Если непонятно, что означает Объект.Работы, сначала сравните данные формы и реквизиты документа.
Глава 4. Проверьте и рассчитайте перед записью
В модуле объекта документа создайте обработчик ПередЗаписью с тремя параметрами и вставьте код ниже. Это не модуль формы. Сначала проверяются все строки, и только после успешной проверки пересчитываются суммы.
При любой ошибке Отказ останавливает запись. Итог клиента не принимается на веру: сервер считает его заново. Если в документе уже есть этот обработчик, объедините логику в одной процедуре, а не создавайте вторую с тем же именем.
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если Не ЗначениеЗаполнено(Клиент) Тогда
Сообщить("Выберите клиента.");
Отказ = Истина;
Возврат;
КонецЕсли;
Если Работы.Количество() = 0 Тогда
Сообщить("Добавьте хотя бы одну работу.");
Отказ = Истина;
Возврат;
КонецЕсли;
Для Каждого Работа Из Работы Цикл
Если Не ЗначениеЗаполнено(Работа.Услуга)
Или Работа.Количество <= 0 Или Работа.Цена < 0 Тогда
Сообщить("Проверьте услугу, количество и цену в строке "
+ Работа.НомерСтроки);
Отказ = Истина;
Возврат;
КонецЕсли;
КонецЦикла;
СуммаЗаказа = 0;
Для Каждого Работа Из Работы Цикл
Работа.Сумма = Окр(Работа.Количество * Работа.Цена, 2);
СуммаЗаказа = СуммаЗаказа + Работа.Сумма;
КонецЦикла;
КонецПроцедурыГлава 5. Покажите сохранённый заказ
В модуле формы разместите код печати. В свойстве «Действие» команды ПечатьЗаказа выберите одноимённый клиентский обработчик. Сначала документ должен быть записан; несохранённые изменения блокируют печать.
Сервер получает сохранённый объект и формирует табличный документ. Настройку ширины колонок и шрифта можно сделать следующим упражнением. Для первого результата достаточно проверить, что каждая работа появилась один раз, а итог совпал с записанным заказом.
Поле «Действие» и создание обработчика можно найти по скриншотам команды формы. В этом проекте команда называется «ПечатьЗаказа» и находится в форме документа, а не во внешнем файле.
&НаКлиенте
Процедура ПечатьЗаказа(Команда)
Если Модифицированность Или Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
Сообщить("Сначала запишите заказ.");
Возврат;
КонецЕсли;
ТабДок = ПечатьНаСервере();
ТабДок.Показать("Заказ мастерской");
КонецПроцедуры
&НаСервере
Функция ПечатьНаСервере()
Заказ = Объект.Ссылка.ПолучитьОбъект();
ТабДок = Новый ТабличныйДокумент;
ТабДок.Область(1, 1).Текст = "Учебный заказ № " + Заказ.Номер;
ТабДок.Область(2, 1).Текст = "Клиент: " + Строка(Заказ.Клиент);
ТабДок.Область(4, 1).Текст = "Работа";
ТабДок.Область(4, 2).Текст = "Количество";
ТабДок.Область(4, 3).Текст = "Цена";
ТабДок.Область(4, 4).Текст = "Сумма";
Номер = 5;
Для Каждого Работа Из Заказ.Работы Цикл
ТабДок.Область(Номер, 1).Текст = Строка(Работа.Услуга);
ТабДок.Область(Номер, 2).Текст = Строка(Работа.Количество);
ТабДок.Область(Номер, 3).Текст = Строка(Работа.Цена);
ТабДок.Область(Номер, 4).Текст = Строка(Работа.Сумма);
Номер = Номер + 1;
КонецЦикла;
ТабДок.Область(Номер, 3).Текст = "Итого";
ТабДок.Область(Номер, 4).Текст = Строка(Заказ.СуммаЗаказа);
Возврат ТабДок;
КонецФункцииГлава 6. Проверьте результат
Обновите конфигурацию базы данных. Добавьте клиента «Учебный клиент» и две услуги: «Чистка» и «Настройка». Создайте заказ: чистка 2 × 500 и настройка 1 × 750. Запишите, закройте и откройте заново. Ожидаются суммы 1000, 750 и итог 1750.
Нажмите печать: обе строки и 1750 должны совпасть. Затем измените количество, не записывая документ: печать должна попросить запись. После записи и повторного открытия проверьте новый итог.
| Сценарий | Ожидание |
|---|---|
| Нет клиента или строк | Отказ в записи |
| Количество 0 или −1 | Отказ в записи |
| Цена −1 | Отказ в записи |
| Цена 0, количество 1 | Допустимая бесплатная работа |
| Количество 0,333, цена 1,00 | Сумма строки 0,33: произведение округляется до 2 знаков |
| Повторная запись без изменения | Итог не удваивается |
| Закрытие и новое открытие | Строки и итог сохранены |
Глава 7. Опишите работу честно
В портфолио напишите: «Учебный проект: заказ мастерской. Создал справочники и документ, форму ввода, серверную проверку перед записью и печатную ведомость. Проверил ошибочный ввод, повторную запись и повторное открытие».
Приложите схему объектов, код двух модулей и список проверок с вашими результатами. Не называйте проект внедрением у заказчика. Для демонстрации используйте только учебные наименования, без телефонов и адресов настоящих людей.
Следующий самостоятельный шаг — добавить состояние заказа и запретить изменение закрытого заказа по согласованному правилу. Сначала запишите переходы состояний и проверки, затем меняйте код.
Как превратить выполненную работу в понятное описание, показывает разбор учебного резюме.
Самопроверка
Частые вопросы
Это полноценный бухгалтерский учёт?
Нет. Это законченный учебный сценарий ввода, расчёта, записи и печати заказа без бухгалтерских и складских движений.
Почему расчёт не только на форме?
Проверка в объекте документа защищает обычную запись независимо от того, как были заполнены поля формы.
Можно указать проект как коммерческий опыт?
Нет. Укажите его отдельным учебным проектом и покажите самостоятельно выполненную работу.
Первичные источники
Что проверить дополнительно
Полезный материал
Поделиться статьёй
Сохраните материал или отправьте его тому, кому он пригодится.
Шаг 5 из 5
Формы 1С: от первой кнопки до сохранения заказа
Следующий шаг
Хотите пройти путь с обратной связью?
В программе менторства есть теория, практика и разбор решений. Посмотрите, подходит ли такой формат вашей цели.