Переключение на Главную Страницу Страницы: 1 ... 48 49 [50] 51 52 ... 79 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПоставщикДанных" - обсуждения, примеры, вопросы (число прочтений - 361800 )
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #735 - 26. Мая 2010 :: 08:47
Печать  
1. Поиск по подстроке... понял. Нужен поиск на вхождение. Ну а у меня везде на "начало". Собственно like мне не очень нравится. Ладно, в найти значение добавлю ТочныйПоиск = 2 Подмигивание
2. Ctrl+F уже есть, точно. Как давно это было, я аж забыл. А про кнопки... свои решения я переписывать не хочу, а местами я кнопки удалял по именам, а не перебором.
3. Про отборы ты бежишь вперед паровоза. Хорошо что про ошибку сказал, я исправлю. Все остальное ждите. Когда нибудь найду силы написать.
4. Эт можно.. но с появлением объекта "УправлениеНастройками". Счас нет.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #736 - 28. Мая 2010 :: 13:08
Печать  

сделал журнал документов поставщик "Документ.РезервированиеТовара" и все бы хорошо, но никак не удается решить два вопроса

1. как убрать из командной панели лишние кнопки? (нужно оставить только 5 первых) пример приведите, то , что то никак не получается (жаль в документации примеров нет)

2. есть три колонки ТП которые участвуют в расчете вычисляемого поля в ПриВыводеСтроки - и в интерфейсе они не нужны.
назвачаю им видимость  = 0, а они все равно на форме (последние три колонки).

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

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

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

	ТабличноеПоле = ПоставщикДанныхМногострочнаяЧасть.ТабличноеПоле;
	ТабличноеПоле.ИзменятьНастройкуКолонок = 0;
	ТабличноеПоле.ИзменятьСоставСтрок = 1;
	ТабличноеПоле.ИзменятьПорядокСтрок = 1;
	ТабличноеПоле.СтильЗаголовков = 1;
	ТабличноеПоле.СтильРамки = 1;

	Колонки = ТабличноеПоле.Колонки;
	Колонка = Колонки.НомерДокумента;
	Колонка.Ширина = 10;
	Колонка = Колонки.ДатаДокумента;
	Колонка.Ширина = 10;

	Колонка = Колонки.Добавить("Клиент");
	Колонка.Заголовок = "Контрагент";
	Колонка.Данные = "Клиент";
	Колонка.Ширина = 80;
	Колонка.ГоризонтальноеВыравнивание = 1;

	Колонка = Колонки.Добавить("Сумма");
	Колонка.Заголовок = "Сумма";
	Колонка.Данные = "Сумма";
	Колонка.Ширина = 15;
	Колонка.ГоризонтальноеВыравнивание = 2;

	Колонка = Колонки.Добавить("СумСкидки");
	Колонка.Заголовок = "СумСкидки";
	Колонка.Данные = "СумСкидки";
	//Колонка.Ширина = 0;
	//Колонка.ГоризонтальноеВыравнивание = 2;
	Колонка.Видимость = 0;

	Колонка = Колонки.Добавить("СумНаценки");
	Колонка.Заголовок = "СумНаценки";
	Колонка.Данные = "СумНаценки";
	//Колонка.Ширина = 0;
	//Колонка.ГоризонтальноеВыравнивание = 2;
	Колонка.Видимость = 0;

	Колонка = Колонки.Добавить("ЗаРазбиение");
	Колонка.Заголовок = "ЗаРазбиение";
	Колонка.Данные = "ЗаРазбиение";
	//Колонка.Ширина = 0;
	//Колонка.ГоризонтальноеВыравнивание = 2;
	Колонка.Видимость = 0;

	Данные.АвтоОбновление = 1;
	Данные.ПериодАвтоОбновления = 10;
	Данные.СоздатьКнопкиПоУмолчанию();

 



как исправить?
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #737 - 28. Мая 2010 :: 16:24
Печать  
По первому вопросу... кнопки можно удалить по номеру или по идентификатору. Номер колонки можно посчитать. А лучше идентификаторами, так вернее.
Код
Выбрать все
// по номеру
КоличествоКнопок = КоманднаяПанель.Количество();
Для НомерКнопки = 6 По КоличествоКнопок Цикл
	  КоманднаяПанель.Удалить(6);
КонецЦикла;
// по идентификатору
КоманднаяПанель.Удалить("Настройка");
КоманднаяПанель.Удалить("Печать"); // и т.д. 


По второму вопросу, вероятнее всего после "Видимость = 0" у тебя стоит "ВосстановитьПозициюКолонок()", а при закрытии колонки видны. Можно после этой процедуры Видимость = 0 поставить, и будет все путем.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #738 - 31. Мая 2010 :: 05:21
Печать  
спасибо, буду пробовать
  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

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

Код
Выбрать все
	ТабличноеПоле.ВосстановитьПозициюКолонок();

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



но вываливается ошибка
аСумма  = ДанныеСтроки.Получить("Сумма") - ДанныеСтроки.Получить("СумСкидки") + ДанныеСтроки.Получить("СумНаценки") + ДанныеСтроки.Получить("ЗаРазбиение");
{Обработка.ЖурналРезервов.Форма.Модуль(284)}: Недопустимое значение первого параметра.
эта строка из процедуры ПриВыводеСтроки

Код
Выбрать все
Процедура ТабличноеПолеМногострочнойЧастиПриВыводеСтроки(ТабличноеПоле, ОформлениеСтроки, ДанныеСтроки,ТипРегиона)
	Для сч=0 По ОформлениеСтроки.Ячейки.Количество()-1 Цикл
		ОфЯч = ОформлениеСтроки.Ячейки.Получить(сч); аСумма=0;
		Если ОфЯч.Имя = "Сумма" Тогда
			аСумма  = ДанныеСтроки.Получить("Сумма") - ДанныеСтроки.Получить("СумСкидки") + ДанныеСтроки.Получить("СумНаценки") + ДанныеСтроки.Получить("ЗаРазбиение");
			ОформлениеСтроки.Ячейки.Сумма.УстановитьТекст(Формат(аСумма,"Ч-15.2. "));
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры
 






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


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #740 - 31. Мая 2010 :: 06:03
Печать  
что-то, я наверно еще от выходных не отошел, не получается пока и кнопки лишние удалить. Никаких ошибок не вываливается, но лишние кнопки остаются, пробовал обеими способами

Код
Выбрать все
	КоманднаяПанель = СоздатьОбъект("ПоставщикДанных.КоманднаяПанель");

	//КоманднаяПанель.Удалить("Настройка");
  //КоманднаяПанель.Удалить("Печать");

	КоличествоКнопок = КоманднаяПанель.Количество();
	Для НомерКнопки = 6 По КоличествоКнопок Цикл
		КоманднаяПанель.Удалить(НомерКнопки);
	КонецЦикла;

 



может не в том месте подставляю

вот весь код процедуры

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

	КоманднаяПанель = СоздатьОбъект("ПоставщикДанных.КоманднаяПанель");

	//КоманднаяПанель.Удалить("Настройка");
  //КоманднаяПанель.Удалить("Печать");

	КоличествоКнопок = КоманднаяПанель.Количество();
	Для НомерКнопки = 6 По КоличествоКнопок Цикл
		КоманднаяПанель.Удалить(НомерКнопки);
	КонецЦикла;


	//КоманднаяПанель.Доступность("8",0);
	//Кнопка.Удалить(8);

	Данные = ПоставщикДанныхМногострочнаяЧасть.Данные;

	ТабличноеПоле = ПоставщикДанныхМногострочнаяЧасть.ТабличноеПоле;
	ТабличноеПоле.ИзменятьНастройкуКолонок = 0;
	ТабличноеПоле.ИзменятьСоставСтрок = 1;
	ТабличноеПоле.ИзменятьПорядокСтрок = 1;
	ТабличноеПоле.СтильЗаголовков = 1;
	ТабличноеПоле.СтильРамки = 1;

	Колонки = ТабличноеПоле.Колонки;
	Колонка = Колонки.НомерДокумента;
	Колонка.Ширина = 10;
	Колонка = Колонки.ДатаДокумента;
	Колонка.Ширина = 10;

	Колонка = Колонки.Добавить("Клиент");
	Колонка.Заголовок = "Контрагент";
	Колонка.Данные = "Клиент";
	Колонка.Ширина = 80;
	Колонка.ГоризонтальноеВыравнивание = 1;

	Колонка = Колонки.Добавить("Сумма");
	Колонка.Заголовок = "Сумма";
	Колонка.Данные = "Сумма";
	Колонка.Ширина = 15;
	Колонка.ГоризонтальноеВыравнивание = 2;

	Колонка = Колонки.Добавить("СумСкидки");
	Колонка.Заголовок = "СумСкидки";
	Колонка.Данные = "СумСкидки";
	//Колонка.Ширина = 0;
	//Колонка.ГоризонтальноеВыравнивание = 2;
	//Колонка.Видимость = 0;

	Колонка = Колонки.Добавить("СумНаценки");
	Колонка.Заголовок = "СумНаценки";
	Колонка.Данные = "СумНаценки";
	//Колонка.Ширина = 0;
	//Колонка.ГоризонтальноеВыравнивание = 2;
	//Колонка.Видимость = 0;

	Колонка = Колонки.Добавить("ЗаРазбиение");
	Колонка.Заголовок = "ЗаРазбиение";
	Колонка.Данные = "ЗаРазбиение";
	//Колонка.Ширина = 0;
	//Колонка.ГоризонтальноеВыравнивание = 2;
	//Колонка.Видимость = 0;

	Данные.АвтоОбновление = 1;
	Данные.ПериодАвтоОбновления = 10;
	Данные.СоздатьКнопкиПоУмолчанию();


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

	СвойСписок=СоздатьОбъект("СписокЗначений");
	RS = СоздатьОбъект("ODBCRecordset");
	RS.УстБД1С();
	ТекстЗапроса = "
	|SELECT
  |	Спр1.Code as Код,
  |	$Спр.Объект as [Наименование $Справочник.Контрагенты],
  |	$Спр1.ФактАдрес as Адрес
	|FROM
	| $Справочник.Пользователи_Избранное as Спр
	|INNER JOIN $Справочник.Контрагенты Спр1(nolock) on Спр1.[id] = $Спр.Объект
	|WHERE
  |	Спр.ParentExt = :аПользователь
	| Order by Спр1.Descr
	|";

	RS.УстановитьТекстовыйПараметр("аПользователь", глПользователь);
	ТЗ1 = RS.ВыполнитьИнструкцию(ТекстЗапроса);
  ТЗ1.Выгрузить(СвойСписок,,,"Наименование");


	//ОтборКлиент = Данные.Отбор.Клиент;
	//ОтборКлиент.Использование = 1;
	//ОтборКлиент.ВидСравнения = ВидыСравнения.ВСписке;
	//ОтборКлиент.Значение = СвойСписок;

	ОтборДата = Данные.Отбор.ДатаДокумента;
	ОтборДата.Использование = 1;
	ОтборДата.ВидСравнения = ВидыСравнения.Интервал;
	ОтборДата.ЗначениеС = НачМесяца(РабочаяДата());
	ОтборДата.ЗначениеПО = РабочаяДата();
	ОтборДата.Значение = РабочаяДата();

	ТабличноеПоле.ВосстановитьПозициюКолонок();

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

КонецПроцедуры // ИнициализацияМногострочнойЧасти

 


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


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

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #741 - 31. Мая 2010 :: 06:29
Печать  
попробуй вместо

     Колонки = ТабличноеПоле.Колонки;
     Колонка = Колонки.НомерДокумента;


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



а по командной панеле...
он не живет сама по себе

ПоставщийДанных.КоманднаяПанель

и ничего создавать не нужно
  
Наверх
wwwICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #742 - 31. Мая 2010 :: 06:29
Печать  
Смотри удаляя кнопки ты сдвигаешь и их номер, поэтому удаление надо производить всегда одной и той же кнопки (6 например), но ровно столько раз, сколько после нее кнопок (вместе с ней).

Что касается ошибки когда у тебя видимость = 0, не удивительно. Дело в том что оптимизация поставщика просто не считывает данные колонок которые не отображаются. Т.о. и получается что ты не видишь "что происходит".
Вообще данный расчет  можно добавить с помощью метода "ДобавитьКолонкуДанных", только написать его на SQL.
Код
Выбрать все
ДобавитьКолонкуДанных("ВычисляемаяСумма","Сумма","$ШапкаДокумента.Сумма - $шапкаДокумента.СумСкидки + $ШапкаДокумента.СумНаценки + $ШапкаДокумента.ЗаРазбиение","Число",15,2,1); 



Только учти что имя колонки не должно совпадать с именами колонок поставщика. У тебя уже есть сумма, значит пусть будет Сумма2 (или как я назвал "ВычисляемаяСумма").
Далее методом НоваяКолонка добавляешь.
Код
Выбрать все
Данные.НоваяКолонка("ВычисляемаяСумма"); 

  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #743 - 31. Мая 2010 :: 06:59
Печать  
Опа, а я и не заметил что КоманднаяПанель создается отдельно. Это зачем? ПоставщикДанных.ТабличноеПоле.КоманднаяПанель - вот то что надо.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #744 - 31. Мая 2010 :: 07:50
Печать  
vandalsvq писал(а) 31. Мая 2010 :: 06:59:
Опа, а я и не заметил что КоманднаяПанель создается отдельно. Это зачем? ПоставщикДанных.ТабличноеПоле.КоманднаяПанель - вот то что надо.



в каком-то примере (или кто-то приклыдывал в вопросе свой пример кода) было так, я и взял за основу


слушай, а почему при каждом открытии формы он мне пишет

"Тут: Дата, а оно пустое? 0"   - хотя дата документа отображается номально?
  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #745 - 31. Мая 2010 :: 08:10
Печать  
ну не мой сегодня день - явно, ничего с ходу не получается

пробовал так
Код
Выбрать все
	КоманднаяПанель = ПоставщикДанных.ТабличноеПоле.КоманднаяПанель;

	КоличествоКнопок = КоманднаяПанель.Количество();
	Для НомерКнопки = 6 По КоличествоКнопок Цикл
		КоманднаяПанель.Удалить(6);
	КонецЦикла;

 


- все кнопки на месте (первым способом (с индентификатором) тоже)

во вопросу о вычисляемом поле
Код
Выбрать все
	Данные.ДобавитьКолонкуДанных("Сумма2","Сумма2","$ШапкаДокумента.Сумма - $шапкаДокумента.СумСкидки + $ШапкаДокумента.СумНаценки + $ШапкаДокумента.ЗаРазбиение","Число",15,2,1);

	Данные.НоваяКолонка("Сумма2");
 


пишет ошибку
ПоставщикДанных.Документы::УстановитьПоставщикаДанных() : Meta name parser: неизвестное метаимя или алиас "$шапкаДокумента"
ПоставщикДанных.УстТекстЗапроса(ТекстЗапроса);
{D:\1C\Base\Classes\ПоставщикДанных\ПоставщикДанных.Документы.ert(757) }

может у меня не последняя версия?
класс брал из 1Cv7_ext_TF_filter_003
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #746 - 31. Мая 2010 :: 08:14
Печать  
Полный текст создания напиши, убери добавить соединение данных (в комментарий) + РежимОтладки = 1 покажи хоть маленький кусочек.
Все это в архив и сюда давай Подмигивание.

Стоп не надо.

Обрати внимание что у тебя шапкаДокумента с маленькой буквы написано. Там на текущий момент еще регистрозависимость Печаль.
Пиши как надо "$ШапкаДокумента".

Пы.сы. надо бы эту байду победить.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #747 - 31. Мая 2010 :: 08:18
Печать  
И это... кнопки после создания удаляй Улыбка.
А то ты сначала пишешь удаление, потом вызов "СоздатьКнопкиПоУмолчанию"  Очень довольный
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #748 - 31. Мая 2010 :: 08:34
Печать  
Отлично! Смех Все заработало, остался только маленький нюанс :

почему при каждом открытии формы он мне пишет

"Тут: Дата, а оно пустое? 0"   - хотя дата документа отображается номально?
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #749 - 31. Мая 2010 :: 08:40
Печать  
Об этом я уже писал... артефакт. В новой версии "уйдет" в небытие. Я точно не помню то ли в ПоставщикДанных.ЭлементОтбора то ли в ПоставщикДанных.Сервис это. Найди удали, ничего не произойдет Подмигивание.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 48 49 [50] 51 52 ... 79
ОтправитьПечать