|
пример из книги Радченко! 🠗 (Волшебник 12.11.2019 08:21) | ☑ | ||
---|---|---|---|---|
0
programmerDeCo
11.11.19
✎
21:44
|
Ребята остановился на 14 занятии (Автоматический расчет стоимости) книги Радченко.
Процедура ОбработкаПроведения(Отказ, Режим) Движения.ОстаткиМатериалов.Записывать = Истина; Движения.СтоимостьМатериалов.Записывать = Истина; Движения.Продажи.Записывать = Истина; // Создать менеджер временных таблиц МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос = Новый Запрос; // Укажем, какой менеджер временных таблиц использует этот запрос Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | ОказаниеУслугПереченьНоменклатуры.Номенклатура КАК Номенклатура, | ОказаниеУслугПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры, | СУММА(ОказаниеУслугПереченьНоменклатуры.Количество) КАК КоличествоВДокументе, | СУММА(ОказаниеУслугПереченьНоменклатуры.Сумма) КАК СуммаВДокументе |ПОМЕСТИТЬ НоменклатураДокумента |ИЗ | Документ.ОказаниеУслуг.ПереченьНоменклатуры КАК ОказаниеУслугПереченьНоменклатуры |ГДЕ | ОказаниеУслугПереченьНоменклатуры.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | ОказаниеУслугПереченьНоменклатуры.Номенклатура, | ОказаниеУслугПереченьНоменклатуры.Номенклатура.ВидНоменклатуры"; Запрос.УстановитьПараметр("Ссылка", Ссылка); РезультатЗапроса = Запрос.Выполнить(); Запрос2 = Новый Запрос; Запрос2.МенеджерВременныхТаблиц = МенеджерВТ; Запрос2.Текст = "ВЫБРАТЬ | НоменклатураДокумента.Номенклатура КАК Номенклатура, | НоменклатураДокумента.ВидНоменклатура КАК ВидНоменклатура, | НоменклатураДокумента.КоличествоВДокументе КАК КоличествоВДокументе, | НоменклатураДокумента.СуммаВДокументе КАК СуммаВДокументе, | ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость, | ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество |ИЗ | НоменклатураДокумента КАК НоменклатураДокумента | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки( | , | Материал В | (ВЫБРАТЬ | НоменклатураДокумента.Номенклатура | ИЗ | НоменклатураДокумента)) КАК СтоимостьМатериаловОстатки | ПО НоменклатураДокумента.Номенклатура = СтоимостьМатериаловОстатки.Материал | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки( | , | Материал В | (ВЫБРАТЬ | НоменклатураДокумента.Номенклатура | ИЗ | НоменклатураДокумента)) КАК ОстаткиМатериаловОстатки | ПО НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.Материал"; // Запишем пустые наборы записей, чтобы читать остатки без учета данных в документе Движения.СтоимостьМатериалов.Записать(); Движения.ОстаткиМатериалов.Записать(); РезультатЗапроса = Запрос2.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда СтоимостьМатериалов = 0; Иначе СтоимостьМатериалов = ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество; КонецЕсли; Если ВыборкаДетальныеЗаписи.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда // регистр ОстаткиМатериалов Расход Движение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура; Движение.Склад = Склад; Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе; // регистр СтоимостьМатериалов Расход Движение = Движения.СтоимостьМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура; Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе * ВыборкаДетальныеЗаписи.СтоимостьМатериала; КонецЕсли; //регистр Продажи Движение = Движения.Продажи.Добавить(); Движение.Период = Дата; Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура; Движение.Клиент = Клиент; Движение.Мастер = Мастер; Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе; Движение.Выручка = ВыборкаДетальныеЗаписи.СуммаВДокументе; Движение.Стоимость = ВыборкаДетальныеЗаписи.СтоимостьМатериала * ВыборкаДетальныеЗаписи.КоличествоВДокументе; КонецЦикла; КонецПроцедуры Мне нужно провести документы "ОКАЗАНИЕ УСЛУГ", но выдает: Ошибка при выполнении обработчика - 'ОбработкаПроведения' по причине: {Документ.ОказаниеУслуг.МодульОбъекта(68)}: Ошибка при вызове метода контекста (Выполнить) РезультатЗапроса = Запрос2.Выполнить(); по причине: {(3, 24)}: Поле не найдено "НоменклатураДокумента.ВидНоменклатура" НоменклатураДокумента.<<?>>ВидНоменклатура КАК ВидНоменклатура, Проверка модуля ошибок не выдает, подскажите чего неправильно сделал? Буду очень признателен!!! |
|||
1
Радим1987
11.11.19
✎
21:52
|
НоменклатураДокумента.ВидНоменклатура →НоменклатураДокумента.Номенклатура.ВидНоменклатура
|
|||
2
BeerHelpsMeWin
11.11.19
✎
21:53
|
ВидНоменклатуры , а не ВидНоменклатура?
|
|||
3
programmerDeCo
11.11.19
✎
22:00
|
(1) это в каком месте?
|
|||
4
Радим1987
11.11.19
✎
22:07
|
(2) Он был прав НЕ ВидНоменклатура а ВидНоменклатуры
|
|||
5
Радим1987
11.11.19
✎
22:08
|
Запрос2.Текст = "ВЫБРАТЬ
| НоменклатураДокумента.Номенклатура КАК Номенклатура, | НоменклатураДокумента.ВидНоменклатурыКАК ВидНоменклатуры, | НоменклатураДокумента.КоличествоВДокументе КАК КоличествоВДокументе, | НоменклатураДокумента.СуммаВДокументе КАК СуммаВДокументе, | ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость, | ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество |
|||
6
Красный рассвет
11.11.19
✎
22:08
|
(3) Это значит самому кодить надо, а не копипастить с диска.
|
|||
7
Радим1987
11.11.19
✎
22:10
|
(6) это точно, лучше начинать работать с консолью запросов
|
|||
8
programmerDeCo
11.11.19
✎
22:14
|
(5) Помогло, но теперь ругается на СТОИМОСТЬ МАТЕРИАЛА
Ошибка при выполнении обработчика - 'ОбработкаПроведения' по причине: {Документ.ОказаниеУслуг.МодульОбъекта(105)}: Поле объекта не обнаружено (СтоимостьМатериала) Движение.Стоимость = ВыборкаДетальныеЗаписи.СтоимостьМатериала * ВыборкаДетальныеЗаписи.КоличествоВДокументе; |
|||
9
Радим1987
11.11.19
✎
22:18
|
(8) Все мы были когда то молодыми научись пользоваться отладкой, половину проблем сам решишь. А это Поле объекта не обнаружено (СтоимостьМатериала) означает что нет такого поля, с таким наименованием "СтоимостьМатериала".
|
|||
10
programmerDeCo
11.11.19
✎
22:19
|
Все, разобрался, всех благодарю!
Красный рассвет я обязательно к тебе прислушаюсь ;) |
|||
11
programmerDeCo
11.11.19
✎
22:20
|
(9) Радим а может посоветуешь какие видеоуроки, где хорошо объясняют работу с отладкой?
|
|||
12
Радим1987
11.11.19
✎
22:25
|
(11) таких наверное нету, лично я научился методом тыка каждый шаг смотрел отладкой
|
|||
13
Chameleon1980
12.11.19
✎
04:24
|
Ндаа. Просят инструкцию к дебагу.
Ужснах |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |