ОБСУЖДЕНИЕ

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

8 ответов 5,1 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

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

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

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

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

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