Имя: Пароль:
1C
 
Помогите с запросом 🙏
🠗 (Волшебник 26.12.2024 23:17)
,
0 windsadsfe
 
naïve
26.12.24
21:40
Всем добра!
Есть справочники: Транспортные средства и Водители, из документов - Накладная, в которой в качестве реквизитов используются водитель, машина и дата доставки. По заданию нужно сделать так, чтобы водитель мог быть закреплен только за одним транспортным средством в течение одного дня.
Я создал регистр сведений ПроверкаТС с измерениями - Водитель и ТС, ресурс - Дата.
В обработке проведения документа Накладная использую следующий код:
// регистр ПроверкаТС
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ПроверкаТС.Водитель КАК Водитель,
		|	ПроверкаТС.Дата КАК Дата,
		|	ПроверкаТС.ТранспортноеСредство КАК ТранспортноеСредство
		|ИЗ
		|	РегистрСведений.ПроверкаТС КАК ПроверкаТС
		|ГДЕ
		|	ПроверкаТС.Водитель = &Водитель
		|	И ПроверкаТС.Дата = &Дата";
	
	Запрос.УстановитьПараметр("Водитель", Водитель);
	Запрос.УстановитьПараметр("Дата", ТекущаяДата());
	
	РезультатЗапроса = Запрос.Выполнить();  
	Выборка = РезультатЗапроса.Выбрать();		   
	Если Выборка.Количество() > 0 Тогда	
		Сообщить("Водитель уже закреплен за другой машиной на сегодня!");
	   Возврат; // предотвратить запись
   Иначе 
	   	Движения.ПроверкаТС.Записывать = Истина;
		Движение = Движения.ПроверкаТС.Добавить();
		Движение.Период = Дата;
		Движение.Водитель = Водитель;
		Движение.ТранспортноеСредство = Машина;
		Движение.Дата = Дата;
   КонецЕсли;


но, как понимаю, код с проверкой не работает, поскольку возникает ошибка: Запись с такими ключевыми полями существует! : ПроверкаТС: 26.12.2024, Петров Иван Сергеевич, МАЗ (Регистр сведений: Проверка ТС; Номер строки: 2)
[ОшибкаХранимыхДанных]

Как можно это исправить? Помогите, пожалуйста
1 Волшебник
 
26.12.24
21:39
ёб вашу мать!
2 Волшебник
 
26.12.24
21:39
>> По заданию нужно сделать так,

Кто ставит эти задания? Какой гондон пишет вот это всё?
3 Волшебник
 
26.12.24
21:43
(0) Ты создал регистр, блять! Ну так, блять, дальше работай!

"Блять...Блять...Блять..." — тихо отозвалось эхо...
4 Волшебник
 
26.12.24
21:42
>> (0) Я создал регистр сведений ПроверкаТС

Как это можно выдерживать? Кто готов это держать вместо меня?!
5 windsadsfe
 
naïve
26.12.24
21:43
Сижу над этим несколько часов и уже ничего не понимаю, к сожалению :_D
6 windsadsfe
 
naïve
26.12.24
21:44
Возможно, это можно реализовать намного легче, но додумался только до регистра
7 Волшебник
 
26.12.24
21:46
(5) Часов, сука... Мы тут годами сидим... Тоже нихуя не понимаем
8 windsadsfe
 
naïve
26.12.24
21:48
Верю, соболезную.. Хотелось бы найти решение, добить это и забыть как страшный сон..
9 lEvGl
 
гуру
26.12.24
21:50
(0) периодический, в пределах дня, регистр, измерения ТС, водитель. При назначении этих данных (где там это происходит) пишете с затиранием. Всегда на один день будет одна запись ТС- водитель, иначе записать не даст. все
зы. ну а если перекрепление водителя происходит, то от логикии надо идти. Кто знает, что вам там надо
10 Волшебник
 
26.12.24
21:50
(8) "забыть как страшный сон" уже не получится. Или вы айтишник или говном по стене намазано...
11 lEvGl
 
гуру
26.12.24
21:51
что это ха хрень
Если Выборка.Количество() > 0 Тогда

а это
Возврат; // предотвратить запись

где отказ
12 Волшебник
 
26.12.24
21:52
(11) Вы очень строги к новичку. Он же только вкатился в айти. ВКАТУН, бля
"войти в айти", слышали выражение?
13 H A D G E H O G s
 
26.12.24
21:53
Движение.Период = Дата;

заменить на

Движение.Период = НачалоДня(Дата);

и

Запрос.УстановитьПараметр("Дата", ТекущаяДата());
на
Запрос.УстановитьПараметр("Дата", НачалоДня(Дата));


Neurolinks lifes matter!
14 lEvGl
 
гуру
26.12.24
21:53
(12) мне кажется он уже успел выйти ^_-
15 Волшебник
 
04.01.25
17:46
(13) "lives", произносится "лайвз"
16 Волшебник
 
26.12.24
21:55
(14) Ща зацепим... Ты подсекай
17 windsadsfe
 
naïve
26.12.24
21:53
(11) вот эта хрень и не работает, что и неудивительно. Отказ тоже не особо помогал
18 Волшебник
 
26.12.24
21:55
Смотрите, он уже перешёл на уровень выше. Только не спугните...
19 lEvGl
 
гуру
26.12.24
21:54
(17) отказ обычно и не помогает
(0) честно, откуда код?
20 windsadsfe
 
naïve
26.12.24
21:58
(19) код - гибрид конструктора движений и конструктора запроса с обработкой, выстраданный
21 lEvGl
 
гуру
26.12.24
21:59
(16) можно попробовать :)
22 windsadsfe
 
naïve
26.12.24
22:00
Мне нужно, чтобы выводилось сообщение о том, что водитель закреплён за конкретной машиной в конкретный день (чтобы нельзя было навешать одного и того же человека на несколько машин), но я что-то делаю не так и не догоняю, как поправить имеющееся
23 Смотрящий
 
26.12.24
22:01
(7) Редкий случай когда с отбитым солидарен ...
24 lEvGl
 
гуру
26.12.24
22:03
(22) давайте логику сначала, код немного позже
если водителя закрепили за тс, то больше никто и никогда не может его переназначить?
назначают где то в другом месте, а не в этом документе,  чью ОбработкуПроведения мы видим?
25 windsadsfe
 
naïve
26.12.24
22:02
(24) по идее может
26 lEvGl
 
гуру
26.12.24
22:04
(25) ок, назначение происходит "где то там", а этот документ - другое?
27 windsadsfe
 
naïve
26.12.24
22:06
В этом документе как раз и проставляется и дата, и водитель, и ТС, в нём поменять и можно так-то
28 lEvGl
 
гуру
26.12.24
22:06
да ладно, что в этом же документе и назначают?
29 windsadsfe
 
naïve
26.12.24
22:07
ну у меня да :_D
30 Волшебник
 
26.12.24
22:09
(23) 💖 Сердце тебе. Прости что не так...
31 lEvGl
 
гуру
26.12.24
22:17
(29) смысл в чем, чтобы перед переназначением предупредить, что он уже был закреплен за другим тс что ли или чтобы дать Отказ в переназначении?
в нём поменять и можно так-то

ну дак и меняйте. РС подчиенный если, то все перетрется
профит ;)
32 windsadsfe
 
naïve
26.12.24
22:18
(31), а то, и то возможно?
вообще: если создавать новый документ и в нем проставлять уже использованную дату и водителя, закрепленного за другим ТС, то должно вылезать предупреждение

если делать переназначение (с нормальной даты на использованную/другого водителя на уже закрепленного), то должно выйти сообщение
33 lEvGl
 
гуру
26.12.24
22:28
(32) "Запись с такими полями уже существует" это ж и есть предупреждение хы
в данном случае это не бага а фича
платформа все сделала сама, ии ближе, чем кажется..
ну напишите к вашему запросу обработку вроде "Водитель в этот день занят", только в запрос еще ТС надо добавить и потом отказ истина.
ПолУчите сначала ручное предупреждение, потом платформенное "Не удалось провести документ"
зы. в целом все правильно, только надо тс учитывать и отказ давать
34 windsadsfe
 
naïve
26.12.24
22:23
(33) но это вылетает окно ошибки, если я ввожу одно и то же ТС с одним и тем же человеком на одну и ту же дату, как я теперь понял
А вот если менять ТС, не меняя остальных, то документ проводится без предупреждений
35 lEvGl
 
гуру
26.12.24
22:33
аа, вон че, ну ок
тогда без тс
36 lEvGl
 
гуру
26.12.24
22:37
собственно тогда регистр должен быть без тс, тс - ресурс и тогда без ручных проверок
если уж пляска от водитела
37 windsadsfe
 
naïve
26.12.24
22:41
то есть, по сути мне нужно поменять у регистра данные, добавить отказ = истина? но код, начиная с "если" и до иначе, все равно не работает
его тоже нужно поменять?
38 lEvGl
 
гуру
26.12.24
22:44
какой код, поменяйте логику, то есть измените регистр, останется только водатель + родной период регистра
это даст однозначную запись дата + человек
при попытке другим документом записать этого водителя на эту дату будет ошибка
упрощаем, ии должен работать
39 windsadsfe
 
naïve
26.12.24
22:47
(38) аааа, дошло теперь, спасибо вам большое, очень помогли!
40 lEvGl
 
гуру
26.12.24
22:53
(39) ну а какая разница за каким тс он закреплен, если надо только обозначить его занятость, для информации можно ресурс вывести
заходите
41 Волшебник
 
26.12.24
22:55
(40) Так легко отпускаем?
42 lEvGl
 
гуру
26.12.24
22:57
(41) он улетел, но обещал.. (с)
))
43 Волшебник
 
26.12.24
23:05
(42) Нет, это методически неверно. Вы же не выяснили, что за конфа, какая структура регистра, кто он там и чем рулит.
Взяли и отпустили синицу из руки
44 Волшебник
 
26.12.24
23:06
(42) По сути, Вы уничтожили потенциал.
Он же вчера родился. Пардон, сегодня!
45 lEvGl
 
гуру
26.12.24
23:21
(44) определили логику, чем заняться там есть еще
Я думаю, что настоящая синица должна быть свободной, это и желание ничем не перебить. А покурлыкать с сородичами - милости просим)
ну и другие варианты птиц есть конечно, но это не интересно, привязанные боты и так есть, этот придет по-другому, кмк. Журавлем. Мб, этого никто не знает, даже он
46 Волшебник
 
26.12.24
23:15
(45) Синица свободна, она же птичка.
А вот Ваше "ни чем" я заменил на "ничем" и ещё подчеркнул.
47 lEvGl
 
гуру
26.12.24
23:20
(46) "ничем" спорный вопрос
это отрицающая частица к подлежащему-существительному, между ними можно вставить что нибудь
48 Волшебник
 
26.12.24
23:16
(47) Спорь дальше... Но не со мной, а со своей грамотностью и знанием русского языка. Встретимся на трансцендентностьях...
49 lEvGl
 
гуру
26.12.24
23:24
:D :D
зы. концепция понятна, принята, но тут.. сам написал, сам танцую и смеюсь
50 Волшебник
 
26.12.24
23:24
(49) 🔥 ветка - огонь, да? ;)
51 Волшебник
 
26.12.24
23:23
💖 Люблю мисту...
52 lEvGl
 
гуру
26.12.24
23:30
покрутим еще..
давно эйчаров не было, с ними интересно!
53 Волшебник
 
26.12.24
23:31
(52) в следующем году будут изменения, но эйчары останутся
54 Волшебник
 
27.12.24
00:08
кто ещё не высказался в этой ветке, пожалуйста.
ВЕТКА ОТКРЫТА

Но мы всех ждём дальше
OFF: Новая музыка и песни 2024 года
55 H A D G E H O G s
 
27.12.24
00:41
(0)
Человек - это веревка, натянутая между зверем и сверхчеловеком, веревка над бездной. Опасный путь; опасно идти вперед, опасно оглядываться назад. Опасно сомневаться и останавливаться. Величие человека в том, что он - мост, а не тупик. Что он постоянно ищет и развивается. Я восхищаюсь теми, кто не знает, как жить, ибо они перешли бездну.
56 Волшебник
 
27.12.24
01:20
(55) 💖 бесконечно круто
57 Волшебник
 
27.12.24
01:44
(55) Дай добавлю, что сам узнал.
Слышал русскую песню ээх ухнем...
когда канат натягивают?
Ну вспомнил, да?
58 Stepashkin
 
27.12.24
07:02
Прочел терзания вкатуна. Ужаснулся. Стало грустно от текущего положения дел в стране в сфере IT. Как с такими мыслями начинать день???
59 DimVad
 
27.12.24
07:28
(0) В процедуре "Перед записью" документа Вы можете выполнять запрос по документам "Накладная" - ищите документы с такими водителями. Ищите только если режим записи "Проведение".

Если такой документ найден, он не помечен на удаление и он не текущий (который проводится) то  присваиваете переменной Отказ значение Истина и пишите сообщение.

Регистр не нужен.
60 Волшебник
 
27.12.24
09:47
(59) фу
61 skafandr
 
27.12.24
13:55
(59) Вот взял и всё представление поломал