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

Нужна помощь по внешней обработке

Автор example, 20 ноя 2012, 14:01

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

example

Здравствуйте! Имеется внешняя обработка на создание документа и заполнения его таб части из dbf таблицы (перед этим все данные из dbf я гружу в табличную часть обработки из нее же и заполняю таб часть док-та)

Сейчас все данные грузятся в один документ, а нужно чтобы для каждого значение "КодОбъекта" чтобы создавался отдельный док

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

Вот мой код:
На эту кнопку я гружу данные из дбф в таб часть обработки
Процедура ЗагрузитьФайл(Элемент)

Материалы.Очистить();
хВ = Новый XBase;
хВ.ОткрытьФайл(Путь);
хВ.Первая();
к=1;

Пока Не хВ.ВКонце() Цикл

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

НоваяСтрока.ВидТоплива=Справочники.Номенклатура.НайтиПоНаименованию();

        НоваяСтрока.КодОбъекта=Справочники.НоменклатурныеГруппы.НайтиПоНаименованию(КО);


НоваяСтрока.Расход=Рд;
хВ.Следующая();

КонецЦикла;


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


А на эту кнопку уже формирую док, заполняю шапку и таб часть
Процедура КнопкаВыполнитьНажатие(Кнопка)


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

Для каждого стр из Материалы Цикл

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


КонецЦикла;

ТребованиеНакладная.Записать();

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


cska-fanat-kz

и не лень же 2 одинаковые темы делать ((( :thwrt:
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

chuevsf


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

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

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



example

Цитата: cska-fanat-kz от 20 ноя 2012, 14:08
и не лень же 2 одинаковые темы делать ((( :thwrt:
sorry. больше не буду, не знал в какой раздел обращаться)



Цитата: chuevsf от 20 ноя 2012, 14:12

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

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

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



Цитата: example от 20 ноя 2012, 14:01

а нужно чтобы для каждого значение "КодОбъекта" чтобы создавался отдельный док

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


cska-fanat-kz

chuevsf, думается Вы не правы...
так получится отдельный документ для каждой номенклатуры.
А ему надо разбить по номенклатурным группам...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

example

Вообщем мне нужно чтобы цикл перебирал строки и когда изменится значение строки "КодОбъекта" создавал новый док

Я так понимаю мне нужно текущее значение "КодОбъекта" записать в переменную, а этого я делать пока еще не умею :dfbsdfbsdf:

cska-fanat-kz

ТекНГ = "";
НовыйДок = "";

//и внутри цикла
...
Если ТекНГ <> СтрокаТЧ.КодОбъекта Тогда
    Если НовыйДок <> "" Тогда
        НовыйДок.Записать();
    КонецЕсли;
    НовыйДок = Документы.ЧеТаТам.СоздатьДокумент();
    ТекНГ = СтрокаТЧ.КодОбъекта;
КонецЕсли;
...
//после цикла не забываем
Если НовыйДок <> "" Тогда
    НовыйДок.Записать();
КонецЕсли;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

example

Цитата: cska-fanat-kz от 21 ноя 2012, 06:49
ТекНГ = "";
НовыйДок = "";
Извините за излишнюю глупость, но что мне надо заложить в эти переменные?:dfbsdfbsdf:

cska-fanat-kz

Так и должно быть, как написано ;)
Пустая строка.
Чтобы отличить от объекта документа.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

example

Цитата: cska-fanat-kz от 21 ноя 2012, 09:50
Так и должно быть, как написано ;)
Пустая строка.
Чтобы отличить от объекта документа.
Спасибо, попробую как буду "у" базы)

Т.е. я так понимаю в моей случае конкретно это все будет выглядеть так?

Процедура КнопкаВыполнитьНажатие(Кнопка)

ТекНГ = "";
ТребованиеНакладная = "";   

Для каждого стр Из Материалы Цикл

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

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

КонецЕсли;                

КонецЦикла;

Если ТребованиеНакладная <> "" Тогда
ТребованиеНакладная.Записать();
КонецЕсли;

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


Добавлено: 21 ноя 2012, 10:24


Проверил, работает, но не так как нужно, документ то он новый создает при изменении КодОбъекта, но вносит туда только одну запись в ТабЧасть, а у меня их много и надо чтобы он все записи с одинаковым кодом записал в одну ТабЧасть:(

Теги:

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

Рейтинг@Mail.ru

Поиск