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


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #975 - 29. Октября 2013 :: 09:56
Печать  
ANik писал(а) 29. Октября 2013 :: 08:44:
Теперь следующий вопрос. Имеем справочник с каким-то реквизитом (для примера, номенклатура). У номенклатуры тоже есть реквизиты. Как бы организовать отбор по значению реквизита реквизита? Улыбка
Так-то наивность понимаю


через Класс «Объектv8.Отбор», повесив на отдельную кнопку, организовать коллекцию элементов отбора по нужным "реквизитам реквизитов".
Далее в "ПриПолученииЗапроса" изменить основной запрос Поставщика с учетом условий отбора в нашей коллекции.

Но это только мои теоретические измышления)) сам еще не добрался до такой задачи.
  
Наверх
ICQ  
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #976 - 29. Октября 2013 :: 10:04
Печать  
У меня тоже вопрос появился:
Как в любом Поставщике наименее затратно получить количество строк текущей выборки?
т.е. есть какой-то аналог
Выбрать
Синтаксис: Выбрать(ВекторКолонок)
Параметры:
•      ВекторКолонок – объект: АссоциативныйВектор с значениями и ключами равными идентификаторам колонок, объект: Строка с разделителями, или пустое значение.
Возвращаемое значение: объект «ИндексированнаяТаблица» заполненная по результатам выборки....

который вернет только КоличествоСтрок() ?

Зачем нужно? - в СКЛе вертикальный скроллер вечно посередине и хочется как-то информировать пользователя о количестве элементов при изменении отбора
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #977 - 01. Ноября 2013 :: 19:56
Печать  
ANik писал(а) 29. Октября 2013 :: 08:44:
Теперь следующий вопрос. Имеем справочник с каким-то реквизитом (для примера, номенклатура). У номенклатуры тоже есть реквизиты. Как бы организовать отбор по значению реквизита реквизита? Улыбка
Так-то наивность понимаю

В объект отбор необходимо добавить новый элемент, для этого необходимо добавить новое поле настройки. См. в сторону ПоляНастройки (УстановитьПоляНастройки, ПолучитьПоляНастройки). Насколько помню поля настройки вполне хавают поля с точками так что можно добавить все необходимое. Они конечно в дереве формы отбора не группируются, но в принципе можно сделать
  

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


I Love YaBB 2!

Сообщений: 66
Зарегистрирован: 03. Мая 2007
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #978 - 07. Ноября 2013 :: 09:38
Печать  
Снова дико извиняюсь - подцепил справочник через соединение.
Доп. поля (Склад и Участок) отобразились как на форме, так и в отборе, а отбор по этим полям не срабатывает, хотя галочки проставляются, значения выбираются.
Версии вроде последние.
Как-то не вкурился в идеологию.
Процедура ПослеСозданияФормы()
     ПоставщикДанныхАдресаХранения= СоздатьОбъект("ПоставщикДанных");
     ПоставщикДанныхАдресаХранения.ТипЗначений = "Справочник.АдресаХранения";
     ПоставщикДанныхАдресаХранения.КонтейнерКоманднойПанели = "КП";
     ПоставщикДанныхАдресаХранения.КонтейнерТабличногоПоля = "ТП";
     Данные = ПоставщикДанныхАдресаХранения.Данные;
     Данные.НоваяКолонка("Ячейка","Справочник.Ячейки");
     Данные.НоваяКолонка("Номенклатура","Справочник.Номенклатура");
     Данные.НоваяКолонка("Количество","Число");
     Данные.ДобавитьСоединениеДанных("СправочникЯчейки"
     ,"Left Join Справочник.Ячейки AS СпрЯчейки $nolock On $ТекущийОбъект.Ячейка = $СпрЯчейки.ТекущийЭлемент");
     аХранения",,,1);
     Данные.НоваяКолонка( "Склад" );
     к.Участки",,,1);
     Данные.НоваяКолонка( "Участок" );
     Данные.СоздатьКнопкиПоУмолчанию();
     Данные.ТолькоПросмотр=0;
     Данные.РежимВыбора=0;
     ТабличноеПоле = ПоставщикДанныхАдресаХранения.ТабличноеПоле;
     Отбор                  = ТабличноеПоле.Отбор;
     Отбор.Участок.Использование=1;
     Отбор.Склад.Использование=1;
     ТабличноеПоле.ВосстановитьПозициюКолонок();
     ПоставщикДанныхАдресаХранения.Обновить();
КонецПроцедуры
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

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

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

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


I Love YaBB 2!

Сообщений: 66
Зарегистрирован: 03. Мая 2007
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #980 - 08. Ноября 2013 :: 02:31
Печать  
Так я его хочу интерактивно задать. вызваю"установить отбор" и выставляю галочку "Использовать", типсравнения "равно" и выбираю значение. Жму на "ОК" - ничего не изменилось.
А отбор при добавлении колонок создается вроде автоматически.
То ли лыжи не едут, то ли я такой.
Теоретически вопрос-то базовый можно сказать.
Но не хочется в сотый раз свой велик писать.
  
Наверх
 
IP записан
 
ANik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 66
Зарегистрирован: 03. Мая 2007
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #981 - 11. Ноября 2013 :: 08:50
Печать  
В общем - извратился следующим образом:
Процедура ДобавитьОтборПоДопПолям(ТабПоле, СтруктураЗапроса, ИмяРеквизита, ИмяСоединения)
     Перем ДопОтбор, ТекстДопУсловий, ЗначениеОтбора, ВидСравнения, Инд;
     ДопОтбор=ТабПоле.Отбор.Получить(ИмяРеквизита);
     Если (ДопОтбор.Использование=0)
           Или (ПустоеЗначение(ДопОтбор.ВидСравнения)=1)
           Или (ПустоеЗначение(ДопОтбор.Значение)=1)
     Тогда
           Возврат;
     КонецЕсли;
     ВидСравнения=""+ДопОтбор.ВидСравнения;
     ТекстДопУсловий=?(ПустаяСтрока(СтруктураЗапроса.Условия)=0," And ", " Where ")
           +"$"+ИмяСоединения+"."+ИмяРеквизита
           +?(ВидСравнения="Равно"," = ",?(ВидСравнения="НеРавно"," != ",?(ВидСравнения="ВСписке"," In "," !In ")))
           ;
     ЗначениеОтбора=ДопОтбор.Значение;
     Если ТипЗначенияСтр(ЗначениеОтбора)="СписокЗначений" Тогда
           Для Инд=1 По ЗначениеОтбора.РазмерСписка() Цикл
                 а.ПолучитьЗначение(Инд));
           КонецЦикла;
           ТекстДопУсловий=ТекстДопУсловий+")";
     Иначе
           ТекстДопУсловий=ТекстДопУсловий+ЗначениеВСтрокуБД(ЗначениеОтбора);
     КонецЕсли;
     СтруктураЗапроса.Условия=СтруктураЗапроса.Условия+ТекстДопУсловий;
КонецПроцедуры // ДобавитьОтборПоДопПолям
Процедура ТППриПолученииЗапроса(ТабПоле,СтруктураЗапроса)
     ДобавитьОтборПоДопПолям(ТабПоле,СтруктураЗапроса,"Склад","СпрЯчейки");
     ДобавитьОтборПоДопПолям(ТабПоле,СтруктураЗапроса,"Участок","СпрЯчейки");
КонецПроцедуры      // ПриПолученииЗапроса
  
Наверх
 
IP записан
 
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #982 - 14. Ноября 2013 :: 13:31
Печать  
Уважаемые специалисты, подскажите пожалуйста, как лучше обновить одну строку табличного поля, без перерисовки всего таб.поля с помощью ПД.Обновить()? Дело в том, что при выводе ТП используется ЧередованиеЦветовСтрок=1, и при каждом ПД.Обновить() чередование меняется и сбивается ориентирование у человека.
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #983 - 16. Ноября 2013 :: 17:04
Печать  
попробуй ОбновитьСтроки
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Попытка1С
1c++ donor
Отсутствует


Делал все, иногда быстро.

Сообщений: 103
Местоположение: Санкт-Петербург
Зарегистрирован: 28. Февраля 2008
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #984 - 18. Ноября 2013 :: 12:22
Печать  
Всем привет.

Может кто пояснить почему может быть не доступ объект

ПрямойЗапрос = ПоставщикДанных.ПрямойЗапрос;
Поле агрегатного объекта не обнаружено (ПрямойЗапрос)

В отладчике соответственно там ошибка.

Обработки все в каталоге классов имеются, другие наследники типа
ТабличноеПоле, работают без проблем.
  
Наверх
 
IP записан
 
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #985 - 18. Ноября 2013 :: 12:46
Печать  
Спасибо за совет, пд.ТабличноеПоле.ОбновитьСтроки() работает  как нужно.

Пользуясь моментом, скажите пожалуйста, где можно найти рабочее решение для поля ввода аля v8?
1cpp_classes.rar и Центр автоматизации RiK - не работают в терминале с dbf.
  
Наверх
 
IP записан
 
Попытка1С
1c++ donor
Отсутствует


Делал все, иногда быстро.

Сообщений: 103
Местоположение: Санкт-Петербург
Зарегистрирован: 28. Февраля 2008
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #986 - 18. Ноября 2013 :: 13:01
Печать  
"Центр автоматизации RiK - не работают в терминале с dbf."

все работает
  
Наверх
 
IP записан
 
Попытка1С
1c++ donor
Отсутствует


Делал все, иногда быстро.

Сообщений: 103
Местоположение: Санкт-Петербург
Зарегистрирован: 28. Февраля 2008
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #987 - 18. Ноября 2013 :: 13:12
Печать  
С этим разобрался

ПрямойЗапрос = ПоставщикДанных.ПрямойЗапрос;
Поле агрегатного объекта не обнаружено (ПрямойЗапрос)

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



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #988 - 18. Ноября 2013 :: 13:31
Печать  

Скачал пример  Demo_RiK - загрузил базу, запустил немонопольно от имени администратора, получил ошибку.

Скачал и установил http://download.microsoft.com/download/vfoxodbcdriver/Install/6.1/W9XNT4/EN-US/V...

все работает! Спасибо за помощь!
  
Наверх
 
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #989 - 18. Ноября 2013 :: 13:47
Печать  
ildary писал(а) 18. Ноября 2013 :: 13:31:
Скачал пример  Demo_RiK - загрузил базу, запустил немонопольно от имени администратора...

А чтобы работало монопольно - поставь вот это: http://infostart.ru/public/16268/
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 64 65 [66] 67 68 ... 81
ОтправитьПечать