Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Просчитать вес товара  (Прочитано 9555 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
CofRamGrad
Участник

ua
Offline Offline
Пол: Женский

« : 08-02-2010 13:06 » 

Здравствуйте.
Мне в документ РеализацияТоваровУслуг в ТабличнуюЧасть Товары надо добавить реквизит Вес, в зависимости от количества товара должен просчитываться вес.

Код:
Процедура ТоварыКоличествоПриИзменении(Элемент)

   ПриИзмененииКоличестваТовары(Элемент);
   ВесОдного = Справочники.ЕдиницыИзмерения.Выбрать().Вес;
   ЭлТов = ЭлементыФормы.Товары.ТекущаяСтрока;
   ЭлТов.Вес = ЭлТов.Количество * ВесОдного;

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

Проблема в том, что я не знаю, как обратиться к реквизиту Вес в справочнику ЕдиницыИзмерения (как достать оттуда информацию и ею пользоваться).

Помогите, пожалуйста!
« Последнее редактирование: 09-02-2010 08:45 от Sel » Записан

Драаааааааааааасти!!! Улыбаюсь
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 09-02-2010 07:57 » 

По идее у тебя единица измерения должна быть в табличной части, или я не прав?
Записан
CofRamGrad
Участник

ua
Offline Offline
Пол: Женский

« Ответ #2 : 09-02-2010 10:44 » 

Спасибо:) С этой частью я разобралась!
код:
Процедура ТоварыКоличествоПриИзменении(Элемент)

   ПриИзмененииКоличестваТовары(Элемент);
   ЭлТов = ЭлементыФормы.Товары.ТекущиеДанные;                       
   Ном = ЭлТов.Номенклатура;                                         
   Ном_Найти = Справочники.Номенклатура.НайтиПоНаименованию(Ном);     
   Если Не Ном_Найти.ЕдиницаДляОтчетов.Вес = 0 Тогда                 
      ЭлТов.Вес = Ном_Найти.ЕдиницаДляОтчетов.Вес * ЭлТов.Количество * ЭлТов.Коэффициент;
   Иначе                                                             
      Сообщить("Вес не задан!!!", СтатусСообщения.Информация);       
   КонецЕсли;                                                         
   
КонецПроцедуры // ТоварыКоличествоПриИзменении()

Такой вот часть кода я прописала еще в процедурах:
ТоварыНоменклатураПриИзменении,
ТоварыНоменклатураНачалоВыбора,
ТоварыНоменклатураОкончаниеВводаТекста.

Сейчас у меня загвоздка в том, что мне надо прописать это в общем модуле ОбработкаТабличных частей. В процедуре Процедура ПриИзмененииНоменклатурыТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект, ИмяЕдиницыИзмерения = "ЕдиницаИзмерения") Экспорт я прописала:
Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("Вес", МетаданныеДокумента, ИмяТабличнойЧасти)
      //И СтрокаТабличнойЧасти.Номенклатура <> СтрокаТабличнойЧасти.Вес.Владелец
      И СтрокаТабличнойЧасти.Номенклатура.ВидНоменклатуры = "Товар" Тогда
         Ном = ДокументОбъект.Номенклатура;                                                            
         Ном_Найти = Справочники.Номенклатура.НайтиПоНаименованию(Ном);                       
         Если Не Ном_Найти.ЕдиницаДляОтчетов.Вес = 0 Тогда                                    
            ДокументОбъект.Вес = Ном_Найти.ЕдиницаДляОтчетов.Вес * ДокументОбъект.Количество * ДокументОбъект.Коэффициент;
         Иначе                                                                                
            Сообщить("Вес не задан!!!", СтатусСообщения.Информация);                         
         КонецЕсли;
   КонецЕсли;

и добавила еще процедуры:

код:

Процедура ТоварыНоменклатураПриИзменении(Элемент, СтрокаТабличнойЧасти, ДокументОбъект, ИмяЕдиницыИзмерения = "ЕдиницаИзмерения") Экспорт
   
   ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);

   МетаданныеДокумента = ДокументОбъект.Метаданные();

   Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("Вес", МетаданныеДокумента, ИмяТабличнойЧасти)
      И СтрокаТабличнойЧасти.Номенклатура <> СтрокаТабличнойЧасти.Вес.Владелец Тогда
         Ном = ДокументОбъект.Номенклатура;                                                            
         Ном_Найти = Справочники.Номенклатура.НайтиПоНаименованию(Ном);                       
         Если Не Ном_Найти.ЕдиницаДляОтчетов.Вес = 0 Тогда                                    
            ДокументОбъект.Вес = Ном_Найти.ЕдиницаДляОтчетов.Вес * ДокументОбъект.Количество * ДокументОбъект.Коэффициент;
         Иначе                                                                                
            Сообщить("Вес не задан!!!", СтатусСообщения.Информация);                         
         КонецЕсли;
   КонецЕсли;                                                                          

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

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

   МетаданныеДокумента = ДокументОбъект.Метаданные();
   Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("Вес", МетаданныеДокумента, ИмяТабличнойЧасти)
      И СтрокаТабличнойЧасти.Номенклатура <> СтрокаТабличнойЧасти.Вес.Владелец Тогда
         Ном = ДокументОбъект.Номенклатура;                                                            
         Ном_Найти = Справочники.Номенклатура.НайтиПоНаименованию(Ном);                       
         Если Не Ном_Найти.ЕдиницаДляОтчетов.Вес = 0 Тогда                                    
            ДокументОбъект.Вес = Ном_Найти.ЕдиницаДляОтчетов.Вес * ДокументОбъект.Количество * ДокументОбъект.Коэффициент;
         Иначе                                                                                
            Сообщить("Вес не задан!!!", СтатусСообщения.Информация);                         
         КонецЕсли;
   КонецЕсли;                                                         
   
КонецПроцедуры

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

   МетаданныеДокумента = ДокументОбъект.Метаданные();
    Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("Вес", МетаданныеДокумента, ИмяТабличнойЧасти)
      И СтрокаТабличнойЧасти.Номенклатура <> СтрокаТабличнойЧасти.Вес.Владелец Тогда
         Ном = ДокументОбъект.Номенклатура;                                                            
         Ном_Найти = Справочники.Номенклатура.НайтиПоНаименованию(Ном);                       
         Если Не Ном_Найти.ЕдиницаДляОтчетов.Вес = 0 Тогда                                    
            ДокументОбъект.Вес = Ном_Найти.ЕдиницаДляОтчетов.Вес * ДокументОбъект.Количество * ДокументОбъект.Коэффициент;
         Иначе                                                                                
            Сообщить("Вес не задан!!!", СтатусСообщения.Информация);                      
         КонецЕсли;
   КонецЕсли;
КонецПроцедуры


Я не знаю, правильно ли я мыслю!!!!  Направте на путь истинный, пожалуйста:) Люблю!
Записан

Драаааааааааааасти!!! Улыбаюсь
CofRamGrad
Участник

ua
Offline Offline
Пол: Женский

« Ответ #3 : 09-02-2010 10:59 » 

Да, ЕдиницаИзмерения в табличной части Товары.
Записан

Драаааааааааааасти!!! Улыбаюсь
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 10-02-2010 11:57 » 

CofRamGrad, выделяй код с использование [code]Здесь код[/code]

Ты неправильно мыслишь в принципе: одинаковый (похожий) код нужно не копировать, а выносить в отдельную процедуру/функцию! При этом твоя задача как программиста определить в чем различия и создать для них параметры, передаваемые в процедуру/функцию.
Так что перепиши сначала правильно, а то даже тяжело понять6 есть ли в коде какие отличия или нет...
« Последнее редактирование: 10-02-2010 12:01 от Kivals » Записан
CofRamGrad
Участник

ua
Offline Offline
Пол: Женский

« Ответ #5 : 10-02-2010 14:13 » 

ок))) Вроде получилось уже)))

буду выделять)))))) Люблю!
« Последнее редактирование: 10-02-2010 19:51 от Sel » Записан

Драаааааааааааасти!!! Улыбаюсь
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines