Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Текущая строка индексированной таблицы (число прочтений - 6181 )
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Текущая строка индексированной таблицы
10. Апреля 2014 :: 13:04
Печать  
Уважаемые специалисты, посоветуйте пожалуйста, как правильно работать с текущей строкой индексированной таблицы?

ИТЗ получаем из ПД вот так:

     ИТЗ = ТабПоле.ПоставщикДанных.ИндексированнаяТаблица;
     
после чего пытаемся получить значение из текущей строки:

           ИмяИндекса = ИТЗ.ИмяИндекса( ИТЗ.КоличествоИндексов() );
           Если ПустоеЗначение( ИмяИндекса ) = 0 Тогда
                 
                 НомСтр = ИТЗ.НомерСтроки;
                 Если ПустоеЗначение( НомСтр ) = 0 Тогда
                       
                       СтароеПоле = ИТЗ.ПолучитьЗначение( НомСтр, ИмяИндекса );
                       
                 КонецЕсли;
                 
           КонецЕсли;

проблема в том, что в НомСтр иногда попадает последняя строка таблицы, хотя текущая строка в таблице выбрана и обычно в НомСтр правильное значение. Что может сбивать ИТЗ.НомерСтроки и как это можно исправить?

В ИмяИндекса возвращается вручную добавленный индекс, добавленный вот так:

ИТЗ.ДобавитьИндекс( "Элемент", "Элемент", 1 );

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



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Текущая строка индексированной таблицы
Ответ #1 - 10. Апреля 2014 :: 17:12
Печать  
Мне в голову приходит только вариант, что срабатывает в этот момент Автообновление ТП, которое, перебирая строки ИТЗ сбрасывает текущую строку. Кстати, не пробовал вариант с ПоставщикДанных.Справочник ? Я в теме там "костыль" один предложил.
  
Наверх
ICQ  
IP записан
 
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Текущая строка индексированной таблицы
Ответ #2 - 11. Апреля 2014 :: 07:15
Печать  
Вряд ли автообновление - речь идет о ТП с ИТЗ.

Про способ костыля со справочником я прочитал и попробовал, но система не сработала - я подозреваю, что дело в том, что в классе ТП.Справочник пустые процедуры СортироватьПоУбыванию и СортироватьПоВозрастанию.
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Текущая строка индексированной таблицы
Ответ #3 - 11. Апреля 2014 :: 10:11
Печать  
А можешь скинуть обработку, которая подключает этого Поставщика? Я сам не пользовался этим классом и давно уже не на 7.7, поэтому как все подключить и настроить не разобрался. Если будет готовый пример обработки - посмотрю подробнее.
  
Наверх
ICQ  
IP записан
 
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Текущая строка индексированной таблицы
Ответ #4 - 11. Апреля 2014 :: 10:33
Печать  
Скинуть я ее могу, но там есть несколько но:
1) Куча привязок к процедурам / функциям ГМ
2) Правленные классы
3) Обработка весит 23 тысячи строк и думаю ковыряться в ней неподготовленному - будет некомфортно.

Или речь идет о простейшем примере с работой ТП справочника?
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Текущая строка индексированной таблицы
Ответ #5 - 11. Апреля 2014 :: 12:40
Печать  
Да, нужен простейший пример.
  
Наверх
ICQ  
IP записан
 
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Текущая строка индексированной таблицы
Ответ #6 - 11. Апреля 2014 :: 12:50
Печать  
Ок, только можно я это в понедельник выложу?
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Текущая строка индексированной таблицы
Ответ #7 - 11. Апреля 2014 :: 14:46
Печать  
Конечно. Жду.
  
Наверх
ICQ  
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Текущая строка индексированной таблицы
Ответ #8 - 18. Апреля 2014 :: 09:20
Печать  
Новостей нет?
  
Наверх
ICQ  
IP записан
 
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Текущая строка индексированной таблицы
Ответ #9 - 24. Апреля 2014 :: 08:10
Печать  
Вот пример, ПД с ИТЗ
  

_0091-___.ert ( 45 KB | Загрузки )
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Текущая строка индексированной таблицы
Ответ #10 - 24. Апреля 2014 :: 08:23
Печать  
Но у тебя же не работало с ПД - Справочник ? Я просто ни разу с этими ПД не сталкивался, и как их проинициализировать, чтобы они начали хоть что-то показывать, я не представляю Печаль
Разбираться с нуля мне не зачем. Я давно уже на 8-ке.
Хотя бы напиши - что кинуть на форму и какие основные команды прописать надо, чтобы Справочник начал отображаться. Я потом сам тут форму наклепаю, потестирую.
  
Наверх
ICQ  
IP записан
 
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Текущая строка индексированной таблицы
Ответ #11 - 24. Апреля 2014 :: 08:25
Печать  
я понял фразу "А можешь скинуть обработку, которая подключает этого Поставщика" - как просьбу показать поставщика с ИТЗ.
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Текущая строка индексированной таблицы
Ответ #12 - 24. Апреля 2014 :: 08:31
Печать  
Извини, что не очень понятно написал. Я хотел ПД Справочник поковырять на тему - почему он не сортирует по присоединенным колонкам.
  
Наверх
ICQ  
IP записан
 
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Текущая строка индексированной таблицы
Ответ #13 - 24. Апреля 2014 :: 08:37
Печать  
Вот пд Справочник. Справочник плнДействия содержит поле Контрагент, типа "Справочник.Контрагенты".
  

_0091-____001.ert ( 45 KB | Загрузки )
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Текущая строка индексированной таблицы
Ответ #14 - 24. Апреля 2014 :: 11:13
Печать  
Спасибо!
Посмотрел - короче когда сортировку включаешь в ПД.Справочник через "_сорт", то далее поле искалось у текущего справочника. И, так как не находило, то все падало с ошибкой.
Решение:
В функции "ПолучитьСтрокуУпорядочивания" вместо
Код
Выбрать все
		ИначеЕсли ПустоеЗначение(ВрегРеквизитСортировки) = 1 Тогда
			Если ИерархическийПросмотр = 1 Тогда
				СтрокаПорядка = "ТекущийОбъект.idx_"+Лев(ДобавлениеКИндексу,СтрДлина(ДобавлениеКИндексу)-1);
			Иначе
				СтрокаПорядка = "ТекущийОбъект.idx_ID";
			КонецЕсли;
		Иначе
			ПолеКодаНаименования = "";
...
 


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



Если используется SQL-сервер, то добавляем подсвеченные строчки и в ветку "ЭтоSQL = 1"
---------------
Продублирую и в ветку "ПоставщикДанных"
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать