|
Форма списка справочника | ☑ | ||
---|---|---|---|---|
0
Riko669
16.01.17
✎
13:59
|
День добрый! Подскажите пожалуйста, что не так? У меня есть справочник с формой списка, на этой форме есть поле надписи "Задолжность", мне нужно чтобы при выборе пациента (одним щелчком по пациенту) в этом поле надписи выводилась его задолжность. Подскажите кто-нибудь, что я не так делаю?
&НаКлиенте Процедура СписокПриАктивизацииСтроки(Элемент) Если Элементы.Список.ТекущиеДанные.Задолжность = Неопределено Тогда ЗаполнитьРеквизитЗадолженностьПациента(); КонецЕсли; КонецПроцедуры &НаСервере Процедура ЗаполнитьРеквизитЗадолженностьПациента() Если Элементы.Список.ТекущиеДанные.Задолжность = Неопределено Тогда Попытка Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОплатыПриемовОстаткиИОбороты.СуммаКонечныйОстаток |ИЗ | РегистрНакопления.ОплатыПриемов.ОстаткиИОбороты( | , | , | , | , | Прием.Пациент = &Пациент"; Запрос.УстановитьПараметр("Пациент", ПациентВПриеме(Элементы.Список.ТекущиеДанные.Задолжность)); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Сумма = 0; Пока Выборка.Следующий() Цикл Сумма = Сумма + Выборка.СуммаКонечныйОстаток; КонецЦикла; Если Сумма = 0 Тогда Элементы.ЗадолженностьПациента.ЦветТекста = WebЦвета.Синий; Элементы.Список.ТекущиеДанные.Задолжность = "У пациента нет задолженности"; ИначеЕсли Сумма > 0 Тогда Элементы.ЗадолженностьПациента.ЦветТекста = WebЦвета.Красный; Элементы.Список.ТекущиеДанные.Задолжность = "Задолженность пациента составляет: "+Сумма+" "+Константы.ОсновнаяВалюта.Получить(); ИначеЕсли Сумма < 0 Тогда Элементы.ЗадолженностьПациента.ЦветТекста = WebЦвета.Синий; Элементы.Список.ТекущиеДанные.Задолжность = "Задолженность перед пациентом составляет: "+Сумма*-1+" "+Константы.ОсновнаяВалюта.Получить(); КонецЕсли; Исключение; КонецПопытки; КонецЕсли; КонецПроцедуры &НаСервере Функция ПациентВПриеме(Прием) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриемСтоматолога.Пациент |ИЗ | Документ.ПриемСтоматолога КАК ПриемСтоматолога |ГДЕ | ПриемСтоматолога.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Элементы.Наименование); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Пациент = Выборка.Пациент; КонецЦикла; Возврат Пациент; КонецФункции |
|||
1
ВРедная
16.01.17
✎
14:06
|
Зачем попытка - исключение на ровном месте?
В чем заключается проблема? |
|||
2
Riko669
16.01.17
✎
14:08
|
Попытку уже убрала только что)
проблема заключается в том, что не выводится задолжность в поле надписи. Прошлась отладчиком, ошибок никаких не выдает |
|||
3
Остап Сулейманович
16.01.17
✎
14:16
|
(0) Вангую.
Вот это вот : РегистрНакопления.ОплатыПриемов есть регистр оборотов, а не остатков. |
|||
4
Riko669
16.01.17
✎
14:21
|
РегистрНакопления.ОплатыПриемов - остатки.
Нужно чтобы был обороты, я правильно поняла? |
|||
5
shamannk
16.01.17
✎
14:23
|
(4) В консоли вначале глянте че он вам выдает.
|
|||
6
Остап Сулейманович
16.01.17
✎
14:26
|
(4) Нет. Если остатки - тогда все нормально. За одним исключением. Движения туда должны писаться как приход так и расход.
|
|||
7
Riko669
16.01.17
✎
14:28
|
(6) Да, пишется расход и приход
|
|||
8
Riko669
16.01.17
✎
14:30
|
(5) Вот сейчас я точно запаролась на счет консоли. Не совсем вас поняла в данный момент, т.к. с консолью я не сталкивалась ни разу. В 1с полтора месяца. Такие дела о_О
|
|||
9
shamannk
16.01.17
✎
14:37
|
(8) Есть такая обработка "Консоль запросов" которая позволяет выполнить запрос в режиме предприятия и сразу посмотреть результат.
|
|||
10
1dvd
16.01.17
✎
14:40
|
Мне кажется, что функция ПациентВПриеме не работает так как надо
|
|||
11
Riko669
16.01.17
✎
14:42
|
(9) Хорошо, поняла, попробую покопаться с этим. (10) Думаете дело в последней функции "ПациентВПриеме"?
|
|||
12
1dvd
16.01.17
✎
14:43
|
(11) У тебя в Элементы.Наименование что?
|
|||
13
Riko669
16.01.17
✎
14:47
|
(12) Эм..вот за это извиняюсь, чуть ранее не совсем корректно написала вот эту часть "Запрос.УстановитьПараметр("Ссылка", Элементы.Наименование);" в других местах поменяла, а здесь не увидела и пропустила. Так что в целом Элементы.Наименование - это ничего
|
|||
14
1dvd
16.01.17
✎
14:48
|
(13) тебе надо в запрос передать ссылку на документ ПриемСтоматолога
|
|||
15
Riko669
16.01.17
✎
14:49
|
(14) Хорошо, сделаю
|
|||
16
1dvd
16.01.17
✎
14:51
|
(15) Дико извиняюсь, конечно, но, разве это не форма списка справочника пациентов?
|
|||
17
Riko669
16.01.17
✎
14:52
|
(16) Да, все верно. Я в первом сообщении указала, что это справочник с формой списка
|
|||
18
1dvd
16.01.17
✎
14:58
|
(16) Зачем тогда искать пациента через док стоматолога, если он вот он?
|
|||
19
Riko669
16.01.17
✎
15:00
|
(18) Как тогда к нему обратиться? Все равно тот же запрос, только не к этому документу или как-то иначе?
|
|||
20
1dvd
16.01.17
✎
15:13
|
(19) блин, давно не работал с управляемыми формами, но там что-то типа Элементы.Список.ТекущиеДанные.Ссылка вернёт ссылку на элемент справочника
|
|||
21
Riko669
16.01.17
✎
15:20
|
(20) Почитаю по больше на эту тему, спасибо
|
|||
22
Riko669
17.01.17
✎
11:50
|
День добрый. Я все по этой же теме, в общем внесла некоторые изменения, прохожусь отладчиком и вылетает постоянно именно на строке "Если Элементы.Список.ТекущиеДанные.Задолжность = Неопределено Тогда" (Процедура СписокПриАктивизацииСтроки(Элемент)).
Ошибку не выдает, но останавливает именно здесь. Открываю "Стек вызовов" пишет (Справочник.Пациенты.Форма.ФормаСписка.Форма.СписокПриАктивизацииСтроки(Элемент = ТаблицаФормы) 34 Тонкий клиент:Администратор (4), ghgh:1562) А при открытии "Локальные переменные" указывает "Переменная" (Элемент), "Значение" (ТаблицаФормы), Тип(ТаблицаФормы). |
|||
23
ВРедная
17.01.17
✎
13:03
|
Что значит "вылетает" и "останавливает"?
|
|||
24
famnam
17.01.17
✎
13:06
|
В процедура ПриАктивацииСтроки серверный вызов запрещен. Делайте через ПодключитьОбработчикОжидания
|
|||
25
Riko669
18.01.17
✎
11:03
|
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент) ТекПациент = Элементы.Список.ТекущаяСтрока; Если ТекПациент = Неопределено Тогда Возврат; КонецЕсли; СуммаЗадолженности = ПолучитьСуммуЗадолженностиПациента(ТекПациент); Если СуммаЗадолженности = 0 Тогда Элементы.Задолженность.ЦветТекстаЗаголовка = WebЦвета.Синий; Элементы.Задолженность.Заголовок = "У пациента нет задолженности"; ИначеЕсли СуммаЗадолженности > 0 Тогда Элементы.Задолженность.ЦветТекстаЗаголовка = WebЦвета.Красный; Элементы.Задолженность.Заголовок = "Задолженность пациента составляет: "+СуммаЗадолженности; ИначеЕсли СуммаЗадолженности < 0 Тогда Элементы.Задолженность.ЦветТекстаЗаголовка = WebЦвета.Синий; Элементы.Задолженность.Заголовок = "Задолженность перед пациентом составляет: "+СуммаЗадолженности*(-1); КонецЕсли; КонецПроцедуры &НаСервере Функция ПолучитьСуммуЗадолженностиПациента(СсылкаНаПациента) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОплатыПриемовОстатки.СуммаОстаток КАК СуммаОстаток |ИЗ | РегистрНакопления.ОплатыПриемов.Остатки( | , Прием.Пациент = &СсылкаНаПациента) КАК ОплатыПриемовОстатки"; Запрос.УстановитьПараметр("СсылкаНаПациента", СсылкаНаПациента); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Возврат 0; КонецЕсли; Выборка = Результат.Выбрать(); Выборка.Следующий(); Возврат Выборка.СуммаОстаток; КонецФункции Если добавляю "Константы.ОсновнаяВалюта.Получить();" Вылетает ошибка "Переменная не определена (Константы)" |
|||
26
ВРедная
18.01.17
✎
15:04
|
(25) на клиенте констант нет. Получи ее на сервере и храни в переменной формы. Потом на клиенте получай и показывай.
|
|||
27
Riko669
19.01.17
✎
09:45
|
(26) Хорошо, поняла. Спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |