Ошибка при вызове метода контекста cells 1с
Добрый день!
Посмотрите пожалуйста. Есть в обработке таблица значений, в которую я выгружаю данные их XML, после этого я корректирую таблицу и хочу чтобы программа сохранила ее в новый документ эксель. Для этого я создал процедуру "Процедура СохранитьНажатие(Элемент) Экспорт". При сохранении выскакивает: "Ошибка при установке значения атрибута контекста (Value)". Насколько я понимаю, программе не нравится тип значения, который я передаю.
Переменные:
ТПП - "табличное поле правил", в ней уже занесены некотрые значения из XML
НоменклатураЗагрузки, НоменклатураБазы - имена столбцов ТПП
СтолбЗагр, СтолбБаз - столбцы в экселе
Выгрузка картинок в Excel
Выгружаю список номенклатуры из 1с в ексель, при этом в номенклатуре храниться путь картинки, при.
Выгрузка информации из Excel в 1с
Добрый день! Случилась такая проблема, что на рабочем компьютере пропал файл с выгрузкой реализации.
Подскажите пожалуйста(выгрузка в excel)
Помогите пожалуйста. Выгружаю из 1С оборотно-сальдовую ведомость в шаблонный файл excel, т.е.
Выгрузка в excel
Как сделать выгрузку в Excel справочника и документа
СохранитьНажатие(Элемент) это событие формы
в этой процедуре пропиши вызов другой процедуры, например СохранитьВЭксель();
саму же процедуру СохранитьВЭксель() добавь в модуль объекта и сделай её экспортной. Вставь свой код представленный выше.
обращение из формы будет ЭтотОбъект.СохранитьВЭксель();
СохранитьНажатие(Элемент) это событие формы
в этой процедуре пропиши вызов другой процедуры, например СохранитьВЭксель();
саму же процедуру СохранитьВЭксель() добавь в модуль объекта и сделай её экспортной. Вставь свой код представленный выше.
обращение из формы будет ЭтотОбъект.СохранитьВЭксель();
В МодулеОбъекта создал функцию "Процедура СохранитьВЭксель(ТПП) Экспорт"
Прописал в ней тотже код, что выше. В событии формы написал: ЭтотОбъект.СохранитьВЭксель(ТПП);
Выскочила ошибка: Ошибка при вызове метода контекста (Cells)
Что я нетак сделал?
Гружу файл. Просмотрел как грузятся проблемные места все нормально.
Находятся элементы и прописываются.
Отлавливаю проблему.
Когда функция просто не отрабатывает, поиска по наименованию (((
Хотя так же все нормально передается туда для поиска.
(26) Ну так найдена была бы пустая ссылка, но не ошибка.
То работает то нет. Так же строка передается!
Глупый вопрос: зачем тогда для каждой строки делать поиск для справочника?
Сделай соответствие символьного представления и ссылки
(24) все же сомнения терзают, там не пробел будет, а нечитаемый неправильный вызывающий ошибку символ, который СОКРЛП не отловит и СТРЗаменить
(44) Сейчас отлаживаю эту процедуру, по нажатию кнопке. Ошибки в ней.
Вот. Все работает. Но иногда идет эта ошибка и все, на таких же данны!
(48) я так и останавливаюсь на строке 2000 с лишним
(51)(52) Да можно многого добавить, но я же смотрю в отладчике, в функцию передаются верные данные, а идет ошибка.
Добавлю конечно проверки.
(55) не знаю. у меня правило, если происходит неведомая херня, нужно сначала делать это, а потом только лезть за бубном
Кэш почищу сейчас догрузится.
Стоит галка останавливаться по ошибке.
Ошибка видимо возникает при записи элемента.
Я смотрю что там в нем, вижу проблему в единицах измерения и родителе.
Но из за чего не пойму.
Или ошибка заполнения обязательных на уровне платформы полей: наименование, владелец (если справочник подчинённый) и тд
(71) У меня же нет попытки исключения?
Да ранее я вижу что в родителе и единицах измерения.
Но туда идут нормальные данные. Буду разбираться.
Видимо энергия ушла.
сейчас вот с этим буду бороться что это пока не знаю
(83) в общем пройдись по справочнику номенклатуры где-то есть одинаковое наименование у элемента и группы. Или если самому лень, посади за проверку девочку-восьмиклассницу, пусть проштудирует справочник от и до.
(81) Не должно такого быть.
(84) Гружу структуру из другой базы. Я пока не могу записать ни одного элемента. Так как грузится в транзакции.
Мне не лень. Я пытаюсь разобраться. Но такого не могло в принципе быть. Надеюсь докапаться до проблемы.
(84) смотрю в файле не нахожу.
Поставил останавливаться по ошибке.
Остановка же будет на проблемном элементе?
Ну вот, пока я в отладчеке не увидел там проблемы.
загружаю фаил ".xls" через переработаную обработку клиент банка.
видает вот такую ошибку.
Не возможно загрузить данные из листа, по причине: : Ошибка при вызове метода контекста (Cells): Произошла исключительная ситуация (0x800a03ec)
вигружаю из клиент банка ОТП в стандартную бухгалтерию для Украини (1.2.13.4)
1С:Предприятие 8.2 (8.2.17.169)
вот в етой строке ошибка:
а вот код цикла
Для НомСтр = НачСтр По НашЛист.Cells(1,1).SpecialCells(11).Row Цикл
ДатаИзФайлаСтр = СокрЛП(НашЛист.Cells(НомСтр,КолДатаДокумента).Text);
ДатаИзФайла = Дата(Лев(ДатаИзФайлаСтр,4),Сред(ДатаИзФайлаСтр,6,2),Прав(ДатаИзФайлаСтр,2));
Если (ДатаИзФайла<=КонПериода) и (ДатаИзФайла>=НачПериода) Тогда
Таб = ДокументыДляИмпорта.Добавить();
Таб.Операция = "ПЛАТЕЖНОЕПОРУЧЕНИЕ";
Таб.Номер = СокрЛП(НашЛист.Cells(НомСтр,КолНомерДокумента).Text);
Таб.Дата = ПривестиЗначение(ДатаИзФайла);
Таб.Сумма = Формат(Число(НашЛист.Cells(НомСтр,КолСуммаДокумента).Value),"ЧГ=0");
Таб.НазначениеПлатежа = СокрЛП(НашЛист.Cells(НомСтр,КолКомментарий).Text);
Таб.ДатаСписано = ПривестиЗначение(ДатаИзФайла);
Таб.ДатаПоступило = ПривестиЗначение(ДатаИзФайла);
Таб.Плательщик = СокрЛП(НашЛист.Cells(НомСтр,КолНаименование_А).Value);
Таб.ПлательщикСчет = Формат(НашЛист.Cells(НомСтр,КолСчет_А).Value,"ЧГ=0");
Таб.ПлательщикМФО = Формат(НашЛист.Cells(НомСтр,КолМФО_А).Value,"ЧГ=0");
Таб.ПлательщикОКПО = Формат(НашЛист.Cells(НомСтр,КолОКПО_А).Value,"ЧГ=0");
Таб.Получатель = СокрЛП(НашЛист.Cells(НомСтр,КолНаименование_Б).Value);
Таб.ПолучательСчет = Формат(НашЛист.Cells(НомСтр,КолСчет_Б).Value,"ЧГ=0");
Таб.ПолучательМФО = Формат(НашЛист.Cells(НомСтр,КолМФО_Б).Value,"ЧГ=0");
Таб.ПолучательОКПО = Формат(НашЛист.Cells(НомСтр,КолОКПО_Б).Value,"ЧГ=0");
РаспознатьДанныеВСтрокеДокумента(Таб);
НомерСтроки = НомерСтроки + 1;
Таб.НомерСтроки = НомерСтроки;
// Для каждого реквизита (= колонка) надо проверить на пустое значение
Для каждого КолонкаИмпорта из ДокументыДляИмпорта.Колонки Цикл
ПроверитьНаПустоеЗначениеИмпорта(Таб, КолонкаИмпорта.Имя, КолонкаИмпорта.Заголовок);
КонецЦикла;
ИмяФайлаОтчета - реквизит обработки, в который на клиенте через диалог выбора подставляю путь нужного файла. Проблема такая: если выбираю файл, который сам сохранил пред. раз, то все нормально проходит - выгружаются данные и открывается книга. Если чужой файл -присланный например от другого пользователя и сохраненный другим пользователем, то выскакивает ошибка "Конфликт имен"(скрин во вложении). Что не так делаю? помогите пожалуйста.
Недопустимая строка с указанием класса при выгрузке данных в файлы excel в цикле
Здравствуйте. В собственной конфигурации есть обработка, в реквизиты и ТЧ которой выгружаются.
Ошибки при выгрузке данных. Правила написаны через Конвертацию данных редакции 2
Добрый день. Подскажите, пожалуйста, в чем может быть дело. Через конвертацию данных редакции 2.
Ошибки При Выгрузке Данных Через Конвертацию Данных
Добрый день. Подскажите, пожалуйста, в чем может быть дело. Через конвертацию данных редакции 2.
Удвоение записей, при данных выгрузке в BDF
День добрый. Написал небольшую выгрузку, которая перегружает данные из запроса, в BataBase файл, с.
jediAlex, может у вас офис разный?
Добавлено через 2 минуты
jediAlex, или файлы во что ты выгружаешь имеют установленный фильтр
офис 2013-й стоит у всех. Фильтры все убрал(действительно были), сохранил. После сохранения попытался выгрузить - та же ошибка
Это заморочки экселя.
Убрал в экселе, но служебная таблица то осталась. Ее как то там через диспетчер можно удалить.
Т.е. пытаться вставить свои данные в область на которую был наложен фильтр, будешь получать эту ошибку.
Добавлено через 1 минуту
jediAlex, видел где-то в интернете костыли которые позволяют избежать появление этой ошибки.
Добавлено через 2 минуты
Вот один из примеров
Недавно столкнулся с такой же проблемой и решил поделится решением. В моем случае проблема осложнялась тем, что я загружаю данные из Excel файлов в автоматическом режиме, без участия пользователей. Поскольку Excel я открывал в невидимом режиме, то и возникающего диалогового окна с предложением ввести новое имя вместо _FilterDatabase не было видно. Внешне это выглядело как будто процесс обрабатывающий Excel файлы зависал. На самом деле он ждал ввода в диалоговое окно пользователем. Что интересно, при создании OLE объекта я устанавливаю DisplayAlerts в False.
Итак, решение проблемы.
Данные в XLSX файле хранятся в ввиде набора XML и других файлов упакованных в zip архив. Чтобы убедится в этом, можете сменить расширение XLSX на .zip и открыть любым архиватором. Берем файл, который вызывает ошибку (_FilterDatabase), открываем его архиватором. Нас интересует XML файл XL\workbook.xml. Если посмотреть содержимое этого файла, то можно обнаружить, что
в нем есть два атрибута с именем _FilterDatabase, в моем случае:
Вот как раз второй атрибут и вызывает ошибку. Если изменить его название или удалить весь тег, то ошибка пропадает.
Итак, алгоритм следующий: Открываем XLSX файл, вытаскиваем из него файл XL\workbook.xml, затем меняем название атрибута "_xlnm._FilterDatabase" на любое другое, запаковываем обратно, открываем Excel файл стандартными средствами. Фрагмент кода реализующий это ниже. Для разархивации использовал бесплатный компонент TZipMaster 1.91.
Как в любом языке программирования, в платформе 1С есть предопределенные методы, которые облегчают жизнь разработчикам. Но выполнение этих команд требует правильного соблюдения синтаксиса языка программирования.
Самые распространенные ошибки при вызове типовых методов:
- Записать
- Создать
- Подключиться
- Connect
- ПроверитьВывод
- PreviewFile1C
- Прочитать
- Выполнить
- ВыполнитьПакет
- ПрочитатьИзменения
Рассмотрим пример. Мы программно создали запрос (справочник по запросам), передав в параметры «текст» вот такой фрагмент:
: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
<(13, 4)>: Синтаксическая ошибка
И >
Рассмотрим еще один пример:
Получите понятные самоучители по 1С бесплатно:
Перенесем ошибочный код в обработчик «ПередЗаписью» справочника «Версии программ» и попробуем записать справочник программно. Видим ошибку:
: Ошибка при вызове метода контекста (Записать)
Выборка.ПолучитьОбъект().Записать();
по причине:
Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
<(13, 4)>: Синтаксическая ошибка
И >
Несмотря на то, что ошибка заключается в выполнения метода «Выполнить», система ругается и на строчку кода, где вызывается программная запись объекта.
Решение проблемы
Для решения проблемы достаточно понять, в чем именно заключается ошибка. В 99% случаев проблема решается банальным чтением справки и анализом проблемы.
Для того чтобы узнать, как пользоваться тем или иным методом, достаточно установить курсор на интересующей Вас функции и нажать «Ctrl + F1». Платформа 1С выдаст Вам контекстную подсказку по требуемому методу:
Проверьте параметры, передаваемые в функцию, и правильность её использования.
Другие статьи по 1С:
Читайте также: