Автоматизация · 11 мин
Как сделать автозаполнение в 1С: практическое руководство
Как настроить автозаполнение в 1С: быстрый ввод, автоподбор по строке, заполнение табличных частей, подстановка значений по умолчанию и типовые ошибки.
Автозаполнение в 1С — это несколько разных механизмов, которые часто путают между собой: автоподбор при вводе в поле, заполнение табличных частей документа по кнопке, подстановка значений по умолчанию из настроек пользователя и программное заполнение по данным других объектов. Прежде чем что-то настраивать, нужно понять, какой именно сценарий требуется: от этого зависит, достаточно ли штатных настроек или понадобится доработка конфигурации.
В типовых конфигурациях (1С:Бухгалтерия, 1С:Управление торговлей, 1С:ERP) большинство сценариев автозаполнения уже реализовано: цены подставляются из прайсов, счета учета — из настроек номенклатуры, реквизиты контрагента — из карточки справочника. Проблемы возникают, когда заполнение не срабатывает, подставляет не те данные или когда нужен нестандартный алгоритм.
Материал ниже разбирает все основные варианты: от простого включения автоподбора до программного заполнения табличной части через кнопку «Заполнить». Отдельно описаны проверка результата, типовые ошибки и границы, где самостоятельная настройка заканчивается и начинается доработка конфигурации.
Разберитесь, какой вид автозаполнения вам нужен
Под «автозаполнением» пользователи обычно понимают одно из четырёх действий. Первое — автоподбор: вы начинаете вводить название номенклатуры или контрагента, а программа предлагает подходящие варианты. Второе — автоматическая подстановка реквизитов: при выборе контрагента заполняются договор, счета учета, адрес. Третье — заполнение табличной части целиком: документ сам подтягивает товары по остаткам, заказу или предыдущему документу. Четвёртое — значения по умолчанию: организация, склад, касса подставляются в новый документ без выбора.
Каждый сценарий настраивается в своём месте. Автоподбор — свойство поля ввода, значения по умолчанию — раздел персональных настроек, заполнение табличных частей — либо штатная команда документа, либо код в модуле объекта. Смешивание этих механизмов — частая причина ситуации, когда пользователь «настраивает автозаполнение», а на самом деле ему нужна совсем другая функция.
Работает штатно, проверьте настройки поля ввода
Настраивается в персональных настройках пользователя
Штатная кнопка «Заполнить» или доработка
Проверьте заполненность регистров цен и счетов учёта
Включите и проверьте автоподбор при вводе
Автоподбор — самый простой вид автозаполнения. В управляемых формах он работает по умолчанию: при вводе текста в поле ссылки на справочник платформа ищет совпадения по наименованию, коду или другим полям поиска и показывает выпадающий список. Если подсказки не появляются, проверьте три вещи.
Во-первых, способ поиска строки: в свойствах поля ввода (в конфигураторе) за параметр «Способ поиска строки» отвечает вариант «По началу» или «По части строки». Поиск «по началу» не найдёт «Гвоздь 100 мм» по вводу «100». Во-вторых, полнотекстовый поиск: если поиск «по части строки» тормозит на больших справочниках, включите полнотекстовый индекс (Администрирование → Обслуживание → Полнотекстовый поиск). В-третьих, историю ввода: платформа запоминает ранее выбранные значения и предлагает их первыми — иногда это мешает, и историю полезно очистить.
Для полей, где автоподбор мешает (например, поле с ограниченным списком значений), его можно отключить, заменив на быстрый выбор из списка. Это делается в свойствах поля формы: параметры «АвтоОтметкаНезаполненного», «КнопкаВыпадающегоСписка» и «РежимВыбораИзСписка» управляют поведением ввода.
Настройте значения по умолчанию для новых документов
Самый частый запрос пользователей — «чтобы организация и склад подставлялись сами». В типовых конфигурациях это решается без программирования: откройте раздел персональных настроек (обычно «Администрирование → Настройка параметров учета» или «Главное → Персональные настройки», в разных конфигурациях путь отличается) и задайте основную организацию, основной склад, основную кассу, основное подразделение.
После этого при создании документа обработчик «ОбработкаЗаполнения» подставит эти значения автоматически. Важный нюанс: значения по умолчанию подставляются только в новые документы. В уже созданных документах реквизиты не изменятся — их нужно перезаполнить вручную или обработкой группового изменения реквизитов.
Если в шапке документа подставляется не та организация, проверьте, не задано ли значение по умолчанию у другого пользователя под вашей учётной записью, и нет ли в конфигурации дополнительной логики — например, подстановки организации из последнего документа (механизм «копировать значения предыдущего документа» встречается во многих типовых решениях).
- 1Откройте персональные настройки пользователя в разделе администрирования
- 2Задайте основную организацию, склад, кассу, подразделение
- 3Создайте новый документ и проверьте подстановку значений
- 4Если значения не подставились — проверьте права доступа к справочникам
- 5Для старых документов используйте обработку группового изменения реквизитов
Используйте штатное заполнение табличных частей
Большинство документов типовых конфигураций уже содержат команды автозаполнения табличных частей. В документе «Инвентаризация» есть заполнение по остаткам на складе, в «Реализации товаров» — заполнение по заказу или по счёту на оплату, в «Требовании-накладной» — по спецификации номенклатуры. Эти команды обычно скрыты в подменю «Заполнить» или «Подобрать» в командной панели табличной части.
Подбор — отдельный режим: открывается форма списка номенклатуры с остатками и ценами, где можно множественным выбором набирать позиции. Это быстрее, чем построчный ввод, особенно в документах на десятки строк. В некоторых конфигурациях подбор поддерживает сканер штрихкодов — товар добавляется в табличную часть автоматически при сканировании.
Перед заполнением проверьте дату документа и склад в шапке: команды «заполнить по остаткам» берут данные именно на эту дату и по этому складу. Неверный склад в шапке — типовая причина пустой или неправильно заполненной табличной части.
Программное автозаполнение через конфигуратор
Когда штатных механизмов не хватает — например, нужно заполнять табличную часть по собственному алгоритму или подставлять реквизит по нестандартному правилу — используется доработка в конфигураторе. Основные точки входа: процедура «ОбработкаЗаполнения» в модуле объекта (срабатывает при создании документа, в том числе на основании другого) и процедуры «ПриИзменении» в модуле формы (срабатывают при выборе значения в поле).
Типовой пример — заполнение табличной части товаров по данным регистра остатков. В модуле объекта или в общем модуле создаётся запрос к регистру накопления, результат выгружается в табличную часть:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад) КАК Остатки";
Запрос.УстановитьПараметр("Период", Дата);
Запрос.УстановитьПараметр("Склад", Склад);
Товары.Загрузить(Запрос.Выполнить().Выгрузить());
Для подстановки реквизита при выборе значения используется событие формы. Например, при выборе контрагента подставить его основной договор: в модуле формы документа создаётся обработчик «КонтрагентПриИзменении», который вызывает серверную функцию получения договора и присваивает его реквизиту. В тонком клиенте помните про директивы компиляции «&НаКлиенте» и «&НаСервере» — запросы к базе выполняются только на сервере.
Перед доработкой сделайте резервную копию информационной базы и проверяйте изменения на копии. Изменение типовых модулей усложняет последующие обновления конфигурации — по возможности используйте расширения конфигурации, которые позволяют добавить свою логику заполнения без изменения типового кода.
&НаСервере
Процедура ЗаполнитьПоОстаткамНаСервере()
Объект.Товары.Загрузить(ПолучитьОстатки(Объект.Склад, Объект.Дата));
КонецПроцедурыПочему автозаполнение не срабатывает: диагностика
Если поле должно заполняться автоматически, но остаётся пустым, причина почти всегда в данных, а не в программе. Проверяйте по цепочке: заполнен ли источник данных (регистр цен, регистр счетов учёта, карточка договора), действует ли запись на дату документа, совпадают ли измерения регистра (организация, склад, вид цен) с реквизитами документа.
Отдельный класс проблем — права доступа. Если у пользователя нет права чтения регистра сведений «Цены номенклатуры», цена просто не подставится, причём без сообщения об ошибке. Проверьте поведение под пользователем с полными правами: если там всё заполняется, дело в настройке ролей.
Третья группа причин — периодичность и актуальность. Записи периодических регистров сведений действуют с указанной даты: если цена установлена завтрашним числом, а документ датирован сегодня, цена не подставится. Проверяйте дату документа и даты записей регистра.
Как проверить, почему не заполняется
Запись есть, действует на дату документа
Записи нет или её дата позже даты документа
Под полными правами поле заполняется
Не заполняется ни у кого — проблема в данных или коде
Совпадают с измерениями регистра
В документе другой склад или организация
Дата корректна, документ не в закрытом периоде
Документ датирован до появления данных
Типовые ошибки и их последствия
Самая распространённая ошибка — изменение типового кода без резервной копии и без тестирования на копии базы. Даже небольшая правка в «ОбработкеЗаполнения» может сломать создание документов на основании для всех пользователей. Вторая ошибка — использование «Заполнить» без понимания, что команда затирает существующие строки.
Третья ошибка — доработка там, где достаточно настройки. Прежде чем писать код, проверьте: возможно, нужное поведение уже включается функциональной опцией или настройкой учётной политики. Четвёртая — игнорирование расширений: изменение типовой конфигурации вместо расширения приводит к конфликтам при каждом обновлении.
Частые вопросы по автозаполнению в 1С
Можно ли сделать автозаполнение без доступа к конфигуратору?
Да, для большинства бытовых сценариев: значения по умолчанию задаются в персональных настройках, автоподбор работает штатно, заполнение табличных частей доступно через кнопки «Заполнить» и «Подобрать». Конфигуратор нужен только для нестандартных алгоритмов.
Почему при выборе контрагента не подставляется договор?
Проверьте, есть ли у контрагента действующий договор нужного вида и отмечен ли он как основной. Также убедитесь, что организация в договоре совпадает с организацией документа — при несовпадении договор не подставится.
Как заполнить табличную часть из Excel?
Во многих типовых конфигурациях есть штатная загрузка из табличного документа (кнопка «Заполнить → Загрузить из внешнего файла» или обработка «Загрузка данных из табличного документа»). Если её нет, используется универсальная обработка загрузки или доработка.
Автоподбор ищет только по началу названия, как искать по любому слову?
Включите полнотекстовый поиск в разделе администрирования и обновите индекс. Либо в конфигураторе измените способ поиска строки для поля на «по части строки», но на больших справочниках это может замедлить ввод.
Опасно ли менять «ОбработкуЗаполнения» в типовой конфигурации?
Сама правка безопасна при наличии резервной копии и тестировании, но она снимает модуль с поддержки и создаёт конфликты при обновлениях. Правильный путь — расширение конфигурации, где своя логика добавляется поверх типовой.
Что важно запомнить
Начинайте со штатных средств: персональные настройки, автоподбор, кнопки «Заполнить» и «Подобрать». Если автозаполнение не срабатывает — проверяйте данные регистров, даты и права, а не код. Доработку делайте через расширение конфигурации и только после резервного копирования.