Имя: Пароль:
1C
1С v8
Как обратиться к значениям группировок......
,
0 1C_Enigma
 
08.04.12
23:19
Что не так???? Как вывести в отчет данные или хотя бы как в Сообщить() передать.....В 7.7 все было проще =(

Процедура Сформировать(Кнопка)
   ТабДок = Новый ТабличныйДокумент;
   // Вставить содержимое обработчика.
   //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

   Запрос.УстановитьПараметр("NULL", NULL);

   Результат = Запрос.Выполнить();

   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
   ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
   ОбластьМенеджер = Макет.ПолучитьОбласть("Менеджер");
   ОбластьПроизводитель = Макет.ПолучитьОбласть("Производитель");
   ОбластьТовар = Макет.ПолучитьОбласть("Товар");

   ТабДок.Очистить();
   ТабДок.Вывести(ОбластьЗаголовок);
   ТабДок.Вывести(ОбластьШапкаТаблицы);

   ВыборкаМенеджер = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией,"Менеджер");

   Пока ВыборкаМенеджер.Следующий() Цикл
       ОбластьМенеджер.Параметры.Заполнить(ВыборкаМенеджер);
       ТабДок.Вывести(ОбластьМенеджер);

       ВыборкаПроизводитель = ВыборкаМенеджер.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией,"Производитель");

       Пока ВыборкаПроизводитель.Следующий() Цикл
           ОбластьПроизводитель.Параметры.Заполнить(ВыборкаПроизводитель);
           ТабДок.Вывести(ОбластьПроизводитель);
   
           ВыборкаТовар = ВыборкаПроизводитель.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией, "Товар","Все");

           Пока ВыборкаТовар.Следующий() Цикл
               ОбластьТовар.Параметры.Заполнить(ВыборкаТовар);
               ТабДок.Вывести(ОбластьТовар);
           КонецЦикла;
       КонецЦикла;
   КонецЦикла;

   ТабДок.Вывести(ОбластьПодвалТаблицы);
   ТабДок.Вывести(ОбластьПодвал);

   //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

   ТабДок.Показать("ЗРП");

КонецПроцедуры
1 zak555
 
08.04.12
23:22
что это ?
2 vs7719
 
08.04.12
23:22
Перестать сравнивать с NULL, т.к. любое сравнение с NULL = Ложь.
3 vs7719
 
08.04.12
23:25
Для такого сравнения лучше использовать конструкцию: НЕ ПродажиСебестоимость.Регистратор.Менеджер ЕСТЬ NULL.
4 vs7719
 
08.04.12
23:26
И где фото?
5 zak555
 
08.04.12
23:26
в РН надо засунуть
6 vs7719
 
08.04.12
23:29
Точно: РегистрНакопления.ПродажиСебестоимость.Обороты(,,НЕ Регистратор.Менеджер ЕСТЬ NULL)
7 1C_Enigma
 
08.04.12
23:53
фото есть, про РегистрНакопления.ПродажиСебестоимость.Обороты(,,НЕ Регистратор.Менеджер ЕСТЬ NULL) не совсем поняла =(
8 Конфигуратор1с
 
08.04.12
23:56
(7)Что именно непонятно?
9 Конфигуратор1с
 
08.04.12
23:56
(7)Во первых, почему строите не по виртуальной таблице, а по реальной?
10 1C_Enigma
 
09.04.12
00:08
последние два вопроса ставят в тупик....С самого начала сочинила в СКД запросик, все было хорошо, создала первый набор данных - с РегистрНакопления.ПродажиСебестоимость вытянула себестоимость, создала второй набор данных - с РегистрНакопления.Продажи вытянула оборот, вычислила доход и т.д
Связала их по Номенклатуре, т.к. данные сначала выводились для пустого менеджера, а потом для не путого значения менеджера - добавила проверку на пустое значение.
Теперь нужно все это ручками написать...и тут началось =(
11 vs7719
 
09.04.12
00:19
Похоже, Вы очень начинающий программист по 8.х и проще будет выложить готовую обработку, чем выяснять детали, но это не наши методы. Посмотрите вверху, справа есть баннер с материалами по обучению. Еще можно прикупить книженции: http://v8.1c.ru/metod/books/#l1
12 PVV65
 
09.04.12
00:21
Ни разу в моей практике не использовал конструкцию "Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией".
Завтра посмотрю, сколько раз она использовалась в УПП.
13 Конфигуратор1с
 
09.04.12
00:33
(10)В общем Вам реально нужно разобраться с основами 8ки. Если вкратце по данному сабжу
то у регистров накопления есть виртуальные таблицы: обороты, остатки, остатки и обороты. Правильно тянуть данные из них.  В вашем случае у регистров Продажи и обороты есть только таблица оборотов, поэтому и данные тяните из нее.


ВЫБРАТЬ
   ПродажиСебестоимостьОбороты.Номенклатура,
   ПродажиСебестоимостьОбороты.Регистратор.Менеджер,
   ПродажиСебестоимостьОбороты.Номенклатура.Производитель,
   СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот) КАК Себестоимость
ИЗ
   РегистрНакопления.ПродажиСебестоимость.Обороты(&ДатаНачала,&ДатаОкончания , Регистратор, ) КАК ПродажиСебестоимостьОбороты
14 1C_Enigma
 
09.04.12
00:33
ок, пусть будет без иерархии, да...я ОЧЕНЬ начинающий, начала сегодня...только что, это сути не меняет....с NULL не сравниваю, выводит...сначала группирует по пустому значению Менеджер, потом по не пустому....ну да ладно....проехали
15 1C_Enigma
 
09.04.12
00:34
в них не Регистратора!!!!
16 1C_Enigma
 
09.04.12
00:34
тянула б оттуда =(
17 Конфигуратор1с
 
09.04.12
00:35
Для виртуальной таблицы можно задать параметры

РегистрНакопления.ПродажиСебестоимость.Обороты(
&ДатаНачала,&ДатаОкончания - это начало и окончание периода
Регистратор - это периодичнсоть, указав регистратор, он появляется для выбора
после третей запятой можно задать условия для виртуальной таблицы
18 Конфигуратор1с
 
09.04.12
00:35
(15)есть. Смотрите (17)
19 Конфигуратор1с
 
09.04.12
00:35
Вы запрос ручками набивали или конструктором делали?
20 1C_Enigma
 
09.04.12
00:36
Конструктором =(
21 Конфигуратор1с
 
09.04.12
00:37
есть тимвьювер? могу подключится показать пару фокусов
22 1C_Enigma
 
09.04.12
00:38
неа ;)
23 1C_Enigma
 
09.04.12
00:38
я чичас поищу...почитаю че-нить...
24 zak555
 
09.04.12
00:39
(21) про веб-камеру не забудь спросить =)
25 Конфигуратор1с
 
09.04.12
00:41
(23)Ну как то так
http://screencast.com/t/x0uxpveAQf6G
26 Конфигуратор1с
 
09.04.12
00:42
(24)Что бы мне жена сделал из моих 4 глаз 8?)))
27 Конфигуратор1с
 
09.04.12
00:44
(23)мне вот это видео в свое время помогло
http://chistov.spb.ru/publ/free_webinar/6-1-0-19
28 zak555
 
09.04.12
00:50
(26) у меня два глаза, к примеру
29 Конфигуратор1с
 
09.04.12
00:50
(28)а на фотке четыре
30 1C_Enigma
 
09.04.12
00:57
(29) =)))) посмотрела фотку.....расстроилась....
31 zak555
 
09.04.12
00:58
(29) на самом деле -два
32 Конфигуратор1с
 
09.04.12
01:02
(31)Поздно. Девушка уже в тебе разочаровалась))))
33 Конфигуратор1с
 
09.04.12
01:02
(30)Кстати, очень хорошая для начинающего книжка из ЦСО курса "Язык запросов".
34 1C_Enigma
 
09.04.12
19:18
Тупейший, наверное, вопрос, но все-же....Почему после третьей запятой (17), если написать "НЕ Регистратор.Менеджер ЕСТЬ NULL" или вообще любую проверку,отвечает,что поле Регистратор.Менеджер не найдено?
Потому что путь к данным
Потому что кавычки, скобки и т.д
Потому что еще что-то....
Почему???????? =(
35 Конфигуратор1с
 
09.04.12
22:27
(34)регистратор в параметрах виртуальной таблицы недоступен. Нужно писать в условиях
36 1C_Enigma
 
09.04.12
23:26
(35) фууууух....я так,  в принципе, и написала, но потом подумала, а может по-другому нужно было :-)
Дякую!!!
37 Конфигуратор1с
 
10.04.12
00:19
(36)обращайтесь
38 1C_Enigma
 
11.04.12
00:27
(37) Обращаюсь :-)
Задача - написать отчет по зароботной плате менеджеров. Его суть - у менеджеров есть за месяц некий оборот, наценка средняя и доход, ну...соответственно :-) Есть некая шкала оценки средней наценки, вернее назначения коэффициента, на который будет умножаться оборот менеджера и определяться зп. Но, самое главное, допустим, есть убыток за отчетный период по товару А, убыток по фирме, но мы смотрим, по какой партии убыток и сколько каждый менеджер этого товара из этой партии продавал, расчитываем некий коэф., умножаем на него убыток и полученное вычитаем из зп менеджера. На 7.7 это реализовано.
Просьба - пошлите меня, куда нужно, почитать, что следует и где следует, чтоб я вкурила, с какими сложными моментами я столкнусь и как я их отважно победю :-)
Пасиба заранее
39 Конфигуратор1с
 
11.04.12
00:40
(38)Какая зависимость процента наценки от коэфициента?
40 Конфигуратор1с
 
11.04.12
00:42
(38)Если у Вас УТП, то там есть отчет Валовая прибыль. Вам туда нужно будет только прикрутить оценку
41 zak555
 
11.04.12
00:45
(40) осталось понять, что есть валовая прибыль
42 Конфигуратор1с
 
11.04.12
00:46
"есть убыток за отчетный период по товару А, убыток по фирме, но мы смотрим, по какой партии убыток и сколько каждый менеджер этого товара из этой партии продавал," - вот здесь, мне кажется, будет основная проблема ибо наценку до партии там вроде проблемно вытащить
43 Конфигуратор1с
 
11.04.12
00:46
(41)Отчет
44 Конфигуратор1с
 
11.04.12
00:53
(38)в общем, почта в личке. Если что пишите.
45 1C_Enigma
 
11.04.12
00:59
(39) например, при средней за месяц наценке в 6% (у нас крупный опт) - коэф. 0,3. Тобишь, оборот менеджера в 1000000 грн будет умножаться на 0,1, это и будет зрп.
46 zak555
 
11.04.12
01:00
илона ещё без фотки ?
47 1C_Enigma
 
11.04.12
01:02
Меня тоже беспокоит убыток по партии и определение, кто сколько продал из этой партии...
Фотки....
http://vk.com/id19742515
48 1C_Enigma
 
11.04.12
01:04
(41)я, слава Богу, догадываюсь, что есть валовая прибыль...
49 zak555
 
11.04.12
01:06
(47) там много разных
50 1C_Enigma
 
11.04.12
01:10
Ну....альбомы Я и Фотки :-)
51 zak555
 
11.04.12
01:11
(05) где на двух фотках у тебя что-то во рту ?
52 1C_Enigma
 
11.04.12
01:14
Там и другие есть :-)
53 zak555
 
11.04.12
01:17
(52) проще поставить себе о какой ты говоришь
54 1C_Enigma
 
11.04.12
01:30
Да, то я с колбасой :-)
Но ты ж тоже себе "красивую" поставил
55 zak555
 
11.04.12
01:42
(54) осталось тебе переставить
56 1C_Enigma
 
11.04.12
08:00
(55) а зачем?
57 Конфигуратор1с
 
11.04.12
08:25
(47)Убыток по партии несколько некошерно считать. Дело в том, что партии подбираются автоматически. Соответсвенно если у вас при обычном приходе будет возврат товаров по другой цене, и при перепроведении во времени переместятся приходная накладная и возвратная накладная, то автоматом менеджер продавший хорошо перейдет в категорию лузеры. Как альтернатива использование серий, для жесткой идентификации партий
58 Конфигуратор1с
 
11.04.12
08:27
(57)но если вас не смущают небольшие потери в зп менеджеров, то можно пакетный запрос наваять который будет рассчитывать убыток по партии
59 1C_Enigma
 
11.04.12
08:33
(57) спасибо, учту...
60 badboychik
 
11.04.12
08:51
если используешь СКД нахрена в запросе ИТОГИ ???
61 badboychik
 
11.04.12
08:58
вернее так - если работало в СКД, зачем вручную переписывать?
62 Конфигуратор1с
 
11.04.12
11:04
(59)если не к спеху. то в течении дня попробую запрос набросать. Самому интересно)))
63 Odavid
 
11.04.12
11:21
(60) с СКД ВСЕГДА лучше писать все в запросе, если это возможно - иначе можно нарваться на "особенности работы СКД"...
64 Odavid
 
11.04.12
11:24
(15) я вот с первых строк понял, что девушке надо поле Регистратора.
Потому и не используется виртуальная таблица: нельзя получить данные по регистратору. Только из полной таблицы.
(35) >>регистратор в параметрах виртуальной таблицы недоступен. Нужно писать в условиях
- он недоступен при использовании ВТ ни в параметрах, ни в условиях.
65 Конфигуратор1с
 
11.04.12
11:44
(64) в условиях виртуальной таблицы недоступны, но в условиях запроса доступны
66 Конфигуратор1с
 
11.04.12
11:45
"нельзя получить данные по регистратору. Только из полной таблицы. " - это с каких пор?
67 Odavid
 
11.04.12
12:52
(66) проверил - формально можно.
Но смысл использования ВТ был в том, чтобы условия ставить в параметрах. А раз нельзя в параметрах использовать регистратор, а только в условиях - то 2/3 возможностей ВТ теряются, и разницы использования ВТ с условиями или полной таблицы с условиями - минимальна.
Хотя поля регистратора получить (но не проверить - а есть ли оно такое) можно, согласен.
68 Конфигуратор1с
 
11.04.12
13:41
"А раз нельзя в параметрах использовать регистратор, а только в условиях - то 2/3 возможностей ВТ теряются" - ну собственно, не согласен. В виртуальных таблицах функционал пошире, кроме как параметры
69 1C_Enigma
 
11.04.12
19:11
(60) потому что тот модный отчет все-равно придется руками писать-дописывать.
(67) и я хотела впихнуть в параметры поле регистратора =(
70 1C_Enigma
 
11.04.12
19:33
(60)-(61) мне потом по группировкам идти и обращаться к ним, колдовать и все такое.....ну эт я так подозреваю
71 Конфигуратор1с
 
11.04.12
21:34
(70)У вас с себестоимостью получилось?
72 1C_Enigma
 
11.04.12
22:59
(71) даааа, я чичас серии делаю потом шкалу сделаю, а потом буду все вместе клеить...Не совсем удобно, что с скд нельзя скопировать итоговый поооооолный текст запроса
73 Конфигуратор1с
 
11.04.12
23:07
(72)А  почему в скд его не сделать?
74 Конфигуратор1с
 
11.04.12
23:08
(72)Кстати. я подумал, был немного не прав. Можно и без серий высчитать себестоимость
75 1C_Enigma
 
11.04.12
23:32
(73)в примерах для чайников идет отчет типа срез цен, данные там берутся из регистра ценыноменклатурыконтрагентов и из дока поступления, так вот там создаются два набора данных, плюс мне нравится там вкладка Ресурсы :-), а потом, когда нажимаешь на кнопочку Запрос, то показывается запрос по какому-либо одному набору. Мож я не туда смотрю...
76 1C_Enigma
 
11.04.12
23:34
(74) я тоже где-то читала, как кто-то ругался на то, что партии подставляются с потолка.....а мне так не нужно
77 1C_Enigma
 
11.04.12
23:39
Сразу весь в скд - не умею, а начну тыкать, куда попало, боюсь потерять то, что наваяла уже :-)
78 Конфигуратор1с
 
12.04.12
00:00
(75)Так там принцип такой же как в запросе - набор это как таблица отдельная. Вы когда запрос делаете, то видите только одну часть запроса. Скд сама объединяет. Но в принципе, я тоже сначала отчеты руками делал, пока начал скд смотреть. Руками проще.
79 Конфигуратор1с
 
12.04.12
00:09
(76)ну не совсем из потолка - подбор по методу фифа
80 1C_Enigma
 
12.04.12
00:53
(78)так вот мне эти внутренности и нужны, а не просто названия полей и регистров. И еще. Ко мне можно на "ты", мне всего лишь-то 25 :-)
Фифа, то фифа, главное, чтоб оно возвраты корректно делало
81 Конфигуратор1с
 
12.04.12
00:59
(80)Если утп, то в принципе будет корректно делать, если твои бухи не такие как у меня)))
82 1C_Enigma
 
12.04.12
01:06
У меня нет бухов, есть я :-) и менеджеры...
83 Конфигуратор1с
 
12.04.12
01:09
(82)возвраты тоже делают менеджеры?
84 Конфигуратор1с
 
12.04.12
01:11
В общем будут вопросы - стучи. По утп могу много чего подсказать. На многих граблях нос разбил, знаю где лежат)))
85 1C_Enigma
 
12.04.12
18:59
.....хм....
запрос, вычислили наценку, теперь сравниваю ее с верхней и нижней границей в шкале(справочник у меня такой есть). Вопрос - это сравнение как-то  запросе ваять или лучше при обходе результатов группировок делать?...
86 Конфигуратор1с
 
12.04.12
19:19
(85)В запросе, естественно. Правильные снеговики все ваяют на запросах
87 1C_Enigma
 
12.04.12
20:33
=(
88 MrStomak
 
12.04.12
22:03
(0) Просто бросилось в глаза: Менеджер не может быть Null, пустое значение будет скорее пустой ссылкой на справочник Пользователи. Значение Null для него могло бы появиться в случае внешних соединений таблиц.
89 Конфигуратор1с
 
12.04.12
22:07
(88)а если менеджер не во всех документах?
90 Конфигуратор1с
 
12.04.12
22:07
(87)Чего грустишь? там все просто
91 1C_Enigma
 
12.04.12
22:57
(88) все правильно, менеджер должен быть во всех доках продаж, я потом пустую ссылку на справочник передавала
92 Конфигуратор1с
 
12.04.12
23:07
(91)куда передавала?
93 1C_Enigma
 
13.04.12
01:16
Ну в проверку, условие. В где...
Я тут снеговиковею :-)
94 Конфигуратор1с
 
13.04.12
09:41
(93)просто можно через параметр а можно через предопределенное значение.
95 MrStomak
 
13.04.12
10:04
(89) Если не во всех видах доков-регистраторов есть реквизит менеджер - будет ошибка. Если менеджер незаполнен - будет пустая ссылка. Если менеджер имеет составной тип и не заполнен - будет Неопределено. Null не будет.
96 Конфигуратор1с
 
13.04.12
11:06
(95)"Если не во всех видах доков-регистраторов есть реквизит менеджер - будет ошибка." у меня не ругается.
97 Конфигуратор1с
 
13.04.12
11:25
(95)таки нулл будет.

Вот текст запроса

ВЫБРАТЬ
   ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОбороты.Регистратор.Контрагент) КАК Поле1,
   ТоварыНаСкладахОбороты.КоличествоПриход
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Обороты(, , Регистратор, ) КАК ТоварыНаСкладахОбороты
выдает результат
8,000    Контрагенты
65,001    Null
98 MrStomak
 
13.04.12
12:23
(97) Наверное вы правы, я почему-то думал что ошибка будет =\