Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
23 мая 2024, 09:36

Помогите новичку в 1с

Автор jura4, 19 мар 2018, 16:12

0 Пользователей и 1 гость просматривают эту тему.

jura4

Доброго времени суток Всем участникам форума!

Стоит задача добавить две колонки в документ реализация и услуги. Конфигурация Бухгалтерия для Кыргызстана, редакция 1.7, 1С:Предприятие 8.2.

Что было сделано добавлено две колонки в Форму документа, в табличную часть прописаны Вес и коробки, т.е. те колонки которые были добавлены в форму. Цель этой доработки следующая, вес должен браться из номенклатуры и умножаться на количество коробок результат должен попадать в колонку количество.

В модуле прописал следующее



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

Но при выборе номенклатуры вылетает ошибка:

{Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента.Форма(1425)}: Поле объекта не обнаружено (Вес)СтрокаТабличнойЧасти = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Вес;

Где моя большая и глупая ошибка?

Прошу помощи, так как только начинаю изучать мир 1С.

alexandr_ll

Цитата: jura4 от 19 мар 2018, 16:12СтрокаТабличнойЧасти = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Вес;
Наверное так
СтрокаТабличнойЧасти.Вес = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Вес;



AIFrame

Учитывая, что это ТабличнаяЧасть как реквизит документа (я почти уверен), просто написать СтрокаТабличнойЧасти.Вес вообще не взлетит, потому что нет таких данных у ТЧ.
Делается это через ОформлениеСтроки, при выводе или при получении данных. Разница в том, что  ПриВыводеСтроки отрабатывает чаще и в методе есть указание на ОформлениеСтроки, ПриПолученииДанных вызывается реже и обрабатывать там надо коллекцию ОформленийСтрок (в цикле проитерировать можно).
А к реквизитам надо через ДанныеСтроки уже обращаться, так что кроме ПриВыводеСтроки тут вариантов нет.
Если ЗначениеЗаполнено(ДанныеСтроки.ЕдиницаИзмерения) Тогда
                Вес = ДанныеСтроки.ЕдиницаИзмерения.Вес;
                Коробки = Число(ОформлениеСтроки.Ячейки.Коробки.Текст);
ОформлениеСтроки.Ячейки.Вес.УстановитьТекст(Вес);
ДанныеСтроки.Количество = Число(Вес * Коробки);
КонецЕсли;



jura4

Цитата: AIFrame от 20 мар 2018, 14:43
Учитывая, что это ТабличнаяЧасть как реквизит документа (я почти уверен), просто написать СтрокаТабличнойЧасти.Вес вообще не взлетит, потому что нет таких данных у ТЧ.
Делается это через ОформлениеСтроки, при выводе или при получении данных. Разница в том, что  ПриВыводеСтроки отрабатывает чаще и в методе есть указание на ОформлениеСтроки, ПриПолученииДанных вызывается реже и обрабатывать там надо коллекцию ОформленийСтрок (в цикле проитерировать можно).
А к реквизитам надо через ДанныеСтроки уже обращаться, так что кроме ПриВыводеСтроки тут вариантов нет.
Если ЗначениеЗаполнено(ДанныеСтроки.ЕдиницаИзмерения) Тогда
                Вес = ДанныеСтроки.ЕдиницаИзмерения.Вес;
                Коробки = Число(ОформлениеСтроки.Ячейки.Коробки.Текст);
ОформлениеСтроки.Ячейки.Вес.УстановитьТекст(Вес);
ДанныеСтроки.Количество = Число(Вес * Коробки);
КонецЕсли;




Спасибо большое. Будем пробовать разбираться дальше.

AIFrame

Кстати, если ты коробки добавил не как реквизит ТЧ документа, а тупо колонку на форме создал и надеешься, что будешь в нее что-то писать - у меня для тебя плохие новости. На обычных формах там надо серьезный костыль городить для этого.

jura4

Цитата: AIFrame от 20 мар 2018, 21:07
Кстати, если ты коробки добавил не как реквизит ТЧ документа, а тупо колонку на форме создал и надеешься, что будешь в нее что-то писать - у меня для тебя плохие новости. На обычных формах там надо серьезный костыль городить для этого.

Колонка "Коробки" создана как реквизит.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск