Автор Тема: Билет 1. Спец по платформе V8  (Прочитано 256078 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 1. Спец по платформе V8
« Ответ #240 : Ноябрь 10, 2016, 03:50:40 pm »
Что, если в РС СведенияОСотрудниках нет записей на 01.месяц.
Проверять. И если по какому-то из сотрудников информации нет, отказывать в проведении документа.

filiMike

  • Пользователь
  • **
  • Сообщений: 15
  • Полезные ссылки для подготовки к экз по платформе:
  • ФИО: Михаил Филимонов
Re: Билет 1. Спец по платформе V8
« Ответ #241 : Ноябрь 10, 2016, 03:59:28 pm »
Что, если в РС СведенияОСотрудниках нет записей на 01.месяц.
Проверять. И если по какому-то из сотрудников информации нет, отказывать в проведении документа.

Правильно понимаю, что наличие на первое число в РС СведенияОСотрудниках обязательно?

"Первоначальное значение оклада может изменяться не чаще, чем один раз в день, но берется на начало расчетного периода"

Формально начало месяца не обязательно первое число месяца.
« Последнее редактирование: Ноябрь 10, 2016, 04:15:54 pm от filiMike »


filiMike

  • Пользователь
  • **
  • Сообщений: 15
  • Полезные ссылки для подготовки к экз по платформе:
  • ФИО: Михаил Филимонов
Re: Билет 1. Спец по платформе V8
« Ответ #242 : Ноябрь 10, 2016, 05:28:48 pm »
Посмотрел повнимательнее- я  был неправ, вводил 2016 год, а расчеты  в 2015. Всем кого смутил, прошу прощения.

alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 1. Спец по платформе V8
« Ответ #243 : Ноябрь 10, 2016, 06:29:39 pm »
Формально начало месяца не обязательно первое число месяца.
А какие еще варианты?
Правильно понимаю, что наличие на первое число в РС СведенияОСотрудниках обязательно?
Сделайте обязательным.
Хотя, для реальной задачи надо конечно учитывать приемы в течение месяца.
Но для экз, думаю, можно сделать точно как написано - раз на начало, значит, обязуем юзера вводить оклады именно на начало месяца, в котором принят сотрудник, и для решения это будет проще.

erdem.badluev

  • Проверенный
  • ***
  • Сообщений: 139
Re: Билет 1. Спец по платформе V8
« Ответ #244 : Ноябрь 11, 2016, 05:13:55 am »
Моё обновленное решение.
В предыдущем был не верным запрос по окладу в НачислениеЗарплаты.

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


UPD: http://forum.chistov.pro/index.php?topic=3638.msg49160#msg49160
« Последнее редактирование: Декабрь 01, 2016, 05:57:29 am от erdem.badluev »

veleeh

  • Новичок
  • *
  • Сообщений: 1
Re: Билет 1. Спец по платформе V8
« Ответ #245 : Ноябрь 20, 2016, 03:01:51 pm »
Моё обновленное решение.

Посмотрел, сам прорешиваю пока только ОУ и расчеты, по ним есть вопросы:

ОУ:
1. Отчет ОсткаткиТоваров у Вас неправильный. Надо: тип отчета - список, РасположениеПолейГруппировок - Отдельно и только в итогах, РасположениеОбщихИтоговПоВертикали/горизонтале - нет.

Расчеты:
1. В регистре ГрафикиРаботы ресурс значение число (5,2), я считаю должно быть (1,0).
2. Совместительства нет, в отчете подразделений нет. Зачем в регистре расчета реквизит подразделение?
3. Вложенные запросы - это плохо, лучше все делать виртуальными таблицами в пакете.
4. Измерения регистров по которым будут соединения таблиц надо интексировать.
5. Почему нет реквизита Оклад в регистре основных начислений? Он не используется для отчета, но все равно все параметры по которым был расчет конкретного документа должны быть где-то в базе - или в документе или в регистре.
« Последнее редактирование: Ноябрь 20, 2016, 04:53:32 pm от veleeh »

erdem.badluev

  • Проверенный
  • ***
  • Сообщений: 139
Re: Билет 1. Спец по платформе V8
« Ответ #246 : Ноябрь 21, 2016, 10:21:44 am »
Моё обновленное решение.

Посмотрел, сам прорешиваю пока только ОУ и расчеты, по ним есть вопросы:

ОУ:
1. Отчет ОсткаткиТоваров у Вас неправильный. Надо: тип отчета - список, РасположениеПолейГруппировок - Отдельно и только в итогах, РасположениеОбщихИтоговПоВертикали/горизонтале - нет.

Расчеты:
1. В регистре ГрафикиРаботы ресурс значение число (5,2), я считаю должно быть (1,0).
2. Совместительства нет, в отчете подразделений нет. Зачем в регистре расчета реквизит подразделение?
3. Вложенные запросы - это плохо, лучше все делать виртуальными таблицами в пакете.
4. Измерения регистров по которым будут соединения таблиц надо интексировать.
5. Почему нет реквизита Оклад в регистре основных начислений? Он не используется для отчета, но все равно все параметры по которым был расчет конкретного документа должны быть где-то в базе - или в документе или в регистре.

ОУ:
1: Да, на время решения не знал, что отчет один-в-один должен быть как в задании.
 Расчеты:
1: Да, вы правы. У меня излишняя длина и точность для (почти всегда) значения=1.
2: Для соединения с регистром сведений СведенияОСотрудниках по сотруднику и подразделению.
3: Да, плохо. В дальнейшем пострараюсь без них обойтись.
4: Думал, если установить галку "Базовое" система итак проиндексирует. Нет?
5: Оклад хранится в регистре сведений СведенияОСотрудниках. Зачем его копировать в регистр расчета? дублирование информации получится...

kimskiysanya

  • Пользователь
  • **
  • Сообщений: 54
  • ФИО: Kim Sasha
Re: Билет 1. Спец по платформе V8
« Ответ #247 : Ноябрь 21, 2016, 03:46:51 pm »
Где то встречал что к этому билету есть изменение в СПР. Необходимо предусмотреть возможность ввода новых видов расчет в режиме предприятия с сохранением возможности их расчета по реализованным алгоритмам. Кто нибудь может встречал реализацию этой задачи хотя бы примерно?
« Последнее редактирование: Ноябрь 21, 2016, 04:02:14 pm от kimskiysanya »

Вася

  • Пользователь
  • **
  • Сообщений: 36
Re: Билет 1. Спец по платформе V8
« Ответ #248 : Ноябрь 21, 2016, 04:18:54 pm »
Где то встречал что к этому билету есть изменение в СПР. Необходимо предусмотреть возможность ввода новых видов расчет в режиме предприятия с сохранением возможности их расчета по реализованным алгоритмам. Кто нибудь может встречал реализацию этой задачи хотя бы примерно?

В план видов расчета добавляете реквизит к примеру "МетодРасчета" - это перечисление, добавляете туда значения вроде "ПроцентОтПремии" или "БазаОтОклада", вообщем те алгоритмы которые вы реализовали в СПР. И дальше в обработке проведения документа "Начисление зп" и в модуле где идет собственно расчет, отталкиваетесь от значения этого реквизита. Неплохо бы еще добавить туда реквизит порядок, чтобы расчет начислений не сбился (сначала оклад, а потом премия с базой от него).

Только это условие по моему попадается в 4 билете. 
« Последнее редактирование: Ноябрь 21, 2016, 04:20:28 pm от Вася »

kimskiysanya

  • Пользователь
  • **
  • Сообщений: 54
  • ФИО: Kim Sasha
Re: Билет 1. Спец по платформе V8
« Ответ #249 : Ноябрь 23, 2016, 02:29:19 pm »
В план видов расчета добавляете реквизит к примеру "МетодРасчета" - это перечисление, добавляете туда значения вроде "ПроцентОтПремии" или "БазаОтОклада", вообщем те алгоритмы которые вы реализовали в СПР. И дальше в обработке проведения документа "Начисление зп" и в модуле где идет собственно расчет, отталкиваетесь от значения этого реквизита. Неплохо бы еще добавить туда реквизит порядок, чтобы расчет начислений не сбился (сначала оклад, а потом премия с базой от него).

Только это условие по моему попадается в 4 билете.

Спасибо, в целом понятно.

xvip007

  • Пользователь
  • **
  • Сообщений: 50
Re: Билет 1. Спец по платформе V8
« Ответ #250 : Ноябрь 28, 2016, 04:10:52 pm »
В итоге на данный момент какая методика проведения в этом билете на экзамене зачитывается ?

По хорошему: здесь и так для решения 2 регистра используется и очень удобно новой методикой решать, думаю так даже оптимальней.
Но в старых решениях, которые ещё SAE выкладывал - старая методика, хотя те же 2 регистра (остатки по складам, и стоимости партий).

alrodk

  • Пользователь
  • **
  • Сообщений: 16
  • ФИО: Алексей
Re: Билет 1. Спец по платформе V8
« Ответ #251 : Ноябрь 28, 2016, 05:28:51 pm »
Подскажите, пожалуйста, так можно использовать функцию МАКСИМУМ(Склад)? (Задача ОУ):

ВЫБРАТЬ
ВТ_СписокНоменклатуры.Номенклатура КАК Номенклатура,
ВТ_СписокНоменклатуры.Количество КАК Количество,
ВТ_СписокНоменклатуры.Склад КАК Склад,
ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоСклад,
СебестоимостьНоменклатурыОстатки.Партия,
ЕСТЬNULL(СебестоимостьНоменклатурыОстатки.КоличествоОстаток, 0) КАК СебестоимостьКоличество,
ЕСТЬNULL(СебестоимостьНоменклатурыОстатки.СуммаОстаток, 0) КАК СебестоимостьСумма
ИЗ
ВТ_СписокНоменклатуры КАК ВТ_СписокНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
&МоментВремени,
(Склад, Номенклатура) В
(ВЫБРАТЬ
ВТ_СписокНоменклатуры.Склад,
ВТ_СписокНоменклатуры.Номенклатура
ИЗ
ВТ_СписокНоменклатуры КАК ВТ_СписокНоменклатуры)) КАК ОстаткиНоменклатурыОстатки
ПО ВТ_СписокНоменклатуры.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
И ВТ_СписокНоменклатуры.Склад = ОстаткиНоменклатурыОстатки.Склад
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СебестоимостьНоменклатуры.Остатки(
&МоментВремени,
Номенклатура В
(ВЫБРАТЬ
ВТ_СписокНоменклатуры.Номенклатура
ИЗ
ВТ_СписокНоменклатуры КАК ВТ_СписокНоменклатуры)) КАК СебестоимостьНоменклатурыОстатки
ПО ВТ_СписокНоменклатуры.Номенклатура = СебестоимостьНоменклатурыОстатки.Номенклатура

УПОРЯДОЧИТЬ ПО
СебестоимостьНоменклатурыОстатки.Партия.МоментВремени УБЫВ
ИТОГИ
МАКСИМУМ(Количество),
МАКСИМУМ(Склад),
МАКСИМУМ(КоличествоСклад)
ПО
Номенклатура
« Последнее редактирование: Ноябрь 28, 2016, 05:32:22 pm от alrodk »

erdem.badluev

  • Проверенный
  • ***
  • Сообщений: 139
Re: Билет 1. Спец по платформе V8
« Ответ #252 : Ноябрь 29, 2016, 12:46:49 pm »
Подскажите, пожалуйста, так можно использовать функцию МАКСИМУМ(Склад)? (Задача ОУ):

а для чего склад в итогах нужен?
если сначала нужно списать по складу указанному в строке документа (и если не хватает по остальным складам), тогда сделай еще поле ПОРЯДОК где проверив равенство склада на склад из строки документа установишь его 0 а остальное 1, затем сортируй по этому полю.

alrodk

  • Пользователь
  • **
  • Сообщений: 16
  • ФИО: Алексей
Re: Билет 1. Спец по платформе V8
« Ответ #253 : Ноябрь 29, 2016, 02:57:38 pm »
Подскажите, пожалуйста, так можно использовать функцию МАКСИМУМ(Склад)? (Задача ОУ):

а для чего склад в итогах нужен?
если сначала нужно списать по складу указанному в строке документа (и если не хватает по остальным складам), тогда сделай еще поле ПОРЯДОК где проверив равенство склада на склад из строки документа установишь его 0 а остальное 1, затем сортируй по этому полю.

Все понял убрал склад из запроса.
При формировании движений хотел не разбивать по партиям движения регистра ОстаткиНоменклатуры.
Сделал вот так:
Пока ВыборкаНоменклатура.Следующий() Цикл

НадоСписать = ВыборкаНоменклатура.КоличествоДок;

Нехватка = Выборка.КоличествоДок - Выборка.КоличествоСклад;

Если Нехватка > 0 Тогда
Сообщить("На складе "+Склад+" не хватает товара "+Выборка.Номенклатура+" в количестве "+Нехватка);
Отказ = Истина;
Возврат;
КонецЕсли;

Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = НадоСписать;

Выборка = ВыборкаНоменклатура.Выбрать();

Пока Выборка.Следующий() И НадоСписать > 0 Цикл

Списываем = Мин(НадоСписать, Выборка.СебестоимостьКоличество);

Движение = Движения.СебестоимостьНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Партия = Выборка.Партия;
Движение.Количество = Списываем;
Движение.Сумма = ?(Списываем = Выборка.СебестоимостьКоличество, Выборка.СебестоимостьСумма, Списываем*Выборка.СебестоимостьСумма/Выборка.СебестоимостьКоличество);

НадоСписать = НадоСписать - Списываем;

КонецЦикла;

КонецЦикла;

erdem.badluev

  • Проверенный
  • ***
  • Сообщений: 139
Re: Билет 1. Спец по платформе V8
« Ответ #254 : Ноябрь 30, 2016, 04:12:22 am »
Сделал вот так:
Пока ВыборкаНоменклатура.Следующий() Цикл

НадоСписать = ВыборкаНоменклатура.КоличествоДок;

Нехватка = Выборка.КоличествоДок - Выборка.КоличествоСклад;

Если Нехватка > 0 Тогда
Сообщить("На складе "+Склад+" не хватает товара "+Выборка.Номенклатура+" в количестве "+Нехватка);
Отказ = Истина;
Возврат;
КонецЕсли;

Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = НадоСписать;

Выборка = ВыборкаНоменклатура.Выбрать();

Пока Выборка.Следующий() И НадоСписать > 0 Цикл

Списываем = Мин(НадоСписать, Выборка.СебестоимостьКоличество);

Движение = Движения.СебестоимостьНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Партия = Выборка.Партия;
Движение.Количество = Списываем;
Движение.Сумма = ?(Списываем = Выборка.СебестоимостьКоличество, Выборка.СебестоимостьСумма, Списываем*Выборка.СебестоимостьСумма/Выборка.СебестоимостьКоличество);

НадоСписать = НадоСписать - Списываем;

КонецЦикла;

КонецЦикла;

Не правильно в текст сообщения заталкивать ссылку, каждый раз подзапрос к базе идет ради представления. В запросе вытащи ПРЕДСТАВЛЕНИЕ(Номенклатура) и перед циклом представление(Склад). Почему по регистру "ОстаткиНоменклатуры" не применил новую методику? Думаю можно это сделать.