Вход | Регистрация


1С:Предприятие ::

Метки: 

Вопрос по таблицам в режиме ввода данных

Я
   WindWail
30.03.04 - 13:14
Пишу в процедуры ПриОткрытии() след код

ВыбОбласть = Таблица.Область("R1C1");
ВыбОбласть.Доступность(1)

или
ВыбОбласть = Таблица.Область("R1C1");
ВыбОбласть.Редактирование(1)

Запускаю. И ничего не доступно, не редактируется :(
Почему это может быть ? Помогите плиз.
 
  Рекламное место пустует
   Рупор абсурда
 
1 - 30.03.04 - 13:16
В свойствах ячейки сними галку "Защита" ...
   WindWail
2 - 30.03.04 - 13:51
Тык не могу же я вручную все делать ?
Хоро если я сниму во всех ячейках Защиту, то пользователь сможет изменять ВСЕ!
А предо мной стоит задача, сделать таблицу отчета с неопределенным количеством строк и чтобы два последние графы каждой строки могли редактироваться пользоателем, да и то не все! :(
Вручную я не смогу снять Защиту, я же не знаю сколько у меня будет строк. И тем более не знаю какие ячейки у меня будут доступны для редактирования а какие нет - все должно программно определяться.
Может у кого-нибудь есть пример такой таблицы ?
   Рупор абсурда
 
3 - 30.03.04 - 13:57
(2) А кто тебе сказал, что это, ващще, можно сделать? ...
   wolfy
 
4 - 30.03.04 - 14:53
то (2) сними галку защита в двух последних графах твоей таблицы в конфигураторе, а потом при рисовании будешь запрещать доступность(0) или редактирование(0) только в тех строках где тебе надо
   Рупор абсурда
 
5 - 30.03.04 - 16:50
(4) Интересно, чем это ему поможет? ...
   WindWail
6 - 30.03.04 - 19:38
Рупор абсудра, насчет того что это можно сделать
если бы это нельзя было бы сделать, такие задания бы не давали
http://www.mista.ru/kurs1c/app3.htm - посмотри там в первом задании, вторая таблица, вот эменно ее я и пытаюсь сделать
Wolfy если я сделаю все графу то и заголовок тоже можно будет редактировать... млин, неужели все так криво нужно делать :(((
   WindWail
7 - 30.03.04 - 19:49
Wolfy попробовал сделать как ты сказал, ничего не получается
Я почему-то программно не могу не запретить ввод, не разрешить его :(
Че за хрень... по идее это должно работать. Может у меня стоит криво 1С ? хммм...
Вот если бы можно было бы выводить секциями, как обычно. Было бы круто, счас попробую так сделать, но врядли будет работать.
   Рупор абсурда
 
8 - 30.03.04 - 20:09
(6) Там ничего нет про таблицу для ввода данных ...
(7) Попробуй, попробуй ...
   skunk
 
9 - 30.03.04 - 20:31
чего не вкурю я ничего... мож дурак...
примеров как грязи полно в стандартных конфигурациях... ЗиК и Налогоплательщике точно есть
и почему решение (1) не канает ?
где там говриться снять защиту со всех ячеек?
   WindWail
10 - 31.03.04 - 07:52
Рупор Абсурда, да ты прав там написано всего лишь 
"Предусмотрите возможность непосредственного ввода в графы 9 и 10 отчета новых значений реквизитов документа."
Ну млин подумай, пускай ничего страшного не произойдет если пользователь полезет изменять ненужные ячейки внизу таблицы, ну млин, это же криво... и некрасиво. Начинаю блин разочаровываться в 1С. Если не работает, зачем тогда в мануалах писать про это.
Skunk спасибо за наводку, счас буду искать там.
 
 
   327
11 - 31.03.04 - 07:57
(10) Просто у Рупора нет идей.... как все сделать просто и красиво... и не париться с кодом ...
   SnarkHunter
 
12 - 31.03.04 - 07:57
(10)Ты только начинаешь... Все еще впереди...
   327
13 - 31.03.04 - 09:06
(12) это насчет открытий чудных? В 1ц?
   WindWail
14 - 31.03.04 - 09:21
АААААА, убейте меня !!!!
Ну почему ничего не работает, в мануале черным по белому все написано :(
А как я буду контролировать значение, которое вводит пользоатель ? Ничего не работает, предопределенная функция ОбработкаЯчейкиТаблицы тоже не вызвается...
Все иду вешаться...
   skunk
 
15 - 31.03.04 - 09:25
там же есть поле для формулы... ее используй...
   wolfy
 
16 - 31.03.04 - 09:35
то (15)
он не сможет написать формулу во все ячейки одного столбца
   wolfy
 
17 - 31.03.04 - 09:40
то (14) в твоем случае (если таблица по количеству строк не ограничена) проще по моему использовать режим обычного отчета. тогда будет срабатывать ОбработкаЯчейкиТаблицы, и в ней ты сможешь попросить пользователя ввести какое-то значение, а за тем перерисовав таблицу записать значение в нужную ячейку. так в ФинансовомПланировании сделана обработка "Планиерование"
   skunk
 
18 - 31.03.04 - 09:46
(16)проснись... и подумай, что ты говоришь... открой налогоплательшик... куча примеров как все сделать...
смотри тоам где обработки...
   wolfy
 
19 - 31.03.04 - 10:12
то (18)
в налогоплательщике во всех обработках использующих таблицу_для_ввода_данных сама таблица изначально нарисована в конфигураторе. там нет ни одной таблицы которая подразумевает вывод НЕОГРАНИЧЕННОГО числа строк. может я не увидел чего .напиши название конкретной обработки
   Z1
20 - 31.03.04 - 11:07
(0) Как выводишь таблицу? Опиши более подробней.
Лучше с текстом на 1с.
   WindWail
21 - 31.03.04 - 11:13
Wolfy ты гений :)
Сейчас буду пробовать сделать, как ты сказал.
Хотя вот только что доделал все так...
выделил два столбца,в которые можно будет вводить, снял Защиту.
выделил строку, где у меня все заголовки, котрые нельзя изменять, поставил Защиту.
Так хоть заголовок пользователь не может изменять.
Ну и написал там все что нужно.
Недостатки этого способа:
-нельзя контролировать то что вводит пользователь, например вместо числа может ввести строку.
-нельзя вводить сложные данные, например Справочники.
-пользователь может вводить значения ниже самой таблицы. Пусть некрасиво, но это не так страшно как первые два.
   WindWail
22 - 31.03.04 - 11:24
to 20

//тзч - таблица значений, в которую я собрал до этого все данные для вывода

Для НомерСтроки = 1 По тзч.КоличествоСтрок() Цикл
тзч.ПолучитьСтрокуПоНомеру(НомерСтроки);
Если тзч.КоличествоСтрок()>0 Тогда

ДогЗайма = тзч.ДоговорЗайма;
ПрихДен  = тзч.ПриходнойОрдер;
            
//эт все списки значений

СпКл.ДобавитьЗначение(Строка(ДогЗайма.Контрагент), "R"+НомерСтрокиВТаблице+"C1");
СпАг.ДобавитьЗначение(Строка(ДогЗайма.Агент), "R"+НомерСтрокиВТаблице+"C2");
СпДог.ДобавитьЗначение(Строка(ДогЗайма), "R"+НомерСтрокиВТаблице+"C3");
СпНачДог.ДобавитьЗначение(Строка(ДогЗайма.ДатаНачала), "R"+НомерСтрокиВТаблице+"C4");
СпДатПост.ДобавитьЗначение("Отсутствует", "R"+НомерСтрокиВТаблице+"C5");
СпСумДог.ДобавитьЗначение(Строка(ДогЗайма.СуммаДоговора), "R"+НомерСтрокиВТаблице+"C6");
СпВалЗ.ДобавитьЗначение(Строка(ДогЗайма.Валюта), "R"+НомерСтрокиВТаблице+"C7");
СпСрПроц.ДобавитьЗначение(ДогЗайма.СрочныйПроцент, "R"+НомерСтрокиВТаблице+"C8");
СпДосрПроц.ДобавитьЗначение(ДогЗайма.Процент, "R"+НомерСтрокиВТаблице+"C9");

НомерСтрокиВТаблице = НомерСтрокиВТаблице + 1;
            
КонецЕсли;
КонецЦикла;  
    
    Таблица.Загрузить(СпКл);                                           
    Таблица.Загрузить(СпАг);                                           
    Таблица.Загрузить(СпДог);                                           
    Таблица.Загрузить(СпНачДог);                                           
    Таблица.Загрузить(СпДатПост);                                           
    Таблица.Загрузить(СпСумДог);                                           
    Таблица.Загрузить(СпВалЗ);                                           
    Таблица.Загрузить(СпСрПроц);                                           
    Таблица.Загрузить(СпДосрПроц);
   Z1
23 - 31.03.04 - 11:25
(21)Попробуй использовать
ПриВыбореЯчейкиТаблицы() -
Тогда ты сможешь оргазнизовать ввод какой тебе нужно хоть числа, хоть справочника.
По моему эта функция работает даже для тех ячеек где установлена галка защита
   Z1
24 - 31.03.04 - 11:28
(22) Таблицу в режиме ввода данных также можно формировать с помощью секций - где легко можно заранее установить нужные тебе галки.
Хотя после (23) наверное это и не так актуально.
   WindWail
25 - 31.03.04 - 11:30
(20) Сори, там бред написан. Условие Если в начале не то. Вот по нормальному
Для НомерСтроки = 1 По тзч.КоличествоСтрок() Цикл
тзч.ПолучитьСтрокуПоНомеру(НомерСтроки);
Если ПустоеЗначение(тзч.ДатаПрихода)=1 Тогда
// Если деньги вообще не были внесены

ДогЗайма = тзч.ДоговорЗайма;
ПрихДен  = тзч.ПриходнойОрдер;

и т.д.
   wolfy
 
26 - 31.03.04 - 11:33
то (23)
она срабатывает только на тех ячейках где УСТАНОВЛЕН флаг защита
   Z1
27 - 31.03.04 - 11:38
(26) Ну и организуй в зависимости от адреса ячейки или число или текст или
справочник. ВвестиЧисло, ввестиСтроку, Спр.Выбрать ( для справочника )
После удачного ввода ( полностью под твоим контролем) обновишь значение ячейки.
   WindWail
28 - 31.03.04 - 11:44
to (24)
Можешь подсказать (в виде кода 1С) что нужно написать чтобы вывести секцию ?
Попробовал как в обычных таблицах - ничего не получается.
На счет ПриВыбореЯчейкиТаблицы() - как ни странно работает только с ячейками, у которых стоит "Защита". Хотя это и хорошо, можно таким образом выйти из положения. Но все жа оч. интересно как можно выводить секции в таблице в режиме ввода данных?

Процедура ОбработкаЯчейкиТаблицы()
    Сообщить("Вызвана ОбработкаЯчейкиТаблицы");
КонецПроцедуры

Процедура ПриВыбореЯчейкиТаблицы()
    Сообщить("Вызвана ПриВыбореЯчейкиТаблицы");
КонецПроцедуры

Из них ОбработкаЯчейкиТаблицы вообще не работает :( куда бы и как бы я не кликал. А ПриВыбореЯчейкиТаблицы() работает только с "защищенными" ячейками.
   wolfy
 
29 - 31.03.04 - 11:48
то (21)
если делать так как ты сделал (через таблицу_для_ввода_данных), то есть такое решение проблемы: ограничиться каким-то количеством строк например 200.
тогда делаешь так 1. в конфигураторе выделяешь ячейки в нужных столбцах с 1-ой по 200-ую строку 2. назначаешь им тип "число" 3. вешаешь в поле формула название процедуры, которая будет проверять не ввел ли пользователь число ниже таблицы. если ниже то обнулишь значение.
Но это не подойдет для неограниченного числа строк, т.к. в конфигураторе нельзя ни задать тип ВСЕМУ столбцу, ни повесить на все ячейки столбца процедуру
   Z1
30 - 31.03.04 - 11:59
(28) Примерно так
Таблица.Очистить();
Таблица.ВывестиСекцию("Шапка");
Для Инд1 = 1 по 10 
Таблица.ВывестиСекцию("Строка");
КонецЦикла;
Таблица.Показать("");
   wolfy
 
31 - 31.03.04 - 12:17
то (30)
так вроде не работает
   WindWail
32 - 31.03.04 - 12:20
to (30)
Zl, нет, не проходит такая фишка. Ругается что у "Таблица" нет таких методов как "Очистить", "ВывестиСекцию".
to (29)
Wolfy если ятак сделаю, скажем выставлю везде число, то будет у меня 200 нуликов идти вниз таблицы.  
А в обычном, НЕ в режиме ввода данных, функции ПриВыбореЯчейкиТаблицы() и ОбработкаЯчейкиТаблицы не вызываются вообще.
   Z1
33 - 31.03.04 - 12:23
(31) У меня работает.
Важно использовать обязательно Таблица
( никаких Таб = СоздатьОбъект("Таблица"); не нужно )
 
  Рекламное место пустует
   wolfy
 
34 - 31.03.04 - 12:42
то (32)
чтобы не было нуликов поставь в свойствах в поле формат Ч010.0, ну или что-то подобное
то (33)
можно пример на мыло.для меня очень актуально
   Z1
35 - 31.03.04 - 13:15
Я ошибся таблица не в режиме ввода данных а в режиме пустая.
Но тем не менее отчет удовлетворяет всем требованиям задачи.
Пример отослал.
   wolfy
 
36 - 31.03.04 - 13:36
в режиме пустая другое дело, но вней можно вводить данные тока через ВестиЧисло, ВвестиСтроку и т.д. не льзя ввести что-нибудь непосредственно в ячейку, а это бывает очень удобно пользователю. Вот только с отчетами_для _ввода_данных работать удобно только если структура таблицы жестко задана изначально и не приходиться рисовать таблицу. (ну это так крик души.я уж не один килограмм нервных клеток убил на эти отчеты)
   Z1
37 - 31.03.04 - 13:53
(36) Смотри внимательно пример там как раз можно ввести в ячейку
где есть лупа что хочешь.
   Рупор абсурда
 
38 - 31.03.04 - 16:55
(37) Во, ты напылил то ...
   WindWail
39 - 31.03.04 - 19:55
Все, домичил я этот гребаный отчет.
А мне можно тоже пример на почту кинуть ? :)



Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует