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

1С 8.3 (Обычное). Как изменить количество товара в табличной части у конкретного товара?

Автор gulnyr, 09 фев 2023, 16:05

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

gulnyr

Есть код:

//Вызываем процедуру

Процедура ТоварыПриПолученииДанных(Элемент, ОформленияСтрок)

//Проходим цикл ОформленияСтрок

Для Каждого СтрокаТЧ Из ОформленияСтрок Цикл

//Ставим условие, чтобы менять значение только у "Болты 215"

   Если СтрокаТЧ.ДанныеСтроки.Номенклатура=Справочники.Номенклатура.НайтиПоНаименованию("Болты 215") Тогда
       СтрокаТЧ.ДанныеСтроки.Количество=3;
   КонецЕсли;

КонецЦикла;

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

Пытаюсь для примера изменить количество товара в табличной части (в данном случае у "Болты 215"),
но почему-то у всех в списке меняется количество, хотя по логике должен был меняться только у "Болты 215".

Новый точечный рисунок.png

Что здесь не так? Почему так происходит? Прошелся с отладкой, тоже как-то не помогло.

Afinogen

 B) зачем вы используете ОформлениеСтрок?  :nhsrm:

тут достаточно имя табличной части как оно  указано в конфигураторе

Для Каждого Стр ИЗ ТабличнаяЧасть Цикл

Если НРег(Найти(Стр.Номенклатура.Наименование,"болты 215"))>0 Тогда
Стр.Количество = 3;

КонецЕсли;

КонецЦикла

Dethmontt

gulnyr, потому что код правильный, а событие не правильное

А вот так не делайте, даже для учебных задач...
Цитата: Afinogen от 09 фев 2023, 16:47B) зачем вы используете ОформлениеСтрок?  :nhsrm:

тут достаточно имя табличной части как оно  указано в конфигураторе

Для Каждого Стр ИЗ ТабличнаяЧасть Цикл

Если НРег(Найти(Стр.Номенклатура.Наименование,"болты 215"))>0 Тогда
Стр.Количество = 3;

КонецЕсли;

КонецЦикла
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Afinogen


LexaK

Цитата: Afinogen от 10 фев 2023, 10:23и что ту неправильного?

наверно вот это не понравилось
НРег(Найти(Стр.Номенклатура.Наименование,"болты 215"))>0
(вроде как 1С по другому рекомендует проверять на элемент справочника) ;D
если помогло нажмите: Спасибо!

Afinogen

LexaK, ну да поиск по наименованию  конечно  лучше) :D

если на то пошло то вообще лучше не искать ни по части строки ни по наименованию)

antoneus

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

LexaK

ЦитироватьА вообще задачу не понял.
это не задача, просто автор разбирается с приемами/способами программной работы с ТЧ/ТЗ
программно заполнить, программно изменить, частично изменить и т.д.
если помогло нажмите: Спасибо!

Afinogen

antoneus, что вы будете делать если есть несколько элементов с одинаковыми названиями или Помеченными на удаление или наименования с разными буквами и т.д.?)

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

LexaK

Afinogen,
Цитироватьчто вы будете делать если есть несколько элементов с одинаковыми названиями или Помеченными на удаление или наименования с разными буквами и т.д.?)
в таком случае нужно писать запрос к ТЧ/ТЗ в нем с помощью ПОДОБНО и др.проверками искать то что надо
и уже в цикле по результату за один проход выполнить нужные действия
если помогло нажмите: Спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск