Имя: Пароль:
1C
1C 7.7
v7: Как УдалитьСтроку() ? 7.7.
0 Gamover
 
10.07.12
21:56
Привет.
Подскажите пожалуйста, как удалить текущую строку табличной части документа.


Процедура ПриОкончанииРедактированияСтроки()  
   Если Сумма< суммаРКОСвод Тогда
       удалитьСтроку();
   КонецЕсли;
КонецПроцедуры

Возвращает ошибку.
Форма.Модуль(21)}: Нет возможности удалить строку!
1 Gamover
 
10.07.12
21:57
в семерке
2 experimentator76
 
10.07.12
22:02
семерка верно сообщает
3 experimentator76
 
10.07.12
22:02
удаляй при сохранении
4 andrewks
 
10.07.12
22:02
делай через ложное закрытие
5 experimentator76
 
10.07.12
22:03
(4) расшифруй
6 Gamover
 
10.07.12
22:04
Нет... при удалении нельзя.
Как тогда отменить выбор... на самом деле пользователь выбирает документ. И если сумма выбранного документа больше суммы текущего, надо об этом сообщать и отменять выбор.
Понятно объяснил?
7 experimentator76
 
10.07.12
22:06
(6) эхх а нельзя свой выбор где не будет того что не нужно выбирать?
8 experimentator76
 
10.07.12
22:06
это красиво
9 experimentator76
 
10.07.12
22:07
научишься так делать и на 8-ку скакнешь)
10 Gamover
 
10.07.12
22:09
Нет серьезно. В табличную часть одного документа выбираются другие документы.
При выборе надо сравнивать суммы. Если сумма текущего меньш чем сумма выбираемого, надо отказывать в выборе.
11 zak555
 
10.07.12
22:10
смысл огласите
12 Gamover
 
10.07.12
22:10
Ну есть такая задача))) Смысл долго описывать.
13 Gamover
 
10.07.12
22:11
Ведь реально же это сделать... я почти уверен, решение то раз плюнуть. Просто я не 1Сник...
14 zak555
 
10.07.12
22:11
(12) хрень, а не задача
15 Gamover
 
10.07.12
22:12
Ну дак и подскажи.. раз хрень.
16 Злопчинский
 
10.07.12
22:13
Открой форму обработки. на ней организуй список документов, вэтот список можно внести только подходящие документы. в итоге - в списке только подходящие документы. по кнопке - перенос в ТЧ безо всяких условий.
17 zak555
 
10.07.12
22:14
(15) статусВозврата(0) при редактировании, если твоё уловие
18 Мимохожий Однако
 
10.07.12
22:14
(0)Нажми клавишу Delete
19 aka AMIGO
 
10.07.12
22:18
есть очень сложный способ..
ТЧ выгружается в ТЗ, у тз отсекается хвост, ТЗ обратно в ТЧ.
конечно, неудобный..
20 Gamover
 
10.07.12
22:21
(19)ВО! По мне дак самый то.
От души)
21 andrewks
 
10.07.12
22:24
(20) я бы сказал не от души, а по самую душу
(5) баянище. заюзай поиск
22 andrewks
 
10.07.12
22:25
(17) это не удалит строку, а только не даст её зафикисровать
23 andrewks
 
10.07.12
22:31

Процедура ПриОкончанииРедактированияСтроки()
   Если (1=1) Тогда
       Предупреждение("Хрен вам!");
       ЭтоЛожноеЗакрытие=1;
       Форма.Закрыть(0);
   КонецЕсли;
   
КонецПроцедуры

Процедура ПриЗакрытии()
   Если (ЭтоЛожноеЗакрытие=1) Тогда
       Попытка
           УдалитьСтроку();
       Исключение
       КонецПопытки;
       ЭтоЛожноеЗакрытие=0;
       СтатусВозврата(0);
   КонецЕсли;
   
КонецПроцедуры

24 Gamover
 
10.07.12
22:32
тз = СоздатьОбъект("ТаблицаЗначений");
       ВыгрузитьТабличнуюЧасть(тз,);
       тз.УдалитьСтроку(тз.КоличествоСтрок());
       ЗагрузитьТабличнуюЧасть(тз);

4 строчки кода... а раздуть пытались.
Щас кто нибудь скажет, криво или еще че...мне как раз.
Спасибо Амиго.
25 zak555
 
10.07.12
22:33
(23) жесть, а не исключение =)
26 andrewks
 
10.07.12
22:34
(25) сделай лучше, критикан
27 zak555
 
10.07.12
22:36
(26) крити, кто ? -)
28 andrewks
 
10.07.12
22:44
поправка: учтёна возможность вставки строки в произвольное место


Процедура ПриОкончанииРедактированияСтроки()
   Если (1=1) И (ЭтоЛожноеЗакрытие<>1) Тогда
       ЭтоЛожноеЗакрытие=1;
       НомерУдаляемойСтроки=НомерСтроки;
       Форма.Закрыть(0);
   КонецЕсли;
   
КонецПроцедуры

Процедура ПриЗакрытии()
   Если (ЭтоЛожноеЗакрытие=1) Тогда
       Попытка
           Если ПолучитьСтрокуПоНомеру(НомерУдаляемойСтроки)=1 Тогда
               УдалитьСтроку();
           КонецЕсли;
       Исключение
       КонецПопытки;
       ЭтоЛожноеЗакрытие=0;
       СтатусВозврата(0);
   КонецЕсли;
   
КонецПроцедуры


29 Эльниньо
 
10.07.12
22:57
Хм.
30 experimentator76
 
10.07.12
22:58
то есть меня не совсем блокнули)
31 experimentator76
 
10.07.12
22:58
класс - нстальгия по клюшкам)
32 experimentator76
 
10.07.12
22:59
(28) имею ввиду это решение)
33 experimentator76
 
10.07.12
23:00
(24) не быть тебе 8-ком))
34 Gamover
 
11.07.12
00:23
НомерУдаляемойСтроки=НомерСтроки;
возвращает 0.
Строка еще не записана. И соответсвенно удалять нулевую строку пытается.
35 andrewks
 
11.07.12
00:25
(34) гонишь
36 Эльниньо
 
11.07.12
00:25
(34) Не слушай никого, кроме (17).
37 Gamover
 
11.07.12
00:26
(35) Че гоню-то... проверь)
(36) Почему?
38 andrewks
 
11.07.12
00:26
(37) 1. проверил. работает
39 Эльниньо
 
11.07.12
00:28
(37) Потому, что СтатусВозврата(0) не даст записать строку.
40 Gamover
 
11.07.12
00:29
(38) незнаю. В отладчике пошагово  делаешь... номерстроки=0
41 Gamover
 
11.07.12
00:30
(39) Аа... это то да. Не подошло. Мне подошел (19) способ, но чисто из любопытства, решил еще (28) проверить. А он не работает. У меня.
42 Gamover
 
11.07.12
00:33
Ну чего... попробуйте еще кто нибудь... ведь не работает же)
43 Эльниньо
 
11.07.12
00:35
(41) Почему не подошло?
44 Gamover
 
11.07.12
00:36
(43) СтатусВозврата(0) не даст записать строку, но при этом и не удалит ее. Пользователь будет до сумасшествия нажимать Enter или Esc. Мне так не надо.
45 andrewks
 
11.07.12
08:11
(42) да блин. работает. выкладывай свой мдэшник, посмотрим, чего ты там намутил, что не работает
46 ЧеловекДуши
 
11.07.12
08:29
(45)Все просто, он сперва добавляет строку, По кнопке, записывает ее
И потом пользователь двойным кликом мыши, пытается выбрать документ :)

А строка не удаляется, т.к. она в режиме редактирования :)

...В общем, автору в дворники...
47 MishaD
 
11.07.12
08:40
О. Как раз вопрос возник. Есть накладная, например 15 строк. Редактируем 12-ю, и она становится самой верхней(такой вот умный скроллинг). Причем работает эта штука только на одном компьютере из трех. Одна база, и в коде нкаких перемещений. Может кто в курсе, что это за чудо. Пользователи просят сделать также, и на остальных компьютерах.
48 MishaD
 
11.07.12
08:42
Забыл добавить самописка, оперативный учет, 1с 7.7
49 ЧеловекДуши
 
11.07.12
09:20
(47)ДНК, и не умение читать книги.
Элементароное, ВыгрузитьМногострочнуюЧастьВТаблицу(ТЗ) + Сортировать(ТЗ) + ЗагрузитьМногострочнуюЧастьИз(ТЗ) = Сортировка, абы как :)
50 MishaD
 
11.07.12
20:03
хотел бы я знать, в какой книге это написано. Частично работает. Кстати такой же эффект дает СортироватьСтроки("+НомерСтроки");
или(самое главное)
Форма.Обновить()
Что уж пошустрее, чем
ВыгрузитьМногострочнуюЧастьВТаблицу(ТЗ), ЗагрузитьМногострочнуюЧастьИз(ТЗ)
Спасибо за подсказку.
51 vah1
 
11.07.12
20:10
права и обязанности юзеров уже смотрел, зачем же так сложно строку удалять?
52 Maximysis
 
12.07.12
10:45
Если нужно контролировать чтоб "Сумма< суммаРКОСвод" то не проще
Процедура ОбработкаВыбораЗначения (ВыбЗнач, Идент, Флаг)
Если (Идент= "Сумма") и (ВыбЗнач< суммаРКОСвод) Тогда ....
2 + 2 = 3.9999999999999999999999999999999...