1c 7.7 + таблица значений курсор всегда на 1 строке

1. user636605_vladzhegest 24.08.17 23:08 Сейчас в теме
Здравствуйте!
Суть такова: добавил таблицу значений в форму списка справочника... Все ок, заполняю, щелкаю отрабатывается процедура... Все работает... Добавил точно такую же таблицу значений(и другие пробовал) в форму для выбора этого же справочника; для подбора этого же справочника; форму документа и везде курсор таблицы значений всегда стоит на первой строке... Я могу щелкнуть по первой строчке, формула отработается(значит редактирование разрешено, как я понял). Не могу переместить курсор куда либо - вниз, вверх. По колонкам двигаться могу. Программно вызвав метод ТекущаяСтрока() установить строку могу, например 3, но опять же переместиться вниз, вверх не могу. В форме списка все работает. В чем разница? Что делаю не так?
По теме из базы знаний
Найденные решения
5. ditp 92 25.08.17 16:20 Сейчас в теме
в СформИнфорСтроку() добавьте проверку , изменилась текущая строка в "родительском" списке или нет.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. CheBurator 3122 25.08.17 01:28 Сейчас в теме
Ну это же тривиально... фиг его знает что у вас там в коде понаписано...
Идет ПЕРЕЗАПОЛНЕНИЕ ТЗ при ПЕРЕРИСОВКЕ экрана.
Ставим курсор на вторую строку - экран перерисовывается - перезаполняется ТЗ - курсор на первой строке.
"Съесть с удовольствием"
user948664; +1 Ответить
4. user636605_vladzhegest 25.08.17 16:09 Сейчас в теме
(2)
Код модуля формы для выбора справочника Номенклатура:

Функция ЗаполнитьАналоги()
	Перем АналогиТовара;
	
	Если ТекущийЭлемент().Выбран()=0 Тогда
	    Возврат "";
	КонецЕсли;

	АналогиТовара = СоздатьОбъект("Справочник.Аналоги");
	АналогиТовара.ИспользоватьВладельца(ТекущийЭлемент());
	
	// очищаем все строки
	СписокАналогов.УдалитьСтроки();
	КолАнал=0;
	// заполняем таблицу
	АналогиТовара.ВыбратьЭлементы();
	Пока АналогиТовара.ПолучитьЭлемент() = 1 Цикл
	    Если АналогиТовара.ПометкаУдаления() = 0 Тогда
			СписокАналогов.НоваяСтрока();
			СписокАналогов.Ссылка = АналогиТовара.ТекущийЭлемент();
			СписокАналогов.Код = АналогиТовара.ТекущийЭлемент().Код;
			СписокАналогов.Наименование = АналогиТовара.Товар;
			ПотЦена = 0;
			РабДата=РабочаяДата();
			ПотВалюта=0;
			ПотРез = глПолучитьЦенуТовара(Константа.РозничнаяКатегорияЦен,АналогиТовара.Товар.ТекущийЭлемент(),,,ПотЦена,ПотВалюта);
			Если ПустоеЗначение(ПотЦена)=0 Тогда
			ЦенаГрн = глПересчет(ПотЦена,ПотВалюта,РабДата,Гривня,РабДата);
			СписокАналогов.Цена = ЦенаГрн;
			КонецЕсли;
			СписокАналогов.Количество = Регистр.ОстаткиТоваров.СводныйОстаток(,АналогиТовара.Товар,,"ОстатокТовара");
			КолАнал=КолАнал+1;
			СписокАналогов.Артикул = АналогиТовара.Товар.Артикул;
		КонецЕсли;
	КонецЦикла;
	СписокАналогов.КоличествоСтрок(КолАнал);
	СписокАналогов.ТекущаяСтрока(3);
	Возврат "";
КонецФункции

Процедура ИзменитьАналоги();     //формула таблицы значений "СписокАналогов"
	ТекСтрока=СписокАналогов.ТекущаяСтрока();
	Если ТекСтрока<>0 Тогда
		ТекТовар=СписокАналогов.ПолучитьЗначение(ТекСтрока,"Наименование");
		АктивизироватьОбъект(ТекТовар);
	КонецЕсли;
КонецПроцедуры

Функция СформИнфорСтроку()
	СписокАналогов.УдалитьСтроки();
	ЗаполнитьАналоги();
КонецФункции
 
Процедура ПриОткрытии()
	СписокАналогов.НоваяКолонка("Ссылка","Справочник.Аналоги");
	СписокАналогов.НоваяКолонка("Код","Строка",,,"Код",14,,2);
	СписокАналогов.НоваяКолонка("Наименование","Справочник.Номенклатура",,,"Наименование",40);
	СписокАналогов.НоваяКолонка("Артикул","Строка",,,"Артикул",17,,1);
	СписокАналогов.НоваяКолонка("Цена","Число",10,2,"Цена",11,,1);
	СписокАналогов.НоваяКолонка("Количество","Число",10,3,"Количество",11,,1);

	СписокАналогов.ВидимостьКолонки("Ссылка",0); 
КонецПроцедуры
Показать
6. Altair777 645 25.08.17 16:27 Сейчас в теме
(4) пожалуйста,при вставке кода используйте теги CODE /CODE
3. Gkmy 28 25.08.17 01:58 Сейчас в теме
7. Gkmy 28 25.08.17 16:32 Сейчас в теме
непонятно для чего вот это:
Функция ЗаполнитьАналоги() 
Перем АналогиТовара; 

Если ТекущийЭлемент().Выбран()=0 Тогда 
Возврат ""; 
КонецЕсли; 

АналогиТовара = СоздатьОбъект("Справочник.Аналоги"); 
АналогиТовара.ИспользоватьВладельца(ТекущийЭлемент()); 

// очищаем все строки 
СписокАналогов.УдалитьСтроки(); 
КолАнал=0; 
// заполняем таблицу 
АналогиТовара.ВыбратьЭлементы(); 
Пока АналогиТовара.ПолучитьЭлемент() = 1 Цикл 
Если АналогиТовара.ПометкаУдаления() = 0 Тогда 
СписокАналогов.НоваяСтрока(); 
СписокАналогов.Ссылка = АналогиТовара.ТекущийЭлемент(); 
СписокАналогов.Код = АналогиТовара.ТекущийЭлемент().Код; 
СписокАналогов.Наименование = АналогиТовара.Товар; 
ПотЦена = 0; 
РабДата=РабочаяДата(); 
ПотВалюта=0; 
ПотРез = глПолучитьЦенуТовара(Константа.РозничнаяКатегорияЦен,АналогиТовара.Товар.ТекущийЭлемент(),,,ПотЦена,ПотВалюта);
Если ПустоеЗначение(ПотЦена)=0 Тогда 
ЦенаГрн = глПересчет(ПотЦена,ПотВалюта,РабДата,Гривня,РабДата); 
СписокАналогов.Цена = ЦенаГрн; 
КонецЕсли; 
СписокАналогов.Количество = Регистр.ОстаткиТоваров.СводныйОстаток(,АналогиТовара.Товар,,"ОстатокТовара"); 
КолАнал=КолАнал+1; 
СписокАналогов.Артикул = АналогиТовара.Товар.Артикул; 
КонецЕсли; 
КонецЦикла; 
СписокАналогов.КоличествоСтрок(КолАнал); 
СписокАналогов.ТекущаяСтрока(3); // <<===
Возврат ""; 
КонецФункции 
Показать
9. user636605_vladzhegest 25.08.17 16:35 Сейчас в теме
(7)
Это я пробовал как раз можно ли программно изменить текущую строку, это убрал.
5. ditp 92 25.08.17 16:20 Сейчас в теме
в СформИнфорСтроку() добавьте проверку , изменилась текущая строка в "родительском" списке или нет.
8. user636605_vladzhegest 25.08.17 16:34 Сейчас в теме
(5)
Родительский список - многострочная часть, как будет выглядеть проверка?
10. Gkmy 28 25.08.17 16:41 Сейчас в теме
непонятно, чем вызывается:
Функция СформИнфорСтроку() 
11. user636605_vladzhegest 25.08.17 16:44 Сейчас в теме
Проблема решена проверкой в СформИнфорСтроку(). Всем спасибо!
12. CheBurator 3122 25.08.17 16:48 Сейчас в теме
(11) как бы причина была мной названа сразу.. - так оно и оказалось
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот