Переключение на Главную Страницу Страницы: 1 ... 15 16 [17] 18 19 ... 81 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПоставщикДанных" - обсуждения. Часть 2. (число прочтений - 371014 )
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #240 - 28. Февраля 2011 :: 06:49
Печать  
Kateryne писал(а) 27. Февраля 2011 :: 22:28:
2) Не могу разобраться со записью объектов...

Пишу такой код:
Код
Выбрать все
Процедура СохранитьИзмененияВСтроку()	  
	пПериодикаЛСТекущий = пТабличноеПоле.ТекущаяСтрока;  
	пПериодикаЛСТекущий .Дата = рфДатаИзменения;
	пПериодикаЛСТекущий .Записать();
КонецПроцедуры 



ругается на "Не выбран элемент".



пТабличноеПоле.ТекущаяСтрока - это ССЫЛКА на элемент справочника, т.е. надо примерно так:

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



по поводу 3). сам пока не силен Подмигивание, но для СпискаЗначений в запросе по-моему надо применять "УложитьСписокЗначений"
  
Наверх
ICQ  
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #241 - 28. Февраля 2011 :: 07:09
Печать  
Kateryne писал(а) 27. Февраля 2011 :: 20:31:
1) скажите пожалуйста, а в ПоставщикДанных.Справочник нет возможности установить сортировку по убыванию? По одному реквизиту?

Метод СортироватьПоУбыванию() вроде не работает, и в документации он помечен как недействующий...

Может как-то запрос перехватить? С помощью ПриИзмененииЗапроса не получилось...


У себя проверил. Вот так - все работает:
Код
Выбрать все
ДанныеСправочник.РеквизитСортировки="ВидСпр";
ДанныеСправочник.СортироватьПоУбыванию();
 



Наверное забыли установить РеквизитСортировки ?
а в документации написано не "не действующий", а "не вызывает действий объекта расширения" Подмигивание. Т.е. не вызывает изменений данных и относится только к отображению табл.поля
  
Наверх
ICQ  
IP записан
 
Amel
Junior Member
**
Отсутствует


1С++ rulezzz!

Сообщений: 85
Местоположение: Украина, Винница
Зарегистрирован: 20. Ноября 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #242 - 28. Февраля 2011 :: 08:20
Печать  
Я что-то туплю... 2 дня не могу начать пользоваться расширением ДеревоЗначений поставщика данных.
Будьте добры, ткните в работающий пример.
Не получается увидеть иерархию.
Как нужно инициализировать данные для сего объекта?
  

Восторгаюсь 1С++ и классами к ней!
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #243 - 28. Февраля 2011 :: 08:30
Печать  
2 Kateryne.
п. 1 - сортировка в динамических поставщиках всегда по возрастанию. В принципе для SQL формата БД сортировка в обратном порядке возможна, для DBF к сожалению нет. Допилка в данном случае возможна, но я к сожалению пока не у дел.
п. 2 - как правильно сказали ТекущаяСтрока - это всегда ссылка, собственно и ТекущиеДанные (насколько память не изменяет) тоже не могут быть изменены. Так что вариантов не много: менять данные и соответственно обновление строк вызовет чтение и изменение в ТП, хранить какую нибудь структуру для данных и при выводе строки устанавливать текст (не самый лучший вариант).
п. 3 - насколько я заметил результат запроса - поля id (т.е. не типизированные значения 1С), соответственно они укладываются неправильно. Типизируй значения, чтобы в списке содержались ссылки (элементы справочника, документа и пр.) и все должно получиться.
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #244 - 28. Февраля 2011 :: 08:31
Печать  
2 Amel
А ты колонку для пиктограмм указал?
Попробуй сначала просто добавить сам строки. А работающий пример где-то тут плавал, когда я только первый вариант дерева выкладывал (вроде даже еще версия была 3.07.ххх).
Сча поищу...
В общем вот до появления 4.1.1 я выкладывал пример. 100% гарантию работы дать не могу поскольку может менялись интерфейсы классов при переходе с 3.07 на 4.1, но вполне возможность что все работает Улыбка. Главное что пример есть Улыбка.
  

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


1С++ rulezzz!

Сообщений: 85
Местоположение: Украина, Винница
Зарегистрирован: 20. Ноября 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #245 - 28. Февраля 2011 :: 08:44
Печать  
Спасибо. В примере указал колонку пиктограмм - и заработало!
  

Восторгаюсь 1С++ и классами к ней!
Наверх
ICQ  
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #246 - 01. Марта 2011 :: 06:16
Печать  
ПоставщикДанных.Справочник (Спр-подчиненный)
Как отловить момент интерактивного изменения "ПросмотрПоВладельцу" ???
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #247 - 01. Марта 2011 :: 07:39
Печать  
Выложена новая версия сборки классов + добавил конфигурацию с примерами реализации. Батарейки не все, поэтому сначала прийдется разобраться чуток Улыбка.
4.1.2 от 01.03.11 г.
- исправлены различные найденные ошибки в версии 4.1.1
- объекты "Отбор" и "ЭлементОтбора" переименованы с добавлением в имя "Объектv8."
- в поставку добавлена моя конфигурация на которой я провожу тестирование (как наглядный пример реализации расширений)
  

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


1C++ rocks!

Сообщений: 53
Зарегистрирован: 13. Июня 2009
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #248 - 01. Марта 2011 :: 10:26
Печать  
Большое спасибо за класс и тестовую конфигурацию, как мне её раньше не хватало )
Кстати, а почему в тестовой конфигурации в справочнике договоров обнулен Владелец при открытии подчиненных элементов из справочника контрагентов ?

Если автор не против добавлю готовый вариант для начинающих  с библиотеками и подключенными классами.
  

4_1_2.rar ( 2116 KB | Загрузки )
Наверх
 
IP записан
 
ma3x
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 24. Июля 2010
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #249 - 01. Марта 2011 :: 10:38
Печать  
Столкнулся с особенностью по поводу метода ЗаполнитьИзОбъекта(). В качестве поставщика использую итз, и заполняю его тз по кнопке Обновить. Если упрощенно привести пример


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

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



Первый раз отрабатывает нормально, а на втором происходит ошибка

Цитата:
ПоставщикДанных.ИндексированнаяТаблица::ДобавитьДанныеОКолонке(Строка Идентификатор=Строка, Строка ТипВид=Строка, Число Длина=0, Число Точность=0, Строка Заголовок=Строка, Число ШиринаКолонки=17, Число Итоги=0, Число ОтметкаНезаполненного=0) : Неверно указан номер строки!  Номер строки = 1, всего строк = 0
Колонка = Колонки.Добавить(Идентификатор);
{D:\SQL\Classes\ПоставщикДанных\ПоставщикДанных.ИндексированнаяТаблица.ert(198) }


А если использовать такой порядок следования столбцов, то ошибка не происходит

Код
Выбрать все
        тз.НоваяКолонка("Сотрудник","Справочник.Сотрудники");
        тз.НоваяКолонка("Строка","строка");
	тз.НоваяКолонка("Число","Число"); 


Я так понял ошибка происходит на колонке, которая следует за числовой.
  
Наверх
 
IP записан
 
Kateryne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Зарегистрирован: 30. Марта 2010
Пол: Женский
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #250 - 03. Марта 2011 :: 03:53
Печать  
И таки еще раз здравствуйте!

Спасибо за прошлые ответы, разобралась вроде.
Но теперь другая проблема.
Вроде мелочь, а неприятно.

Сделала обработку, подключила ПоставщикДанных.Справочник на нее.
И открываю ее из другой обработки, внешней, для подбора (через ОткрытьПодбор) значения из справочника.

Так вот, форма сначала открывается слева, а потом где-то между загрузкой формы и ПоставщикДанных.Обновить исчезает и появляется по центру, как будто переоткрывается.
В результате такой неприятный эффект притормаживания. Можно как-то избавиться от него?
Стандартные формы так себя не ведут... Печаль Или если и ведут, то перемещение глазу не заметно.
ЗЫ: ОткрытьФормуМодально тоже не тормозит. Тормозит только ОткрытьФорму и ОткрытьПодбор.
« Последняя редакция: 03. Марта 2011 :: 06:01 - Kateryne »  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


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

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #251 - 03. Марта 2011 :: 07:33
Печать  
Вообще данный эффект может наблюдаться при использовании "привязок" и от "поставщика" не зависит.
  
Наверх
wwwICQ  
IP записан
 
mishav
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 8
Зарегистрирован: 26. Августа 2010
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #252 - 03. Марта 2011 :: 10:52
Печать  
Добрый день,
А никто не может ткнуть или привести пример, как в поставщик данных в табличное поле вытащить реквизит подчиненного справочника?
  
Наверх
 
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #253 - 03. Марта 2011 :: 11:13
Печать  
Anatol писал(а) 03. Марта 2011 :: 07:33:
Вообще данный эффект может наблюдаться при использовании "привязок" и от "поставщика" не зависит.

Ага ,есть такое дело...
и от "привязок" не зависит, специально проверил. Открывается в одном месте (не обязательно слева, я бы сказал - близко к месту кнопки вызова, что ли), а потом прыгает на последнюю запомненную позицию, как и дОлжно штатной форме. Я так понимаю, от этого не избавиться, т.к. в ПослеОткрытия (ПослеСоздания) инициируется поставщик, и на это уходит время.
Кстати, штатная форма ведет себя так же, просто глазу почти незаметно. а если форму с "поставщиком" открыть несколько раз (одну и ту же) - то прыгает только первая, последующие открываются и остаются там же.
  
Наверх
ICQ  
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #254 - 03. Марта 2011 :: 11:25
Печать  
mishav писал(а) 03. Марта 2011 :: 10:52:
Добрый день,
А никто не может ткнуть или привести пример, как в поставщик данных в табличное поле вытащить реквизит подчиненного справочника?


Например, так:

Код
Выбрать все
Перем ПоставщикДанных, ПодчиненныйСпр;
....
....
//======================================================================
//КонтейнерТП - Идентификатор реквизита на форме под ТабличноеПоле
Процедура КонтейнерТППриВыводеСтроки(ТП,ОформлениеСтроки, ДанныеСтроки, ТипРегиона)
	ТекЭлем = ДанныеСтроки; //Справочник-Владелец
	ПодчиненныйСпр.ИспользоватьВладельца(ТекЭлем);
	ПодчиненныйСпр.ВыбратьЭлементы(1);
	Пока ПодчиненныйСпр.ПолучитьЭлемент(1) = 1 Цикл
		//некие уловия
		лТекст = ПодчиненныйСпр.НужныйРеквизит;
	КонецЦикла;
	//// или так:
	//Если ПодчиненныйСпр.НайтиПоРеквизиту("блабла",блабла)=1 Тогда
	//	лТекст = ПодчиненныйСпр.НужныйРеквизит;
	//КонецЕсли;
	////вобщем, как-нибудь спозиционироваться

КонецПроцедуры // КонтейнерТПЦеныПриВыводеСтроки

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

	ДанныеСправочник = ПоставщикДанных.Данные;
	ДанныеСправочник.СоздатьКнопкиПоУмолчанию();
	ДанныеСправочник.НоваяКолонка("РеквизитСправочникаВладельца1");
	ДанныеСправочник.НоваяКолонка("РеквизитСправочникаВладельца2");

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

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

  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 15 16 [17] 18 19 ... 81
ОтправитьПечать