Имя: Пароль:
1C
1С v8
РегистрНакопления
,
0 Учусь еще
 
13.04.12
10:23
скажите пож-та,
как можно в регистре накопления посчитать количество обращений клиента по обслуживанию???
6 gero
 
13.04.12
10:26
(0)
а чьи, такие замечательные, в личке?
7 jsmith
 
13.04.12
10:28
господи, я сисек не увидел
как теперь работать
8 Учусь еще
 
13.04.12
10:28
проблема еще в том что данные это регистра будут дальше исползоваться, необходимо при записи клиента сразу в регистре накапливалось...
9 jsmith
 
13.04.12
10:28
автор, называй место встречи, всё сделаю сам, не твоего это ума дело
10 Учусь еще
 
13.04.12
10:30
блин давай те без шуток...
11 butterbean
 
13.04.12
10:30
(10) тебе новый регистр нужен или просто в отчете подсчитать по заказам??
12 Учусь еще
 
13.04.12
10:31
регистр
13 Учусь еще
 
13.04.12
10:32
я создала регистр: измерение -контрагент,ресурсы - время обслуживания,кол-во обращений, объем продаж
14 Учусь еще
 
13.04.12
10:33
объем продаж я знаю как посчитать, а вот остальное нет((
15 Учусь еще
 
13.04.12
10:34
время обслуживания думаю количесвто дней с первого дня обслуживания....как это в регистре сделать не знаю..
16 butterbean
 
13.04.12
10:34
(15) спроси у заказчика, по любому сама неправильно придумаешь
17 jsmith
 
13.04.12
10:36
а где грамотная формализация задачи
18 jsmith
 
13.04.12
10:36
опиши задачу на языке бизнеса
а потом я тебе выдам решение
19 Учусь еще
 
13.04.12
10:38
эти данные необходимы для проведения авс анализа покупателей, в качестве входных данных используются время обслуживания,кол-во обращений, объем продаж
вот я и решила сначала собрать их в регистре а потом использовать...
20 jsmith
 
13.04.12
10:39
то бишь нужно фиксировать
1. сам обращение (оно будет иметь номер и дату)
2. время обслуживания по этому обращению
3. объём продаж по этому обращению
21 jsmith
 
13.04.12
10:40
обращение, значит, документ, как ты сказала, заказ
по этому заказу возможны продажа (объём продаж) и обслуживание (время обслуживание)
22 jsmith
 
13.04.12
10:41
тогда количество обращений = количество проведенных документов заказ за период
не?
23 Учусь еще
 
13.04.12
10:44
думаю что так...
24 Учусь еще
 
13.04.12
10:46
только как в движениях у ресурсов прописывать несколько параметров???
25 jsmith
 
13.04.12
10:51
1. Документ заказ, пишет в регистр "Заказы покупателей" с плюсом
Измерения: заказ, номенклатура
Ресурсы: количество, (можно и сумму)
Номенклатурой может выступать товар или услуга, для услуги количество можно поставить 1
2. Документ Продажа, пишет в регистр "Заказы покупателей" с минусом и в регистр "Продажи" (оборотный)
3. Документ Обслуживание, пишет в в регистр "Заказы покупателей" с минусом, в регистр "Продажи" (оборотный), в регистр "Обслуживание" (оборотный, для фиксации времени)
Продажу и Обслуживание можно объединить в один документ
26 jsmith
 
13.04.12
10:52
Ну это как бы детские истины
Может, тебе нужно пройти тренинг по формализации бизнес-процессов
27 Учусь еще
 
13.04.12
10:57
да я это и так в принципе знала
28 Учусь еще
 
13.04.12
11:04
терь мне это нужно запросом(наверное) вывести в ТП дока
29 Учусь еще
 
13.04.12
11:11
как в нем то посчитать количество обращений и время обслуживания??
30 hhhh
 
13.04.12
11:13
(29) ну как-то

ВЫБРАТЬ КОЛИЧЕСТВО(Ссылка) ИЗ Документ.ЗаказПокупателя ГДЕ Контрагент = &Контрагент
31 Учусь еще
 
13.04.12
11:17
ну вот исходны мой код

Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЗаказыКлиентов.Контрагент,
                   |    ЗаказыКлиентов.Количество,
                   |    ЗаказыКлиентов.Сумма
                   |ИЗ
                   |    РегистрНакопления.ЗаказыКлиентов КАК ЗаказыКлиентов";
     результат=запрос.Выполнить().Выгрузить();
     ЭлементыФормы.ТабличноеПоле1.Значение=результат;
     ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
сейчас он выдает количество купленного клиентом товара, а нужно обращений, так как за одно обращение он может купить сколько угодно товара..(((
32 Учусь еще
 
13.04.12
11:28
о сделала, осталось только время обслуживания, подскажите, причем нужен не период, общее количество дней..
33 Учусь еще
 
13.04.12
11:50
делаю вот так но не правильно

КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказПокупателя.Дата) КАК ВремяОбслуживания
34 Учусь еще
 
13.04.12
11:50
думаю надо приминить функцию разностьДат, но как с ней работать не знаю
35 Учусь еще
 
13.04.12
11:58
ну пожскажите кто нить
36 Учусь еще
 
13.04.12
12:10
видимо я задала глобальный вопрос, ответ на который никто не знает
37 Учусь еще
 
13.04.12
13:34
подскажите может кто знает как это сделать, уже который час сижу ни как не получается сделать...((
38 SanGvin
 
13.04.12
13:36
(0) без фото не взлетит
39 DMLangepas
 
13.04.12
13:38
(37) надо фото. Как в прошлый раз, не пройдёт
40 Учусь еще
 
13.04.12
13:39
ага увидите и вообще не будете помогать....
41 SanGvin
 
13.04.12
13:41
(40) как раз наоборот! С фото всегда поможем - либо из жалости либо из интереса ;)
42 Учусь еще
 
13.04.12
13:41
))))
43 090977
 
13.04.12
13:45
Кинь свой запрос и объясни что нужно ДОполучить
44 Учусь еще
 
13.04.12
13:54
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЗаказПокупателя.Контрагент КАК Контрагент,
                   |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказПокупателя.Ссылка) КАК КоличествоОбращений,
                   |    ЗаказПокупателя.ИтоговаяСумма,
                   |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказПокупателя.Дата) КАК Дата
                   |ИЗ
                   |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    ЗаказПокупателя.ИтоговаяСумма,
                   |    ЗаказПокупателя.Контрагент";
     
     результат=запрос.Выполнить().Выгрузить();
     ЭлементыФормы.ТабличноеПоле1.Значение=результат;
     ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();

нужно получить время обслуживания в днях
45 090977
 
13.04.12
13:57
Тоисть ? количество заказов ??? или как ?
46 Учусь еще
 
13.04.12
14:00
то есть на протяжении какого периода клиент обслуживается,то есть год, месяц.....
47 Учусь еще
 
13.04.12
14:01
то есть пришел клиент купил ручку, соответсвенно составили док Заказпокупателя, пришел через месяц купил карандаш, составили новый док на этого клиента уже на текущую дату соответсвенно получается что время обслуживания - 2 месяца
как то так
48 090977
 
13.04.12
14:05
Не совсем так )) Время обслуживания логичней понимать как разница между датой заказа и датой реализации
49 090977
 
13.04.12
14:06
Пока пытаюсь понять что в итоге вы хотите увидеть в отчете
50 SanGvin
 
13.04.12
14:06
тебе надо чтото типа

МИНИМУМ(ЗаказПокупателя.Дата) КАК ДатаНачалаОбращения
(ТекущаяДата() - ДатаНачалаОбращения) КАК ВремяОбслуживания
51 Учусь еще
 
13.04.12
14:07
ну в моем случае это так)))) может надо было как то по лучше назвать что ль...)
52 090977
 
13.04.12
14:10
А если клиент пришел третий раз , то как вы хотите видеть

1-Заказ...01 от 01.01.12 время обсл = 0 дней.
2-Заказ...02 от 05.01.12 время обсл = 4 дня.
3-Заказ...03 от 07.01.12 время обсл = ??? (от какого заказа считать тут ?)
53 SanGvin
 
13.04.12
14:10
(50) + Вместо ТекущаяДата() надо параметром туда передать
54 090977
 
13.04.12
14:12
SanGvin я так понял что разность дат нужно не по текущей дате а от даты предыдущего документа )
55 Учусь еще
 
13.04.12
14:12
(53)какой параметр
56 Учусь еще
 
13.04.12
14:13
(54)нужно найти разницу между первой датой обращения клиента до последней даты обращения этого же клиента, и так по каждому клиенту..
57 SanGvin
 
13.04.12
14:13
(55) &ТекущаяДата вместо ТекущаяДата()
58 SanGvin
 
13.04.12
14:14
(54) см (56)
59 SanGvin
 
13.04.12
14:16
(56) Если именно до последней даты обращения надо а не до текущей - вводишь еще одно поле вместо текущей даты в запросе:

МИНИМУМ(ЗаказПокупателя.Дата) КАК ДатаНачалаОбращения
МАКСИМУМ(ЗаказПокупателя.Дата) КАК ДатаКонцаОбращения
(ДатаКонцаОбращения - ДатаНачалаОбращения) КАК ВремяОбслуживания

вообще, писАл от руки, так что могёт не работать....
60 Учусь еще
 
13.04.12
14:20
(59) логика не совсем ясна
61 Учусь еще
 
13.04.12
14:20
в документе дата у меня одна
62 Учусь еще
 
13.04.12
14:21
все поянтно
63 SanGvin
 
13.04.12
14:23
тока вот

(ДатаКонцаОбращения - ДатаНачалаОбращения) КАК ВремяОбслуживания

работать не будет 100%... надо после выполнения запроса разность дат вычислять, но в любом случае задачу решает
64 Учусь еще
 
13.04.12
14:25
(63)то есть после строчки???  ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
65 090977
 
13.04.12
14:27
Понял что вам нужно, щас освобожусь маленько попробую набросать запрос
66 090977
 
13.04.12
14:40
ВЫБРАТЬ
   ПервоеОбращение.Контрагент,
   РАЗНОСТЬДАТ(ПервоеОбращение.Дата, ПоследнееОбращение.Дата, ДЕНЬ) КАК ВремяОбслуживания,
   ПервоеОбращение.Дата КАК ДатаПервогоОбращения,
   ПоследнееОбращение.Дата КАК ДатаПоследнегоОбращения
ИЗ
   (ВЫБРАТЬ
       МИНИМУМ(ЗаказПокупателя.Дата) КАК Дата,
       ЗаказПокупателя.Контрагент КАК Контрагент
   ИЗ
       Документ.ЗаказПокупателя КАК ЗаказПокупателя
   
   СГРУППИРОВАТЬ ПО
       ЗаказПокупателя.Контрагент) КАК ПервоеОбращение
       ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           МАКСИМУМ(ЗаказПокупателя.Дата) КАК Дата,
           ЗаказПокупателя.Контрагент КАК Контрагент
       ИЗ
           Документ.ЗаказПокупателя КАК ЗаказПокупателя
       
       СГРУППИРОВАТЬ ПО
           ЗаказПокупателя.Контрагент) КАК ПоследнееОбращение
       ПО ПервоеОбращение.Контрагент = ПоследнееОбращение.Контрагент
67 090977
 
13.04.12
14:41
Посмотрите так нужно ?
68 Учусь еще
 
13.04.12
14:44
(67)время обслуживания не выводится
69 090977
 
13.04.12
14:46
Я у себя смотрю сейчас все выводится
70 090977
 
13.04.12
14:47
ВЫ этот запрос в конструктор закиньте , все работает, просто незнаю так нужно или нет
71 Учусь еще
 
13.04.12
14:50
в смысле конструктор выходной фоормы?
72 090977
 
13.04.12
14:50
Да
73 Учусь еще
 
13.04.12
14:52
мне нужно на событии кнопки в документе это сделать...
74 Учусь еще
 
13.04.12
14:55
в отчете тоже не выводит
75 090977
 
13.04.12
14:56
Нет конструктор сам все сделает
76 090977
 
13.04.12
14:57
Начнем с того - У вас в базе есть контрагент у которого есть 2 заказа с разными датами ?
77 Учусь еще
 
13.04.12
14:57
да
78 Учусь еще
 
13.04.12
14:58
он выводит самую первую дату и самую последнюю дату, в разницу нет
79 Учусь еще
 
13.04.12
15:00
даже в консоли запросов не выводит...(
80 090977
 
13.04.12
15:02
Первая и последняя дата разные ???
81 090977
 
13.04.12
15:04
Я в консоль закинул все работает
82 090977
 
13.04.12
15:04
ВЫБРАТЬ
   ПервоеОбращение.Контрагент,
   ВЫБОР
       КОГДА РАЗНОСТЬДАТ(ПервоеОбращение.Дата, ПоследнееОбращение.Дата, ДЕНЬ) <> 0
           ТОГДА РАЗНОСТЬДАТ(ПервоеОбращение.Дата, ПоследнееОбращение.Дата, ДЕНЬ)
       ИНАЧЕ "Одно обращение"
   КОНЕЦ КАК ВремяОбслуживания,
   ПервоеОбращение.Дата КАК ДатаПервогоОбращения,
   ПоследнееОбращение.Дата КАК ДатаПоследнегоОбращения
ИЗ
   (ВЫБРАТЬ
       МИНИМУМ(ЗаказПокупателя.Дата) КАК Дата,
       ЗаказПокупателя.Контрагент КАК Контрагент
   ИЗ
       Документ.ЗаказПокупателя КАК ЗаказПокупателя
   
   СГРУППИРОВАТЬ ПО
       ЗаказПокупателя.Контрагент) КАК ПервоеОбращение
       ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           МАКСИМУМ(ЗаказПокупателя.Дата) КАК Дата,
           ЗаказПокупателя.Контрагент КАК Контрагент
       ИЗ
           Документ.ЗаказПокупателя КАК ЗаказПокупателя
       
       СГРУППИРОВАТЬ ПО
           ЗаказПокупателя.Контрагент) КАК ПоследнееОбращение
       ПО ПервоеОбращение.Контрагент = ПоследнееОбращение.Контрагент
83 090977
 
13.04.12
15:07
84 Учусь еще
 
13.04.12
15:11
а сейчас считает)))
85 Учусь еще
 
13.04.12
15:11
терь только не работает количесвто обращений(((
86 090977
 
13.04.12
15:12
Что такое количество обращений ?
87 090977
 
13.04.12
15:12
Я не делал это
88 Учусь еще
 
13.04.12
15:17
по сути сколько создано для данного клиента доков
89 090977
 
13.04.12
15:18
ВЫБРАТЬ
   ПервоеОбращение.Контрагент,
   ПервоеОбращение.Дата КАК ДатаПервогоОбращения,
   ПоследнееОбращение.Дата КАК ДатаПоследнегоОбращения,
   КолвоОбращений.КоличествоОбращений,
   ВЫБОР
       КОГДА РАЗНОСТЬДАТ(ПервоеОбращение.Дата, ПоследнееОбращение.Дата, ДЕНЬ) <> 0
           ТОГДА РАЗНОСТЬДАТ(ПервоеОбращение.Дата, ПоследнееОбращение.Дата, ДЕНЬ)
       ИНАЧЕ "Одно обращение"
   КОНЕЦ КАК ВремяОбслуживания
ИЗ
   (ВЫБРАТЬ
       МИНИМУМ(ЗаказПокупателя.Дата) КАК Дата,
       ЗаказПокупателя.Контрагент КАК Контрагент
   ИЗ
       Документ.ЗаказПокупателя КАК ЗаказПокупателя
   
   СГРУППИРОВАТЬ ПО
       ЗаказПокупателя.Контрагент) КАК ПервоеОбращение
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           МАКСИМУМ(ЗаказПокупателя.Дата) КАК Дата,
           ЗаказПокупателя.Контрагент КАК Контрагент
       ИЗ
           Документ.ЗаказПокупателя КАК ЗаказПокупателя
       
       СГРУППИРОВАТЬ ПО
           ЗаказПокупателя.Контрагент) КАК ПоследнееОбращение
       ПО ПервоеОбращение.Контрагент = ПоследнееОбращение.Контрагент
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказПокупателя.Дата) КАК КоличествоОбращений,
           ЗаказПокупателя.Контрагент КАК Контрагент
       ИЗ
           Документ.ЗаказПокупателя КАК ЗаказПокупателя
       
       СГРУППИРОВАТЬ ПО
           ЗаказПокупателя.Контрагент) КАК КолвоОбращений
       ПО ПервоеОбращение.Контрагент = КолвоОбращений.Контрагент
90 090977
 
13.04.12
15:18
Сделал уже )
91 Учусь еще
 
13.04.12
15:26
молодец, все работает, цены тебе нет)))
92 Учусь еще
 
13.04.12
15:29
дальше я сама попытаюсь..
93 DMLangepas
 
13.04.12
15:30
(91) а фото так и нет
94 Учусь еще
 
13.04.12
15:32
да не загружается оно...(((
95 Учусь еще
 
13.04.12
15:39
скажите почему я сейчас пытаюсь сделать аналогичное как вы сделали только объем продаж, у меня каждая строка повторяется по два раза??
96 Учусь еще
 
13.04.12
15:41
я тоже создала вложеный запрос там указала поле - итоговаясумма,в группировке указала контрагента и суммируемое поле, добавила этот реквизит в основной запрос....
97 Учусь еще
 
13.04.12
15:57
(90) ОБРАЩАЮСЬ ЗА ТВОЕЙ ПОМОЩЬЮ...
98 Учусь еще
 
13.04.12
16:03
вопрос снят
99 Учусь еще
 
13.04.12
19:25
возможно такое чтобы в этом же ТП в этой же процедуре добавить еще одну колонку значения, в которой будут складываться значения параметров???
100 Учусь еще
 
13.04.12
19:41
кто нить проделывал такое???
101 Учусь еще
 
13.04.12
19:42
может нужно как то в цикле пройти все колонке и добавить новую???
102 Учусь еще
 
13.04.12
19:54
сделала вот так но не работает
тз=новый ТаблицаЗначений;
     Для Каждого колонки Из ТабличноеПоле1 Цикл
             новаяКолонка=тз.Колонки.Добавить("Значение");
     КонецЦикла;
нужно думать глобальнее??
103 Учусь еще
 
13.04.12
20:14
пробывала даже так

тз=Новый ТаблицаЗначений;
    Если тз.Колонки.Найти("Значение") = Неопределено Тогда
   МассивТипов = Новый Массив();

   МассивТипов.Добавить(Тип("Число"));

   ОписаниеНужныхТипов = Новый ОписаниеТипов(МассивТипов);

   тз.Колонки.Добавить("Значение", ОписаниеНужныхТипов);

КонецЕсли;

   ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
даже колонка не создается
104 Учусь еще
 
13.04.12
20:23
вопрос решен след образом:

ТабПоле = ЭлементыФормы.ТабличноеПоле1;
ТабПоле.СоздатьКолонки();
ТабПоле.Колонки.Добавить("Значение");
105 090977
 
14.04.12
11:48
А в запросе не проще сразу провести необходимые расчеты ? не айс в цикле после запроса обрабатывать данные
Ошибка? Это не ошибка, это системная функция.