|
v7: Вопрос по классу "Поставщик данных" 1С++ | ☑ | ||
---|---|---|---|---|
0
dimm7310
28.10.11
✎
11:52
|
Делаю форму подбора из справочник.Номенклатура
Нужно в одной из колонок показать текущий остаток товара по определенному списку складов как передать в запрос список значений для фильтра ? Пробовал так: Данные.УложитьСписокЗначений(глСписокСкладов, "#ГруппаН", "Склады"); [code] ТекстСоединения = "left join | $РегистрОстатки.ОстаткиТМЦ(,Склад IN (SELECT Val FROM #ГруппаН),(Номенклатура),(Количество),) as vt | on $ТекущийОбъект.ТекущийЭлемент = vt.Номенклатура |"; Данные.ДобавитьСоединениеДанных("ОстаткиПоТовару",ТекстСоединения); Данные.УложитьСписокЗначений(глСписокСкладов, "#ГруппаН", "Склады"); Данные.ДобавитьКолонкуДанных("КолОстаток","ТМЦ остаток","ISNULL(vt.КоличествоОстаток,0)","Число",19,2,1); Колонки = ТабличноеПоле.Колонки; Данные.НоваяКолонка("Код"); Данные.НоваяКолонка("Наименование"); Данные.НоваяКолонка("КолОстаток"); [/code] выдает ошибку, подскажите как правильно |
|||
1
filh
28.10.11
✎
11:54
|
лучше спроси на 1с++ форуме.
|
|||
2
dimm7310
28.10.11
✎
12:01
|
(1) Спросил, пока нет ответа.
|
|||
3
Mikeware
28.10.11
✎
13:05
|
(0)Какую ощибку? То, что метода нет?
|
|||
4
dimm7310
28.10.11
✎
13:22
|
(3) Да.
|
|||
5
dimm7310
28.10.11
✎
13:24
|
Поле агрегатного объекта не обнаружено (УложитьСписокЗначений)
|
|||
6
ДенисЧ
28.10.11
✎
13:25
|
УложитьСписокОбъектов()
|
|||
7
Ёпрст
28.10.11
✎
13:25
|
УложитьОбъекты есть, а че там за методы есть в классе - хз
|
|||
8
Mikeware
28.10.11
✎
13:26
|
УложитьСписокОбъектов - метод объекта ПоставщикДанных.ПрямойЗапрос
|
|||
9
dimm7310
28.10.11
✎
13:27
|
(6) пробовал я и так
Поле агрегатного объекта не обнаружено (УложитьСписокОбъектов) |
|||
10
dimm7310
28.10.11
✎
13:28
|
там как-то по другому нужно передавать, не пойму как
|
|||
11
Mikeware
28.10.11
✎
13:34
|
(10)
Запрос=ПоставщикДанных.ПрясойЗапрос; Запрос.УложитьСписокЗначений(....); |
|||
12
dimm7310
28.10.11
✎
13:37
|
(11)
Запрос=ПоставщикДанных.ПрямойЗапрос; {D:\1C_WORK\V7\ОСНОВНАЯБАЗА\BASESQL\1НОМЕНКЛАТУРА.ERT(150)}: Поле агрегатного объекта не обнаружено (ПрямойЗапрос) |
|||
13
dimm7310
28.10.11
✎
13:38
|
наверное так:
Данные = ПоставщикДанных.Данные; Запрос=Данные.ПрямойЗапрос; |
|||
14
dimm7310
28.10.11
✎
13:42
|
Заработало.
Всем спасибо |
|||
15
dimm7310
28.10.11
✎
15:31
|
Задача усложняется, необходимо полученный остаток пересчитать из базовых единиц в основные
пробую так: [code] ТекстСоединения = "left join | $РегистрОстатки.ОстаткиТМЦ(,Склад IN (SELECT Val FROM #ГруппаН1),(Номенклатура),(Количество),) as vt | on $ТекущийОбъект.ТекущийЭлемент = vt.Номенклатура |left join $Справочник.Номенклатура Спр1(nolock) on Спр1.[id] = $ТекущийОбъект.ТекущийЭлемент |left join $Справочник.Единицы СпрЕ(nolock) on СпрЕ.[id] = $Спр1.ОсновнаяЕдиница |"; Данные.ДобавитьСоединениеДанных("ОстаткиПоТовару",ТекстСоединения); Запрос=Данные.ПрямойЗапрос; Запрос.УложитьСписокОбъектов(глСписокСкладов, "#ГруппаН1", "Склады"); Данные.ДобавитьКолонкуДанных("КолОстаток","ТМЦ остаток","((CASE WHEN ($Спр1.ОсновнаяЕдиница <> $Спр1.БазоваяЕдиница) THEN (ISNULL(vt.КоличествоОстаток,0) / $СпрЕ.Коэффициент) ELSE ISNULL(vt.КоличествоОстаток,0) END))","Число",14,2,1); [/code] вываливается ошибка ПоставщикДанных.Справочник::УстановитьПоставщикаДанных() : Meta name parser: неизвестное метаимя или алиас "$Спр1" ПоставщикДанных.УстТекстЗапроса(ТекстЗапроса); {D:\1C_Work\v7\ОсновнаяБаза\BaseSQL\work\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.Справочник.ert(1049) } |
|||
16
dimm7310
28.10.11
✎
16:01
|
в предыдущем коде одно соединение лишнее:
"left join $Справочник.Номенклатура Спр1(nolock) on Спр1.[id] = $ТекущийОбъект.ТекущийЭлемент" но теперь ругается на СпрЕ |
|||
17
dimm7310
28.10.11
✎
16:22
|
сделал подругому, сначала подсоединяю таблицу единиц
[code] ТекстСоединения = " |left join $Справочник.Единицы СпрЕ(nolock) on СпрЕ.[id] = $ТекущийОбъект.ОсновнаяЕдиница |"; Данные.ДобавитьСоединениеДанных("КоеэфЕИ",ТекстСоединения); [/code] потом [code] ТекстСоединения = "left join | $РегистрОстатки.ОстаткиТМЦ(,Склад IN (SELECT Val FROM #ГруппаН1),(Номенклатура),(Количество),) as vt | on $ТекущийОбъект.ТекущийЭлемент = vt.Номенклатура // |left join $Справочник.Единицы СпрЕ(nolock) on СпрЕ.[id] = $ТекущийОбъект.ОсновнаяЕдиница |"; Данные.ДобавитьСоединениеДанных("ОстаткиПоТовару",ТекстСоединения); Запрос=Данные.ПрямойЗапрос; Запрос.УложитьСписокОбъектов(глСписокСкладов, "#ГруппаН1", "Склады"); Данные.ДобавитьКолонкуДанных("КолОстаток","ТМЦ остаток","((CASE WHEN ( $ТекущийОбъект.ОсновнаяЕдиница <> $ТекущийОбъект.БазоваяЕдиница) THEN (ISNULL(vt.КоличествоОстаток,0) / $СпрЕ.Коэффициент) ELSE ISNULL(vt.КоличествоОстаток,0) END))","Число",14,2,1); [/code] но все равно пишет туже ошибку |
|||
18
filh
28.10.11
✎
16:27
|
а что за ошибка то?
|
|||
19
dimm7310
28.10.11
✎
16:30
|
неизвестное метаимя или алиас "$СпрЕ"
|
|||
20
filh
28.10.11
✎
16:49
|
убрать $?
|
|||
21
dimm7310
28.10.11
✎
17:00
|
пробовал
Meta name parser: неизвестное метаимя или алиас "$SC75" |
|||
22
dimm7310
28.10.11
✎
17:02
|
что-то непонятное, упрощаю , хочу просто вывести коэффициент в табличное поле - и тоже ошибка
ТекстСоединения = " |left join $Справочник.Единицы Единицы(nolock) on Единицы.ТекущийЭлемент = $ТекущийОбъект.ОсновнаяЕдиница // |left join Справочник.Единицы as Единицы $nolock on $ТекущийОбъект.ОсновнаяЕдиница = $Единицы.ТекущийЭлемент |"; Данные.ДобавитьСоединениеДанных("КоеэфЕИ",ТекстСоединения); Данные.ДобавитьКолонкуДанных("Коэффициент","Коэф.","Единицы.Коэффициент)","Число",10,2,1); |
|||
23
Mikeware
28.10.11
✎
17:08
|
Данные.ДобавитьКолонкуДанных("Коэффициент","Коэф.","$Единицы.Коэффициент","Число",10,2,1);
? |
|||
24
dimm7310
28.10.11
✎
17:10
|
(23) Что не правильно?
|
|||
25
Mikeware
28.10.11
✎
17:11
|
"$Единицы.Коэффициент"
|
|||
26
dimm7310
28.10.11
✎
17:13
|
(24) Наверное я уже совсем отупел к концу недели,
но не понимаю Как должно быть ? |
|||
27
Mikeware
28.10.11
✎
17:43
|
Что-то типа:
Данные.ДобавитьСоединениеДанных("ОснЕд","left join Справочник.Единицы as Единицы (nolock) on $ТекущийОбъект.ОсновнаяЕдиница = Единицы.id"); Данные.ДобавитьКолонкуДанных("ОснЕд","ОсновнаяЕдиница","Единицы.id","$Справочник.Единицы",,,1); Данные.НоваяКолонка("ОсновнаяЕдиница"); Данные.ДобавитьКолонкуДанных("Коэф","Коэффициент","$Единицы.коэффициент","Число",9,3,0); Данные.НоваяКолонка("Коэф"); |
|||
28
Mikeware
28.10.11
✎
18:04
|
Короче, если надо будет - стучись в аську.
|
|||
29
dimm7310
29.10.11
✎
07:30
|
попробовал, теперь
вот, что вываливается: ПоставщикДанных.Справочник::УстановитьПоставщикаДанных() : Ошибка в запросе. ПоставщикДанных.УстТекстЗапроса(ТекстЗапроса); {D:\1C_Work\v7\ОсновнаяБаза\BaseSQL\work\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.Справочник.ert(1049) } ПоставщикДанных.ТабличноеПоле::Обновить() : ПоставщикДанных.Справочник::УстановитьПоставщикаДанных() : Ошибка в запросе. ПоставщикДанных.УстТекстЗапроса(ТекстЗапроса); {D:\1C_Work\v7\ОсновнаяБаза\BaseSQL\work\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.Справочник.ert(1049) } вирт().Обновить(); {D:\1C_Work\v7\ОсновнаяБаза\BaseSQL\work\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.ТабличноеПоле.ert(590) } ПоставщикДанных::Обновить() : ПоставщикДанных.ТабличноеПоле::Обновить() : ПоставщикДанных.Справочник::УстановитьПоставщикаДанных() : Ошибка в запросе. ПоставщикДанных.УстТекстЗапроса(ТекстЗапроса); {D:\1C_Work\v7\ОсновнаяБаза\BaseSQL\work\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.Справочник.ert(1049) } вирт().Обновить(); {D:\1C_Work\v7\ОсновнаяБаза\BaseSQL\work\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.ТабличноеПоле.ert(590) } ПоставщикДанных.ТабличноеПоле.Обновить(); {D:\1C_Work\v7\ОсновнаяБаза\BaseSQL\work\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.ert(186) } ПоставщикДанных.Обновить(); {D:\1C_WORK\V7\ОСНОВНАЯБАЗА\BASESQL\1НОМЕНКЛАТУРА.ERT(197)}: ПоставщикДанных::Обновить() : ПоставщикДанных.ТабличноеПоле::Обновить() : ПоставщикДанных.Справочник::УстановитьПоставщикаДанных() : Ошибка в запросе. ПоставщикДанных.УстТекстЗапроса(ТекстЗапроса); {D:\1C_Work\v7\ОсновнаяБаза\BaseSQL\work\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.Справочник.ert(1049) } вирт().Обновить(); {D:\1C_Work\v7\ОсновнаяБаза\BaseSQL\work\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.ТабличноеПоле.ert(590) } ПоставщикДанных.ТабличноеПоле.Обновить(); {D:\1C_Work\v7\ОсновнаяБаза\BaseSQL\work\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.ert(186) } |
|||
30
dimm7310
29.10.11
✎
07:42
|
(28)
добавлять колонку ОсновнаяЕдиница - не нужно Данные.НоваяКолонка("ОсновнаяЕдиница"); она и так присутствует в запросе по умолчанию , поскольку это реквизит справочника Номенклатура упростил код максимально, что бы понять причину Данные.ДобавитьСоединениеДанных("ОснЕд","left join Справочник.Единицы as Единицы $nolock on $ТекущийОбъект.ОсновнаяЕдиница = Единицы.id"); Данные.ДобавитьКолонкуДанных("Коэффициент","Коэф","$Единицы.Коэффициент)","Число",10,2,1); и все равно ошибка, правда уже ругается внутри класса в прошлых проектах я делал подобные соединения и все работало прекрасно (правда там была 4-я версия ПоставщикаДанных, а сейчас 8-я). Может ошибка в классе ? |
|||
31
dimm7310
29.10.11
✎
07:44
|
Жаль, что разработчик класса в на форуме 1С++ не отзывается.
|
|||
32
Mikeware
29.10.11
✎
11:55
|
(31) Я тебе кинул совершенно рабочий код.
|
|||
33
dimm7310
29.10.11
✎
11:57
|
(32) а какая версия Поставщика у тебя ?
|
|||
34
Mikeware
29.10.11
✎
12:02
|
(33) Что-то из последних. Качал недели три назад, заменил на всех базах
|
|||
35
Mikeware
29.10.11
✎
12:04
|
И дело явно не в версии поставщика.
|
|||
36
dimm7310
29.10.11
✎
12:09
|
(35) Еще раз подложил твой код и заработало. Странно я же утром так и делал и были ошибки.
Спасибо большое за помощь. |
|||
37
Mikeware
29.10.11
✎
12:17
|
:-)
Главное - понять принцип. |
|||
38
dimm7310
31.10.11
✎
09:30
|
Еще одна проблема, нужно добавить колонку с ценой.
Делаю дополнительное соединение: Данные.ДобавитьСоединениеДанных("ЦенаТовара","left join Справочник.Цены as Цены (nolock) on $ТекущийОбъект.ТекущийЭлемент = Цены.ParentExt"); добавляю колонку Данные.ДобавитьКолонкуДанных("Цена2","ТМЦ остаток2","$ПоследнееЗначение.Цены.Цена(Цены.id, :ВыбДата) as Цена","Число",10,2,1); Запрос=Данные.ПрямойЗапрос; Запрос.УстановитьТекстовыйПараметр("ВыбДата", ПолучитьДатуТА()); но как наложить условие по типу цены ? если ниже попытаться передать условие: ТекстСоединения = "WHERE $Цены.ТипЦен = :ТипЦены "; Данные.ДобавитьСоединениеДанных("СодинениеТипЦены",ТекстСоединения); то в окне табичного поля сообщение: incorrect syntax near the keyword 'where' Запрос=Данные.ПрямойЗапрос; Запрос.УстановитьТекстовыйПараметр("ТипЦены", ТипЦены); |
|||
39
dimm7310
31.10.11
✎
09:33
|
в предыдущем сообщении две последние строчки случайно скопипастились
последняя строка сообщения: то в окне табичного поля сообщение: incorrect syntax near the keyword 'where' |
|||
40
Mikeware
31.10.11
✎
10:02
|
(39) И это совершенно естественно :-)
Как добавлять собственные условия фильтрации - я не знаю. Попробуй добавить тип цен в отбор, и ставить отбор по нужному типу цены. Правда, тормозить будеееееееет... А вообще, я бы сделал вьюху с нужным типом цен и джойнил бы ее.. |
|||
41
Ёпрст
31.10.11
✎
10:05
|
(39) в условие соединения запихай..
left join Справочник.Цены as Цены (nolock) on $ТекущийОбъект.ТекущийЭлемент = Цены.ParentExt and $Цены.ТипЦен = :ТипЦены |
|||
42
Ёпрст
31.10.11
✎
10:06
|
а как у тебя сейчас с веткой where- это inner join, а не left
|
|||
43
dimm7310
31.10.11
✎
10:18
|
(41) попробовал, теперь ошибок не выдает , но и цену не возвращает (пустая колонка)
|
|||
44
Ёпрст
31.10.11
✎
10:21
|
(43) либо передал в качестве типа цен мусор( не текущийэлемент()), либо с выбранным типом цен цены нема.
|
|||
45
Ёпрст
31.10.11
✎
10:25
|
+44 без условия на тип цен, есть че ? если да - проблема с переданным параметром.
|
|||
46
dimm7310
31.10.11
✎
10:40
|
(44) я проверил в отладчике, нормально передается тип цены
вот полный код инициализации Процедура ИнициализацияМногострочнойЧасти() ПоставщикДанных = СоздатьОбъект("ПоставщикДанных"); ПоставщикДанных.ТипЗначений = "Справочник.Номенклатура"; ПоставщикДанных.КонтейнерТабличногоПоля = "ТабличноеПолеМногострочнойЧасти"; ПоставщикДанных.КонтейнерКоманднойПанели = "КоманднаяПанельМногострочнойЧасти"; Данные = ПоставщикДанных.Данные; ТабличноеПоле = ПоставщикДанных.ТабличноеПоле; ТабличноеПоле.ИзменятьНастройкуКолонок = 0; ТабличноеПоле.ИзменятьСоставСтрок = 1; ТабличноеПоле.ИзменятьПорядокСтрок = 1; ТабличноеПоле.СтильЗаголовков = 1; ТабличноеПоле.СтильРамки = 1; ТабличноеПоле.АвтоКонтекстноеМеню = 0; // ТипЦены = ЭлементПоКоду("ТипыЦен","00001"); ТипЦены = Конт.ТипЦен; Данные.ДобавитьСоединениеДанных("ОснЕд","left join Справочник.Единицы as Единицы (nolock) on $ТекущийОбъект.ОсновнаяЕдиница = Единицы.id"); Данные.ДобавитьСоединениеДанных("ЦенаТовара","left join Справочник.Цены as Цены (nolock) on $ТекущийОбъект.ТекущийЭлемент = Цены.ParentExt and $Цены.ТипЦен = :ТипЦены"); Запрос=Данные.ПрямойЗапрос; Запрос.УстановитьТекстовыйПараметр("ТипЦены", ТипЦены); ТекстСоединения = "left join | $РегистрОстатки.РезервыТМЦ(,Склад IN (SELECT Val FROM #ГруппаН),(Номенклатура),(Количество),) as rt | on $ТекущийОбъект.ТекущийЭлемент = rt.Номенклатура |"; Данные.ДобавитьСоединениеДанных("РезервПоТовару",ТекстСоединения); Запрос=Данные.ПрямойЗапрос; Запрос.УложитьСписокОбъектов(глСписокСкладов, "#ГруппаН", "Склады"); Данные.ДобавитьКолонкуДанных("КолРезерв","ТМЦ резерв","((CASE WHEN ( $ТекущийОбъект.ОсновнаяЕдиница <> $ТекущийОбъект.БазоваяЕдиница) THEN ((ISNULL(rt.КоличествоОстаток,0) / $Единицы.Коэффициент)) ELSE (ISNULL(rt.КоличествоОстаток,0)) END))","Число",14,2,1); ТекстСоединения = "left join | $РегистрОстатки.ОстаткиТМЦ(,Склад IN (SELECT Val FROM #ГруппаН1),(Номенклатура),(Количество),) as vt | on $ТекущийОбъект.ТекущийЭлемент = vt.Номенклатура |"; Данные.ДобавитьСоединениеДанных("ОстаткиПоТовару",ТекстСоединения); Запрос=Данные.ПрямойЗапрос; Запрос.УложитьСписокОбъектов(глСписокСкладов, "#ГруппаН1", "Склады"); Данные.ДобавитьКолонкуДанных("КолОстаток","ТМЦ остаток","((CASE WHEN ( $ТекущийОбъект.ОсновнаяЕдиница <> $ТекущийОбъект.БазоваяЕдиница) THEN ((ISNULL(vt.КоличествоОстаток,0) / $Единицы.Коэффициент)) - ((ISNULL(rt.КоличествоОстаток,0) / $Единицы.Коэффициент)) ELSE (ISNULL(vt.КоличествоОстаток,0)) - (ISNULL(rt.КоличествоОстаток,0)) END))","Число",14,2,1); ТекстСоединения = "left join | $РегистрОстатки.РезервыТМЦ(,Склад IN (SELECT Val FROM #ГруппаН2),(Номенклатура),(Количество),) as rt2 | on $ТекущийОбъект.ТекущийЭлемент = rt2.Номенклатура |"; Данные.ДобавитьСоединениеДанных("РезервПоТовару2",ТекстСоединения); Запрос=Данные.ПрямойЗапрос; Запрос.УложитьСписокОбъектов(глСписокПрочихМестХранения, "#ГруппаН2", "Склады"); Данные.ДобавитьКолонкуДанных("КолРезерв2","ТМЦ резерв2","((CASE WHEN ( $ТекущийОбъект.ОсновнаяЕдиница <> $ТекущийОбъект.БазоваяЕдиница) THEN ((ISNULL(rt2.КоличествоОстаток,0) / $Единицы.Коэффициент)) ELSE (ISNULL(rt2.КоличествоОстаток,0)) END))","Число",14,2,1); ТекстСоединения = "left join | $РегистрОстатки.ОстаткиТМЦ(,Склад IN (SELECT Val FROM #ГруппаН3),(Номенклатура),(Количество),) as vt2 | on $ТекущийОбъект.ТекущийЭлемент = vt2.Номенклатура |"; Данные.ДобавитьСоединениеДанных("ОстаткиПоТовару2",ТекстСоединения); Запрос=Данные.ПрямойЗапрос; Запрос.УложитьСписокОбъектов(глСписокПрочихМестХранения, "#ГруппаН3", "Склады"); Данные.ДобавитьКолонкуДанных("КолОстаток2","ТМЦ остаток2","((CASE WHEN ( $ТекущийОбъект.ОсновнаяЕдиница <> $ТекущийОбъект.БазоваяЕдиница) THEN ((ISNULL(vt2.КоличествоОстаток,0) / $Единицы.Коэффициент)) - ((ISNULL(rt2.КоличествоОстаток,0) / $Единицы.Коэффициент)) ELSE (ISNULL(vt2.КоличествоОстаток,0)) - (ISNULL(rt2.КоличествоОстаток,0)) END))","Число",14,2,1); Данные.ДобавитьКолонкуДанных("Цена2","Цена2","$ПоследнееЗначение.Цены.Цена(Цены.id, :ВыбДата) as Цена","Число",10,2,1); Запрос=Данные.ПрямойЗапрос; Запрос.УстановитьТекстовыйПараметр("ВыбДата", Конт.ДатаДок); Колонки = ТабличноеПоле.Колонки; Данные.НоваяКолонка("Код"); Данные.НоваяКолонка("Наименование"); Данные.НоваяКолонка("БазоваяЕдиница"); Данные.НоваяКолонка("ОсновнаяЕдиница"); Данные.НоваяКолонка("КолОстаток"); Данные.НоваяКолонка("КолОстаток2"); Данные.НоваяКолонка("КолРезерв"); Данные.НоваяКолонка("КолРезерв2"); Данные.НоваяКолонка("Цена2"); Колонка = Колонки.Добавить("Код"); Колонка.Заголовок = "Код"; Колонка.Данные = "Код"; Колонка.Ширина = 8; Колонка.Формат = "Ч06"; Колонка.ГоризонтальноеВыравнивание = 1; //// Колонка = Колонки.Добавить("Наименование"); Колонка.Заголовок = "Наименование"; Колонка.Данные = "Наименование"; Колонка.Ширина = 80; Колонка.ГоризонтальноеВыравнивание = 1; Колонка = Колонки.Добавить("БазоваяЕдиница"); Колонка.Заголовок = "Баз.ЕИ"; Колонка.Данные = "БазоваяЕдиница"; Колонка.Ширина = 8; Колонка.ГоризонтальноеВыравнивание = 1; Колонка = Колонки.Добавить("ОсновнаяЕдиница"); Колонка.Заголовок = "Осн.ЕИ"; Колонка.Данные = "ОсновнаяЕдиница"; Колонка.Ширина = 8; Колонка.ГоризонтальноеВыравнивание = 1; Колонка = Колонки.Добавить("КолОстаток"); Колонка.Заголовок = "Ост./Склад"; Колонка.Данные = "КолОстаток"; Колонка.Ширина = 10; Колонка.Формат = "Ч014.2"; Колонка.ГоризонтальноеВыравнивание = 2; Колонка = Колонки.Добавить("КолОстаток2"); Колонка.Заголовок = "Ост./Прочее"; Колонка.Данные = "КолОстаток2"; Колонка.Ширина = 10; Колонка.Формат = "Ч014.2"; Колонка.ГоризонтальноеВыравнивание = 2; Колонка = Колонки.Добавить("КолРезерв"); Колонка.Заголовок = "Рез./Склад"; Колонка.Данные = "КолРезерв"; Колонка.Ширина = 10; Колонка.Формат = "Ч014.2"; Колонка.ГоризонтальноеВыравнивание = 2; Колонка = Колонки.Добавить("КолРезерв2"); Колонка.Заголовок = "Рез./Прочее"; Колонка.Данные = "КолРезерв2"; Колонка.Ширина = 10; Колонка.Формат = "Ч014.2"; Колонка.ГоризонтальноеВыравнивание = 2; Колонка = Колонки.Добавить("Цена2"); Колонка.Заголовок = "Цена2"; Колонка.Данные = "Цена2"; Колонка.Ширина = 10; Колонка.Формат = "Ч014.2"; Колонка.ГоризонтальноеВыравнивание = 2; //Данные.АвтоОбновление = 1; //Данные.ПериодАвтоОбновления = 120; Данные.СоздатьКнопкиПоУмолчанию(); КоманднаяПанель = ПоставщикДанных.ТабличноеПоле.КоманднаяПанель; ТабличноеПоле.ВосстановитьПозициюКолонок(); ПоставщикДанных.Обновить(); КонецПроцедуры // ИнициализацияМногострочнойЧасти |
|||
47
dimm7310
31.10.11
✎
10:44
|
без условия на тип цены тот же результат - Пустая колонка
и ошибок не выдает |
|||
48
Ёпрст
31.10.11
✎
10:44
|
Запрос=Данные.ПрямойЗапрос; - вот это писать по сто раз не надо.
И ответь на (45) |
|||
49
dimm7310
31.10.11
✎
10:45
|
(48) я же в (47) ответил - тот же результат
|
|||
50
Ёпрст
31.10.11
✎
10:47
|
+ имя колонки цена2 а в запросе такого алияса нема - там Цена брать данные не откуда
|
|||
51
Ёпрст
31.10.11
✎
10:48
|
+50 выкини as Цена , для начала
|
|||
52
dimm7310
31.10.11
✎
11:04
|
(51) если убираю as в строке
Данные.ДобавитьКолонкуДанных("Цена","Цена","$ПоследнееЗначение.Цены.Цена(Цены.id, :ВыбДата) Цена","Число",10,2,1); incorrect syntax near the keyword 'as' |
|||
53
dimm7310
31.10.11
✎
11:06
|
поставил везде - Цена
результат тот же Процедура ИнициализацияМногострочнойЧасти() ПоставщикДанных = СоздатьОбъект("ПоставщикДанных"); ПоставщикДанных.ТипЗначений = "Справочник.Номенклатура"; ПоставщикДанных.КонтейнерТабличногоПоля = "ТабличноеПолеМногострочнойЧасти"; ПоставщикДанных.КонтейнерКоманднойПанели = "КоманднаяПанельМногострочнойЧасти"; Данные = ПоставщикДанных.Данные; ТабличноеПоле = ПоставщикДанных.ТабличноеПоле; ТабличноеПоле.ИзменятьНастройкуКолонок = 0; ТабличноеПоле.ИзменятьСоставСтрок = 1; ТабличноеПоле.ИзменятьПорядокСтрок = 1; ТабличноеПоле.СтильЗаголовков = 1; ТабличноеПоле.СтильРамки = 1; ТабличноеПоле.АвтоКонтекстноеМеню = 0; // ТипЦены = ЭлементПоКоду("ТипыЦен","00001"); ТипЦены = Конт.ТипЦен; Данные.ДобавитьСоединениеДанных("ОснЕд","left join Справочник.Единицы as Единицы (nolock) on $ТекущийОбъект.ОсновнаяЕдиница = Единицы.id"); Данные.ДобавитьСоединениеДанных("ЦенаТовара","left join Справочник.Цены as Цены (nolock) on $ТекущийОбъект.ТекущийЭлемент = Цены.ParentExt and $Цены.ТипЦен = :ТипЦены"); //Данные.ДобавитьСоединениеДанных("ЦенаТовара","left join Справочник.Цены as Цены (nolock) on $ТекущийОбъект.ТекущийЭлемент = Цены.ParentExt"); Запрос=Данные.ПрямойЗапрос; Запрос.УстановитьТекстовыйПараметр("ТипЦены", ТипЦены); ТекстСоединения = "left join | $РегистрОстатки.РезервыТМЦ(,Склад IN (SELECT Val FROM #ГруппаН),(Номенклатура),(Количество),) as rt | on $ТекущийОбъект.ТекущийЭлемент = rt.Номенклатура |"; Данные.ДобавитьСоединениеДанных("РезервПоТовару",ТекстСоединения); //Запрос=Данные.ПрямойЗапрос; Запрос.УложитьСписокОбъектов(глСписокСкладов, "#ГруппаН", "Склады"); Данные.ДобавитьКолонкуДанных("КолРезерв","ТМЦ резерв","((CASE WHEN ( $ТекущийОбъект.ОсновнаяЕдиница <> $ТекущийОбъект.БазоваяЕдиница) THEN ((ISNULL(rt.КоличествоОстаток,0) / $Единицы.Коэффициент)) ELSE (ISNULL(rt.КоличествоОстаток,0)) END))","Число",14,2,1); ТекстСоединения = "left join | $РегистрОстатки.ОстаткиТМЦ(,Склад IN (SELECT Val FROM #ГруппаН1),(Номенклатура),(Количество),) as vt | on $ТекущийОбъект.ТекущийЭлемент = vt.Номенклатура |"; Данные.ДобавитьСоединениеДанных("ОстаткиПоТовару",ТекстСоединения); //Запрос=Данные.ПрямойЗапрос; Запрос.УложитьСписокОбъектов(глСписокСкладов, "#ГруппаН1", "Склады"); Данные.ДобавитьКолонкуДанных("КолОстаток","ТМЦ остаток","((CASE WHEN ( $ТекущийОбъект.ОсновнаяЕдиница <> $ТекущийОбъект.БазоваяЕдиница) THEN ((ISNULL(vt.КоличествоОстаток,0) / $Единицы.Коэффициент)) - ((ISNULL(rt.КоличествоОстаток,0) / $Единицы.Коэффициент)) ELSE (ISNULL(vt.КоличествоОстаток,0)) - (ISNULL(rt.КоличествоОстаток,0)) END))","Число",14,2,1); ТекстСоединения = "left join | $РегистрОстатки.РезервыТМЦ(,Склад IN (SELECT Val FROM #ГруппаН2),(Номенклатура),(Количество),) as rt2 | on $ТекущийОбъект.ТекущийЭлемент = rt2.Номенклатура |"; Данные.ДобавитьСоединениеДанных("РезервПоТовару2",ТекстСоединения); //Запрос=Данные.ПрямойЗапрос; Запрос.УложитьСписокОбъектов(глСписокПрочихМестХранения, "#ГруппаН2", "Склады"); Данные.ДобавитьКолонкуДанных("КолРезерв2","ТМЦ резерв2","((CASE WHEN ( $ТекущийОбъект.ОсновнаяЕдиница <> $ТекущийОбъект.БазоваяЕдиница) THEN ((ISNULL(rt2.КоличествоОстаток,0) / $Единицы.Коэффициент)) ELSE (ISNULL(rt2.КоличествоОстаток,0)) END))","Число",14,2,1); ТекстСоединения = "left join | $РегистрОстатки.ОстаткиТМЦ(,Склад IN (SELECT Val FROM #ГруппаН3),(Номенклатура),(Количество),) as vt2 | on $ТекущийОбъект.ТекущийЭлемент = vt2.Номенклатура |"; Данные.ДобавитьСоединениеДанных("ОстаткиПоТовару2",ТекстСоединения); //Запрос=Данные.ПрямойЗапрос; Запрос.УложитьСписокОбъектов(глСписокПрочихМестХранения, "#ГруппаН3", "Склады"); Данные.ДобавитьКолонкуДанных("КолОстаток2","ТМЦ остаток2","((CASE WHEN ( $ТекущийОбъект.ОсновнаяЕдиница <> $ТекущийОбъект.БазоваяЕдиница) THEN ((ISNULL(vt2.КоличествоОстаток,0) / $Единицы.Коэффициент)) - ((ISNULL(rt2.КоличествоОстаток,0) / $Единицы.Коэффициент)) ELSE (ISNULL(vt2.КоличествоОстаток,0)) - (ISNULL(rt2.КоличествоОстаток,0)) END))","Число",14,2,1); Данные.ДобавитьКолонкуДанных("Цена","Цена","$ПоследнееЗначение.Цены.Цена(Цены.id, :ВыбДата) as Цена","Число",10,2,1); //Запрос=Данные.ПрямойЗапрос; Запрос.УстановитьТекстовыйПараметр("ВыбДата", Конт.ДатаДок); Колонки = ТабличноеПоле.Колонки; Данные.НоваяКолонка("Код"); Данные.НоваяКолонка("Наименование"); Данные.НоваяКолонка("БазоваяЕдиница"); Данные.НоваяКолонка("ОсновнаяЕдиница"); Данные.НоваяКолонка("КолОстаток"); Данные.НоваяКолонка("КолОстаток2"); Данные.НоваяКолонка("КолРезерв"); Данные.НоваяКолонка("КолРезерв2"); Данные.НоваяКолонка("Цена"); Колонка = Колонки.Добавить("Код"); Колонка.Заголовок = "Код"; Колонка.Данные = "Код"; Колонка.Ширина = 8; Колонка.Формат = "Ч06"; Колонка.ГоризонтальноеВыравнивание = 1; //// Колонка = Колонки.Добавить("Наименование"); Колонка.Заголовок = "Наименование"; Колонка.Данные = "Наименование"; Колонка.Ширина = 80; Колонка.ГоризонтальноеВыравнивание = 1; Колонка = Колонки.Добавить("БазоваяЕдиница"); Колонка.Заголовок = "Баз.ЕИ"; Колонка.Данные = "БазоваяЕдиница"; Колонка.Ширина = 8; Колонка.ГоризонтальноеВыравнивание = 1; Колонка = Колонки.Добавить("ОсновнаяЕдиница"); Колонка.Заголовок = "Осн.ЕИ"; Колонка.Данные = "ОсновнаяЕдиница"; Колонка.Ширина = 8; Колонка.ГоризонтальноеВыравнивание = 1; Колонка = Колонки.Добавить("КолОстаток"); Колонка.Заголовок = "Ост./Склад"; Колонка.Данные = "КолОстаток"; Колонка.Ширина = 10; Колонка.Формат = "Ч014.2"; Колонка.ГоризонтальноеВыравнивание = 2; Колонка = Колонки.Добавить("КолОстаток2"); Колонка.Заголовок = "Ост./Прочее"; Колонка.Данные = "КолОстаток2"; Колонка.Ширина = 10; Колонка.Формат = "Ч014.2"; Колонка.ГоризонтальноеВыравнивание = 2; Колонка = Колонки.Добавить("КолРезерв"); Колонка.Заголовок = "Рез./Склад"; Колонка.Данные = "КолРезерв"; Колонка.Ширина = 10; Колонка.Формат = "Ч014.2"; Колонка.ГоризонтальноеВыравнивание = 2; Колонка = Колонки.Добавить("КолРезерв2"); Колонка.Заголовок = "Рез./Прочее"; Колонка.Данные = "КолРезерв2"; Колонка.Ширина = 10; Колонка.Формат = "Ч014.2"; Колонка.ГоризонтальноеВыравнивание = 2; Колонка = Колонки.Добавить("Цена"); Колонка.Заголовок = "Цена"; Колонка.Данные = "Цена"; Колонка.Ширина = 10; Колонка.Формат = "Ч014.2"; Колонка.ГоризонтальноеВыравнивание = 2; //Данные.АвтоОбновление = 1; //Данные.ПериодАвтоОбновления = 120; Данные.СоздатьКнопкиПоУмолчанию(); КоманднаяПанель = ПоставщикДанных.ТабличноеПоле.КоманднаяПанель; ТабличноеПоле.ВосстановитьПозициюКолонок(); ПоставщикДанных.Обновить(); КонецПроцедуры // ИнициализацияМногострочнойЧасти |
|||
54
Ёпрст
31.10.11
✎
11:06
|
(52) п...ц
"AS ЦЕНА" убери нахрен |
|||
55
dimm7310
31.10.11
✎
11:14
|
(54) Заработало !!!!!!!!!!!!!
Спасибо огромное |
|||
56
Ёпрст
31.10.11
✎
11:17
|
аминь
:_) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |