Имя: Пароль:
1C
1С v8
Отладчик по управляемым формам
,
0 Oz11
 
09.03.12
15:50
мистика какая-то. после того как обновил подсистему в базе код - который раньше работал - теперь вылетает с ошибкой. причем обновление не затронуло место где вылазит ошибка. есть обработка "ФормированиеПлатежныхДокументов", при ее запуске вылазит ошибка "Попытка передачи с клиента на сервер мутабельного значения 2-го параметра метода ЗаполнитьПредставленияПолей ()", ругается на модуль объекта обработки. перед процедурой директива "#Если Клиент Тогда
". после - "#КонецЕсли". у обработки есть управляемые формы. одна из них установлена дополнительной формой обработки. код с базе до обновления и после сравнил чуть ли не построчно. все совпадает. ставил точки останова на обычной форме обработки - не срабатывает. думал что открывается управляемая, тоже ставил точки останова и тоже ничего. где я туплю и как можно отладить управляемую форму чтобы хоть понять смысл происходящего в обработке?
1 zladenuw
 
09.03.12
15:52
а код какой ?
2 pumbaEO
 
09.03.12
15:52
Демоническое обновление?
Кеш чистил или сразу тему создавал?
3 acsent
 
09.03.12
15:53
подписки?
4 Oz11
 
09.03.12
15:54
ругается на этой строке бит_ОбщегоНазначенияКлиентСервер.ЗаполнитьПредставленияПолей(СтруктураСоответствия,ПостроительОтчета) на второй параметр.
темпы не чистил - сейчас сделаю.
5 Oz11
 
09.03.12
15:57
обновление делал сравнением/объединением. нужно было обновить подсистему бюджетирования конфы бит_УТП если кто сталкивался.
6 Oz11
 
09.03.12
16:00
темпы вычистил - не помогло.
7 pumbaEO
 
09.03.12
16:04
Построительотчета
Доступность:
Сервер, толстый клиент, внешнее соединение.

Все таки управляемый режим запуска или толстый клиент?
8 Oz11
 
09.03.12
16:14
запускается в толстом клиенте, так же как и на базе до обновления. в этом весь и прикол что до до обновления работает, после - ни в какую.
9 pumbaEO
 
09.03.12
16:16
клиент-сервер?  Кэш сервера чистил?
10 pumbaEO
 
09.03.12
16:18
стоп, может  у тебя все таки на форме есть реквизит ПостроительОтчета? В модулях то разницы не видишь, значит скорее все таки в форме проблема?
11 Мимохожий Однако
 
09.03.12
16:18
Для начала закомментируй эту строку
12 Oz11
 
09.03.12
16:26
(10) в форме такого реквизита нет, ни в обычной, ни в управляемой. более того - эта обработка не затрагивалась при обновлении. ПостроительОтчета - это реквизит самой обработки.
13 Oz11
 
09.03.12
16:28
(11) если строку закомментировать - открывается обычная форма обработки (не управляемая).
14 pumbaEO
 
09.03.12
16:31
Так точка останова точно не работает? Что там за тип в ПостроительОтчета...
15 Oz11
 
09.03.12
16:36
теперь знаем что открывается обычная форма. Тип построителя отчета - построитель отчета. до вызова этой функции:

   ТекстЗапроса = бит_Казначейство.СформироватьТекстЗапросаДляПодбораЗаявокНаРасходованиеДенежныхСредств();

   ПостроительОтчета.Текст = ТекстЗапроса;

   СтруктураСоответствия = Новый Структура;
   СтруктураСоответствия.Вставить("НомерЗаявки"                ,"Номер заявки");
   СтруктураСоответствия.Вставить("ФормаОплаты"                ,"Форма оплаты");
   СтруктураСоответствия.Вставить("ДатаРасхода"                ,"Дата расхода");
   СтруктураСоответствия.Вставить("ДатаПлатежаКрайняя"            ,"Крайняя дата расхода");
   СтруктураСоответствия.Вставить("ВалютаДокумента"            ,"Валюта документа");
   СтруктураСоответствия.Вставить("ДатаВходящегоДокумента"    ,"Дата входящего документа");
   СтруктураСоответствия.Вставить("ДатаЗаявки"                ,"Дата заявки");
   СтруктураСоответствия.Вставить("ДатаПлатежнойПозиции"      ,"Дата платежной позиции");
   СтруктураСоответствия.Вставить("ДоговорКонтрагента"        ,"Договор контрагента");
   СтруктураСоответствия.Вставить("НомерВходящегоДокумента"    ,"Номер входящего документа");
   СтруктураСоответствия.Вставить("НомерПлатежнойПозиции"      ,"Номер платежной позиции");
   СтруктураСоответствия.Вставить("ПлатежнаяПозицияПроведена"    ,"Платежная позиция проведена");
   СтруктураСоответствия.Вставить("СтатусЗаявки"                ,"Статус заявки");
   СтруктураСоответствия.Вставить("СтатьяОборотов"              ,"Статья оборотов");
   СтруктураСоответствия.Вставить("ВключенаВРеестр"              ,"Включена в реестр");

   бит_ОбщегоНазначенияКлиентСервер.ЗаполнитьПредставленияПолей(СтруктураСоответствия,ПостроительОтчета);
ТекстЗапроса действительно содержит текст запроса.
в функции ЗаполнитьПредставленияПолей():

   СтруктураКоллекцийПостроителяОтчета = Новый Структура("ДоступныеПоля, ВыбранныеПоля, ИзмеренияКолонки, ИзмеренияСтроки, Отбор, Порядок");
   
   Для каждого ЭлементСтруктуры Из СтруктураКоллекцийПостроителяОтчета Цикл
       Для а = 0 По ПостроительОтчета[ЭлементСтруктуры.Ключ].Количество() - 1 Цикл
           Если ПустаяСтрока(ПостроительОтчета[ЭлементСтруктуры.Ключ][а].Имя) Тогда
               Продолжить;
           КонецЕсли;
           Если СтруктураСоответствияИмен.Свойство(ПостроительОтчета[ЭлементСтруктуры.Ключ][а].Имя) Тогда
               ПостроительОтчета[ЭлементСтруктуры.Ключ][а].Представление = СтруктураСоответствияИмен[ПостроительОтчета[ЭлементСтруктуры.Ключ][а].Имя];
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;
16 Oz11
 
09.03.12
16:51
если процедуру из общего модуля засунуть в модуль обработки - все работает. (галочки в свойствах модулей тоже сходятся). как такое возможно?
17 pumbaEO
 
09.03.12
16:52
а общий модуль у тебя где выполняеться? Какие галочки стоят?
18 Oz11
 
09.03.12
16:58
(17) сервер и вызов сервера
19 pumbaEO
 
09.03.12
17:01
не поверишь "Попытка передачи с клиента на сервер мутабельного значения" но система тебе об этом и говорит. У тебя же 8.2 ?
20 Oz11
 
09.03.12
17:04
да, 8.2
21 pumbaEO
 
09.03.12
17:06
22 Oz11
 
09.03.12
17:10
(21) ладно. все решается установкой флажка Клиента у общего модуля. но как же тогда эта сволочь раньше работала?