Имя: Пароль:
 
1C
1C 7.7
v7: Обработка флажка
0 Масянька
 
16.08.17
12:44
День добрый!
На форме док-та есть флажок, при установке которого в тек. строку ТЧ должна записаться строка. А как вот сделать, чтобы флажок (галочка/нет) отображался при перемещении по ТЧ (при наличии строки в ТЧ)?
Спасибо.
1 Волшебник
 
модератор
16.08.17
12:47
В восьмёрке это реализовано событием ПриАктивизацииСтроки
2 2S
 
16.08.17
12:48
(0) ТЗ на форме? Функцию повесить на эту ТЗ
3 1dvd
 
16.08.17
12:49
надо на форму повесить текстовое поле, в формулу прописать вызов функции, и эта функция будет выполнятся при любом передвижению по форме
4 Масянька
 
16.08.17
12:49
(2) Да, понятно, что можно и колонку сделать.
А вот так - в лоб? Чтобы флажок и вручную менялся, и программно.
5 Волшебник
 
модератор
16.08.17
12:49
в семёрке на форму надо повесить надпись с формулой ?(ф(),0,0)

Далее внутри функции ф() проверять текущую строку и управлять видимостью
6 Злопчинский
 
16.08.17
12:52
Масяню как всегда штырит не по детски.
В текущую строку тч записаться строка не может
Нельзя впихнуть невихиваемое
7 Масянька
 
16.08.17
12:54
(6) Да ладно... Мда...
8 Злопчинский
 
16.08.17
12:56
(7) да ладно.
Вот у тебя есть текущая строка тч.
Как ты в неё запишешь "строку тч"? Заполнить текущую строку тч (уже существующую) можно, но вот записать в текущую строку тч " строку тч" - извини, не получится...
9 2S
 
16.08.17
13:03
(8) ты понял что хочет автор?
две табличные части?
10 VladZ
 
16.08.17
13:04
Ничего не понял.
11 Злопчинский
 
16.08.17
13:07
Тоже ничего не понял
12 Масянька
 
16.08.17
13:07
(11) А чего умничаешь?
13 Масянька
 
16.08.17
13:09
Вот - http://pastenow.ru/891a5831f11e17a8b61afd3e47625aa5.
Сейчас работает: ставишь галку - в комментарий садится.
Как сделать, чтобы галка отображалась в зависимости от комментария?
14 Масянька
 
16.08.17
13:09
(13) И да - ручками тоже менялась: поставил/убрал галку.
15 Злопчинский
 
16.08.17
13:09
В (8) я доколупался чисто формально.
А по факту прочитав (0) - я ничего не понял. Повторно перечитывать и интуичить влом.
Мне своих Манагаров хватает которые внятно излагать потребности не могут... ;-)
16 aka AMIGO
 
16.08.17
13:10
(14) Погоди, не спеши..
17 Злопчинский
 
16.08.17
13:10
(12) умный потому что
18 oslokot
 
16.08.17
13:10
а что в клюшках нет событий при активизации строки?
19 Злопчинский
 
16.08.17
13:11
(13) написали выше про текст на форме и функцию
20 2S
 
16.08.17
13:11
имхается, формекс нужен, не помню события активации строки в 77
21 Масянька
 
16.08.17
13:12
(19) Еще выше я написала про "в лоб".
22 Масянька
 
16.08.17
13:12
(16) У тебя есть?
23 Масянька
 
16.08.17
13:12
(17) Спорно :)
24 Злопчинский
 
16.08.17
13:13
(18) у кого как ;-)
Впрямую нет
Вдобавок что такое при активизации строки ? Если я меняю строку в тч но при этом фокус не лежит на тч - это активизация строки или нет?
25 Злопчинский
 
16.08.17
13:14
(22) верно
Ибо даже пословица есть
Один дурак столько вопросов поназадает, что и сто мудрецов не ответят....
26 aka AMIGO
 
16.08.17
13:16
(22) Применял и не раз
Но готового примера нет, дома остался.
По сути:
Есть функция:
ВыбратьЗначение(<?>,,,,)

Синтаксис:
ВыбратьЗначение(<Значение>,<Заголовок>>,<Позиция>,<Таймаут>,<СпособВыбора>)
Назначение:
Открыть окно для интерактивного выбора значения из списка.

В реквизите "Способ выбора" ставишь "1"
и расписываешь свою СЗ в Процедуре "ОбработкаВыбораЗначения" - для нужного реквизита ТЧ
В одно из значений ставишь то, что тебе нужно.. "V" - для выбора или нужный тебе текст
27 aka AMIGO
 
16.08.17
13:17
И это.. "Девочки, не ссорьтесь!" © :)
28 aka AMIGO
 
16.08.17
13:18
+26 в этом режиме получаешь менюшку в нужной строке и на нужном реквизите
29 Рэйв
 
16.08.17
13:18
в (5) же уже ответ.Чего копья ломаете?
30 Злопчинский
 
16.08.17
13:19
(26) ваще охренеть
Я понял так что если юзверь поставит галтчку то в комментарий (по текущей строке) должно записаться типа "по себестоимости" и удалиться из комментария при снятии галки юзверем
31 aka AMIGO
 
16.08.17
13:19
В реквизите "Способ выбора" ставишь "1" или "2" уже забыл, лет 7 прошло с той конфы
32 Ёпрст
 
16.08.17
13:20
(0) Повесить функцию на текстовый реквизит, в ней, в зависимости от текущей строки устанавливать значение флажка.
33 Злопчинский
 
16.08.17
13:20
Я бы эту галку вообще убрал ввиду не ненужности

Если жмакнул в ячейку тч "комментарий" - то значение комментария меняется на противоположное.

В случае двух значений посебестоимостм\пусто  - вообще без всяких менюшек
34 aka AMIGO
 
16.08.17
13:21
(33) мой вариант - не первый, не последний, и не лучший..
Просто я применял его, всех юзеров устраивало
35 oslokot
 
16.08.17
13:21
(33) +1
36 Масянька
 
16.08.17
13:22
(26) Насколько я поняла: типа, выбора из выпадающего списка?
37 Масянька
 
16.08.17
13:22
(32) Получается: 2 фишки - флажок и текстовое поле...
38 aka AMIGO
 
16.08.17
13:23
(36) да, из СпискаЗначений, подготовленного тобой.
39 Масянька
 
16.08.17
13:24
(38) Прикольно... Но тут другая ситуация: предопределено только одно значение, а ручками зверюга может написать чего хочет (вариантов - тьма).
Но - спасибо.
40 Ёпрст
 
16.08.17
13:24
(37) да.
Но, лучше делай как в  (33).
А флажки на форме, нужно делать кнопками - поставить всем строкам, снять всем, и инверсия.
41 Злопчинский
 
16.08.17
13:24
(35)  + автоматом переходить на след.строку
42 Злопчинский
 
16.08.17
13:25
(40) о, великий гуру всех гур, сенсей всех сенсеев!
43 Масянька
 
16.08.17
13:26
(40) Поле - для ввода ручками (с клавы). Может быть - что угодно душе. Есть только одно предопределенное значение.
44 oslokot
 
16.08.17
13:28
(41) я тут недавно в 8-ке встречал такой гомнокодище, что при установке флажка на форме создавались аж цепочки док-ов , затем у флажка доступность=ложь. ну чтоб, второй раз не нажали короче. жесть)
45 Злопчинский
 
16.08.17
13:31
(44) на просторах 1с можно всякое увидеть
46 Масянька
 
16.08.17
13:32
(38) Если не трудно - кинь своим примером. Пожалуйста.
47 aka AMIGO
 
16.08.17
13:32
(39) делаю пример.. 5 минуточек подождешь, или "ну его!"?? :)
48 Злопчинский
 
16.08.17
13:33
(44) даже на свой код смотришь и бывает мысли типа
- блин, я ж вроде веществ не употребляют, но как я мог ЭТО написать..?
49 Масянька
 
16.08.17
13:34
(47) Жду!!!!
50 Масянька
 
16.08.17
13:34
(48) Настоящий программист пишет первые три года. Всю последующую жизнь - переписывает написанное. (С)
51 Масянька
 
16.08.17
13:40
(5) Кстати, вот тут бы код (который закрыт) пригодился.
52 1dvd
 
16.08.17
13:54
Опять все лавры Волшебнику, а я в (3) уже ответил тоже самое
53 aka AMIGO
 
16.08.17
13:55
В форме своего дока (только для примера) добавил реквизит Текст1, в свойствах/Дополнительно формулу "ПриВыбореТекста()"
В Модуле:
Процедура ПриВыбореТекста()
    
    Меню = СоздатьОбъект("СписокЗначений");
    Меню.ДобавитьЗначение("V");
    Меню.ДобавитьЗначение("Очистить");
    Что="";
    Поз=0;
    Если Меню.ВыбратьЗначение(Что,,Поз,,"2")=1 Тогда
        Текст1 = Меню.ПолучитьЗначение(Поз);
    КонецЕсли;
    
КонецПроцедуры

В диалоге на поле реквизита поставить курсор и нажать Enter
Появится вот что:
https://i.paste.pics/21e5de8dca0f30787e18e9b25c4ee52d.png
мышкой или кнопками выбираешь нужное - в окне появляется то, что выбрано:
https://i.paste.pics/ec11c1fe5aabec193febbfd163a95ff2.png

Код писал впопыхах, преломи под себя, и вынеси создание СЗ из процы в другое место
54 aka AMIGO
 
16.08.17
13:57
Должно быть вот так примерно:
Процедура ПриВыбореТекста()
    Что="";
    Поз=0;
    Если Меню.ВыбратьЗначение(Что,,Поз,,"2")=1 Тогда
    Если поз=1 Тогда
        Текст1 = Меню.ПолучитьЗначение(Поз);
    Иначе
        Текст1="";
    КонецЕсли;
    
КонецПроцедуры
55 aka AMIGO
 
16.08.17
14:01
+54 А код СЗ, соответственно, в теле модуля, ли в ПриОткрытии:

    Меню = СоздатьОбъект("СписокЗначений");
    Меню.ДобавитьЗначение("V");
    Меню.ДобавитьЗначение("Очистить");
56 aka AMIGO
 
16.08.17
14:02
А, да, в хидере объявить переменную:
Перем Меню;
57 Масянька
 
16.08.17
14:09
(56) Мне нравится!
Огромное спасибо!
58 aka AMIGO
 
16.08.17
14:10
(57) Не за что.. если поможет - буду доволен :)
59 Масянька
 
16.08.17
14:16
(58) А руками (ввести с клавы) в данном случае не ввести?
60 aka AMIGO
 
16.08.17
14:19
(59) у меня реквизит - строка, можно и ввести..
У тебя - не знаю..
Проверить не могу, уже всё, что относилось к сабжу, из конфу удалил..
61 aka AMIGO
 
16.08.17
14:19
* из конфы
62 aka AMIGO
 
16.08.17
14:20
Возможности у 7-ки ограниченные, нужно экспериментировать, чтобы получить ответ :(
63 Масянька
 
16.08.17
14:23
(60) Тоже строка (75). Набиваю текст, но после ввода жмакаю Enter и вываливается список.
64 aka AMIGO
 
16.08.17
14:25
(63) Ммм.. да, формула выполняется в любом случае..
Тогда - не знаюююуууу :)
65 Волшебник
 
модератор
16.08.17
14:25
(62) Надо переходить на восьмёрку.
66 Масянька
 
16.08.17
14:25
(64) Всё равно - спасибо!
67 Масянька
 
16.08.17
14:25
(65) Надо - открыть код семерки.
68 aka AMIGO
 
16.08.17
14:25
а если после ввода мышой жмакнуть на другом поле/строке?
69 Масянька
 
16.08.17
14:26
(68) Во! Мышью сработало...
70 aka AMIGO
 
16.08.17
14:27
(65) 7-ка должна уйти © Волшебник :)
(69) - Можно энергично проинструктировать юзеров, будут работать..
71 aka AMIGO
 
16.08.17
14:29
+70 типа "Ентером - меню, мышью-текст.."
72 Масянька
 
16.08.17
17:10
(71) не плодить новые ветки: а есть вариант при открытии списка с выбором спозиционироваться не на первом?

Процедура ВыборСрокаГарантии()
    
    мПозиция = 0;
    Если (ПустоеЗначение(СрокГарантии) = 0) Тогда
        мПозиция = Менюшка.НайтиЗначение(Строка(СрокГарантии));
    КонецЕсли;
Сообщить("поз - " + мПозиция);
    Если Менюшка.ВыбратьЗначение(СрокГарантии, "Срок гарантии", мПозиция, "60", 0) = 1 Тогда
       СрокГарантии = Менюшка.ПолучитьЗначение(мПозиция);
    КонецЕсли;
    
КонецПроцедуры

Выводит - 2, а стоит на первом.
73 Ёпрст
 
16.08.17
17:17
(72) пробуй еще ТекущаяСтрока установить, хз, мот прокатит
74 Масянька
 
16.08.17
17:19
(73) А то не пробовала... Не катит...
75 Ёпрст
 
16.08.17
17:32
(74) тогда сдвигай значение в списке, чтоб было первым +сособ выбора = 2 в твоём методе.
76 Ёпрст
 
16.08.17
17:32
или, пользуй активикс для списка. Там и галочки и картинки и что угодно :)
77 Масянька
 
16.08.17
17:37
(75) Как-то не по-человечески... Ну, выглядит...
(76) А подробнее можно?
78 Ёпрст
 
16.08.17
17:39
(77) пример списка с "галочками", тут, например
http://catalog.mista.ru/public/79515/
79 Ёпрст
 
16.08.17
17:39
обычный активикс от мелкомягких
80 Ёпрст
 
16.08.17
17:40
81 Злопчинский
 
16.08.17
18:37
(72)
    ВыбЗнач          = 0;
    Если НачальнаяПозицияПриВыборе <> 0 Тогда
        глСервис.ЭмулироватьКлавиатуру("{DOWN "+НачальнаяПозицияПриВыборе+"}");
    КонецЕсли;
    
    Если ШаблонАдресата.ВыбратьЗначение(ВыбЗнач,,Ном,,1) = 0 Тогда Возврат; КонецЕсли;
    //что-то действительно хотят
82 Duke1C
 
16.08.17
21:25
Ежели я правильно понял хотелку ТС
то в модуль формы кинуть:

Функция  ПриТексте()
    Если (НомерСтроки>0)И(сокрЛП(Примечание)="По себестоимости") Тогда
        фл1=1;
    Иначе
        фл1=0;
    КонецЕсли;
КонецФункции

Процедура фл1()
    Если НомерСтроки>0 Тогда
        Если фл1=1 Тогда
            Примечание="По себестоимости";
        Иначе
        Примечание="";
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры //

функцию "ПриТексте()" запихнуть в формулу невидимого текста на форме
процедуру "фл1()" - в формулу флажка "По себестоимости"
каг бэ фсё)
83 Duke1C
 
16.08.17
21:27
+82 "фл1" заменить везде на идентификатор своего флажка (в названии процедуры можно не менять)
84 Волшебник
 
модератор
16.08.17
21:28
(83) Решение было в (5)
85 Duke1C
 
16.08.17
21:30
(84) Сдается мне в (5) не совсем то, что нужно автору... При всём уважении:)
86 Волшебник
 
модератор
16.08.17
21:32
(85) Ну ладно...
87 Масянька
 
17.08.17
08:32
(81) Спасибо!!! Сработало!!!
88 Масянька
 
17.08.17
08:32
(82) То, что было в сабже - уже решено.