Имя: Пароль:
1C
 
Экзамен 1С Специалист. Расчет зарплаты.
0 Jeronimo
 
18.01.06
12:24
Как правильно расчитывать зарплату:
1) через функции ПолучитьДанныеГрафика() и ПолучитьБазу(). Так сделано в курсе 1С по зарплате и в демонстрационной конфигурации на ИТС;
2) извлекать данные с помошью запросов к таблицам ДанныеГрафика и База;

P.S. В поиске нашел несколько таких же вопросов, но ответов нет.
Прошу всех, у кого есть мнение по этому вопросу, приводить его здесь.
1 колодина
 
18.01.06
12:25
на экзамене любят, чтобы через запросы.
2 Jeronimo
 
18.01.06
12:26
(1) Спасибо. Это все так любят или какие-то отдельные экзаменаторы? И почему тогда в курсе и на ИТС по-другому?
3 колодина
 
18.01.06
12:28
(2) не знаю. я когда сдавала на платформу, то  в одном месте сделала расчет не через запрос. так экзаменатор меня попросил прямо сразу написать примерный запрос, посмотрел, что я знаю как это делать и успокоился. я сделала вывод - надо было сразу так сделать.
4 Jeronimo
 
18.01.06
12:36
(0) А еще мнения есть?
5 Vitrus
 
18.01.06
14:00
Через запрос делай. По этому поводу на ИТС даже статья есть. "В производительности разницы нет, а возможностей больше". А курс для начинающих сделан. Через методы проще разобраться что к чему.
6 Jeronimo
 
18.01.06
14:05
(5) А Вы не могли бы привести ссылки на подобные запросы? С таблицей ДанныеГрафика я разобрался, а вот запросы к Базе, когда несколько базовых регистров еще не делал.
7 Vitrus
 
18.01.06
14:19
Лично я Таблицы Баз связывал по Регистратору (и на всякий случай по номеру строки). И делал суммируемое поля двух таблиц Результат база.

PS. Тексты экз. задачек можешь прислать?
8 Jeronimo
 
18.01.06
14:21
(8) Задачки на сайте 1С можно посмотреть. Приведите запрос, пожалуйста.
9 Vitrus
 
18.01.06
14:26
На сайте знаю. Читал "и 2 моих коллег с экзамена".
10 Jeronimo
 
18.01.06
14:27
(9) я пришлю, не проблема. А у Вас есть задачки?
11 Незнайка 1С
 
18.01.06
14:28
примерно так
   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("Регистратор", Регистратор);
   Запрос.УстановитьПараметр("ВидРасчета", ВидРасчета);
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ОсновныеНачисленияДанныеГрафика.НомерСтроки КАК НомерСтроки,
   |    ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.ЗначениеПериодДействия, 0) КАК Норма,
   |    ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.ЗначениеФактическийПериодДействия, 0) КАК Факт";
   Если НеобходимаБаза Тогда
       Запрос.Текст = Запрос.Текст +"
       |    ,ОсновныеНачисленияБазаОсновныеНачисления.РезультатБаза КАК База";
   КонецЕсли;
   Запрос.Текст = Запрос.Текст +"
   |ИЗ
   |    РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(
   |        Регистратор = &Регистратор
   |            И ВидРасчета = &ВидРасчета) КАК ОсновныеНачисленияДанныеГрафика";
   Если НеобходимаБаза Тогда
       Запрос.Текст = Запрос.Текст +"
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисления.БазаОсновныеНачисления(&Измерения,
       |        &Измерения,
       |        ,
       |        ВидРасчета = &ВидРасчета
       |            И Регистратор = &Регистратор) КАК ОсновныеНачисленияБазаОсновныеНачисления
       |        ПО ОсновныеНачисленияДанныеГрафика.НомерСтроки = ОсновныеНачисленияБазаОсновныеНачисления.НомерСтроки";
   КонецЕсли;
   Запрос.Текст = Запрос.Текст +"
   |УПОРЯДОЧИТЬ ПО
   |    НомерСтроки";
12 Vitrus
 
18.01.06
14:29
Да. По этому делу в почту. Здесь Волшебник Запрещает.
13 Jeronimo
 
18.01.06
14:39
(11) Спасибо. Но как выглядит переменная &Измерения?
14 Vitrus
 
18.01.06
14:43
МассивИзмерений = Новый Массив;
МассивИзмерений.Добавить("Сотрудник");
МассивИзмерений.Добавить("Подразделение");
МассивИзмерений.Добавить("Должность");
15 Jeronimo
 
18.01.06
14:43
(14) И это будет работать, если несколько базовых регистров?
16 Незнайка 1С
 
18.01.06
14:49
(15) насколько я понимаю у регистра без периода действия нет виртуальной таблицы графиков, так что запрос должен вылететь в ошибку.
кинь письмо в мыло.
17 Vitrus
 
18.01.06
14:52
Нет! Сколько тут базовых таблиц? Такой и результат.
18 Jeronimo
 
18.01.06
14:55
(17) Меня интересует, когда несколько базовых таблиц

P.S. Я выслал задачи, жду ответа
19 Незнайка 1С
 
18.01.06
15:01
(18) надо писать текст запроса отдельно для каждого регистра.
Одним для всех регистров может и можно извратиться, но проще сделать по отдельности, так как виртуальные таблицы баз могут разные оказаться.
20 Jeronimo
 
18.01.06
16:05
(19) Несколько запросов - совсем некрасиво получается, может быть использовать ОБЪЕДИНИТЬ...
21 Незнайка 1С
 
18.01.06
16:34
(20) Это тебе не УТ.
сначала надо рассчитать основные начисления, записать. если в них база как ты будешь по ним запрос то делать? Вернее чего толку то делать. База будет пустая в запросе, так как она не рассчитана и не записана.
и сами начисления надо тоже по порядку рассчитывать и записывать.
как ты будешь базу по премии считать если у тебя оклад не рассчитан например, а база в этом месяце считается с оклада?
в каркасной есть реквизит порядок. я по нему группировал виды расчетов в наборе и запрос делал на виды расчета с одним порядком.
22 Jeronimo
 
18.01.06
16:47
(21) В каркасной есть реквизит Порядок?
О необходимости записи я знаю. Пример: нужно расчитать отпуск по данным предыдущих трех месяцев, базовые виды для отпуска - оклад(регистр ОсновныеНачисления) и премия (регистр ДопНачисления).
Как строить запрос?
23 Незнайка 1С
 
18.01.06
17:12
а в чем проблема то?
допиши к фунции формирующей запрос еще одну переменную типа НужнаБазаПоДопНачислениям и устанавливай ей когда надо истину и добавь в текст запроса запрос к регистру по базе доп начислений.
по уму вообще то для средней зарплаты делают отдельный регистр и ПВР. Но там надо и отдельный документ делать.
А какой смысл выносить премию в отдельный регистр?
24 Jeronimo
 
18.01.06
17:21
(23) "А какой смысл выносить премию в отдельный регистр?"
Так сделано в каркасной
25 Незнайка 1С
 
18.01.06
17:27
(24) вбей свою чтоб не маятся.
или разбивай на виды расчета и для премии делай отдельный запрос. тоже не сложно думаю.
26 Jeronimo
 
18.01.06
19:30
(24) у премии нет периода действия и базового периода. поэтому она в отдельноме регистре
27 Незнайка 1С
 
19.01.06
09:48
(26) деление на регистры довольно условное. Как правило, сходные ВР забивают в один ПВР и регистр, но ничего не мешает забить все начисления в один.
У премии есть базовый период, иначе за какой период ты базу получишь?
если на регистре основных начислений нет галки базвый период, то поставь и не мучайся. Все будет работать как надо.
А кстати, где у тебя премия?
28 Jeronimo
 
19.01.06
13:57
(27) Премия в дополнительных начислениях, у нее нет базового периода, потому что она зависит от выработки а не от базы
29 Незнайка 1С
 
19.01.06
14:02
ну если в таком контексте то я вообще не вижу проблем забить её в основные начисления.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший