Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
17 янв 2022, 09:59

Параллельная реальность

Автор AAAAAAD, 24 авг 2021, 15:35

0 Пользователей и 1 гость просматривают эту тему.

AAAAAAD

Затея такова. В конфигурации ТСЖ есть обработка Загрузка реестра платежей. Там выбирается файл выгрузки. Надо чтобы выбирался каталог, а не файл. А потом перебирались файлы в каталоге так, как если бы каждый из них выбирался по отдельности. Так вот встретился со странностью, с которой до сых пор знаком не был, а именно: сохранил во внешнюю обработку сию, заремарил в процедуре команды КонмандаЗагрузитьРеестр() всё, написал код свой. Но каково же было моё удивление, что после выполнения моей процедуры программа выполняет дальше процедуру КомандаЗагрузитьРеестрЗавершение(). Ума не приложу, по какой причине программа это делает. Такое ощущение, что есть второй поток выполнения, параллельная реальность какая-то. Может кто-нибудь сможет мне пояснить, где тут собака порылась.
На данный момент процедура изменённая выглядит так:

Процедура КомандаЗагрузитьРеестр(Команда)
   //
   Режим=РежимДиалогаВыбораФайла.ВыборКаталога;
   ДиалогОткрытия=Новый ДиалогВыбораФайла(Режим);
   ДиалогОткрытия.Каталог="";
   ДиалогОткрытия.МножественныйВыбор=Истина;
   ДИалогОткрытия.Заголовок="Выберите каталог!";
   
   Если ДиалогОткрытия.Выбрать() тогда
      ПутьККаталогу=ДиалогОткрытия.Каталог;
   КонецЕсли;
   
   Файлы=Новый Массив;
   Файлы=НайтиФайлы(ПутьККаталогу,"*.TXT",Ложь);
   Для каждого ФайлTXT из Файлы цикл
      ФайлTXT.НачатьПроверкуСуществования(Новый ОписаниеОповещения("КомандаЗагрузитьРеестрЗавершение", ЭтотОбъект, Новый Структура("ФайлНаДиске", ФайлTXT)));
   КонецЦикла;
   //
   //Если Объект.КорректировкаДолга И (НЕ ЗначениеЗаполнено(Объект.Контрагент)) Тогда
   //   Сообщение = Новый СообщениеПользователю;
   //   Сообщение.Текст = "Не выбрана обслуживающая организация.";
   //   Сообщение.Сообщить();
   //   Возврат;
   //КонецЕсли;
   //
   //Если РасширениеПодключено Тогда
   //   ФайлНаДиске = Новый Файл(Объект.ИмяФайлаЗагрузки);
   //   ФайлНаДиске.НачатьПроверкуСуществования(Новый ОписаниеОповещения("КомандаЗагрузитьРеестрЗавершение", ЭтотОбъект, Новый Структура("ФайлНаДиске", ФайлНаДиске)));
   //Иначе
   //   ЗагрузитьРеестрНажатиеФрагмент();
   //КонецЕсли;
   
КонецПроцедуры

LexaK

ха, знакомые грабли!
когда сохраняете обработку как внешнюю, необходимо претрясти весь код в модуле и в формах
так как в исходной полно вызовов самой на себя!!!

что бы отловить вызовы на старую/встроенную обработку, просто (временно) в конфигураторе переименуйте ее,
сохраните конфу, перезапустите 1С, затем запустите свою внешнюю обработку
ответ Понравился? (в смысле пригодился?)

Теги: ТСЖ 
Рейтинг@Mail.ru Rambler's Top100

Поиск