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

Тема в разделе "1C и всё что с ней связано", создана пользователем cacti, 4 июн 2010.

  1. cacti

    cacti Гость

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

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

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


    КонецЦикла;
     
  2. unknown181538

    unknown181538 НеГуру
    1C Team

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

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

    cacti Гость

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

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Угумс... ЗагрузитьВнешнююКомпоненту(telepat.dll)
    Значит, у вас есть обработка, которая программно создает документ. И вероятно в ней есть код. Следует его проанализировать.
    А :( , для начала? Есть умение пользоваться операторами "Если ... иначе..."
    Код можете выложить даже)
     
  5. cacti

    cacti Гость

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

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Код киньте из модуля.
     
  7. cacti

    cacti Гость

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


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

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

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

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

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

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


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


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

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

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

    КонецЕсли;


    Попытка

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

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


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

    КонецЦикла;

    КонецПроцедуры
     
  8. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    1) Это что такое?
    У вас документе эти 3 реквизита строки? или все таки ссылки?

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

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


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

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

    :)
     
Загрузка...

Поделиться этой страницей