Имя: Пароль:
1C
1С v8
Вывести данные в таб часть документа
, ,
0 Chebyrashka2D
 
24.07.16
15:56
Доброго дня.
Пишу процедуру для вывода данных по проданному количеству товара за прошедший период (90 дней) по контрагенту. выводиться число должно в колонке "Продано". но данные не выводятся почему, подскажите что не так делаю. я начинающий программист, не всё ещё знаю и умею вот код
&НаСервере
Процедура ПолучитьПродано(Пр)Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    ВыручкаИСебестоимостьПродаж.АналитикаУчетаПоПартнерам.Партнер,
|    ВыручкаИСебестоимостьПродаж.Количество
|ИЗ
|    РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК ВыручкаИСебестоимостьПродаж
|ГДЕ
|    ВыручкаИСебестоимостьПродаж.АналитикаУчетаПоПартнерам.Партнер = &Партнер
|    И ВыручкаИСебестоимостьПродаж.Количество = &ТекДата - 129600";
Запрос.УстановитьПараметр("Количество",Пр);



Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
     Продано = Выборка.Количество();
КонецЕсли;

КонецПроцедуры

Процедура КонтрагентыПриИзменении (Элемент)
    
    ТекущаяСтрока = Элементы.Контрагенты.ТекущиеДанные;
    Продано = 0;
    Пр = ТекущаяСтрока.Продано;    
    
КонецПроцедуры
1 PR
 
24.07.16
16:08
Что это вообще?
И почему ты считаешь, что раз ты начинающий программист, то значит можно писать так, как будто ты только что из пещеры вылез и русский для тебя не родной?
2 vicof
 
24.07.16
16:09
Для того, чтобы посмотреть сколько продано существуют отчёты по продажам
3 Chebyrashka2D
 
24.07.16
16:18
сори если что не так по тексту, просто второй день работаю без сна, и с этой задачей всю ночь просидел. голова уже кругом. тут не нужен отчёт, так идёт речь о документе планирования, где менеджер должен сразу видеть сколько было продано клиенту, а не лезть в отчёт.
что за вопрос - Это что вообще?
4 PR
 
24.07.16
16:23
(3) Иди поспи, не ломай нам мозг
5 Андрей Федотов
 
24.07.16
16:31
1. Точно ли отрабатывает запрос?
Что такое "АналитикаУчетаПоПартнерам"? Это табличная часть? Или это реквизит?
Если реквизит - то нужно делать левое соединение а не "стучаться" через две точки
2. Не очень понятно что вы хотите сделать:
а) Не вижу использования процедуры ПолучитьПродано
б) Почему "ПолучитьПродано" - это процедура а не функция? Как вы увидите значение если процедура не вернула параметр (ибо не функция) и не заполнила данные на интерфейсе.
6 Chebyrashka2D
 
24.07.16
16:32
Если я ломаю вам мозг, и вы сами не знаете как помочь, то лучше не пишите.
Где то тут на форуме, читал комент одного пользователя - форум превратился в гнобление начинающих прогеров а не помощь! я с ним полностью согласен!
в место того что бы указать на ошибку где я не прав, вы пишете какую то не обоснованную хрень!
7 Chebyrashka2D
 
24.07.16
16:34
(5) АналитикаУчетаПоПартнерам - это ресурс регистра сведений в УТ 11.2. спасибо за направление, попробую по другому.
8 Chebyrashka2D
 
24.07.16
16:34
(7) ой, не ресурс, измерение!
9 Chameleon1980
 
24.07.16
16:55
а точно в тч нужно?
может отчет по взаиморасчетам по контрагенту из документа?

тогда откройте для себя понятие ВПФ (в гугл)

далее:

запрос переписать.

серверную процедуру переделать в функцию НАСервереБезКонтекста куда придет дата и нужный контрагент и уйдет сумма.

далее курим ВиртуальныеТаблицы регистров накопления (т.к. в данном случае параметры правильней устанавливать для ВИртуальнойТаблицы Остатки)

далее курим Запрос.УстановкаПараметров(ИмяПараметра, Параметр)

как-то так
10 Chameleon1980
 
24.07.16
16:57
+ откройте для себя консоли запросов для отладки запросов в режиме предприятия
+ правильно задавайте вопросы. типа конфигурация такая то etc. (правильно заданный вопрос = половина ответа)

спрашивайте, что не понятно теперь.
11 Mauser
 
24.07.16
17:22
(6) Уух, какой ебака грозный! Стаж 24 дня, а уже у него "форум превратился"
12 Chebyrashka2D
 
24.07.16
18:00
(9) я так понимаю, я не правильно изложил суть!
Есть документ без ВПФ и ПФ! Документ отражает планирование менеджеров по продажам (Контрагент, Проект, Количество) Документ создан с нуля со своими регистрами. Менеджер заполняет документ, в колонке количество таб части, ставит плановое число продаж по контрагенту, ориентируясь на продажи прошедших периодов, что бы не лезть в отчёты, необходимо что бы количество проданного товара отражалось в таб части документа. Конфа УТ 11.2.

По поводу консоли - я не плохо умею с ней работать. Но направление понял, спасибо.
13 Chebyrashka2D
 
24.07.16
18:01
(11) Уважаем, для таких как вы, выше описаны действия. если лов не понимаете. может вам наскальные рисунки подойдут? - .!.
14 Mauser
 
24.07.16
18:08
(13) Этачо за вантуз ты тут нарисовал? Сантехник, да?
15 Mauser
 
24.07.16
18:10
>ВыручкаИСебестоимостьПродаж.Количество = &ТекДата - 129600

>По поводу консоли - я не плохо умею с ней работать.

Эхэхэх...
16 Chebyrashka2D
 
24.07.16
18:26
(15) ну вот с датами прошедших периодов это да, беда) буду ковырять практическое пособие разработчика на эту тему) в любом случае спасибо за направление!
17 Chameleon1980
 
24.07.16
18:50
(16) тут про дату скорее намек - зачем в запросе минусовать если ТекДата - параметр. Снаружи его вычислили и установили.

только что за условие

И ВыручкаИСебестоимостьПродаж.Количество = &ТекДата - 129600

синее с мокрым
18 Chameleon1980
 
24.07.16
18:51
по смыслу если попытаться догадаться
19 Chameleon1980
 
24.07.16
18:52
+ интересно как отработает
И ВыручкаИСебестоимостьПродаж.Количество = &ТекДата - 129600

без экранирования скобками.

х.з. интересно просто
20 Chameleon1980
 
24.07.16
18:56
+ параметры в параметры вирт. таблицы
21 Garykom
 
гуру
24.07.16
19:06
>ВыручкаИСебестоимостьПродаж.Количество = &ТекДата - 129600";

Это определенно нужно в афоризмы...
22 Chameleon1980
 
24.07.16
19:13
(21) +
23 Chebyrashka2D
 
25.07.16
06:46
Товарищи знатоки, каюсь за отсутствие нужных знаний.
переписал процедуру, в документе выбираю контрагента, а программа выдаёт ошибку
{Документ.ПланПродажМенеджеров.Форма.ФормаДокумента.Форма(22)}: Метод объекта не обнаружен (ВсегоКоличество)
     Продано = Выборка.ВсегоКоличество();

Вот код,

&НаСервере
Процедура ПолучитьПродано(Клиент, Продано) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    ПланПродажМенеджеровПланирование.Клиент,
|    СУММА(РеализацияТоваровУслуг.ВсегоКоличество) КАК ВсегоКоличество
|ИЗ
|    Документ.ПланПродажМенеджеров.Планирование КАК ПланПродажМенеджеровПланирование
|        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|        ПО ПланПродажМенеджеровПланирование.Клиент = РеализацияТоваровУслуг.Контрагент
|ГДЕ
|    ПланПродажМенеджеровПланирование.Клиент = &Клиент
|
|СГРУППИРОВАТЬ ПО
|    ПланПродажМенеджеровПланирование.Клиент";
Запрос.УстановитьПараметр("Клиент", Клиент);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
     Продано = Выборка.ВсегоКоличество();
КонецЕсли;
КонецПроцедуры

что я упустил??
24 arccos6pi
 
25.07.16
06:46
(23) Выборка.ВсегоКоличество
25 Рэйв
 
25.07.16
06:50
(23)ГДЕ у тебя избыточное. И так соединение внутренние по равенству идет
26 arccos6pi
 
25.07.16
06:51
а что,клиента сразу из реализации взять нельзя?
27 Рэйв
 
25.07.16
06:51
хотя..так тоже должно отработать
28 Chebyrashka2D
 
25.07.16
06:53
Запрос работает замечательно, в консольке проверено. с процедурой беда(((
29 Горогуля
 
25.07.16
06:54
(28) что, локальную переменную Продано не видно извне?
30 arccos6pi
 
25.07.16
06:54
(28) не замечательно
31 Горогуля
 
25.07.16
06:55
+(29) или ты даже не догадался с результатом запроса что-то сделать
32 Chebyrashka2D
 
25.07.16
06:59
(30) Запрос отрабатывает без нареканий (31) А что с ним делать? нет не догадался. подскажите направление пжлста
33 arccos6pi
 
25.07.16
07:00
(32) ну то что он показывает какие-то цифры,возможно даже пока правильные - не показатель
34 Chebyrashka2D
 
25.07.16
07:01
(33) а что является показателем?
35 Горогуля
 
25.07.16
07:02
(32) открой для себя функции
36 Горогуля
 
25.07.16
07:03
святые угодники! и здесь запрос к документам. расстрелять
37 Chebyrashka2D
 
25.07.16
07:04
Единственный момент, после Выбрать, ещё дописать Различные (Не знаю на сколько это будет корректно), а то по контрагенту не один документ реализации. Дайте конструктивный ответ на ошибку если можно. а носом тыкать без объяснения не вижу нужным.
38 arccos6pi
 
25.07.16
07:04
(34) отмени проведение у пары документов по клиенту и сформируй свой запрос еще раз
39 Chebyrashka2D
 
25.07.16
07:05
(38) для чего?
40 Горогуля
 
25.07.16
07:06
(39) для осмысления разницы результатов
41 Chebyrashka2D
 
25.07.16
07:07
(36) Ну извините, знаний пока маловато. вот набиваю шишки. (40) Результат вывода данных проверен типовыми отчётами.
42 Chebyrashka2D
 
25.07.16
07:08
(41) и дело сейчас даже не в цифрах, не нужно в лес густой лезть. мне бы хоть даже и "Не правильные" данные в документ вывести. потом запрос переделаю так как есть ещё условия.
43 arccos6pi
 
25.07.16
07:09
(41) а где Вы черпаете, ну кроме как тут?
44 arccos6pi
 
25.07.16
07:10
(42) тогда предлагаю без запроса вообще
Продано = 150,95;
45 arccos6pi
 
25.07.16
07:11
+(43) *знания
46 Chebyrashka2D
 
25.07.16
07:14
(43) Практическое пособие разработчика 8.3, Разработка сложных отчетов в 1С:Предприятие 8, 101 совет начинающим разработчикам в системе "1С:Предприятие 8", Язык запросов 1С:Предприятия, Разработка управляемого интерфейса + Интернет
47 arccos6pi
 
25.07.16
07:15
(46) то есть этих книг мало чтобы написать такой запрос?
48 Chebyrashka2D
 
25.07.16
07:16
давайте не будем мериться уровнем знаний и практики, так как у меня всего этого явно меньше чем у вас (иначе бы я не пришёл бы на этот форум). Подскажите вариант решения... Если знаете.
49 arccos6pi
 
25.07.16
07:19
(48) да никто и не собирался мериться знаниями,вопрос в другом
вы в профессию как попали?и зачем?
а решение в (24)
50 Chebyrashka2D
 
25.07.16
07:24
(49) Не понимаю Выборка.ВсегоКоличество. программа на эту строку и ругается. подсказка в чём? можно по подробнее?
51 arccos6pi
 
25.07.16
07:25
(50) ругается на Выборка.ВсегоКоличество()
52 Горогуля
 
25.07.16
07:25
(50) ёмаё, в тексте ошибки подсказка. описания ошибок именно для чтения и осмысления делаются
53 arccos6pi
 
25.07.16
07:26
(52) и эти люди обвиняют нас в гноблении новичков...
54 Горогуля
 
25.07.16
07:27
(46) кстати, почему нет Радченки?
55 arccos6pi
 
25.07.16
07:28
(54) Практическое пособие разработчика 8.3
56 Горогуля
 
25.07.16
07:30
(53) у них всё пройдёт, когда они поймут, что можно читать и думать
57 Chebyrashka2D
 
25.07.16
07:30
(52) вы профи, вам осмысление и понимание ошибок очевидно, так как у вас есть богатый опыт. у меня его нет, я его только набираюсь, и к сожалению, данную ошибку не понимаю. (54) Есть. у меня полный доступ к сайту 1С ИТС. пользуюсь всем что есть. Радченко Пособие разработчика полностью прорешал. знания есть, практики пока маловато((
58 Горогуля
 
25.07.16
07:33
(57) осмысление и понимание ошибок - естественно для людей в этой профессии. другое дело, что иногда требуется сделать над собой усилие для того, чтобы это понять
чего написано в ошибке и какое слово не понятно?
59 arccos6pi
 
25.07.16
07:33
(57) что за новая мода ставить скобки там,где их не должно быть?
Продано = Выборка.Количество();
Продано = Выборка.ВсегоКоличество();
60 Chebyrashka2D
 
25.07.16
07:36
(59) Так помощник вставил сам, тот который Ctrl + пробел.
61 arccos6pi
 
25.07.16
07:37
(60) и у Выборка.ВсегоКоличество() тоже?
62 Горогуля
 
25.07.16
07:38
(60) а в чём разница между Выборка.Количество() и Выборка.Количество?
63 arccos6pi
 
25.07.16
07:38
(62) прям без ножа режешь
64 Горогуля
 
25.07.16
07:39
и даже у Выборка.ВсегоКоличествоОбщийИтог()
65 Chebyrashka2D
 
25.07.16
07:41
По ходу есть разница. Говорю же, мало практики. всё заполнилось. Спасибо огромное, за то что указали на ошибку. Очень сильно извиняюсь за возможно не корректную постановку проблемы. просто есть ньюансы, которые приходят с опытом. этот момент я запомню на долго.
Ещё раз спасибо!
66 Горогуля
 
25.07.16
07:41
когда компьютеры были большими, я взял себе за правило не спрашивать на форуме без упоминания о своём пути поиска ответа. часто приходилось искать. а хотеть задать вопрос почти перестал
67 Горогуля
 
25.07.16
07:42
от оно чо - разница по ходу. будем знать
68 Chebyrashka2D
 
25.07.16
07:45
(66) Я сижу с этой задачей уже сутки, и поверьте, я много уже чего прочитал, нашел ответы на решения других накопившихся задач. Повторюсь - мало опыта и знаний.
Вот очередная проблема, первая строка заполняется, а вторая и последующая нет. опять отсутствие опыта. буду разбираться)))
69 Mariiaki
 
25.07.16
07:46
(68) Цикл?
70 Горогуля
 
25.07.16
07:47
сутки на продажи с отбором по контрагенту? Хрусталёва тебя проклянёт
71 Chebyrashka2D
 
25.07.16
07:53
(70) не совсем. там ещё есть много условия отбора. из-за неопытности взялся за всё сразу. потом решил начать с малого. мало опыта повторяюсь в сотый раз. а с добавлением строк по ходу цикл придётся писать. сейчас буду разбираться как. делаю это в первый раз....
72 Chebyrashka2D
 
25.07.16
07:55
прошу простить и понять. все люди разные, кому то легко даётся, кому то сложно. я занимаюсь этим потому что мне это нравиться. это единственная сфера деятельности которая приносит удовольствие. и на работу я иду с удовольствием) как то так.
73 Chameleon1980
 
25.07.16
08:34
(71) Выгрузить, Загрузить
не пойдет без цикла?

правильно только переменные запроса назвать.
74 ColonelAp4u
 
25.07.16
09:33
Я извиняюсь но почему ты не хочешь сделать запрос в РН куда делает движение док РТИУ? выберешь все что хочешь сделаешь итоги по своему клиенту и выведешь количество проданное(сумму) за выбранный период.
75 Горогуля
 
25.07.16
09:37
(74) патамушта сверка с соответствующим отчётом показала хорошо. сейчас не надо правильно, правильно будет потом (читай: никогда)
76 ColonelAp4u
 
25.07.16
09:44
(75) ну так он никогда не научится нормально писать код оптимизированный под быстрое выполнение операций.
77 Горогуля
 
25.07.16
09:45
(76) только он об этом пока не знает
не, ну мне тоже годы спустя бывало стыдно за своё раннее творчество
78 ColonelAp4u
 
25.07.16
09:47
на сколько я понял он хочет(или стоит задача) сделать обработку в которой будет ТЧ с строками контр и кол-во продаж. При выборе контра должно стать кол-во. Вот пусть сразу и делает запрос в РН
79 ColonelAp4u
 
25.07.16
09:49
(77) у всех так было раннее творчество)) только некоторые спустя день два оптимизируются или есть кто подскажет ка сделать лучше и ты начинаешь понимать что какую то задачу можно было решить более быстрым способом
80 ColonelAp4u
 
25.07.16
09:57
Я бы лично сделал так


На форму вывести Даты начало и конца за которые необходимо узнать количество проданное,а в ТЧ контрагент при изменении запрос
ВЫБРАТЬ
    ПродажиОбороты.Контрагент КАК Контрагент,
    ПродажиОбороты.КоличествоОборот КАК КоличествоОборот
ИЗ
    РегистрНакопления.Продажи.Обороты(&ДатаН, &ДатаО, Регистратор, Контрагент = &Контрагент) КАК ПродажиОбороты
ИТОГИ
    СУММА(КоличествоОборот)
ПО
    Контрагент
Запрос.УстановитьПараметр("ДатаН", ДатаНачала);
Запрос.УстановитьПараметр("ДатаО", ДатаОкончания);
Запрос.УстановитьПараметр("Контраген", СюдаСтавимКлиента);
Результат = Запрос.Выполнить()Выбрать();
Если Результат.Следующий() Тогда
    Стр = ТвояТЧ.ТекущаяСтрока();
    Стр.КоличествоПроданное = Результат.КоличествоОборот;
КонецЕсли;
Попробуй подставить вместо моих регистров свои
81 ColonelAp4u
 
25.07.16
10:00
Должно сработать я не проверял код тут набросал. а в параметрах ДатаНачала еще лучше написать НачалоДня(ДатаНачала ) и КонецДня(ДатаОкончания)
82 Горогуля
 
25.07.16
10:01
(80) а если не следующий?
83 _stay true_
 
25.07.16
10:12
(82) а если не следующий, ТС бегает голым по городу:)
84 ColonelAp4u
 
25.07.16
10:59
(82) Можно написать
Если Результат.Следующий() Тогда
    Стр = ТвояТЧ.ТекущаяСтрока();
    Стр.КоличествоПроданное = Результат.КоличествоОборот;
Иначе
    Стр = ТвояТЧ.ТекущаяСтрока();
    Стр.КоличествоПроданное = 0;
КонецЕсли;
Или Сразу выбрать количество в запросе и даже если 0 он будет ставить 0
85 Горогуля
 
25.07.16
11:03
(84) это при отсутствии оборотов?
86 ColonelAp4u
 
25.07.16
11:08
(85) ну значит
Если Результат.Следующий() Тогда
    Стр = ТвояТЧ.ТекущаяСтрока();
    Стр.КоличествоПроданное = Результат.КоличествоОборот;
Иначе
    Стр = ТвояТЧ.ТекущаяСтрока();
    Стр.КоличествоПроданное = 0;
КонецЕсли;
87 Горогуля
 
25.07.16
11:11
выбрать *
из (выбрать количество, 0 как порядок из обороты
объединить
выбрать 0, 1 из обороты)
упорядочить по порядок
88 Chebyrashka2D
 
25.07.16
11:43
Друзья. всё збс. и цикл не пришлось писать! Очень извиняюсь что не доверился проффесиональному глазу того человека который говорил мне про запрос. Всё работает! огромная вам благодарность и низкий поклон за напутствие.
П.С. вы уж извините за небрежный код, со временем придёт опыт.
П.П.С. Вот код если кому интерестно

&НаСервере
Процедура ПолучитьПродано(Клиент, Продано) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    РеализацияТоваровУслуг.Контрагент,
|    СУММА(РеализацияТоваровУслуг.ВсегоКоличество) КАК ВсегоКоличество
|ИЗ
|    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
|    РеализацияТоваровУслуг.Контрагент = &Клиент
|
|СГРУППИРОВАТЬ ПО
|    РеализацияТоваровУслуг.Контрагент";

Запрос.УстановитьПараметр("Клиент", Клиент);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
     Продано = Выборка.ВсегоКоличество;
КонецЕсли;
КонецПроцедуры
89 Горогуля
 
25.07.16
11:44
ты это.. распроведи документик-то
90 Chebyrashka2D
 
25.07.16
11:46
(89) Реализацию?
91 Горогуля
 
25.07.16
11:47
(90) приём на работу, блин
92 Chebyrashka2D
 
25.07.16
11:47
ну тут да, согласен. профукал момент. я всё понял, дошло. спасибо сенсей!
93 Горогуля
 
25.07.16
11:48
дошло до него... никогда не тащи данные из документов. пока просто поверь
94 Chebyrashka2D
 
25.07.16
11:57
(93) Спасибо ещё раз.
В данном случае, просто пришлось сперва тянуть данные из РегистрНакопления.ВыручкаИсебестоимостьПродаж, а там всё через ключ, и отдельными строками пишется. я хз как там всё нормально вывести. Пришлось через документ тащить. всё с опытом, всё с опытом....