Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 авг 2025, 15:45

задолженность

Автор sali, 11 авг 2025, 12:56

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

sali

Цитата: antoneus от 15 авг 2025, 09:12> открываю конфигуратор... все работает
когда я открывал предприятие через конфигуратор все работало, когда запускал сеанс нажав на предприятие (пользовательски вошел) вылезала ошибка

antoneus

Значит, из конфигуратора запускается в толстом клиенте, в пользовательском режиме - в тонком.
В тонком такая конструкция

Объект.Контрагент.МаксимальнаяСуммаДолга
не прокатит, реквизиты ссылки через точку недоступны.

sali

клиенты работают в серверном режиме и такие действия не прокатывают и все это приходиться менять . вот весь код документа
&НаКлиенте
Процедура Долг_КонтрагентПриИзмененииПосле(Элемент)
ЗадолженностьКонтрагента = ПолучитьОстатокВзаиморасчетов();

КонтрагентПередИзменением = Контрагент;
Контрагент = Объект.Контрагент;

Если КонтрагентПередИзменением <> Объект.Контрагент Тогда
ЗадолженностьКонтрагента = ПолучитьОстатокВзаиморасчетов();
КонецЕсли;

К_Контроль = ПроверитьКонтрольЗадолженности(Контрагент);

Если ЗначениеЗаполнено(ЗадолженностьКонтрагента) И ЗадолженностьКонтрагента > 0 Тогда
ОстатокВзаиморасчетов = ЗадолженностьКонтрагента;
Элементы.ОстатокВзаиморасчетов.Видимость = Истина;
Если К_Контроль[0] = Истина Тогда
Элементы.ОстатокВзаиморасчетов.Видимость = Истина;
Элементы.КонтрагентМаксимальнаяСуммаДолга.Видимость = Истина;
Иначе
Элементы.ОстатокВзаиморасчетов.Видимость = Истина;
Элементы.КонтрагентМаксимальнаяСуммаДолга.Видимость = Ложь;
КонецЕсли;
Иначе
Элементы.ОстатокВзаиморасчетов.Видимость = Ложь;
Элементы.КонтрагентМаксимальнаяСуммаДолга.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры

&НаСервере
Функция ПроверитьКонтрольЗадолженности(Контрагент)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.КонтрольЗадолженности КАК КонтрольЗадолженности,
| Контрагенты.МаксимальнаяСуммаДолга КАК МаксимальнаяСуммаДолга
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", Контрагент);

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

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
МассивДолга = Новый Массив;

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
МассивДолга.Добавить(ВыборкаДетальныеЗаписи.КонтрольЗадолженности);
МассивДолга.Добавить(ВыборкаДетальныеЗаписи.МаксимальнаяСуммаДолга);
КонецЦикла;

Возврат МассивДолга;

КонецФункции

&НаСервере
Функция ПолучитьОстатокВзаиморасчетов()

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВзаиморасчетыОстатки.СуммаОстаток КАК СуммаОстаток
|ИЗ
|   РегистрНакопления.Взаиморасчеты.Остатки(, ) КАК ВзаиморасчетыОстатки
|ГДЕ
| ВзаиморасчетыОстатки.Контрагент = &Контрагент";
Запрос.УстановитьПараметр("Контрагент", Объект.Контрагент);
РезультатЗапроса = Запрос.Выполнить();

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

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Возврат ВыборкаДетальныеЗаписи.СуммаОстаток;
КонецЦикла;

КонецФункции

&НаКлиенте
&После("ПередЗаписьюКлиент")
Процедура Долг_ПередЗаписьюКлиент(Отказ, РежимЗаписи)
СтрокаТЧ = Элементы.товары.ТекущиеДанные;
К_Контроль = ПроверитьКонтрольЗадолженности(Контрагент);

Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Если К_Контроль[0] = Истина Тогда
Если ОстатокВзаиморасчетов + СтрокаТЧ.СуммаВсего >= К_Контроль[1] Тогда   
    Отказ = Истина;
Сообщить("Сумма документа превышает сумму маскимальной задолженности. Проведение отменено");
КонецЕсли;
Иначе
Отказ = Ложь;
КонецЕсли;
Иначе
Отказ = Ложь;
КонецЕсли;
КонецПроцедуры

сейчас не находит "СуммаВсего" как к ней обратиться??? мне нужна она для проверки

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск