Замечание 1:
Никакой Вам там транзакции не нужно. Сделайте вот так:
Для СтрокаДанных=НачалоДанных По ПоследниеДанные Цикл
//*** тут достаю название товаров, количестов, штуки и т.д.
докПриходная.НоваяСтрока();
//*** тут заполняю таблицу полученными данными
//!!!Зачем в цыкле запись??? докПриходная.Записать();
КонецЦикла;
//Добавте проверку на количество строк
Если докПриходная.КоличествоСтрок() > 0 Тогда
докПриходная.Записать();
ОткрытьФорму(докПриходная.ТекущийДокумент());
КонецЕсли;
По поводу Вашего вопроса, смотрю на скрин и вижу что курсор у Вас там не синего цвета, а зеленого - соответственно Вы пользуетесь Formex. Поэтому для вызова любой процедуры доукмента можете прописать:
СписЗнач = СоздатьОбъект("СписокЗначений");
Результат = Сервис.ВыполнитьПроцедуру(докПриходная.ТекущийДокумент(), "ПриОткрытии",СписЗнач);
Если Результат = 0 Тогда
Сообщить ("Написано граблями");
КонецЕсли;
ВыполнитьПроцедуру(<?>,,)
Синтаксис:
ВыполнитьПроцедуру(<Контекст>,<ИмяПроцедуры>,<СписокАргументов>)
Назначение:
Метод предназначен для выполнения процедуры в заданном контексте.
Возвращает 1 в случае успеха, 0 - в противном случае.
ПРИМЕР:
Перем Конт;
Сервис = СоздатьОбъект("Сервис");
ОткрытьФорму(Обработка.Демо, Конт);
Список = СоздатьОбъект("СписокЗначений");
Список.ДобавитьЗначение("Первый параметр");
Список.ДобавитьЗначение("Второй параметр");
Список.ДобавитьЗначение("Третий параметр");
Сервис.ВыполнитьПроцедуру(Конт, "Выполнить2
Но, Вы сами подумайте, зачем выполнять предопределенную процедуру ПриОткрытии(), если она в любом случае сработает и выполнит то что там написано ?
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)