Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
19 Июн 2018, 21:08
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Нужна помощь по внешней обработке  (Прочитано 5807 раз)

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

Оффлайн example

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-11-20
  • Сайт: 
  • Профессия: Ученик 1С
Здравствуйте! Имеется внешняя обработка на создание документа и заполнения его таб части из dbf таблицы (перед этим все данные из dbf я гружу в табличную часть обработки из нее же и заполняю таб часть док-та)

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

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

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

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

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

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

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

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


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

КонецЦикла;


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

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


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

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

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


КонецЦикла;

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

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


Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
и не лень же 2 одинаковые темы делать ((( :thwrt:
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн chuevsf

  • Хочу! Хочу! Хочу! Мышь на палочке!
  • Глобальный модератор
  • *****
  • Сообщений: 1377
  • РЕПУТАЦИЯ: 345
  • КПД: 25%
  • Регистрация: 2010-07-08
    • Skype: chuevsf
  • Сайт: 
  • Профессия: Программист 1С
Процедура КнопкаВыполнитьНажатие(Кнопка)
   
   
   
    Для каждого стр из Материалы Цикл
       ТребованиеНакладная=Документы.ТребованиеНакладная.СоздатьДокумент();
    ТребованиеНакладная.Организация=Организация;
    ТребованиеНакладная.Подразделение=Участок;
    ТребованиеНакладная.Склад=Склад;
    ТребованиеНакладная.Ответственный=ПараметрыСеанса.ТекущийПользователь;
    ТребованиеНакладная.Дата=КонецМесяца(МесяцЗагрузки);
    ТребованиеНакладная.ОтражатьВУправленческомУчете = Истина;
    ТребованиеНакладная.ОтражатьВБухгалтерскомУчете = Истина;
    ТребованиеНакладная.ОтражатьВНалоговомУчете = Истина;
    ТребованиеНакладная.Ответственный=Справочники.Пользователи.НайтиПоНаименованию();
    ТребованиеНакладная.НДСвСтоимостиТоваров=Перечисления.ДействиеНДСВСтоимостиТоваров.НеИзменять;   

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

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



Оффлайн example

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-11-20
  • Сайт: 
  • Профессия: Ученик 1С
и не лень же 2 одинаковые темы делать ((( :thwrt:
sorry. больше не буду, не знал в какой раздел обращаться)



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

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

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



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

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


Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
chuevsf, думается Вы не правы...
так получится отдельный документ для каждой номенклатуры.
А ему надо разбить по номенклатурным группам...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн example

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-11-20
  • Сайт: 
  • Профессия: Ученик 1С
Вообщем мне нужно чтобы цикл перебирал строки и когда изменится значение строки "КодОбъекта" создавал новый док

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

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
ТекНГ = "";
НовыйДок = "";

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

Оффлайн example

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-11-20
  • Сайт: 
  • Профессия: Ученик 1С
ТекНГ = "";
НовыйДок = "";
Извините за излишнюю глупость, но что мне надо заложить в эти переменные?:dfbsdfbsdf:

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Так и должно быть, как написано ;)
Пустая строка.
Чтобы отличить от объекта документа.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн example

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-11-20
  • Сайт: 
  • Профессия: Ученик 1С
Так и должно быть, как написано ;)
Пустая строка.
Чтобы отличить от объекта документа.
Спасибо, попробую как буду "у" базы)

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

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

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

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

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

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

КонецЕсли;                

КонецЦикла;

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

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

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

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

Последний раз редактировалось: example; 21 Ноя 2012, 10:24


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
135 Сообщений
AIFrame AIFrame
126 Сообщений
alexandr_ll
59 Сообщений
pavl_vs
48 Сообщений
alex0402
47 Сообщений
buketov.av buketov.av
43 Сообщений
ilyay ilyay
37 Сообщений
trialex3
24 Сообщений
magnifico61
21 Сообщений
wise wise
15 Сообщений

* Кто онлайн

  • Точка Гостей: 286
  • Точка Скрытых: 0
  • Точка Пользователей: 2
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal