Имя: Пароль:
1C
1C 7.7
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
аминь
:_)