Имя: Пароль:
1C
1С v8
Обработка подбора ТЧ документа
0 Начинающий_13
 
03.08.12
10:29
Здравствуйте
Не просчитываются данные по строке при обработке подбора, какую процедура надо задействовать еще? Параметры становятся все в строку.
Просчитывается только ПриИзменении() без проблем

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

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

       Н.ТМЦ                    = ВыбраннаяСтрока;
   Н.Характеристика         = СтруктураПараметров.Характеристика;
   Н.Количество             = СтруктураПараметров.Количество;
   Н.Цена                   = СтруктураПараметров.Цена;
   Н.Цена1го                = СтруктураПараметров.Цена1го;
   Н.Сумма                  = СтруктураПараметров.Сумма;
   Н.СтавкаНДС              = СтруктураПараметров.СтавкаНДС;
   Н.СтавкаНП               = СтруктураПараметров.СтавкаНП;
1 Начинающий_13
 
03.08.12
10:54
Что никто не сталкивался с такой проблемой?
2 hhhh
 
03.08.12
11:51
(1) ну в типовой посмотрите, чего вы паритесь.

Вообще-то, вот эту фигню

  Н.Характеристика         = СтруктураПараметров.Характеристика;
   Н.Количество             = СтруктураПараметров.Количество;
   Н.Цена                   = СтруктураПараметров.Цена;
   Н.Цена1го                = СтруктураПараметров.Цена1го;
   Н.Сумма                  = СтруктураПараметров.Сумма;
   Н.СтавкаНДС              = СтруктураПараметров.СтавкаНДС;
   Н.СтавкаНП               = СтруктураПараметров.СтавкаНП;

выкиньте. Напишите просто

ЗаполнитьЗначенияСвойств(Н, СтруктураПараметров);

А то вас тут распнут, как злостного семерочника.
3 Агент Инфостарта
 
03.08.12
12:03
(2) Не парься, в типовых подобных портянок полно.
4 hhhh
 
03.08.12
12:06
(3) в типовых- то понятно, эта портянка ведь быстрее работает, чем ЗаполнитьЗначенияСвойств. Это они так производительность увеличивают.
5 Начинающий_13
 
03.08.12
12:27
Я смотрел типовые, но ничего там для решения проблемы не нашел

Структура Функций общего модуля

Процедура РассчитатьСумму(СтрокаТЧ, ДокументОбъект) Экспорт    // ДА

   ИмяТабличнойЧасти        = ПолучитьИмяТЧПоСсылкеНаСтроку(СтрокаТЧ);
   МетаданныеДокумента      = ДокументОбъект.Метаданные();
     СтрокаТЧ.Сумма           = СтрокаТЧ.Цена * СтрокаТЧ.Количество;
       
КонецПроцедуры

В модуле формы документа структура процедур ПриИзменении

Процедура ТоварыСуммаПриИзменении(Элемент)
   
   РаботаСРасчетами.РассчитатьЦену(ЭлементыФормы.Товары.ТекущиеДанные, ЭтотОбъект);
   РаботаСРасчетами.РассчитатьВсего(ЭлементыФормы.Товары.ТекущиеДанные, ЭтотОбъект);
   РаботаСРасчетами.РассчитатьНП(ЭлементыФормы.Товары.ТекущиеДанные, ЭтотОбъект);
   РаботаСРасчетами.РассчитатьНДС(ЭлементыФормы.Товары.ТекущиеДанные, ЭтотОбъект);
   
КонецПроцедуры
6 hhhh
 
03.08.12
13:53
(5) зачем вы в общем модуле смотрите? В документе смотрите. ОбработкаВыбора может.
7 Начинающий_13
 
03.08.12
15:43
У меня на форме  табличные поля Товары,тара (и т.д.) и Подбор ( ТипЗнчСправочникСписок.ТМЦ )
Этот алгоритм помещем в Процедуру ВЫБОР таб.поля Подбор
Все подбирается из Подбор в ТЧ Товары,тата документа, но нет просчета по строке, надо перещелкнуть любое значение в строке что бы получился результат.Можно ли активизировать Событие ПриИзменении по строке и ячейке допустим количество Я нашел выход но это НОВАЯ ПРОЦЕДУРА с пересчетом (не хочется городить чущь)
Я попробую по другому сделать через команду.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший