|
v7: Ошибка записи в регистр (или ошибка взятия информации с регистра, хз) | ☑ | ||
---|---|---|---|---|
0
Bri
29.12.15
✎
22:51
|
Платформа 1с:Предприятие 7.7 версии (7.70.027)
О великие 1с-умы. Подскажите студенту которого замучила проблема в его курсовой по 1с:Предприятие (версии 7.7) и да получит каждый ответивший +10 к карме. А проблема заключается в том... что я уже 4й день не понимаю в чем проблема. Перерыл тонны материалов и делая все с точностью по инструкциям ничего не выходит. в общем, суть такова: Нужно конфигурировать все для работы Ювелирного магазина. Есть стандартная связка Документ-Регистр-(через запрос)Отчет, в таблице отчета строки не выводятся и я понять не могу почему. В связи с этим максимально подробно распишу все, что сделано, и прошу, найдите эту ошибку, у меня скоро дедлайн: у меня есть справочник "Изделие", в котором записана инфа о изделии (Название, стоимость, материал, и т.д.) Есть [b][u]Документ "ПродажаТовара"[/u][/b], который создан для записи в журнал документа информации о продаже товара, теперь о нем подробнее: Реквизиты шапки: КоличествоИзделия, Изделие (объект справочник.Издение) Настройка: [img]http://i.imgur.com/TGkTHYe.png[/img] Модуль Документа: [code]Процедура ОбработкаПроведения() Если КоличествоИзделия = 0 Тогда Предупреждение("Не указано количество"); НеПроводитьДокумент(); КонецЕсли; Если Изделие.Выбран() = 0 тогда Предупреждение("Не выбрано изделие"); НеПроводитьДокумент(); КонецЕсли; Регистр.ПродаваемыйТовар.Изделие = Изделие; Регистр.ПродаваемыйТовар.КолПрод = КоличествоИзделия; Регистр.ПродаваемыйТовар.Прибыль = Изделие.ЦенаП*КоличествоИзделия; Регистр.ПродаваемыйТовар.ДвижениеПриходВыполнить(); КонецПроцедуры [/code] Здесь, Изделие.ЦенаП - цена продажи [b][u]Регистр.ПродаваемыйТовар[/u][/b] [img]http://i.imgur.com/83HHNPC.png[/img] [u][b]Отчет.ПродавТов[/b][/u] вывод информации о проданных товарах Форма [img]http://i.imgur.com/Bxe02hb.png[/img] Модуль [code] // Процедура генерации запроса Сформировать. // Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбДата по ВыбДатаКон; |Издел = Регистр.ПродаваемыйТовар.Изделие; |Приб = Регистр.ПродаваемыйТовар.Прибыль; |Кол = Регистр.ПродаваемыйТовар.КолПрод; |Группировка Издел; |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица(""); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Шапка"); Состояние("Заполнение выходной таблицы..."); Пока Запрос.Группировка(1) = 1 Цикл Таб.ВывестиСекцию("Строка"); КонецЦикла; Таб.Опции(0); // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать(""); КонецПроцедуры [/code] Таблица [img]http://i.imgur.com/BIzs5Wy.png[/img] И все было бы хорошо вот только когда я формирую отчет ничего не выводиться [img]http://i.imgur.com/l2jO8TU.png[/img] Хотя в журнале информация есть [img]http://i.imgur.com/9mrglYk.png[/img] Пройдя по коду в отладчике стало ясно что "Запрос.Группировка(1)" возвращает ноль, в цикл не входится, а значит информация в регистр не была записана (или записана коряво, или групировка не проходит). не могу понять в чем проблема. Помогите плиз, а то скоро курсак таки и сдавать надо. |
|||
1
HawkEye
29.12.15
✎
22:58
|
на проведенном документе правой кнопкой мыши - выбираем движения документов - убеждаемся что движения есть
|
|||
2
mehfk
29.12.15
✎
23:01
|
Предупреждение в обработке проведение есть быдлокод.
|
|||
3
mehfk
29.12.15
✎
23:02
|
Кидай MD
|
|||
4
Zhuravlik
29.12.15
✎
23:03
|
Курсовая на клюшках?)) Жесть))
|
|||
5
Zhuravlik
29.12.15
✎
23:07
|
(0) В твоем запросе функций нет. Насколько помню клюшки, без них - не взлетит. Помню КонОст вроде, но тут я так понимаю нужны обороты?
|
|||
6
Zhuravlik
29.12.15
✎
23:11
|
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать) |Период с ВыбДата по ВыбДатаКон; |Издел = Регистр.ПродаваемыйТовар.Изделие; |Приб = Регистр.ПродаваемыйТовар.Прибыль; |Кол = Регистр.ПродаваемыйТовар.КолПрод; |Группировка Издел; |Функция КолТовара = Сумма(Кол); |"//}}ЗАПРОС ; // Если Как-то так. |
|||
7
Chameleon1980
29.12.15
✎
23:21
|
на (1) ответьте
|
|||
8
Bri
29.12.15
✎
23:29
|
(5) Остатки же. Нужен просто перечень того что продали. Возврат товара в курсаче даже рассматриваться не будет.
Сейчас добавлю функцию данную (6). (1) (7) Походу реально быдлкод какой то вышел, но движение, хоть корявое, но есть. [img]http://i.imgur.com/JFMJZ7I.png[/img] |
|||
9
Bri
29.12.15
✎
23:30
|
||||
10
Злопчинский
29.12.15
✎
23:36
|
В запросе к регистру должна быть определена функция
Которая возвращает ненулевое значение Тогда в результатах группировки запроса будут итоги каковыми являются значения функции запроса |
|||
11
HawkEye
29.12.15
✎
23:39
|
(8) функцию добавь - будет показывать...
так-то, чтобы научиться надо читать, а не писать |
|||
12
Bri
29.12.15
✎
23:43
|
Ребята, вы просто прелесть, псе добавления строк с функциями, а именно
" |Функция КолТовара = Сумма(Кол); |Функция ОстаткиКол = КонОст(Кол); " все отображается. Но осталась последняя проблемма-быдлокод при записи. Как я понял, обращаться напрямую к полю справочника нельзя (Изделие.ЦенаП)? http://imgur.com/ZhHByB2 |
|||
13
Злопчинский
30.12.15
✎
00:00
|
Можно
|
|||
14
Злопчинский
30.12.15
✎
00:01
|
оперативно давай сюда ид и пароль на тимвьювер, подключусь, "пригладим" твой "быдлокод". Предложение действует 10 мин.
|
|||
15
Злопчинский
30.12.15
✎
00:08
|
Концептуальная ошибка - под регистрацию продаж/прибыли заводить регистр остатков. Это оправдано только в том случае, если ежепериодно будет производиться некое "списание" накопленной прибыли (типа "выплата прибыли"). Правильнее - регистр оборотов.
|
|||
16
Bri
30.12.15
✎
00:17
|
(14) я в нем разбираться буду дольше, в общем, спасибо тебе, и всем кто откликнулся. Остальное, учитывая мою прошлую мозготряску с лабораторными с++ и с#, исправить логические ошибки в коде такого рода -проще простого.
(15) Это не регистрация продаж\прибыли, а что то вроде статистики продаваемости товаров. Потом будет еще отчет рекомендаций проведения акций на базе этого. |
|||
17
Злопчинский
30.12.15
✎
00:21
|
Если КоличествоИзделия = 0 Тогда
Предупреждение("Не указано количество"); НеПроводитьДокумент(); КонецЕсли; Если Изделие.Выбран() = 0 тогда Предупреждение("Не выбрано изделие"); НеПроводитьДокумент(); КонецЕсли; Предупреждение - заменить на Сообщить При начале процедуры ОбработкаПроведения() - начинается транзакция, в ней сразу блокируется/захватывается как минимум общий журнал документов - и все. пока у тебя на экране висит Предупреждение, а оператор ушел покурить или потрахать в подсобке сисадминшу - все остальные курят бамбук с невозможностью ни завести новый документ, не изменить старый... Что делается в НеПроводитьДокумент(); - не совсем понятно предположим оптимистично что в ней отрабатывает СтатусВозврата(0) спрашивается - если споткнулисб на первом если - зачем выполнять второе если дальше по коду если документ все равно не проведется - где возврат из проведения? Итгого: в наличиии 1 архитектурная ошибка (регистр), 1 технологическая ошибка (предупреждение в транзакции) и очень грязный код. Резюме: пока что - если бы я был преподом - ты куросвую не сдал бы. и ваще - это где сейчас ЕЩЁ 77 изучают в части даже сдачи по ней курсовых? это же мертвая система... |
|||
18
Злопчинский
30.12.15
✎
00:23
|
(16) Тем более "Это не регистрация продаж\прибыли, а что то вроде статистики продаваемости товаров. Потом будет еще отчет рекомендаций проведения акций на базе этого." - под регистрацию СТАТИСТИКИ - то есть накопления данных в "одну" сторону использовать регистр остатков - тем более ошибка. КОЛ!
|
|||
19
Злопчинский
30.12.15
✎
00:24
|
(16) "исправить логические ошибки в коде такого рода -проще простого."
- ты заблуждаешься. у тебя вообще в принципе неверно построено. |
|||
20
Злопчинский
30.12.15
✎
00:25
|
+ непонимание.
" Нужен просто перечень того что продали" - перечень чего? в каких разрезах? потому что под твое "определение" подходит ответ "продали кучу всего на сумму столько-то". |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |