Имя: Пароль:
1C
1C 7.7
v7: Класс "Прямой запрос"
0 Pro100
 
25.07.13
11:49
Спрашивал на форуме 1С++, но пока молчат, решил сюда продублировать вопрос. Может кто подскажет где я ошибся.
В общем в списке справочника номенклатура пытаюсь добавить колонку Цена, но 1С ругается.
Вот мой код:

ПоставщикДанныхМногострочнаяЧасть = СоздатьОбъект("ПоставщикДанных");
ПоставщикДанныхМногострочнаяЧасть.ТипЗначений = "Справочник.Номенклатура";
ПоставщикДанныхМногострочнаяЧасть.КонтейнерТабличногоПоля = "ТабличноеПолеМногострочнойЧасти";
ПоставщикДанныхМногострочнаяЧасть.КонтейнерКоманднойПанели = "КоманднаяПанельМногострочнойЧасти";

ДанныеСправочник = ПоставщикДанныхМногострочнаяЧасть.Данные;
ДанныеСправочник.КнопкаПросмотр = 1;
ДанныеСправочник.РежимОтладки = 1;
ДанныеСправочник.СоздатьКнопкиПоУмолчанию();

ТабличноеПоле = ДанныеСправочник.ТабличноеПоле;
ТабличноеПоле.СтильЗаголовков = 1;
ТабличноеПоле.СтильРамки = 1;

ДанныеСправочник.НоваяКолонка("Код");
ДанныеСправочник.НоваяКолонка("Наименование");

Запрос=ДанныеСправочник.ПрямойЗапрос;

ТекстСоединенияЦена = "left join
    |$СрезПоследних.Цены(:ВыбДата
    |                    ,(Цена,Валюта,ТипЦен)
    |                    ,($СпрЦены.ПометкаУдаления=0 and $спрЦены.ТипЦен = :ТипЦены and $спрЦены.Владелец = $ТекущийОбъект.ТекущийЭлемент)
    |                    ,left join Справочник.Цены as СпрЦены $nolock on $СпрЦены.ТекущийЭлемент = ТекущийЭлемент
    |                   ) as srezcen
    |";
    ДанныеСправочник.ДобавитьСоединениеДанных("ЦенаТовара",ТекстСоединенияЦена);
СпрТипыЦен = СоздатьОбъект("Справочник.ТипыЦен");
СпрТипыЦен.НайтиПоКоду("00002");
Запрос.УстановитьТекстовыйПараметр("ТипЦены", СпрТипыЦен.ТекущийЭлемент());
Запрос.УстановитьТекстовыйПараметр("ВыбДата",  ТекущаяДата());
ДанныеСправочник.ДобавитьКолонкуДанных("Цены","Цена оптовая","srezcen.Цена","Число",10,2,1);
ДанныеСправочник.НоваяКолонка("Цены");



А 1С вот на что ругается:
ПоставщикДанных.Справочник::УстановитьПоставщикаДанных() : no such column: sc84.ID
ПоставщикДанных.УстановитьТекстЗапроса(ТекстЗапроса,"[КлючПорядка]","[ТекущийЭлемент :Справочник."+ВидСправочника+"]");
{C:\1C\Базы1С\Personal\АвиаПлюс\ТиС\SystemData\Classes\ПоставщикДанных\Поставщик
Данных.Справочник.ert(906) }

ПоставщикДанных.ТабличноеПоле::Обновить() : ПоставщикДанных.Справочник::УстановитьПоставщикаДанных() : no such column: sc84.ID
ПоставщикДанных.УстановитьТекстЗапроса(ТекстЗапроса,"[КлючПорядка]","[ТекущийЭлемент :Справочник."+ВидСправочника+"]");
{C:\1C\Базы1С\Personal\АвиаПлюс\ТиС\SystemData\Classes\ПоставщикДанных\Поставщик
Данных.Справочник.ert(906) }

вирт().Обновить();
{C:\1C\Базы1С\Personal\АвиаПлюс\ТиС\SystemData\Classes\ПоставщикДанных\Поставщик
Данных.ТабличноеПоле.ert(670) }

ПоставщикДанных::Обновить() : ПоставщикДанных.ТабличноеПоле::Обновить() : ПоставщикДанных.Справочник::УстановитьПоставщикаДанных() : no such column: sc84.ID
ПоставщикДанных.УстановитьТекстЗапроса(ТекстЗапроса,"[КлючПорядка]","[ТекущийЭлемент :Справочник."+ВидСправочника+"]");
{C:\1C\Базы1С\Personal\АвиаПлюс\ТиС\SystemData\Classes\ПоставщикДанных\Поставщик
Данных.Справочник.ert(906) }

вирт().Обновить();
{C:\1C\Базы1С\Personal\АвиаПлюс\ТиС\SystemData\Classes\ПоставщикДанных\Поставщик
Данных.ТабличноеПоле.ert(670) }

ПоставщикДанных.ТабличноеПоле.Обновить();
{C:\1C\Базы1С\Personal\АвиаПлюс\ТиС\SystemData\Classes\ПоставщикДанных\Поставщик
Данных.ert(220) }

ПоставщикДанныхМногострочнаяЧасть.Обновить();
{C:\1C\БАЗЫ1С\PERSONAL\ЗАДАНИЯ\ЗАДАНИЕ 4\СПРАВОЧНИК НОМЕНКЛАТУРА.ERT(172)}: ПоставщикДанных::Обновить() : ПоставщикДанных.ТабличноеПоле::Обновить() : ПоставщикДанных.Справочник::УстановитьПоставщикаДанных() : no such column: sc84.ID
ПоставщикДанных.УстановитьТекстЗапроса(ТекстЗапроса,"[КлючПорядка]","[ТекущийЭлемент :Справочник."+ВидСправочника+"]");
{C:\1C\Базы1С\Personal\АвиаПлюс\ТиС\SystemData\Classes\ПоставщикДанных\Поставщик
Данных.Справочник.ert(906) }

вирт().Обновить();
{C:\1C\Базы1С\Personal\АвиаПлюс\ТиС\SystemData\Classes\ПоставщикДанных\Поставщик
Данных.ТабличноеПоле.ert(670) }

ПоставщикДанных.ТабличноеПоле.Обновить();
{C:\1C\Базы1С\Personal\АвиаПлюс\ТиС\SystemData\Classes\ПоставщикДанных\Поставщик
Данных.ert(220) }
Наверх
1 Pro100
 
25.07.13
11:49
База DBF сразу говорю.
2 be-may
 
25.07.13
11:58
А в таблице sc84 действительно нет ключевой колонки id?
// чисто в качестве апа.
3 Pro100
 
25.07.13
12:02
(2)таблица sc84 из описания файла 1cv7.dd это справочник номенклатура и id там есть...
4 Ёпрст
 
25.07.13
12:10
$спрЦены.Владелец = $ТекущийОбъект.ТекущийЭлемент

вот это вот бредятина у тебя
5 Pro100
 
25.07.13
12:15
(4) убрал, заработало. Спасибо
НО, выводит одну и туже номенклатуру и к ней кучу разных цен...
где тогда ставить условие, что только для текущей номенклатуры получать цену?
6 Ёпрст
 
25.07.13
12:19
для лефтджоина не вижу условия связи у тебя..
7 Ёпрст
 
25.07.13
12:20
я хз как там реализовано в этом классе, но должно быть типа того
left join $СрезПоследних.Цены (....) as вася on Вася.Владелец = Номенклатура.ТекущийЭлемент ..

ну и $ и прочую ерунду вокни сам..