Переключение на Главную Страницу Страницы: 1 ... 65 66 [67] 68 69 ... 81 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПоставщикДанных" - обсуждения. Часть 2. (число прочтений - 415139 )
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #990 - 18. Ноября 2013 :: 13:48
Печать  
Спасибо, но это не так важно - обычная работа не требует монопольности.
  
Наверх
 
IP записан
 
elkpro
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 145
Зарегистрирован: 19. Мая 2006
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #991 - 21. Ноября 2013 :: 21:00
Печать  
vandalsvq писал(а) 07. Ноября 2013 :: 17:26:
Участок.Использование = 1 означает что отбор надо включить, при этом вид сравнения и значение отбора не задано.
Если надо просто на равенство условие задать, то советую использовать "ЭлементОтбора.Установить(...)" (см. в инструкции).

Не помешает включить режим отладки и посмотреть запрос который получается. Может что прояснится.


Столкнулся с такой же проблемой - не работает отбор по дополнительным реквизитам, которые присоединены через метод ДобавитьКолонкуДанных - рыл рыл и нарыл метод в классе ПоставщикДанных.Сервис. Тут видно, что вся функция закомментирована. Вопрос почему?
В версии 4 данный отбор отрабатывает и функция не закомментирована. Более детально изучив - вылезает проблема с типом ЭлементОтбора = Отбор.Получить(Индекс) - тип значения ЭлементОтбора возвращает Число.


Функция ПолучитьСтрокуСоединений(Отбор) Экспорт
     Возврат "";
     //ПоляНастройки = Отбор.ПолучитьДоступныеПоля();
     //
     //ТаблицаСоединений = СоздатьОбъект("ИндексированнаяТаблица");
     //ТаблицаСоединений.НоваяКолонка("ТекстСоединений");
     //КоличествоОтборов = Отбор.Количество()-1;
     //Для Индекс = 0 По КоличествоОтборов Цикл
     //      ЭлементОтбора = Отбор.Получить(Индекс);
     //      Если ТипЗначенияСтр(ЭлементОтбора) = "Объектv8.ГруппаОтбора" Тогда
     //            Продолжить;
     //      КонецЕсли;
     //      Если ТипЗначенияСтр(ЭлементОтбора.ПолеНастройки) <> "ПолеНастройки" Тогда
     //            Продолжить;
     //      КонецЕсли;
     //      
     //      Если (ЭлементОтбора.Использование = 1) и (ПустоеЗначение(ЭлементОтбора.ПолеНастройки.Соединение) = 0) Тогда
     //            ТаблицаСоединений.НоваяСтрока();
     //            ТаблицаСоединений.ТекстСоединений = ЭлементОтбора.ПолеНастройки.Соединение;
     //      КонецЕсли;
     //КонецЦикла;
     //ТаблицаСоединений.Свернуть("ТекстСоединений","");
     //СтрСоединения = "";
     //ТаблицаСоединений.ВыбратьСтроки();
     //Пока ТаблицаСоединений.ПолучитьСтроку() = 1 Цикл
     //      СтрСоединения = СтрСоединения + ТаблицаСоединений.ТекстСоединений + "
     //      |";
     //КонецЦикла;
     //Возврат СтрСоединения;
КонецФункции // ПолучитьСтрокуСоединений
  
Наверх
 
IP записан
 
DmSk
Junior Member
**
Отсутствует



Сообщений: 56
Местоположение: Барнаул
Зарегистрирован: 28. Марта 2008
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #992 - 22. Ноября 2013 :: 15:12
Печать  
В журнале есть поле "контрагент", нужно добавить ещё поле "код", в которое нужно выводить код контрагента,
думал добавить поле, а потом в "ТППриВыводеСтроки(" добавлять содержимое, но пока не получается,
еще можно ли новое поле создать примерно таким образом:
Данные.ДобавитьКолонкуДанных("КодКлиента","Код Клиента","$ТекущийОбъект.Клиент.Код","Строка",,,1); ?

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



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #993 - 26. Ноября 2013 :: 07:52
Печать  
DmSk писал(а) 22. Ноября 2013 :: 15:12:
В журнале есть поле "контрагент", нужно добавить ещё поле "код", в которое нужно выводить код контрагента,
думал добавить поле, а потом в "ТППриВыводеСтроки(" добавлять содержимое, но пока не получается,
еще можно ли новое поле создать примерно таким образом:
Данные.ДобавитьКолонкуДанных("КодКлиента","Код Клиента","$ТекущийОбъект.Клиент.Код","Строка",,,1); ?



Я в похожей ситуции сделал следующее:

У меня есть 2 документа: ЗаявкаПокупателя и Поездка. У документа ЗаявкаПокупателя есть поле Поездка (тип: Документ.Поездка), а у документа Поездка есть поле Статус. Мне потребовалось в журнале заявок выводить статус ее поездки. Сделал вот так:

Данные.ДобавитьСоединениеДанных( "Документ_Поездка","JOIN Документ.ЗаявкаПокупателя as ДокЗаявка
|ON ДокЗаявка.iddoc = ТекущийОбъект.iddoc
|LEFT JOIN Документ.Поездка as ДокПоездка ON ДокПоездка.iddoc = ДокЗаявка.Поездка" );
                 
15,,1);
Данные.НоваяКолонка( "колСтатус" );



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



Сообщений: 56
Местоположение: Барнаул
Зарегистрирован: 28. Марта 2008
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #994 - 26. Ноября 2013 :: 11:05
Печать  
спасибо, получился такой запрос:
     Данные.ДобавитьСоединениеДанных( "Документ_Отгрузка","
     |JOIN
     |      Документ.ЗаявкаНаОтгрузку as ДокОтгрузка (NOLOCK)
     |ON
     |      ДокОтгрузка.iddoc = ТекущийОбъект.iddoc 
     |LEFT JOIN
     |      Справочник.Клиенты as СпрКлиенты (NOLOCK)
     |ON
     |      $ДокОтгрузка.Клиент = СпрКлиенты.id" );   
     
     Данные.ДобавитьКолонкуДанных("КодКлиента","Код клиента","СпрКлиенты.Code","Строка",15,,1);      
     ); 
     
     Данные.НоваяКолонка("КодКлиента");
     Данные.НоваяКолонка("ИННКлиента")
  
Наверх
 
IP записан
 
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #995 - 26. Ноября 2013 :: 11:08
Печать  
Нашел неприятный момент - созданные по способу выше поля не реагируют на фильтр "Отбор по значению в текущей колонке". Может уважаемые специалисты подскажут способ решить эту проблему кроме перехвата нажатия кнопки и прописывания своего отбора?
  
Наверх
 
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #996 - 26. Ноября 2013 :: 11:47
Печать  
ildary писал(а) 26. Ноября 2013 :: 11:08:
Нашел неприятный момент - созданные по способу выше поля не реагируют на фильтр "Отбор по значению в текущей колонке".

Поддерживаю вопрос. Тоже на этом споткнулся:
Код
Выбрать все
		Документа.Себестоимость","Число",15,2,1);
		ПДДанные.НоваяКолонка( "Наценка",1);
 


По полю "Наценка" отбор не срабатывает
  
Наверх
ICQ  
IP записан
 
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #997 - 29. Ноября 2013 :: 11:29
Печать  
Уважаемые специалисты, скажите пожалуйста, как вызвать программно нажатие на кнопку командной панели табличного поля? Хочется, чтобы при при правом щелчке по ячейке появился список значений с пунктом "Отбор по текущему значению" и юзеру не пришлось бы гонять мышку до кнопки фильтра. Вывод списка значений у меня сделан, а как программно нажать кнопку - пока непонятно.
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #998 - 30. Ноября 2013 :: 16:47
Печать  
Поиск документов в журнале "Документ" по номеру. Запрос формируется так, что курсор позиционируется на текущий документ (префикс + текущий номер в ТП), а не ищет префикс + вводимый номер.
Или у меня старый релиз?
Кто-то сталкивался, исправлял?
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #999 - 30. Ноября 2013 :: 18:54
Печать  
Немного подправил (для частного случая) поиск по номеру и дате.
1. Стало искаться
2. Поиск стал происходить "во всех направлениях"

ПоставщикДанных.Документы

Функция БыстрыйПоискПоПодстроке (номер у заказчика  текстовый, без лидирующих нулей)

Код
Выбрать все
//1c911.by
	//КлючевоеСлово = ?(Найти(Нрег(ТекстЗапросаПоиска),"where") = 0,"where","and");
	КлючевоеСлово = ?(Найти(Нрег(ТекстЗапросаПоиска),"where") = 0," where"," and");

	Если (Врег(ИмяКолонки) = "НОМЕРДОКУМЕНТА") и (Найти("0123456789",Лев(Значение,1)) > 0) Тогда
		//1c911.by
		Значение = Строка(Значение);
		ТекстЗапросаПоиска = ТекстЗапросаПоиска + КлючевоеСлово + " " + ВложеннаяСтруктура.РеквизитЗапроса + " >= '" + Значение + "'
		|";
		//Значение = Формат(Значение,"Ч"+?(МетаДокумент.ТипНомера = "Числовой","","(0)")+МетаДокумент.ДлинаНомера);
		//ТекстЗапросаПоиска = ТекстЗапросаПоиска + КлючевоеСлово + " " + ВложеннаяСтруктура.РеквизитЗапроса + " = '" + Значение + "'
		//|";
		КлючевоеСлово = "and";
	Иначе
		ТекстЗапросаПоиска = ТекстЗапросаПоиска + чевоеСлово);
	КонецЕсли;
	//1c911.by включить для поиска вперед
	//ТекстЗапросаПоиска = ТекстЗапросаПоиска + ПолучитьУсловиеДляПоиска(ИмяКолонки,ТекущиеДанные,0,Тип,Вид,КлючевоеСлово); 



Функция ПолучитьТекстИсточникаСбора

Код
Выбрать все
	Если ЭтоSQL = 0 Тогда
		ТекстИсточника = ТекстИсточника + "
		|"+КлючевоеСлово+" ТекущийОбъект.iddocdef = :ВидДокумента."+ВидДокумента+"
		|";
		КлючевоеСлово = " and"; //1c911.by "and"
	КонецЕсли;

	// добавляем фильтры по отбору данных
	КоличествоОтборов = СвойствоОтбор.Количество()-1;
	Для НомерОтбора = 0 По КоличествоОтборов Цикл
		ЭлементОтбора = СвойствоОтбор.Получить(НомерОтбора);
		ТекстОтбора = СформироватьТекстОтбора(ЭлементОтбора);
		Если ПустоеЗначение(ТекстОтбора) = 0 Тогда
			ТекстИсточника = ТекстИсточника + РазделительСтрок + КлючевоеСлово + РазделительСтрок + "	" + ТекстОтбора;
			КлючевоеСлово = " and"; //1c911.by "and"
		КонецЕсли;
	КонецЦикла;
 

« Последняя редакция: 30. Ноября 2013 :: 20:07 - Вадимко »  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Igor Nikolaenko
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 47
Зарегистрирован: 01. Апреля 2010
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1000 - 01. Декабря 2013 :: 14:28
Печать  
ildary писал(а) 26. Ноября 2013 :: 11:08:
Нашел неприятный момент - созданные по способу выше поля не реагируют на фильтр "Отбор по значению в текущей колонке".


Для решения данного вопроса необходимо в Объекты_v8\ПолеНастройки.ert изменить процедуру:

Процедура ПриЗаписи_ПолеЗапроса(Параметр)
     
     Если РазрешитьИзменение = 0 Тогда
           Возврат;
     КонецЕсли;

     //-Николаенко И.Н., 2013-11-12, убираем проверку для реализации отборов по колонкам, добавленных методом ДобавитьКолонкуДанных()
     //Если ПустаяСтрока(ПутьКДанным) = 0 Тогда
     //      Возврат;
     //КонецЕсли;
     //
     //Если ПустоеЗначение(Родитель) = 0 Тогда
     //      Возврат;
     //КонецЕсли;
     //-_

     ПолеЗапроса = Параметр;
КонецПроцедуры // ПриЗаписи_ПолеЗапроса
  
Наверх
 
IP записан
 
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1001 - 02. Декабря 2013 :: 06:57
Печать  
Большое спасибо за совет, все получилось! Данный патч может вызвать какие-нибудь проблемы?
  
Наверх
 
IP записан
 
Igor Nikolaenko
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 47
Зарегистрирован: 01. Апреля 2010
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1002 - 02. Декабря 2013 :: 18:12
Печать  
ildary писал(а) 02. Декабря 2013 :: 06:57:
Большое спасибо за совет, все получилось! Данный патч может вызвать какие-нибудь проблемы?


Нет, если Вы аккуратно пишете код  Улыбка
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1003 - 05. Декабря 2013 :: 19:21
Печать  
Подскажите, пожалуйста, следующий момент.

В справочнике на ПоставщикеДанных устанавливаю фильтры. Получил, допустим 5 строк. Как эти строки выбрать для дальнейшей работы с ними? Есть способ выгрузить в ТЗ или список, как нибудь? Как это сделать в Поставщике?



  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1004 - 06. Декабря 2013 :: 12:13
Печать  
Это делается вот так: ПостДанных.Данные.Выбрать();

p.s. Уважаемые специалисты, подскажите пожалуйста где найти информацию по сортировке у поставщика данных типа справочник?
Пытаюсь отсортировать по реквизиту с типом Справочник, и он сортирует по коду, а хочется по наименованию.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 65 66 [67] 68 69 ... 81
ОтправитьПечать