Записать те товары в документ

  • Автор темы cacti
  • Дата начала
C

cacti

#1
для каждого контрагента забивается все товары, т.е. не учитывается какой контрагент указан, как сделать так чтобы он учитывал контрагента и выгружал те товары которые он заказал?

Для Каждого СтрокаДанных Из СоответствияТоваров Цикл
НоваяСтрока = ДокументОбъект.Товары.Добавить();

Имя = СтрокаДанных.Наименование;
СправочникНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(Имя);
НоваяСтрока.Номенклатура = СправочникНоменклатура.Ссылка;
НоваяСтрока.Количество = СтрокаДанных.Количество;
НоваяСтрока.Цена = СтрокаДанных.Цена;


КонецЦикла;
 

unknown181538

НеГуру
28.12.2008
1 417
0
#2
для каждого контрагента забивается все товары, т.е. не учитывается какой контрагент указан, как сделать так чтобы он учитывал контрагента и выгружал те товары которые он заказал?
:*цензура*you:
Слова не согласованы, кто "он" должен учитывать не понятно...
Косяк забить - это хорошо, но причем тут 1С?

PS Кто придумал такое обозначение смайлику "Да ну вас!", вдруг кто-то в текстовом режиме смотрит??
 
C

cacti

#3
так..создается документ ЗаказПокупателя, заполняются поля номенклатура, контрагент, организация, количество, цена. в поле Номенклатура добавляются все товары, которые в ТЗ. Как сделать чтобы создавался документ для каждого контрагента и заполнялись только те товары, которые относятся к этому контрагенту.
 

unknown181538

НеГуру
28.12.2008
1 417
0
#4
Угумс... ЗагрузитьВнешнююКомпоненту(telepat.dll)
Значит, у вас есть обработка, которая программно создает документ. И вероятно в ней есть код. Следует его проанализировать.
А :( , для начала? Есть умение пользоваться операторами "Если ... иначе..."
Код можете выложить даже)
 
C

cacti

#5
можно сказать что я профан)) новичок.просто сижу разбираюсь и пытаюсь что то сделать. я так понимаю мне надо использовать оператор Пока..т.е. т.е. цикл нужен проходит по всех таблице смотрит какие контрагенты одинаковы по ним записывает данные. но как сделать Цикл?
 
C

cacti

#7
Функция СоздатьЗаказТоваров(СтрокаДанных)
ДокументОбъект = Документы.ЗаказПокупателя.СоздатьДокумент();


сИмя = СтрокаДанных.Склад;
оИмя = СтрокаДанных.Контрагент;
кИмя = СтрокаДанных.ФИО;

СправочникКонтрагент = Справочники.Контрагенты.НайтиПоНаименованию(кИмя);
СправочникСклад = Справочники.Склады.НайтиПоНаименованию(сИмя);
СправочникОрганизация = Справочники.Организации.НайтиПоНаименованию(оИмя);

Для Каждого СтрокаДанных Из СоответствияТоваров Цикл

ДокументОбъект.Контрагент = СправочникКонтрагент.Ссылка;
НоваяСтрока = ДокументОбъект.Товары.Добавить();
Имя = СтрокаДанных.Наименование;
СправочникНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(Имя);
НоваяСтрока.Номенклатура = СправочникНоменклатура.Ссылка;
НоваяСтрока.Количество = СтрокаДанных.Количество;
НоваяСтрока.Цена = СтрокаДанных.Цена;
ДокументОбъект.Дата=ТекущаяДата();

КонецЦикла;
Возврат ДокументОбъект;

КонецФункции


и при нажатии кнопки вызывается функция


Процедура Создать(Кнопка)

Для Каждого СтрокаТаблицы Из СоответствияТоваров Цикл
Если ЗначениеЗаполнено(СтрокаТаблицы.Номенклатура) Тогда
Продолжить;
Иначе

ДокументОбъект = СоздатьЗаказТоваров(СтрокаТаблицы);

КонецЕсли;


Попытка

ДокументОбъект.Записать();

Исключение
Сообщить("Ошибка");


Продолжить;
КонецПопытки;

КонецЦикла;

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

Darlock

Well-known member
04.01.2008
560
1
#8
1) Это что такое?
СправочникКонтрагент = Справочники.Контрагенты.НайтиПоНаименованию(кИмя);
СправочникСклад = Справочники.Склады.НайтиПоНаименованию(сИмя);
СправочникОрганизация = Справочники.Организации.НайтиПоНаименованию(оИмя);
У вас документе эти 3 реквизита строки? или все таки ссылки?

2) вместо перебора циклом (строк может быть от 1 до хз сколько) используйте запрос.

В идеале в запросе сделать итоги по контрагенту. А потом уже полученную выборку перебирать циклом.


Добавлено: А еще лучше, выложить здесь обработку свою и конкретнее сформулировать вопрос. Что-то типа:
"на форме у меня 3 реквизита "Склад", "Контрагент", "Организация".
"Так же есть таблица с номенклатурой, ценой, ...".

"Нужно чтоб формировались документы для каждого контрагента со своим товаров". (предполагаю, что контрагент в таблице присутствует)

Угумс... ЗагрузитьВнешнююКомпоненту(telepat.dll)
:)