Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 20:34

Мое задание, не понимаю как решить, нужна помощь

Автор Азамат Хубиев, 24 июн 2016, 01:40

0 Пользователей и 1 гость просматривают эту тему.

Азамат Хубиев

Мне дали задание, с учебы, но я так и не понял, как работает Переменная ТекСтрака, ведедь ей ничего не присвоенно, я подумал может переменная работает и без объявления переменной, потому что эта переменная была объявленна в другой Форме документа, в модуле формы
Вот здесь Указывается Что ТекСтрока=Элементы.Товары.ТекущиеДанные;
Не понимаю..
&НаКлиенте
-----------------------------------------------------
Процедура ТоварыНоменклатураПриИзменении(Элемент)

            ТекСтрока=Элементы.Товары.ТекущиеДанные;

            ТекСтрока.ЕдиницаИзмерения=ПолучитьЕХО(ТекСтрока.Номенклатура);

КонецПроцедуры
-------------------------------------------------------------------
А вот и мое задание:
«Серия» обязателен, если в текущей строке табличной части выбрана номенклатурная позиция с видом «Товар».

При организации проверки серии, для обхода строк табличной части используйте подобную конструкцию:



Для Каждого ТекСтрока Из Товары Цикл

  Серия = ТекСтрока.Серия;

  Номенклатура = ТекСтрока.Номенклатура;

  // другие строки

КонецЦикла;

Азамат Хубиев


Luzer1C

Для Каждого ТекСтрока Из Товары Цикл
Если ТекСтрока.ВидНоменклатуры = "Товар" Тогда
    Если ТекСтрока.Серия = Справочники.СерииНоменклатуры.ПустаяСсылка() Тогда
        Сообщить("В строке №" + ТекСтрока.НомерСтроки + " не заполнена серия номенклатуры",       СтатусСообщения.Внимание);       
        Отказ = Истина;
    КонецЕсли;
КонецЕсли;
КонецЦикла;


Для начала как-то так. Хотя это самый неоптимальный код.

Как переменной присваивается значение - отладчик в помощь.
Халамбалам.

Азамат Хубиев

Цитата: Luzer1C от 24 июн 2016, 05:43
Для Каждого ТекСтрока Из Товары Цикл
Если ТекСтрока.ВидНоменклатуры = "Товар" Тогда
    Если ТекСтрока.Серия = Справочники.СерииНоменклатуры.ПустаяСсылка() Тогда
        Сообщить("В строке №" + ТекСтрока.НомерСтроки + " не заполнена серия номенклатуры",       СтатусСообщения.Внимание);       
        Отказ = Истина;
    КонецЕсли;
КонецЕсли;
КонецЦикла;


Для начала как-то так. Хотя это самый неоптимальный код.

Как переменной присваивается значение - отладчик в помощь.

Скажите пожалуйста, а как правильно?
И еще, отладчик мне не показывает, ничего, всего лишь одно поле, (нельзя провалится в список элементов ТекСтрока)

ilnur75

Цитата: Азамат Хубиев от 24 июн 2016, 01:40Не понимаю..
&НаКлиенте
-----------------------------------------------------
Процедура ТоварыНоменклатураПриИзменении(Элемент)

            ТекСтрока=Элементы.Товары.ТекущиеДанные;

            ТекСтрока.ЕдиницаИзмерения=ПолучитьЕХО(ТекСтрока.Номенклатура);

КонецПроцедуры

здесь создана переменная ТекСтрока, в которую помещается объект,содержащий данные, находящиеся в строке табличной части, которую нам нужно обработать "Элементы.Товары.ТекущиеДанные".
Это способ записи выноса общего за скобку, чтобы в последующих строках не повторять длинющую запись "Элементы.Товары.ТекущиеДанные".
Это и сделано в данной процедуре, т.е.
вместо "Элементы.Товары.ТекущиеДанные.ЕдиницаИзмерения"
записано коротко "ТекСтрока.ЕдиницаИзмерения"
и аналогично для поля "Номенклатура".
Элементы - это свойство объекта УправляемаяФорма.
Элементы.Товары - это обращение к элементу формы в табличной части Товары
Элементы.Товары.ТекущиеДанные - это обращение к текущим данным по текущей строке таблицы Товары
Элементы.Товары.ТекущиеДанные.ЕдиницаИзмерения - это обращение к данным по текущей строке таблицы Товары в колонке ЕдиницаИзмерения
Элементы.Товары.ТекущиеДанные.Номенклатура - это обращение к данным по текущей строке таблицы Товары в колонке Номенклатура                 

Азамат Хубиев

ilnur75, Вы супер, спасибо за помощь, а еще один маленький вопросик, по передаче параметра, тут передается "Элемент" я думаю, что эта переменная означает Элементы.Товары.ТекущиеДанные. То есть Берется Элемент и передается все что есть в этом элементе? в том числе Таблица "Товары" и соответственно Текущие данные и т. п.

ilnur75

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

Азамат Хубиев

Цитата: ilnur75 от 28 июн 2016, 19:17
Когда мы создаем обработчик события ПриИзменении... система сама указывает в скобках текст Элемент ( в единственном числе), потому что в свойствах Управляемой Формы существует коллекция ЭлементыФормы (множественное число, много элементов), а создаем обработчик событий для одного выбранного нами Элемента, путь к которому и описывается в виде например  Элементы.Товары.ТекущиеДанные.Номенклатура (путь из всех данных коллекции элементов формы к значению (элементу) в конкретной колонке Номенклатура в текущей строке в таблице Товары , напоминает "каталог в виде дерева") и далее описывается сам обработчик события (процедура либо функция).   
Как я понял в процедуре в скобках указывается "Элемент" за тем получив все элементы коллекции, идет уже перебор внутри процедуры?

cska-fanat-kz

Цитата: ilnur75 от 26 июн 2016, 11:33Процедура ТоварыНоменклатураПриИзменении(Элемент)

            ТекСтрока=Элементы.Товары.ТекущиеДанные;

            ТекСтрока.ЕдиницаИзмерения=ПолучитьЕХО(ТекСтрока.Номенклатура);

КонецПроцедуры

в данном случае Элемент - это текущая ячейка табличной части колонки "Номенклатура"
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск