Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> На что влияет значение "максимальная сумма кредита покупателю"          
Vlad23 Подменю пользователя
сообщение 13.05.10, 11:19
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 15
Спасибо сказали: 0 раз
Рейтинг: 0

В справочнике "Контрагенты" в закладке "Кредиты" можна задать максимальную сумму кредита покупателю, но на что влияет установленное значение понять трудно. Установил значение 100 для определенного контрагента. При этом безболезненно проводятся расходные накладные (товар) по товарному кредиту на любую сумму этому клиенту? Хотелось бы, чтобы при привышении заданной суммы был запрет на продажу в кредит данному контрагенту ...

Zaval Подменю пользователя
сообщение 13.05.10, 11:52
Сообщение #2

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

А что в Константе РазрешитьПревышениеКредита? Еще могут быть подобные настройки для Пользователя... читайте справку.

Vlad23 Подменю пользователя
сообщение 13.05.10, 14:41
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 15
Спасибо сказали: 0 раз
Рейтинг: 0

Благодарю.
Установил РазрешитьПревышениеКредита в "НЕТ" - теперь не дает провести документ в случае превышения задолжености - правда не сообщает об этом красивенько "Превышен лимит по кредиту" к примеру, а ругается:
Не распределилась проводка * 7021 на сумму -64,71
Сформирована проводка 00 7021
Не понятно как сумма 64,71 считается - лимит превышается на 5 грн. ...?

В справочнике "Пользователисистемы " задаются для только параметры:
1. Редактировать № документа
2. Изменять документы любого периода
3. Изменять категорию цен

Где можно задать для пользователя "РазрешитьПревышениеКредита" не нашел ...

Zaval Подменю пользователя
сообщение 13.05.10, 15:03
Сообщение #4

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Это что-то другое, возможно ошибка... или детальность комментариев...
Должно быть "Сумма накладной вместе с текущим долгом клиента......" учтите, МаксКредит - периодический (берется на дату Док) и при необх пересчитывается для приведения валют.

Vlad23 Подменю пользователя
сообщение 13.05.10, 15:14
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 15
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Zaval @ 13.05.10, 17:03) *
Это что-то другое, возможно ошибка... или детальность комментариев...
Должно быть "Сумма накладной вместе с текущим долгом клиента......" учтите, МаксКредит - периодический (берется на дату Док) и при необх пересчитывается для приведения валют.


Опять Вы правы - действительно детальность коментариев ...

А можно какому-то пользователю Разрешить проводить документ?

Zaval Подменю пользователя
сообщение 13.05.10, 15:50
Сообщение #6

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

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

Vlad23 Подменю пользователя
сообщение 14.05.10, 9:40
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 15
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Zaval @ 13.05.10, 17:50) *
Без доработки - нет. Отключать константу - не выход, другие доки будут тоже проводиться...


Простите не совсем понял "другие доки будут тоже проводиться". Допустим установлен запрет на превышение кредита, а нам нужно контрагенту все-таки провести документ - всех выгоняем из базы (или предупреждаем), устанавливаем константу в "ДА" и проводим только нужный дркумент. Но непонятно как тогда перепроводить цепочку документов - получается перепроводящему пользователю тоже надо дать право ПревышениеКредита или же непроведутся документы, где был проделан такой маневр. Или проведение зависит от автора документа, а не от проводящего?

Получается самый приемлемый вариант - просто увеличить кредит контрагенту?

По доработке я так понимаю нужно сделать следующее:
В справочник "Пользователи" добавить реквизит "РазрешитьПревышениеКредита". Затем в модуле документа Т_РасходнаяНакладная заменить Константа.РазрешитьПревышениеКредита на значение реквизита для пользователя (правда как к нему обратиться еше не знаю smile.gif) ... Константа.РазрешитьПревышениеКредита встречается в 2-ух местах модуля документа в Процедуре ДвиженияВзаиморасчеты():
1)
Если (ВидОперации <> 1) и (ВидТорговли = Перечисление.ВидыТорговли.Кредит )
и (Константа.РазрешитьПревышениеКредита = Нет) Тогда

ВремРегКред = СоздатьОбъект("Регистры");
глРассчитатьИтогиВзаиморасчетов(Контекст,ВремРегКред,спФирмы,ЗнакОплаты,Контраге
нт,0);

КонецЕсли;

2)
// Проверяем возможность кредита
Если (ВидОперации <> 1) и (ВидТорговли = Перечисление.ВидыТорговли.Кредит )
и (Константа.РазрешитьПревышениеКредита = Нет) Тогда

глКомментарий("Проверяется возможность кредита",2);
тбДолгиКред = глПолучитьИтогиВзаиморасчетов(Контекст, ВремРегКред, текФирма,ЗнакОплаты, Контрагент, 0);

ДолгКонтрагента = 0;
ВалютаДолга = ?(ПустоеЗначение(текФирма)=0,Гривня,Доллары);

Просрочено = 0;
ПросроченныйДолг = 0;

тбДолгиКред.ВыбратьСтроки();
Пока тбДолгиКред.ПолучитьСтроку()=1 Цикл

ДолгКонтрагента = ДолгКонтрагента + глПересчет(тбДолгиКред.ДолгОсн,ВалютаДолга,ДатаДок,Контрагент.ВалютаКредита,Дата
Док,);

Если тбДолгиКред.ДолгОсн <= 0 Тогда
Продолжить;
КонецЕсли;

ВидДокКред = тбДолгиКред.КредДокумент.Вид();

Если глЕстьРеквизитШапки("ДатаОплаты",ВидДокКред)=Да Тогда
ДатаОплатыДолга = тбДолгиКред.КредДокумент.ДатаОплаты;
Если ПустоеЗначение(ДатаОплатыДолга)=1 Тогда
ДатаОплатыДолга = тбДолгиКред.КредДокумент.ДатаДок;
КонецЕсли;
Иначе
ДатаОплатыДолга = тбДолгиКред.КредДокумент.ДатаДок + Контрагент.Глубина.Получить(тбДолгиКред.КредДокумент.ДатаДок);
КонецЕсли;

Если ДатаДок > ДатаОплатыДолга Тогда
ПросроченныйДолг = ПросроченныйДолг + тбДолгиКред.ДолгОсн;
Если Просрочено<(ДатаДок-ДатаОплатыДолга) Тогда
Просрочено = ДатаДок-ДатаОплатыДолга;
КонецЕсли;
КонецЕсли;

КонецЦикла;

ДолгКонтрагента = ДолгКонтрагента + глПересчет(Итог("СуммаСНДС"),Валюта,ДатаДок,Контрагент.ВалютаКредита,ДатаДок,);
СуммаКредита = Контрагент.СуммаКредита.Получить(ДатаДок);
глКомментарий("Долг контрагента составляет "+глФРМ(ДолгКонтрагента,Контрагент.ВалютаКредита,1)+", сумма кредита "+ глФРМ(СуммаКредита,Контрагент.ВалютаКредита,1) +".",3);
Если ПустоеЗначение(СуммаКредита) = 0 Тогда
Если ДолгКонтрагента > СуммаКредита Тогда
глНеПроводить(Контекст,Шаблон("Сумма накладной вместе с текущим долгом клиента ([глФРМ(ДолгКонтрагента,Контрагент.ВалютаКредита,1)]) превышает сумму кредита ([глФРМ(СуммаКредита,Контрагент.ВалютаКредита,1)]). "));
Возврат;
КонецЕсли;
КонецЕсли;

Если Просрочено>0 Тогда
глНеПроводить(Контекст,Шаблон("Просрочена оплата [глФРМ(ПросроченныйДолг,ВалютаДолга,1)] на [Просрочено] дней."));
Возврат;
КонецЕсли;
глКомментарий("Отпуск товаров в кредит разрешен",3);
КонецЕсли;

Можно ли так сделать?

Zaval Подменю пользователя
сообщение 14.05.10, 13:38
Сообщение #8

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Цитата(Vlad23 @ 14.05.10, 11:40) *
Т_РасходнаяНакладная

У Вас не ТиС, а комплексная, мои советы могли привести к плачевным результатам(((
Добавьте в спр Пользователи рекв РазрешитьПревышениеКредита - число, длина 1, точность 0. неотрицательный. На форму поместите Флажок. Избранному поставьте галочку.
Если ДолгКонтрагента > СуммаКредита Тогда
      глНеПроводить(Контекст,Шаблон("Сумма накладной вместе с текущим долгом клиента ([глФРМ(ДолгКонтрагента,Контрагент.ВалютаКредита,1)])   превышает сумму кредита ([глФРМ(СуммаКредита,Контрагент.ВалютаКредита,1)]). "));
      Возврат;
КонецЕсли;


Вот этот фрагмент замените таким:
Попытка
    РазрешитьПроведениеСПревышением = ?(глПользователь.РазрешитьПревышениеКредита=1, 1, 0);
Исключение
    РазрешитьПроведениеСПревышением = 0;
КонецПопытки;
Если (ДолгКонтрагента > СуммаКредита) И (РазрешитьПроведениеСПревышением = 0) Тогда
        глНеПроводить(Контекст,Шаблон("Сумма накладной вместе с текущим долгом клиента ([глФРМ(ДолгКонтрагента,Контрагент.ВалютаКредита,1)]) превышает сумму кредита ([глФРМ(СуммаКредита,Контрагент.ВалютаКредита,1)]). "));
        Возврат;
КонецЕсли;


*глПользователь - переменная глобМодуля, заполняется в процедуре ПриНачалеРаботыСистемы

Vlad23 Подменю пользователя
сообщение 14.05.10, 14:07
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 15
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Zaval @ 14.05.10, 15:38) *
У Вас не ТиС, а комплексная, мои советы могли привести к плачевным результатам(((
Добавьте в спр Пользователи рекв РазрешитьПревышениеКредита - число, длина 1, точность 0. неотрицательный. На форму поместите Флажок. Избранному поставьте галочку.
Если ДолгКонтрагента > СуммаКредита Тогда
      глНеПроводить(Контекст,Шаблон("Сумма накладной вместе с текущим долгом клиента ([глФРМ(ДолгКонтрагента,Контрагент.ВалютаКредита,1)])   превышает сумму кредита ([глФРМ(СуммаКредита,Контрагент.ВалютаКредита,1)]). "));
      Возврат;
КонецЕсли;


Вот этот фрагмент замените таким:
Попытка
    РазрешитьПроведениеСПревышением = ?(глПользователь.РазрешитьПревышениеКредита=1, 1, 0);
Исключение
    РазрешитьПроведениеСПревышением = 0;
КонецПопытки;
Если (ДолгКонтрагента > СуммаКредита) И (РазрешитьПроведениеСПревышением = 0) Тогда
        глНеПроводить(Контекст,Шаблон("Сумма накладной вместе с текущим долгом клиента ([глФРМ(ДолгКонтрагента,Контрагент.ВалютаКредита,1)]) превышает сумму кредита ([глФРМ(СуммаКредита,Контрагент.ВалютаКредита,1)]). "));
        Возврат;
КонецЕсли;


*глПользователь - переменная глобМодуля, заполняется в процедуре ПриНачалеРаботыСистемы


Спасибо!
Какие Ваши советы могли привести к непоправимым результатам? - я только задал константу РазрешитьПревышениеКредита в "НЕТ" и все заработало smile.gif

Vlad23 Подменю пользователя
сообщение 18.05.10, 8:03
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 15
Спасибо сказали: 0 раз
Рейтинг: 0

Еще маленький вопрос по глубине кредита - что она собой являет? К примеру дебиторская задолженость контрагента состовляет 1000 грн., я устанавливаю сумму кредита в 2000 грн. Кредит уже возник или он откроется при проведении первого документа из оставшейся тысячи? Если под глубиной кредита считать количество дней, на который он выдается, то что является событием его открытия и что будет по истечению срока?

Zaval Подменю пользователя
сообщение 18.05.10, 9:27
Сообщение #11

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Тут же все написано:

Цитата(Vlad23 @ 14.05.10, 11:40) *
 ДатаОплатыДолга = тбДолгиКред.КредДокумент.ДатаДок + Контрагент.Глубина.Получить(тбДолгиКред.КредДокумент.ДатаДок);
                                ......
          Если ДатаДок > ДатаОплатыДолга Тогда
                 ПросроченныйДолг = ПросроченныйДолг + тбДолгиКред.ДолгОсн;
                 Если Просрочено<(ДатаДок-ДатаОплатыДолга) Тогда
                       Просрочено = ДатаДок-ДатаОплатыДолга;
                 КонецЕсли;
          КонецЕсли;


Дата оплаты долга по креддокументу(документ возникновения задолженности) = дата креддокумента + гллубина кредита на ту же дату.
Просроченные долги суммируются и определяется макс просрочка в днях.

Vlad23 Подменю пользователя
сообщение 19.05.10, 13:47
Сообщение #12

Общительный
**
Группа: Пользователи
Сообщений: 15
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Zaval @ 18.05.10, 11:27) *
Тут же все написано:



Дата оплаты долга по креддокументу(документ возникновения задолженности) = дата креддокумента + гллубина кредита на ту же дату.
Просроченные долги суммируются и определяется макс просрочка в днях.


Что-то я немного запутался ...
Допустим Сумма кредита составляет 2000 грн., глубина 10 дней.
Отпущен товар в кредит на 1000 грн. Что будет через 10 дней? Я не смогу взять еще 1000? Влияет ли дата оплаты долга на проведение документа - судя из приведенного выше фрагмента кода нет?

Zaval Подменю пользователя
сообщение 19.05.10, 14:55
Сообщение #13

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Через 10 дней отгрузки будут блокироваться независимо от суммы.
На 11 день после первой неоплаченной отгрузки Просрочено станет 1 и позовет злого и страшного глНеПроводить smile.gif
Или так
Просрочка оплаты отгрузки и превышение суммы кредита контролируются независимо друг от друга.
Текущая отгрузка блокируется любым из этих обстоятельств.
Режим контроля отсрочки по отдельной РН может быть "смягчен": для этого нужно заполнить в ней рекв ДатаОплаты значением, превышающим ДатаДок+ГлубинаКредита.
Чтобы делать это задним числом без ущерба для системы - нужно правильно настроить права уполномоченного пользователя.
*При избыточных правах пользователей в этом может быть лазейка для злоупотреблений.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 10:50
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!