Внести в поля данные переменных

Подскажите я создал переменные, теперь мне их нужно разнести по полям, как это выполнить правильно?

Здравствуйте!
Какие поля нужно заполнить?

1 симпатия

Есть переменная S, её содержание нужно указать как название наменклатуры

Правильно ли я понимаю, что есть всегда одна переменная, которой нужно заполнить всегда одну номенклатуру?

1 симпатия

Нет их будет много, но на данном этапе нужно реализовать одну что бы понять механику

Ок, понятно.

Если у Вас, например, несколько номенклатур, то их желательно хранить в массиве, потому что для занесения информации мы будем использовать цикл.

Когда загружается форма 1С, то скорее всего одна строка с формой для номенклатуры доступна, ее нужно просто заполнить. Селекторы здесь использовать трудно (поиграться с этим можно попробовать), мы попробуем попроще.

Итак, делаете цикл. Перед тем, как цикл начинается, нужно попробовать кликнуть по координате (или по селектору) в первую строчку, куда нужно добавлять имя номенклатуры. Если кликать по координатам, то лучше использовать относительный клик - определить координаты элемента, который надежно выделяется селектором, и от него отсчитать нужные координаты. Описание “Определить расположение” можете найти тут: https://knowledge.electroneek.ru/opisanie-funkcii-devtool/elementy-interfeisa/opredelit-raspolozhenie

Внутри цикла первым действием впечатываете номенклатуру. Поскольку мы заведомо кликнули в поле для ввода, мы можем использовать опцию “Использовать сфокусированный элемент” при вводе. Таким образом мы внесем первое имя. Дальше нужно будет просто нажать клавишу “Добавить” или горячую клавишу “Ins” (в зависимости от версии 1С и настроек эта клавиша может быть другой, надо просто поэкспериментировать). Появится вторая строка, куда автоматически будет установлен курсор (значит, нам не нужно активировать вручную эту область). На этом тело цикла завершается, мы переходим на следующую итерацию.

Условие цикла - пока счетчик меньше длины массива номенклатур.

Примерно так я это вижу (скриншот прислал).

2 симпатии

ок, может что то недопонял но как переменную в поле перенести?

Обратите внимание на скриншот. Я там использовал в функции “Ввод с клавиатуры” опцию “Вычислить значение”. Когда мы хотим использовать переменные или JS, то нужно использовать опцию “Вычислить значение” - https://knowledge.electroneek.ru/obuchenie/spravochnye-materialy/sposoby-zadaniya-parametrov-funkcii

В том примере на скриншоте у меня в “Вычислить значение” подставляется элемента массива под номером counter.

1 симпатия


Правильно ли я вас понял? Для того что бы ввести данные как текст из переменной в поле мне нужно указать nom_array[s] где [s] (она так и названа)
переменная содержащая нужный текст

@Komanda_D7, да, все верно.
Еще раз,
nom_array - это массив, где содержатся разные номенклатуры. Как я понял, в Вашем случае массив будет состоять из одного элемента, то есть из одной номенклатуры.
s - счетчик, он же указывает на текущий элемент массива.

1 симпатия

ок, теперь что именно внести в поле?

@Komanda_D7, я не очень понял, что Вы имеете в виду. Мне кажется, Вы не совсем понимаете, что происходит в целом. Давайте еще раз.

Каким-то образом Вы получили переменную, которая содержит в себе номенклатуру. Изначально она у вас называлась S. Дальше возможно два варианта: либо номенклатура всегда одна, либо номенклатур может быть больше в зависимости от ситуации. Первый случай позволил бы нам не городить массивы и сделать все проще. Второй случай заставляет нас искать более универсальный вариант. Вы сказали, что у нас второй случай. Поэтому я предложил сразу отказаться от варианта с одной единственной переменной.

Теперь почему так. Когда мы говорим о возможности наличия нескольких сущностей (номенклатур, товаров, цен, контрагентов и т.п.) и когда нам нужно делать однотипные действия с каждой из этой сущности, то так или иначе нам нужно использовать массив, чтобы хранить эти сущности. Потому что массив позволяет нам циклично перебирать эти сущности и прописать единую логику обработки каждой сущности.

В связи с этим я предложил Вам создать массив nom_array. Если Вы хотите поместить туда одну номенклатуру, то Ваше присваивание должно выглядеть примерно вот так: nom_array - имя переменной, далее “Вычислить значение” - ["здесь Ваша номенклатура"].

Здесь я напомню, что мы говорим про более универсальный алгоритм. То есть мы автоматически учитываем количество номенклатур. Поэтому теперь нам нужно сделать цикл по элементам этого массива nom_array, чтобы мы могли брать каждый элемент и совершать для него определенные действия (вводить с клавиатуры, например). Цикл подразумевает наличие счетчика - переменной, которая увеличивает свое значение каждую итерацию, то есть она буквально считает итерации. Тело цикла - это та логика, которая должна применяться к каждому элементу массива.

В результате, когда мы хотим внутри тела цикла ввести с клавиатуры текст (который является значением текущего элемента массива, то есть элемента массива на данной итерации, а за данную итерацию отвечает счетчик), то мы должны использовать “Вычислить значение”, туда подставить nom_array[counter]. Здесь nom_array говорит нам о том, что мы должны взять один общий массив с номенклатурами, а [counter] говорит нам о том, что мы должны взять элемент массива под номером counter.

Отпишите, понятна ли Вам логика и идея. Если да, то напишите конкретные вопросы, что не удается или что не понятно отдельно.

1 симпатия

Эврика! Спасибо всем!) Решение в том что при использовании “Ввод с клавиатуры” достаточно просто указать название нужной переменной и она будет введена в поле!

в моем случае.

@Komanda_D7, название переменной можно и нужно там указывать) Массив - это тоже переменная. Если Вам нужен алгоритм просто для себя, проверить что-то, тогда одной переменной хватит) Если же Вы хотели алгоритм, который более универсальный, то тогда его надо менять на то, что я сказал выше) Я подумал, что второе)