Имя: Пароль:
1C
1С v8
ТаблицаЗначений.Свернуть
0 nacinayu1c
 
29.07.11
11:03
ОбластьДопПодвал = Макет.ПолучитьОбласть("ДопПодвал");
   Тз = новый ТаблицаЗначений;
   Тз.Колонки.Добавить("Исполнитель");
   тз.Колонки.Добавить("СуммаИсполнителя");
   
       Запрос=Новый Запрос;
       Запрос.Текст="ВЫБРАТЬ
   |ЗаказНарядИсполнители.Процент,
   |ЗаказНарядРаботы.Работа,
   |ЗаказНарядРаботы.СуммаВсего,
   |ЗаказНарядИсполнители.Исполнитель,
   |ЗаказНарядРаботы.СуммаВсего * ЗаказНарядИсполнители.Процент / 100 КАК СуммаИсполнителя
   |ИЗ
   |Документ.ЗаказНаряд.Исполнители КАК ЗаказНарядИсполнители
   |ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
   |ПО (ЗаказНарядРаботы.ИдентификаторРаботы = ЗаказНарядИсполнители.ИдентификаторРаботы)
   |ГДЕ
   |ЗаказНарядИсполнители.Ссылка = &Исполнитель";
    Запрос.УстановитьПараметр("исполнитель",Ссылка);
       Выборка=Запрос.Выполнить().Выбрать();
       Пока Выборка.Следующий() цикл
           стр = Тз.Добавить();
           Стр.Исплолнитель = выборка.исполнитель;
           Стр.СуммаИсполнителя = выборка.СуммаИсполнителя;
           тз.Свернуть("Исполнитель","СуммаИсполнителя");
           //Ис = выборка.СуммаИсполнителя;
           //Исп= выборка.исполнитель;
           //ОбластьДопПодвал.Параметры.Раб =исп;
           ОбластьДопПодвал.Параметры.Раб =Стр.Исплолнитель;
           Если ПризнакНалички = 1 Тогда
           БазоваяСумма = "35";
       Иначе
           БазоваяСумма = "30";
       КонецЕсли;
           //ОбластьДопПодвал.Параметры.КарманРаба = Ис*(БазоваяСумма/100);
           ОбластьДопПодвал.Параметры.КарманРаба = Стр.СуммаИсполнителя*(БазоваяСумма/100);
           ТабДокумент.Вывести(ОбластьДопПодвал);
   КонецЦикла;
не знаю как свернуть правильно тз помогите
1 vicof
 
29.07.11
11:04
Прочитать СП не предлагать?
2 Jstunner
 
29.07.11
11:04
что не так?
3 vicof
 
29.07.11
11:04
и что значит правильно?
4 Aleksey
 
29.07.11
11:06
А зачем сворачивать после каждого добавления строки?
5 nacinayu1c
 
29.07.11
11:08
читал СП не понимаю путаюсь между 8 и 7
на 7 я бы сделал так Тз = создатьобъект(ТаблицаЗначений);
тз.Новаяколонка("Исполнитель");
Тз.НоваяКолонка("Суммаисполнителя");
//получение данных
Тз.Новаястрока();
Тз.Исвполнитель = //Данные.Исполнитель;
Тз.Суммаисчполнителя = //Данные.Сыммаисполнителя;
Тз.Свернуть("Исполнитель","СуммаФисполнителя");
на 89 это ж не прокатит?
6 salvator
 
29.07.11
11:08
После цикла сворачивай
7 MetaDon
 
29.07.11
11:09
Параметры.КарманРаба -пятнично)
8 salvator
 
29.07.11
11:09
+(6) И вообще, принято полно описывать проблему
9 Шапокляк
 
29.07.11
11:09
Прикольно у вас колонки ТЗ называются
10 hhhh
 
29.07.11
11:19
и почему 35 в кавычках?
11 nacinayu1c
 
29.07.11
11:25
ОбластьДопПодвал = Макет.ПолучитьОбласть("ДопПодвал");
   Тз = новый ТаблицаЗначений;
   Тз.Колонки.Добавить("Исполнитель");
   тз.Колонки.Добавить("СуммаИсполнителя");
   
       Запрос=Новый Запрос;
       Запрос.Текст="ВЫБРАТЬ
   |ЗаказНарядИсполнители.Процент,
   |ЗаказНарядРаботы.Работа,
   |ЗаказНарядРаботы.СуммаВсего,
   |ЗаказНарядИсполнители.Исполнитель,
   |ЗаказНарядРаботы.СуммаВсего * ЗаказНарядИсполнители.Процент / 100 КАК СуммаИсполнителя
   |ИЗ
   |Документ.ЗаказНаряд.Исполнители КАК ЗаказНарядИсполнители
   |ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
   |ПО (ЗаказНарядРаботы.ИдентификаторРаботы = ЗаказНарядИсполнители.ИдентификаторРаботы)
   |ГДЕ
   |ЗаказНарядИсполнители.Ссылка = &Исполнитель";
    Запрос.УстановитьПараметр("исполнитель",Ссылка);
       Выборка=Запрос.Выполнить().Выбрать();
       Пока Выборка.Следующий() цикл
           стр = Тз.Добавить();
           Стр.Исплолнитель = выборка.исполнитель;
           Стр.СуммаИсполнителя = выборка.СуммаИсполнителя;
                       
           //Ис = выборка.СуммаИсполнителя;
           //Исп= выборка.исполнитель;
           //ОбластьДопПодвал.Параметры.Раб =исп;
           //ОбластьДопПодвал.Параметры.Раб = Стр.Исплолнитель;
           Если ПризнакНалички = 1 Тогда
           БазоваяСумма = "35";
       Иначе
           БазоваяСумма = "30";
       КонецЕсли;
           //ОбластьДопПодвал.Параметры.КарманРаба = Ис*(БазоваяСумма/100);
           ОбластьДопПодвал.Параметры.КарманРаба = Стр.СуммаИсполнителя*(БазоваяСумма/100);
           ТабДокумент.Вывести(ОбластьДопПодвал);
   КонецЦикла;
           тз.Свернуть("Исполнитель","СуммаИсполнителя");


При печати Заказ-наряд 0000000035 от 28.07.2011 9:43:48 обнаружены ошибки :
Обработчик печатной формы Заказ-наряд: {Документ.ЗаказНаряд(4649)}: Поле объекта не обнаружено (Исплолнитель)
вылезла теперь эта ошибка
12 hhhh
 
29.07.11
11:26
(11) только редкой души человек может обозвать переменную
"Исплолнитель" !!
13 petrowsky
 
29.07.11
11:27
(0)
убери кавычки с "30" и "35", это ж не строка
зачем тебе ТЗ, помещай в таб. док. сразу из выборки
14 salvator
 
29.07.11
11:27
(11) Ты прикалываешься? Ищи опечатку в коде, е-мое!
15 salvator
 
29.07.11
11:29
тс, ты просто испLOLнитель!
16 nacinayu1c
 
29.07.11
11:42
ошибки исправил но не чего не свернулось что делать?
17 Ненавижу 1С
 
гуру
29.07.11
11:43
(16) яду предлагали?
18 nacinayu1c
 
29.07.11
11:44
(17) :))
19 nacinayu1c
 
29.07.11
11:44
ну блин ну объясните  как правильно сворачивать данные я не прошу написать мне код просто объясните
20 Ненавижу 1С
 
гуру
29.07.11
11:45
зачем сворачивать здесь, если можно получить свернуто в запросе?
21 petrowsky
 
29.07.11
11:46
(19) в запросе СГРУППИРОВАТЬ ПО
22 nacinayu1c
 
29.07.11
11:46
как ???
23 nacinayu1c
 
29.07.11
11:46
по исполнитель??? правильно??
24 petrowsky
 
29.07.11
11:49
Запрос.Текст="ВЫБРАТЬ
   |ЗаказНарядИсполнители.Исполнитель,
   |СУММА(ЗаказНарядРаботы.СуммаВсего * ЗаказНарядИсполнители.Процент / 100) КАК СуммаИсполнителя
   |ИЗ
   |Документ.ЗаказНаряд.Исполнители КАК ЗаказНарядИсполнители
   |ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
   |ПО (ЗаказНарядРаботы.ИдентификаторРаботы = ЗаказНарядИсполнители.ИдентификаторРаботы)
   |ГДЕ
   |ЗаказНарядИсполнители.Ссылка = &Исполнитель"
   |СГРУППИРОВАТЬ ПО
   |     Исполнитель
25 hhhh
 
29.07.11
11:53
рабам только 35% от зарплаты выдают, остальное себе в карман. А если по безналу сразу отправлять в таджикистан, тогда и вовсе 30%.
26 nacinayu1c
 
29.07.11
11:59
опять ошибка
ОбластьДопПодвал = Макет.ПолучитьОбласть("ДопПодвал");    
   Запрос=Новый Запрос;
   Запрос.Текст="ВЫБРАТЬ
   |ЗаказНарядИсполнители.Процент,
   |ЗаказНарядРаботы.Работа,
   |ЗаказНарядРаботы.СуммаВсего,
   |ЗаказНарядИсполнители.Исполнитель,
   |ЗаказНарядРаботы.СуммаВсего * ЗаказНарядИсполнители.Процент / 100 КАК СуммаИсполнителя
   |ИЗ
   |Документ.ЗаказНаряд.Исполнители КАК ЗаказНарядИсполнители
   |ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
   |ПО (ЗаказНарядРаботы.ИдентификаторРаботы = ЗаказНарядИсполнители.ИдентификаторРаботы)
   |ГДЕ
   |ЗаказНарядИсполнители.Ссылка = &Исполнитель
   |СГРУППИРОВАТЬ ПО
   |Исполнитель";
    Запрос.УстановитьПараметр("Исполнитель",Ссылка);
       Выборка=Запрос.Выполнить().Выбрать();
       Пока Выборка.Следующий() цикл
                       
           Ис = выборка.СуммаИсполнителя;
           Исп= выборка.Исполнитель;
           ОбластьДопПодвал.Параметры.Раб =исп;
                       
           Если ПризнакНалички = 1 Тогда
           БазоваяСумма = 35;
       Иначе
           БазоваяСумма = 30;
       КонецЕсли;
           ОбластьДопПодвал.Параметры.КарманРаба = Ис*(БазоваяСумма/100);
           ТабДокумент.Вывести(ОбластьДопПодвал);
   КонецЦикла;
При печати Заказ-наряд 0000000035 от 28.07.2011 9:43:48 обнаружены ошибки :
Обработчик печатной формы Заказ-наряд: {Документ.ЗаказНаряд(4644)}: Ошибка при вызове метода контекста (Выполнить): {(13, 1)}: Синтаксическая ошибка "СГРУПИРОВАТЬ"
<<?>>СГРУПИРОВАТЬ ПО
27 Ненавижу 1С
 
гуру
29.07.11
12:00
(26) может книжку прочитать? а запросы для начала конструктором научиться писать?
28 Шапокляк
 
29.07.11
12:01
ППЦ! СгруППировать. ИспЛОЛнитель ты наш!
29 salvator
 
29.07.11
12:01
(26) Учи русский сначала. Песатель.
30 nacinayu1c
 
29.07.11
12:02
не ту ошибку написал
ОбластьДопПодвал = Макет.ПолучитьОбласть("ДопПодвал");    
   Запрос=Новый Запрос;
   Запрос.Текст="ВЫБРАТЬ
   |ЗаказНарядИсполнители.Процент,
   |ЗаказНарядРаботы.Работа,
   |ЗаказНарядРаботы.СуммаВсего,
   |ЗаказНарядИсполнители.Исполнитель,
   |ЗаказНарядРаботы.СуммаВсего * ЗаказНарядИсполнители.Процент / 100 КАК СуммаИсполнителя
   |ИЗ
   |Документ.ЗаказНаряд.Исполнители КАК ЗаказНарядИсполнители
   |ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
   |ПО (ЗаказНарядРаботы.ИдентификаторРаботы = ЗаказНарядИсполнители.ИдентификаторРаботы)
   |ГДЕ
   |ЗаказНарядИсполнители.Ссылка = &Исполнитель
   |СГРУППИРОВАТЬ ПО
   |Исполнитель";
    Запрос.УстановитьПараметр("Исполнитель",Ссылка);
       Выборка=Запрос.Выполнить().Выбрать();
       Пока Выборка.Следующий() цикл
                       
           Ис = выборка.СуммаИсполнителя;
           Исп= выборка.Исполнитель;
           ОбластьДопПодвал.Параметры.Раб =исп;
                       
           Если ПризнакНалички = 1 Тогда
           БазоваяСумма = 35;
       Иначе
           БазоваяСумма = 30;
       КонецЕсли;
           ОбластьДопПодвал.Параметры.КарманРаба = Ис*(БазоваяСумма/100);
           ТабДокумент.Вывести(ОбластьДопПодвал);
   КонецЦикла;
При печати Заказ-наряд 0000000035 от 28.07.2011 9:43:48 обнаружены ошибки :
Обработчик печатной формы Заказ-наряд: {Документ.ЗаказНаряд(4644)}: Ошибка при вызове метода контекста (Выполнить): {(2, 1)}: Поле не входит в группу "ЗаказНарядИсполнители.Процент"
<<?>>ЗаказНарядИсполнители.Процент,
31 petrowsky
 
29.07.11
12:02
(26) блин, открой конструктор, вторая закладка Группировка
32 Ненавижу 1С
 
гуру
29.07.11
12:03
(30) клиника пятничная
33 petrowsky
 
29.07.11
12:04
(30)
по этапам
1. ставишь курсор на текст запроса
2. жмешь правую клавишу мыши
3. в контекстном меню выбираешь Конструктор запроса
ПРОФИТ
34 nacinayu1c
 
29.07.11
12:20
конструктором получилось так но опять же не чего не свернулось
ОбластьДопПодвал = Макет.ПолучитьОбласть("ДопПодвал");    
   Запрос=Новый Запрос;
   Запрос.Текст="ВЫБРАТЬ
                |    ЗаказНарядИсполнители.Процент,
                |    ЗаказНарядРаботы.Работа,
                |    ЗаказНарядРаботы.СуммаВсего,
                |    ЗаказНарядИсполнители.Исполнитель,
                |    ЗаказНарядРаботы.СуммаВсего * ЗаказНарядИсполнители.Процент / 100 КАК СуммаИсполнителя
                |ИЗ
                |    Документ.ЗаказНаряд.Исполнители КАК ЗаказНарядИсполнители
                |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
                |        ПО (ЗаказНарядРаботы.ИдентификаторРаботы = ЗаказНарядИсполнители.ИдентификаторРаботы)
                |ГДЕ
                |    ЗаказНарядИсполнители.Ссылка = &Исполнитель
                |
                |СГРУППИРОВАТЬ ПО
                |    ЗаказНарядИсполнители.Исполнитель,
                |    ЗаказНарядИсполнители.Процент,
                |    ЗаказНарядРаботы.Работа,
                |    ЗаказНарядРаботы.СуммаВсего";
    Запрос.УстановитьПараметр("Исполнитель",Ссылка);
       Выборка=Запрос.Выполнить().Выбрать();
       Пока Выборка.Следующий() цикл
                       
           Ис = выборка.СуммаИсполнителя;
           Исп= выборка.Исполнитель;
           ОбластьДопПодвал.Параметры.Раб =исп;
                       
           Если ПризнакНалички = 1 Тогда
           БазоваяСумма = 35;
       Иначе
           БазоваяСумма = 30;
       КонецЕсли;
           ОбластьДопПодвал.Параметры.КарманРаба = Ис*(БазоваяСумма/100);
           ТабДокумент.Вывести(ОбластьДопПодвал);
   КонецЦикла;
35 nacinayu1c
 
29.07.11
12:21
хотя в группировку добавлял только исполнитель
36 Ненавижу 1С
 
гуру
29.07.11
12:23
а зачем остальные поля, если они не юзаются?
37 patapum
 
29.07.11
12:23
|    СУММА(ЗаказНарядРаботы.СуммаВсего * ЗаказНарядИсполнители.Процент / 100 КАК СуммаИсполнителя)
и из группировки это поле исключить
38 patapum
 
29.07.11
12:24
+ (37) скорее так )))
|    СУММА(ЗаказНарядРаботы.СуммаВсего * ЗаказНарядИсполнители.Процент / 100) КАК СуммаИсполнителя
39 petrowsky
 
29.07.11
12:28
Запрос.Текст="ВЫБРАТЬ
                |    ЗаказНарядИсполнители.Исполнитель,
                |    СУММА(ЗаказНарядРаботы.СуммаВсего * ЗаказНарядИсполнители.Процент / 100) КАК СуммаИсполнителя
                |ИЗ
                |    Документ.ЗаказНаряд.Исполнители КАК ЗаказНарядИсполнители
                |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
                |        ПО (ЗаказНарядРаботы.ИдентификаторРаботы = ЗаказНарядИсполнители.ИдентификаторРаботы)
                |ГДЕ
                |    ЗаказНарядИсполнители.Ссылка = &Исполнитель
                |
                |СГРУППИРОВАТЬ ПО
                |    ЗаказНарядИсполнители.Исполнитель";
40 hhhh
 
29.07.11
12:30
(39) ЛЕВОЕ СОЕДИНЕНИЕ походу тоже не нужно
41 nacinayu1c
 
29.07.11
12:50
ОбластьДопПодвал = Макет.ПолучитьОбласть("ДопПодвал");    
   Запрос=Новый Запрос;
   Запрос.Текст="ВЫБРАТЬ
                |    ЗаказНарядИсполнители.Процент,
                |    ЗаказНарядРаботы.Работа,
                |    ЗаказНарядРаботы.СуммаВсего,
                |    ЗаказНарядИсполнители.Исполнитель,
                |    ЗаказНарядРаботы.СуммаВсего * ЗаказНарядИсполнители.Процент / 100 КАК СуммаИсполнителя
                |ИЗ
                |    Документ.ЗаказНаряд.Исполнители КАК ЗаказНарядИсполнители
                |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
                |        ПО (ЗаказНарядРаботы.ИдентификаторРаботы = ЗаказНарядИсполнители.ИдентификаторРаботы)
                |ГДЕ
                |    ЗаказНарядИсполнители.Ссылка = &Исполнитель
                |
                |СГРУППИРОВАТЬ ПО
                |    ЗаказНарядИсполнители.Исполнитель";
    Запрос.УстановитьПараметр("Исполнитель",Ссылка);
       Выборка=Запрос.Выполнить().Выбрать();
       Пока Выборка.Следующий() цикл
                       
           ОбластьДопПодвал.Параметры.Раб =выборка.Исполнитель;;
                       
           Если ПризнакНалички = 1 Тогда
           БазоваяСумма = 35;
       Иначе
           БазоваяСумма = 30;
       КонецЕсли;
           ОбластьДопПодвал.Параметры.КарманРаба = выборка.СуммаИсполнителя*(БазоваяСумма/100);
           ТабДокумент.Вывести(ОбластьДопПодвал);
   КонецЦикла;

При печати Заказ-наряд 0000000035 от 28.07.2011 9:43:48 обнаружены ошибки :
Обработчик печатной формы Заказ-наряд: {Документ.ЗаказНаряд(4645)}: Ошибка при вызове метода контекста (Выполнить): {(2, 2)}: Поле не входит в группу "ЗаказНарядИсполнители.Процент"
<<?>>ЗаказНарядИсполнители.Процент,
42 nacinayu1c
 
29.07.11
12:55
(39) тоже не выходит тогда он просто
При печати Заказ-наряд 0000000035 от 28.07.2011 9:43:48 обнаружены ошибки :
Обработчик печатной формы Заказ-наряд: {Документ.ЗаказНаряд()}: Ошибка при вызове метода контекста (Выполнить): {()}: Поле не входит в группу "ЗаказНарядРаботы.СуммаВсего * ЗаказНарядИсполнители.Процент / 100 КАК СуммаИсполнителя,
43 nacinayu1c
 
29.07.11
12:55
блин ну что такое
44 Ненавижу 1С
 
гуру
29.07.11
12:56
читать про SQL
45 nacinayu1c
 
29.07.11
12:58
придется оставить не свернутым блин
46 Ц_У
 
29.07.11
13:37
хотел написать 86? потом посмотрел, ан нет 87...
47 WF72
 
29.07.11
13:58
Автор так и не написал, что же он хочет свернуть и зачем. Для повторного обхода? Короче, уточни сначала.
Автосалон делаешь?
48 Mashinist
 
29.07.11
14:10
А ф т а р продолжает зажигать
Начало здесь v8: заказ наряд выборка работ по сотруднику
49 0xFFFFFF
 
29.07.11
14:11
(0) жестяная жесть.
50 Mashinist
 
29.07.11
14:12
особенно мне нравиться перл


   |ЗаказНарядИсполнители.Ссылка = &Исполнитель";
    Запрос.УстановитьПараметр("исполнитель",Ссылка);

Если учесть, что Ссылка это ссылка на документ Заказ-наряд, то выглядит весьма карсноречиво
51 0xFFFFFF
 
29.07.11
14:14
(34) Должно получиться в итоге так
Пока Выборка.Следующий() цикл
ЗаполнитьЗначенияСвойств(ОбластьДопПодвал.Параметры, Выборка);
ТабДокумент.Вывести(ОбластьДопПодвал);
КонецЦикла;

ВСЕ ОСТАЛЬНОЕ в запросе.
Программист всегда исправляет последнюю ошибку.