Имя: Пароль:
1C
1С v8
Работа со Списком документов (проблемы с сортировкой)
, ,
0 Nysha1210
 
02.09.20
16:38
Всем привет. У нас 1С 8.3 УТП 1.2. Сейчас меняем под себя.

Дано - Список документов Заказ. Нужно по номеру заказа автоматом открыть нужный документ на экране.

Как реализовано - в форме Список заказов введено поле вода, где оператор вводит номер заказа и нажимает Enter. На экране открывавется форма документа нужного заказа (всё ок). После этого оператор делает то что нужно и закрывает заказ. НО, при попытке повторной активации поля ввода (нужно открыть тот же самый документ) - ничего не происходит(((( Если изменить номер заказа для поиска - всё ок, но оператору неудобно всё время набивать тот номер, который уже и так есть в поле ввода.

Поиск:
Процедура ПолеВвода1ПриИзменении(Элемент)
    
    //поиск по номеру заказа
    Если Элемент.Значение>0 then
        
        ДокТек = Документы.ЗаказПокупателя;
        НайдДок=ДокТек.НайтиПоНомеру(Элемент.Значение,);
        
        Если НайдДок=ДокТек.ПустаяСсылка() тогда
            Сообщить("Заказа с таким номером не существует.");
        иначе
            Док=НайдДок.ПолучитьОбъект();
            Форма = Док.ПолучитьФорму("ФормаДокумента");
            Форма.Открыть();  
        КонецЕсли;
    Endif;
КонецПроцедуры

Как это решить?
Спасибо
1 mikecool
 
02.09.20
16:43
лови - какие события отрабатывают при активации поля
но - лучше кнопку для открытия повесить
2 mikecool
 
02.09.20
16:44
и при чем здесь сортировка?
3 Nysha1210
 
02.09.20
16:45
Упс хотела ещё один вопрос написать((( - Как отключить при открытии сортировку по дате автоматическую?
4 Nysha1210
 
02.09.20
16:47
Просто нужно этот же список открыть с сортировкой по другому параметру, но, он открывается упорно с сортировкой по реквизиту Дата.

Процедура ПриОткрытии()
    
        ЭлементыФормы.Список.НастройкаОтбора.Проведен.Доступность = Истина;
        ЭлементыФормы.Флажок2.Значение=истина;
        ЭлементыФормы.Флажок1.Значение=истина;
        ЭлементыФормы.Флажок3.Значение=истина;    
        ЭлементыФормы.Список.НастройкаПорядка.ДатаСП.Доступность=истина;
        ДокументСписок.Порядок.Установить("ДатаСП");
        НастройкаСписка=ЭлементыФормы.Список.СтандартныйПериод;
        НастройкаСписка.УстановитьПериод(НачалоГода(ТекущаяДата()),КонецМесяца(ТекущаяДата()));
        //НастройкаСписка.УстановитьПериод(НачалоМесяца(ТекущаяДата()),КонецМесяца(ТекущаяДата()));
        
КонецПроцедуры
5 Nysha1210
 
02.09.20
16:48
(1) в 1С 77 всё работает без проблем правильно.
6 Nysha1210
 
02.09.20
16:51
(1) я уже во все действия пробовала вставить код открытия заказа, но ничего не подходит((( Пока поле не изменишь - процедура не работает.
7 Ёпрст
 
02.09.20
16:58
(6) либо рядом кнопку с лупой (типа поиск), либо после удачного поиска очищай поле
8 Nysha1210
 
02.09.20
17:00
(7) Больше вариантов нет? Почему в 1С 77 повторный поиск работает тогда?
9 mikecool
 
02.09.20
17:01
(8) в семерке отрабатывает поиск если ткнуть мышью в поле? или там сендкей настроен?
10 mikecool
 
02.09.20
17:02
одна из черепашек врет
11 Nysha1210
 
02.09.20
17:03
(9) в поле поместила курсор и нажала Enter - поиск работает по одному значению хоть 10 раз(((
12 Nysha1210
 
02.09.20
17:07
(9) (11) а в 8 - только 1 раз срабатывает, потом курсор переходит на след поле при нажатии на Enter((((
13 vova1122
 
02.09.20
17:08
Так процедура называется ПолеВвода1 ПРИ ИЗМЕНЕНИИ. А когда ткнуть просто мышкой инажать Ентер, никакого изменения в поле ввода не произойдет. Можно тупо удалить последний символ и ввести его снова, тогда сработает ПриИзменении
14 Nysha1210
 
02.09.20
17:10
(13) Щас попробую, спс. Я в другие действия тоже пробовала - не помогло (((( и Обработка выбора, и т.д.
15 mikecool
 
02.09.20
17:14
(11) так все таки есть Ентер, да, в семерке при каждом ентере срабатывало ПриИзменении
16 Nysha1210
 
02.09.20
17:19
(15) В 8 тот же Enter - но это не работает(((
17 Ёпрст
 
02.09.20
17:21
(16) ибо изменения поля нет
18 Nysha1210
 
02.09.20
17:22
(17) понимаю(((
19 D_E_S_131
 
02.09.20
17:25
(16) Потому что делать стали как в 7.7. Делали бы по "восьмерошному", проблем не было бы. В "Найти" вводим номер, курсор сам встает на документ в списке и Enter уже открывает сам документ. Поработали и закрыли - курсор никуда не девается и повторное нажатие на Enter опять откроет тот же документ.
20 Nysha1210
 
02.09.20
17:26
(13) не помогло(((
21 Nysha1210
 
02.09.20
17:27
(19) это было бы возможно, но, период в журнале открыт свой, например, 2020 год - а документ может быть с 2019 года, так что в списке его нет и быть не может(((
22 vova1122
 
02.09.20
17:29
(20) Только что специально проверял. ввел в поле ввода значение. После Ентер сработало ПриИзменении. В поле ввода удалил последний символ и ввел его же снова. Нажал Ентер Опять сработало
23 Nysha1210
 
02.09.20
17:31
(22) вы ввели его вручную? Мои не хотят с клавиатуры что то вводить - нужно что бы сработало автоматом(((
24 Ёпрст
 
02.09.20
17:33
(23) рядом маленькую кнопку с картинкой лупой..в ней событие которое в ПриИзменении
25 Ёпрст
 
02.09.20
17:33
усё
26 Nysha1210
 
02.09.20
17:35
(24) какое событие срабатывает при Активизации поля ВВода мышей?
27 Nysha1210
 
02.09.20
17:35
(24) А как с сортировкой хоть вопрос решить?
28 vova1122
 
02.09.20
17:38
(26) Так тебе же ответили. Никакая не сработает. И прислушайся к совету   Ёпрст. Он плохого не посоветует
29 Nysha1210
 
02.09.20
17:40
(28)Спс, только к моим ответам не хочет прислушаться руководство - у них какой принцып - раз в 77 было, вынь и положь тоже самое в 8.3((( Может хоть с сортировкой поможете, плиз?
30 Ёпрст
 
02.09.20
17:40
(27) ТвойСписок.Порядок.Установить("РеквизитТвой Возр")
31 Ёпрст
 
02.09.20
17:40
не работает разве ?
32 Nysha1210
 
02.09.20
17:41
(31) Живой код - не работает(((
Сортирует всё равно по Полю Дата
Процедура ПриОткрытии()
    
        ЭлементыФормы.Список.НастройкаОтбора.Проведен.Доступность = Истина;
        ЭлементыФормы.Флажок2.Значение=истина;
        ЭлементыФормы.Флажок1.Значение=истина;
        ЭлементыФормы.Флажок3.Значение=истина;    
        ЭлементыФормы.Список.НастройкаПорядка.ДатаСП.Доступность=истина;
        ДокументСписок.Порядок.Установить("ДатаСП");
        НастройкаСписка=ЭлементыФормы.Список.СтандартныйПериод;
        НастройкаСписка.УстановитьПериод(НачалоГода(ТекущаяДата()),КонецМесяца(ТекущаяДата()));
        //НастройкаСписка.УстановитьПериод(НачалоМесяца(ТекущаяДата()),КонецМесяца(ТекущаяДата()));

        
КонецПроцедуры
33 vova1122
 
02.09.20
17:42
(29) Так обясни руководству что это разные программы, хоть и называются 1С. Это типа как MS Ворд и Ексель. Они же не требують чтобы в ворде также работали формулы как в Екселе
34 Nysha1210
 
02.09.20
17:50
(33) Сдалась, сделала кнопки((( А как быть с сортировкой?
35 vova1122
 
02.09.20
18:08
(34) должно работать.
ДокументСписок.Порядок.Установить("ДатаСП");
Может поставить ее последней строкой
36 vova1122
 
02.09.20
18:08
ДатаСП - это реквизит Документа?
37 Nysha1210
 
03.09.20
10:56
(36) Да
38 ChiginAV
 
03.09.20
11:18
(0)
1) Событие "ОкончаниеВводаТекста" вместо "ПриИзменении"
2) В режиме предприятия жмем "Отбор и сортировка", выбираем по какому реквизиту сортируем, ставим галку "Использовать эту настройку при открытии"
39 Nysha1210
 
03.09.20
14:30
(38) 1) не работает (((
40 vova1122
 
03.09.20
14:44
(39) ну небудет работать так как хочешь только кнопкой
41 Nysha1210
 
04.09.20
12:32
По сортировке - решение найдено:
Процедура ПриОткрытии()
        ЭлементыФормы.Список.НастройкаОтбора.ДатаОплаты.Доступность = Истина;        
        НачалоПериода = НачалоМесяца(ТекущаяДата());
        КонецПериода = КонецМесяца(ТекущаяДата());
        ЭлементОтбора=ДокументСписок.Отбор.ДатаОплаты;
        ЭлементОтбора.Использование = Истина;
        ЭлементОтбора.ЗначениеС        = НачалоПериода;
        ЭлементОтбора.ЗначениеПо    = КонецПериода;
        ЭлементОтбора.ВидСравнения    = ВидСравнения.ИнтервалВключаяГраницы;
        ЭлементОтбора.Использование = Истина;
КонецПрицедуры

Такю же процедуру повесила на отдельную кнопку Сортировки.

Всем Спасибо за помощь.
Основная теорема систематики: Новые системы плодят новые проблемы.