Консоль запросов не открывает файл с запросом

При открытии консолью запросов (из комплекта "Инструменты разработчика" от 1С) ранее сохраненного файла выдается сообщение об ошибке Тип не определен (AccumulationMovementType):

 

Причина - при сохранении файла консоль запросов некоторые данные сохраняет, указывая названия на английском языке. А прочитать их может только на русском.

Для исправления:

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

Постоянное - изменить консоль запросов с тем чтобы такие исправления делались автоматически.

1. Для исправления при открытии. В модуле обработки исправить:

  1. Функция ПрочитатьЗапросыИзФайлаXML(ДвоичныеДанные) Экспорт
  2. Объект = ЭтотОбъект;
  3. ИмяФайла = ПолучитьИмяВременногоФайла("q1c");
  4. ДвоичныеДанные.Записать(ИмяФайла);
  5. // оквита
  6. осОбработатьФайлЗапросов(ИмяФайла);
  7. // /оквита
  8. ФайлXML = Новый ЧтениеXML;
  9. ФайлXML.ОткрытьФайл(ИмяФайла);
  10. ФайлXML.Прочитать();
 

и добавить в конец:

  1. #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
  2.  
  3. #Область Оквита
  4.  
  5. Процедура осОбработатьФайлЗапросов(осИмяФайла)
  6. осЧт = Новый ЧтениеТекста(осИмяФайла);
  7. осТекст = осЧт.Прочитать();
  8. осЧт.Закрыть();
  9. осТекст = СтрЗаменить(осТекст, "type=""AccumulationMovementType""", "type=""ВидДвиженияНакопления""");
  10. осТекст = СтрЗаменить(осТекст, "value=""Receipt""", "value=""Приход""");
  11. осТекст = СтрЗаменить(осТекст, "value=""Expense""", "value=""Расход""");
  12. осЗт = Новый ЗаписьТекста(осИмяФайла);
  13. осЗт.Записать(осТекст);
  14. осЗт.Закрыть();
  15. КонецПроцедуры
  16.  
  17. #КонецОбласти
  18.  
  19. #КонецЕсли
 

2. Для исправления при записи:

В форме обработки исправить процедуру:

  1. &НаКлиенте
  2. Процедура ПолучениеФайловЗавершение(Результат, ДополнительныеПараметры) Экспорт
  3.  
  4. Если Результат <> Неопределено И ТипЗнч(Результат) = Тип("Массив") Тогда
  5. Модифицированность = Ложь;
  6. Объект.ИмяФайла = Результат[0].Имя;
  7. // оквита - обработать файл на предмет неправильных имен
  8. осОбработатьФайлЗапросов(Объект.ИмяФайла);
  9. // /оквита
  10. КонецЕсли;
  11.  
  12. КонецПроцедуры
 

и добавить в конец

  1. &amp;НаКлиенте
  2. Процедура осОбработатьФайлЗапросов(осИмяФайла)
  3. осЧт = Новый ЧтениеТекста(осИмяФайла);
  4. осТекст = осЧт.Прочитать();
  5. осЧт.Закрыть();
  6. осТекст = СтрЗаменить(осТекст, "type=""AccumulationMovementType""", "type=""ВидДвиженияНакопления""");
  7. осТекст = СтрЗаменить(осТекст, "value=""Receipt""", "value=""Приход""");
  8. осТекст = СтрЗаменить(осТекст, "value=""Expense""", "value=""Расход""");
  9. осЗт = Новый ЗаписьТекста(осИмяФайла);
  10. осЗт.Записать(осТекст);
  11. осЗт.Закрыть();
  12. КонецПроцедуры
 

В примере показана замена 3х слов, если у Вас возникают проблемы с иными ключевыми словами, исправлять аналогично.

Обновлено 20.01.2019 15:23
 
home search