Всем привет!
Я новичек в 1С. Пишу себе конфу на 8.2.
Есть справочник номенклатура с реквизитами: Наименование, единицы измерения.
Есть документ - Приход товара с табличной частью.
Как сделать, чтоб при выборе в табличной части какойто номенклатуры, единицы измерения подставлялись автоматически (из справочника Номенклатура).
Заранее благодарен.
Ну это ж в каждом учебнике есть, читайте книги.
ЕдиницаИзмерения = Номенклатура.ЕдиницаИзмерения
Я думаю надо сделать обработчик события
Процедура НоменалктураПриИзменении()
...
Вот такпытаюсь:
&НаКлиенте
Процедура СписокТоваровНоменклатураПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.СписокТоваров.ТекущиеДанные;
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.ИзвлечЦену(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура, Объект.ВидЦены);
СтрокаТабличнойЧасти.ЕдиницыИзмерения = Номенклатура.ЕдиницыИзмерения;
КонецПроцедуры
Прежде чем работать со справочником его надо создать.
Т.е.
Спр = СоздатьОбъект("Справочник.Номенклатура");
&НаКлиенте
Процедура ПриИзмененииНоменклатуры(.....)
.......
ЗадатьИзменитьЕдиницуНаСервере();
.......
КонецПроцедуры
&НаСервере
Процедура ЗадатьИзменитьЕдиницуНаСервере()
Номенклатура.Единицы......
КонецПроцедуры
&НаКлиенте
Процедура СписокТоваровНоменклатураПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.СписокТоваров.ТекущиеДанные;
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.ИзвлечЦену(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура, Объект.ВидЦены);
СтрокаТабличнойЧасти.ЕдиницыИзмерения = СтрокаТабличнойЧасти.Номенклатура.ЕдиницыИзмерения;
КонецПроцедуры
Не думаю что в 8.2 прокатит такая схема.
На 8.1 (8.0) наверное да.
Форма не имеет прямого доступа к данным.
Еще вроде как можно покурить:
ДанныеФормыВЗначение(<Объект>, <Тип>)
ЗначениеВДанныеФормы(<Значение>, <Объект>)
&НаКлиенте
Процедура СписокТоваровНоменклатураПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.СписокТоваров.ТекущиеДанные;
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.ИзвлечЦену(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура, Объект.ВидЦены);
СтрокаТабличнойЧасти.ЕдиницыИзмерения = СтрокаТабличнойЧасти.Номенклатура.ЕдиницыИзмерения;
КонецПроцедуры
&НаКлиенте
Процедура СписокТоваровНоменклатураПриИзменении(Элемент)
ДанныеСтруктура = новый Структура(Цена,ЕдиницаИзмерения);
СтрокаТабличнойЧасти = Элементы.СписокТоваров.ТекущиеДанные;
РаботаСоСправочниками.ИзвлечьЦенуИНдиницеИзмерения(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура, Объект.ВидЦены, ДанныеСтруктура);
СтрокаТабличнойЧасти.Цена = ДанныеСтруктура.Цена;
СтрокаТабличнойЧасти.ЕдиницыИзмерения = ДанныеСтруктура.ЕдиницыИзмерения;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ИзвлечьЦенуИНдиницеИзмерения(Дата,Товар,ВидЦена,Данные)
// получить цену и единицу измерения и засунуть их в струтктру Данные
КонецПроцедуры
Всем спасибо за то, что отозвались. Сегодня утром, перечитав все посты, - меня осенило!!! Все получилось вот так:
&НаКлиенте
Процедура СписокТоваровНоменклатураПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.СписокТоваров.ТекущиеДанные;
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.ИзвлечЦену(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура, Объект.ВидЦены);
КонецПроцедуры
&НаКлиенте
Процедура СписокТоваровНоменклатураОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтрокаТабличнойЧасти = Элементы.СписокТоваров.ТекущиеДанные;
СтрокаТабличнойЧасти.ЕдиницыИзмерения = ИзвлечЕдиницыИзмерения(ВыбранноеЗначение);
КонецПроцедуры
//Функция - извлечение единицы измерения из справочника
&НаСервереБезКонтекста
Функция ИзвлечЕдиницыИзмерения(ВыбранноеЗначение)
Возврат ВыбранноеЗначение.ЕдиницыИзмерения;
КонецФункции
Я бы сделал так:
&НаСервереБезКонтекста
Функция ПолучитьЕдиницуИзмерения(Номенклатура)
Возврат Номенклатура.ЕдиницыИзмерения;
КонецФункции
&НаКлиенте
Процедура СписокТоваровНоменклатураПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.СписокТоваров.ТекущиеДанные;
Если ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура) Тогда
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.ИзвлечЦену(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура, Объект.ВидЦены);
СтрокаТабличнойЧасти.ЕдиницыИзмерения = ПолучитьЕдиницуИзмерения(СтрокаТабличнойЧасти.Номенклатура);
Иначе
СтрокаТабличнойЧасти.Цена = "";
СтрокаТабличнойЧасти.ЕдиницыИзмерения = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьЕдиницуИзмерения(Номенклатура)
Возврат Номенклатура.ЕдиницыИзмерения;
КонецФункции
&НаКлиенте
Процедура СписокТоваровНоменклатураПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.СписокТоваров.ТекущиеДанные;
Если ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура) Тогда
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.ИзвлечЦену(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура, Объект.ВидЦены);
СтрокаТабличнойЧасти.ЕдиницыИзмерения = ПолучитьЕдиницуИзмерения(СтрокаТабличнойЧасти.Номенклатура);
Иначе
СтрокаТабличнойЧасти.Цена = "";
СтрокаТабличнойЧасти.ЕдиницыИзмерения = Неопределено;
КонецЕсли;
КонецПроцедуры
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua