Имя: Пароль:
1C
1С v8
Как выбрать ТЧ из документа, параметр которого устанавливается в запросе
0 yavasya
 
17.07.14
16:30
Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПриходнаяНакладная.СтавкаНДС,
    |    СУММА(ПриходнаяНакладная.СуммаНДС) КАК СуммаНДС,
    |    СУММА(ПриходнаяНакладная.Сумма) КАК Сумма,
    |    СУММА(АктПереоценки.Цена * ПриходнаяНакладная.Количество) КАК СуммаВРознице,
    |    СУММА(ПриходнаяНакладная.Количество) КАК Количество
       |ИЗ
    |    Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладная
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктПереоценки.Товары КАК АктПереоценки
    |        ПО ПриходнаяНакладная.Номенклатура = АктПереоценки.Номенклатура
    |ГДЕ
    |ПриходнаяНакладная.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
    |И АктПереоценки.Ссылка.ДокументОснование = &Источник
    |И ПриходнаяНакладная.Ссылка = &Источник
    |И ПриходнаяНакладная.Ссылка.Проведен
    |СГРУППИРОВАТЬ ПО
    |ПриходнаяНакладная.СтавкаНДС";
    Запрос.УстановитьПараметр("Источник",Источник);
    Запрос.УстановитьПараметр("НачДата", НачалоДня(ДатаНачала));
    Запрос.УстановитьПараметр("КонДата", КонецДня(ДатаОкончания));
    КоллекцияОбъектов=Запрос.Выполнить().Выгрузить();
1 yavasya
 
17.07.14
16:32
Здесь приходная накладная, но вместо неё в зависимости от регистратора, может быть другой документ , например, остатки по товарам документ
2 yavasya
 
17.07.14
16:34
Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    &Источник.СтавкаНДС,
    |    СУММА(&Источник.СуммаНДС) КАК СуммаНДС,
    |    СУММА(&Источник.Сумма) КАК Сумма,
    |    СУММА(АктПереоценки.Цена * &Источник.Количество) КАК СуммаВРознице,
    |    СУММА(&Источник.Количество) КАК Количество
       |ИЗ
    |    Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладная
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктПереоценки.Товары КАК АктПереоценки
    |        ПО &Источник.Номенклатура = АктПереоценки.Номенклатура
    |ГДЕ
    |&Источник.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
    |И АктПереоценки.Ссылка.ДокументОснование = &Источник
    |И &Источник.Ссылка.Проведен
    |СГРУППИРОВАТЬ ПО
    |&Источник.СтавкаНДС";
    Запрос.УстановитьПараметр("Источник",Источник);
    Запрос.УстановитьПараметр("НачДата", НачалоДня(ДатаНачала));
    Запрос.УстановитьПараметр("КонДата", КонецДня(ДатаОкончания));
    КоллекцияОбъектов=Запрос.Выполнить().Выгрузить();
3 yavasya
 
17.07.14
16:34
хотелось бы так
4 Принцип работы синхр
 
17.07.14
16:35
Запрос.текст = ?(Источник= ДокостаткиПоТоварам,СтрЗаменить(Запрос.Текст,"ПриходнаяНакладная.Товары","ДокостаткиПоТоварам.Остатки"),Запрос.текст)
5 Принцип работы синхр
 
17.07.14
16:35
как-то так
6 Ymryn
 
17.07.14
16:35
(2) почти угадал. Только   |&Источник.Ссылка.Дата МЕЖДУ &НачДата И &КонДата Замени на |"+Источник+".Ссылка.Дата Между ...
И так везде. А в качестве источника передавай строчку с наименованием.
А еще лучше выгружай все в табличную часть, а уже табличную часть передавай как параметр.
7 Ymryn
 
17.07.14
16:36
(4) кстати, да. Вариант лучше. Не подумал в этом направлении )
8 yavasya
 
17.07.14
16:37
(4) не врубаюсь что то
9 Ymryn
 
17.07.14
16:38
(8) через СтрЗаменить везде меняешь текст параметра на нужный, согласно значению параметра.
10 Ymryn
 
17.07.14
16:39
(9) *параметризуемый кусок запроса (блин, не могу найти нужное слово) :(
11 РенеДекарт
 
17.07.14
17:10
ВЫБОР КОГДА ДокостаткиПоТоварам ССЫЛКА Документ.ПриходнаяНакладная ТОГДА
ИНАЧЕ ...
12 yavasya
 
17.07.14
17:27
условиеНаДокумент=ВыборкаДетальныеЗаписи.Регистратор;
ВыборкаДетальныеЗаписи.Регистратор;

Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    "+УсловиеНаДокумент+".СтавкаНДС,
    |    СУММА(&Источник.СуммаНДС) КАК СуммаНДС,
    |    СУММА(&Источник.Сумма) КАК Сумма,
    |    СУММА(АктПереоценки.Цена * &Источник.Количество) КАК СуммаВРознице,
    |    СУММА(&Источник.Количество) КАК Количество
       |ИЗ
    |    Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладная
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктПереоценки.Товары КАК АктПереоценки
    |        ПО &Источник.Номенклатура = АктПереоценки.Номенклатура
    |ГДЕ
    |&Источник.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
    |И АктПереоценки.Ссылка.ДокументОснование = &Источник
    |И &Источник.Ссылка.Проведен
    |СГРУППИРОВАТЬ ПО
    |&Источник.СтавкаНДС";
    Запрос.УстановитьПараметр("Источник",Источник);
    Запрос.УстановитьПараметр("НачДата", НачалоДня(ДатаНачала));
    Запрос.УстановитьПараметр("КонДата", КонецДня(ДатаОкончания));
    КоллекцияОбъектов=Запрос.Выполнить().Выгрузить();
13 yavasya
 
17.07.14
17:28
(6) напомнил
14 Крошка Ру
 
17.07.14
17:32
(12) Это как?

|    Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладная
|        ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктПереоценки.Товары КАК АктПереоценки
|        ПО &Источник.Номенклатура = АктПереоценки.Номенклатура
15 Крошка Ру
 
17.07.14
17:36
(12) А данные тебе конечно нужны для печатной формы?
16 yavasya
 
17.07.14
17:36
Крошка))) (14) затормозил, у меня всё равно он берется параметром, ничего не надо изменять
17 yavasya
 
17.07.14
17:36
внешнего отчета
18 yavasya
 
17.07.14
17:36
надеюсь сработает
19 yavasya
 
17.07.14
17:41
условиеНаДокумент=ВыборкаДетальныеЗаписи.Регистратор.Ссылка;
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    СУММА(АктПереоценки.Цена * ПриходнаяНакладная.Количество) КАК СуммаВРознице
    |ИЗ
    |    "+условиеНаДокумент+".Товары КАК ПриходнаяНакладная
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктПереоценки.Товары КАК АктПереоценки
    |        ПО ПриходнаяНакладная.Номенклатура = АктПереоценки.Номенклатура
    |ГДЕ
    |    АктПереоценки.Ссылка.ДокументОснование = &Источник
    |    И ПриходнаяНакладная.Ссылка = &Источник
    Запрос.УстановитьПараметр("Источник",условиеНаДокумент);
20 Крошка Ру
 
17.07.14
17:45
Делай из регистров, тогда и с документами такой заморочки не будет
21 Крошка Ру
 
17.07.14
17:47
(19) И судя по

условиеНаДокумент=ВыборкаДетальныеЗаписи.Регистратор.Ссылка;


у тебя ещё и запрос в цикле.
22 yavasya
 
17.07.14
17:48
вот именно )))(19)
23 yavasya
 
17.07.14
17:52
переоценка , она присваивается партии, из  за этого не получается по регитсрам
24 yavasya
 
17.07.14
17:53
в регистре сведений ЦеныНоменклатуры нет измерения "Партии"
25 Крошка Ру
 
17.07.14
17:58
(24) То есть ты хочешь меня убедить, что в регистрах нет учетной информации, которая есть в документах?
26 yavasya
 
17.07.14
18:24
условиеНаДокумент=ВыборкаДетальныеЗаписи.Регистратор.Метаданные().Имя;
    Запрос = Новый Запрос;
    Запрос.Текст =                
    "ВЫБРАТЬ
    |    СУММА(АктПереоценки.Цена * ПриходнаяНакладная.Количество) КАК СуммаВРознице
    |ИЗ
    |    Документ."+условиеНаДокумент+".Товары КАК ПриходнаяНакладная
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктПереоценки.Товары КАК АктПереоценки
    |        ПО ПриходнаяНакладная.Номенклатура = АктПереоценки.Номенклатура
    |ГДЕ
    |    АктПереоценки.Ссылка.ДокументОснование = &Источник
    |    И ПриходнаяНакладная.Ссылка = &Источник ";
    Запрос.УстановитьПараметр("Источник",ВыборкаДетальныеЗаписи.Регистратор.Ссылка);
27 yavasya
 
17.07.14
18:25
другой запрос прийдётся делать , всё равно по регистратору, то же самое(25) .Так взлетело
28 yavasya
 
17.07.14
21:12
интересно в копии базы отчет работает, а в рабочей базе выдает
ошибку : регистратор.Контрагент необнаружен
Сделал чек.дбфл ненашел ошибку , пробую ТИИ.
Найти того контрагента и грохнуть ?
29 yavasya
 
17.07.14
21:13
Писал в рабочей базе никогда бы ошибку не нашел
30 yavasya
 
17.07.14
21:14
или как перескочить эту ошибку ?
31 pessok
 
17.07.14
23:15
ВЫБРАТЬ Источник.НужноеПоле КАК Поле
ИЗ &Источник КАК Источник
ПОМЕСТИТЬ ВТДанныеИсточника
;
ВЫБРАТЬ * ИЗ ВТИсточник

Запрос.УстановитьПараметр("Источник", Источник);
32 pessok
 
17.07.14
23:16
ВЫБРАТЬ Источник.НужноеПоле КАК Поле
ИЗ &Источник КАК Источник
ПОМЕСТИТЬ ВТДанныеИсточника
;
ВЫБРАТЬ * ИЗ ВТДанныеИсточника
33 pessok
 
17.07.14
23:17
обшибся...
общий смысл - поместить все в виртуальную таблицу из источника, где таблица данных для виртуальной таблицы - параметр. а потом уже выбирать из виртуальной таблицы
34 pessok
 
17.07.14
23:20
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ Источник.СтавкаНДС, Источник.СуммаНДС, Источник.Сумма, Источник.Цена * Источник.Количество КАК СуммаВРознице, Источник.Количество
ПОМЕСТИТЬ ВТДанныеИсточника
ИЗ &Источник КАК Источник

;

ВЫБРАТЬ
    |    ВТДанныеИсточника.СтавкаНДС,
    |    СУММА(ВТДанныеИсточника.СуммаНДС) КАК СуммаНДС,
    |    СУММА(ВТДанныеИсточника.Сумма) КАК Сумма,
    |    СУММА(АктПереоценки.Цена * ПриходнаяНакладная.Количество) КАК СуммаВРознице,
    |    СУММА(ВТДанныеИсточника.Количество) КАК Количество
       |ИЗ
    |    ВТДанныеИсточника КАК ВТДанныеИсточника
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктПереоценки.Товары КАК АктПереоценки
    |        ПО ПриходнаяНакладная.Номенклатура = АктПереоценки.Номенклатура
    |ГДЕ
    |ПриходнаяНакладная.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
    |И АктПереоценки.Ссылка.ДокументОснование = &Источник
    |И ПриходнаяНакладная.Ссылка = &Источник
    |И ПриходнаяНакладная.Ссылка.Проведен
    |СГРУППИРОВАТЬ ПО
    |ПриходнаяНакладная.СтавкаНДС";
35 alle68
 
18.07.14
02:24
(28) Как можно найти то, чего нет? И не видно в запросе этого таинственного "регистратор.Контрагент".
(26) Ссылка через ссылку - это сильно! "ВыборкаДетальныеЗаписи.Регистратор.Ссылка".
Коль так, то можно и советом (33) воспользоваться с временной (не виртуальной) таблицей.