|
v8: Регистр сведений | ☑ | ||
---|---|---|---|---|
0
fenlork
05.08.13
✎
10:03
|
Подскажите, пож-ста, в рс должна попадать лишь одна запись за период получается (истина)т.е запись провел и должен сработать счетчик-запись с отбором по фильму/кинотеатру/количеству мест-в виде А/кинос/1, второй раз провел-запись формата А/Кинос/2 и т.д. 3, 4, 5 с утра туплю очень сильно не серчайте)
НаборЗаписей=РегистрыСведений.проданнобилетов.СоздатьНаборЗаписей(); Наборзаписей.Отбор.Фильм.Установить(ЭтотОбъект.фильм); Наборзаписей.Отбор.Кинотеатр.Установить(ЭтотОбъект.Кинотеатр); НоваяЗапись=НаборЗаписей.Добавить(); новаязапись.период=дата; НоваяЗапись.Кинотеатр=Кинотеатр; НоваяЗапись.фильм=фильм; //место=этотобъект.Место; //Пока место>-1 цикл ??счетчик? место=0; НоваяЗапись.количествомест= место+1; //конеццикла; НаборЗаписей.Записать(истина); //очисть после записи в РС ЭтотОбъект.место = неопределено; этотобъект.Ряд=неопределено; этотобъект.Сумма=неопределено; |
|||
1
Maxus43
05.08.13
✎
10:07
|
РегистрыСведений.проданнобилетов - надеюсь так не будешь сдавать? с ошибками даже имена регистров, не позорь сообщество 1с, с одной "Н" слово продано!
|
|||
2
Maxus43
05.08.13
✎
10:08
|
Да и судя по задаче - классический регистр накопления должен быть, оборотный...
|
|||
3
fenlork
05.08.13
✎
10:08
|
лень пока исправлять..
|
|||
4
fenlork
05.08.13
✎
10:08
|
дело в том, что я через обработку делаю-без проведения документов
|
|||
5
fisher
05.08.13
✎
10:10
|
(0) Это оборотным регистром делается. Сведениями можно активные сеансы.
|
|||
6
Maxus43
05.08.13
✎
10:10
|
ну сделай запрос к регистру сначала, посчитай сколько уже мест, потом нужную цифру и пиши в регистр
|
|||
7
fenlork
05.08.13
✎
10:12
|
ок-спасибо, меняю все на ложь и пусть потом считают)каждую запись -1, 1, 1)
|
|||
8
Maxus43
05.08.13
✎
10:13
|
(7) лучше перепроектируй систему, кривая реализация, чесно. Оборотные регистры, документы и т.д.
|
|||
9
fisher
05.08.13
✎
10:16
|
(4) Очень зря. Обработкой или нет - но событие покупки билетов должно фиксироваться документом.
Вообще, если немножко подумать... Тогда регистр должен быть 1) остаточный регистр. На него закидываются места и по мере покупки списываются. Потом закрытие некупленных. Зато при любых нагрузках работа с актуальными местами будет быстрой. 2) оборотный регистр для нормального анализа и отчетности. Типа регистра продаж. |
|||
10
fenlork
05.08.13
✎
10:16
|
это все от кривого задания
|
|||
11
fenlork
05.08.13
✎
10:18
|
а, точно нельзя никакой счетчик впихнуть?
|
|||
12
Maxus43
05.08.13
✎
10:18
|
(10) это реализация такая, а не задание) никто не запрещает документ создавать программно и проводить из той же обработки, если юзер не должен видеть его.
|
|||
13
fenlork
05.08.13
✎
10:19
|
начальник запретил документы
|
|||
14
Maxus43
05.08.13
✎
10:19
|
(11) ну где ты его хранить то будешь?
|
|||
15
fenlork
05.08.13
✎
10:19
|
я на обучение просто
|
|||
16
Maxus43
05.08.13
✎
10:20
|
(13) ну и словите проблем, собственно уже сейчас ловите совершенно дурацкие проблемы
|
|||
17
Maxus43
05.08.13
✎
10:20
|
(11) > (6), что не получается то?
|
|||
18
Starhan
05.08.13
✎
10:21
|
(2) имхо нужна просто сетка мест с признаком занято/свободно по каждому сеансу.
|
|||
19
fenlork
05.08.13
✎
10:21
|
у меня все работает-хотелось улучшить
|
|||
20
fenlork
05.08.13
✎
10:23
|
кстати, за советы перемоделировать-спасибо, подумаю на досуге!
|
|||
21
fisher
05.08.13
✎
10:23
|
(19) Метод набора записей "Прочитать" тебя спасет. Добавляешь в сабжевый код для получения старого значения.
|
|||
22
fenlork
05.08.13
✎
10:24
|
хм..получить старое значение и + 1, так?
|
|||
23
fisher
05.08.13
✎
10:25
|
(22) Вот ты и смог описать алгоритм работы счетчика.
|
|||
24
fisher
05.08.13
✎
10:26
|
Только упаси тебя бог реальные задачи так автоматизировать. Это даже как тестовая задача очень странненько выглядит.
|
|||
25
fenlork
05.08.13
✎
10:29
|
мы простых путей не ищем-только так "по дальней прокси через Китай"))
|
|||
26
fisher
05.08.13
✎
10:36
|
(25) Речь не о простых путях. Речь о подходах. С таким подходом можно только однопользовательскую систему реализовать, да и то с кучей оговорок. Как только появится второй кассир - всё. Сливай воду.
|
|||
27
fenlork
05.08.13
✎
19:43
|
Подскажите пож-ста, вопрос такой, у меня есть записи в регистре сведений,в формате кинотеатр/фильм/кол-во мест,при продаже-продается один билет,в определенном кинотеатре на определенный фильм. Запись в регистре должна быть всего одна(истина). но при каждой так сказать"проводке" делаю через обработку без документов(так нужно, уж простите) количество мест увеличивается с шагам +1. В коде сначала сделал записи в регистр сведений, потом методом Прочитать() перебрал в цикле, и выбрал запись-вот тут проблема-место увеличивается лишь 1 раз, если сново провести за тот же период в том же кинотеатре и на тот же фильм-запись не меняется..
//запись по колличеству билетов НаборЗаписей=РегистрыСведений.проданобилетов.СоздатьНаборЗаписей(); Наборзаписей.Отбор.Фильм.Установить(ЭтотОбъект.фильм); Наборзаписей.Отбор.Кинотеатр.Установить(ЭтотОбъект.Кинотеатр); НоваяЗапись=НаборЗаписей.Добавить(); новаязапись.период=дата; НоваяЗапись.Кинотеатр=Кинотеатр; НоваяЗапись.фильм=фильм; НоваяЗапись.количествомест=1; НаборЗаписей.Записать(); //изменитькол-во билетов НаборЗаписей = РегистрыСведений.проданобилетов.СоздатьНаборЗаписей(); Наборзаписей.Отбор.Фильм.Установить(ЭтотОбъект.фильм); Наборзаписей.Отбор.Кинотеатр.Установить(ЭтотОбъект.Кинотеатр); НаборЗаписей.Прочитать(); Для Каждого Запись Из НаборЗаписей Цикл // Чтение и сообщение данных полей записи. Сообщить(Строка(Запись.Период) + " " + Строка(Запись.кинотеатр) + " " + Строка(Запись.фильм)+" "+строка(запись.количествомест)); // Изменение данных полей записи. Запись.количествомест =запись.количествомест+1 ; КонецЦикла; |
|||
28
hhhh
05.08.13
✎
20:50
|
а где Записать() ?
|
|||
29
fenlork
05.08.13
✎
20:54
|
//запись по колличеству билетов
НаборЗаписей=РегистрыСведений.проданобилетов.СоздатьНаборЗаписей(); Наборзаписей.Отбор.Фильм.Установить(ЭтотОбъект.фильм); Наборзаписей.Отбор.Кинотеатр.Установить(ЭтотОбъект.Кинотеатр); НоваяЗапись=НаборЗаписей.Добавить(); новаязапись.период=дата; НоваяЗапись.Кинотеатр=Кинотеатр; НоваяЗапись.фильм=фильм; НоваяЗапись.количествомест=1; НаборЗаписей.Записать(); //изменитькол-во билетов НаборЗаписей = РегистрыСведений.проданобилетов.СоздатьНаборЗаписей(); Наборзаписей.Отбор.Фильм.Установить(ЭтотОбъект.фильм); Наборзаписей.Отбор.Кинотеатр.Установить(ЭтотОбъект.Кинотеатр); НаборЗаписей.Прочитать(); Для Каждого Запись Из НаборЗаписей Цикл // Чтение и сообщение данных полей записи. Сообщить(Строка(Запись.Период) + " " + Строка(Запись.кинотеатр) + " " + Строка(Запись.фильм)+" "+строка(запись.количествомест)); // Изменение данных полей записи. Запись.количествомест =запись.количествомест+1 ; КонецЦикла; НаборЗаписей.Записать(); |
|||
30
fenlork
05.08.13
✎
20:54
|
все есть..
|
|||
31
hhhh
05.08.13
✎
22:24
|
(30) в 1с есть регистр: называется регистр сведений. Его основная фишка - каждому набору измерений соответствует ровно одна запись. У вас какие там измерения в вашем регистре?
|
|||
32
fenlork
06.08.13
✎
08:09
|
кинотеатр и фильм, ресур-колвомест
|
|||
33
fenlork
06.08.13
✎
08:14
|
Для Каждого Запись Из НаборЗаписей Цикл
Запись.количествомест =запись.количествомест+1 ; Запись.Период=дата; запись.Кинотеатр=кинотеатр; запись.Фильм=фильм; Запись.Записать(истина); КонецЦикла; если в цикле делать ругаеться на метод записать() |
|||
34
fenlork
06.08.13
✎
08:15
|
может запись.наборзаписей.записать()
|
|||
35
cw014
06.08.13
✎
08:20
|
Регистр периодический? А на струя?
|
|||
36
fenlork
06.08.13
✎
08:42
|
делаю иначе-
НаборЗаписей = РегистрыСведений.проданобилетов.СоздатьНаборЗаписей(); Наборзаписей.Отбор.Фильм.Установить(ЭтотОбъект.фильм); Наборзаписей.Отбор.Кинотеатр.Установить(ЭтотОбъект.Кинотеатр); НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество() = 0 Тогда НоваяЗапись=НаборЗаписей.Добавить(); новаязапись.период=дата; НоваяЗапись.Кинотеатр=Кинотеатр; НоваяЗапись.фильм=фильм; НоваяЗапись.количествомест=1; ИначеЕсли НаборЗаписей.Количество() = 1 Тогда Запись.КоличествоМест=запись.КоличествоМест+1; Запись.Период=дата; запись.Кинотеатр=кинотеатр; запись.Фильм=фильм; КонецЕсли; НаборЗаписей.Записать(истина); |
|||
37
fenlork
06.08.13
✎
08:44
|
первую запись по условие добавляет, а по второму условию ругаеться
{Обработка.Обработка2.Форма.Форма1.Форма(53)}: Поле объекта не обнаружено (КоличествоМест) Запись.КоличествоМест=запись.КоличествоМест+1; хотя запись в рс сохранилась |
|||
38
V01tk2010
06.08.13
✎
08:55
|
(37) Почему Запись.КоличествоМест, а не НаборЗаписей[0].КоличествоМест
|
|||
39
fenlork
06.08.13
✎
09:01
|
НаборЗаписей = РегистрыСведений.проданобилетов.СоздатьНаборЗаписей();
Наборзаписей.Отбор.Фильм.Установить(ЭтотОбъект.фильм); Наборзаписей.Отбор.Кинотеатр.Установить(ЭтотОбъект.Кинотеатр); НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество() = 0 Тогда НоваяЗапись=НаборЗаписей.Добавить(); новаязапись.период=дата; НоваяЗапись.Кинотеатр=Кинотеатр; НоваяЗапись.фильм=фильм; НоваяЗапись.количествомест=1; ИначеЕсли НаборЗаписей.Количество() = 1 Тогда новаязапись=наборзаписей[0]; НоваяЗапись=НаборЗаписей.Добавить(); количествомест=новаязапись.КоличествоМест; НоваяЗапись.количествомест=запись.КоличествоМест+1; КонецЕсли; НаборЗаписей.Записать(истина); |
|||
40
V01tk2010
06.08.13
✎
09:05
|
(39) А зачем добавлять если она уже есть?
ИначеЕсли НаборЗаписей.Количество() = 1 Тогда наборзаписей[0].количествомест = наборзаписей[0].КоличествоМест+1; КонецЕсли; |
|||
41
fenlork
06.08.13
✎
09:07
|
спасибо V01tk2010 работает..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |