Всем привет, программно пытаюсь создать создать несколько документов поступление товаров, данные для создания беру из файла excel. В файле имеются следующие поля: Дата документа, номерТТН и сумма документа. Написал обработчик, создал три реквизита, у поля дата установил тип поля "Дата", так вот при загрузке данных и файла поле дата остаётся пустым, если тип поля дата выбираю строка то данные переносятся из файла в табличную часть но при попытке создать документ получаю ошибку поле дата не может быть пустым. Подскажите пожалуйста, что делаю не так. Уровень начинающий. Надеюсь доступно объяснил проблему)
По теме из базы знаний
- «Программное заполнение настроек СКД» или «Как сделать отчёт на СКД с понятным для пользователя интерфейсом». (1С: Предприятие 8.1, 8.2 обычное приложение)
- Пример программного заполнения дерева метаданных обработки "Выгрузка / загрузка данных XML"
- Заполнение Сегмента клиентов (партнеров) из файла Эксель, программно через отбор СКД. УТ 11, КА 2.0, ЕРП 2.0
- Формы. Трудности программной работы
- Программное заполнение вариантов обеспечения (отгрузка) в документе Заказ клиента на сервере
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) С екселя забираем дату строкой потом преобразовываем в дату данной функцией.
Функция ПреобразоватьВДату(ИсхСтр)
Стр = СокрЛП(ИсхСтр);
ЭтоДата = Найти(Стр,".") или Найти(Стр,"-") или Найти(Стр,"/");
ЭтоВремя = Найти(Стр,":");
Если Не ЭтоДата и Не ЭтоВремя Тогда
Возврат Дата(1,1,1,1,1,1);
КонецЕсли;
МассивДат = Новый Массив;
МассивВремени = Новый Массив;
врСтр = "";
Для а = 1 По СтрДлина(Стр) Цикл
Если (Сред(Стр,а,1) = "." или Сред(Стр,а,1) = "-" или Сред(Стр,а,1) = "/") и ЭтоДата Тогда
МассивДат.Добавить(Число(врСтр));
врСтр = "";
ИначеЕсли Сред(Стр,а,1) = ":" и Не ЭтоДата Тогда
МассивВремени.Добавить(Число(врСтр));
врСтр = "";
ИначеЕсли Сред(Стр,а,1) = " " или КодСимвола(Сред(Стр,а,1))<48 или КодСимвола(Сред(Стр,а,1))>57 Тогда
Если МассивДат.Количество()>0 и МассивДат.Количество()<3 и врСтр <> "" Тогда
МассивДат.Добавить(Число(врСтр));
КонецЕсли;
ЭтоДата = Ложь;
врСтр = "";
Иначе
врСтр = врСтр + Сред(Стр,а,1);
КонецЕсли;
КонецЦикла;
Если МассивВремени.Количество()>0 и МассивВремени.Количество()<3 и врСтр <> "" Тогда
МассивВремени.Добавить(Число(врСтр));
ИначеЕсли МассивДат.Количество()>0 и МассивДат.Количество()<3 и врСтр <> "" Тогда
МассивДат.Добавить(Число(врСтр));
КонецЕсли;
врДень = 0;
врМесяц = 0;
врГод = 0;
Для Каждого дСтр из МассивДат Цикл
Если врДень <> 0 и врМесяц <> 0 Тогда
врГод = дСтр;
ИначеЕсли врГод <> 0 и врМесяц <> 0 Тогда
врДень = дСтр;
ИначеЕсли врГод <> 0 или врДень <> 0 Тогда
врМесяц = дСтр;
КонецЕсли;
Если дСтр/100>1 Тогда
врГод = дСтр;
КонецЕсли;
Если врГод = 0 и врДень = 0 Тогда
врДень = дСтр;
КонецЕсли;
КонецЦикла;
врЧас = 0;
врМин = 0;
врСек = 0;
Для Каждого вСтр из МассивВремени Цикл
Если врЧас = 0 Тогда
врЧас = вСтр;
ИначеЕсли врМин = 0 Тогда
врМин = вСтр;
ИначеЕсли врСек = 0 Тогда
врСек = вСтр;
КонецЕсли;
КонецЦикла;
Если врГод = 0 или врГод > 9999 Тогда
врГод = 1;
ИначеЕсли врГод/100<1 Тогда
врГод = врГод + 2000;
КонецЕсли;
Если врМесяц = 0 или врМесяц>12 Тогда
врМесяц = 1;
КонецЕсли;
Если врДень = 0 или врДень>31 Тогда
врДень = 1;
КонецЕсли;
Если врЧас>23 Тогда
врЧас = 0;
КонецЕсли;
Если врМин>59 Тогда
врМин = 0;
КонецЕсли;
Если врСек>59 Тогда
врСек = 0;
КонецЕсли;
Возврат Дата(врГод,врМесяц,врДень,врЧас,врМин,врСек);
КонецФункции
Показать
(4)
Спасибо всем кто откликнулся. Вот код при помощи которого получаю данные из файла.
Спасибо всем кто откликнулся. Вот код при помощи которого получаю данные из файла.
Процедура ПрочитатьФайл_XLS_НаСервере()
ТабДок = Новый ТабличныйДокумент;
Попытка
ТабДок.Прочитать(Объект.ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось прочитать указанный файл по причине: " + ОписаниеОшибки();
Сообщение.Сообщить();
Возврат;
КонецПопытки;
КоличествоСтрок = ТабДок.ВысотаТаблицы;
Для НомерСтроки = 2 По КоличествоСтрок Цикл
СтрокаДанных = Объект.ДанныеФайла.Добавить();
СтрокаДанных.Дата = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 1).ТекущаяОбласть.Текст;
СтрокаДанных.НомерТТН = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 2).ТекущаяОбласть.Текст;
СтрокаДанных.Сумма = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 3).ТекущаяОбласть.Текст;
КонецЦикла;
КонецПроцедуры // ПрочитатьФайл_XLS_НаСервере()
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот