1c 7.7 + таблица значений курсор всегда на 1 строке
Здравствуйте!
Суть такова: добавил таблицу значений в форму списка справочника... Все ок, заполняю, щелкаю отрабатывается процедура... Все работает... Добавил точно такую же таблицу значений(и другие пробовал) в форму для выбора этого же справочника; для подбора этого же справочника; форму документа и везде курсор таблицы значений всегда стоит на первой строке... Я могу щелкнуть по первой строчке, формула отработается(значит редактирование разрешено, как я понял). Не могу переместить курсор куда либо - вниз, вверх. По колонкам двигаться могу. Программно вызвав метод ТекущаяСтрока() установить строку могу, например 3, но опять же переместиться вниз, вверх не могу. В форме списка все работает. В чем разница? Что делаю не так?
Суть такова: добавил таблицу значений в форму списка справочника... Все ок, заполняю, щелкаю отрабатывается процедура... Все работает... Добавил точно такую же таблицу значений(и другие пробовал) в форму для выбора этого же справочника; для подбора этого же справочника; форму документа и везде курсор таблицы значений всегда стоит на первой строке... Я могу щелкнуть по первой строчке, формула отработается(значит редактирование разрешено, как я понял). Не могу переместить курсор куда либо - вниз, вверх. По колонкам двигаться могу. Программно вызвав метод ТекущаяСтрока() установить строку могу, например 3, но опять же переместиться вниз, вверх не могу. В форме списка все работает. В чем разница? Что делаю не так?
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Ну это же тривиально... фиг его знает что у вас там в коде понаписано...
Идет ПЕРЕЗАПОЛНЕНИЕ ТЗ при ПЕРЕРИСОВКЕ экрана.
Ставим курсор на вторую строку - экран перерисовывается - перезаполняется ТЗ - курсор на первой строке.
"Съесть с удовольствием"
Идет ПЕРЕЗАПОЛНЕНИЕ ТЗ при ПЕРЕРИСОВКЕ экрана.
Ставим курсор на вторую строку - экран перерисовывается - перезаполняется ТЗ - курсор на первой строке.
"Съесть с удовольствием"
(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);
КонецПроцедуры
Показать
непонятно для чего вот это:
Функция ЗаполнитьАналоги()
Перем АналогиТовара;
Если ТекущийЭлемент().Выбран()=0 Тогда
Возврат "";
КонецЕсли;
АналогиТовара = СоздатьОбъект("Справочник.Аналоги");
АналогиТовара.ИспользоватьВладельца(ТекущийЭлемент());
// очищаем все строки
СписокАналогов.УдалитьСтроки();
КолАнал=0;
// заполняем таблицу
АналогиТовара.ВыбратьЭлементы();
Пока АналогиТовара.ПолучитьЭлемент() = 1 Цикл
Если АналогиТовара.ПометкаУдаления() = 0 Тогда
СписокАналогов.НоваяСтрока();
СписокАналогов.Ссылка = АналогиТовара.ТекущийЭлемент();
СписокАналогов.Код = АналогиТовара.ТекущийЭлемент().Код;
СписокАналогов.Наименование = АналогиТовара.Товар;
ПотЦена = 0;
РабДата=РабочаяДата();
ПотВалюта=0;
ПотРез = глПолучитьЦенуТовара(Константа.РозничнаяКатегорияЦен,АналогиТовара.Товар.ТекущийЭлемент(),,,ПотЦена,ПотВалюта);
Если ПустоеЗначение(ПотЦена)=0 Тогда
ЦенаГрн = глПересчет(ПотЦена,ПотВалюта,РабДата,Гривня,РабДата);
СписокАналогов.Цена = ЦенаГрн;
КонецЕсли;
СписокАналогов.Количество = Регистр.ОстаткиТоваров.СводныйОстаток(,АналогиТовара.Товар,,"ОстатокТовара");
КолАнал=КолАнал+1;
СписокАналогов.Артикул = АналогиТовара.Товар.Артикул;
КонецЕсли;
КонецЦикла;
СписокАналогов.КоличествоСтрок(КолАнал);
СписокАналогов.ТекущаяСтрока(3); // <<===
Возврат "";
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот