Заполнение цены из справочника в документ

1. user1299341 12.12.19 19:27 Сейчас в теме
Здравствуйте, вопрос таков -
Есть расходная накладная, табличная часть которой содержит номенклатуру, количество, цену и сумму. Есть справочник номенклатуры, который содержит цену за одну единицу товара. Номенклатура в табличной части документа ссылается типом данных на этот справочник.
Мне нужно, при выборе элемента номенклатуры в табличной части расходной накладной, автоматически подставлялась цена на него из справочника
По теме из базы знаний
Найденные решения
15. zakidonoff 13.12.19 08:38 Сейчас в теме
(11)
И покажи структуру конфигурации справочника номенклатуры (продукции, товара или как он там называется). По аналогии как в (10)

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

&НаСервереБезКонтекста
Функция ПолучитьЦенуНаСервере(Продукция)
Возврат Продукция.Цена
КонецФункции
Показать
Meaning; Trulimon; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. tolyan_ekb 104 12.12.19 19:36 Сейчас в теме
(1) Что не получается? В событие при изменении поля номенклатура вставить запрос цены и изменять поле с ценой.
3. user1299341 12.12.19 21:30 Сейчас в теме
Я мало знаком с синтаксисом кода и с самой платформой 1С, к сожалению. Я догадался, что нужно написать маленький запрос в обработчик события, но я не знаю, как он будет выглядеть на языке 1С
4. zakidonoff 12.12.19 22:14 Сейчас в теме
(3)
Я догадался, что нужно написать маленький запрос в обработчик события, но я не знаю, как он будет выглядеть на языке 1С

Дело в том, что не зная ни конфигурации, ни даже вид формы, в которой должно происходить событие, как должен выглядеть этот код, никто другой так же не сможет сказать.
Максимум, чем смогут вам помочь - это общими советами. Но без базовых знаний синтаксиса эти советы будут совершенно бесполезны.
5. user1299341 12.12.19 22:41 Сейчас в теме
(4) Да, вы правы. Не прикрепить скриншоты было ошибкой, надеюсь, это поможет
Прикрепленные файлы:
6. zakidonoff 12.12.19 23:00 Сейчас в теме
(5)
ТекДанные = Объект.Товары.НайтиПоИдентификатору(Элементы.Товары.ТекущаяСтрока);
Если ЗначениеЗаполнено(ТекДанные.Номенклатура) Тогда
	ТекДанные.Цена = ТекДанные.Номенклатура.Цена;
КонецЕсли;

Это если у вас цена и вправду в справочнике товаров хранится.
Хотя как правило, это происходит в отдельном регистре.
7. user1299341 12.12.19 23:11 Сейчас в теме
(6)
ТекДанные = Объект.Продукция.НайтиПоИдентификатору(Элементы.Продукция.ТекущаяСтрока);
Если ЗначениеЗаполнено(ТекДанные.Номенклатура) Тогда
ТекДанные.Цена = ТекДанные.Номенклатура.Цена;
КонецЕсли;

Изменил в запросе Товары на Продукция, потому что мой справочник называется так, но получается ошибка
Прикрепленные файлы:
8. independ 1520 12.12.19 23:18 Сейчас в теме
(7)
&НаКлиенте
Процедура НоменклатураПродукцияПриИзменении(Элемент);
    ТекущиеДанные=Элементы.Продукция.ТекущиеДанные;
    ТекущиеДанные.Цена=ПолучитьЦенуНаСервере(ТекущиеДанные.Номенклатура);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьЦенуНаСервере(Номенклатура)
    Возврат Номенклатура.Цена
КонецФункции
Показать
Trulimon; +1 Ответить
9. zakidonoff 12.12.19 23:29 Сейчас в теме
(7) Значит, всё-таки не "продукция" он называется.
Или таблицы из формы вообще нет в объекте.
Можно заменить на
ТекДанные = Элементы.Продукция.ТекущиеДанные;
В этом случае ссылка строки будет получена непосредственно с самой формы и в ней таблица "продукция" точно будет
10. user1299341 12.12.19 23:34 Сейчас в теме
(9) Ошибка та же в любом из случаев, но вот же дерево конфигурации, я не понимаю, что я делаю не так
Прикрепленные файлы:
11. zakidonoff 12.12.19 23:39 Сейчас в теме
(10) хех -)
Таблица называется "Номенклатура"
А реквизит товара "Продукция".
Т.о. должно быть
ТекДанные = Объект.Номенклатура.НайтиПоИдентификатору(Элементы.Номенклатура.ТекущаяСтрока);
Если ЗначениеЗаполнено(ТекДанные.Продукция) Тогда
ТекДанные.Цена = ТекДанные.Продукция.Цена;
КонецЕсли;


Ну, или как в (8)

ТекущиеДанные.Цена=ПолучитьЦенуНаСервере(ТекДанные.Продукция);
&НаСервереБезКонтекста
Функция ПолучитьЦенуНаСервере(Продукция)
    Возврат Продукция.Цена
КонецФункции


Не помню точно, заберётся цена на клиенте или нет...
12. user1299341 13.12.19 00:15 Сейчас в теме
(11) Мне кажется, я умираю(
Теперь ошибка на третьей строке(проверил дебаггером)
Прикрепленные файлы:
15. zakidonoff 13.12.19 08:38 Сейчас в теме
(11)
И покажи структуру конфигурации справочника номенклатуры (продукции, товара или как он там называется). По аналогии как в (10)

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

&НаСервереБезКонтекста
Функция ПолучитьЦенуНаСервере(Продукция)
Возврат Продукция.Цена
КонецФункции
Показать
Meaning; Trulimon; +2 Ответить
16. user1299341 13.12.19 13:39 Сейчас в теме
(15) Огромное спасибо, это сработало!
13. Ruslan2011 13.12.19 06:52 Сейчас в теме
а что за конфа "стулья" - может вы сами создаете конфигурацию ?
раскройте наименование о программе.
14. Ruslan2011 13.12.19 06:58 Сейчас в теме
это учебная версия.
вы откуда делали движения в конфигурации ?

или по какому учебнику..

есть видео курс , там преподаватель просит создавать объекты
с таким же названием , что он , чтобы легче было искать ошибки

но находятся умники , чтобы не как у всех .
а если плохо знаешь теорию , то лучше делать , как говорят

вы учитесь или хотите научиться ?
откуда конфигурация и почему вам так захотелось сделать ?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот