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

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

Bebi

  • Проверенный
  • ***
  • Сообщений: 165
Re: Билет 1. Спец по платформе V8
« Ответ #945 : Апрель 05, 2019, 09:49:19 am »
Подскажите почему в отчете не выводятся данные?
Например есть документ НАЧИСЛЕНИЕ ЗП, в нем начислен оклад и премия за 01.12.2020
и отчет формирую за декабрь и данные не выводятся. Почему это может быть?

Bebi

  • Проверенный
  • ***
  • Сообщений: 165
Re: Билет 1. Спец по платформе V8
« Ответ #946 : Апрель 05, 2019, 11:45:13 am »
Подскажите почему в отчете не выводятся данные?
Например есть документ НАЧИСЛЕНИЕ ЗП, в нем начислен оклад и премия за 01.12.2020
и отчет формирую за декабрь и данные не выводятся. Почему это может быть?
Блин помогите, сделала другой отчет по другому билету, там тоже нет данных.
Формирую отчет и всё, ничего нет.
В регистре записи есть из Которого я буру данные в отчет. В отчете добавила группировку по детальным записям, и никак все равно..Вот знаю же что наверно это какая то ошибка по глупости, но я не могу понять


greta

  • Новичок
  • *
  • Сообщений: 2
Re: Билет 1. Спец по платформе V8
« Ответ #947 : Апрель 05, 2019, 01:21:00 pm »
Вопрос про Расчеты.
Смотрю пример решения. Не могу понять, из чего в условии задачи следует, что зарплата рассчитывается при нажатии кнопки на форме?

Bebi

  • Проверенный
  • ***
  • Сообщений: 165
Re: Билет 1. Спец по платформе V8
« Ответ #948 : Апрель 05, 2019, 01:25:49 pm »
Вопрос про Расчеты.
Смотрю пример решения. Не могу понять, из чего в условии задачи следует, что зарплата рассчитывается при нажатии кнопки на форме?
Как понять из чего следует?)

greta

  • Новичок
  • *
  • Сообщений: 2
Re: Билет 1. Спец по платформе V8
« Ответ #949 : Апрель 05, 2019, 02:42:17 pm »
Вопрос про Расчеты.
Смотрю пример решения. Не могу понять, из чего в условии задачи следует, что зарплата рассчитывается при нажатии кнопки на форме?
Как понять из чего следует?)

В пояснении к решению:
Цитировать
Для реализации дополнительного условия по расчету начислений прямо из формы документа «Начисление зарплаты» в табличные части документа «Начисление зарплаты» добавлены дополнительные  реквизиты, в том числе реквизит «Результат» для хранения результатов расчета по начислениям.
При выполнении команды «Рассчитать» формы документа вызывается процедура, выполняющая сначала весь расчет по начислениям, а затем помещение результат  расчета в табличную часть документа. При проведении просто данные табличной части помещаются в регистр.

В условиях задачи не вижу никаких дополнительных условий

Михаил Проходцев

  • Проверенный
  • ***
  • Сообщений: 219
Re: Билет 1. Спец по платформе V8
« Ответ #950 : Апрель 05, 2019, 03:01:38 pm »
В пояснении к решению:
Цитировать
Для реализации дополнительного условия по расчету начислений прямо из формы документа «Начисление зарплаты» в табличные части документа «Начисление зарплаты» добавлены дополнительные  реквизиты, в том числе реквизит «Результат» для хранения результатов расчета по начислениям.
При выполнении команды «Рассчитать» формы документа вызывается процедура, выполняющая сначала весь расчет по начислениям, а затем помещение результат  расчета в табличную часть документа. При проведении просто данные табличной части помещаются в регистр.
В условиях задачи не вижу никаких дополнительных условий
Оу, какие знакомые поясненения к решениям)
Там же где вы их скачивали, была и ссылка на сообщение с приложенными актуальными билетами, в которых есть это условие.
Продублирую:
https://forum.chistov.pro/index.php?topic=2670.msg58627#msg58627

AlexAlex777

  • Пользователь
  • **
  • Сообщений: 20
Re: Билет 1. Спец по платформе V8
« Ответ #951 : Апрель 13, 2019, 10:59:00 am »
Здравствуйте.

В отчете первой задачи "Остатки на дату" нужно дополнительно что то делать с периодом?
 "КонецПериода(Период, "День")" или
ДобавитьКДате(период,"Секунда",1).
Смотрю в решениях никто ничего не добавляет.

Спасибо.

evil18

  • Новичок
  • *
  • Сообщений: 6
  • ФИО: светлана
Re: Билет 1. Спец по платформе V8
« Ответ #952 : Апрель 13, 2019, 11:37:59 am »
Здравствуйте.

В отчете первой задачи "Остатки на дату" нужно дополнительно что то делать с периодом?
 "КонецПериода(Период, "День")" или
ДобавитьКДате(период,"Секунда",1).
Смотрю в решениях никто ничего не добавляет.

Спасибо.
Белоусов говорил не нужно заморачиваться, а отчёт внешний вид один в один должен быть

AlexAlex777

  • Пользователь
  • **
  • Сообщений: 20
Re: Билет 1. Спец по платформе V8
« Ответ #953 : Апрель 13, 2019, 12:54:58 pm »
Еще вопрос по бухгалтерской задаче . Смотрю у некоторых по разному вычисляються ОбщееКоличество и общая сумма . т.е. без учета сроков годности.
например у Niczzz эти значения берутся просто из итогов Регистра по срокам годности и затем при переборе сроков годности происходит вычитание  списанных сумм и количества из
этих общих сумм(!) :

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


Субконто = Новый Массив;
Субконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Номенклатура);
Субконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.СрокГодности);

Запрос.УстановитьПараметр("Субконто", Субконто);
Запрос.УстановитьПараметр("Товары", ПланыСчетов.Управленческий.Товары);

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

ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

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

Если Отказ Тогда
Продолжить;
КонецЕсли;

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

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

Пока ОсталосьСписать > 0 И ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.СрокГодности = Null Тогда
Продолжить;
КонецЕсли;

// регистр Управленческий
Движение = Движения.Управленческий.Добавить();
Движение.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
Движение.СчетКт = ПланыСчетов.Управленческий.Товары;
Движение.Период = Дата;
Движение.КоличествоКт = Мин(ОсталосьСписать, ВыборкаДетальныеЗаписи.КоличествоОстаток);
Движение.Сумма = Движение.КоличествоКт / КоличествоОбщийОстаток * СуммаОбщийОстаток;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.СрокГодности] = ВыборкаДетальныеЗаписи.СрокГодности;

ОсталосьСписать = ОсталосьСписать - Движение.КоличествоКт;
КоличествоОбщийОстаток = КоличествоОбщийОстаток - Движение.КоличествоКт;
СуммаОбщийОстаток = СуммаОбщийОстаток - Движение.Сумма;
КонецЦикла;
КонецЦикла;


А у других делаеться еще одно левое соединение к регистру С субконто без Срока годности:


Субконто1 = Новый Массив;
Субконто1.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Номенклатура);

Субконто2 = Новый Массив;
Субконто2.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Номенклатура);
Субконто2.Добавить(ПланыВидовХарактеристик.ВидыСубконто.СрокГодности);

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

Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Субконто1", Субконто1);
Запрос.УстановитьПараметр("Субконто2", Субконто2);
Запрос.УстановитьПараметр("Товары", ПланыСчетов.Управленческий.Товары);
Запрос.УстановитьПараметр("Услуга", Перечисления.ВидыНоменклатуры.Услуга);

РезультатЗапроса = Запрос.Выполнить();
ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

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

Если НЕ Отказ Тогда
ОсталосьСписать = ВыборкаНоменклатура.Количество;
Выборка = ВыборкаНоменклатура.Выбрать();

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

Списать = МИН(ОсталосьСписать, Выборка.КоличествоПоСрокам);
Движение = Движения.Управленческий.Добавить();
Движение.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
Движение.СчетКт = ПланыСчетов.Управленческий.Товары;
Движение.Период = Дата;
Движение.КоличествоКт = Списать;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = Выборка.Номенклатура;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.СрокГодности] = Выборка.СрокГодности;
Если Списать = Выборка.КоличествоОбщее Тогда
Движение.Сумма = Выборка.СуммаОбщее;
Иначе
Движение.Сумма = Списать * Выборка.СуммаОбщее / Выборка.КоличествоОбщее;
КонецЕсли;
ОсталосьСписать = ОсталосьСписать - Списать;
КонецЦикла;
КонецЕсли;
КонецЦикла;


Это просто два разных ПРАВИЛЬНЫХ варианта решения одной задачи или все таки есть принципиальное различие? Мне лично Первый вариант кажется немного  сомнительным.

Интересно ваше мнение.
Спасибо.
« Последнее редактирование: Апрель 13, 2019, 01:02:34 pm от AlexAlex777 »

Новобранец

  • Пользователь
  • **
  • Сообщений: 78
Re: Билет 1. Спец по платформе V8
« Ответ #954 : Апрель 14, 2019, 12:02:08 pm »
Огромное Спасибо, сейчас посмотрю:) А вы сдавали?

AlexAlex777

  • Пользователь
  • **
  • Сообщений: 20
Re: Билет 1. Спец по платформе V8
« Ответ #955 : Апрель 14, 2019, 12:10:20 pm »
Здравствуйте.
Просьба оценить мое решение билета.
Спасибо.

Михаил Проходцев

  • Проверенный
  • ***
  • Сообщений: 219
Re: Билет 1. Спец по платформе V8
« Ответ #956 : Апрель 14, 2019, 10:07:12 pm »
Еще вопрос по бухгалтерской задаче . Смотрю у некоторых по разному вычисляються ОбщееКоличество и общая сумма . т.е. без учета сроков годности.
например у Niczzz эти значения берутся просто из итогов Регистра по срокам годности и затем при переборе сроков годности происходит вычитание  списанных сумм и количества из
этих общих сумм(!) :

А у других делаеться еще одно левое соединение к регистру С субконто без Срока годности:
Это просто два разных ПРАВИЛЬНЫХ варианта решения одной задачи или все таки есть принципиальное различие? Мне лично Первый вариант кажется немного  сомнительным.

Интересно ваше мнение.
Спасибо.
Оба варианта дают корректный ответ. Меня тоже при проверке немного смутил вариант решения, предложенный Niczzz. Можете ранее найти, я писал ему ранее в этой ветке после проверки его решения, но он объяснил, что сделано это по заветам Белоусова. Похоже, что это один из вариантов решения из курсов этого преподавателя.
Мне всё же кажется второй вариант более понятный и я бы его применял, пусть здесь обращение и к двум таблицам остатков, а не одной, но зато не нужно мудрить с пропуском строк, в которых срок годности равен Null, собственно вообще на выходе из запроса иметь строки с Null - не комильфо, особенно учитывая что эти поля с Null еще и обрабатываются в коде. Да и вообще второе решение, на мой взгляд, более прозрачное и понятное.

AlexAlex777

  • Пользователь
  • **
  • Сообщений: 20
Re: Билет 1. Спец по платформе V8
« Ответ #957 : Апрель 17, 2019, 10:35:47 pm »
Возник вопрос по расчету стажа.

Кто то считает от Даты приема до начала базового периода.

|ЕСТЬNULL(ДополнительныеНачисленияБазаОсновныеНачисления.Сотрудник.НачальныйСтаж + РАЗНОСТЬДАТ(ДополнительныеНачисленияБазаОсновныеНачисления.Сотрудник.ДатаПриема, ДополнительныеНачисленияБазаОсновныеНачисления.БазовыйПериодНачало, ДЕНЬ) / 365, 0) КАК ТрудовойСтаж,

Кто то от Даты приема до конца рассчетного периода(!).

"РАЗНОСТЬДАТ(ДополнительныеНачисленияБазаОсновныеНачисления.Сотрудник.ДатаПриема, &КонецПериода, МЕСЯЦ) + ДополнительныеНачисленияБазаОсновныеНачисления.Сотрудник.СтажНаМоментПриема КАК ОбщийСтаж"

Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(Дата));

Мне представляется первый вариант правильным. Второй вариант сделан у Niczzz

Bebi

  • Проверенный
  • ***
  • Сообщений: 165
Re: Билет 1. Спец по платформе V8
« Ответ #958 : Апрель 18, 2019, 01:43:26 pm »
Рассчитываю Стаж так:
РАЗНОСТЬДАТ(НачислениеЗарплатыДополнительныеНачисления.Сотрудник.ДатаПриема, &ПериодРегистрации, ГОД) + НачислениеЗарплатыДополнительныеНачисления.Сотрудник.НачСтаж
Но появляется ошибка: Неверные параметры РАЗНОСТЬДАТ
Почему?
Дата приема-дата. НачСтаж- число

_leon4uk_

  • Пользователь
  • **
  • Сообщений: 38
  • ФИО: Леонид
Re: Билет 1. Спец по платформе V8
« Ответ #959 : Апрель 18, 2019, 01:46:57 pm »
Рассчитываю Стаж так:
РАЗНОСТЬДАТ(НачислениеЗарплатыДополнительныеНачисления.Сотрудник.ДатаПриема, &ПериодРегистрации, ГОД) + НачислениеЗарплатыДополнительныеНачисления.Сотрудник.НачСтаж
Но появляется ошибка: Неверные параметры РАЗНОСТЬДАТ
Почему?
Дата приема-дата. НачСтаж- число
ПериодРегистрации тип какой?