Обработка, платформа 8.1

Тема в разделе "1C и всё что с ней связано", создана пользователем -, 19 мар 2009.

  1. Гость

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

    Для Каждого <параметр1> ИЗ <параметр2> Цикл

    Параметр 2 - как я понимаю - документ, т.е. вида примерно Документ.Обращение, а вот с первым - проблема :)
     
  2. Zab

    Zab Well-Known Member
    1C Team

    Регистрация:
    7 авг 2006
    Сообщения:
    583
    Симпатии:
    0
    Первый - переменная, в которую система положит элемент колекции, которую циклом обходишь (например, строку из таблицы значений, или элемент массива). А параметр 2 совсем не обязательно документ. И вида "примерноДокумент" я тоже не знаю в системе. Например, это может быть массив, таблица значений, табличное поле и пр. и пр.
     
  3. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    на твоем примере:
    Для Каждого СтрокаТабличнойЧасти ИЗ ТабличнаяЧасть Цикл
     
  4. Гость

    хм... а вот до того что второй параметр - ТабличнаяЧасть я и не додумалась :) нужно попробовать... тогда теоретически нужно сделать отбор дабы не зациклилось
     
  5. mialord

    mialord Гость

    Так. Описываю. Читай внимательно
    Из справки 1С
    <Оператор цикла Для каждого предназначен для циклического обхода коллекций значений. При каждой итерации цикла возвращается новый элемент коллекции. Обход осуществляется до тех пор, пока не будут перебраны все элементы коллекции.>
    Табличная часть содержит коллекцию строк и, при использовании оператора "Для каждого" перебираются все коллекции табличной части (т.е. все строки от начала до конца без повторений и без пропусков). Другое дело что порядок может быть нарушен, но что перебирет их все и без повтора, и без пропусков - это однозначно, и ничего ни где не зациклится.
    Вообще, вторым параметром может быть любой объект, имеющий свою коллекцию значений. О наличии коллекции значений у объекта информацию всегда можно найти в синтаксис - помошнике. Посмотрите в СП <ТаблицаЗначений> к примеру.
    И я не совсем понял о каком отборе идет речь?
     
  6. Гость

    Справку 1с я уже читала, для меня лично не очень понятно там написанное :(
    С трудом представляю зачем мне обходить значения пустой табличной части :) Для начала хотелось бы ее заполнить
    Грубо говоря - имеется конкретный вид документов и эти документы нужно выбрать на определенную дату, которая вычисляется по заданному условию в зависимости от текущей. далее на основе части реквизитов этих документов нужно заполнить табличную часть формы обработки.
    Синтаксис-помошник для меня с трудом воспринимаем, а в учебниках приводятся только куски кода, выполняющего те или иные действия без описания что откуда берется :(
     
  7. mialord

    mialord Гость

    Так, задание я понял пока что только приблезительно. Толи с русским языком слабовато, ну, или вы не представляете пока то, что хотите сделать. Я склоняюсь ко второму варианту.
    Давайте, я потрачу свое время, и мы разберемся с постановкой задачи:
    Грубо говорить не надо :)
    Вид, или тип вы определитесь. Я, например, предполагаю, что тип. Примеры(ЗаказПокупателя, ВозвратТоваровОтПокупателя и т.д.)
    Текущей, чего? Дата текущая, или текущего документа. Предположим, для дальнейшего разговора, что вы имели ввиду именно текущую дату.
    Предположим, что я вас понял, хоть и не уверен в этом, и предположим, что нам необходимо отобрать заказы покупателей(счета) и реквизиты счетов (Ссылка, Контрагент, Сумма) записать в табличную часть, которую назовем ТЧМояОбработка

    ЗапросВыбратьСчета = новый Запрос;
    ЗапросВыбратьСчета.Текст = " ВЫБРАТЬ
    | Счет.Ссылка КАК Счет
    | Счет.Контрагент КАК Покупатель
    | Счет.Сумма КАК СуммаКВыплате
    |
    | ИЗ Документ.ЗаказПокупателя КАК Счет
    |
    | ГДЕ ЗаказПокупателя.ПометкаУдаления = ЛОЖЬ
    | И ЗаказПокупателя.Проведен = ИСТИНА
    | И ЗаказПокупателя.Дата = Дата
    |
    | УПОРЯДОЧИТЬ ПО
    | ЗаказПокупателя.Дата";

    ЗапросВыбратьСчета.УстановитьПараметр("Дата", <Выражение расчета даты вставить сюда, либо вызвать обработчик расчета>);
    РезультатЗапроса = ЗапросВыбратьСчета.Выполнить().Выбрать();
    Пока РезультатЗапроса.Следующий() Цикл
    // Если есть найденный счет добавляем элемент ТЧ
    СтрокаТЧ = ТЧМояОбработка.Добавить();
    СтрокаТЧ.Счет = РезультатЗапроса.Счет; // Колонка ТЧ "Счет" имеет тип Ссылка(Документы.ЗаказПокупателя)
    СтрокаТЧ.Контрагент = РезультатЗапроса.Покупатель; // Колонка ТЧ "Контрагент" имеет тип Ссылка(Справочники.Контрагент)
    СтрокаТЧ.Сумма = РезультатЗапроса.СуммаКВыплате; // Число
    КонецЦикла;
     
  8. Гость

    Извиняюсь, с формулировками и вправду туго.
    Ситуация такова - имеется такой документ как обращение - в отдел поступает заявка. Вводя эту заявку было бы удобнее сразу видеть какой из специалистов занят в ближайшее время, в каком филиале. То есть на основании уже введенных обращений необходимо вывести данные о занятости персонала на определенный период времени (здесь срок зависит от типа заявки, дата - текущая системная, от нее отсчет). Не в текстовом виде, а именно таблицы, т.к. хотелось бы чтобы вызывая обработку не из документа, а из меню, была возможность документ-основание открыть для просмотра/редактирования.
     
  9. mialord

    mialord Гость

    Ну вот, с задачкой определились. В дальнейшем старайтесь сразу ставить задачу корректно.
    На основании задачи, я пришел к выводу, что вам вполне хватит того что я описал.
    В момент ввода заявки определяем необходимые данные (используя запрос), и, возвращаем их в табличную часть. А откуда ВЫ будете вызывать обработку не так уж и важно. Пишите внешную, цепляете куда хотите, она выбирает данные и записывает данные туда, куда вы ей приказали. Все предельно просто.
    Пример: как составить запрос и как выгрузить данные я вам показал. Остается дело техники - сложить в голове данные, представить алгоритм, положить перед собой клавиатуру. и твороить, творить, творить.....
     
Загрузка...

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