Имя: Пароль:
1C
1С v8
Упр.приложение: Сообщить() как вывести???
, , ,
0 листопад
 
24.07.14
23:12
БП 3.0.25.9 платформа 8.2 (упр.приложение)

Типовая обработка "КлиентБанк", в модуле менеджера, в типовой процедуре "ОпределитьСсылочныеДанные", вношу строчку, выводящее пользователю сообщение. В файловой копии все срабатывает, т.е. сообщение выводится. Но в клиент-серверной базе - сообщение не выводится. Подскажите, как вывести сообщение в упр.приложении. Ниже код, где я добавила строчку:
Сообщить("Не загружена строка выписки по " + СтрокаДокумента.Плательщик);

Вот эта процедура с моей строкой (она в конце):


Процедура ОпределитьСсылочныеДанные(КешСвойствДокументов, ДокументыДляИмпорта, СтруктураДанныхИмпорта,
    Организация, БанковскийСчет, ДеревоКонтрагентов, НастройкиПоУмолчаниюДляДокументов,
    СоздаватьНенайденныеЭлементы, СтекОповещений) Экспорт
    
    НомерСтроки = 0;
    НомерСчета  = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(БанковскийСчет, "НомерСчета");
    
    СписокБанковскихСчетовОрганизации = ПолучитьСписокСвоихСчетов(Организация);
    
    ДобавитьСлужебныеКолонки(ДокументыДляИмпорта);
    
    // Формируем объектные структуры данных.
    Для каждого СтрокаДокумента Из ДокументыДляИмпорта Цикл
        // Последовательно обрабатываем каждую загруженную строку.
        
        // Распознаем реквизиты.
        // Если в файле находятся выписки пл. документов по нескольким счетам, то распознаем и отображаем
        // только те, которые выгружены по указанному банковскому счету.
        Если СтрокаДокумента.ПлательщикСчет = НомерСчета
            ИЛИ СтрокаДокумента.ПолучательСчет = НомерСчета Тогда
            
            ПодготовитьДанныеВСтрокедокумента(СтрокаДокумента,
            Организация, БанковскийСчет, НомерСчета, СписокБанковскихСчетовОрганизации, НастройкиПоУмолчаниюДляДокументов);
            
            НомерСтроки = НомерСтроки + 1;
            СтрокаДокумента.НомерСтроки = НомерСтроки;
            // Для каждого реквизита (= колонка) надо проверить на пустое значение.
            Для каждого КолонкаИмпорта Из ДокументыДляИмпорта.Колонки Цикл
                ПроверитьНаПустоеЗначениеИмпорта(КешСвойствДокументов,
                СтрокаДокумента, КолонкаИмпорта.Имя, СтруктураДанныхИмпорта[КолонкаИмпорта.Имя]);
            КонецЦикла;
            
            Если ТипЗнч(СтрокаДокумента.Контрагент) = Тип("Строка") ИЛИ
                ТипЗнч(СтрокаДокумента.СчетКонтрагента) = Тип("Строка") ИЛИ
                ТипЗнч(СтрокаДокумента.Договор) = Тип("Строка") Тогда
                
                // Добавляем реквизиты в табличную часть для дальнейшего использования.
                СписокНенайденных(СтрокаДокумента, ДеревоКонтрагентов);
                
            КонецЕсли;
            
            Если ЗначениеЗаполнено(СтрокаДокумента.Документ) Тогда
                Если СтрокаДокумента.Проведен Тогда
                    СтрокаДокумента.СостояниеДокумента = 0;
                Иначе
                    СтрокаДокумента.СостояниеДокумента = 2;
                КонецЕсли;
            Иначе
                СтрокаДокумента.СостояниеДокумента     = 3;
            КонецЕсли;
            
        Иначе
            //****************************************************************************
            // ***************** я добавила(            
            Сообщить("Не загружена строка выписки по " + СтрокаДокумента.Плательщик);
            // ***************** я добавила)
            // ***************************************************************************
            
            // Остальные помечаем для последующего удаления.
            СтрокаДокумента.НомерСтроки = 0;
        КонецЕсли;
    КонецЦикла;
    
    РаспознатьДанные(ДокументыДляИмпорта, ДеревоКонтрагентов,
    Организация, БанковскийСчет, НомерСчета,
    СоздаватьНенайденныеЭлементы, СтекОповещений);
    
    // Удалим ненужные строки из таблицы.
    Количество = ДокументыДляИмпорта.Количество() - 1;
    Для Ном = 0 По Количество Цикл
        Если ДокументыДляИмпорта[Количество - Ном].НомерСтроки = 0 Тогда
            ДокументыДляИмпорта.Удалить(Количество - Ном);
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры
3 f_vadim
 
24.07.14
23:28
вроде должно быть такое
ОбщегоНазначенияКлиентСервер.СообщитьПользователю
4 листопад
 
24.07.14
23:31
(3) Смотрела я эту процедуру. Там вообще непонятно как это работает:

Процедура СообщитьПользователю(
        Знач ТекстСообщенияПользователю,
        Знач КлючДанных = Неопределено,
        Знач Поле = "",
        Знач ПутьКДанным = "",
        Отказ = Ложь) Экспорт
    
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = ТекстСообщенияПользователю;
    Сообщение.Поле = Поле;
    
    ЭтоОбъект = Ложь;
    
#Если НЕ (ТонкийКлиент ИЛИ ВебКлиент) Тогда
    Если КлючДанных <> Неопределено
       И XMLТипЗнч(КлючДанных) <> Неопределено Тогда
        ТипЗначенияСтрокой = XMLТипЗнч(КлючДанных).ИмяТипа;
        ЭтоОбъект = Найти(ТипЗначенияСтрокой, "Object.") > 0;
    КонецЕсли;
#КонецЕсли
    
    Если ЭтоОбъект Тогда
        Сообщение.УстановитьДанные(КлючДанных);
    Иначе
        Сообщение.КлючДанных = КлючДанных;
    КонецЕсли;
    
    Если НЕ ПустаяСтрока(ПутьКДанным) Тогда
        Сообщение.ПутьКДанным = ПутьКДанным;
    КонецЕсли;
        
    Сообщение.Сообщить();
    
    Отказ = Истина;
    
КонецПроцедуры
5 f_vadim
 
24.07.14
23:31
Там какие-то процедуры фоновыми заданиями запускаются, тады никаких сообщений не будет.
6 banco
 
24.07.14
23:31
(2)  наверное загрузка идет в фоне. Смотри у процедуры есть параметр  СтекОповещений, может это то что тебе нужно
7 f_vadim
 
24.07.14
23:32
(4) чо на неё смотреть?
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("сообщение")
8 banco
 
24.07.14
23:36
(7)  ты можешь не смотреть, тебе это ничего не говорит
9 листопад
 
24.07.14
23:39
(6) Вы правы, процедура ОпределитьСсылочныеДанные() вызывается из Процедуры ФоноваяЧтениеДокументовКИмпорту()

Как же тогда быть?
10 f_vadim
 
24.07.14
23:39
(8) ты это к чему?
11 f_vadim
 
24.07.14
23:41
попробовать
СтекОповещений.Добавить(Новый Структура("Текст", "сообщение"));
12 Russiagreat
 
25.07.14
07:32
По идеи он все сообщит, но только по окончанию загрузки
Ошибка? Это не ошибка, это системная функция.