Имя: Пароль:
1C
1С v8
Прошу помощи с запросом
0 qubasesx
 
17.07.13
10:07
Для Каждого ТекСтрокаКоробки Из КоробкиПоступление Цикл
       // проверка поступал ли уже ПП с данным рег.номером
       Запрос = Новый Запрос;
       Запрос.Текст = "
           |ВЫБРАТЬ
           |    НоменклатураНаСкладеПоРегНомерам.РегистрационныйНомер
           |ИЗ
           |    РегистрНакопления.НоменклатураНаСкладеПоРегНомерам КАК НоменклатураНаСкладеПоРегНомерам
           |ГДЕ
           |    НоменклатураНаСкладеПоРегНомерам.РегистрационныйНомер = &РегНомер";
       Запрос.УстановитьПараметр("РегНомер", ТекСтрокаКоробки.РегНомер.Наименование);
       Результат = Запрос.Выполнить();
       Выборка = Результат.Выбрать();
       Если Выборка.Количество() > 0 Тогда
           Отказ = Истина;
           Сообщить("Поступление коробки с рег. номером " + ТекСтрокаКоробки.РегНомер.Наименование + " уже сформировано документом " + Выборка.Регистратор + " !");
           Прервать;
       КонецЕсли;
1 Mitriy
 
17.07.13
10:09
жуть...
2 zak555
 
17.07.13
10:09
зачем в цикле запрос ?
3 Maxus43
 
17.07.13
10:09
и? в чем вопрос?
4 qubasesx
 
17.07.13
10:10
При добавлении записи в регистр накопления делаю проверку имеется ли в нём уже такая запись.
Не пойму в чём дело, в переменную Выборка не попадает ни одного значения, хотя искомые записи в регистре накопления имеются. Где я ошибся? Запрос вроде элементарнейший...
5 Maxus43
 
17.07.13
10:10
Если Выборка.Количество() > 0 Тогда

это шикарно)
6 Maxus43
 
17.07.13
10:11
Если Результат.Пустой() Тогда //не было
7 qubasesx
 
17.07.13
10:11
(2) запрос для каждой записи списка
8 Maxus43
 
17.07.13
10:11
ну и РегистрационныйНомер я боюсь что не РегНомер.Наименование
9 kosts
 
17.07.13
10:12
При записи в регистры накопления обычно не проверяют есть ли там похожие записи...
10 Darky
 
17.07.13
10:12
НоменклатураНаСкладеПоРегНомерам.РегистрационныйНомер - это точно строка?
11 qubasesx
 
17.07.13
10:14
(6) не работает
12 Ненавижу 1С
 
гуру
17.07.13
10:14
даже не знаю с чего начинать
пожалуй раскрой нам структуру регистра накопления: поля и их типы
13 qubasesx
 
17.07.13
10:14
(10) это ссылка на спраочник, где живут рег.номера
14 Maxus43
 
17.07.13
10:14
(11) и не должно. Чтобы заработало надо читать всё, и немного думать
15 Maxus43
 
17.07.13
10:15
(13) а зачем ты в запрос наименование передаешь?
16 qubasesx
 
17.07.13
10:15
(14) согласен, просто нужно срочно, поэтому и прошу помощи
17 sttt
 
17.07.13
10:17
"запрос для каждой записи списка" тогда зачем тебе цикл, в запросе религия не позволяет?
НоменклатураНаСкладеПоРегНомерам.РегистрационныйНомер в (&РегНомер");

может тебе запрос ненужен?
18 sttt
 
17.07.13
10:18
+(17) ой! условие параметре вирт. таблицы))
19 qubasesx
 
17.07.13
10:18
(12) Есть рег.накопления НоменклатураНаСкладеПоРегНомерам, в нём реквизит РегистрационныйНомер, куда вводятся записи. Нужно при добавлении очередной записи проверить может она уже имеется в регистре.
20 Maxus43
 
17.07.13
10:20
Запрос.УстановитьПараметр("РегНомер", ТекСтрокаКоробки.РегНомер);

за тебя код писать чтоли? сказали кучу раз уже
21 qubasesx
 
17.07.13
10:20
(17) да нет, цикл движется по записям, которые только будут добавляться, и для каждой из них выполняется запрос, который и узнаёт имеется ли уже такая запись в регистре. Или я не прав?
22 Бертыш
 
17.07.13
10:21
(19) Прям регистр сведений эмулируешь
23 qubasesx
 
17.07.13
10:22
(20) спасибо, помогло!
24 qubasesx
 
17.07.13
10:22
тема закрыта
25 Maxus43
 
17.07.13
10:22
(21) не прав методологически, запросы в цикле не есть хорошо
26 Ненавижу 1С
 
гуру
17.07.13
10:24
(25) да там чувствую еще та структура регистра
27 qubasesx
 
17.07.13
10:25
(26) это точно
28 qubasesx
 
17.07.13
10:26
(25) я говорил начальству, что можно сделать без регистров и лучше, нет говорят, делай с регистром и точка
29 Wobland
 
17.07.13
10:27
(28) начальство - оно такое. наверное, ещё и циклы в запросе делать не умеет
30 qubasesx
 
17.07.13
10:28
(29) куда уж там, хорошо хоть знает что такое запрос
31 Maxus43
 
17.07.13
10:28
(28) архитектора вам надо туда
32 Ненавижу 1С
 
гуру
17.07.13
10:30
(30) кто сказал начальству про запросы?
33 qubasesx
 
17.07.13
10:30
а чем плохо условие Если Выборка.Количество() > 0 Тогда ?
34 qubasesx
 
17.07.13
10:31
(25) цикл в запросе лучше?
35 Ненавижу 1С
 
гуру
17.07.13
10:32
(34) это как?
знаю про циклы по результатам запроса - это лучше
36 Maxus43
 
17.07.13
10:32
(33) лишнее действие Результат.Выбрать();
(34) циклов в запросе 1с не поддерживает
37 qubasesx
 
17.07.13
10:44
(36) Результат.Выбрать(); там в сообщение подставляется реквизит
38 qubasesx
 
17.07.13
10:45
(35) ну вот, общаясь с вами я уже всё про циклы узнал :)
39 Maxus43
 
17.07.13
11:03
(37) не подставляется ничего, подставится только Выборка.Следующий() когда
40 qubasesx
 
18.07.13
12:09
(39) Пока Выборка.Следующий() Цикл
перебирает все строки, которые выбрались по результатам запроса?