Автор Тема: Задача 2.30  (Прочитано 16273 раз)

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

LepRiKonS

  • Пользователь
  • **
  • Сообщений: 49
  • ФИО: Павел
Задача 2.30
« : Январь 20, 2014, 12:55:15 pm »
На экзамене попалась эта задача. Экзамен сдан на 5. 

 Решал следующим образом:
 1) Непериодический РС "Лимиты по подразделениям" - для лимитов.
 2) Далее используем типовые регистры (это важно):
 а) ДвиженияДенежныеСредстваКонтрагент - анализ суммы отгрузок за месяц между подразделением и поставщиком
 б) ДенежныеСредстваКВыплате (остатки) - анализ суммы остатка по заявке
 3) Доработка документа "РКО", где программным образом отключается проверка реквизита "ЗаявкаНаРасходованиеДенежныхСредств" если СуммаПлана+ОстокСуммыВсехЗаявок (и п. 2б) >= СуммеОтгрузок (п. 2а)
 4) Отчет строим по нашему регистру и ДвиженияДенежныеСредстваКонтрагент

Alexander

  • Пользователь
  • **
  • Сообщений: 33
  • ФИО: Kulikov Alexander
Задача 2.30
« Ответ #1 : Июль 03, 2014, 09:41:26 am »
Неужели можно игнорировать типовой механизм лимитов со статьями ДДС?


nodalt

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Копейкин Дмитрий Николаевич
Задача 2.30
« Ответ #2 : Сентябрь 10, 2014, 06:49:31 pm »
Alexander, какой типовой механизм Вы имеете в виду?

trofrom

  • Новичок
  • *
  • Сообщений: 2
  • ФИО: Роман
Задача 2.30
« Ответ #3 : Сентябрь 13, 2014, 04:06:59 pm »
Типовой механизм появился в последних релизах, а экзаменационном релизе (11.1.2.8)  его ещё нет)))

LepRiKonS

  • Пользователь
  • **
  • Сообщений: 49
  • ФИО: Павел
Re: Задача 2.30
« Ответ #4 : Декабрь 08, 2014, 04:10:31 pm »
Неужели можно игнорировать типовой механизм лимитов со статьями ДДС?
Можно, когда его не было. Появился он через месяца - два после сдачи.

LepRiKonS

  • Пользователь
  • **
  • Сообщений: 49
  • ФИО: Павел
Re: Задача 2.30
« Ответ #5 : Декабрь 08, 2014, 04:11:03 pm »
Типовой механизм появился в последних релизах, а экзаменационном релизе (11.1.2.8)  его ещё нет)))
Все верно.  ;)

garnett_2187

  • Новичок
  • *
  • Сообщений: 4
  • ФИО: Kamil
Re: Задача 2.30
« Ответ #6 : Январь 08, 2015, 07:01:10 pm »
Подскажите как мне в  РКО получить подразделение? с типом оплата поставщику подразделение скрыто и не заполнено (даже если на основании заявки на расходование с заполненным подразделением)....
Если идти в ТЧ расшифровка - то там можно вытащить из  заявок - но суть то в том чтобы создавать рко без заявок.

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

Тянуть из заказов ТЧ расшифровки (объектРасчетов) - а если разные подразделения? тем более нужно делать РКО только на основании поступления (с заказом)...

или я чтото не понимаю.


JL

  • Новичок
  • *
  • Сообщений: 4
Re: Задача 2.30
« Ответ #7 : Январь 19, 2015, 12:27:33 pm »
Выложите, пожалуйста, решение этой задачи на 11.1.6 и старше - экзамен принимают теперь на более новых релизах.

Вот результаты с экзамена, эта задача не сдана, использовалось решение из архива пользователя trofrom.
1. Надо обязательно использовать типовые регистр и документ.
2. Остатки нельзя получать сложением оборотов.
3. Регистр накопления оборотов в регистр остатков преобразовать нельзя, т.к. рушится работа конфигурации.


elisey357

  • Новичок
  • *
  • Сообщений: 9
  • ФИО: Елисей
Re: Задача 2.30
« Ответ #8 : Февраль 11, 2015, 12:25:19 pm »
Скажите пожалуйста, типовой регистр это значит пользоваться тем, который есть в демо, или же можно для этой задачи создать новый регистр?
И еще, вот с такой ошибкой сталкивался кто?

mswanted

  • Новичок
  • *
  • Сообщений: 4
Re: Задача 2.30
« Ответ #9 : Апрель 01, 2015, 02:29:28 pm »
Добрый день, в последних релизах 11.1.9 , на сколько я понял уже реализовали данный функционал.
Получается решение сводиться к добавлению нового варианта отчета Лимиты расхода денежных средств   ...??????
« Последнее редактирование: Апрель 01, 2015, 02:49:01 pm от mswanted »

7183847

  • Новичок
  • *
  • Сообщений: 8
  • ФИО: Сергей
Re: Задача 2.30
« Ответ #10 : Май 04, 2015, 05:17:45 pm »

Karabas

  • Пользователь
  • **
  • Сообщений: 42
Re: Задача 2.30
« Ответ #11 : Июль 06, 2015, 07:57:14 am »
Т.к. в релизе 11.1.9.61 и выше лимиты без заявок уже реализованы, то надо решать по аналогии с 2.31 (полный аналог 2.30, только "Списание безнал. ДС" вместо РКО и в кассе надо галку "Разрешить выдачу ДС без заявок" в 2.30):


Пояснение.
Релиз 11.1.9.61. Функционал лимита расхода ДС уже реализован.
Стандартная схема работает следующим образом. Документ Лимит расхода ДС делает запись суммы в регистр Лимит расхода ДС по полю Лимит.
Заявка на расходование ДС делает запись суммы по полю Расход в пределах лимита. При установке флага Сверх лимита - по полю Расход сверх лимита.
При установленом флаге для р/с Разрешить списание ДС без заявок на оплату документ Списание безналичных ДС делает запись суммы по регистру Лимит расхода ДС по полю Расход сверх лимита. В противном случае (при отключенном флаге для р/с Разрешить списание ДС без заявок на оплату) движение по регистру делает документ Заявка на расходование ДС, на основании которой был введен документ Списание безналичных ДС.
В конфигурации реализована новая схема контроля остатков, т.е. сначала делается проведение по регистру, а потом в случае наличия отрицательных остатков выдается сигнал об ошибке и транзакция откатывается.
Проведение по регистрам и контроль правильности провдения выполняется стандартными механизмами конфигурации.

Решение работает след. образом.
В документе Списание безналичных ДС при проведении без заявки для хоз. операции Оплата поставщику делаем запись суммы в регистр Лимит расхода ДС по полю Расход в пределах лимита, а не по Расход сверх лимита. Также для этого документа добавляем регистр Лимит расхода ДС в список контролируемых регистров на наличие отрицательных остатков. В случае исчерпания лимита выдается сообщение об ошибке и документ не проводится.
Та же ошибка и при проведении Заявки на расходование ДС, что вынуждает использовать флаг Сверхлимита.
Далее на основании заявки вводим документ Списание безналичных ДС, который движений по этому регистру уже не делает.

В отчете Лимит расхода ДС есть графа Недорасход - остаток лимита.

Минусы - вмешиваемся в работу типового механизма.
Плюсы - все делается просто и быстро, вмешательство опять же использует стандартные механизмы.


Решение:
1) Включить ф.о. “Заявки на расходование денежных средств” (все галочки).
2) Для р/с включить флаг «Разрешить списание ДС без заявок»
3) Документ Списание безналичных ДС – модуль менеджера
В процедуре “ЗаполнитьИменаРеквизитовПоХозяйственнойОперации” добавить реквизит для хозяйственной операции с видом “Оплата поставщику”:
МассивРеквизитовОперации.Добавить(“Подразделение”);
4) Документ Списание безналичных ДС – модуль менеджера
В функции ТекстЗапросаТаблицаЛимитыРасходаДенежныхСредств для хоз. операции Оплата поставщику переопределить выборку суммы в поле РасходВПределахЛимита, а не РасходСверхЛимита
ЕСТЬNULL(ТаблицаРасшифровкаПлатежа.Сумма, ДанныеДокумента.СуммаДокумента) * &КоэффициентПересчетаВВалютуУпр КАК РасходВПределахЛимита,
0 КАК РасходСверхЛимита
Для остальных операций соответственно добавить
0 КАК РасходВПределахЛимита,
5) Документ Списание безналичных ДС – модуль объекта
В процедуре СформироватьСписокРегистровДляКонтроля() добавить после Массив.Добавить(Движения.ДенежныеСредстваКВыплате); след. код.
Если ЭтотОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ОплатаПоставщику Тогда
Массив.Добавить(Движения.ЛимитыРасходаДенежныхСредств);
КонецЕсли;
6) Общий модуль ПроведениеСервер, Процедура ВыполнитьКонтрольРезультатовПроведения
В ветку
Если ЕстьИзмененияВТаблице(ДанныеТаблиц,”ДвиженияЛимитыРасходаДенежныхСредствИзменение”) Тогда
добавить след. код (где именно добавить понятно при проведении – выскакивает ошибка Поле ДатаПлатежа не найдено)
Если ТипЗнч(Объект) = Тип(“ДокументОбъект.СписаниеБезналичныхДенежныхСредств”) Тогда
Период = Объект.Дата;
7) В отчете Лимиты расхода ДС создаем новый вариант с подразделениями

Итого строк 40 кода, использование стандартного отчета, в конструктор запросов вообще не заходим, основная методика CtrlC – CtrlV.

Или все так просто, или я чего-то не понимаю  :-[

PS: на экзамене попался другой билет
« Последнее редактирование: Июль 06, 2015, 07:58:57 am от XPT »

Qwerty1

  • Пользователь
  • **
  • Сообщений: 45
Re: Задача 2.30
« Ответ #12 : Август 16, 2015, 03:50:37 pm »
Здравствуйте, подскажите, почему все используют регистр "ДвиженияДенежныеСредстваКонтрагент"? Ведь нам нужно контролировать лимит по подразделению, а не контрагенту.
Вот ход моих мыслей:
Я думаю при проведении документа проверять вот такую формулу:
Сумма РКО + (ДСКВыплате (не исполненные заявки)) + (ДСНаличные (выплаченныеРКО)) > ЛимитыРасходаДС тогда отказ.

Очень хочется услышать Ваши мысли по этому поводу.

Qwerty1

  • Пользователь
  • **
  • Сообщений: 45
Re: Задача 2.30
« Ответ #13 : Август 17, 2015, 03:25:11 pm »
Вот мое решение:

Эта процедура вставляется в конце обработки проведения.

Как мы видим, есть отличие от большинства решений в сети - я не учитываю суммы в пределах лимита, т.к. они проходят "вне очереди" по условию задачи:

Цитировать
При превышении лимита оплата возможна только по предварительно выставленной заявке

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

Где-то был пост, что решить задачу можно без кодирования, я увы не додумался.

Процедура ПревышенЛимитПоПодразделению(Отказ)

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

Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(Дата));
Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(Дата));
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Подразделение", Касса.Подразделение);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ОплатаПоставщику);

РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Отказ = Истина;
КонецЕсли;

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

Пока Выборка.Следующий() Цикл
Сообщить("Превышение лимита по статье " + Выборка.Статья + " на " + Выборка.Перерасход);
КонецЦикла;
КонецПроцедуры

ВиталийЧебан

  • Проверенный
  • ***
  • Сообщений: 106
  • ФИО: Виталий Чебан
Re: Задача 2.30
« Ответ #14 : Август 21, 2015, 08:13:04 pm »
Qwerty1,  чем вам не угодило, на мой взгляд отличное, решение danissmo из поста http://forum.chistov.pro/index.php?topic=2819.msg40204#msg40204 ? Делается за 10 минут.