Переход на следующую строку табличной части
Есть документ с табличной частью. Задача состоит в том, чтобы при заполнении первой ячейки (там указывается штрихкод с помощью сканера штрихкодов) в строке осуществлялся автоматический переход на следующую строку. Надо чтобы туда переходил курсор.
В идеале нужен вообще автоматический переход, к примеру когда количество символов доходит до определенного уровня (штрихкод можно вводить и вручную), но подойдет и по нажатию на клавишу enter.
На данный момент при нажатии enter курсор переходит на следующую ячейку в текущей строке.
В идеале нужен вообще автоматический переход, к примеру когда количество символов доходит до определенного уровня (штрихкод можно вводить и вручную), но подойдет и по нажатию на клавишу enter.
&НаКлиенте
Процедура ТаблицаШтрихкодовШтрихкодПриИзменении(Элемент)
Строка = Элементы.ТаблицаШтрихкодов.ТекущиеДанные;
Если Строка.НомерСтроки > 1 Тогда
Строка.Склад = Объект.ТаблицаШтрихкодов[Элементы.ТаблицаШтрихкодов.ТекущиеДанные.НомерСтроки-2].Склад;
КонецЕсли;
Строка.Номенклатура = ПолучитьНоменклатуру(Строка.Штрихкод);
Строка.Количество = 1;
СлужебноеСообщение(Строка.Номенклатура, Строка.Штрихкод);
НоваяСтрока = Объект.ТаблицаШтрихкодов.Добавить();
КонецПроцедуры
ПоказатьНа данный момент при нажатии enter курсор переходит на следующую ячейку в текущей строке.
По теме из базы знаний
- "Расширяемые" регистры и табличные части
- Подсистема: История изменений реквизитов объекта, в том числе табличных частей. 1С 8.2
- Табличная часть из дополнительных реквизитов с обработкой событий в расширении
- Как автоматически заполнить обработкой табличную часть документа "Ввод начальных остатков" (Тип операции = "Расчеты с партнерами"). 1С: ERP
- Переход с УПП на ERP с сохранением документов. Фантастика или реальность?
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
пример установки текущей строки на последнюю.
так же и у вас,
Элементы.ТаблицаШтрихкодов.ТекущаяСтрока = идентификаторстроки (число).
пример установки текущей строки на последнюю.
&НаКлиенте
Процедура УстановитьПоследнююТекущуюСтроку()
Элементы.СостоянияЗаявки.ТекущаяСтрока=?(Объект.СостоянияЗаявки.Количество()=0,0,Объект.СостоянияЗаявки.Количество()-1);
КонецПроцедуры
так же и у вас,
Элементы.ТаблицаШтрихкодов.ТекущаяСтрока = идентификаторстроки (число).
(2)
Не сработало, ячейка в новой строке не становиться активной, надо ее сначала прощелкать
&НаКлиенте
Процедура ТаблицаШтрихкодовШтрихкодПриИзменении(Элемент)
Строка = Элементы.ТаблицаШтрихкодов.ТекущиеДанные;
Если Строка.НомерСтроки > 1 Тогда
Строка.Склад = Объект.ТаблицаШтрихкодов[Элементы.ТаблицаШтрихкодов.ТекущиеДанные.НомерСтроки-2].Склад;
КонецЕсли;
Строка.Номенклатура = ПолучитьНоменклатуру(Строка.Штрихкод);
Строка.Количество = 1;
СлужебноеСообщение(Строка.Номенклатура, Строка.Штрихкод);
НоваяСтрока = Объект.ТаблицаШтрихкодов.Добавить();
УстановитьПоследнююТекущуюСтроку();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПоследнююТекущуюСтроку()
Элементы.ТаблицаШтрихкодов.ТекущаяСтрока=?(Объект.ТаблицаШтрихкодов.Количество()=0,0,Объект.ТаблицаШтрихкодов.Количество()-1);
КонецПроцедуры
ПоказатьНе сработало, ячейка в новой строке не становиться активной, надо ее сначала прощелкать
(3) так строка вообще появляется в таблице ? Есть на что позиционироваться то ?
список обновить еще надо. Или форму целиком.
или сэмулировать нажатия клавиш
список обновить еще надо. Или форму целиком.
или сэмулировать нажатия клавиш
ТекущийЭлемент = Элементы.твойСписок;
Shell = Новый COMОбъект("WScript.Shell");
Shell.SendKeys("^{END}");
(4)
Я не совсем точно сказал, ваша процедура отработала нормально, т.е. переход произошел на новую строку, а не на новую ячейку.
Просто ячейка не открыта для редактирования. В итоге происходит то что на рисунке 1, а мне надо как на рисунке 2
Я не совсем точно сказал, ваша процедура отработала нормально, т.е. переход произошел на новую строку, а не на новую ячейку.
Просто ячейка не открыта для редактирования. В итоге происходит то что на рисунке 1, а мне надо как на рисунке 2
Прикрепленные файлы:
(10)
Это настройка у меня задана, но ячейка все равно не открывается для редактирования, просто выделяется и все. Если добавляю строку через кнопку "Добавить", то ячейка открывается для редактирования, все как надо, но если добавление идет через процедуру в форме, то она просто выделяется
Это настройка у меня задана, но ячейка все равно не открывается для редактирования, просто выделяется и все. Если добавляю строку через кнопку "Добавить", то ячейка открывается для редактирования, все как надо, но если добавление идет через процедуру в форме, то она просто выделяется
Прикрепленные файлы:
Смутно припоминаю, что делал сабж. И вроде там был ньюанс, чтобы осуществлять переход не напрямую из обработчика события изменения ячейки, а так сказать независимо - через подключение обработки ожидания на доли секунды.
(18)
Да, вы правы, сейчас и пытаюсь это сделать, но я с com объектами не работал, поэтому не получается
Да, вы правы, сейчас и пытаюсь это сделать, но я с com объектами не работал, поэтому не получается
&НаКлиенте
Процедура ТаблицаШтрихкодовШтрихкодПриИзменении(Элемент)
Строка = Элементы.ТаблицаШтрихкодов.ТекущиеДанные;
Если Строка.НомерСтроки > 1 Тогда
Строка.Склад = Объект.ТаблицаШтрихкодов[Элементы.ТаблицаШтрихкодов.ТекущиеДанные.НомерСтроки-2].Склад;
КонецЕсли;
Строка.Номенклатура = ПолучитьНоменклатуру(Строка.Штрихкод);
Строка.Количество = 1;
СлужебноеСообщение(Строка.Номенклатура, Строка.Штрихкод);
НоваяСтрока = Объект.ТаблицаШтрихкодов.Добавить();
УстановитьПоследнююТекущуюСтроку();
ОткрытьЯчейкуДляРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПоследнююТекущуюСтроку()
Элементы.ТаблицаШтрихкодов.ТекущаяСтрока = ?(Объект.ТаблицаШтрихкодов.Количество()=0,0,Объект.ТаблицаШтрихкодов.Количество()-1);
КонецПроцедуры
&НаСервере
Процедура ОткрытьЯчейкуДляРедактирования()
Shell= Новый COMОбъект("Wscript.Shell");
Shell.SendKeys("{ENTER}");
КонецПроцедуры
Показать
(22)
Длина будет постоянна, номенклатурных позиций всего несколько тысяч и сам штрихкод мы задаем сами.
Но вот я не понимаю как осуществлять проверку длины штрихкода во время ввода, после окончания ввода оно записывается в реквизит, но до записи этот код нигде не записан, как его проверять.
А тут главное осуществлять проверку еще до записи значения
Длина будет постоянна, номенклатурных позиций всего несколько тысяч и сам штрихкод мы задаем сами.
Но вот я не понимаю как осуществлять проверку длины штрихкода во время ввода, после окончания ввода оно записывается в реквизит, но до записи этот код нигде не записан, как его проверять.
А тут главное осуществлять проверку еще до записи значения
(26)Да, отлично, все заработало
&НаКлиенте
Процедура УстановитьПоследнююТекущуюСтроку()
Элементы.ТаблицаШтрихкодов.ТекущаяСтрока = ?(Объект.ТаблицаШтрихкодов.Количество()=0,0,Объект.ТаблицаШтрихкодов.Количество()-1);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьЯчейкуДляРедактирования()
Shell= Новый COMОбъект("Wscript.Shell");
Shell.SendKeys("{ENTER}");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаШтрихкодовШтрихкодИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
Если СтрДлина(Текст) > 10 Тогда
НоваяСтрока = Объект.ТаблицаШтрихкодов.Добавить();
УстановитьПоследнююТекущуюСтроку();
ОткрытьЯчейкуДляРедактирования();
КонецЕсли
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот