Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как вытянуть данные из справочника в документе          
pashik Подменю пользователя
сообщение 21.02.11, 10:02
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 12
Спасибо сказали: 0 раз
Рейтинг: 0

Всем привет!
Я новичек в 1С. Пишу себе конфу на 8.2.
Есть справочник номенклатура с реквизитами: Наименование, единицы измерения.
Есть документ - Приход товара с табличной частью.
Как сделать, чтоб при выборе в табличной части какойто номенклатуры, единицы измерения подставлялись автоматически (из справочника Номенклатура).
Заранее благодарен.

Vofka Подменю пользователя
сообщение 21.02.11, 10:15
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Ну это ж в каждом учебнике есть, читайте книги.
ЕдиницаИзмерения = Номенклатура.ЕдиницаИзмерения

Flexy Подменю пользователя
сообщение 21.02.11, 10:20
Сообщение #3

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Я думаю надо сделать обработчик события
Процедура НоменалктураПриИзменении()
...

И дальше уже подставлять алгоритм подставления единиц.

pashik Подменю пользователя
сообщение 21.02.11, 11:29
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 12
Спасибо сказали: 0 раз
Рейтинг: 0

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


Выдает ошибку: "{Документ.ЗаказТоваров.Форма.ФормаДокумента.Форма(8,42)}: Переменная не определена (Номенклатура)
СтрокаТабличнойЧасти.ЕдиницыИзмерения = <<?>>Номенклатура.ЕдиницыИзмерения; (Проверка: Тонкий клиент)"

тоесть где фукции процедуры писать я в курсе.
не могу понять откуда вытащить ссылку на выбраный с справочнике объект.

Flexy Подменю пользователя
сообщение 21.02.11, 11:32
Сообщение #5

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Прежде чем работать со справочником его надо создать.
Т.е.
Спр = СоздатьОбъект("Справочник.Номенклатура");

И дальше уже манипулировать различными его элементами с помощью методов.
С 8.2 я практически не работал.Возможно я ошибаюсь.Но попробуйте так. wink.gif

DartRomanius Подменю пользователя
сообщение 21.02.11, 11:37
Сообщение #6

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Цитата(pashik @ 21.02.11, 12:29) *
Вот такпытаюсь:
&НаКлиенте
Процедура СписокТоваровНоменклатураПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.СписокТоваров.ТекущиеДанные;
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.ИзвлечЦену(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура, Объект.ВидЦены);


СтрокаТабличнойЧасти.ЕдиницыИзмерения = Номенклатура.ЕдиницыИзмерения;

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

Выдает ошибку: "{Документ.ЗаказТоваров.Форма.ФормаДокумента.Форма(8,42)}: Переменная не определена (Номенклатура)
СтрокаТабличнойЧасти.ЕдиницыИзмерения = <<?>>Номенклатура.ЕдиницыИзмерения; (Проверка: Тонкий клиент)"

тоесть где фукции процедуры писать я в курсе.
не могу понять откуда вытащить ссылку на выбраный с справочнике объект.



Сходить на сервер за данными.

Что-то типа

&НаКлиенте
Процедура ПриИзмененииНоменклатуры(.....)
.......
    ЗадатьИзменитьЕдиницуНаСервере();
.......
КонецПроцедуры

&НаСервере
Процедура ЗадатьИзменитьЕдиницуНаСервере()
    Номенклатура.Единицы......

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


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

Спасибо сказали: pashik,

Vofka Подменю пользователя
сообщение 21.02.11, 11:57
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

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


Так?

DartRomanius Подменю пользователя
сообщение 21.02.11, 12:02
Сообщение #8

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Не думаю что в 8.2 прокатит такая схема.
На 8.1 (8.0) наверное да.

Форма не имеет прямого доступа к данным.
Еще вроде как можно покурить:
ДанныеФормыВЗначение(<Объект>, <Тип>) 
ЗначениеВДанныеФормы(<Значение>, <Объект>)


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

pashik Подменю пользователя
сообщение 21.02.11, 12:49
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 12
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Vofka @ 21.02.11, 12:57) *
&НаКлиенте
Процедура СписокТоваровНоменклатураПриИзменении(Элемент)
    СтрокаТабличнойЧасти = Элементы.СписокТоваров.ТекущиеДанные;
    СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.ИзвлечЦену(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура, Объект.ВидЦены);
    
    
    СтрокаТабличнойЧасти.ЕдиницыИзмерения = СтрокаТабличнойЧасти.Номенклатура.ЕдиницыИзмерения;
    
КонецПроцедуры


Так?



При выборе объекта выдает ошибку: "Поле объекта не обнаружено: Единицы измерения".

А правильно ли такое обращение - СтрокаТабличнойЧасти.Номенклатура.ЕдиницыИзмерения ?
Здесь Номенклатура - это реквизит табличной части ("СписокТоваров") документа.

torrensen Подменю пользователя
сообщение 22.02.11, 7:49
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 26
Спасибо сказали: 5 раз
Рейтинг: 0

&НаКлиенте
Процедура СписокТоваровНоменклатураПриИзменении(Элемент)
    ДанныеСтруктура = новый Структура(Цена,ЕдиницаИзмерения);

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


&НаСервереБезКонтекста
Процедура ИзвлечьЦенуИНдиницеИзмерения(Дата,Товар,ВидЦена,Данные)
// получить цену и единицу измерения и засунуть их в струтктру Данные
КонецПроцедуры

Спасибо сказали: pashik,

pashik Подменю пользователя
сообщение 22.02.11, 10:13
Сообщение #11

Общительный
**
Группа: Пользователи
Сообщений: 12
Спасибо сказали: 0 раз
Рейтинг: 0

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

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

//Функция - извлечение единицы измерения из справочника
&НаСервереБезКонтекста
Функция ИзвлечЕдиницыИзмерения(ВыбранноеЗначение)
    Возврат ВыбранноеЗначение.ЕдиницыИзмерения;    
КонецФункции

logist Подменю пользователя
сообщение 22.02.11, 14:51
Сообщение #12

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Я бы сделал так:
&НаСервереБезКонтекста
Функция ПолучитьЕдиницуИзмерения(Номенклатура)
             Возврат Номенклатура.ЕдиницыИзмерения;
КонецФункции

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


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: pashik,

torrensen Подменю пользователя
сообщение 23.02.11, 15:33
Сообщение #13

Общительный
**
Группа: Пользователи
Сообщений: 26
Спасибо сказали: 5 раз
Рейтинг: 0

Цитата(logist @ 22.02.11, 15:51) *
Я бы сделал так:
&НаСервереБезКонтекста
Функция ПолучитьЕдиницуИзмерения(Номенклатура)
             Возврат Номенклатура.ЕдиницыИзмерения;
КонецФункции

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



Я бы не стал так делать.
У вас 2 серверных вызова РаботаСоСправочниками.ИзвлечьЦену и ПолучитьЕдиницуИзмерения

В моем варианте выше только 1

Спасибо сказали: logist, pashik,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.04.24, 17:29
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!