Имя: Пароль:
1C
1С v8
заказ наряд выборка работ по сотруднику
0 nacinayu1c
 
28.07.11
20:56
документ.ЗаказНаряд
есть две таблицы
1. работы
2. испонители
1.-работа -/-сумма
2. исполнитель -/- процентучастия
организация работает за наличный и без наличный расчет
программа внутренняя
за наличный расчет исполнителю отходит 35% от суммы работ что проделал именно этот сотрудник а не суммы всего документа
за без наличный исполнителю отходит 30% от суммы работ что проделал именно этот сотрудник а не суммы всего документа
в в печатной форме заказ наряда нужно вывести Исполнителя и сумму его заработка именно что за то что он проделал
для чего процентучастия
для того если одну работу делали несколько исполнителей

я сделал вот так но это не правильно здесь я получи сумму всех работ а нужно  сумма всех работ что делал текущий сотрудник

как зделать выборку работ по сотруднику??

ОбластьДопПодвал = Макет.ПолучитьОбласть("ДопПодвал");
   Масиврабочих = Исполнители.Выгрузить();
   Масиврабочих.Свернуть("Исполнитель,Процент");
     Для каждого Исполнитель Из Масиврабочих  Цикл
           ОбластьДопПодвал.Параметры.Раб = Исполнитель.Исполнитель;
           Сумм = ИтогоСуммаРабот;
           //сумм = запрос
           Проц = Сумм *(Исполнитель.Процент/100);
           Если ПризнакНалички = 1 Тогда
           БазоваяСумма = "35";
       Иначе
           БазоваяСумма = "30";
       Конецесли;
           ОбластьДопПодвал.Параметры.КарманРаба = Проц*(БазоваяСумма/100);
           ТабДокумент.Вывести(ОбластьДопПодвал);
   КонецЦикла;

поможете???
1 nacinayu1c
 
28.07.11
21:01
Проц = Сумм *(Исполнитель.Процент/100);
проц - это сумма после умножения суммы работ проделанных исполнителем на процент участия в работах  
сумм - должно быть суммавсех работ что делал конкретный исполнитель (сейчас сумма всех работа то есть всего документа
Исполнитель.Процент - это процент участия исполнителя
2 nacinayu1c
 
28.07.11
21:04
мне поможет кто?? или опять не понятно написал???
3 nacinayu1c
 
28.07.11
21:09
Конструктором запроса пользоваться не умею да и сам запрос не напишу помогите а
4 nacinayu1c
 
28.07.11
21:11
что на форуме нет ни кого??
5 nacinayu1c
 
28.07.11
21:16
вот блин уже написал вроде доступно все равно молчат
6 nacinayu1c
 
28.07.11
21:18
пробую конструктором пользоваться так будет правильно??

ВЫБРАТЬ
   ЗаказНарядИсполнители.Исполнитель,
   ЗаказНарядИсполнители.Процент,
   ЗаказНарядРаботы.Работа,
   ЗаказНарядРаботы.Сумма
ИЗ
   Документ.ЗаказНаряд.Исполнители КАК ЗаказНарядИсполнители
       ПОЛНОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
       ПО ЗаказНарядИсполнители.Исполнитель = ЗаказНарядРаботы.Работа
7 nacinayu1c
 
28.07.11
21:20
или так правильно ??
   "ВЫБРАТЬ
   |    ЗаказНарядИсполнители.Исполнитель КАК Исполнитель,
   |    ЗаказНарядИсполнители.Процент КАК Процент,
   |    ЗаказНарядРаботы.Работа КАК Работа,
   |    ЗаказНарядРаботы.Сумма КАК Сумма
   |ИЗ
   |    Документ.ЗаказНаряд.Исполнители КАК ЗаказНарядИсполнители
   |        ПОЛНОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
   |        ПО ЗаказНарядИсполнители.Исполнитель = ЗаказНарядРаботы.Работа
   |
   |УПОРЯДОЧИТЬ ПО
   |    Исполнитель,
   |    Процент,
   |    Работа,
   |    Сумма
   |ИТОГИ ПО
   |    Сумма"
8 nacinayu1c
 
28.07.11
21:27
(6) B (7) НЕ КАТИТ
9 nacinayu1c
 
28.07.11
21:34
я не понимаю куда все делись?
10 Rie
 
28.07.11
21:45
(7) И что должно означать ИТОГО ПО Сумма?
И каков смысл соединять Исполнитель и Работа? Это разве одно и то же?
11 nacinayu1c
 
28.07.11
21:47
(10) и это я побывал создать запрос чтоб сделать выборку
я не умею пользоваться конструктором запросов да и не знаю как написать помоги плизззззззз
12 nacinayu1c
 
28.07.11
21:50
да что такое
13 Rie
 
28.07.11
21:50
(11) Давай ещё раз попробуй. Есть две табличных части - Исполнители и Работы. Чтобы их соединять - нужно некоторое общее значение. То есть, исполнителя из Исполнители соединить с исполнителем из Работы (если такие есть). Или работу из Исполнители с работой из Работы (если такие есть).
14 nacinayu1c
 
28.07.11
21:51
(13) блин не чего не понял емае  пол дня просидел на форуме
15 nacinayu1c
 
28.07.11
21:51
у меня уже голова не варит а сделать нужно
16 Rie
 
28.07.11
21:51
(12) Не торопись, а то успеешь.
Понятно, что тебе срочно надо - но это не означает, что все остальные должны всё бросить (кстати, рабочий день уже закончился, так что ты хочешь заставить работать на тебя во внеурочное время) и кидаться писать тебе запрос.
17 Rie
 
28.07.11
21:52
(15) Делай, раз нужно.
Не суетись, а хотя бы напиши - какие реквизиты у этих табличных частей имеются.
18 nacinayu1c
 
28.07.11
21:52
соединить с исполнителем из Работы
но веть в тал части работа не реквизита исполнитель
19 nacinayu1c
 
28.07.11
21:53
ок секу
20 Alexey87
 
28.07.11
21:54
(0) Альфа-Авто?
21 nacinayu1c
 
28.07.11
21:56
табл часть работа
номерстроки,код,работы,количество,нормачас,нормавремени,цена,сумма,%скидки,скидка,всего,%НДС,НДС,идентификатор строки работы
табл цасть исполнители
исполнитель,%участия,Цех,идентификатор строки исполнителя
22 nacinayu1c
 
28.07.11
21:56
(20) да
23 Rie
 
28.07.11
21:59
(21) Судя по всему, по идентификаторам строк и надо связывать.
24 Alexey87
 
28.07.11
22:00
(22)там есть регистр "Выработка исполнителей", туда падает вся выработка по заказ-наряду в зависимости от процента участия в каждой из работ. Сгруппируй по исполнителю, получи по нему количество нормо-часов и сумму выработки - не знаю, что именно тебе надо. В заказ-наряде есть реквизит ВидОплаты, в зависимости от него, как я понял, и находи в самом запросе процент от этой суммы. Все
25 nacinayu1c
 
28.07.11
22:03
(24) можешь подробней честно сказать на ВидОплаты не обращал внимаия  помоги мне плиззз не получится у меня потому что я просто на просто не умею писать запросу
26 nacinayu1c
 
28.07.11
22:09
так? что то мне кажется что нет
"ВЫБРАТЬ
    |    ВыработкаСотрудников.Сотрудник,
    |    ВыработкаСотрудников.Количество,
    |    ВыработкаСотрудников.СуммаУпр КАК СуммаУпр,
    |    ВыработкаСотрудников.СуммаУпрСоСкидкой
    |ИЗ
    |    РегистрНакопления.ВыработкаСотрудников КАК ВыработкаСотрудников
    |
    |СГРУППИРОВАТЬ ПО
    |    ВыработкаСотрудников.Сотрудник,
    |    ВыработкаСотрудников.Количество,
    |    ВыработкаСотрудников.СуммаУпр,
    |    ВыработкаСотрудников.СуммаУпрСоСкидкой
    |ИТОГИ ПО
    |    СуммаУпр"
27 nacinayu1c
 
28.07.11
22:12
опять затишье
28 nacinayu1c
 
28.07.11
22:14
ошибка чтения значения не работает мой запрос
29 Alexey87
 
28.07.11
22:15
в (26) полная чушь, читай ЖКК, в (24) все написано
30 nacinayu1c
 
28.07.11
22:16
(29) ну помаги мне
31 nacinayu1c
 
28.07.11
22:17
или дай ссылку на описание работы с конструктором запросов или ссулку на пример
32 nacinayu1c
 
28.07.11
22:22
"ВЫБРАТЬ
    |    ВыработкаСотрудников.СуммаУпр
    |ИЗ
    |    РегистрНакопления.ВыработкаСотрудников КАК ВыработкаСотрудников"

уже теплее???
33 nacinayu1c
 
28.07.11
22:22
или тоже не правильно??
34 nacinayu1c
 
28.07.11
22:24
(29) как мне просто из этого регистра получить сумму работ этого сотрудника???
35 Mashinist
 
28.07.11
22:31
т.к. нужно при печати, то если документ не проведен в регистрах ничего не найдешь

Связать две табличные части Работ и Исполнителей можно по реквизиту ИдентификаторРаботы, который есть в обеих ТЧ т.к. может быть связь один ко многим

Так что ничего особо сложного нет даже если написать в стиле 7.7
36 nacinayu1c
 
28.07.11
22:39
(35) ИдентификаторРаботы он ведь только у тал части работа
37 nacinayu1c
 
28.07.11
22:42
ТекстЗапроса ="
      | ВЫБРАТЬ
      |    ВыработкаСотрудников.СуммаУпр
      |ИЗ
      |    РегистрНакопления.ВыработкаСотрудников КАК ВыработкаСотрудников
      |ГДЕ
      |    ВыработкаСотрудников.Сотрудник = &Сотрудник";
      Запрос = Новый Запрос();
       Запрос.Текст = ТекстЗапроса;
       Выборка = Запрос.Выполнить().Выбрать();
       
       
       ОбластьДопПодвал = Макет.ПолучитьОбласть("ДопПодвал");
        Масиврабочих = Исполнители.Выгрузить();
        Масиврабочих.Свернуть("Исполнитель,Процент");
     Для каждого Исполнитель Из Масиврабочих  Цикл
           ОбластьДопПодвал.Параметры.Раб = Исполнитель.Исполнитель;
           Сумм = ИтогоСуммаРабот;
           //сумм = запрос
           Проц = Сумм *(Исполнитель.Процент/100);
           Если ПризнакНалички = 1 Тогда
           БазоваяСумма = "35";
       Иначе
           БазоваяСумма = "30";
       Конецесли;
           ОбластьДопПодвал.Параметры.КарманРаба = Проц*(БазоваяСумма/100);
           ТабДокумент.Вывести(ОбластьДопПодвал);
   КонецЦикла;


чегото у меня ошибка


При печати Заказ-наряд А000000006 от 27.06.2011 23:43:13 обнаружены ошибки :
Обработчик печатной формы Заказ-наряд: {Документ.ЗаказНаряд(4625)}: Ошибка при вызове метода контекста (Выполнить): {(7, 35)}: Не задано значение параметра "Сотрудник"
ВыработкаСотрудников.Сотрудник = <<?>>&Сотрудник
38 Mashinist
 
28.07.11
22:43
(36)нет
Он и у ТЧ Исполнители тоже
39 nacinayu1c
 
28.07.11
22:43
или я опять запрос не правильно написал??
40 nacinayu1c
 
28.07.11
22:44
Идентификатор строки работы тч исполнитель
Идентификатор строки работы тч работа
точно есть так как мне получить сумму работ этого сотра
41 Mashinist
 
28.07.11
22:46
(37) А чего удивляться?
Не задано значение параметра "Сотрудник"
Запрос.УстановитьПараметр(...) где?
Вы вообще давно 8-ку увидели?

(40) Странно
Вроде все растолковал
У меня есть подозрение, что Вы не программист
42 nacinayu1c
 
28.07.11
22:47
да я с8 не дружу но и с 7 плохо только учусь
43 nacinayu1c
 
28.07.11
22:47
(41) помогите мне
44 nacinayu1c
 
28.07.11
22:49
ВЫБРАТЬ
   ЗаказНарядРаботы.ИдентификаторРаботы,
   ЗаказНарядИсполнители.ИдентификаторРаботы КАК ИдентификаторРаботы1
ИЗ
   Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд.Исполнители КАК ЗаказНарядИсполнители
       ПО ЗаказНарядРаботы.ИдентификаторРаботы = ЗаказНарядИсполнители.ИдентификаторРаботы
что то опять не так получилось
45 Mashinist
 
28.07.11
22:51
(43)Писать код сейчас некогда. Бабло зарабатывать надо

(44) Левое соединение надо
46 nacinayu1c
 
28.07.11
22:52
ВЫБРАТЬ
   ЗаказНарядРаботы.ИдентификаторРаботы,
   ЗаказНарядИсполнители.ИдентификаторРаботы КАК ИдентификаторРаботы1
ИЗ
   Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд.Исполнители КАК ЗаказНарядИсполнители
       ПО ЗаказНарядРаботы.Работа = ЗаказНарядИсполнители.Исполнитель
так?? или опять не то??
47 nacinayu1c
 
28.07.11
22:53
дайте ссылку по описанию языка работы с запросами
48 nacinayu1c
 
28.07.11
22:57
Запрос=Новый Запрос;
       Запрос.Текст="ВЫБРАТЬ
    |    ЗаказНарядРаботы.ИдентификаторРаботы,
    |    ЗаказНарядИсполнители.ИдентификаторРаботы КАК ИдентификаторРаботы1
    |ИЗ
    |    Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд.Исполнители КАК ЗаказНарядИсполнители
    |        ПО ЗаказНарядРаботы.Работа = ЗаказНарядИсполнители.Исполнитель";
     Запрос.УстановитьПараметр("ЗаказНаряд",Ссылка);
       Выборка=Запрос.Выполнить().Выбрать();
49 nacinayu1c
 
28.07.11
22:58
так правильно???
50 nacinayu1c
 
28.07.11
23:08
помоги плиз (45)
51 nacinayu1c
 
28.07.11
23:09
как получить переменную "Исполнитель??"
52 Mashinist
 
28.07.11
23:11
(50) чем помочь?
Написать готовый код?
На выходных готов за скромное вознаграждения
На уровне идей я тебе уже все рассказал

Запросом для тебя будет явно сложно. Похоже ты вообще не понимаешь, что должен запрос возвращать
Какую ты таблицу хочешь увидеть в результате запроса?
53 nacinayu1c
 
28.07.11
23:13
я хочу в результате запроса увидеть сумму из тч работа
54 nacinayu1c
 
28.07.11
23:13
ну помагите вам же это дело 5ти минут вы же знаете как это сделать
55 Mashinist
 
28.07.11
23:14
Вот тебе готовый запрос

ВЫБРАТЬ
   ЗаказНарядИсполнители.Процент,
   ЗаказНарядРаботы.Работа,
   ЗаказНарядРаботы.СуммаВсего,
   ЗаказНарядИсполнители.Исполнитель,
   ЗаказНарядРаботы.СуммаВсего * ЗаказНарядИсполнители.Процент / 100 КАК СуммаИсполнителя
ИЗ
   Документ.ЗаказНаряд.Исполнители КАК ЗаказНарядИсполнители
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
       ПО (ЗаказНарядРаботы.ИдентификаторРаботы = ЗаказНарядИсполнители.ИдентификаторРаботы)
ГДЕ
   ЗаказНарядИсполнители.Ссылка = &Ссылка

не только сумму из ТЧ работы увидишь, но еще и сумму исполнителя согласно его % участия

Останется только перебрать результаты запроса
56 Mashinist
 
28.07.11
23:15
ну и взять твой % в зависимости от нал/безнал
57 Mashinist
 
28.07.11
23:16
хотя... вообще все в запрос можно вставить...
58 nacinayu1c
 
28.07.11
23:17
ок спасибо льшое
59 nacinayu1c
 
28.07.11
23:22
Запрос.УстановитьПараметр("?",?);
что под вопросами вставить??
60 Либерал
 
28.07.11
23:24
вот ты зануда
почитай уже что то сам
61 nacinayu1c
 
28.07.11
23:26
так правильно будет?
  Запрос=Новый Запрос;
       Запрос.Текст="ВЫБРАТЬ
   |ЗаказНарядИсполнители.Процент,
   |ЗаказНарядРаботы.Работа,
   |ЗаказНарядРаботы.СуммаВсего,
   |ЗаказНарядИсполнители.Исполнитель,
   |ЗаказНарядРаботы.СуммаВсего * ЗаказНарядИсполнители.Процент / 100 КАК СуммаИсполнителя
|ИЗ
   |Документ.ЗаказНаряд.Исполнители КАК ЗаказНарядИсполнители
       |ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
       |ПО (ЗаказНарядРаботы.ИдентификаторРаботы = ЗаказНарядИсполнители.ИдентификаторРаботы)
|ГДЕ
   |ЗаказНарядИсполнители.Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Исполнители",Ссылка);
       Выборка=Запрос.Выполнить().Выбрать();
62 nacinayu1c
 
28.07.11
23:31
При печати Заказ-наряд А000000006 от 27.06.2011 23:43:13 обнаружены ошибки :
Обработчик печатной формы Заказ-наряд: {Документ.ЗаказНаряд(4624)}: Ошибка при вызове метода контекста (Выполнить): {(12, 32)}: Не задано значение параметра "Ссылка"
ЗаказНарядИсполнители.Ссылка = <<?>>&Ссылка
63 nacinayu1c
 
28.07.11
23:33
блин да что такое
64 nacinayu1c
 
28.07.11
23:34
последний раз и все и я отстану
65 nacinayu1c
 
28.07.11
23:39
аук ну дайте ссылку на описание языка запросов
66 nacinayu1c
 
28.07.11
23:43
все сам доделал спасибо все м
   Запрос=Новый Запрос;
       Запрос.Текст="ВЫБРАТЬ
   |ЗаказНарядИсполнители.Процент,
   |ЗаказНарядРаботы.Работа,
   |ЗаказНарядРаботы.СуммаВсего,
   |ЗаказНарядИсполнители.Исполнитель,
   |ЗаказНарядРаботы.СуммаВсего * ЗаказНарядИсполнители.Процент / 100 КАК СуммаИсполнителя
|ИЗ
   |Документ.ЗаказНаряд.Исполнители КАК ЗаказНарядИсполнители
       |ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
       |ПО (ЗаказНарядРаботы.ИдентификаторРаботы = ЗаказНарядИсполнители.ИдентификаторРаботы)
|ГДЕ
   |ЗаказНарядИсполнители.Ссылка = &Исполнитель";
    Запрос.УстановитьПараметр("исполнитель",Ссылка);
       Выборка=Запрос.Выполнить().Выбрать();
       Пока Выборка.Следующий() цикл
           Ис = выборка.СуммаИсполнителя;
       конецЦикла;
Независимо от того, куда вы едете — это в гору и против ветра!