|
Итератор для значения не определен в переменной | ☑ | ||
---|---|---|---|---|
0
desaint08
18.04.16
✎
13:05
|
Здравствуйте,ругается 1с вот так "Итератор для значения не определен",я сделал запрос ,ин мне вернул 2 колонки,содержащие ссылки на номенклатуру,я выгрузил в таблицу значений,и поместил в переменную "данныеНормОдежды"это все в модуле обьекта документ,потом в форме документа я хотел сделать вот так
Для Каждого строчка Из данныеНормОдежды Цикл Если строчка.спецодежда.код= редактируемаяСтрока.текущаястрока.НаименованиеНМНА.код Тогда редактируемаяСтрока.текущаястрока.СпецодеждаНов =строчка.спецодежда; редактируемаяСтрока.текущаястрока.ВидНормыНовый =строчка.ВидНормыВыдачи; иначе Сообщить("нет по норме"); подскажите,пожалуйстачто не так, если можно поподробней,и не пинайте сильно,я только учусь. |
|||
1
salvator
18.04.16
✎
13:06
|
данныеНормОдежды - какой тип?
|
|||
2
zbv
18.04.16
✎
13:06
|
в модуле объекта
Перем данныеНормОдежды Экспорт; |
|||
3
desaint08
18.04.16
✎
13:18
|
(2) это есть
|
|||
4
desaint08
18.04.16
✎
13:19
|
(1) справочник ссылка
|
|||
5
desaint08
18.04.16
✎
13:21
|
ЗапросНорм = Новый Запрос;
ЗапросНорм.Текст = "ВЫБРАТЬ | НормыВыдачиСпецодеждыСрезПоследних.Спецодежда, | НормыВыдачиСпецодеждыСрезПоследних.ВидНормыВыдачи |ИЗ | РегистрСведений.НормыВыдачиСпецодежды.СрезПоследних(&НаДату, ) КАК НормыВыдачиСпецодеждыСрезПоследних |ГДЕ | НормыВыдачиСпецодеждыСрезПоследних.ПодразделениеОрганизации.код = &подразделение | И НормыВыдачиСпецодеждыСрезПоследних.КодРабочегоМеста = &КодРабочегоМестаНов" ; ЗапросНорм.УстановитьПараметр("НаДату", НачалоДня(Дата)); ЗапросНорм.УстановитьПараметр("подразделение", Подразделение.код); ЗапросНорм.УстановитьПараметр("КодРабочегоМестаНов",РабочееМестоКод); ВыборкаНорм = ЗапросНорм.Выполнить().Выгрузить(); |
|||
6
lera01
18.04.16
✎
13:22
|
(4) А какие у тебя строчки в справочникессылке?
|
|||
7
desaint08
18.04.16
✎
13:25
|
я запутался,я что сказать должен?
СправочникСсылка.Номенклатура, есть к примеру 6 строк,возвращает точно. |
|||
8
Мимохожий Однако
18.04.16
✎
13:26
|
Отладчиком встань на ошибочную строчку и вычисли проблемное значение. Возможно, удивишься.
|
|||
9
salvator
18.04.16
✎
13:27
|
(4) и как ты ссылку хочешь перебрать?
|
|||
10
lera01
18.04.16
✎
13:27
|
Ты пытаешься перебрать что-то там называемое Строчка в Справочникессылке? Ну нету там строчек никаких. В таблице значений, которую ты создал в (5), есть что перебирать. А в элементе справочника нету.
|
|||
11
Sabbath
18.04.16
✎
13:30
|
(4) в (0) говоришь, что там таблица значений, а теперь ссылка
Это не коллекция чтобы ее обходить, смотри, как получаешь переменную, что-то там не так |
|||
12
desaint08
18.04.16
✎
13:31
|
я хочу код номенклатуры полученной из запроса сравнивать в поле на форме,заранее выбранном
|
|||
13
desaint08
18.04.16
✎
13:31
|
секунду
|
|||
14
Sabbath
18.04.16
✎
13:32
|
(5) ВыборкаНорм - это таблица, а как получил данныеНормОдежды не видно
|
|||
15
Jokerman
18.04.16
✎
13:32
|
Не видим как присвоил данныеНормОдежды
|
|||
16
lera01
18.04.16
✎
13:33
|
(14) Для Каждого строчка Из данныеНормОдежды Цикл а в (5) у тебя ВыборкаНорм таблица.
|
|||
17
desaint08
18.04.16
✎
13:35
|
из отладчика
ВыборкаНорм ТаблицаЗначений ТаблицаЗначений ВыборкаНорм.Колонки.Спецодежда.ТипЗначения ТипЗначения Null, Номенклатура ОписаниеТипов |
|||
18
desaint08
18.04.16
✎
13:35
|
ЗапросНорм = Новый Запрос;
ЗапросНорм.Текст = "ВЫБРАТЬ | НормыВыдачиСпецодеждыСрезПоследних.Спецодежда, | НормыВыдачиСпецодеждыСрезПоследних.ВидНормыВыдачи |ИЗ | РегистрСведений.НормыВыдачиСпецодежды.СрезПоследних(&НаДату, ) КАК НормыВыдачиСпецодеждыСрезПоследних |ГДЕ | НормыВыдачиСпецодеждыСрезПоследних.ПодразделениеОрганизации.Код = &подразделение | И НормыВыдачиСпецодеждыСрезПоследних.КодРабочегоМеста = &КодРабочегоМестаНов" ; ЗапросНорм.УстановитьПараметр("НаДату", НачалоДня(Дата)); ЗапросНорм.УстановитьПараметр("подразделение", Подразделение.Родитель.Родитель.Код); ЗапросНорм.УстановитьПараметр("КодРабочегоМестаНов",РабочееМестоКод); ВыборкаНорм = ЗапросНорм.Выполнить().Выгрузить(); // ДанныеНормОдежды= ВыборкаНорм; |
|||
19
desaint08
18.04.16
✎
13:37
|
(16) да у меня таблица значений,или я не правильно организовал выборку?
|
|||
20
Мимохожий Однако
18.04.16
✎
13:39
|
Вычисли в отладчике редактируемаяСтрока.текущаястрока
|
|||
21
Sabbath
18.04.16
✎
13:40
|
(17) ну так обходишь ты не ВыборкаНорм , а данныеНормОдежды
Смысл в этой строчке? ДанныеНормОдежды= ВыборкаНорм; там точно между запросом и этой строкой ничего? ДанныеНормОдежды - это не какой-нибудь реквизит объекта или формы, где тип определен? Если ты просто хочешь обойти результат запроса, либо обходит ТЗ ВыборкаНорм, а лучше вообще не выгружай запрос, а обходи выборку ВыборкаНорм = ЗапросНорм.Выполнить().выбрать(); Пока Выборка.Следующий() Цикл // тут твой код КонецЦикла; и т.п. |
|||
22
Sabbath
18.04.16
✎
13:41
|
(21) В смысле ВыборкаНорм.Следующий()
а то вдруг не поймешь |
|||
23
desaint08
18.04.16
✎
13:50
|
данныенормОдежды,это я сам переменную написал,а как правильно? если я вдруг в будущем столкнусь с этой ситуацией,в чем ошибка моя?
|
|||
24
desaint08
18.04.16
✎
13:52
|
(20) редактируемаяСтрока.ТекущаяСтрока ДокументТабличнаяЧастьСтрока.ПеремещениеСпецодежды.Перемещение ДокументТабличнаяЧастьСтрока.ПеремещениеСпецодежды.Перемещение
|
|||
25
Мимохожий Однако
18.04.16
✎
13:52
|
(23)Основная ошибка - нежелание\неумение пользоваться отладчиком и анализировать конкретную ситуацию. Без обид.
|
|||
26
desaint08
18.04.16
✎
13:54
|
нет вот я сейчас другого человека выбрал и нормально все без ошибок выполнилось
|
|||
27
desaint08
18.04.16
✎
13:54
|
(25) бро ты подскажи...
|
|||
28
desaint08
18.04.16
✎
13:58
|
строчка.Спецодежда
Спецодежда Куртка СправочникСсылка.Номенклатура |
|||
29
Мимохожий Однако
18.04.16
✎
13:59
|
(27)К сожалению, я не телепат.
|
|||
30
desaint08
18.04.16
✎
14:02
|
я выгружаю таблицу значений из запроса,значение справочник ссылка.номенклатура в переменную,как потом из этой переменной мне сравнить код выгруженной номенклатуры с кодом в поле формы?
|
|||
31
desaint08
18.04.16
✎
14:05
|
все заработало,само без изменений,странно...
|
|||
32
desaint08
18.04.16
✎
14:20
|
не непойму я,снова не работает!
|
|||
33
salvator
18.04.16
✎
14:34
|
(32) Код давай полностью.
|
|||
34
Sabbath
18.04.16
✎
14:54
|
(33) а вдруг ты его украдешь?
ТС, короче, разберись в отладчике, как у тебя вместо ТЗ оказывается ссылка, в какой момент и почему. |
|||
35
desaint08
18.04.16
✎
15:19
|
сейчас будет страшно,но не кричите плз.
|
|||
36
desaint08
18.04.16
✎
15:20
|
Функция ПолучениеНормОдежды(Подразделение,РабочееМестоКод,Дата) экспорт
ЗапросНорм = Новый Запрос; ЗапросНорм.Текст = "ВЫБРАТЬ | НормыВыдачиСпецодеждыСрезПоследних.Спецодежда, | НормыВыдачиСпецодеждыСрезПоследних.ВидНормыВыдачи |ИЗ | РегистрСведений.НормыВыдачиСпецодежды.СрезПоследних(&НаДату, ) КАК НормыВыдачиСпецодеждыСрезПоследних |ГДЕ | НормыВыдачиСпецодеждыСрезПоследних.ПодразделениеОрганизации.код = &подразделение | И НормыВыдачиСпецодеждыСрезПоследних.КодРабочегоМеста = &КодРабочегоМестаНов" ; ЗапросНорм.УстановитьПараметр("НаДату", НачалоДня(Дата)); ЗапросНорм.УстановитьПараметр("подразделение", Подразделение.код); ЗапросНорм.УстановитьПараметр("КодРабочегоМестаНов",РабочееМестоКод); ВыборкаНорм = ЗапросНорм.Выполнить().Выгрузить(); //СтруктураОтбор = Новый Структура("Подразделение, КодРабочегоМестаНовый, Спецодежда", Подразделение, РабочееМестоКод, Неопределено); //Пока ВыборкаНорм.Следующий() Цикл // //СтруктураОтбор.Спецодежда = ВыборкаНорм.Спецодежда; //МасСтрСпецодежда = Перемещение.НайтиСтроки(СтруктураОтбор); Если ВыборкаНорм.Количество()=0 Тогда ЗапросНорм = Новый Запрос; ЗапросНорм.Текст = "ВЫБРАТЬ | НормыВыдачиСпецодеждыСрезПоследних.Спецодежда, | НормыВыдачиСпецодеждыСрезПоследних.ВидНормыВыдачи |ИЗ | РегистрСведений.НормыВыдачиСпецодежды.СрезПоследних(&НаДату, ) КАК НормыВыдачиСпецодеждыСрезПоследних |ГДЕ | НормыВыдачиСпецодеждыСрезПоследних.ПодразделениеОрганизации.Код = &подразделение | И НормыВыдачиСпецодеждыСрезПоследних.КодРабочегоМеста = &КодРабочегоМестаНов" ; ЗапросНорм.УстановитьПараметр("НаДату", НачалоДня(Дата)); ЗапросНорм.УстановитьПараметр("подразделение", Подразделение.Родитель.Код); ЗапросНорм.УстановитьПараметр("КодРабочегоМестаНов",строка(РабочееМестоКод)); ВыборкаНорм = ЗапросНорм.Выполнить().Выгрузить(); Если ВыборкаНорм.Количество()=0 Тогда ЗапросНорм = Новый Запрос; ЗапросНорм.Текст = "ВЫБРАТЬ | НормыВыдачиСпецодеждыСрезПоследних.Спецодежда, | НормыВыдачиСпецодеждыСрезПоследних.ВидНормыВыдачи |ИЗ | РегистрСведений.НормыВыдачиСпецодежды.СрезПоследних(&НаДату, ) КАК НормыВыдачиСпецодеждыСрезПоследних |ГДЕ | НормыВыдачиСпецодеждыСрезПоследних.ПодразделениеОрганизации.Код = &подразделение | И НормыВыдачиСпецодеждыСрезПоследних.КодРабочегоМеста = &КодРабочегоМестаНов" ; ЗапросНорм.УстановитьПараметр("НаДату", НачалоДня(Дата)); ЗапросНорм.УстановитьПараметр("подразделение", Подразделение.Родитель.Родитель.Код); ЗапросНорм.УстановитьПараметр("КодРабочегоМестаНов",РабочееМестоКод); ВыборкаНорм = ЗапросНорм.Выполнить().Выгрузить(); КонецЕсли; КонецЕсли; //КонецЦикла; // ДанныеНормОдежды= ВыборкаНорм; ДанныеНормОдежды= ВыборкаНорм; возврат ДанныеНормОдежды//МасСтрСпецодежда КонецФункции // ПолучениеНормОдежды() |
|||
37
Мимохожий Однако
18.04.16
✎
15:24
|
Переменная ВыборкаНорм почему два раза используется. Сделай вторую переменную хотя бы ВыборкаНорм1. Но делать запрос внутри выборки...?! На какую строку вставал отладчиком?
|
|||
38
desaint08
18.04.16
✎
15:25
|
а ругалось оно потому что ,я ДанныеНормОдежды=выборкаНорм делал между Конецесли,вот кроме того я писал это после иначе,то есть
Конецесли иначе ДанныеНормОдежды= ВыборкаНорм; конецЕсли; возврат ДанныеНормОдежды; |
|||
39
Мимохожий Однако
18.04.16
✎
15:25
|
Есть такая штучка. Называется консоль запросов. На ней потренируйся
|
|||
40
desaint08
18.04.16
✎
15:28
|
когда один раз то работает,я просто не там все расположил,сейчас работает. как в иерархии элементов сделать запрос?а то 3 раза один и тот же запрос использовать не совсем верно,да?
|
|||
41
desaint08
18.04.16
✎
15:32
|
спасибо вам, что не бросаете таких как непонятливых я.
|
|||
42
Мимохожий Однако
18.04.16
✎
15:34
|
Итак. Начнём с постановки ТЗ.
|
|||
43
desaint08
18.04.16
✎
15:40
|
ищем спецодежду которая положена,есть к примеру 3 подразделения 1(родитель иерархия элементов), 101,1001, цикл мол если не 1001 то 101 и если не там то в 1 есть точно номенклатура,далее я результат запроса помещаю в переменную,и на форме делаю сравнение,с номенклатурой выбранной пользоватем.
|
|||
44
desaint08
18.04.16
✎
15:42
|
вот теперь благодаря вам все работает,но запрос я так понимаю неоптимален,но в иерархии он не ищет,почему не понятно(
|
|||
45
Мимохожий Однако
18.04.16
✎
15:42
|
Не надо писать, что ты предполагаешь делать. Напиши, что хочешь получить в результате.
|
|||
46
desaint08
18.04.16
✎
15:46
|
в результате я хочу 1 запрос который получит значение подразделения.а не 3 как сейчас,но я человек как вы понимаете недалекий,поэтому с готовностью выслушаю что делать.
|
|||
47
Мимохожий Однако
18.04.16
✎
15:47
|
Не переживай. Опустим эмоции. Что ты хочешь получить? Какие исходные данные?
|
|||
48
desaint08
18.04.16
✎
15:52
|
я их получил ,только дооолго.
НормыВыдачиСпецодеждыСрезПоследних.Спецодежда, | НормыВыдачиСпецодеждыСрезПоследних.ВидНормыВыдачи |
|||
49
Мимохожий Однако
18.04.16
✎
16:05
|
Ты хочешь получить список Спецодежды и нормы выдачи по подразделению на определенную дату? Что потом планируешь делать с этой таблицей?
|
|||
50
salvator
18.04.16
✎
16:11
|
(36) А зачем три запроса с тремя подразделениями? Нельзя все три поместить в массив и делать в одном запросе?
|
|||
51
Мимохожий Однако
18.04.16
✎
16:13
|
(50)Ну, вот... спугнул.
|
|||
52
desaint08
20.04.16
✎
07:53
|
(50) извините приболел,а поподробней можно? как это сделать?
|
|||
53
salvator
20.04.16
✎
09:16
|
(52) МассивПодразделений= Новый Массив;
МассивПодразделений.Добавить(СсылкаНаПодразделение1); МассивПодразделений.Добавить(СсылкаНаПодразделение2); ... |ГДЕ | НормыВыдачиСпецодеждыСрезПоследних.ПодразделениеОрганизации В (&МассивПодразделений) |
|||
54
desaint08
20.04.16
✎
11:15
|
надо попробовать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |