|
Как правильно записать алгоритм использую связь по владельцу? | ☑ | ||
---|---|---|---|---|
0
Kamich
04.04.13
✎
17:40
|
Добрый день.
В документе есть 1)Реквизит Заявка 2)Реквизит Всего 3)Две ТЧ: Клиенты(Колонки: Клиент,Сумма),Дети(Колонки: Клиент,Сумма). При выборе заявки Происходит следующая процедура: Процедура ЗаявкаПриИзменении(Элемент) Клиент.Очистить(); Для Каждого Строка Из Заявка.Клиенты Цикл НоваяСтрока=Клиент.Добавить(); НоваяСтрока.Клиент=Строка.Клиент; КонецЦикла; Дети.Очистить(); Для Каждого Строка Из Заявка.Дети Цикл НоваяСтрока=Дети.Добавить(); НоваяСтрока.Клиент=Строка.Клиент; КонецЦикла; КонецПроцедуры В этом же документе есть кнопка1 при нажатии которой происходит следующая процедура: Процедура Кнопка1Нажатие(Элемент) Для Каждого Строка Из Клиент Цикл Строка.Сумма=Всего; КонецЦикла; Для Каждого Строка Из Дети Цикл Строка.Сумма=Всего; КонецЦикла; Стр=ЭлементыФормы.Дети.ТекущиеДанные; Стр2=ЭлементыФормы.Клиент.ТекущиеДанные; Если Стр.Клиент.Владелец.Ссылка=Стр2.Клиент Тогда Для каждого Строчка Из Дети Цикл Для Каждого Строка Из Клиент Цикл Строка.Сумма=Строчка.Сумма+Строка.Сумма; КонецЦикла; КонецЦикла; КонецЕсли; КонецПроцедуры У Справочника Дети есть владелец Клиент. Вопрос такой: К примеру в реквизите Всего указано значение "100". Какой алгоритм следует сделать чтобы при нажатии по кнопка1 происходила проверка ТЧ Дети, по владельцу и если находился владелец то в ТЧ Клиент в найденной строке по колонке "Клиент" в колонке Сумма добавлялась сумма и суммировалась из ТЧ Дети? |
|||
1
zak555
04.04.13
✎
17:42
|
> У Справочника Дети есть владелец Клиент.
неправильный подход я могу заплатить за ребёнка, который не мой |
|||
2
Kamich
04.04.13
✎
17:44
|
(1) ...
А что предложите? |
|||
3
zak555
04.04.13
✎
17:46
|
(2) в БУ нет привязки кто за кого платит
там просто делаются движения через 76 счет |
|||
4
Kamich
04.04.13
✎
17:48
|
(3) P.S. Конфигурация написана с нуля
|
|||
5
zak555
04.04.13
✎
17:48
|
так я про принципы говорю
|
|||
6
Kamich
04.04.13
✎
17:50
|
(5) Т.е. предлагаете через движения по регистру?
|
|||
7
kosts
04.04.13
✎
17:51
|
(0) Опиши какой бизнес процесс должна решать эта форма.
А то что-то сложно накручено. |
|||
8
zak555
04.04.13
✎
17:51
|
ты лучше расскажи зачем нужен клиенты и дети
|
|||
9
Kamich
04.04.13
✎
17:52
|
(8) (7)
Оплата за тур. |
|||
10
kosts
04.04.13
✎
17:55
|
Возможно оплату нужно вносить по каждому клиенту отдельно.
|
|||
11
kosts
04.04.13
✎
17:56
|
(10)+ разными документами
|
|||
12
Kamich
04.04.13
✎
17:59
|
(11) Т.е. делать движения по регистрам по всем клиентам...
А если делать по другому,т.е в движения попадает только клиент(без детей) с сумой (за клиента+за ребенка).а детей не фиксировать в движения. Тогда какой должен быть алгоритм (0) |
|||
13
zak555
04.04.13
✎
18:01
|
(9) зачем тогда связываешь плательщика и ребёнка ?
|
|||
14
Kamich
04.04.13
✎
18:04
|
(13) у ребенка при расчета могут быть другие цены.Значит лучше всего дети движения по регистрам по всем клиентам?
|
|||
15
zak555
04.04.13
✎
18:05
|
(14) наверное разные цены зависит не от ребёнка, а от того, кто платит ? =)
|
|||
16
kosts
04.04.13
✎
18:08
|
(14) Мало информации о твоей задаче, только гадать можно...
|
|||
17
Kamich
04.04.13
✎
18:10
|
(15) )
На самом деле такую волокиту создали.... Писал писал,а про детей забыл, Такая проблема,что к примеру в каждой гостинице имеется определенные условия к примеру если ребенку семь лет, то платить за него не нужно,если от 7-10 до 50 % оплаты от стоимость за человека. Соответственно цена зависит не (15) ,а от ребенка. |
|||
18
zak555
04.04.13
✎
18:11
|
кстати, банковскую карты своему ребёнку можно открыть с 4х лет
|
|||
19
zak555
04.04.13
✎
18:12
|
=> при оплате инфы, кто держит счет не будет
|
|||
20
Kamich
04.04.13
✎
18:15
|
(18) (16) (15) (11) Ребят что посоветуете?
|
|||
21
kosts
04.04.13
✎
18:26
|
Возможно не нужно выделять отдельно детей в справочник.
В шапке плательщик, сумма оплаты всего. Одна табличная часть жильцы. ФИО|Возраст|Процент оплаты|сумма |
|||
22
Kamich
04.04.13
✎
18:30
|
(21) По архитектуре не подойдет
|
|||
23
Kamich
04.04.13
✎
18:32
|
(21) А как быть с алгоритмом,как правильно его прописать (0)
|
|||
24
kosts
04.04.13
✎
18:36
|
>Сумма добавлялась сумма и суммировалась из ТЧ Дети
Вот это не правильный подход, что произойдет если кнопка дважды будет нажата... Или как понять что в сумме рядом с клиентом уже прибавилась сумма за ребенка или еще не прибавилась... |
|||
25
Kamich
04.04.13
✎
18:39
|
(24)
Тогда какой алгоритм должен быть? |
|||
26
kosts
04.04.13
✎
18:42
|
(25) Три колонки можно
Сумма клиент|Сумма за детей|Сумма всего |
|||
27
kosts
04.04.13
✎
18:46
|
(26) Причем пересчитывать сразу по вводу данных, без специальных кнопок.
|
|||
28
Kamich
04.04.13
✎
18:46
|
(26)(27) То же вариант)
А как это прописать в виде кода,чтобы соответствовал по владельцу,а то как я понимаю сейчас уменя не идет отбор по клиенту в ТЧ Клиенты, и в колонке сумма ТЧ Клиенты рассчитывается на все клиента в независимости от владельца. |
|||
29
Kamich
04.04.13
✎
18:59
|
(27) ?
|
|||
30
kosts
04.04.13
✎
19:02
|
(28) Поиск по владельцу тоже как-то не очень, т.к. не очевидна связь клиент-ребенок при вводе данных на форме.
Хорошо бы как-то обозначить какому клиенту соответствуют какие дети (тут же на форме). Что-то в этом роде
PS на ошибки ввода данных нужно тщательно проверять. Что бы у детёнка обязательно был владелец в этом документе, а то его сумма никуда не войдет... |
|||
31
Kamich
05.04.13
✎
10:40
|
(30) отлично)
Правда он у меня выводит итоги только по выделенной строке,как тогда нужно сделать чтобы по всем строкам прошелся? Вот код: КлиентВладелец = ЭлементыФормы.Дети.ТекущаяСтрока.Клиент.Владелец; СуммаПоДетямДляВладельца = 0; Для каждого т из Дети цикл Если т.Клиент.Владелец = КлиентВладелец Тогда СуммаПоДетямДляВладельца = СуммаПоДетямДляВладельца + т.Сумма; КонецЕсли; КонецЦикла; Строка = Клиент.Найти(КлиентВладелец, "Клиент"); Если Строка <> неопределено Тогда Для Каждого ЭлементСписка Из Клиент Цикл Строка.СуммаПоДетям = СуммаПоДетямДляВладельца; КонецЦикла; Иначе сообщить("ошибка"); КонецЕсли; |
|||
32
Kamich
05.04.13
✎
10:58
|
Так как сделать что бы не по выделенной строке,а чтобы по всем строкам прошелся???
|
|||
33
kosts
05.04.13
✎
11:15
|
(32) Помести (31) в процедуру типа "пересчитать по строке".
|
|||
34
Kamich
05.04.13
✎
11:23
|
(33) Он ее выводит как неопознанный объект
P.S. 1с 8.1 |
|||
35
kosts
05.04.13
✎
11:26
|
(34) что именно не опознано?
|
|||
36
Kamich
05.04.13
✎
11:34
|
(35) ПересчитатьИтогВСтроке(Строка);
|
|||
37
kosts
05.04.13
✎
11:37
|
(36) ну так создай её. перенеси в нее код из (31) (ну почти весь). передавай в процедуру или владельца по которому нужно пересчитать или ребенка.
|
|||
38
Kamich
06.04.13
✎
17:25
|
(37)
Я её создал Процедура ПересчитатьИтогВСтроке(Строка) КлиентВладелец = ЭлементыФормы.Дети.ТекущаяСтрока.Клиент.Владелец; СуммаПоДетямДляВладельца = 0; Для каждого т из Дети цикл Если т.Клиент.Владелец = КлиентВладелец Тогда СуммаПоДетямДляВладельца = СуммаПоДетямДляВладельца + т.Сумма; КонецЕсли; КонецЦикла; Строка = Клиент.Найти(КлиентВладелец, "Клиент"); Если Строка <> неопределено Тогда Для Каждого ЭлементСписка Из Клиент Цикл Строка.СуммаПоДетям = СуммаПоДетямДляВладельца; КонецЦикла; Иначе сообщить("ошибка"); КонецЕсли; КонецПроцедуры Все равно считает только по выделенной колонке.... |
|||
39
Kamich
06.04.13
✎
17:28
|
(37) Спасибо))
Разобрался сделал следующее: Для каждого ТЧ ИЗ Клиент Цикл Для Каждого ТЧД Из Дети Цикл Если ТЧД.Клиент.Владелец=ТЧ.Клиент Тогда ТЧ.СуммаПоДетям=ТЧД.Сумма; КонецЕсли; КонецЦикла КонецЦикла; |
|||
40
mistеr
06.04.13
✎
18:26
|
Насчет архитектуры.
Я так понимаю, есть справочник клиентов, а есть документ - расчет конкретного тура. Я бы сделал так. В документе ТЧ Участники/Места вида Категория | Цена | Количество | Сумма где Категория это взрослые, дети до 7 лет, и т.д. Перечисление или справочник. По команде Заполнить ТЧ заполняется с учетом детей из справочника. Но можно добавить и вручную (на случай чужого ребенка). Стремится все рассчитывать только автоматически не нужно, всегда могут быть нюансы. |
|||
41
Kamich
07.04.13
✎
17:36
|
(40)
Это точно)): "Стремится все рассчитывать только автоматически не нужно, всегда могут быть нюансы."))) Спасибо)) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |