Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 сен 2024, 01:43

Программно создать документ и внести в одну из его табличных частей данные

Автор Lobasterman, 30 янв 2014, 15:11

0 Пользователей и 1 гость просматривают эту тему.

Lobasterman

Доброго рабочего времени, коллеги!
Задача:
Нужно из справочника (только элементы) перенести информацию в документ внешней обработкой.
Обработка выборку элементов справочника делает хорошо, заносит себе в табличную часть, а потом перебирает для создания документов и внесения в них нужной информации. Столкнулся вот с чем:
При попытке присвоить реквезиту табличной части вновь создаваемого документа выдается ошибка
Поле объекта не обнаружено (Дата)   Тч.Дата=Строк.ДатаНачала;
При этом само значение Строк.ДатаНачала доступно и читаемо.
Вот кусок кода:

            Нов=Документы.ВходящийДокумент.СоздатьДокумент();
            Нов.Организация=Справочники.Организации.НайтиПоКоду("001");
            Нов.Контрагент=ТекСтрока.СсылкаНаДокумент.ВладелецКонтрагент;
            Нов.Комментарий=ТекСтрока.СсылкаНаДокумент.Комментарий;
            Нов.Автор=ТекСтрока.СсылкаНаДокумент.Автор;
            Нов.ВидДокумента=ТекСтрока.СсылкаНаДокумент.ВидДокумента;
            //Нов.ДатаИсполнения=ТекСтрока.СсылкаНаДокумент.Дата
            Нов.Исполнен=ТекСтрока.СсылкаНаДокумент.Завершен;
            Нов.ДатаИсполнения=ТекСтрока.СсылкаНаДокумент.ДатаЗавершения;
            Нов.Содержание=ТекСтрока.СсылкаНаДокумент.Наименование;
            Нов.ИсходящаяДата=ТекСтрока.СсылкаНаДокумент.ДатаДокумента;
            Нов.ИсходящийНомер=ТекСтрока.СсылкаНаДокумент.НомерДокумента;
            Нов.РегистрационныйНомер=ТекСтрока.СсылкаНаДокумент.НомерРегистрации;
            Нов.ДатаРегистрации=Текстрока.СсылкаНаДокумент.ДатаРегистрации;
            ТЧСтарый=ТекСтрока.СсылкаНаДокумент.Документооборот;
            ТЧ=Нов.Резолюции;
            ее=1;
            
            Для каждого Строка из ТЧСтарый цикл
               Строк=ТЧСтарый.Получить(ее);
               ТЧ.Добавить();
               Тч.Дата=Строк.ДатаНачала;
               ТЧ.АвторРезолюции="";
               ТЧ.Исполнитель=Строк.Сотрудник;
               ТЧ.ОписаниеРезолюции=Строк.Примечание;
               //ТЧ.ОтчетИсполнителя=
               //ТЧ.Завершен=
               //ТЧ.СрокИсполнения=
               //ТЧ.ДатаИсполнения=
               ее=ее+1;
            КонецЦикла;
            Нов.Записать();
Где грабли?

Vit1501

Твой кусок кода должен выглядеть примерно так:

Для каждого СтрокаТЧ Из ТЧ Цикл
    НоваяСтрокаТЧ = ТЧ.Добавить();
    НоваяСтрокаТЧ.Дата = СтрокаТЧ.Дата;
    ...
КонецЦикла;

Хотя меня терзают смутные сомнения, что скорее всего у тебя цикл пойдет и по вновь добавленным строкам... Поэтому я бы скопировал ТЧ в таблицу значений, потом в цикле обошел бы ТЧ добавляя при этом строки в таблицу значений. А после цикла загрузил бы таблицу значений в ТЧ

Lobasterman

Мерси, с таблицей значений - это идея! Кстати, это и быстрее работает...
Вот только вопрос - как сильно изменился механизм работы с ТЗ в 8.2 по сравнению с 7.7 (не кодил в 8-ке по-серьезному лет 5, больше по админской части делать приходилось)?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск