|
Проверка на новый элемент справочника 🠗 (Serg_1960 08.12.2022 13:03) | ☑ | ||
---|---|---|---|---|
0
Len1vec
08.12.22
✎
12:36
|
Добрый день всем.
Подскажите, пожалуйста. Есть 2 команды на управляемой форме: "Установка цен" и "Список цен". Перейти по ним нельзя, пока элемент справочника не записан. Можно ли как-то оптимизировать или переписать проще приведенный ниже код? &НаКлиенте Процедура УстановкаЦен(Команда) Номенклатура = ПроверкаНаНовыйЭлемент(); ФормаЗаписи = ПолучитьФорму("РегистрСведений.ЦеныПродажи.Форма.ФормаЗаписи"); ФормаЗаписи.Запись.Период = ТекущаяДата(); ФормаЗаписи.Запись.Номенклатура = Номенклатура; ФормаЗаписи.Открыть(); КонецПроцедуры &НаКлиенте Процедура СписокЦен(Команда) Номенклатура = ПроверкаНаНовыйЭлемент(); ФормаСписка = ПолучитьФорму("РегистрСведений.ЦеныПродажи.Форма.ФормаСписка"); ФормаСписка.ФильтрПоНоменклатуре = Номенклатура; ФормаСписка.Открыть(); КонецПроцедуры &НаСервере Функция ПроверкаНаНовыйЭлемент() Если Объект.Ссылка.Пустая() Тогда Номенклатура = Справочники.Номенклатура.СоздатьЭлемент(); Номенклатура.Наименование = Объект.Наименование; Номенклатура.Записать(); ЭтаФорма.Модифицированность = Ложь; Возврат Номенклатура.Ссылка; Иначе Возврат Объект.Ссылка; КонецЕсли; КонецФункции |
|||
1
Beduin
08.12.22
✎
12:40
|
У тебя при вызове каких-то процедур записывается элемент справочника?
|
|||
2
PR
08.12.22
✎
12:41
|
Какая-то лютая дичь
|
|||
3
Kassern
08.12.22
✎
12:42
|
(0) Надеюсь вы это делаете не в форме создания номенклатуры?)
|
|||
4
PR
08.12.22
✎
12:42
|
Проверка на то, новый элемент или нет, в случае, если новый, создает какой-то новый элемент?!
|
|||
5
PR
08.12.22
✎
12:43
|
(3) Не будь так скоропалителен со своими выводами, ты же не знаешь бизнес-процессов компании, может им так нужно :))
|
|||
6
Kassern
08.12.22
✎
12:44
|
(0) У вас ЦеныПродажи не документ фиксирует?
|
|||
7
Kassern
08.12.22
✎
12:44
|
(5) я потому и уточняю)
|
|||
8
PR
08.12.22
✎
12:46
|
(7) Это была попытка доброго троллинга :))
На самом деле написанный в (0) код не имеет права на существование ни при каких обстоятельствах |
|||
9
Kassern
08.12.22
✎
12:47
|
(5) мой разум пока не в силах представить когда требуется создавать новую номенклатуру в форме создания новой номенклатуры) Здравый смысл говорит, что нужно просто не давать переходить по этим кнопкам и ругаться, что номенклатура не записана, как это делают типовые конфы.
(0) Посмотрите как работают упаковки, или штрихкоды в карточке номенклатуры, возможно этот вариант взаимодействия вам лучше подойдет) |
|||
10
Serg_1960
08.12.22
✎
12:47
|
Вернуть ссылку на другую запись справочника если Объект новый? О_О Да, согласен с (2)
|
|||
11
Новый1сник2
08.12.22
✎
12:49
|
(0) хочешь текущий элемент записать? или новый создать
|
|||
12
Kassern
08.12.22
✎
12:49
|
(8) Тут как раз бы подошел метод ПоказатьВопрос. Мол для работы с ценами нужно записать номенклатуру, продолжить?. И все дела.
|
|||
13
Kigo_Kigo
08.12.22
✎
12:50
|
То есть записать религия не позволяет?
|
|||
14
Kassern
08.12.22
✎
12:51
|
(13) Вот же есть Номенклатура.Записать(); =)
|
|||
15
Гипервизор
08.12.22
✎
12:53
|
Где находится функция ПроверкаНаНовыйЭлемент() и что такое Объект?
|
|||
16
Serg_1960
08.12.22
✎
13:02
|
(15) Автор от наших вопросов впал в ступор :)
|
|||
17
Serg_1960
08.12.22
✎
13:03
|
Функция ПроверкаНаНовыйЭлемент()
Если Объект.Ссылка.Пустая() Тогда Объект.Записать(); ЭтаФорма.Модифицированность = Ложь; КонецЕсли; Возврат Объект.Ссылка; КонецФункции |
|||
18
Len1vec
08.12.22
✎
13:05
|
Почитал Ваши комментариями, огорчился своей тупости, сократил код до следующего (норм или всё равно говно?):
&НаКлиенте Процедура УстановкаЦен(Команда) Если Не Объект.Ссылка.Пустая() Тогда ПараметрыФормы = Новый Структура("Номенклатура", Объект.Ссылка); ОткрытьФорму("РегистрСведений.ЦеныПродажи.Форма.ФормаЗаписи", ПараметрыФормы); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура СписокЦен(Команда) Если Не Объект.Ссылка.Пустая() Тогда ФормаСписка = ПолучитьФорму("РегистрСведений.ЦеныПродажи.Форма.ФормаСписка"); ФормаСписка.ФильтрПоНоменклатуре = Объект.Ссылка; ФормаСписка.Открыть(); КонецЕсли; КонецПроцедуры |
|||
19
Kigo_Kigo
08.12.22
✎
13:07
|
(18) Перечитай еще раз и объясни нахрена ты пустой ссылкой кидаешься туда обратно?
|
|||
20
PR
08.12.22
✎
13:09
|
(18) Вместо Не Объект.Ссылка.Пустая() напиши ЗначениеЗаполнено(Объект.Ссылка)
|
|||
21
Kassern
08.12.22
✎
13:13
|
(20) (18) ИТС говорит использовать "Параметры" https://its.1c.ru/db/metod8dev/content/3545/hdoc
Если Не Параметры.Ключ.Пустая() Тогда - как вариант. Имхо вкусовщина конечно) |
|||
22
PR
08.12.22
✎
13:22
|
(21) Хм, ну может быть, да
|
|||
23
Serg_1960
08.12.22
✎
13:28
|
(21) Угу. Параметры.Ключ.Пустая() вместо старого доброго ЭтоНовый().
|
|||
24
Len1vec
08.12.22
✎
13:29
|
(21) этим я пользовался, тоже работает.
В чем разница между Объект.Ссылка.Пустая(), Параметры.Ключ.Пустая() и ЗначениеЗаполнено(Объект.Ссылка) в скорости выполнения? |
|||
25
Len1vec
08.12.22
✎
13:30
|
(23) Для этого, вроде как, нужно получить объект. Но для чего нам это на клиенте?
|
|||
26
Serg_1960
08.12.22
✎
13:33
|
(25) "Старый и добрый" - это из эры Толстых Клиентов до эпохи Управляемых Форм :)
|
|||
27
Kassern
08.12.22
✎
13:35
|
(24) "в скорости выполнения" - ага. Объект.Ссылка - вроде как заставит весь объект прочитать, могу ошибаться.
|
|||
28
Len1vec
08.12.22
✎
13:48
|
(27) Мы что через Объект.Ссылка вызываем метод проверки ссылки Пустая(), что через Параметры.Ключ тот же метод для проверки ссылки Пустая(). Так что тут я не вижу разницы.
Решил проверить. Данные по отладке. 1. ЗначениеЗаполнено До: Тек вызовы 2, Накопленные 30 После : Тек вызовы 6, Накопленные 36 2. Объект.Ссылка.Пустая() До: Тек вызовы 2, Накопленные 29 После : Тек вызовы 6, Накопленные 35 3. Параметры.Ключ.Пустая() До: Тек вызовы 2, Накопленные 31 После : Тек вызовы 7, Накопленные 38 Менее требовательные ЗначениеЗаполнено и Объект.Ссылка.Пустая(). |
|||
29
Len1vec
08.12.22
✎
13:50
|
Тесты проводились на команде "УстановкаЦен"
|
|||
30
Serg_1960
08.12.22
✎
13:56
|
(28) Хех :) про кэширование забыли.
|
|||
31
Len1vec
08.12.22
✎
14:02
|
(30) Вообще забыл про него)
|
|||
32
PR
08.12.22
✎
16:32
|
(27) Ошибаешься
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |