Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) ТП, ошибка при обращении к метаданным из "ПриРедактированииЗначения" (число прочтений - 6078 )
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
ТП, ошибка при обращении к метаданным из "ПриРедактированииЗначения"
03. Декабря 2008 :: 11:53
Печать  
В Процедуре "ПриРедактированииЗначения" почему то нельзя присвоить переменной значение метаданных:
Код
Выбрать все
_ОбщРекв = "";
Если Параметр = "Контрагент" Тогда
	_ОбщРекв = Метаданные.Документ("CRM_Заявка").РеквизитШапки(Источник_ИмяКол);
ИначеЕсли (СокрЛП(ТекВидДок) = "CRM_Заявка") И (Параметр = "КонтрагентВладелец") Тогда
	_ОбщРекв = Метаданные.Документ("CRM_Заявка").РеквизитШапки("Контрагент");
ИначеЕсли (СокрЛП(ТекВидДок) = "CRM_Заявка") И (Параметр = "СуммаДолга") Тогда
	//ПргостоПеременная = Метаданные.Документ("CRM_Заявка").РеквизитТабличнойЧасти("СуммаГрнСНДС");
	_ОбщРекв = Метаданные.Документ("CRM_Заявка").РеквизитТабличнойЧасти("СуммаГрнСНДС");
КонецЕсли; 


при попытке выполнить такой код возникает ошибка:
"Попытка прочитать значение недоступной для чтения переменной", причем если этот код вполнять в другом месте (не в этой процедуре), то все нормлаьно работает.
  
Наверх
IP записан
 
yudin
Full Member
***
Отсутствует


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: ТП, ошибка при обращении к метаданным из "ПриРедактированииЗначения"
Ответ #1 - 04. Декабря 2008 :: 11:01
Печать  
Ну вот, еще один глюк в событиях ТП Печаль .

http://www.1cpp.ru/forum/YaBB.pl?num=1228207551

А насколько возможно проверить то же самое в 2.0.3.1?
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТП, ошибка при обращении к метаданным из "ПриРедактированииЗначения"
Ответ #2 - 04. Декабря 2008 :: 11:05
Печать  
pvase писал(а) 03. Декабря 2008 :: 11:53:
В Процедуре "ПриРедактированииЗначения" почему то нельзя присвоить переменной значение метаданных:
...
причем если этот код вполнять в другом месте (не в этой процедуре), то все нормлаьно работает.

Я правильно понимаю, что в других событиях ТП эффект не наблюдается?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТП, ошибка при обращении к метаданным из "ПриРедактированииЗначения"
Ответ #3 - 04. Декабря 2008 :: 11:06
Печать  
yudin писал(а) 04. Декабря 2008 :: 11:01:
А насколько возможно проверить то же самое в 2.0.3.1?

Не заморачивайся Улыбка
В 2.0.3.1 нет никаких редактирований значений.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
yudin
Full Member
***
Отсутствует


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: ТП, ошибка при обращении к метаданным из "ПриРедактированииЗначения"
Ответ #4 - 04. Декабря 2008 :: 11:26
Печать  
Знаю. Но я же хочу надеяться что проблема во всех событиях!
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТП, ошибка при обращении к метаданным из "ПриРедактированииЗначения"
Ответ #5 - 04. Декабря 2008 :: 11:52
Печать  
pvase писал(а) 03. Декабря 2008 :: 11:53:
В Процедуре "ПриРедактированииЗначения" почему то нельзя присвоить переменной значение метаданных:
Код
Выбрать все
_ОбщРекв = "";
Если Параметр = "Контрагент" Тогда
	_ОбщРекв = Метаданные.Документ("CRM_Заявка").РеквизитШапки(Источник_ИмяКол);
ИначеЕсли (СокрЛП(ТекВидДок) = "CRM_Заявка") И (Параметр = "КонтрагентВладелец") Тогда
	_ОбщРекв = Метаданные.Документ("CRM_Заявка").РеквизитШапки("Контрагент");
ИначеЕсли (СокрЛП(ТекВидДок) = "CRM_Заявка") И (Параметр = "СуммаДолга") Тогда
	//ПргостоПеременная = Метаданные.Документ("CRM_Заявка").РеквизитТабличнойЧасти("СуммаГрнСНДС");
	_ОбщРекв = Метаданные.Документ("CRM_Заявка").РеквизитТабличнойЧасти("СуммаГрнСНДС");
КонецЕсли; 


при попытке выполнить такой код возникает ошибка:
"Попытка прочитать значение недоступной для чтения переменной", причем если этот код вполнять в другом месте (не в этой процедуре), то все нормлаьно работает.

Вот тут все-таки хотелось бы увидеть готовый тест, демонстрирующий ошибку.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТП, ошибка при обращении к метаданным из "ПриРедактированииЗначения"
Ответ #6 - 04. Декабря 2008 :: 12:24
Печать  
artbear писал(а) 04. Декабря 2008 :: 11:52:
Вот тут все-таки хотелось бы увидеть готовый тест, демонстрирующий ошибку.

Прикрепляю тестовую конфу показывающую глюк. Для запуска надо запускать Отчет "РедакторТП".

  

Test_tp2.zip ( 6 KB | Загрузки )
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ТП, ошибка при обращении к метаданным из
Ответ #7 - 04. Декабря 2008 :: 12:38
Печать  
офф
какое знакомое буквосочитание "CRM_Заявка"
случаем не Монолит ?
  

1&&2&&3
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТП, ошибка при обращении к метаданным из
Ответ #8 - 04. Декабря 2008 :: 13:04
Печать  
trad писал(а) 04. Декабря 2008 :: 12:38:
офф
какое знакомое буквосочитание "CRM_Заявка"
случаем не Монолит ?


Скорее всего нет Улыбка, самому пришлось доделывать.
  
Наверх
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТП, ошибка при обращении к метаданным из "ПриРедактированииЗначения"
Ответ #9 - 04. Декабря 2008 :: 16:32
Печать  
yudin писал(а) 04. Декабря 2008 :: 11:26:
Знаю. Но я же хочу надеяться что проблема во всех событиях!

Не пОняла, зачем ты на это хочешь надеяться? Подмигивание
Что за пессимизм?

http://www.1cpp.ru/bugs/show_bug.cgi?id=4249
Исправлено, будет в след. сборке.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТП, ошибка при обращении к метаданным из "ПриРедактированииЗначения"
Ответ #10 - 04. Декабря 2008 :: 18:37
Печать  
kms писал(а) 04. Декабря 2008 :: 16:32:
Не пОняла, зачем ты на это хочешь надеяться? Подмигивание
Что за пессимизм?

http://www.1cpp.ru/bugs/show_bug.cgi?id=4249
Исправлено, будет в след. сборке.


Большое спасибо, жду сборку.
  
Наверх
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТП, ошибка при обращении к метаданным из "ПриРедактированииЗначения"
Ответ #11 - 04. Декабря 2008 :: 22:08
Печать  
pvase писал(а) 04. Декабря 2008 :: 18:37:
Большое спасибо, жду сборку.

Ну, погляди тогда, помогло ли: http://www.1cpp.ru/forum/YaBB.pl?num=1206042291/682#682
  

De quelle planète es-tu?
Наверх
 
IP записан
 
yudin
Full Member
***
Отсутствует


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: ТП, ошибка при обращении к метаданным из "ПриРедактированииЗначения"
Ответ #12 - 05. Декабря 2008 :: 06:26
Печать  
kms писал(а) 04. Декабря 2008 :: 16:32:
Не пОняла, зачем ты на это хочешь надеяться? Подмигивание
Что за пессимизм?


Скорее наоборот. Вдруг причина где то там же, что и моя проблема со скрытием ТП при переключении слоя из процедуры "Выбор".
Кстати, в 2.0.3.1 она скрывалась, но процедура Привыводестроки все равно срабатывала - т.е. табличка рисовалась но ее не было видно...
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
Burlak
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 65
Зарегистрирован: 28. Апреля 2008
Re: ТП, ошибка при обращении к метаданным из "ПриРедактированииЗначения"
Ответ #13 - 05. Декабря 2008 :: 07:35
Печать  
Мне надо было решить аналогичную задачу. При прямом редактировании поля ТП необходимо поместить в него значение, получаемое сложным функционалом - выбором из другой ТП, провайдер данных для которой является ИТ, формируемая прямым запросом из справочника Номенклатура или из Номенклатуры, находящейся на складе в данное время. Сложно описывать алгоритм (программу) обычным языком. Поэтому:
префикс
кнп... - Кнопка,
ит... - Индексированная Таблица,
тп... - Табличное Поле,
кнп...ТП_ - Носитель табличного поля

//-- Обработка события кнпПеремещенияТП_ПриРедактированииЗначения
Процедура кнпПеремещенияТП_ПриРедактированииЗначения(ТП,стр,кол,рег,x)
     Если (кол.Имя="Количество") И (Форма.АктивныйЭлемент()="пвКоличество")Тогда
           str=тпПеремещения.ТекущиеДанные.Получить("ск");
           n=f_итПеремещения_ПоискСтроки(str);      //-- Номер строки без сортировки
           );  //-- Количество
//    тпПеремещения.ОбновитьСтроки();
     КонецЕсли;
     Если (кол.Имя="Номенклатура") И (Форма.АктивныйЭлемент()="пвНоменклатура") Тогда
           str_Номенклатура=x;
    Сервис.ВнешнееСобытие("","f_ВыборНоменклатуры","");
     КонецЕсли;
КонецПроцедуры

Функционал выбора реализуется методом f_ВыборНоменклатуры.
Если вызываю прямо в обработчике - крах.
Использую старинный прием - завершаю работу обработчика события и вызываю функционал в другом элементе. Удобно использовать сервис FormEx.
Процедура ОбработкаВнешнегоСобытия(x,y,z)
  УстановитьСостояниеЭлементовДиалога(a_Элемент);
  Сбросить_b_Элемент();
  Если ПустаяСтрока(x)=0 Тогда
    Активизировать(x);
  Иначе
    Если y="f_ВыборНоменклатуры" Тогда f_ВыборНоменклатуры(); КонецЕсли;
  КонецЕсли;
  Форма.Обновить(0);
КонецПроцедуры

... и первая часть самого функционала:

//******* Метод выбора номенклатуры ********
Процедура f_ВыборНоменклатуры()
  итНоменклатура.УдалитьСтроки();
     b_Элемент[05]=1;  //-- Табличное поле тпНоменклатура доступно
  УстановитьСостояниеЭлементовДиалога(b_Элемент);

  //-- Построим таблицу значений для выбора номенклатуры
  Select = "SELECT DISTINCT
    |  спрНоменклатура.Id as id,
    |  спрНоменклатура.Descr as Номенклатура";

  //-- Анализ на сторно
  Если mid_СкладВ=mid_СкладИз Тогда //-- Сторно
    From = " FROM $Справочник.Номенклатура as спрНоменклатура";
    Where = " WHERE спрНоменклатура.ISFOLDER=2 AND спрНоменклатура.ISMARK <> '*' ";
  Иначе  //-- Перемещение
    From = " FROM
     |  $Документ.СкладПеремещения as h_СкладПеремещения
                 |  INNER JOIN
     |    $ДокументСтроки.СкладПеремещения as t_СкладПеремещения
                 |  ON
                 |    h_СкладПеремещения.IdDoc = t_СкладПеремещения.IdDoc,
     |  $Справочник.Номенклатура as спрНоменклатура";
    Where = " WHERE
     |  $h_СкладПеремещения.id_СкладИз=:id_СкладИз AND
     |  спрНоменклатура.Id=$t_СкладПеремещения.id_Номенклатура";
    cmdOLEDB.УстановитьТекстовыйПараметр("id_СкладИз", mid_СкладИз);
  КонецЕсли;

  //-- Текстовый фрагмент идентификатора номенклатуры определён ?
  str_Номенклатура=СокрЛП(str_Номенклатура);
  Если  str_Номенклатура<>"" Тогда
    Where=Where+" AND UPPER(спрНоменклатура.Descr) LIKE """+ Врег(str_Номенклатура)+"%""";
  КонецЕсли;

  ТекстЗапроса =Select+From+Where+" ORDER BY Номенклатура";
  Попытка
    cmdOLEDB.ВыполнитьИнструкцию(ТекстЗапроса,итНоменклатура,1);
  Исключение
    Предупреждение("Ошибка построения таблицы для Выбора номенклатуры");
    Сервис.ВнешнееСобытие("кнпПеремещенияТП_"," "," ");
  КонецПопытки;
  Если итНоменклатура.КоличествоСтрок()=0 Тогда
    Предупреждение("Нет информации для Выбора номенклатуры*");
    Сервис.ВнешнееСобытие("кнпПеремещенияТП_"," "," ");
  КонецЕсли;

  тпНоменклатура.StartView=0;
  тпНоменклатура.ОбновитьСтроки();
  тпНоменклатура.ТекущаяСтрока=1;
  Активизировать("кнпНоменклатураТП_"); //-- Показ ТП для выбора
КонецПроцедуры


  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТП, ошибка при обращении к метаданным из "ПриРедактированииЗначения"
Ответ #14 - 05. Декабря 2008 :: 07:48
Печать  
yudin писал(а) 05. Декабря 2008 :: 06:26:
Скорее наоборот. Вдруг причина где то там же, что и моя проблема со скрытием ТП при переключении слоя из процедуры "Выбор".
Кстати, в 2.0.3.1 она скрывалась, но процедура Привыводестроки все равно срабатывала - т.е. табличка рисовалась но ее не было видно...

Ясно. Нет, причины разные.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать