7.7 Вес в реализации

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем 3d_killer, 14 янв 2011.

  1. TopicStarter Overlay
    3d_killer
    Offline

    3d_killer

    Регистрация:
    14 янв 2011
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Добрый день всем, у меня вопрос как сделать что бы проставлялся вес товара в реализации(розница), а так же при подборе номенклатуры, дополнительную колонку в подборе для веса я сделал, а как его выдернуть из номенклатуры разобраться не могу.
    Заранее благодарен.
  2. sergejk74
    Offline

    sergejk74 Опытный в 1С

    Регистрация:
    15 ноя 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Впиши в формулу колонки что то вроде БазоваяЕдиница.Вес
  3. TopicStarter Overlay
    3d_killer
    Offline

    3d_killer

    Регистрация:
    14 янв 2011
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Ниже приведен код процедуры добавить позицию в подборе, * я указал что добавил в тексте но вывода веса нет, отображается пустая колонка

    Код:
    Процедура ДобавитьПозицию(ВыбНоменклатура)
    
    Перем Рез, Поз, ТовЦена;
    
    Колво                 = 1; 
    ВозврЕдиница           = ВыбНоменклатура.ОсновнаяЕдиница;
    Цена                  = 0;
    ВозврЦена                = 0;                     
    ВозврВалюта              = ПолучитьПустоеЗначение("Справочник.Валюты");
    ДобавлятьКомплектующие = 0;
    //***********************************************************
    ВозврВес            = ВыбНоменклатура.РеквВесБазовой;
    //***********************************************************                                                                       
    РасчДата               = ПолучитьДатуЦен(); 
    
    Если ЦенаВподборе = "Розница" Тогда
    Если (ВыбНоменклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Услуга)
    или (ВыбНоменклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Работа) Тогда
    РознТипЦен = Константа.РозничныйТипЦен;
    Если глВернутьЦену(ВыбНоменклатура, РознТипЦен, ПолучитьДатуЦен(), ВозврЦена, ВозврЕдиница, ВозврВалюта) = 1 Тогда
    Цена = глПересчет(ВозврЦена,ВозврВалюта,глКурсДляВалюты(ВозврВалюта, РасчДата),
    Валюта, Курс, глКратностьДляВалюты(ВозврВалюта, РасчДата), Кратность);
    КонецЕсли;
    Иначе    
    ВремОстаток  = "";
    ВремЦена     = "";
    глПолучитьРозничныйОстатокЦену(ВыбНоменклатура, ВозврЕдиница, ОстаткиТМЦ, ВремОстаток, ВремЦена);
    НаСкладе     = ЗначениеИзСТроки(ВремОстаток);
    Цена         = ЗначениеИзСТроки(ВремЦена);
    ВозврВалюта  = глРубли;
    
    // пересчитаем цены в валюту документа
    ПересчитатьЦены(ВыбНоменклатура, Цена, НаСкладе);
    КонецЕсли;
    
    ИначеЕсли ЦенаВподборе = "ИзСправочника" Тогда 
    
    // цену получаем только в том случае, если в документе был выбран тип цен и валюта
    Если ПолучитьЦенуНоменклатуры(ВыбНоменклатура, ВозврЕдиница, ВозврЦена, ВозврВалюта) = 1 Тогда // есть цена
    Цена = глПересчет(ВозврЦена,ВозврВалюта,глКурсДляВалюты(ВозврВалюта, РасчДата),
    Валюта, Курс, глКратностьДляВалюты(ВозврВалюта, РасчДата), Кратность);
    КонецЕсли;
    КонецЕсли;
    
    Если Запрашивать.ТекущаяСтрока() = 2 Тогда // количество
    
    // формируем список параметров для передачи в обработку
    Параметр   = СоздатьОбъект("СписокЗначений");
    Параметр.ДобавитьЗначение(ВыбНоменклатура       , "Номенклатура");
    Параметр.ДобавитьЗначение(Колво                  , "Количество");
    Параметр.ДобавитьЗначение(ВозврЕдиница          , "Единица");
    Параметр.ДобавитьЗначение(Цена                  , "Цена");   
    Параметр.ДобавитьЗначение(ДобавлятьКомплектующие, "ДобавлятьКомплектующие");
    //*********************************************************
    Параметр.ДобавитьЗначение(ВозврВес               , "Вес");
    //*********************************************************
    
    // открываем форму обработки
    ОткрытьФормуМодально("Обработка.ВводКоличества", Параметр);
    
    // получаем параметр возврата.
    Если Параметр.Получить("СтатусВозврата") = 0 Тогда
    Возврат;
    КонецЕсли;
    
    Колво                   = Параметр.Получить("Количество");
    ВозврЕдиница            = Параметр.Получить("Единица");
    Цена                   = Параметр.Получить("Цена");
    ДобавлятьКомплектующие   = Параметр.Получить("ДобавлятьКомплектующие");
    //***********************************************************************
    ВозврВес            = Параметр.Получить("Вес");
    //***********************************************************************
    ИначеЕсли Запрашивать.ТекущаяСтрока() = 3 Тогда // количество и цену
    
    // формируем список параметров для передачи в обработку
    Параметр   = СоздатьОбъект("СписокЗначений");
    Параметр.ДобавитьЗначение(ВыбНоменклатура       , "Номенклатура");
    Параметр.ДобавитьЗначение(Колво                  , "Количество");   
    Параметр.ДобавитьЗначение(ВозврЕдиница          , "Единица");   
    Параметр.ДобавитьЗначение(Цена                  , "Цена");   
    Параметр.ДобавитьЗначение(Валюта               , "Валюта");   
    Параметр.ДобавитьЗначение(ДобавлятьКомплектующие, "ДобавлятьКомплектующие");
    //**********************************************************************
    Параметр.ДобавитьЗначение(ВозврВес          , "Вес");
    //**********************************************************************
    
    // открываем форму обработки
    ОткрытьФормуМодально("Обработка.ВводКоличестваИЦены", Параметр);
    
    // получаем параметр возврата.
    Если Параметр.Получить("СтатусВозврата") = 0 Тогда
    Возврат;
    КонецЕсли;
    
    Колво                   = Параметр.Получить("Количество");
    ВозврЕдиница            = Параметр.Получить("Единица");
    Цена                   = Параметр.Получить("Цена");
    ДобавлятьКомплектующие   = Параметр.Получить("ДобавлятьКомплектующие");  
    //*********************************************************************** 
    ВозврВес            = Параметр.Получить("Вес");
    //***********************************************************************
    
    Иначе // ничего не запрашивать
    
    // Для комплектов надо спросить что добавляем: сам комплект или комплектующие
    Если ПустоеЗначение(глКомплектуется(ВыбНоменклатура)) = 0 Тогда
    Выбрали = МенюДляКомплектов.ВыбратьЗначение(Рез, "",Поз, 60, 1);
    Если Выбрали = 1 Тогда
    ДобавлятьКомплектующие = Поз - 1; 
    Иначе // ничего не выбрали или кончился таймаут
    Возврат;
    КонецЕсли;
    
    КонецЕсли;
    
    КонецЕсли;
    
    Если ДобавлятьКомплектующие  = 1 Тогда            
    
    // Надо добавить все комплектующие
    СпрКомплектация = СоздатьОбъект("Справочник.Комплектация");
    СпрКомплектация.ИспользоватьВладельца(ВыбНоменклатура);
    Если СпрКомплектация.ВыбратьЭлементы() = 1 Тогда
    Пока СпрКомплектация.ПолучитьЭлемент() = 1 Цикл
    ДобНоменклатура = СпрКомплектация.Номенклатура;
    
    // Расчитаем количество комплектующего в его базовых единицах,
    // считая, что количество комплекующего измеряется в базовых единицах
    // в одной базовой единице комплекта
    ДобКолво = Колво * ВозврЕдиница.Коэффициент * СпрКомплектация.Количество;
    ДобЦена = 0;
    
    Если ЦенаВподборе <> "Нет" Тогда
    
    Если ЦенаВподборе = "Розница" Тогда 
    Если (ДобНоменклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Услуга)
    или (ДобНоменклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Работа) Тогда
    
    // Для услуг розничную цену берем из справочника 
    РознТипЦен = Константа.РозничныйТипЦен;
    Если РознТипЦен.Выбран() = 1 Тогда            
    ДобЕдиница = "";
    глВернутьЦену(ДобНоменклатура, РознТипЦен, РасчДата, ДобЦена, ДобЕдиница);
    ДобЦена = ?(ПустоеЗначение(ДобЕдиница.Коэффициент) = 1, 0, ДобЦена / ДобЕдиница.Коэффициент);
    КонецЕсли;                                             
    
    Иначе // получим цену из регистра
    Врем = "";
    глПолучитьРозничныйОстатокЦену(ДобНоменклатура, ДобНоменклатура.БазоваяЕдиница, ОстаткиТМЦ, , Врем);
    СписЦен = ЗначениеИзСтроки(Врем);
    Если СписЦен.РазмерСписка() > 0 Тогда   // берем порвую цену в списке
    ДобЦена = СписЦен.ПолучитьЗначение(1);
    КонецЕсли;
    ВозврВалюта = глРубли;   
    КонецЕсли;
    Иначе                                                          
    ДобЕдиница = "";
    Если ПолучитьЦенуНоменклатуры(ДобНоменклатура, ДобЕдиница, ДобЦена, ВозврВалюта) <> 0 Тогда // есть цена
    
    // Приведем цену к базовой единице (от единицы цены)
    ДобЦена = ?(ПустоеЗначение(ДобЕдиница.Коэффициент) = 1, 0, ДобЦена / ДобЕдиница.Коэффициент);
    КонецЕсли;
    КонецЕсли;
    
    ДобЦена = глПересчет(ДобЦена,ВозврВалюта,глКурсДляВалюты(ВозврВалюта, РасчДата),
    Валюта, Курс, глКратностьДляВалюты(ВозврВалюта, РасчДата), Кратность);
    КонецЕсли;
    
    ДобавитьОднуПозицию(ДобНоменклатура, ДобКолво, ДобНоменклатура.БазоваяЕдиница, ДобНоменклатура.РеквВесБазовой , ДобЦена);
    
    КонецЦикла;
    КонецЕсли;
    
    Иначе // Доваляем сам комплект (выбранную позицию)
    Если ЦенаВподборе <> "Нет" Тогда
    Если ТипЗначенияСтр(Цена) = "СписокЗначений" Тогда
    Если Цена.РазмерСписка() > 0 Тогда   // берем первую цену
    Цена = Цена.ПолучитьЗначение(1);
    Иначе
    Цена = 0;
    КонецЕсли;
    КонецЕсли;
    
    КонецЕсли;
    ДобавитьОднуПозицию(ВыбНоменклатура, Колво, ВозврЕдиница, Цена, ВозврВес);
    КонецЕсли;
    
    КонецПроцедуры // ДобавитьПозицию()
    
    [warn="!!! ВНИМАНИЕ !!!"]Пользуемся тегами[/warn]
  4. TopicStarter Overlay
    3d_killer
    Offline

    3d_killer

    Регистрация:
    14 янв 2011
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Все спасибо тебе большое, разобрался те все изменения не нужны оставить только первое только в виде:

    ВозврВес = ВыбНоменклатура.БазоваяЕдиница.Вес
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Хм.... А если единица в документе изменится?
  6. TopicStarter Overlay
    3d_killer
    Offline

    3d_killer

    Регистрация:
    14 янв 2011
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Это нужно не для определения цены, а для того что бы определить загрузку машины при покупке товара (сфера деятельности фирмы в основном аккумуляторы)
  7. TopicStarter Overlay
    3d_killer
    Offline

    3d_killer

    Регистрация:
    14 янв 2011
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Может кто нибудь подсказать как пересчет веса сделать на самом документе РеализацияРозница, так как при двукратном нажатии на подбор то есть изменении номенклатуры происходит обнуление переменной и в итоге в документе неправильный вес, то есть вес добавленного товара только.
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    1) Вес у васм должен расчитываться с учетом количества товара и коэффициента ЕИ.
    2) Сам БАЗОВЫЙ вес хранить не нужно т.к. он уже есть в т.части документа в ЕИ.
    3) Как таковой реквизит веса тоже не вижу смысла хранить в т.части (если вы собираетесь видеть вес в журнале - храните его в шапке.)
    4) Расчет производите следующим образом:
    Код:
    Функция ВесНакладной()
    Вес=0;
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    Вес=Вес+Номенклатура.БазоваяЕдиница.Вес*Количество*Коэффициент; 
    КонецЦикла;
    Возврат Вес;
    КонецФункции
    
    
    
    Если нужно видеть вес товара по каждой позиции - введите текстовую колонку и вычисляйте в ней через формулу.
  9. TopicStarter Overlay
    3d_killer
    Offline

    3d_killer

    Регистрация:
    14 янв 2011
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    большое спасибо за ответ, но я не могу добавить колонки в окне точнее сказать не знаю где их добавлять в этом окне и как к нему обращаться.

    Вложения:

    • form.jpg
      form.jpg
      Размер файла:
      254,9 КБ
      Просмотров:
      52
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    На приведенном скриншобе внизу видна панель реквизитов. Берем (большая синяя буква Т) и вставляем в таблицу (встанет в самый конец). Позицию меняем перетаскиванием колонки. На закладке "дополнительно" прописываем формулу расчета
  11. TopicStarter Overlay
    3d_killer
    Offline

    3d_killer

    Регистрация:
    14 янв 2011
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Спасибо щас посмотрю
  12. TopicStarter Overlay
    3d_killer
    Offline

    3d_killer

    Регистрация:
    14 янв 2011
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Код:
    Процедура ПриИзмененииНоменклатуры();
    глПересчетТаблЧасти(Контекст,Форма.ТекущаяКолонка(),СписокПараметров);	
    // для услуги или работы цены можно редактировать, иначе нужно выбирать из остатков регистра ?
    Если (Номенклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Услуга)
    или (Номенклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Работа)
    или (Склад.РозничныйСклад = 0) Тогда
    Форма.Цена.Редактирование(1);
    Иначе
    Форма.Цена.Редактирование(0);
    КонецЕсли;
    КонецПроцедуры
    
    
    Это приведен код события при изменении номенклатуры, не могу никак пристроить сюда код для того чтобы в столбце вес проставлялся, единицы продукции. Колонка с индификатором ВесЕдиницы. Помогите пожалуйста.
  13. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Этого и не нужно. В текстовой колоке которую вы создали: пр.кн. мышки-свойства-закл.дополнительно.поле формула пишем:
    Код:
    Номенклатура.БазоваяЕдиница.Вес*Количество*Коэффициент; 
    
    
    Функция ВесНакладной() приведенная выше пригодится вам для расчета общего веса внизу табличной части.
  14. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    стесняюсь спросить, а че все так к базовой единице тянутся?

    ВозврВес = ВыбНоменклатура.БазоваяЕдиница.Вес?
    или
    Номенклатура.БазоваяЕдиница.Вес*Количество*Коэффициент;

    В ТЧ есть реквизит Единица, от него и пляшите.

    и ещё, не надо загромождать ТЧ лишней инфой, т.е. не надо вставлять туда эту колонку с весом.
    на печать вывести - надо, а в документе это лишнее
  15. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    1) Как показывает практика в базовойЕИ хранить удобнее всего
    2) Чем мы "загромождаем" ТЧ, колокной?
    3) Эта колонка нужна для подбора веса (например когда известна грузрподъемность автомобиля развоза товар и нужно оптимально загрузить машинуа). Веть "итого" это хорошо, но удобнее когда виден вес по строкам.
  16. TopicStarter Overlay
    3d_killer
    Offline

    3d_killer

    Регистрация:
    14 янв 2011
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Очень буду благодарен, расскажите как етой функцией правильно воспользоваться, я просто новичек и многого не знаю.
  17. Black Cat
    Offline

    Black Cat Опытный в 1С

    Регистрация:
    18 май 2009
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    3) или, в номенклатуре не забит вес. Без веса в строке этого не видно.
  18. TopicStarter Overlay
    3d_killer
    Offline

    3d_killer

    Регистрация:
    14 янв 2011
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Так что кто нибудь поможет с функцией разобраться?
  19. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    чем помочь то
  20. TopicStarter Overlay
    3d_killer
    Offline

    3d_killer

    Регистрация:
    14 янв 2011
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Как сделать чтобы считался сумарный вес в Реализации розница?

Поделиться этой страницей