Была проблема: метод с сайта ИТС (https://its.1c.ru/db/metod8dev/content/4148/hdoc) для некоторых документов работал, для некоторых — нет. Параметры передавались правильно, в отладке было видно, что они заполняются, но при открытии формы ничего не появлялось. Вот так он выглядит (для тех, у кого нет доступа):
ЭлементыОтбора = Новый Структура("Поставщик, Склад", СсылкаНаПоставщика, СсылкаНаСклад);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЭлементыОтбора);
ОткрытьФорму("Документ.Накладная.ФормаОбъекта", ПараметрыФормы);
Коротко о сути данного метода:
В параметрах формы есть встроенная структура "ЗначенияЗаполнения", в которую можно помещать другие структуры. Они выглядят так: Ключ = "ИмяРеквизита", Значение = "ЗначениеРеквизита".
Разбираться и проверять, почему где-то всё нормально заполняется, а где-то нет, не стал. Начал искать другой способ, но быстро найти не получилось. Решил воспользоваться методом "ПолучитьФорму()" и, заполнив её, просто открыть. Этот метод позволяет предзаполнить как реквизиты объекта, так и реквизиты, созданные на форме.
1. Получаем нужную нам форму (на примере документа "РаботаВВыходныеИПраздничныеДни"):
ФормаДокумента = ПолучитьФорму("Документ.РаботаВВыходныеИПраздничныеДни.ФормаОбъекта");

2. Здесь, помимо параметров формы, мы видим реквизиты, созданные на форме, например "ВремяВЧасах". Чтобы присвоить данному реквизиту нужное значение, просто приравниваем его к тому, что нужно:
ФормаДокумента.ВремяВЧасах = 1;
3. Далее, чтобы заполнить реквизиты объекта, используем:
ФормаДокумента.Объект.ИмяНужногоРеквизита = НашеНовоеЗначение;
Табличные части заполняются как обычно: выбираем табличную часть и используем метод "Добавить()". Например:
НСтр = ФормаДокумента.Объект.Сотрудники.Добавить();
НСтр.Сотрудник = НашеЗначение;
4. После всех изменений используем метод "Открыть()":
ФормаДокумента.Открыть();
Всё, у нас откроется ещё не записанный документ, у которого предзаполнены все реквизиты, табличные части и реквизиты формы.
Вступайте в нашу телеграмм-группу Инфостарт
