|
Связать набор записи и виртуальную таблицу остатков | ☑ | ||
---|---|---|---|---|
0
Domanoff26
03.10.11
✎
10:20
|
перед записью регистра накопления, хочу связать набор записи(ЭтотОБъект) и таблицу остатков, помещаю набор записи во временную табл, потом делаю запрос где описываю временную таблицу, но только не знаю как мне описать видДвижения, и вообще правильно ли я делаю подчскажите
Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.Текст ="ВЫБРАТЬ * Поместить врТЗ из &ТЗ как ТЗ"; Запрос.УстановитьПараметр("ТЗ", ЭтотОбъект); Запрос = новый Запрос; Запрос.МенеджерВременныхТаблиц =МенеджерВременныхТаблиц; Запрос.Текст ="ВЫБРАТЬ | врТз.Номенклатура КАК Номенклатура, | врТз.ХарактиристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | врТз.СерияНоменклатуры КАК СерияНоменклатуры, | врТз.Заказ КАК Заказ, | врТз.Размещение КАК Размещение, | врТз.Количество КАК КоличествоОстаток |ИЗ | врТз КАК врТз | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | УчетТоваровПроверкаОстатки.Номенклатура, | УчетТоваровПроверкаОстатки.ХарактеристикаНоменклатуры, | УчетТоваровПроверкаОстатки.СерияНоменклатуры, | УчетТоваровПроверкаОстатки.Заказ, | УчетТоваровПроверкаОстатки.Размещение, | УчетТоваровПроверкаОстатки.КоличествоОстаток |ИЗ | РегистрНакопления.УчетТоваровПроверка.Остатки КАК УчетТоваровПроверкаОстатки" |
|||
1
zbv
03.10.11
✎
10:25
|
Запрос.УстановитьПараметр("ТЗ", ЭтотОбъект.Выгрузить());
|
3 |
||
2
zbv
03.10.11
✎
10:28
|
ГДЕ
врТз.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) |
4 |
||
3
Domanoff26
03.10.11
✎
10:29
|
(1) это да, а обязательно все поля описывать, или он сопоставит по названию все нормально, + мне нужен вид движения как его описывать и потом пользоваться им?
|
|||
4
Domanoff26
03.10.11
✎
10:29
|
(2) как его описать?
|
5 |
||
5
zbv
03.10.11
✎
10:30
|
(4) в смысле описать ?
|
6 |
||
6
Domanoff26
03.10.11
✎
10:32
|
(5) ну в смысле в описании временной таблицы, там где я начинаю связвать с табл остатков, я сначало делаю описание временной табл
|
7 9 |
||
7
Maxus43
03.10.11
✎
10:33
|
(6) тип есть такой, вид движения накопления
|
8 |
||
8
Domanoff26
03.10.11
✎
10:35
|
(7) а какой смысл в этих типах, если при закрытии конструктора они теряются?
|
|||
9
zbv
03.10.11
✎
10:38
|
(6) вот тут
Запрос.Текст ="ВЫБРАТЬ * Поместить врТЗ из &ТЗ как ТЗ"; ты описал все поля. Если надо какие-то конкретно, то так и пиши: "ВЫбрать ТЗ.ВидДвижения, ТЗ.Номенклатура, Тз.ХарактиристикаНоменклатуры КАК ХарактеристикаНоменклатуры, Тз.СерияНоменклатуры КАК СерияНоменклатуры, Тз.Заказ КАК Заказ, Тз.Размещение КАК Размещение, Тз.Количество КАК КоличествоОстаток Поместить врТЗ из &ТЗ как ТЗ |
|||
10
PCcomCat
03.10.11
✎
10:42
|
А нельзя ли так:
Запрос.УстановитьПараметр("ТЗ", ЭтотОбъект.Выгрузить(,"ВидДвижения,Номенклатура,...")); ? |
|||
11
Domanoff26
03.10.11
✎
11:46
|
чего то не видит запрос мой набор записи , находит только количество и то неопрделено, может его как то представлять надо?
Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.Текст ="ВЫБРАТЬ | ТЗ.ВидДвижения, | ТЗ.Номенклатура, | ЕСТЬNULL(ТЗ.ХарактеристикаНоменклатуры, НЕОПРЕДЕЛЕНО) КАК ХарактеристикаНоменклатуры, | ЕСТЬNULL(ТЗ.СерияНоменклатуры, НЕОПРЕДЕЛЕНО) КАК СерияНоменклатуры, | ЕСТЬNULL(ТЗ.Заказ, НЕОПРЕДЕЛЕНО) КАК Заказ, | ЕСТЬNULL(ТЗ.Размещение, НЕОПРЕДЕЛЕНО) КАК Размещение, | ТЗ.Количество КАК Количество |ПОМЕСТИТЬ врТЗ |ИЗ | &ТЗ КАК ТЗ"; Запрос.УстановитьПараметр("ТЗ", ЭтотОбъект.Выгрузить()); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Запрос = новый Запрос; Запрос.МенеджерВременныхТаблиц =МенеджерВременныхТаблиц; Запрос.Текст ="ВЫБРАТЬ | запрос.Номенклатура, | запрос.ХарактеристикаНоменклатуры, | запрос.СерияНоменклатуры, | запрос.Заказ, | запрос.Размещение, | запрос.КоличествоОстаток |ИЗ | (ВЫБРАТЬ | врТз.Номенклатура КАК Номенклатура, | врТз.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | врТз.СерияНоменклатуры КАК СерияНоменклатуры, | врТз.Заказ КАК Заказ, | врТз.Размещение КАК Размещение, | ВЫБОР | КОГДА врТз.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) | ТОГДА -1 * врТз.Количество | ИНАЧЕ врТз.Количество | КОНЕЦ КАК КоличествоОстаток | ИЗ | врТз КАК врТз | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | УчетТоваровПроверкаОстатки.Номенклатура, | УчетТоваровПроверкаОстатки.ХарактеристикаНоменклатуры, | УчетТоваровПроверкаОстатки.СерияНоменклатуры, | УчетТоваровПроверкаОстатки.Заказ, | УчетТоваровПроверкаОстатки.Размещение, | УчетТоваровПроверкаОстатки.КоличествоОстаток | ИЗ | РегистрНакопления.УчетТоваровПроверка.Остатки КАК УчетТоваровПроверкаОстатки) КАК запрос"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); |
|||
12
Domanoff26
03.10.11
✎
12:34
|
почему не выгружается этотОбъект, его надо как то приводить?
|
|||
13
zbv
03.10.11
✎
12:41
|
эти строки убери
Выборка = Результат.Выбрать(); Запрос = новый Запрос; Запрос.МенеджерВременныхТаблиц =МенеджерВременныхТаблиц; |
|||
14
Domanoff26
03.10.11
✎
12:46
|
(13 ) не видит врТЗ
|
|||
15
Domanoff26
03.10.11
✎
12:52
|
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.Текст ="ВЫБРАТЬ | ТЗ.ВидДвижения, | ТЗ.Номенклатура, | ЕСТЬNULL(ТЗ.ХарактеристикаНоменклатуры, НЕОПРЕДЕЛЕНО) КАК ХарактеристикаНоменклатуры, | ЕСТЬNULL(ТЗ.СерияНоменклатуры, НЕОПРЕДЕЛЕНО) КАК СерияНоменклатуры, | ЕСТЬNULL(ТЗ.Заказ, НЕОПРЕДЕЛЕНО) КАК Заказ, | ЕСТЬNULL(ТЗ.Размещение, НЕОПРЕДЕЛЕНО) КАК Размещение, | ТЗ.Количество КАК Количество |ПОМЕСТИТЬ врТЗ |ИЗ | &ТЗ КАК ТЗ"; Запрос.УстановитьПараметр("ТЗ", ЭтотОбъект.Выгрузить()); //Запрос.УстановитьПараметр("ВидДвижения", ЭтотОбъект.ВыгрузитьКолонку("ВидДвижения")); //Запрос.УстановитьПараметр("Номенклатура", ЭтотОбъект.ВыгрузитьКолонку("Номенклатура")); //Запрос.УстановитьПараметр("ХарактеристикаНоменклатуры", ЭтотОбъект.ВыгрузитьКолонку("ХарактеристикаНоменклатуры")); //Запрос.УстановитьПараметр("СерияНоменклатуры", ЭтотОбъект.ВыгрузитьКолонку("СерияНоменклатуры")); //Запрос.УстановитьПараметр("Заказ", ЭтотОбъект.ВыгрузитьКолонку("Заказ")); //Запрос.УстановитьПараметр("Размещение", ЭтотОбъект.ВыгрузитьКолонку("Размещение")); //Запрос.УстановитьПараметр("Размещение", ЭтотОбъект.ВыгрузитьКолонку("Размещение")); // Результат = Запрос.Выполнить(); //Выборка = Результат.Выбрать(); //Запрос = новый Запрос; //Запрос.МенеджерВременныхТаблиц =МенеджерВременныхТаблиц; Запрос.Текст =Запрос.Текст + ";"; Запрос.Текст =Запрос.Текст + "ВЫБРАТЬ | запрос.Номенклатура, | запрос.ХарактеристикаНоменклатуры, | запрос.СерияНоменклатуры, | запрос.Заказ, | запрос.Размещение, | запрос.КоличествоОстаток |ИЗ | (ВЫБРАТЬ | врТз.Номенклатура КАК Номенклатура, | врТз.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | врТз.СерияНоменклатуры КАК СерияНоменклатуры, | врТз.Заказ КАК Заказ, | врТз.Размещение КАК Размещение, | ВЫБОР | КОГДА врТз.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) | ТОГДА -1 * врТз.Количество | ИНАЧЕ врТз.Количество | КОНЕЦ КАК КоличествоОстаток | ИЗ | врТз КАК врТз | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | УчетТоваровПроверкаОстатки.Номенклатура, | УчетТоваровПроверкаОстатки.ХарактеристикаНоменклатуры, | УчетТоваровПроверкаОстатки.СерияНоменклатуры, | УчетТоваровПроверкаОстатки.Заказ, | УчетТоваровПроверкаОстатки.Размещение, | УчетТоваровПроверкаОстатки.КоличествоОстаток | ИЗ | РегистрНакопления.УчетТоваровПроверка.Остатки КАК УчетТоваровПроверкаОстатки) КАК запрос"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); пока выборка.Следующий() Цикл Если Выборка.КоличествоОстаток<0 Тогда ОбщегоНазначения.СообщитьОбОшибке("Проверка отрицательных остатков регистра ""Учет товаров"", отрицательные остатки по номенклатуре " + Выборка.Номенклатура + ?(ЗначениеЗаполнено(Выборка.Заказ)," ,по заказу " + Выборка.Заказ,"")+?(ЗначениеЗаполнено(Выборка.Размещение)," ,по размещению " + Выборка.Размещение,""),Отказ, , СтатусСообщения.Важное); Если ПараметрыСеанса.ПакетныйРежим Тогда Отказ = ложь; КонецЕсли; КонецЕСли; КонецЦикла; КОнецПроцедуры останавливается на Выборка = Результат.Выбрать(); и долго че то выбирает, видимо все равно не видит набор |
|||
16
zbv
03.10.11
✎
12:58
|
Запрос.Выполнить(); - оставь
Должно быть так: Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; ЗАпрос.Текст = //Создание временной таблицы Запрос.Выполнить(); Запрос.Текст = //Работаем с Врем. табл. и другими данными |
17 |
||
17
Domanoff26
03.10.11
✎
13:10
|
(16) а таблицу остатков надо не только объеденять, но и ограничивать условием?
|
18 |
||
18
zbv
03.10.11
✎
13:11
|
(17) не мешало бы, а то у тебя все остатки тянет.
|
|||
19
Domanoff26
03.10.11
✎
14:04
|
а перед записью регистра не делают проверки на отрицательность, и если да, то почему?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |