Имя: Пароль:
1C
 
Доступность колонки в табл.части документа
0 schalke
 
16.03.07
13:07
1С: 7.7
Есть ли возможность сделать в нужной строке табл.части документа недоступной определенную колонку? Колонка делается целиком недоступной (Форма.НазваниеКолонки.Доступность(0)), а можно чтобы только в определенной строке?
1 Ёпрст2
 
16.03.07
13:09
(0) Можно... Только вот как определять будешь, в какой именно строке? ...
2 mergan
 
16.03.07
13:09
можно
3 Ёпрст2
 
16.03.07
13:09
(0) Можно естесственно, другими методами ...
4 schalke
 
16.03.07
13:12
(1) например, текущая строка
т.е. юзер, что-то ввел и в зависимости от этого сделать недоступной, например, соседнюю колонку (но только для текущей строки)
5 пубик
 
16.03.07
13:15
ставь доступность/недоступность для всей колонки.. все равно в один момент времени больше одной ячейки редактировать не сможешь
поменялись условия(строка,ввели что-то) меняешь на то, что нужно
6 Ёпрст2
 
16.03.07
13:16
в  ПриРедактированииНовойСтроки(),ПриНачалеРедактированияСтроки() смотри на реквизит и в зависимости от него делай СтатусВозврата(0);
7 demonas001
 
16.03.07
13:16
Процедура ПриНачалеРедактированияСтроки()
КонецПроцедуры
Синтаксис:
ПриНачалеРедактированияСтроки()
Назначение:
Предопределенная процедура при интерактивном редактировании строки документа.
Замечание:
Данная процедура может располагаться только в модуле формы документа.
'
8 mergan
 
16.03.07
13:16
//*******************************************
procedure OnStartEditLine()
   strItem = Form.ActiveControl();
   if strItem = "ИмяБлокируемойКолонки" then
       if (LineNum / 2) = int(LineNum / 2) then
           domessagebox("Каждую четную строку редактировать низя!!!!");
           returnstatus(0);
           return
       endif;
   endif;
endprocedure
9 Ёпрст2
 
16.03.07
13:17
(5) Ну -ну .. установили значится доступность(0) для колонки и всё .. сдец для других строк ...
10 mergan
 
16.03.07
13:17
(5)идите по спите товарищ
11 пубик
 
16.03.07
13:18
+(6,7) еще не забудьте свою процедуру написать, котораяобрабатывает ситуацию "что-то ввел"
12 mergan
 
16.03.07
13:20
(11)я же говорю спать
13 schalke
 
16.03.07
14:04
Дело в том, что мы делали через ПриРедактированииНовойСтроки() и СтатусВозврата(0)
Не отрабатывает случай, если поменяли значение в колонке и перешли мышкой(именно мышкой) в другую колонку, которую надо сделать недоступной: если переходим по Enter или Tab, то срабатывает, а мышкой - нет.
Непонятно почему, но это факт, проверяли.
14 Конь в пальто
 
16.03.07
14:06
(5,11) в мемориз!
15 КонецЦикла
 
16.03.07
14:06
ПриРедактированииНовойСтроки() строки еще нет, все ж написали как делать... какого хрена?
16 kiruha
 
16.03.07
16:28
Ну дети право

Процедура ПриНачалеВыбораЗначения(ЭлементДиалога)
   
   Если ЭлементДиалога = "Номенклатура" Тогда
        Сообщить(Номенклатура);
   КонецЕсли;    
КонецПроцедуры
17 Ёпрст
 
гуру
16.03.07
16:31
(16) мда ..вопрос явно не читал ...
18 kiruha
 
16.03.07
16:39
(17) Надеюсь уважаемый ЕПРСТ сообразит сам - как поставить
ФлагСтандОбр=0
тем более подобная процедура применяется 166 раз в типовой торговле
19 igork1966
 
16.03.07
16:41
(18) Ты предпологаешь что запрещать нужно только поля в которых кнопка выбора есть? ;-)
20 kiruha
 
16.03.07
16:48
(19) Да, в обратном случае не проходит.
А у автора колонка какого типа?
21 igork1966
 
16.03.07
16:49
(20) "А у автора колонка какого типа?" автор об этом умалчивает..... ;-)
22 Ёпрст
 
гуру
16.03.07
16:54
(18) Зачем юзверю вообще чего-то давать выбирать ???, чем тебе ответ Скунки не устроил ?
23 kiruha
 
16.03.07
17:05
(22)См (13)
Ответ Скунка годится только если колонка - текст,
как выбор партии в типовой.
Тоже вариант.
24 Ёпрст
 
гуру
16.03.07
17:08
(23) Ну с чего вы это взяли? Годится для Любой колонки !
И причем тут текстовая колонка? ... и как вы можете редактировать текстовую колонку ? :)
25 kiruha
 
16.03.07
17:15
(24) Лично проверил в отладчике - в (13) все верно написано.
Текстовую колонку "редактирую" достаточно часто.
При нажати на нее отрабатывается процедура (если строка введена)
ПриНачалеРедактированияСтроки()
Далее вызываю форму ввода, в зависимости от ввода - вывожу в текстовую колонку
нужный результат
26 Ёпрст
 
гуру
16.03.07
17:22
(25) ПриНачалеРедактированияСтроки() и ПриРедактированииНовойСтроки() найди 2 отличия ...
ЗЫ: Текстовая колонка - это та, что вставлена через Текст(синенький) ... и она просто для отображения чего либо ...и как ты "вывожу в текстовую колонку
нужный результат" непонятно ...
27 kiruha
 
16.03.07
17:40
(26) Пошагово. Для чего у меня используется текстовая колонка.
1. Есть текстовая колонка в документе
2. На колонку повешана функция. В частности у меня она показывает "галочки"
3. Есть реквизит табличной части документа не видимый на форме - тип число.
4. При нажатии на текстовую колонку срабатывает процедура
ПриНачалеРедактированияСтроки() .Меняется реквизит - если был
0 то стал 1 и наоборот.
5. Функция , повешанная на текстовую колонку выводит "галочки" в зависимости
от этого невидимого реквизита.

Фу... Устал писать :)
28 Ёпрст
 
гуру
16.03.07
17:44
(27) И причем тут всё вот это и вопрос в (0) ?
И где ты в вопросе (0) увидел текстовые колонки?
И нахрена автору ПриНачалеВыбораЗначения ?
И чем не устраивает (8) ?
И смотри, что я в (6) написал, а Скунки в (8) разжувал ...
29 kiruha
 
16.03.07
17:51
(28)  Либо издеваешься либо ...
ПриНачалеРедактированияСтроки()
он же OnStartEditLine()
Еще раз (13) :
"Не отрабатывает случай, если поменяли значение в колонке и перешли мышкой(именно мышкой) в другую колонку, которую надо сделать недоступной: если переходим по Enter или Tab, то срабатывает, а мышкой - нет.
"
Неужели трудно самому проверить???????
30 Ёпрст
 
гуру
16.03.07
17:53
(29) Я ? Нисколько, читаем (13), потом (26) ...много думаем...
31 Ёпрст
 
гуру
16.03.07
17:56
+ 30 И для тек, у кого плохо с английским :

ПриНачалеРедактированияСтроки() - OnStartEditLine()

.....

ПриРедактированииНовойСтроки() - OnEditNewLine()
32 kiruha
 
16.03.07
18:04
(31) Обе процедуры не срабатывают.
Ладно, похоже  бесполезно что то объяснять.
Удачи в программировании!!
33 Ёпрст
 
гуру
16.03.07
18:05
(32) Наглая ложь...
Процедура ПриНачалеРедактированияСтроки()
  Сообщить("Ну ка, попробуй че нить изменить");
  СтатусВозврата(0);
КонецПроцедуры
34 kiruha
 
16.03.07
18:12
(33)
Нда...
Пользователь меняет в табличной части несколько колонок в ОДНОЙ строке,
в зависимости от их НОВОГО(!!!) состояния требуется поставить
запрет на определенную колонку.
ПриНачалеРедактированияСтроки() срабатывает ПРИ НАЧАЛЕ Редактирования Строки,
не при начале редактирования реквизита.

мда....
35 kiruha
 
16.03.07
18:13
(33) еще раз читаем что хотел автор (0) и (13)
36 kolobike
 
16.03.07
18:34
100 раз делали..
Делается на форме текстовая метка( за пределами формы ) и на нее вешается функция, которая неважно что возвращает.... В теле функции смотришь что у тебя в реквизитах и в зависимости от надобности доступна/недоступна.
Если, допустим, нужны более сложные изменения - к примеру, менять заголовки таб части, еще что-то ресурсоемкое, что заставляет мигать таб часть - добавляется еще реквизит "текНомерСтроки", который сравнивается с текущей строкой и если равен и условия доступности не изменились, то функция не срабатывает.
37 kolobike
 
16.03.07
18:44
(36) Извиняюсь - ввел в заблуждение
текНомерСтроки - не реквизит - а переменная модуля формы
Основная теорема систематики: Новые системы плодят новые проблемы.