Здравствуйте!
У меня в РасходнойНакладной есть реквизит ПриВыд с типом Справочник.Номенклатура и реквизит Ак с типом Число.
Из єтой РасходнойНакладной я создаю новую РасходнуюНакладную.
В модуле формы прописан код создания новой расходной накладной через СоздатьОбъект. Название объекта Акс.
Мне нужно, чтобы в табличной части нового документа программно прописывался товар ПриВыд в количестве Ак.
Привожу кусок кода
Акс.НоваяСтрока();
Акс.Товар=ПриВыд;
Акс.Количество=Ак;
...........................................................
Акс.Записать();
ZUBR @ Сегодня, 1:43
,
Добрый день! Для остальных реквизитов - прописать эти процедуры изменения т.е. при изменении ПриВыд и т.д. должна отрабатывать процедура
denis84 @ Сегодня, 8:47
,
Т. е. на реквизит ПриВыд назначить процедуру изменения остальных реквизитов.
denis84 @ Сегодня, 9:04
,
Процедура ПриИзмПривыд()
Акс.цена = товар.цена;
Акс.Количество=Ак;
Акс. Сумма = Акс.количество*акс.цена;
Акс.Записать();
Что такое надо написать и установить эту процедуру на реквизит привыд
denis84 @ Сегодня, 11:25
,
Спасибо! Но мне хотелось чего-то попроще. Чтобы как через кнопку Подбор. А то там еще надо и единицы прописывать, и, наверное, итог в конце...
Но если по-другому нельзя, буду дублировать...
ZUBR @ Сегодня, 19:52
,
Для подбора есть процедура в глобальном модуле прописана. Можете там посмотреть. Но смысл такой же
denis84 @ Вчера, 11:25
,
все замечательно, только Акс.Цена = Товар.Цена; не работает. Не находит поля агрегатного объекта Цена.
Оно и понятно. Ведь в справочнике номенклатура нет ореквизита Цена. Цены находятся в подчиненном справочнику "Справочник.Номенклатура" справочнике "Справочник. Цены".
Кстати, как-то пытался въехать, как эти два справочника взаимодействуют, но так и не понял.
Подскажите, как получить Акс.Цена?
Акс.цена = товар.цена;
не работает.Добрый день! Если не ошибаюсь, то вроде так:
ЦеныТовара = СоздатьОбъект("Справочник.Цены");
ЦеныТовара.ИспользоватьВладельца(Товар);
ЦеныТовара.ВыбратьЭлементы();
Пока ЦеныТовара.ПолучитьЭлемент() = 1 Цикл
Если ЦеныТовара.ПометкаУдаления() = 1 Тогда
Продолжить;
КонецЕсли;
Результат = ЦеныТовара.ТекущийЭлемент();
КонецЦикла;
После того как заполнили товар в строке, смотрите, что вызывается в форме при изменении товара и копируйте вызов.
Там же будет и заполнение цены.
После того как заполнили цену, количество, смотрите, как в форме вызывается пересчет строки. Копируйте вызов.
denis84 @ Вчера, 10:07
,
Не совсем понятно. Что такое Результат? И что такое Продолжить?
denis84 @ Вчера, 10:07
,
Только что пытался разобраться в глобальном модуле, как там это делается. Не смог. Мало знаний и информации.
ZUBR @ Сегодня, 21:29
,
Если элемент помечен на удаление ищем следующий.
Результат - это и есть цена. Напишите у себя это. Подставьте свои переменные. Проверьте через сообщить(). Это кусок кода из торговли и склад 7.7. Вы спрашивали,как выбрать из подчинённого справочник а цены получить цену товар,вот этот код Вам поможет. Только замените на свои переменные, вот ту строку "продолжить" можете выбросить.
mut @ 18.06.20, 11:45
,
Ваш метод, к сожалению, не действует, потому что код заполнения документа находится в другом документе.
Акс =СоздатьОбъект ("Документ.РасходнаяНакладная");
.................................................................................;
.................................................................................;
Акс.НоваяСтрока();
Акс.Товар=ПриВыд;
глПриИзмененииТовара(Контекст);
Акс.Количество=Ак;
глВыч_суммы_накл(Контекст);
.................................................................................;
глПриИзмененииТовара(Акс);
mut @ Сегодня, 12:27
,
все получилось! Теперь я знаю, что такое "контекст"!
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua