Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Процедура автоматического присваивания
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Общий раздел > Корзина
Tech
Здравствуйте. Несколько месяцев изучаю 1С Предприятие 8.0, так сказать с точки зрения программирования. Не знаю как реализовать поставленную задачу, пожалуйста помогите. Суть проблемы: Для документа "Поступления товаров" (с табличной частью, которая имеет реквизиты "Наименование", "Цена", "Количество", "Единица измерения") необходимо создать процедуру, которая должна выполняться при возникновении события "При изменении" и осуществлять автоматическое присваивание реквизиту "Цена" значение цены выбранного элемента справочника "Номенклатура товаров" (Справочник имеет следующие реквизиты: "Цена" и "Единица измерений"). Заранее благодарю.
Flexy
Процедура ПереченьНоменклатурыНоменклатураПриИзменении(Элемент)

//получить текущую строку табличной части

СтрокаТабличнойЧасти = ЭлементыФормы.ПереченьНоменклатуры.ТекущиеДанные;

//установить цену

СтрокаТабличнойЧасти.Цена = РозничнаяЦена(Дата, Элемент.Значение);

//пересчитать сумму строки

РассчитатьСумму(СтрокаТабличнойЧасти);

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


Из Книги М. Радченко "Практическое пособие разработчика" 1С 8.0.
Tech
Чото както вроде не то
или я чего то не понимаю 09000000.gif
logist
Flexy, забыл уточнить что процедуры "РозничнаяЦена" и "РассчитатьСумму" должны быть заранее описаны.
Если у Вас их нет, то лучше будет найти указанную книженцию, там как раз нужный Вам пример очень хорошо описан.
Flexy
Цитата(logist @ 10.05.11, 6:42) необходимо зарегистрироваться для просмотра ссылки
Flexy, забыл уточнить что процедуры "РозничнаяЦена" и "РассчитатьСумму" должны быть заранее описаны.
Если у Вас их нет, то лучше будет найти указанную книженцию, там как раз нужный Вам пример очень хорошо описан.

Спасибо, что поправили. icon_beer17.gif
А то я уже совсем невнимательным стал...
Tech
Простите пожалуйста за невежливость, а нельзя ли это реализовать как-то попроще?
Vofka
Tech, в общем-то всё ещё зависит от того как и где вы храните цену. Как сказал logist:
Цитата(logist)
лучше будет найти указанную книженцию, там как раз нужный Вам пример очень хорошо описан.
Tech
Цена хранится в справочнике "Номенклатура товаров"
Vofka
Тогда как-то так пробуйте:

Процедура ...ПриИзменении()..
   СтрокаТабличнойЧасти = ЭлементыФормы.ПереченьНоменклатуры.ТекущиеДанные;
   СтрокаТабличнойЧасти.Цена = СтрокаТабличнойЧасти.Номенклатура.Цена;
КонецПроцедуры
Batchir
Цитата(Tech @ 11.05.11, 7:53) необходимо зарегистрироваться для просмотра ссылки
Простите пожалуйста за невежливость, а нельзя ли это реализовать как-то попроще?

Цитата
осуществлять автоматическое присваивание реквизиту "Цена" значение цены выбранного элемента справочника "Номенклатура товаров" (Справочник имеет следующие реквизиты: "Цена" и "Единица измерений")

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

КонецПроцедуры
sreda2006
А не проще, в табличной части документа, сделать цену как ссылку на Ваш справочник номенклатура товаров?
Vofka
Цитата
А не проще, в табличной части документа, сделать цену как ссылку на Ваш справочник номенклатура товаров?

И что получится? В поле цена будет, например, "Гвозди".
sreda2006
Не думаю что гвозди..... в условии сказано что "Номенклатура товаров" (Справочник имеет следующие реквизиты: "Цена" и "Единица измерений").
logist
Цитата(sreda2006 @ 11.05.11, 9:48) необходимо зарегистрироваться для просмотра ссылки
Не думаю что гвозди..... в условии сказано что "Номенклатура товаров" (Справочник имеет следующие реквизиты: "Цена" и "Единица измерений").

И что? А при изменении номенклатуры цена будет меняться по взмаху волшебной палочки?
sreda2006
Ну или так..... где ТаблЧасть имя Табличной части Вашего документа
Процедура ПриходтТипПриИзменении(Элемент)

    // Вставить содержимое обработчика.

    ЭлементыФормы.ТаблЧасть.ТекущаяСтрока.Цена=Справочники.Номенклатуры.НайтиПо
Коду(
ЭлементыФормы.ТаблЧасть.ТекущаяСтрока.Тип.Код).Цена;

КонецПроцедуры
logist
sreda2006, Что ЭТО? Чем это лучше чем в сообщениях #9 #10
sreda2006
согласен, тоже самое
Tech
А если цена содержащаяся в справочнике Номенклатура товаров, находится не в табличной части справочника, а просто как реквизит этого справочника?
Vofka
Tech, вы вообще хоть что-то делаете, пробуете? Или тупо спрашиваете всё, что в голову взбредёт?
Tech
Цитата(Vofka @ 14.05.11, 14:22) необходимо зарегистрироваться для просмотра ссылки
Tech, вы вообще хоть что-то делаете, пробуете? Или тупо спрашиваете всё, что в голову взбредёт?

Спрашиваю потому что, хочу понять почему все варианты, которые были предложены и опробованы мной не работают.
Zaval
"Несколько месяцев" назад нужно было исключить из своего лексикона вот это "не работает".
Элементу формы (Номенклатура) для события ПриИзменении задается процедура-обработчик, в которой прописана установка Цены в той же строке ТЧ.
Возьмите в руки Отладчик и определите, что именно у Вас "ни работаит":)
Tech
Автоматически не присваивает реквизиту Цена значение цены выбранного элемента справочника "Номенклатура товаров"
Zaval
В обработчик заходит?
Приведите код обработчика, укажите точку останова и значения переменных в ней.
Tech
Цитата(Zaval @ 14.05.11, 16:47) необходимо зарегистрироваться для просмотра ссылки
В обработчик заходит?
Приведите код обработчика, укажите точку останова и значения переменных в ней.

В обработчик заходит. Когда выбираю наименование товара ничего не происходит, а должна в поле "Цена" автоматически вставляться цена из справочника.
Zaval
Если в обработчик заходит - то всего две возможности: либо не может получить цену, либо не устанавливает.

Пользуйтесь Отладчиком! Где текст обработчика?
Batchir
Это значит что Вы что-то не договариваете, либо что то не то делаете, потому что из Ваших слов предложенные варианты работать должны
Tech
Цитата(Batchir @ 14.05.11, 17:25) необходимо зарегистрироваться для просмотра ссылки
Это значит что Вы что-то не договариваете, либо что то не то делаете, потому что из Ваших слов предложенные варианты работать должны

Вроде делаю все правильно, говорю все как есть. Справочник "Номенклатура товаров" - иерархический, имеет реквизиты "Цена" и "Единица измерения", табличная часть отсутствует. Документ "Поступление товаров": реквизиты шапки: "Поставщик", реквизиты табличной части: "Наименование", "Цена", "Количество", "Единица измерения". Процедура должна при изменении наименования товара автоматически вставлять цену товара выбранную из справочника "Номенклатура товаров".
Zaval
Тип реквизита Наименование? (не стОит так реквизиты обзывать)
Tech
Цитата(Zaval @ 14.05.11, 18:25) необходимо зарегистрироваться для просмотра ссылки
Тип реквизита Наименование? (не стОит так реквизиты обзывать)

"Наименование" есть ссылкой СправочникСсылка.Номенклатура_товаров.
Ardi
Текст .ля в студию.
Tech
Процедура Присваивание_ПриИзменении(Элемент)
   СтрокаТабличнойЧасти = ЭлементыФормы.ТабличнаяЧасть1.ТекущиеДанные;
   СтрокаТабличнойЧасти.Цена = Справочники.Номенклатура_товаров.Цена;
КонецПроцедуры
Zaval
Какого именно элемента справочника цена Вам нужна?

СтрокаТабличнойЧасти.Цена = СтрокаТабличнойЧасти.Наименование.Цена;


Вот так будет цена номенклатуры из той же строки

А работать, скорее всего, будет это:
СтрокаТабличнойЧасти.Цена.Значение = СтрокаТабличнойЧасти.Наименование.Цена;
Vofka
СтрокаТабличнойЧасти.Цена = СтрокаТабличнойЧасти.Номенклатура_товаров.Цена;
Batchir
СтрокаТабличнойЧасти.Цена = Справочники.Номенклатура_товаров.Цена;

Не соответствует ни одному из предложенных вариантов и является полным бредом. Ничего и не должно работать
Flexy
Как-то так happy.gif
Процедура Присваивание_ПриИзменении(Элемент)
   СтрокаТабличнойЧасти = ЭлементыФормы.ТабличнаяЧасть1.ТекущиеДанные;
   СтрокаТабличнойЧасти.Цена = СтрокаТабличнойЧасти.Номенклатура_товаров.Цена;
КонецПроцедуры
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.