|
Подскажите, пожалуйста, новичку. | ☑ | ||
---|---|---|---|---|
0
petyabal
20.05.17
✎
20:30
|
Прохожу учебный курс по практическому пособию "1с предприятие" 8.3, Радченко. В 12м задании создаются оборотные регистры накопления.
Программа пишет, что в модуле содержатся ошибки. В режиме отладчика выдается ошибка: {Документ.ОказаниеУслуги.МодульОбъекта(29,25)}:Переменная не определена (Мастер) У регистра накопления продажи имеются измерения, в т.ч. и Мастер. У Измерения Мастер тип СправочникСсылка.Сотрудники. Я делал все как по книге. Вот текст процедуры: Процедура ОбработкаПроведения(Отказ, Режим) Движения.ОстаткиМатериалов.Записывать = Истина; Движения.СтоимостьМатериалов.Записывать = Истина; Движения.Продажи.Записывать = Истина; Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл Если ТекСтрокаПереченьНоменклатуры.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда // Регистр ОстаткиМатериалов Расход Движение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура; Движение.Склад = Склад; Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество; // Регистр СтоимостьМатериалов Расход Движение = Движения.СтоимостьМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура; Движение.Стоимость = ТекСтрокаПереченьНоменклатуры.Количество * ТекСтрокаПереченьНоменклатуры.Стоимость; КонецЕсли; // Регистр Продажи Движение = Движения.Продажи.Добавить(); Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаПереченьНоменклатуры.Номенклатура; Движение.Клиент = Клиент; Движение.Мастер = Мастер; Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество; Движение.Выручка = ТекСтрокаПереченьНоменклатуры.Сумма; Движение.Стоимость = ТекСтрокаПереченьНоменклатуры.Стоимость * ТекСтрокаПереченьНоменклатуры.Количество; КонецЦикла; КонецПроцедуры Подскажите пожалуйста в чем ошибка. |
|||
1
PuhUfa
20.05.17
✎
20:32
|
>> Движение.Мастер = Мастер;
Мастер после = это что? |
|||
2
zenik
20.05.17
✎
20:33
|
>Переменная не определена (Мастер)
У документа реквизита такого нет по ходу. |
|||
3
petyabal
20.05.17
✎
20:43
|
Еще раз прошу прощения если буду тупить.
Предыдущая строчка очень на нее похожа и у программы нет никаких к ней претензий. Мастер - это измерение регистра. Реквизиты у регистра Продажи не создавались (по книге):"На закладке Данные создадим измерения регистра: ?? Номенклатура, тип СправочникСсылка.Номенклатура; ?? Клиент, тип СправочникСсылка.Клиенты; ?? Мастер, тип СправочникСсылка.Сотрудники." и "У регистра будет три ресурса: ?? Количество, тип Число, длина 15, точность 3; ?? Выручка, тип Число, длина 15, точность 2; ?? Стоимость, тип Число, длина 15, точность 2.". если удалить строчку с мастером никаких ошибок не выдается. |
|||
4
Wern
20.05.17
✎
22:03
|
"Движение.Мастер" - тут это измерение регистра.
" = Мастер" - а вот на это программа ругается, потому что не знает что такое "Мастер". |
|||
5
petyabal
20.05.17
✎
22:07
|
Спасибо за ответ. но я не понял:
Почему тогда программа знает что такое клиент строчкой ранее? и что сделать чтоб не было ошибки? |
6 7 |
||
6
PiotrLoginov
20.05.17
✎
22:10
|
(5) Так. Надо привыкать, что в программировании все должно подчиняться какой-то логике. Вы не только выполняйте указания из книги, а еще и размышляйте. Иначе из такого следования от одной главы к другой толку будет мало. Опираясь на собственный опыт это Вам говорю.
|
8 |
||
7
PR
20.05.17
✎
22:11
|
(5) У документа реквизит такой есть по ходу.
Нужно изменить конфигурацию. |
|||
8
PiotrLoginov
20.05.17
✎
22:38
|
+ (6) И на этом форуме не ждите, что Вам все разжуют и в рот положат. Могут проигнорировать. Могут и раздразиться на тормоза.
По сабжу: Надо понимать, что движения документа - это запись некоторой информации в регистр, то есть в то место, где информация будет храниться. От других мест хранения информации регистр отличается тем, что всячески подготовлен к быстрому и удобному извлечению из него хранящейся информации. Какую информацию записать в регистр - решает разработчик. В данном случае Радченко предлагает присвоить свойствам новой записи регистра следующие значения: свойству (измерению) Номенклатура - значение свойства ("колонки") текущей строки (ТекСтрокаПереченьНоменклатуры) табличной части документа, называющейся "ПереченьНоменклатуры" под именем "Номенклатура"; свойству (измерению) Клиент - значение свойства (реквизита) документа под именем "Клиент" и т.д. ... Т.е. для "помещения" некоторых данных в новую запись регистра мы берем эти данные из разных "мест" - из каждой строки табличной части документа, собственно из самого документа... Чтобы обратиться (т.е. получить значения свойств) к самому документу в его модуле мы можем использовать переменную Объект, в которую документ уже заботливо "помещен" платформой перед наступлением события "ОбработкаПроведения". К реквизитам документа можно обратиться, написав имя реквизита через точку поле переменной, в которую документ "помещен". Например, к табличной части ПереченьНоменклатуры, мы должны написать: Объект.ПереченьНоменклатуры, а чтобы получить значение реквизита документа "Клиент", мы должны написать: Объект.Клиент Или можно (но только в модуле объекта!) обратиться к реквизитам документа напрямую: ПереченьНоменклатуры , Клиент т.е. переменные Объект.ПереченьНоменклатуры и ПереченьНоменклатуры - это здесь одно и то же! переменные Объект.Клиент и Клиент - это одно и то же! Объект.Мастер и Мастер - это одно и то же! Вопросы? |
10 |
||
9
МихаилМ
20.05.17
✎
22:44
|
||||
10
PiotrLoginov
20.05.17
✎
22:45
|
+ (8) * Объект = ЭтотОбъект
осталось добавить, что конечно, если мы обращаемся к какому-то реквизиту объекта, он должен быть у этого объекта. В данном случае, поскольку платформа "ругается", что переменная Мастер не определена, явно у документа нет реквизита Мастер. Его нужно было добавить. |
|||
11
petyabal
20.05.17
✎
23:08
|
Спасибо большое.Очень подробно объяснили. Все получилось. Вместо Мастер подставил имя реквизита документа.
Т.е. поменял "Движение.Мастер = Мастер;" на "Движение.Мастер = Сотрудники;" |
|||
12
Franchiser
гуру
21.05.17
✎
01:22
|
Создай реквизит Мастер в документе Оказание Услуги
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |