Переключение на Главную Страницу Страницы: 1 ... 31 32 [33] 34 35 ... 81 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПоставщикДанных" - обсуждения. Часть 2. (число прочтений - 376880 )
ssv02
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 16. Апреля 2010
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #480 - 20. Октября 2011 :: 11:02
Печать  
Попытался реализовать форму списка справочника. Возникла проблема. Длина кода справочника 6 символов. В табличном поле элементы с кодом >=100000 отражаются с кодом "99 999". Подскажите куда копать.


Нашел!!!!!!!!!!!!!!!!!!!
Проблема в типизации колонок при описании справочника.

http://www.1cpp.ru/forum/YaBB.pl?num=1285520767/75#75
http://www.1cpp.ru/forum/YaBB.pl?num=1290007522
« Последняя редакция: 20. Октября 2011 :: 13:37 - ssv02 »  
Наверх
 
IP записан
 
ssv02
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 16. Апреля 2010
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #481 - 20. Октября 2011 :: 13:32
Печать  
Можно ли где-то посмотреть пример формы списка справочника с реализацией дерева групп + многострочная часть справочника
  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #482 - 28. Октября 2011 :: 06:46
Печать  
Делаю форму подбора из справочника.Номенклатура

Нужно в одной из колонок показать текущий остаток товара по определенному списку складов
как передать в запрос список значений для фильтра ?

Пробовал так:

     Данные.УложитьСписокЗначений(глСписокСкладов, "#ГруппаН", "Склады");




Код
Выбрать все
	ТекстСоединения = "left join
	|	$РегистрОстатки.ОстаткиТМЦ(,Склад IN (SELECT Val FROM #ГруппаН),(Номенклатура),(Количество),) as vt
	|		on $ТекущийОбъект.ТекущийЭлемент = vt.Номенклатура
	|";
	Данные.ДобавитьСоединениеДанных("ОстаткиПоТовару",ТекстСоединения);

	Данные.УложитьСписокЗначений(глСписокСкладов, "#ГруппаН", "Склады");
	Данные.ДобавитьКолонкуДанных("КолОстаток","ТМЦ остаток","ISNULL(vt.КоличествоОстаток,0)","Число",19,2,1);

	Колонки = ТабличноеПоле.Колонки;
	Данные.НоваяКолонка("Код");
	Данные.НоваяКолонка("Наименование");
	Данные.НоваяКолонка("КолОстаток");

 




выдает ошибку, подскажите как правильно
  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #483 - 28. Октября 2011 :: 09:40
Печать  
оказывается нужно было так:

Код
Выбрать все
	ТекстСоединения = "left join
	|	$РегистрОстатки.ОстаткиТМЦ(,Склад IN (SELECT Val FROM #ГруппаН),(Номенклатура),(Количество),) as vt
	|		on $ТекущийОбъект.ТекущийЭлемент = vt.Номенклатура
	|";
	Данные.ДобавитьСоединениеДанных("ОстаткиПоТовару",ТекстСоединения);
	Запрос=Данные.ПрямойЗапрос;
	Запрос.УложитьСписокОбъектов(глСписокСкладов, "#ГруппаН", "Склады");
	Данные.ДобавитьКолонкуДанных("КолОстаток","ТМЦ остаток","ISNULL(vt.КоличествоОстаток,0)","Число",14,2,1);
 

  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #484 - 28. Октября 2011 :: 11:24
Печать  
Задача усложняется, необходимо полученный остаток пересчитать из базовых единиц в основные

пробую так:

Код
Выбрать все
ТекстСоединения = "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);
 



вываливается ошибка

ПоставщикДанных.Справочник::УстановитьПоставщикаДанных() : Meta name parser: неизвестное метаимя или алиас "$Спр1"
ПоставщикДанных.УстТекстЗапроса(ТекстЗапроса);
авщикДанных.Справочник.ert(1049) }
  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #485 - 28. Октября 2011 :: 12:17
Печать  
сделал подругому, сначала подсоединяю таблицу единиц
Код
Выбрать все
	ТекстСоединения = "
  |left join $Справочник.Единицы СпрЕ(nolock) on СпрЕ.[id] = $ТекущийОбъект.ОсновнаяЕдиница
	|";
	Данные.ДобавитьСоединениеДанных("КоеэфЕИ",ТекстСоединения);

 



потом

Код
Выбрать все
	ТекстСоединения = "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);
 




но все равно пишет туже ошибку

неизвестное метаимя или алиас "$СпрЕ"
  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #486 - 29. Октября 2011 :: 03:31
Печать  
не понимаю, упростил схему до простого и все равно ошибки
раньше (на прежних проектах) я делал так и все работало (правда это была 4-я версия ПоставщикаДанных)
Код
Выбрать все
 	Данные.ДобавитьСоединениеДанных("ОснЕд","left join Справочник.Единицы as Единицы (nolock) on $ТекущийОбъект.ОсновнаяЕдиница = Единицы.id");
	",10,2,1);
 



теперь ошибки внутри класса
Код
Выбрать все
ПоставщикДанных.Справочник::УстановитьПоставщикаДанных() : Ошибка в запросе.
ПоставщикДанных.УстТекстЗапроса(ТекстЗапроса);
авщикДанных.Справочник.ert(1049) }

ПоставщикДанных.ТабличноеПоле::Обновить() : ПоставщикДанных.Справочник::УстановитьПоставщикаДанных() : Ошибка в запросе.
ПоставщикДанных.УстТекстЗапроса(ТекстЗапроса);
авщикДанных.Справочник.ert(1049) }

вирт().Обновить();
авщикДанных.ТабличноеПоле.ert(590) }

ПоставщикДанных::Обновить() : ПоставщикДанных.ТабличноеПоле::Обновить() : ПоставщикДанных.Справочник::УстановитьПоставщикаДанных() : Ошибка в запросе.
ПоставщикДанных.УстТекстЗапроса(ТекстЗапроса);
авщикДанных.Справочник.ert(1049) }

вирт().Обновить();
авщикДанных.ТабличноеПоле.ert(590) }

ПоставщикДанных.ТабличноеПоле.Обновить();
авщикДанных.ert(186) }

ПоставщикДанных.Обновить();
{D:\1C_WORK\V7\ОСНОВНАЯБАЗА\BASESQL\1НОМЕНКЛАТУРА.ERT(196)}: ПоставщикДанных::Обновить() : ПоставщикДанных.ТабличноеПоле::Обновить() : ПоставщикДанных.Справочник::УстановитьПоставщикаДанных() : Ошибка в запросе.
ПоставщикДанных.УстТекстЗапроса(ТекстЗапроса);
авщикДанных.Справочник.ert(1049) }

вирт().Обновить();
авщикДанных.ТабличноеПоле.ert(590) }

ПоставщикДанных.ТабличноеПоле.Обновить();
авщикДанных.ert(186) }
 

  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #487 - 29. Октября 2011 :: 15:21
Печать  
ты бы обработку прикрепил, а то уже и не понятно куда смотреть...
  
Наверх
wwwICQ  
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #488 - 30. Октября 2011 :: 10:24
Печать  
Да все разобрался, помог  Mikeware на мисте
  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #489 - 31. Октября 2011 :: 05:32
Печать  
Еще одна проблема, нужно добавить колонку с ценой.

Делаю дополнительное соединение:

Код
Выбрать все
Данные.ДобавитьСоединениеДанных("ЦенаТовара","left join Справочник.Цены as Цены (nolock) on $ТекущийОбъект.ТекущийЭлемент = Цены.ParentExt");
 



добавляю колонку

Код
Выбрать все
  Данные.ДобавитьКолонкуДанных("Цена2","ТМЦ остаток2","$ПоследнееЗначение.Цены.Цена(Цены.id, :ВыбДата) as Цена","Число",10,2,1);
    Запрос=Данные.ПрямойЗапрос;
    Запрос.УстановитьТекстовыйПараметр("ВыбДата", ПолучитьДатуТА());
 



но как наложить условие по типу цены ?

если ниже попытаться передать условие:

Код
Выбрать все
 ТекстСоединения = "WHERE $Цены.ТипЦен = :ТипЦены ";
    Данные.ДобавитьСоединениеДанных("СодинениеТипЦены",ТекстСоединения);
 



то в окне табичного поля сообщение: incorrect syntax near the keyword 'where'
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #490 - 31. Октября 2011 :: 07:39
Печать  
рабочий кусок кода

Код
Выбрать все
	//{		Цены
	ДанныеСпр.ДобавитьКолонкуДанных("ТипЦен", "Тип цен", "$спрЦены.ТипЦен", "Справочник.ТипыЦен",,,1);
	ДанныеСпр.ДобавитьСоединениеДанных("ТипЦен", "
	|left join Справочник.Цены as спрЦены $nolock on $ТекущийОбъект.ТекущийЭлемент = $спрЦены.Владелец and $спрЦены.ТипЦен = :ВыбТипЦен
	|left join Справочник.Единицы as ОЕдиница $nolock on $ТекущийОбъект.ОсновнаяЕдиница = $ОЕдиница.ТекущийЭлемент
	|");

	ПЗ.УстановитьТекстовыйПараметр("ВыбТипЦен", ВыбТипЦен);
	ДанныеСпр.НоваяКолонка("ТипЦен");


	ДанныеСпр.ДобавитьКолонкуДанных("Цена", "Цены", "
	|(case
	|When $ПоследнееЗначение.Цены.Единица($спрЦены.ТекущийЭлемент,:ЗначениеГраницы~) = $ТекущийОбъект.БазоваяЕдиница Then $ПоследнееЗначение.Цены.Цена($спрЦены.ТекущийЭлемент,:ЗначениеГраницы~)
	|ELSE $ПоследнееЗначение.Цены.Цена($спрЦены.ТекущийЭлемент,:ЗначениеГраницы~) / $ОЕдиница.Коэффициент
	|END)
	|", "Число", 19, 2,1);

	ДанныеСпр.ДобавитьКолонкуДанных("Валюта", "Вал.", "$спрЦены.Валюта", "Справочник.Валюты",,,0);
	ПЗ.УстановитьТекстовыйПараметр("ЗначениеГраницы", ЗначениеГраницы);
	ДанныеСпр.НоваяКолонка("Цена");
	ДанныеСпр.НоваяКолонка("Валюта");
	//} 



ПЗ если непонятно это:

Код
Выбрать все
ПЗ = ПоставщикНоменклатура.Данные.ПрямойЗапрос; 

  
Наверх
wwwICQ  
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #491 - 02. Ноября 2011 :: 10:38
Печать  
спасибо, мне уже подсказали на мисте немного по другому
кому интересно выкладываю код :

Код
Выбрать все
	Данные.ДобавитьСоединениеДанных("ОснЕд","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);

	, :ВыбДата) ","Число",10,2,1);
	//Запрос=Данные.ПрямойЗапрос;
	Запрос.УстановитьТекстовыйПараметр("ВыбДата",  Конт.ДатаДок);


 



все равно большое спасибо, что ответили
  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #492 - 02. Ноября 2011 :: 12:21
Печать  
В том же примере (ПоставщикДанных Справочник ) необходимо, что бы при выборе строки не открывался элемент справочника.

Судя по документации по ТП у события Выбор нет ФСО.
Смотрел документацию по ПоставщикуДанных, там есть похожее событие
ПередНачаломИзменения(ФСО), но все равно карточка элемента справочника открывается.
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #493 - 02. Ноября 2011 :: 15:42
Печать  
dimm73 писал(а) 02. Ноября 2011 :: 12:21:
В том же примере (ПоставщикДанных Справочник ) необходимо, что бы при выборе строки не открывался элемент справочника.

Судя по документации по ТП у события Выбор нет ФСО.
Смотрел документацию по ПоставщикуДанных, там есть похожее событие
ПередНачаломИзменения(ФСО), но все равно карточка элемента справочника открывается.


у тебя должен быть выставлен РежимВыбора = 1;
  
Наверх
wwwICQ  
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #494 - 03. Ноября 2011 :: 02:34
Печать  
Большое спасибо (Anatol) РежимВыбора - то, что нужно
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 31 32 [33] 34 35 ... 81
ОтправитьПечать