Предзаполнение документов в 1С (шпаргалка)

11.02.26

Разработка - Инструментарий разработчика

Довольно удобный метод, который помогает предзаполнить документ.

Была проблема: метод с сайта ИТС (https://its.1c.ru/db/metod8dev/content/4148/hdoc) для некоторых документов работал, для некоторых — нет. Параметры передавались правильно, в отладке было видно, что они заполняются, но при открытии формы ничего не появлялось. Вот так он выглядит (для тех, у кого нет доступа):

ЭлементыОтбора = Новый Структура("Поставщик, Склад", СсылкаНаПоставщика, СсылкаНаСклад);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЭлементыОтбора);
ОткрытьФорму("Документ.Накладная.ФормаОбъекта", ПараметрыФормы);

Коротко о сути данного метода:

В параметрах формы есть встроенная структура "ЗначенияЗаполнения", в которую можно помещать другие структуры. Они выглядят так: Ключ = "ИмяРеквизита"Значение = "ЗначениеРеквизита".

Разбираться и проверять, почему где-то всё нормально заполняется, а где-то нет, не стал. Начал искать другой способ, но быстро найти не получилось. Решил воспользоваться методом "ПолучитьФорму()" и, заполнив её, просто открыть. Этот метод позволяет предзаполнить как реквизиты объекта, так и реквизиты, созданные на форме.

1. Получаем нужную нам форму (на примере документа "РаботаВВыходныеИПраздничныеДни"):

ФормаДокумента = ПолучитьФорму("Документ.РаботаВВыходныеИПраздничныеДни.ФормаОбъекта");



2. Здесь, помимо параметров формы, мы видим реквизиты, созданные на форме, например "ВремяВЧасах". Чтобы присвоить данному реквизиту нужное значение, просто приравниваем его к тому, что нужно:

ФормаДокумента.ВремяВЧасах = 1;

 

3. Далее, чтобы заполнить реквизиты объекта, используем:

ФормаДокумента.Объект.ИмяНужногоРеквизита =  НашеНовоеЗначение;


Табличные части заполняются как обычно: выбираем табличную часть и используем метод "Добавить()". Например:

НСтр = ФормаДокумента.Объект.Сотрудники.Добавить();
НСтр.Сотрудник = НашеЗначение;


4. После всех изменений используем метод "Открыть()":

ФормаДокумента.Открыть();

 

Всё, у нас откроется ещё не записанный документ, у которого предзаполнены все реквизиты, табличные части и реквизиты формы.

Вступайте в нашу телеграмм-группу Инфостарт

1С:Предприятие шпаргалка открытый код инструмент разработчика программирование задача изменение документа заполнение предзаполнение ИБ памятка начинающий программист обучение

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

24900 руб.

20.08.2024    60830    323    160    

294

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    246472    1353    419    

1131

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

15250 руб.

25.08.2025    42633    88    27    

100

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Библиотека стандартных подсистем Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22570 руб.

06.10.2023    35551    90    40    

112

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9500 руб.

17.05.2024    49834    172    63    

206

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    23737    85    42    

99

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

Разработка "Дизайнер форм 1С" реализована в виде расширения 1С и является универсальным инструментом для разработки прототипа форм с целью демонстраций, технических заданий и т.д. Без участия разработчика с возможностью экспорта в файл внешней обработки и генерации формы используя искусственный интеллект.

36600 руб.

28.08.2025    6488    2    2    

6
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. EvgeniyOlxovskiy 100 11.02.26 09:39 Сейчас в теме
Метод "ПолучитьФорму" фирма 1С не рекомендует использовать
https://its.1c.ru/db/v8std/content/404/hdoc
manul1c; InFlach; +2 Ответить
2. InFlach 63 11.02.26 09:55 Сейчас в теме
(1) Честно говоря, довольно странные рекомендации от ИТС:

Рекомендация обусловлена соображениями:
- повышения устойчивости кода, работающего с формой, за счет разделения программного интерфейса для работы с формой и деталей ее внутренней реализации.
- также сохранения единой стилистики кода прикладных решений.

Первый пункт понятен, нужно просто аккуратнее использовать ПолучитьФорму() и тестировать результат, что касается стилистики кода, то как часто она соблюдается, когда идет доработка конфигурации несколькими программистами? Мне кажется этот пункт подойдет для критики практически любого кода, написанного не самой компанией 1С.

Что касается метода ОткрытьФорму(), который ИТС говорят использовать, описал в статье почему пришлось искать альтернативу и оказалась данная альтернатива довольно надежной, как минимум, если нужно предзаполнять еще не записанный докумет
EvgeniyOlxovskiy; +1 Ответить
3. koln 11.02.26 10:15 Сейчас в теме
В конструкции
ЭлементыОтбора = Новый Структура("Поставщик, Склад", СсылкаНаПоставщика, СсылкаНаСклад);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЭлементыОтбора);
ОткрытьФорму("Документ.Накладная.ФормаОбъекта", ПараметрыФормы);

Ключ
ЗначенияЗаполнения
это, по сути, параметр
ДанныеЗаполнения
обработчика
ОбработкаЗаполнения
модуля объекта. Он не отрабатывает, если в обработке заполнения не предусмотрено заполнение из структуры
4. InFlach 63 11.02.26 10:31 Сейчас в теме
(3) Благодарю за ответ, проверил, все именно так)

Если в штатном документе не предусмотрено заполнение из структуры или нужно предзаполнить реквизиты созданные на форме, может быть слышали о каких-то еще методах, кроме как ПолучитьФорму()?
5. koln 11.02.26 11:57 Сейчас в теме
(4) На сколько я знаю, реквизиты объекта заполняют именно в обработчике заполнения. Логику данного обработчика можно ведь переопределять (в расширении, например) Ну так же все это (реквизиты объекта и реквизиты формы) можно реализовать в обработчике формы ПриСозданииНаСервере
6. InFlach 63 11.02.26 12:13 Сейчас в теме
(5) Да, но тут речь идет о методе, который позволяет "не прикасаться" вообще к документу, который нужно предзаполнить.
7. koln 11.02.26 13:10 Сейчас в теме
(6) На мой взгляд, у вашего метода есть недостаток, а именно, код по получению и заполнению формы нужно будет прописывать в каждом месте, в котором будет предусмотрен этот функционал. А при заполнении в обработчике ПриСозданииНаСервере, нужно будет передавать в параметрах открытия формы только необходимые значения. Общая логика будет прописана в обработчике формы: найден параметр - обработан, не найден - ничего не происходит. Это касается и реквизитов формы, и реквизитов объекта.
8. InFlach 63 11.02.26 13:14 Сейчас в теме
(7) Данный метод сделан для ситуаций, когда не нужно вмешиваться в код штатного документа, который хотите предзаполнить, например вы создали какой-то документ и в нем нужно добавить гиперссылку с определенной логикой заполнения штатного документа, который может предзаполняться также другими объектами ИБ. И если вы не хотите по каким-то причинам менять обработку заполнения в документе/расширении или где-либо еще, вы просто используете данный метод и у вас все работает
Для отправки сообщения требуется регистрация/авторизация