Версия для печати темы (https://pro1c.org.ua/index.php?s=1a675ad3606a5361b44653f148127915&showtopic=7223)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Подстановка цены из справочника

Автор: bodka 02.05.12, 17:09

Не получается подставить цену из справочника Номенклатура. Помогите можалуйста...
В модуле формы

&НаКлиенте
Процедура МатериалыМатериалПриИзменении(Элемент)
    ТестНаСервере1();
КонецПроцедуры

&НаСервере
Процедура ТестНаСервере1()
    ОбъектНаСервере = РеквизитФормыВЗначение("Объект");
    ОбъектНаСервере.ЦенаСерв();
    ЗначениеВРеквизитФормы(ОбъектНаСервере, "Объект");
КонецПроцедуры


В модуле объекта:
Процедура ЦенаСерв()экспорт
  Отбор = Новый Структура();
    Отбор.Вставить("номенклатура",Номенклатура);
    Цена = Номенклатура.Розничная;


    
      
КонецПроцедуры // ЦенаСерв()


В отладчике видно что не передается Номенклатура, тоесть "".

Автор: Vofka 02.05.12, 17:30

Номенклатура - это реквизит табличной части?

Автор: bodka 02.05.12, 17:46

Да

&НаКлиенте
Процедура МатериалыМатериалПриИзменении(Элемент)
    СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные;
    СтрокаТабличнойЧасти.Цена = ПолучитьЦену(СтрокаТабличнойЧасти.Материал);

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

&НаСервереБезКонтекста
Функция ПолучитьЦену(Номенклатура)

Возврат Номенклатура.Розничная;    

КонецФункции // ()

Автор: Vofka 02.05.12, 17:51

Я так понял уже работает?

Автор: Sharki 03.05.12, 12:31

Цитата(bodka @ 02.05.12, 18:09) *
В модуле объекта:
Процедура ЦенаСерв()экспорт
  Отбор = Новый Структура();
    Отбор.Вставить("номенклатура",Номенклатура);
    Цена = Номенклатура.Розничная;
      
КонецПроцедуры // ЦенаСерв()


Я бы сделал так если хочется писать в модуле объекта
Обновление цен для всех строк.
Для Каждого лСтрока Из ЭтотОбъект.ВашаТабличнаяЧасть Цикл
       лСтрока.Цена = лСтрока.Номенклатура.Розничная;
КонецЦикла;


А чтоб этим не заниматься то лучше на форме вынести отдельную колонку методом перетягивания нужного реквизита из ссылки реквизита табличной части.

Автор: bodka 03.05.12, 14:40

А как допустим устанавливать разные виды цен, которые есть в справочнике номенклатура (Розничная, Оптовая) Если для каждого контрагента указывать тип цены (Перечисления.ТипЦены.Розничная). На форме есть реквизит "ТипЦены" - он устанавливается при смене реквизита "Контрагент".Нужно что б все цены соответствовали реквизиту "ТипЦены". Подскажите пожалуйста как реализовать или где можно почитать...

Автор: Batchir 03.05.12, 14:56

1. Оформляйте вопросы согласно правилам, а то есть большое желание проходить мимо.
2. Если цен больше чем одна, то логично их хранить не в номенклатуре, а в отдельном месте (например, регистре сведений)
3. Как будут попадать в это место цены Вам решать, стандартно это делается документами установки цен.
4. Ну и получать уже цены из этого самого места по установленным отборам

Цитата(bodka @ 03.05.12, 15:40) *
Подскажите пожалуйста как реализовать или где можно почитать...

Почитать лучше всего в росийской УТ

Автор: Sharki 03.05.12, 16:31

Цитата(bodka @ 03.05.12, 15:40) *
А как допустим устанавливать разные виды цен, которые есть в справочнике номенклатура (Розничная, Оптовая) Если для каждого контрагента указывать тип цены (Перечисления.ТипЦены.Розничная). На форме есть реквизит "ТипЦены" - он устанавливается при смене реквизита "Контрагент".Нужно что б все цены соответствовали реквизиту "ТипЦены". Подскажите пожалуйста как реализовать или где можно почитать...


не совсем не понятна задача как таковая.

Пожалуй стоит для начала описать что имеется(к примеру Есть справочник Контрагенты, у него табличная часть с колонками Номенклатура, цена и т.д.) Нужно сделать заполнение той колонки или той...
А то так вслепую развивая разные мысли с дикой фантазией то вариантов образуется оч. много и они зацикливаются на одной теме - что же я хочу сделать?

Автор: Vofka 03.05.12, 16:36

"Вы пока делайте, а я потом скажу как надо" http://pro1c.org.ua/index.php?showtopic=7217

Автор: Sharki 03.05.12, 16:41

Цитата(Vofka @ 03.05.12, 17:36) http://pro1c.org.ua/index.php?act=findpost&pid=49603


Я когда пытаюсь выяснить что конкретно хочет заказчик - в итоге он говорит "сделайте как считаете нужным", и я делаю как-нибудь зная что 100% переделывать)
Проще сделать абы как и не заморачиваться один фиг они далеко не всегда знают че хотят)

Автор: Batchir 04.05.12, 7:20

ОФФТОП

Цитата(Sharki @ 03.05.12, 17:41) *
Я когда пытаюсь выяснить что конкретно хочет заказчик - в итоге он говорит "сделайте как считаете нужным"
...
один фиг они далеко не всегда знают че хотят

Где-то читал что в таких случаях очень эффективно играть с заказчиком в игру "Зачем?"
т.е. задавать этот вопрос до тех пор, пока не выяснится первоисточник из-за которого возникла задача,
а тогда уже и КПД попадания в "то что нужно" намного выше.

Автор: Vofka 04.05.12, 7:47

Офф

Цитата(Batchir @ 04.05.12, 8:20) *
Где-то читал что в таких случаях очень эффективно играть с заказчиком в игру "Зачем?"
т.е. задавать этот вопрос до тех пор, пока не выяснится первоисточник из-за которого возникла задача,
а тогда уже и КПД попадания в "то что нужно" намного выше.

Если долго играть в "Зачем" - заказчик может найти себе для игр другого "игрока"


Автор: Batchir 04.05.12, 8:02

Офф на Офф

Цитата(Vofka @ 04.05.12, 8:47) *
Если долго играть в "Зачем" - заказчик может найти себе для игр другого "игрока"

Я больше склоняюсь к тому что если заказчик неадекватный и вообще не знает чего хочет, то скорее
всего "игрок" найдет себе "новую площадку для игр".
Ну или озвученная цена будет в несколько раз превышать предполагаемые затраты (с учетом 100% переделки), что вызовет у заказчика чувство "жабы" и ему придется осознать то что ему нужно и изложить в доступном для понимания виде (ну или как вариант программист заработает больше чем ожидал).

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua