Обработка подключается как внешняя обработка заполнения для справочника ресурсных спецификаций.
В форме нужно выбрать спецификацию образец, после чего заполнится табличная часть с материалами.
Далее отмечаем те позиции, которые нужно заменить во вновь создаваемых спецификациях. В нижней таблице появятся колонки с номерами редактируемых материалов.
Далее выбираем номенклатуру без спецификаций - добавляем в таблицу или можно воспользоваться обработкой подбора по кнопке сверху формы.
Затем нужно заполнить материалы по образцу - вторая кнопка слева вверху формы. И при необходимости меняем в строках материал по умолчанию, на тот, который отличается в строке с номенклатурой.
После этого можно нажать кнопку "Создать спецификации" и обработка создаст новые элементы справочников ресурсная спецификация и этапы производства для всех строк, у которых нет флага наличия спецификации.
Если в примере материал заполняется по спецификации, тогда система попытается найти спецификацию для номенклатуры материала, если не найдет - очистит спецификацию.
Корректно работать будет только по тем спецификациям, в выходных изделиях которых одна позиция номенклатуры. С характеристиками номенклатуры работа не прописана.
Запрос берет только первую строку из изделий:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| МатериалыИУслуги.Номенклатура КАК Номенклатура,
| РесурсныеСпецификацииВыходныеИзделия.Номенклатура КАК НоменклатураПример
|ИЗ
| Справочник.РесурсныеСпецификации.МатериалыИУслуги КАК МатериалыИУслуги
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РесурсныеСпецификации.ВыходныеИзделия КАК РесурсныеСпецификацииВыходныеИзделия
| ПО МатериалыИУслуги.Ссылка = РесурсныеСпецификацииВыходныеИзделия.Ссылка
|ГДЕ
| МатериалыИУслуги.Ссылка = &Спецификация";
Запрос.УстановитьПараметр("Спецификация", Спецификация);
ТаблицаДанных = Запрос.Выполнить().Выгрузить();
Номенклатура = ТаблицаДанных[0].НоменклатураПример;
ВывестиРезультатНаФорму(ТаблицаДанных);
Перезаполнение материалов возможно для всех или только для пустых ячеек.
Отбор = Новый Структура();
Отбор.Вставить("Пометка", Истина);
ТабМатериалов = РезультатНаФорме.НайтиСтроки(Отбор);
Для Каждого Стр из ТЗНоменклатура Цикл
Для Каждого СтрТабМат Из ТабМатериалов Цикл
Если Не ЗначениеЗаполнено(Стр["Материал"+СтрТабМат.Номер]) Или РезультатВопроса = 1 Тогда
Стр["Материал"+СтрТабМат.Номер] = СтрТабМат.Номенклатура;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Проверено на 1С:Предприятие 8.3 (8.3.22.1672), 1С:ERP Управление предприятием 2 (2.5.9.131).