Задача создать ручную операцию-клон некоторых документов
НЗПриемник = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НЗПриемник.Отбор.Регистратор.Установить(Объект.Приемник);
НЗИсточник = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НЗИсточник.Отбор.Регистратор.Установить(Объект.Источник);
НЗИсточник.Прочитать();
Для Каждого Запись Из НЗИсточник Цикл
НоваяЗапись = НЗПриемник.Добавить();
ЗаполнитьЗначенияСвойств(НоваяЗапись, Запись);
Для НомерСубконто = 1 По Запись.СчетДт.ВидыСубконто.Количество() Цикл
ЗначениеСубконто = ???
КонецЦикла;
НомерСубконто = 0;
Для каждого ВидСубконто Из Запись.СчетДт.ВидыСубконто Цикл
НомерСубконто = НомерСубконто + 1;
ЗначениеСубконто = Запись["СубконтоДт"+НомерСубконто];
Если ЗначениеЗаполнено(ЗначениеСубконто) Тогда
УстановитьСубконто(НоваяЗапись.СчетДт, Запись.СубконтоДт, НомерСубконто, ЗначениеСубконто);
КонецЕсли;
КонецЦикла;
КонецЦикла;
НЗПриемник.Записать();
Вопрос - как достучаться до значения Запись.СубконтоДт для каждого Запись.СчетДт.ВидыСубконто[i]
можно ли получить значение субконто по имени или надо жестко описывать ПВХ.ВидыСубконтоХозрасчетные?
ну например Запись.СубконтоДт["СтатьиЗатрат"] так не работает
Используй типовую процедуру из общих модулей.
Они, как правило, работают сразу в нескольких вариантах. И по виду субконто (ПВХ.ВидыСубконтоХозрасчетные), и по номеру субконто, и даже просто по значению - сами определят можно ли установить передаваемое значение в качестве субконто соответствующего счёта.
+ к (2) Например в БП 3.0:
// Процедура устанавливает субконто на счете. Если такое субконто на счете
// отсутствует, то ничего не делается.
// Параметры:
// Счет - ПланСчетовСсылка.Хозрасчетный - Счет, к которому относится субконто.
// Субконто - РегистрБухгалтерииСубконто.Хозрасчетный - Набор субконто.
// ИмяСубконто - Строка, Число - Номер, имя или вид устанавливаемого субконто.
// ЗначениеСубконто - Произвольный - Значение устанавливаемого субконто.
Процедура УстановитьСубконто(Счет, Субконто, ИмяСубконто, ЗначениеСубконто) Экспорт
(4) это я знаю, может не до конца понимаю как использовать. У меня куча разных проводок, надо динамически значения устанавливать для разных видов субконто
все проще, сам себе буратино
Для каждого ВидСубконто Из Запись.СчетДт.ВидыСубконто Цикл
ЗначениеСубконто = Запись.СубконтоДт[ВидСубконто.ВидСубконто];
КонецЦикла;
закрываем
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший