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

Обращение к элементу формы

Автор pomkka, 17 фев 2015, 07:57

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

pomkka

Добрый день. Подскажите пожалуйста, как быть. Есть конфигурация альфа-авто 5. Нужно реализовать обработку заполнения табличных частей документа "Резервирование под заказ покупателя", которая при 0 значении остатка товара на складе будет удалять табличные строки с номенклатурой.

Сама обработка не сложная, но я сломал голову и никак не могу понять, как достать значение остаток на складе с формы. Форма обычная, заголовок столбца заштрихован, смотрел через отладчик, в ЭлементыФормы вижу заголовок столбца, но самого значения так и не увидел. Подскажите, откуда его можно достать? Спасибо.

Gunner

Присваивается текст. Посмотрите обработчик таблич. части "при получении данных", там должен выводиться остаток

vitasw

Если остатки в документе заполнены, то через "ТекущиеДанные" табличного поля формы. В противном случае остатки еще нужно как-то заполнить.

pomkka

Всем спасибо;) Решил проблему запросом к регистру оборотов, с параметром артикул номенклатуры:) Если кому-нибудь интересен код обработки, могу выложить)

vitasw

Интересно, выкладывайте.

pomkka

Процедура Заполнить(ДокументОбъект, ТабЧасть, ЭтаФорма) Экспорт
МассивСтрок = Новый Массив;
Для Каждого Элемент Из ТабЧасть Цикл
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               | ОстаткиТоваровКомпанииОстатки.КоличествоОстаток
               |ИЗ
               | РегистрНакопления.ОстаткиТоваровКомпании.Остатки КАК ОстаткиТоваровКомпанииОстатки
               |ГДЕ
               | ОстаткиТоваровКомпанииОстатки.Номенклатура.Артикул = &Артикул";
Запрос.УстановитьПараметр("Артикул",Элемент.Номенклатура.Артикул);
ВыборкаЗапроса = Запрос.Выполнить().Выбрать();

Если НЕ ВыборкаЗапроса.Следующий() Тогда
МассивСтрок.Добавить(Элемент);
КонецЕсли;
КонецЦикла;
Для Каждого Элемент Из МассивСтрок Цикл
ТабЧасть.Удалить(Элемент);
КонецЦикла;
Предупреждение("Строки с нулевым значением удалены");

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


Как-то так. Работает исправно, если что-нибудь можно улучшить, пожалуйста, дайте знать:)

vitasw

Эх костыли вы мои костыли.
Пример перезаполнения таблицы документа по ненулевым остаткам
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателяТовары.ЕдиницаИзмерения,
| ЗаказПокупателяТовары.ЕдиницаИзмеренияМест,
| ЗаказПокупателяТовары.Количество,
| ЗаказПокупателяТовары.КоличествоМест,
| ЗаказПокупателяТовары.Коэффициент,
| ЗаказПокупателяТовары.Номенклатура,
| ЗаказПокупателяТовары.ПлановаяСебестоимость,
| ЗаказПокупателяТовары.ПроцентСкидкиНаценки,
| ЗаказПокупателяТовары.Размещение,
| ЗаказПокупателяТовары.СтавкаНДС,
| ЗаказПокупателяТовары.Сумма,
| ЗаказПокупателяТовары.СуммаНДС,
| ЗаказПокупателяТовары.ХарактеристикаНоменклатуры,
| ЗаказПокупателяТовары.Цена,
| ЗаказПокупателяТовары.ПроцентАвтоматическихСкидок,
| ЗаказПокупателяТовары.УсловиеАвтоматическойСкидки,
| ЗаказПокупателяТовары.ЗначениеУсловияАвтоматическойСкидки,
| ЗаказПокупателяТовары.КлючСтроки,
| ЗаказПокупателяТовары.СерияНоменклатуры
|ИЗ
| Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки КАК РазмещениеЗаказовПокупателейОстатки
| ПО ЗаказПокупателяТовары.Номенклатура = РазмещениеЗаказовПокупателейОстатки.Номенклатура
| И ЗаказПокупателяТовары.ХарактеристикаНоменклатуры = РазмещениеЗаказовПокупателейОстатки.ХарактеристикаНоменклатуры
| И ЗаказПокупателяТовары.Ссылка = РазмещениеЗаказовПокупателейОстатки.ЗаказПокупателя
|ГДЕ
| ЗаказПокупателяТовары.Ссылка = &Ссылка
| И РазмещениеЗаказовПокупателейОстатки.КоличествоОстаток > 0";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

Товары.Загрузить(Запрос.Выполнить().Выгрузить());

pomkka

Цитата: vitasw от 18 фев 2015, 21:38
Эх костыли вы мои костыли.
Пример перезаполнения таблицы документа по ненулевым остаткам
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателяТовары.ЕдиницаИзмерения,
| ЗаказПокупателяТовары.ЕдиницаИзмеренияМест,
| ЗаказПокупателяТовары.Количество,
| ЗаказПокупателяТовары.КоличествоМест,
| ЗаказПокупателяТовары.Коэффициент,
| ЗаказПокупателяТовары.Номенклатура,
| ЗаказПокупателяТовары.ПлановаяСебестоимость,
| ЗаказПокупателяТовары.ПроцентСкидкиНаценки,
| ЗаказПокупателяТовары.Размещение,
| ЗаказПокупателяТовары.СтавкаНДС,
| ЗаказПокупателяТовары.Сумма,
| ЗаказПокупателяТовары.СуммаНДС,
| ЗаказПокупателяТовары.ХарактеристикаНоменклатуры,
| ЗаказПокупателяТовары.Цена,
| ЗаказПокупателяТовары.ПроцентАвтоматическихСкидок,
| ЗаказПокупателяТовары.УсловиеАвтоматическойСкидки,
| ЗаказПокупателяТовары.ЗначениеУсловияАвтоматическойСкидки,
| ЗаказПокупателяТовары.КлючСтроки,
| ЗаказПокупателяТовары.СерияНоменклатуры
|ИЗ
| Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки КАК РазмещениеЗаказовПокупателейОстатки
| ПО ЗаказПокупателяТовары.Номенклатура = РазмещениеЗаказовПокупателейОстатки.Номенклатура
| И ЗаказПокупателяТовары.ХарактеристикаНоменклатуры = РазмещениеЗаказовПокупателейОстатки.ХарактеристикаНоменклатуры
| И ЗаказПокупателяТовары.Ссылка = РазмещениеЗаказовПокупателейОстатки.ЗаказПокупателя
|ГДЕ
| ЗаказПокупателяТовары.Ссылка = &Ссылка
| И РазмещениеЗаказовПокупателейОстатки.КоличествоОстаток > 0";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

Товары.Загрузить(Запрос.Выполнить().Выгрузить());


Скажите, пожалуйста, а чем плох мой способ? Я начинающий программист, хотелось бы учиться, учиться и еще раз учиться)

vitasw

Я уже не раз предлагал и не на одном форуме у тех, кто делает запрос в цикле, выжигать на лбу огромными огненными буквами "ТАК ДЕЛАТЬ НЕЛЬЗЯ!"
Практически в каждой строке вашего кода или не соответствие методическим рекомендациям или откровенные ошибки, например поиск в запросе номенклатуры по артикулу.
Любой код в 1С 8 кроме того что он должен быть правильным, он еще и должен выполнятся быстро. и эти оба параметра равнозначно критичны.

pomkka

Цитата: vitasw от 19 фев 2015, 10:55
Я уже не раз предлагал и не на одном форуме у тех, кто делает запрос в цикле, выжигать на лбу огромными огненными буквами "ТАК ДЕЛАТЬ НЕЛЬЗЯ!"
Практически в каждой строке вашего кода или не соответствие методическим рекомендациям или откровенные ошибки, например поиск в запросе номенклатуры по артикулу.
Любой код в 1С 8 кроме того что он должен быть правильным, он еще и должен выполнятся быстро. и эти оба параметра равнозначно критичны.

Выжигать не стоит, я все понял, спасибо Вам огромное за советы, сейчас все переделываю.

Теги:

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

Рейтинг@Mail.ru

Поиск