Имя: Пароль:
1C
1С v8
внешняя обработка на создание документа
0 example
 
20.11.12
15:21
Здравствуйте! Имеется внешняя обработка на создание документа и заполнения его таб части из dbf таблицы (перед этим все данные из dbf я гружу в табличную часть обработки из нее же и заполняю таб часть док-та)

Как это реализовать?

Вот мой код:
На эту кнопку я гружу данные из дбф в таб часть обработки

Процедура ЗагрузитьФайл(Элемент)
   
   Материалы.Очистить();
   хВ = Новый XBase;
   хВ.ОткрытьФайл(Путь);
   хВ.Первая();
   к=1;
   
   Пока Не хВ.ВКонце() Цикл
       
       ГН=СтрЗаменить(хВ.INV," ","");
       НУ=СтрЗаменить(хВ.N_U," ","");
       ВТ=СтрЗаменить(хВ.KOD," ","");
       КО=СтрЗаменить(хВ.KOB," ","");
       Рд=СтрЗаменить(хВ.RASHOD," ","");
       НоваяСтрока=Материалы.Добавить();
       НоваяСтрока.ГаражныйНомер=Справочники.рар_ГаражныеНомера.НайтиПоНаименованию(ГН);
       НоваяСтрока.НомерУчастка=НУ;    
       
       НоваяСтрока.ВидТоплива=Справочники.Номенклатура.НайтиПоНаименованию();        
       
           НоваяСтрока.КодОбъекта=Справочники.НоменклатурныеГруппы.НайтиПоНаименованию(КО);
       
       
       НоваяСтрока.Расход=Рд;
       хВ.Следующая();
       
   КонецЦикла;
   
   
КонецПроцедуры


А на эту кнопку уже формирую док, заполняю шапку и таб часть

Процедура КнопкаВыполнитьНажатие(Кнопка)
   
   
      ТребованиеНакладная=Документы.ТребованиеНакладная.СоздатьДокумент();
   ТребованиеНакладная.Организация=Организация;
   ТребованиеНакладная.Подразделение=Участок;
   ТребованиеНакладная.Склад=Склад;
   ТребованиеНакладная.Ответственный=ПараметрыСеанса.ТекущийПользователь;
   ТребованиеНакладная.Дата=КонецМесяца(МесяцЗагрузки);
   ТребованиеНакладная.ОтражатьВУправленческомУчете = Истина;
   ТребованиеНакладная.ОтражатьВБухгалтерскомУчете = Истина;
   ТребованиеНакладная.ОтражатьВНалоговомУчете = Истина;
   ТребованиеНакладная.Ответственный=Справочники.Пользователи.НайтиПоНаименованию();
   ТребованиеНакладная.НДСвСтоимостиТоваров=Перечисления.ДействиеНДСВСтоимостиТоваров.НеИзменять;    
   
   Для каждого стр из Материалы Цикл
               
   СтрокаТН=ТребованиеНакладная.Материалы.Добавить();    
   СтрокаТН.Номенклатура=стр.ВидТоплива;
   ЭтаФорма.Обновить();
   СтрокаТН.Количество=стр.Расход;
   СтрокаТН.ЕдиницаИзмерения=Справочники.ЕдиницыИзмерения.НайтиПоНаименованию();
   СтрокаТН.Коэффициент=Число(1.000);
   СтрокаТН.СтатьяЗатрат=Справочники.СтатьиЗатрат.НайтиПоНаименованию();
   СтрокаТН.НоменклатурнаяГруппа=стр.КодОбъекта;
   СтрокаТн.ГаражныйНомер=стр.ГаражныйНомер;
   СтрокаТн.Качество=Справочники.Качество.Новый;
   СтрокаТн.Склад=Склад;
   ТребованиеНакладная.Записать();
   
       
   КонецЦикла;    
   
   ТребованиеНакладная.Записать();

КонецПроцедуры


Сейчас все данные грузятся в один документ, а нужно чтобы для каждого значение "КодОбъекта" создавался отдельный док
1 shuhard
 
20.11.12
15:22
2 Feunoir
 
20.11.12
15:26
В чем вопрос-то?

Таблица сортируется по КодОбъекта;
Перебираются строки;
Если код в текущей строке отличается от кода в предыдущей, то записывает документ и создаем новый.

Это самый простой вариант.
3 del123
 
20.11.12
15:31
Зачем в цикле каждый раз документ записываешь?
4 example
 
20.11.12
15:46
Feunoir, я понимаю, что надо так, я не могу это в своем коде отобразить по неопытности!!

del123, это здесь ошибся, а так док конечно же записываю после цикла!
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.