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

Запись из Excel в Документ

Автор nopIII, 28 дек 2024, 14:23

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

nopIII

Здравствуйте, столкнулся с проблемой. Я создаю с помощью таблицы excel новые документы и не получается Записи двух полей СтатьяСписания и Количество. Эти поля находятся в Табличной части. Процедура ЗаписатьДанныеНаСервере()
    Сообщить("Начало записи данных");
   
    Для каждого СтрокаДанных Из Объект.ДанныеФайла Цикл
        Сообщить("Обработка строки данных: " + СтрокаДанных.Подразделение);
       
       
        Подразделение = Справочники.СтруктураПредприятия.НайтиПоНаименованию(СтрокаДанных.Подразделение);
        Если Подразделение = Неопределено Тогда
            Сообщить("Подразделение не найдено: " + СтрокаДанных.Подразделение);
            Продолжить;
        КонецЕсли;
       
        Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаДанных.Номенклатура);
        Если Номенклатура = Неопределено Тогда
            Сообщить("Номенклатура не найдена: " + СтрокаДанных.Номенклатура);
            Продолжить;
        КонецЕсли;
       
        Характеристика = Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию(СтрокаДанных.Характеристика);
        Если Характеристика = Неопределено Тогда
            Сообщить("Характеристика не найдена: " + СтрокаДанных.Характеристика);
            Продолжить;
        КонецЕсли;
       
        СтатьяСписания = ПланыВидовХарактеристик.СтатьиРасходов.НайтиПоНаименованию(СтрокаДанных.СтатьяСписания);
        Если СтатьяСписания = Неопределено Тогда
            СтатьяСписания = ПланыВидовХарактеристик.СтатьиАктивовПассивов.НайтиПоНаименованию(СтрокаДанных.СтатьяСписания);
            Если СтатьяСписания = Неопределено Тогда
                Сообщить("Статья списания не найдена: " + СтрокаДанных.СтатьяСписания);
                Продолжить;
            КонецЕсли;
        КонецЕсли;       
               
       
        НовыйДокумент = Документы.РаспределениеЗатрат.СоздатьДокумент();
        НовыйДокумент.Дата = ТекущаяДата();
        НовыйДокумент.Подразделение = Подразделение; 
        НовыйДокумент.Номенклатура = Номенклатура;
НовыйДокумент.Характеристика = Характеристика; 
НовыйДокумент.Комментарий = СтрокаДанных.Комментарий;
       
       
        СтрокаТЧ = НовыйДокумент.ПрочиеРасходы.Добавить();
        СтрокаТЧ.СтатьяРасходов = СтатьяСписания;
СтрокаТЧ.Количество = Число (СтрокаДанных.Количество);
       
        Если НовыйДокумент.Номенклатура = Неопределено Или НовыйДокумент.Количество <= 0 Тогда
            Сообщить("Не все обязательные поля заполнены для записи документа.");
            Продолжить;
        КонецЕсли;
       
        Попытка
            НовыйДокумент.Записать();
            Сообщить("Документ записан успешно");
        Исключение
            Сообщить("Ошибка при записи документа: " + ОписаниеОшибки());
        КонецПопытки;
    КонецЦикла;
   
    Сообщить("Запись данных завершена");
КонецПроцедуры
Как правильно записывать эти значения? Подразделения, Номенклатура, Характеристика и Комментарий записываются без проблем. Возможно глупый вопрос задаю, я новичок, только разбираюсь

antoneus

Если по наименованию не найдено, возвращается не Неопределено (в данном случае), а пустая ссылка.

LexaK

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

в своем коде попробуйте поменять проверку на такую

Если Не ЗначениеЗаполнено(Номенклатура) Тогда

еще внимательно проверяйте имена реквизитов
и проверяйте совпадение Типов данных при присвоении.
если помогло нажмите: Спасибо!

nopIII

LexaK, Сейчас слегка поменял код как посоветовали выше. Теперь приходит сообщение: Статья списания не найдена: (Статья которая в Экселе). И количество он тоже не записал. Хотя такая Статья Списания которая в Экселе в ПВХ есть. Не могу понять)

antoneus

Прям до последней закорючки совпадает?

nopIII

antoneus, Проверил, вроде бы все идентично:)

LexaK

nopIII, откройте сам правочник - список
в нем попробуйте найти по этому Наименованию...
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск