Имя: Пароль:
1C
1С v8
Как выбрать данные из табличной части регистратора
,
0 Эльфийка
 
17.02.12
11:43
Имеется регистр накопления, в котором движения делают несколько видов документов. На него есть запрос.

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

.....
Подскажите, пож-та, как сделать выборку из табличной части регистратора, при условии, что регистратор - документ "ВыдачаРасходныхМатериалов". У данного документа есть Табличная часть -Материалы, нужно подтянуть данные из реквизита табличной части ТС.

Пробовала написать:
Запрос.Текст = "
|ВЫБРАТЬ
|РегПартии.Регистратор.Материалы,
|ВыдачаРасходныхМатериалов.ТС КАК ТС;
|ИЗ
|РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(,,Регистратор,) КАК РегПартии
|Левое СОЕДИНЕНИЕ Документ.ВыдачаРасходныхМатериалов.Материалы КАК ВыдачаРасходныхМатериалов
|ПО РегПартии.Регистратор.Материалы = ВыдачаРасходныхМатериалов.Ссылка";
РезультатЗапроса = Запрос.Выполнить();
....
Получаю пустой запрос и выходит
"Ошибка при вызове метода контекста (Выполнить): {(5, 1)}: Ожидается выражение "ВЫБРАТЬ"
<<?>>ИЗ    РезультатЗапроса = Запрос.Выполнить();"

Заранее благодарю
10 Maxus43
 
17.02.12
11:49
(8) нет возможности чтоб ВСЕ в конструкторе, объём кода вырастет на порядок сразу. но начальный синтаксис проверять - конечно конструктором надо
11 Reset
 
17.02.12
11:52
(0) Точку с запятой перед ИЗ убрать
12 Maxus43
 
17.02.12
11:52
>>при условии, что регистратор - документ "ВыдачаРасходныхМатериалов".
ГДЕ
РегПартии.Регистратор Ссылка Документ.ВыдачаРасходныхМатериалов
13 Reset
 
17.02.12
11:53
Хотя и дальше там бред походу
14 vmv
 
17.02.12
11:55
троль детектед
15 Эльфийка
 
17.02.12
12:03
Не забрасывайте, пож-та, камнями, а подскажите.
Ошибку исправила. Начинала изучать программирование на 7.7. Теперь начала изучать 8-ку. То что Вам сразу бросается в глаза, извините я не вижу
16 Ненавижу 1С
 
гуру
17.02.12
12:04
(15) почему пол мужской и где фото?
17 Maxus43
 
17.02.12
12:04
(15) да пятница сёдня, все злые и уставшие) для изучения пользуйся конструктором запросов обязательно, да и вобще пригодится всегда
18 Эльфийка
 
17.02.12
12:06
Спасибо Maxus43 за помощь, добавила условие
ГДЕ
РегПартии.Регистратор Ссылка Документ.ВыдачаРасходныхМатериалов

Теперь выходит ошибка:
"Ошибка при вызове метода контекста (Выполнить): {(10, 11)}: Поле не найдено "РегПартии.РегистраторСсылкаДокумент.уатВыдачаРасходныхМатериалов"
РегПартии.<<?>>РегистраторСсылкаДокумент.уатВыдачаРасходныхМатериалов
                       РезультатЗапроса = Запрос.Выполнить();"
19 Maxus43
 
17.02.12
12:08
(18) РегПартии.Регистратор Ссылка Документ.уатВыдачаРасходныхМатериалов
пробелы там
20 Эльфийка
 
17.02.12
12:09
на самом деле во всех запросах, перед названием документов у меня написано уат, просто при записи на форум -убрано))))
21 Эльфийка
 
17.02.12
12:09
т.е. Добавила

|ГДЕ
|РегПартии.РегистраторСсылкаДокумент.уатВыдачаРасходныхМатериалов"
22 Maxus43
 
17.02.12
12:10
|ГДЕ
|РегПартии.Регистратор[ПРОБЕЛ]Ссылка[ПРОБЕЛ]Документ.уатВыдачаРасходныхМатериалов"
23 Эльфийка
 
17.02.12
12:10
упс, увидела-пробелы)))
24 Эльфийка
 
17.02.12
12:11
Ошибка при вызове метода контекста (Выполнить): {(8, 4)}: Нельзя обращаться к вложенной таблице через поле составного типа "РегПартии.Регистратор.Материалы"
ПО <<?>>РегПартии.Регистратор.Материалы = уатВыдачаРасходныхМатериалов.Ссылка
                       РезультатЗапроса = Запрос.Выполнить();
25 Ненавижу 1С
 
гуру
17.02.12
12:12
(24) это писец пятничный... ответь на (16)
26 Maxus43
 
17.02.12
12:13
РегПартии.Регистратор = уатВыдачаРасходныхМатериалов.Ссылка
27 Maxus43
 
17.02.12
12:16
|ВЫБРАТЬ
|РегПартии.Номенклатура,
|ВыдачаРасходныхМатериалов.ТС КАК ТС;

|ПО РегПартии.Номенклатура = ВыдачаРасходныхМатериалов.Номенклатура";
28 Эльфийка
 
17.02.12
12:18
Ненавижу 1С -что женскому полу не отвечаете? какая разница?
29 Wobland
 
17.02.12
12:20
(28) это такая традиция, и мы не в силах её нарушить
30 Kashemir
 
17.02.12
12:20
(27) Зачем кормить то ? Дайте удочку :)
31 Maxus43
 
17.02.12
12:21
(30) всё, я выдохся, больше не буду)
32 Reset
 
17.02.12
12:22
(28) "женскому полу не отвечаете"
В профиле - Мужской пол!!
33 Эльфийка
 
17.02.12
12:23
Maxus43, не бросайте, пож-та.
Запрос выполняется без ошибок, но когда смотрю в отладчике в параметры запроса ТС не попадает, как быть?
34 Maxus43
 
17.02.12
12:26
(33) что такое ТС вобще? тип данных
35 Эльфийка
 
17.02.12
12:27
это реквизит табличной части документа
36 zak555
 
17.02.12
12:27
а фотку так и не вставила
значит сейчас все ушли
37 Эльфийка
 
17.02.12
12:32
ТС попало в результат запроса, а как теперь правильно написать, чтобы получить данные из ТС?
38 Эльфийка
 
17.02.12
12:32
фотку лучше не выставлять-зачем народ пугать, если я страшнее Пушкаревой)))
39 Ненавижу 1С
 
гуру
17.02.12
12:33
(38) фотку надо обязательно
40 salvator
 
17.02.12
12:35
Кто такая Пушкарева?
41 Wobland
 
17.02.12
12:36
(38) можно фотку ниже подбородка, но тогда в первозданном виде
42 Wobland
 
17.02.12
12:36
(41) хотя, я против ;)
43 Goggy
 
17.02.12
12:36
Хуиз Пушкарёва?
44 Ненавижу 1С
 
гуру
17.02.12
12:39
45 Эльфийка
 
17.02.12
13:28
Что надо дописать, чтобы получить теперь значение ТС
ОбластьДанные.Параметры.ПечДок = ???????.ТС;
46 Эльфийка
 
17.02.12
13:29
Запрос переписан:

Запрос.Текст = "
|ВЫБРАТЬ
|РегПартии.Номенклатура,
|ВыдачаРасходныхМатериалов.ТС КАК ТС
|ИЗ
|РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(,,Регистратор,) КАК РегПартии
|Левое СОЕДИНЕНИЕ Документ.ВыдачаРасходныхМатериалов.Материалы КАК ВыдачаРасходныхМатериалов
|ПО РегПартии.Номенклатура = ВыдачаРасходныхМатериалов.Номенклатура
|ГДЕ
|РегПартии.Регистратор Ссылка Документ.ВыдачаРасходныхМатериалов";

РезультатЗапроса = Запрос.Выполнить();
47 Wobland
 
17.02.12
13:31
(46) Выборка=Результат.Выбрать()
Пока Выборка.Следующий() Цикл
Сообщить("А вот он ТС: "+Выборка.ТС)

ПС ветку не читал
48 Wobland
 
17.02.12
13:33
+(47) а лучше всего делать Область.Параметры.Заполнить(Выборка). для этого имена параметров в макете должны совпадать с полями выборки
49 Эльфийка
 
17.02.12
17:52
Теперь у меня получился вот такой запрос:

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

Подскажите, пож-та, как "обнулить" и где значение Выборка.ТС, потому что верные данные выходят только в первой строчке, а потом там фиксируются совсем другие значения.
50 Эльфийка
 
17.02.12
18:00
Maxus43 и Wobland -ОГРОМНОЕ СПАСИБО!!!!
51 alexandrius
 
17.02.12
18:12
(49)
Обнулить конечно можно и так:
ОбластьДанные.Параметры.ПечДок = "";

Но что бы понять что выходит в первой а что во второй нужна еще часть текста, где идет выводод в макет.
52 Wobland
 
17.02.12
18:25
(49) опять ветку не читал. ты делаешь запрос, а потом пробегаешься выборкой до той строки, которая тебя устраивает. не проще запрос попросить найти то, что тебя устраивает, чем потом выборку обходить?
53 Reset
 
17.02.12
18:34
[Пятница=On]
Можно так:

Строка=Обход.Док.ПолучитьОбъект().Движения.уатПартииТоваровНаСкладах.Выгрузить().Найти(Обход.Номенклатура,"Номенклатура");
Если Строка<>Неопределено тогда
Сообщить("А вот он ТС: "+Строка.ТС);
ОбластьДанные.Параметры.ПечДок=Строка.ТС;
КонецЕсли;

Бред, конечно, но результат вроде тот же, что и в (49)
[Пятница=Off]
54 Reset
 
17.02.12
18:39
(53) А не, ТС (не который тим стартер) в таб части, в движениях нет. Не прокатит. Не повезло.
55 Wobland
 
17.02.12
18:56
скажите мне в одном предложении задачу. лениво ветку читать
56 catena
 
17.02.12
19:35
Все-таки условие из ГДЕ (ссылка=регистратор) лучше запихнуть в соединение, а Обход.Док и Обход.Номенклатура уже в ГДЕ.
И еще... запросы в цикле лучше не писать... Если, конечно, нет склонностей к жесткому аналу...
57 ShoGUN
 
17.02.12
19:44
Цирк на выезде, блин. Для начала стоит почитать документацию, а потом уже писать запросы руками.
58 Wobland
 
17.02.12
20:38
(56) кстати, есть у меня запрос в цикле, не знаю, как переделать
59 Wobland
 
17.02.12
20:41
(58) прикол в том, что для каждой строки ТЧ необходимо вычислить некую скажем так "категорию продажи". а это самое вычисление я вынес в отдельную функцию, в которой результат этого второго запроса по-особенному обрабатывать надо.
60 Эльфийка
 
17.02.12
22:25
Вообще в идеале, хотелось бы весь этот бред добавить в первый запрос, который написан до Получения Макета. Т.е. рассматривается РегистрНакопления.ПартииТоваровНаСкладах из которого интересует Период, Документ, Номенклатура, Приход, Расход. В случае, если регистратором является документ с типом уатВыдачаРасходныхМатериалов, нужно еще плюс ко всему получить данные реквизита ТС (ТранспортныеСредства) Табличной Части Документа уатВыдачаРасходныхМатериалов.
Но наверное, это на грани фантастики?
61 Эльфийка
 
17.02.12
23:41
Конструктором такой сложный запрос выполнить не получается(((
62 Deon
 
17.02.12
23:43
Этак ты с работы до понедельника не уйдешь
63 Deon
 
17.02.12
23:51
Всё мучаешься?
64 Deon
 
17.02.12
23:56
Эльфийка, пингуйся давай
65 Deon
 
18.02.12
00:13
Эх... вот так соберешься помочь, а уже некому
66 Эльфийка
 
18.02.12
00:41
как некому, я здесь, жду помощи)))
67 Deon
 
18.02.12
00:45
о!
68 Эльфийка
 
18.02.12
00:45
ага, до сих пор жду
69 Deon
 
18.02.12
00:47
Ну давай разбираться.
Вот смотри. У тебя есть 2 таблицы - регистр накопления и табличная часть документа. Ты пробовала их засуть в запрос поотдельности, чтобы понять, что они из себя представляют?
70 Эльфийка
 
18.02.12
00:48
нет не пробовала, а это как по отдельности? (вопрос чайника, извините((()
71 Эльфийка
 
18.02.12
00:49
пыталась, весь этот бред вложенным запросом добавить в основной запрос
72 Эльфийка
 
18.02.12
00:49
Ошибка при вызове метода контекста (Выполнить): {(19, 1)}: Ожидается имя таблицы
<<?>>ГДЕ
   РезультатЗапроса = Запрос.Выполнить();
73 Эльфийка
 
18.02.12
00:50
примерно, я понимаю, что они из себя представляют
74 Deon
 
18.02.12
00:53
(73) Т.е. ты понимаешь, что тебе надо соединить таблицу, в которой содержатся движения по всем записям ВСЕХ документов, которые сделали эти записи, и таблицу, в которой хранятся табличные части ВСЕХ документов уатВыдачаРасходныхМатериалов?
75 Эльфийка
 
18.02.12
00:57
(74) Скорее всего примерно получается так
76 Эльфийка
 
18.02.12
01:01
как я себе представляю, есть таблица, в которой содержатся движения по всем записям ВСЕХ документов. В этой таблице нужно выполнить некий отбор по типу документа регистратора и если он удовлетворяет условию, нужно в данную таблицу добавить реквизит из табличной части регистратора
77 Deon
 
18.02.12
01:01
(75) А значит смотрим на запрос в (49) и видим, что для каждой записи из таблицы регистра ты находишь все записи из табличных частей ВСЕХ документов, у которых такая же номенклатура.
78 Эльфийка
 
18.02.12
01:03
так, а надо искать по регистратору?
79 Deon
 
18.02.12
01:05
(76) не совсем. Представь так - мы бежим по записям регистра и для каждой находим соответствующую запись в таблице уатВыдачаРасходныхМатериалов.Материалы
80 Deon
 
18.02.12
01:05
(78) Не надо ничего искать. Надо правильно объединить
81 Deon
 
18.02.12
01:05
+(80) А для этого было бы неплохо понимать, что же мы объединяем
82 Deon
 
18.02.12
01:07
Короче, попробу
83 Deon
 
18.02.12
01:09
й так:

Запрос.Текст = "
|ВЫБРАТЬ
|РегПартии.Номенклатура,
|РегПартии.Регистратор КАК Док,
|уатВыдачаРасходныхМатериалов.ТС КАК ТС
|ИЗ
|РегистрНакопления.уатПартииТоваровНаСкладах.ОстаткиИОбороты(,,Регистратор,) КАК РегПартии
|Левое СОЕДИНЕНИЕ Документ.уатВыдачаРасходныхМатериалов.Материалы КАК уатВыдачаРасходныхМатериалов
|ПО РегПартии.Номенклатура = уатВыдачаРасходныхМатериалов.Номенклатура И РегПартии.Регистратор = уатВыдачаРасходныхМатериалов.Ссылка
|ГДЕ
|(РегПартии.Регистратор Ссылка Документ.уатВыдачаРасходныхМатериалов)
|УПОРЯДОЧИТь ПО
|РегПартии.Регистратор
|";
                       
РезультатЗапроса = Запрос.Выполнить();
                       
Выборка=РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
  Сообщить(""+Выборка.Док+"  Номенклатура "+Выборка.Номенклатура+"  ТС: "+Выборка.ТС);
КонецЦикла;
84 Эльфийка
 
18.02.12
01:32
(83)Deon -Вам честь и слава!!!!!!!!!! Низкий поклон!!!!!Не сочтите за наглость, воздушный поцелуйчик))) Ураааааааааааааааааа, работает
85 Эльфийка
 
18.02.12
01:33
Спасибо всем кто помог мне
86 Deon
 
18.02.12
01:34
Хотя запрос, конечно, хреновый.
87 Эльфийка
 
18.02.12
01:39
приходится его прогонять в цикле вывода строк таблицы отчета.
Было бы неплохо объединить с основным запросом

   ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                  |    РегТовары.Период КАК Период,
                  |    РегТовары.Регистратор КАК Док,
                  |    РегТовары.Регистратор.Номер КАК НомерДок,
                  |    ПРЕДСТАВЛЕНИЕ(РегТовары.Регистратор) КАК ПечДок,
                  |    РегТовары.КоличествоНачальныйОстаток КАК КолНачОст,
                  |    РегТовары.КоличествоПриход КАК КолПриход,
                  |    РегТовары.КоличествоРасход КАК КолРасход,
                  |    РегТовары.КоличествоКонечныйОстаток КАК КолКонОст,
                  |    РегТовары.Номенклатура КАК Номенклатура
                  |ИЗ
                  |    РегистрНакопления.уатПартииТоваровНаСкладах.ОстаткиИОбороты(
                  |            &НачГраница,
                  |            &КонГраница,
                  |            Регистратор,
                  |            ,
                  |            Номенклатура = &Материал
                  |                И Склад = &Склад) КАК РегТовары
                  |ГДЕ
                  |    РегТовары.Регистратор.Организация = &Орг
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    Период,
                  |    Док";
                 
   
   Запрос = Новый Запрос;
   Запрос.Текст = ТекстЗапроса;
   
   Запрос.УстановитьПараметр( "НачГраница", Новый Граница(НачДата, ВидГраницы.Включая));
   Запрос.УстановитьПараметр( "КонГраница", Новый Граница(КонецДня(КонДата), ВидГраницы.Включая));
   Запрос.УстановитьПараметр( "Орг",        Организация);
   Запрос.УстановитьПараметр( "Склад",      Склад);
   Запрос.УстановитьПараметр( "Материал",   Материал);
   
   РезультатЗапроса = Запрос.Выполнить();
88 Deon
 
18.02.12
01:43
(87) Используй (83). По сути всё то же самое
89 Эльфийка
 
18.02.12
01:45
|ГДЕ
                  |    РегТовары.Регистратор.Организация = &Орг

и
|ГДЕ
|(РегПартии.Регистратор Ссылка Документ.уатВыдачаРасходныхМатериалов)

т.е. как правильно объединить условие ГДЕ-оператором И?
90 Эльфийка
 
18.02.12
01:54
т.е. можно написать так?
   ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                  |    РегТовары.Период КАК Период,
                  |    РегТовары.Регистратор КАК Док,
                  |    РегТовары.Регистратор.Номер КАК НомерДок,
                  |    ПРЕДСТАВЛЕНИЕ(РегТовары.Регистратор) КАК ПечДок,
                  |    РегТовары.КоличествоНачальныйОстаток КАК КолНачОст,
                  |    РегТовары.КоличествоПриход КАК КолПриход,
                  |    РегТовары.КоличествоРасход КАК КолРасход,
                  |    РегТовары.КоличествоКонечныйОстаток КАК КолКонОст,
                  |    РегТовары.Номенклатура КАК Номенклатура
                  |уатВыдачаРасходныхМатериалов.ТС КАК ТС
                  |ИЗ
                  |    РегистрНакопления.уатПартииТоваровНаСкладах.ОстаткиИОбороты(
                  |            &НачГраница,
                  |            &КонГраница,
                  |            Регистратор,
                  |            ,
                  |            Номенклатура = &Материал
                  |                И Склад = &Склад) КАК РегТовары
                  |Левое СОЕДИНЕНИЕ Документ.уатВыдачаРасходныхМатериалов.Материалы КАК уатВыдачаРасходныхМатериалов
                  |ПО РегПартии.Номенклатура = уатВыдачаРасходныхМатериалов.Номенклатура И РегПартии.Регистратор = уатВыдачаРасходныхМатериалов.Ссылка
                  |ГДЕ
                  |    (РегТовары.Регистратор.Организация = &Орг) И (РегПартии.Регистратор Ссылка Документ.уатВыдачаРасходныхМатериалов)
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    Период,
                  |    Док";
                 
   
   Запрос = Новый Запрос;
   Запрос.Текст = ТекстЗапроса;
   
   Запрос.УстановитьПараметр( "НачГраница", Новый Граница(НачДата, ВидГраницы.Включая));
   Запрос.УстановитьПараметр( "КонГраница", Новый Граница(КонецДня(КонДата), ВидГраницы.Включая));
   Запрос.УстановитьПараметр( "Орг",        Организация);
   Запрос.УстановитьПараметр( "Склад",      Склад);
   Запрос.УстановитьПараметр( "Материал",   Материал);
   
   РезультатЗапроса = Запрос.Выполнить();
   
---выборка будет в цикле вывода строк таблицы отчета
                   Выборка=РезультатЗапроса.Выбрать();
                   Пока Выборка.Следующий() Цикл
                       Если (Выборка.Номенклатура = Обход.Номенклатура) И (Выборка.Док = Обход.Док) Тогда
                           Сообщить(""+Выборка.Док+"  Номенклатура "+Выборка.Номенклатура+"  ТС: "+Выборка.ТС);
                           Прервать
                       КонецЕсли;
                   КонецЦикла;
                   ОбластьДанные.Параметры.ПечДок = Выборка.ТС
91 Deon
 
18.02.12
01:59
Да. Ну только имена таблиц и запятые где надо надо правильно расставить и всё будет чики-пуки
92 Эльфийка
 
18.02.12
02:01
увидела один недочет, не соображу как исправить, если в табличной части документа уатВыдачаРасходныхМатериалов введено две строки с одинаковой номенклатурной позицией, но разными ТС, отчет объединяет количество на последнюю ТС
93 Эльфийка
 
18.02.12
02:03
Например, номенклатура -Фильтр воздушный, 1шт на ТС "BP 125 /16RUS", 1 шт на ТС "BP 117/16RUS" в результате в отчете выходит BP 117 /16RUS с 2-мя штуками
94 Эльфийка
 
18.02.12
02:04
оформлено в одном документе
95 Эльфийка
 
18.02.12
02:12
(92) а вернее на первую ТС, которую встречает в выборке
96 BOZKURT
 
18.02.12
02:14
(95) Эльфийка, пока меч не уберешь и не покажешь "давно известное место на своем теле", не получишь полный и развернутый ответ. ;)
97 Эльфийка
 
18.02.12
02:23
Теперь после объединения запросов, строки в отчете разбивает, но количество задваивает и пишет на одну ТС
98 Эльфийка
 
18.02.12
02:26
объединение запросов не подходит, теперь не видит других документов
99 Эльфийка
 
18.02.12
02:28
(96)так если место "давно известное", что его показывать? у мужского пола Вы тоже просите показать эти места?
100 BOZKURT
 
18.02.12
02:35
(99) Ни в коем разе! У них дамы просют.
А вообще, не хорошо вопрос повернули.. :)
Не видать Вам ответа.
101 Эльфийка
 
18.02.12
02:41
(100) Так я ответа и так не вижу(((((()))))))))))).и не надеюсь, все спят(((((((((
102 Эльфийка
 
18.02.12
02:44
(100)>А вообще, не хорошо вопрос повернули.. :)

Просто , наверное мне надо было оставаться мужским полом (см.переписку выше))))))).
Но моя невнимательность меня подвела, выдала себя на окончании глаголов))))
103 Wobland
 
18.02.12
06:40
(102) на окончании существительных твоя невнимательность тебя подвела - человеку мужеского полу с именем Эльфийка помогали бы гораздо менее охотно. а вообще - не слушай дураков всяких (ветку опять не читал, топлесс просили?) ;)
104 Эльфийка
 
18.02.12
10:22
(103)Н-да, про логин,то я и забыла)))))))
105 Deon
 
18.02.12
13:49
(92) Периодичность таблицы уатПартииТоваровНаСкладах поставь не Регистратор, а Запись
106 catena
 
18.02.12
17:15
(58)Ну, бывает, не спорю... В 7.7 было много таких задач, в 8.1 правда пока не попадалось, только оракловую базу в одном месте в цикле дергаю...

(61)Конструктором можно любой сложности запрос сварганить, ну, кроме динамических вставок в текст. Немного тренировки и все получится.
У тебя есть два работающих запроса, которые надо соединить по каким-то полям.
107 Эльфийка
 
20.02.12
14:41
(105) После этого строчки разбивает, но значение ТС пишет и в той и другой строчке одинаковое. Пример (93) -результат- ТС "BP 125 /16RUS" 1 шт и ТС "BP 125 /16RUS" 1шт
108 Эльфийка
 
20.02.12
14:48
Теперь запросы переписаны, следующим образом:
   ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                  |    РегТовары.Период КАК Период,
                  |    РегТовары.Регистратор КАК Док,
                  |    РегТовары.Регистратор.Номер КАК НомерДок,
                  |    ПРЕДСТАВЛЕНИЕ(РегТовары.Регистратор) КАК ПечДок,
                  |    РегТовары.КоличествоНачальныйОстаток КАК КолНачОст,
                  |    РегТовары.КоличествоПриход КАК КолПриход,
                  |    РегТовары.КоличествоРасход КАК КолРасход,
                  |    РегТовары.КоличествоКонечныйОстаток КАК КолКонОст,
                  |    РегТовары.Номенклатура КАК Номенклатура
                  |ИЗ
                  |    РегистрНакопления.уатПартииТоваровНаСкладах.ОстаткиИОбороты(
                  |            &НачГраница,
                  |            &КонГраница,
                  //|            Регистратор,
                  |            Запись,
                  |            ,
                  |            Номенклатура = &Материал
                  |                И Склад = &Склад) КАК РегТовары
                  |ГДЕ
                  |    РегТовары.Регистратор.Организация = &Орг
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    Период,
                  |    Док";
                 
   
   Запрос = Новый Запрос;
   Запрос.Текст = ТекстЗапроса;
...
РезультатЗапроса = Запрос.Выполнить();
...

   Запрос1 = Новый Запрос;
   Запрос1.Текст = "ВЫБРАТЬ
   |    уатВыдачаРасходныхМатериалов.Ссылка КАК Док,
   |    уатВыдачаРасходныхМатериалов.Номенклатура КАК Номенклатура,
   |    уатВыдачаРасходныхМатериалов.ТС КАК ТС
   |ИЗ
   |    Документ.уатВыдачаРасходныхМатериалов.Материалы КАК уатВыдачаРасходныхМатериалов
   |
   |УПОРЯДОЧИТЬ ПО
   |    Ссылка,
   |    Номенклатура
   //|    ТС
   |";
   
   РезультатЗапроса1 = Запрос1.Выполнить();
...
....
в цикле Вывода строк таблицы
....

               Если ТипЗнч(ОбластьДанные.Параметры.Док) = Тип("ДокументСсылка.уатВыдачаРасходныхМатериалов")
                   Тогда  
                   
                   Выборка=РезультатЗапроса1.Выбрать();
                   Пока Выборка.Следующий() Цикл
                       Если (Выборка.Номенклатура = Обход.Номенклатура) И (Выборка.Док = Обход.Док) Тогда
                           //Сообщить(""+Выборка.Док+"  Номенклатура "+Выборка.Номенклатура+"  ТС: "+Выборка.ТС);
                           Прервать
                       КонецЕсли;
                   КонецЦикла;
                   ОбластьДанные.Параметры.ПечДок = Выборка.ТС
               КонецЕсли;
109 Эльфийка
 
20.02.12
14:53
т.е. цикл нашел док № 2 с номенклатурой "Фильтр воздушный" и номером ТС "BP 139 /16RUS", вывел в ТаблицуМакета, далее он опять находит этот док с этой же номенклатурой, но другого ТС "BP 122 /16RUS" не видит. Как сделать, чтобы он запомнил эту позицию?
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший