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