Переключение на Главную Страницу Страницы: 1 ... 17 18 [19] 20 21 ... 81 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПоставщикДанных" - обсуждения. Часть 2. (число прочтений - 399444 )
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #270 - 22. Марта 2011 :: 16:07
Печать  
А событие "ПослеУдаления" чем не вариант?
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Kateryne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Зарегистрирован: 30. Марта 2010
Пол: Женский
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #271 - 22. Марта 2011 :: 16:24
Печать  
Дело в том, что у меня есть удаления строк, не приводящих к этому событию. В частности, массовые удаления по кнопке, потом обновление таблицы. А еще - удаления по двойному щелчку.
У меня 4 таблицы. Две пары мастер-детейл, и по щелчку на одном мастере добавляются все строки мастер + детейл во вторую пару мастер-детейл.
А по щелчку по строке другого мастера, все строки этого мастера + детейлы должны удаляться.
И вот тут с обновлением и удалением - то ругается, что строк в табличном поле уже не столько, сколько надо Улыбка, то обращается к строке, которой уже нет, то еще что-нибудь.
И в основном все из-за события активизации, как я понимаю. Обновлять я все таблицы после удаления обновляю вручную. Но смена строки почему-то не сечется.

Но вы правы, в принципе можно вызывать удаления хотя бы одной строки табличного поля, а потом событие после удаления. Сейчас попробую, спасибо за идею.

ЗЫ: да, так работает. В принципе удаление текущей строки получилось к месту, так что даже и не коряво, как я сначала подумала. Спасибо Улыбка
« Последняя редакция: 22. Марта 2011 :: 19:50 - Kateryne »  
Наверх
 
IP записан
 
Kateryne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Зарегистрирован: 30. Марта 2010
Пол: Женский
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #272 - 22. Марта 2011 :: 19:55
Печать  
Ан нет, все равно лезут ошибки на удалении вида:

Код
Выбрать все
пмТекУслугаДобав = пмТаблПолеУслугиДобав.ТекущиеДанные.УслугаДоговора;

 Неверно указан номер строки!  Номер строки = 1, всего строк = 0
УстановитьСвязиУслугиДобав()<<?>> 




Код на событии удаления - вызывается процедура УстановитьСвязиУслугиДобав:
Код
Выбрать все
Процедура УстановитьСвязиУслугиДобав()
	Если ПустоеЗначение(пмДанныеУслугиДобав.ТекущиеДанные) = 0 Тогда
		пмТекУслугаДобав = пмДанныеУслугиДобав.ТекущиеДанные.УслугаДоговора;
		пмТекНомерСтрокиТЗ = пмДанныеУслугиДобав.ТекущиеДанные.НомерСтрокиТЗ;
	КонецЕсли;
КонецПроцедуры 


Как бы заставить ТабличноеПоле понять, что строк в нем стало меньше? Обновляться теперь деталь нормально обновляется, связи устанавливаются. Но вот эта ошибка - ну не гасить же ее!
  
Наверх
 
IP записан
 
Kateryne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Зарегистрирован: 30. Марта 2010
Пол: Женский
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #273 - 22. Марта 2011 :: 20:33
Печать  
Вот, состряпала тестовую внешнюю обработку, на которой ошибка проявляется. Может кто-нибудь глянет - это мой баг или поставщика?
Проявляется, если удалить последнюю строчку.
  

_____________009.ert ( 33 KB | Загрузки )
Наверх
 
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #274 - 23. Марта 2011 :: 08:17
Печать  
2  Kateryne
После беглого просмортра.
Измени кнПоставщикДанныхПослеУдаления(тп)
вот так например:
Процедура кнПоставщикДанныхПослеУдаления(тп)
     пмДанные.Обновить();
     УстановитьСвязи();      
КонецПроцедуры
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #275 - 23. Марта 2011 :: 08:59
Печать  
zk96 писал(а) 23. Марта 2011 :: 08:17:
2  Kateryne
После беглого просмортра.
Измени кнПоставщикДанныхПослеУдаления(тп)
вот так например:
Процедура кнПоставщикДанныхПослеУдаления(тп)
     пмДанные.Обновить();
     УстановитьСвязи();      
КонецПроцедуры

Полностью не решит вопрос, т.к. в поставщике данных после удаления текущей строки сначала удаляется в ИТЗ текущая строка, а потом вызывается событие "ПослеУдаления" с передачей текущей строки. Когда удаляемая строка - последняя, это приводит к ошибке.
  
Наверх
ICQ  
IP записан
 
Kateryne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Зарегистрирован: 30. Марта 2010
Пол: Женский
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #276 - 23. Марта 2011 :: 11:39
Печать  
Да, получается так:
если строк больше одной, например две
в процедуре "ПослеУдаления" строк еще две, даже после обновления
в процедуре "УстановитьСвязи" строк уже одна

если строк одна - то пмТаблПоле.ТекущаяСтрока выдает 1 в обоих процедурах, хотя фактически строк уже после удаления нет вообще.
Ерунда какая-то получается Печаль Может есть идеи, как сделать, чтобы нормально работало, пусть даже криво? Очень надо, к завтрашнему дню край Печаль А я уже всю голову сломала, и так пробую, и эдак, не выходит каменный цветок.
Я еще к тому же до конца не везде понимаю разницу между Данные.ТекущиеДанные, ТабличноеПоле.ТекущаяСтрока, ТабличноеПоле.ТекущийЭлемент, ТабличноеПоле.ТекущиеДанные итп...

UPD: пока придумала считать количество строк и получать текущие данные в ИндексированнойТаблице напрямую.
UPD2:
Хм... получилось вроде Улыбка
  
Наверх
 
IP записан
 
Kateryne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Зарегистрирован: 30. Марта 2010
Пол: Женский
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #277 - 23. Марта 2011 :: 13:52
Печать  
Еще другая проблема есть, сходная, но не такая же.

Тоже на индексированной таблице, нужно раскрасить некоторые из строк по условию.
Делаю процедуру
Код
Выбрать все
Процедура кнСписокУслугиДоговораДобавПриВыводеСтроки(тп, ОформлениеСтроки, ДанныеСтроки, ТипРегиона)
	Если ПустоеЗначение(ДанныеСтроки.УслугаДоговора) = 0 Тогда
		ОформлениеСтроки.ЦветТекста = огИнтерфейс.ПалитраЦветов.Синий;
	КонецЕсли;
КонецПроцедуры 



Но когда обновляется таблица - она переформируется через пмДанныеУслугиДобав.ЗаполнитьИзОбъекта(ТЗ); - событие ПриВыводеСтроки, похоже, срабатывает как-то не так или не в тот момент... и выдает такие ошибки:
Код
Выбрать все
Если ПустоеЗначение(ДанныеСтроки.УслугаДоговора) = 0 Тогда
 Неверно указан номер строки!  Номер строки = 2, всего строк = 0
 


То есть оно срабатывает и тогда, когда строк в табличном поле нет, получается.
Ну ладно, тут конечно можно и загасить ошибку, цвет строки - дело не критичное. Но все равно как-то странно получается.
Может я что-то не поняла, и надо по другому сделать?
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #278 - 23. Марта 2011 :: 14:25
Печать  
Код
Выбрать все
Если ТипРегиона = 3 Тогда 

  

_____________009_001.ert ( 50 KB | Загрузки )
Наверх
wwwICQ  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #279 - 23. Марта 2011 :: 14:42
Печать  
Цитата:
Синтаксис: ПриИзмененииОтбора(ИменаПолей)
Параметры:
•      ИменаПолей – тип: Строка. Имена полей, для которых изменилась настройка отбора.

Немного исправлю по реализации

Синтаксис: ПриИзмененииОтбора(ТабличноеПоле,ИменаПолей)
Параметры:
•      ТабличноеПоле – Тип: ПоставщикДанных.ТабличноеПоле Описание: Объект для управления ЭУ «ТабличноеПоле», в котором отображаются данные объекта-расширения
•      ИменаПолей – тип: Строка. Имена полей, для которых изменилась настройка отбора.
  
Наверх
IP записан
 
Kateryne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Зарегистрирован: 30. Марта 2010
Пол: Женский
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #280 - 23. Марта 2011 :: 14:58
Печать  
Anatol писал(а) 23. Марта 2011 :: 14:25:
Код
Выбрать все
Если ТипРегиона = 3 Тогда 



Это для ошибки с оформлением? Нет, я помнила ваш прошлый совет, и пробовала и с типом региона тоже. Это на форуме просто код привела без типа региона.
В общем, еще раз проверила - и с типом региона тоже выдает ту же ошибку.

Насчет проблемы с удалением - ага, глянула обработку, спасибо. Так тоже правда не работает, но принцип вашего предложения понятен. Т.е. вы предлагаете все же работать с ИТ, не трогая табличное поле.
Ок, спасибо, так видимо и сделаю.
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #281 - 23. Марта 2011 :: 15:06
Печать  
тогда кидай сново тестовую обработку  Улыбка

а насчет ошибок в обработке... вроде не должно быть

зы а что именно не работает?
  
Наверх
wwwICQ  
IP записан
 
Kateryne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Зарегистрирован: 30. Марта 2010
Пол: Женский
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #282 - 23. Марта 2011 :: 15:17
Печать  
Ошибки в обработке - раньше были если удалять с начала, теперь если с конца. Но принцип понятен, спасибо, победить вроде, на первый взгляд, можно.

Вот тестовая обработка, модифицированная под другую ошибку.
Первый раз вывод данных нормально происходит, с оформлением. После нажатия кнопки Обновить - полезут ошибки...
  

Test_002.ert ( 33 KB | Загрузки )
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #283 - 23. Марта 2011 :: 15:24
Печать  
сначала обновить потом заполнить

Код
Выбрать все
	пмДанные.Обновить();
	пмДанные.ЗаполнитьИзОбъекта(ТЗ); 

  
Наверх
wwwICQ  
IP записан
 
Kateryne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Зарегистрирован: 30. Марта 2010
Пол: Женский
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #284 - 23. Марта 2011 :: 15:33
Печать  
Хм... да, спасибо, работает.
Но я не понимаю, как... и зачем обновлять было до заполнения по ТЗ Печаль

UPD: или вы хотите сказать, что обновление было нужно, потому что раньше удаляли строки, в начале?
Так я пробовала и вообще закомментировать удаление строк в начале, все равно была (и есть) ошибка, если местами как вы сказали не менять
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 17 18 [19] 20 21 ... 81
ОтправитьПечать