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

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

cacti

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

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

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


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

PS Кто придумал такое обозначение смайлику "Да ну вас!", вдруг кто-то в текстовом режиме смотрит??
 
так..создается документ ЗаказПокупателя, заполняются поля номенклатура, контрагент, организация, количество, цена. в поле Номенклатура добавляются все товары, которые в ТЗ. Как сделать чтобы создавался документ для каждого контрагента и заполнялись только те товары, которые относятся к этому контрагенту.
 
Угумс... ЗагрузитьВнешнююКомпоненту(telepat.dll)
Значит, у вас есть обработка, которая программно создает документ. И вероятно в ней есть код. Следует его проанализировать.
А :( , для начала? Есть умение пользоваться операторами "Если ... иначе..."
Код можете выложить даже)
 
можно сказать что я профан)) новичок.просто сижу разбираюсь и пытаюсь что то сделать. я так понимаю мне надо использовать оператор Пока..т.е. т.е. цикл нужен проходит по всех таблице смотрит какие контрагенты одинаковы по ним записывает данные. но как сделать Цикл?
 
Код киньте из модуля.
 
Функция СоздатьЗаказТоваров(СтрокаДанных)
ДокументОбъект = Документы.ЗаказПокупателя.СоздатьДокумент();


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

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

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

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

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

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


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


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

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

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

КонецЕсли;


Попытка

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

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


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

КонецЦикла;

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

У вас документе эти 3 реквизита строки? или все таки ссылки?

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

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


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

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

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

:)
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab