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

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

erdem.badluev

  • Проверенный
  • ***
  • Сообщений: 139
Re: Билет 3. Спец по платформе V8
« Ответ #165 : Январь 10, 2017, 09:54:27 am »
Новое решение с вечерними часами.
Буду рад критике
 :)

xvip007

  • Пользователь
  • **
  • Сообщений: 50
Re: Билет 3. Спец по платформе V8
« Ответ #166 : Январь 18, 2017, 09:57:26 am »
Новое решение с вечерними часами.
Буду рад критике
 :)

По БУ при проведении документа ПриходДенег
расчет валютной суммы идёт исходя из рублёвого остатка,

думаю надо делать наоборот чтобы было как примере из отчёта,
чтобы списывалось именно сумма 5200 валюты,
если не будет проведён документ Корректировка задолженности
то валютная сумма будет меньше 5200, 150000*5200/155400=5019,31
останется остаток 5200-5019,31
а далее корректировкой валютный остаток не закрывается, надо будет прогнать корректировку затем по новой приход.

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

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

СуммаСписания = Мин(СуммаОстаток, Выборка.Сумма);
ВалютнаяСумма = ?(СуммаСписания = Выборка.Сумма, Выборка.ВалютнаяСумма, СуммаСписания / Выборка.Курс);

Движение = Движения.Управленческий.Добавить();
Движение.СчетДт = ПланыСчетов.Управленческий.Касса;
Движение.СчетКт = ПланыСчетов.Управленческий.Покупатели;
Движение.Период = Дата;
Движение.ВалютнаяСуммаКт = ВалютнаяСумма;
Движение.Сумма = СуммаСписания;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Контрагент] = Контрагент;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Договор] = Выборка.Договор;

СуммаОстаток = СуммаОстаток - СуммаСписания;

КонецЦикла;
...


kvt500

  • Проверенный
  • ***
  • Сообщений: 159
  • ФИО: kvt500
Re: Билет 3. Спец по платформе V8
« Ответ #167 : Январь 19, 2017, 09:54:57 am »
Новое решение с вечерними часами.
Буду рад критике
 :)
а вечерние часы разве не должны быть отдельным видом расчета?

dimon1210

  • Новичок
  • *
  • Сообщений: 5
Re: Билет 3. Спец по платформе V8
« Ответ #168 : Январь 20, 2017, 08:19:11 am »
Кто уже сдал экзамен, подскажите, что значит фраза "Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться."? Нужно добавлять проверку на ввод документов задним числом и какие еще нюансы вытекают из этой фразы при решении задачи?

alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 3. Спец по платформе V8
« Ответ #169 : Январь 20, 2017, 12:20:50 pm »
Кто уже сдал экзамен, подскажите, что значит фраза "Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться."? Нужно добавлять проверку на ввод документов задним числом и какие еще нюансы вытекают из этой фразы при решении задачи?
Не надо проверку на ввод задним числом, т.к. "Считается, что ..." здесь и в других ситуациях значит, что всегда делается так и контролирует это пользователь, т.е. вы просто используете данный факт при решении, как абсолютную истину, которую не надо ни проверять, ни объяснять.  :)
А вроде бы нюанс только тот и вытекает, что при проведении данных документов остатки надо получать на момент проведения документа, а не на МВ = Неопределено.

xvip007

  • Пользователь
  • **
  • Сообщений: 50
Re: Билет 3. Спец по платформе V8
« Ответ #170 : Январь 20, 2017, 04:24:31 pm »
Новое решение с вечерними часами.
Буду рад критике
 :)

По СПР
1. Период регистрации по заданию должен браться из табличной части:
"В одном документе могу быть данные за разные расчетные периоды"

2. После записи первичных данных перед получением дополнения для сторно нужно записать исходные данные
Движения.ОсновныеНачисления.Записать(, Ложь);

(После записи строк по сторно запись присутствует)

3. Если одним документом записывать данные по командировке подряд за несколько расчетных периодов,
то они должны рассчитываться несколькими  запросами,
так как база для командировки за текущий период зависит от 2 предыдущих периодов.

Добавил своё решение, сделал также без отдельного вида расчета вечерние часы, добавлением ресурса вечерние часы.
« Последнее редактирование: Январь 20, 2017, 04:45:57 pm от xvip007 »

xvip007

  • Пользователь
  • **
  • Сообщений: 50
Re: Билет 3. Спец по платформе V8
« Ответ #171 : Январь 21, 2017, 03:14:04 pm »
Добавил в решение УФ

erdem.badluev

  • Проверенный
  • ***
  • Сообщений: 139
Re: Билет 3. Спец по платформе V8
« Ответ #172 : Январь 24, 2017, 09:15:45 am »
Новое решение с вечерними часами.
Буду рад критике
 :)

По СПР
1. Период регистрации по заданию должен браться из табличной части:
"В одном документе могу быть данные за разные расчетные периоды"

зачем брать из ТЧ документа если ПериодРегистрации не имеет смысла для дальнейшего расчета, вот и брал из шапки документа.

Цитировать
2. После записи первичных данных перед получением дополнения для сторно нужно записать исходные данные
Движения.ОсновныеНачисления.Записать(, Ложь);

(После записи строк по сторно запись присутствует)

Не уверен что нужно обязательно записывать, и перед записью прекрасно дополнение получается.

Цитировать
3. Если одним документом записывать данные по командировке подряд за несколько расчетных периодов,
то они должны рассчитываться несколькими  запросами,
так как база для командировки за текущий период зависит от 2 предыдущих периодов.


так и сделано (строки 159-179 в модуле объекта НачислениеЗарплаты).

erdem.badluev

  • Проверенный
  • ***
  • Сообщений: 139
Re: Билет 3. Спец по платформе V8
« Ответ #173 : Январь 24, 2017, 09:57:32 am »
Добавил в решение УФ

1. Нет фильтра услуг - можно оприходовать на остатки услуги и также продать.
2. Для чего проверка:
Момент = ?(Режим = РежимПроведенияДокумента.Оперативный, Неопределено, МоментВремени());МоментВремени() - отработает всегда, даже когда документ новый, ставить вместо него Неопределено думаю ошибка.
3. Строка 62 модуля объекта ПриходДенег для чего? Вы в случае списания всей рублевой суммы вы также списываете возможную курсовую разницу, которую должен списывать документ "Корректировка задолженности".
4. Не установлены галки "Базовое" у измерений регистра расчета.
5. Не настроены командные интерфейсы: видимость регистров, кнопка "Создать" для документов.
6. УФ открытие ссылки в ПриходнаяНакладная если после ссылки ввести что-нибудь, то не открывает, например:
документ, по которому произошла оплата: e1cib/data/Документ.ПриходДенег?ref=a63a5404a6d271bf11e6dc93e6a6d5cb апквыек
Понравился алгоритм расчета командировки. :-)
И всё же, периодом расчета в этой задаче является период действия строки, а не период регистрации.
« Последнее редактирование: Январь 24, 2017, 09:59:03 am от erdem.badluev »

xvip007

  • Пользователь
  • **
  • Сообщений: 50
Re: Билет 3. Спец по платформе V8
« Ответ #174 : Январь 24, 2017, 10:50:14 am »

зачем брать из ТЧ документа если ПериодРегистрации не имеет смысла для дальнейшего расчета, вот и брал из шапки документа.

Не уверен что нужно обязательно записывать, и перед записью прекрасно дополнение получается.

так и сделано (строки 159-179 в модуле объекта НачислениеЗарплаты).

"В одном документе могу быть данные за разные расчетные периоды"
в принципе возможно вы и правы, не понятно что конкретно имелось ввиду в задании

по второму из методички курсов по СПР:
Цитировать
Подумаем: когда механизм вытеснения платформы может определить, что вытеснение запрещено? Очевидно, в тот момент, когда он актуализирует все вытеснения набора записей, иными словами, когда определяется состав и границы интервалов фактического периода действия для каждого вида расчета.
Мы уже знаем, в какой момент это происходит. Это происходит тогда, когда программа выполняет запись набора с исходными данными - т.е. когда мето "Записать" набора записей вызывается со вторым аргументом, равным Ложь. Следовательно, после вызова этого метода и надо вызвать метод "ПолучитьДополнение": если к этому моменту получен актуальный фактический период действия - результат вытеснения, то, следовательно, регистр расчета к этому моменту имеет информацию о тех случаях, когда вытеснение было запрещено.

да по третьему не сразу разобрал, из-за первого пункта думал что одним периодом всё делаете.

alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 3. Спец по платформе V8
« Ответ #175 : Январь 24, 2017, 12:55:42 pm »
"В одном документе могу быть данные за разные расчетные периоды"
в принципе возможно вы и правы, не понятно что конкретно имелось ввиду в задании
Все непонятки с этим вопросом идут от неверного понимания понятий периода регистрации и периода действия.
Период регистрации должен быть всегда в шапке - это период, в котором бух делает расчет и регистрирует документ (!), нельзя один документ рассчитывать и регистрировать в разных периодах.
Период действия - за какой период произведено начисление - т.е. когда фактически отработал сотрудник или когда именно был в командировке - этот период может быть за пределами периода регистрации.

Так вот, в данном случае в ТЧ надо указывать период действия (начало и конец), и в разных строках он может быть в разных месяцах, но в каждой отдельной строке - внутри одного расчетного периода (т.е. месяца).
« Последнее редактирование: Январь 24, 2017, 12:58:23 pm от alex1248 »

xvip007

  • Пользователь
  • **
  • Сообщений: 50
Re: Билет 3. Спец по платформе V8
« Ответ #176 : Январь 24, 2017, 02:14:07 pm »
"В одном документе могу быть данные за разные расчетные периоды"
в принципе возможно вы и правы, не понятно что конкретно имелось ввиду в задании
Все непонятки с этим вопросом идут от неверного понимания понятий периода регистрации и периода действия.
Период регистрации должен быть всегда в шапке - это период, в котором бух делает расчет и регистрирует документ (!), нельзя один документ рассчитывать и регистрировать в разных периодах.
Период действия - за какой период произведено начисление - т.е. когда фактически отработал сотрудник или когда именно был в командировке - этот период может быть за пределами периода регистрации.

Так вот, в данном случае в ТЧ надо указывать период действия (начало и конец), и в разных строках он может быть в разных месяцах, но в каждой отдельной строке - внутри одного расчетного периода (т.е. месяца).


Всё не от этого, период регистрации и период действия - в этих понятиях никакой путаницы нет.
смутило -  "расчетные периоды"
Но думаю всё-таки вы правы и во всех задачках по СПР надо период регистрации в шапку кидать.
Изначально скачивал решения, в них кидали его в ТЧ, начал делать также.

xvip007

  • Пользователь
  • **
  • Сообщений: 50
Re: Билет 3. Спец по платформе V8
« Ответ #177 : Январь 24, 2017, 03:06:34 pm »
erdem.badluev
спасибо вам за замечания  :)

1. Да никогда не ставил фильтр по услагам в приходных, добавлю )
2. Копипаст ) Взял от кого то, в принципе и без него будет работать, не буду ставить.
3. Приходом денег закрываются валютные остатки, а корректировкой рублёвые.
По моему алгоритму всё происходит так, и цифры получаются как в отчёте из задания.
Например:
отгрузили товар
на 1000$ 1го числа курс 60
остатки валютный 1000, рублёвый 60000

принесли деньги 2го числа курс 65
расчёты у нас в валюте, нам должны 1000$
дают нам 65000р -> закрываем валютный остаток 1000$
остатки валютный 0, рублёвый -5000

корректировкой
корректируем рублёвый остаток из-за курсовой разницы
рублёвый остаток выводится в ноль

По вашему алгоритму выходит так:
первый шаг такой же
отгрузили товар
на 1000$ 1го числа курс 60
остатки валютный 1000, рублёвый 60000

принесли деньги 2го числа курс 65
в запросе считывается рублёвый остаток он равен 60000
дают нам 60000р -> закрываем рублёвый остаток
в валюте
Движение.СуммаВалКт = Списываем/ВыборкаДетальныеЗаписи.Курс; // получаем 60000/65 = 923,08
остатки валютный 76,92, рублёвый 0

Далее корректировка
СуммаДолга=ВыборкаДетальныеЗаписи.СуммаВалОстаток/ВыборкаДетальныеЗаписи.Курс; // Тут наверно у вас должно было быть умножение на курс 76,92 * 65 = 4999,8
Движение.Сумма = СуммаДолга-ВыборкаДетальныеЗаписи.СуммаОстаток; // 4999,0 > 0 (сумма рублёвого остатка 0) 4999,8 - 0
в итоге остатки валютный 76,92 и рублёвый 4999,8

далее ещё раз надо делать приход денег на сумму рублёвого остатка 4999,8
и тогда всё закроется в 0 и валютный и рублёвый

4. Да, про базовые забыл
5. По Интерфейсу: видимость регистров, кнопка "Создать" для документов - это в требованиях вроде нигде не описывается
6. Да там этот момент специально не проверял,
e1cib/data/Документ.ПриходДенег?ref="a63a5404a6d271bf11e6dc93e6a6d5cb"
там вроде когда содержимое строки смотришь кавычки присутствуют и по идее надо вторую кавычку искать
из-за того что вдруг так напишут
e1cib/data/Документ.ПриходДенег?ref="a63a5404a6d271bf11e6dc93e6a6d5cb"авмавиваи
и пробела не будет или там совсем не пробел а перевод строки а потом опять текст, у вас ищется пробел

erdem.badluev

  • Проверенный
  • ***
  • Сообщений: 139
Re: Билет 3. Спец по платформе V8
« Ответ #178 : Январь 25, 2017, 04:13:08 am »

3. Приходом денег закрываются валютные остатки, а корректировкой рублёвые.
По моему алгоритму всё происходит так, и цифры получаются как в отчёте из задания.
Например:
отгрузили товар
на 1000$ 1го числа курс 60
остатки валютный 1000, рублёвый 60000

принесли деньги 2го числа курс 65
расчёты у нас в валюте, нам должны 1000$
дают нам 65000р -> закрываем валютный остаток 1000$
остатки валютный 0, рублёвый -5000

корректировкой
корректируем рублёвый остаток из-за курсовой разницы
рублёвый остаток выводится в ноль

По вашему алгоритму выходит так:
первый шаг такой же
отгрузили товар
на 1000$ 1го числа курс 60
остатки валютный 1000, рублёвый 60000

принесли деньги 2го числа курс 65
в запросе считывается рублёвый остаток он равен 60000
дают нам 60000р -> закрываем рублёвый остаток
в валюте
Движение.СуммаВалКт = Списываем/ВыборкаДетальныеЗаписи.Курс; // получаем 60000/65 = 923,08
остатки валютный 76,92, рублёвый 0

Далее корректировка
СуммаДолга=ВыборкаДетальныеЗаписи.СуммаВалОстаток/ВыборкаДетальныеЗаписи.Курс; // Тут наверно у вас должно было быть умножение на курс 76,92 * 65 = 4999,8
Движение.Сумма = СуммаДолга-ВыборкаДетальныеЗаписи.СуммаОстаток; // 4999,0 > 0 (сумма рублёвого остатка 0) 4999,8 - 0
в итоге остатки валютный 76,92 и рублёвый 4999,8

далее ещё раз надо делать приход денег на сумму рублёвого остатка 4999,8
и тогда всё закроется в 0 и валютный и рублёвый

Из задания: "Оплата задолженности по отгрузке происходит документом «Приход денег», где указывается контрагент и сумма оплаты в рублях. Сумма должна автоматически распределяться на договоры в соответствии с максимальной рублевой задолженностью по договору" - вот и сделал проверку и списание по рублевым суммам.

Цитировать
6. Да там этот момент специально не проверял,
e1cib/data/Документ.ПриходДенег?ref="a63a5404a6d271bf11e6dc93e6a6d5cb"
там вроде когда содержимое строки смотришь кавычки присутствуют и по идее надо вторую кавычку искать
из-за того что вдруг так напишут
e1cib/data/Документ.ПриходДенег?ref="a63a5404a6d271bf11e6dc93e6a6d5cb"авмавиваи
и пробела не будет или там совсем не пробел а перевод строки а потом опять текст, у вас ищется пробел

сделали поиск второй кавычки?

erdem.badluev

  • Проверенный
  • ***
  • Сообщений: 139
Re: Билет 3. Спец по платформе V8
« Ответ #179 : Январь 25, 2017, 04:23:03 am »
5. По Интерфейсу: видимость регистров, кнопка "Создать" для документов - это в требованиях вроде нигде не описывается

Из требований: "32) формирование командного интерфейса" - также есть пример настроенного командного интерфейса на 7 странице. В требованиях приведены списки наиболее часто встречающихся ошибок, но не весь перечень ошибок. То есть, если вообще нигде не настроен хотя бы один командный интерфейс, думаю, могут снять баллы.