|   |   | 
| 
 | Загрузка из Excel | ☑ | ||
|---|---|---|---|---|
| 0
    
        Масянька 03.08.23✎ 11:42 | 
        День добрый!
 Загрузка из файла Excel. Не выходит каменный цветок... &НаКлиенте Процедура Загрузить(Команда) Если (НЕ ПроверкаКаталога()) Тогда Возврат; КонецЕсли; КолВоСтрок = ФайлВПорядке(); Если (КолВоСтрок > 0) Тогда Файл = Новый Файл(Объект.КаталогСФайлом); Сообщить("! - " + Файл + " / " + Объект.КаталогСФайлом); ДвоичныеДанные = Новый ДвоичныеДанные(Объект.КаталогСФайлом); ЗагрузитьДанные(ДвоичныеДанные, Файл.Расширение); КонецЕсли; ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Загрузка окончена."); КонецПроцедуры &НаСервере Процедура ЗагрузитьДанные(ДвоичныеДанные, Расширение) ФайлEXCELНаСервере = ПолучитьИмяВременногоФайла(Расширение); ДвоичныеДанные.Записать(ФайлEXCELНаСервере); ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.Прочитать(ФайлEXCELНаСервере, СпособЧтенияЗначенийТабличногоДокумента.Текст); УдалитьФайлы(ФайлEXCELНаСервере); //вывод в таблицу значений ПЗ = Новый ПостроительЗапроса; ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область()); ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять; ПЗ.ЗаполнитьНастройки(); ПЗ.Выполнить(); ТаблицаЗначений = ПЗ.Результат.Выгрузить(); Объект.СписокДанных.Загрузить(ТаблицаЗначений); //СоздатьСамДокумент(ДатаДохода, МассивДанных); КонецПроцедуры В табличном документе на форме появляются пустые строки с номерами. Номеров всего 689, а в файле строк 43. Что не так? Спасибо. | |||
| 1
    
        Масянька 03.08.23✎ 11:43 | 
        Сообщалка выводит:
 ! - Файл / D:\1С\_Рабочие базы\ЗУП\СоцПрограмма\Список Голубая бездна.xlsx | |||
| 2
    
        Ногаминебить 03.08.23✎ 11:48 | 
        А ексель нормальный, без извращений? Табличка и ничего лишнего? Я б еще имена столбцов в первой строке задал как Т1,Т2,Т3...     | |||
| 3
    
        Одинист 03.08.23✎ 11:50 | 
        1. Табличный документ попробовать Показать/ таблицу значений вывести через «Сообщить». 
 2. Прочитать данные по строкам/ячейкам. | |||
| 4
    
        Масянька 03.08.23✎ 11:51 | ||||
| 5
    
        Масянька 03.08.23✎ 11:51 | 
        (3) 1. Что показать? Табдок на форме.
 2. Как? | |||
| 6
    
        Одинист 03.08.23✎ 12:00 | 
        (5) 1. Вот этот ТабличныйДокумент = Новый ТабличныйДокумент
 2. Примерно так: ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Текст); мВысотаТабличногоДокумента = ТабДок.ВысотаТаблицы; // Обход строк табличного документа и заполнение таблицы значений Для Строка = 2 По мВысотаТабличногоДокумента Цикл НоваяСтр = ТЗизТабДока.Добавить(); НоваяСтр.Наименование = ПолучитьСодержаниеЯчейки(ТабДок, Строка, 1); НоваяСтр.Код = ПолучитьСодержаниеЯчейки(ТабДок, Строка, 2); КонецЦикла; Функция ПолучитьСодержаниеЯчейки(пТабличныйДокумент, Строка, Колонка) Если Колонка = 0 Тогда Возврат ""; КонецЕсли; мСодержание = пТабличныйДокумент.Область("R" + Формат(Строка,"ЧГ=") + "C" + Формат(Колонка,"ЧГ=")).Текст; Возврат СокрЛП(мСодержание); КонецФункции | |||
| 7
    
        Гипервизор 03.08.23✎ 12:00 | 
        (5) ТабличныйДокумент.Показать(), да и отладка есть.
 И посмотреть, может что-то криво прочиталось. Отсюда и дальше думать, что можно подкрутить. | |||
| 8
    
        Масянька 03.08.23✎ 12:10 | 
        (6) 
 ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.Прочитать(ФайлEXCELНаСервере, СпособЧтенияЗначенийТабличногоДокумента.Текст); мВысотаТабличногоДокумента = ТабличныйДокумент.ВысотаТаблицы; ТЗизТабДока = Новый ТаблицаЗначений; ТЗизТабДока.Колонки.Вставить("Сотрудник"); ТЗизТабДока.Колонки.Вставить("Результат"); // Обход строк табличного документа и заполнение таблицы значений Для Строка = 2 По мВысотаТабличногоДокумента Цикл НоваяСтр = ТЗизТабДока.Добавить(); НоваяСтр.Сотрудник = ПолучитьСодержаниеЯчейки(ТабличныйДокумент, Строка, 1); НоваяСтр.Результат = ПолучитьСодержаниеЯчейки(ТабличныйДокумент, Строка, 2); КонецЦикла; Несоответствие типов (параметр номер '1') {ВнешняяОбработка.ЗагрузкаДоходовВНатуральнойФорме.Форма.Форма.Форма(155)}:ТЗизТабДока.Колонки.Вставить("Сотрудник"); {ВнешняяОбработка.ЗагрузкаДоходовВНатуральнойФорме.Форма.Форма.Форма(131)}:ЗагрузитьДанные(ДвоичныеДанные, Файл.Расширение); по причине: Несоответствие типов (параметр номер '1') | |||
| 9
    
        Гипервизор 03.08.23✎ 12:12 | 
        (8) Почитайте в СП про метод Вставить(). Сначала идёт индекс колонки.     | |||
| 10
    
        Масянька 03.08.23✎ 12:17 | 
        (9) Как скажете, господин 🙂
 мВысотаТабличногоДокумента = ТабличныйДокумент.ВысотаТаблицы; ТЗизТабДока = Новый ТаблицаЗначений; ТЗизТабДока.Колонки.Вставить(1,"Сотрудник"); ТЗизТабДока.Колонки.Вставить(2, "Результат"); // Обход строк табличного документа и заполнение таблицы значений Для Строка = 2 По мВысотаТабличногоДокумента Цикл НоваяСтр = ТЗизТабДока.Добавить(); НоваяСтр.Сотрудник = ПолучитьСодержаниеЯчейки(ТабличныйДокумент, Строка, 1); НоваяСтр.Результат = ПолучитьСодержаниеЯчейки(ТабличныйДокумент, Строка, 2); сообщить("3 - " + НоваяСтр.Сотрудник + " / " + НоваяСтр.Результат); КонецЦикла; Сообщалка выводит значения (то, что в файле) всех строк, а потом еще кучу пустых. На форме (в табличном документе) без изменений - пусто. | |||
| 11
    
        Гипервизор 03.08.23✎ 12:21 | 
        (10) Отсюда не видно, что и куда вы загружаете. Состав и типы совпадают у Объект.СписокДанных и ТЗизТабДока?     | |||
| 12
    
        Масянька 03.08.23✎ 12:26 | 
        (11) Вроде, да.
 мВысотаТабличногоДокумента = ТабличныйДокумент.ВысотаТаблицы; ТЗизТабДока = Новый ТаблицаЗначений; ТЗизТабДока.Колонки.Вставить(1,"Код"); ТЗизТабДока.Колонки.Вставить(2,"Сотрудник"); ТЗизТабДока.Колонки.Вставить(3, "Результат"); // Обход строк табличного документа и заполнение таблицы значений Для Строка = 2 По мВысотаТабличногоДокумента Цикл НоваяСтр = ТЗизТабДока.Добавить(); НоваяСтр.Код = ПолучитьСодержаниеЯчейки(ТабличныйДокумент, Строка, 1); НоваяСтр.Сотрудник = ПолучитьСодержаниеЯчейки(ТабличныйДокумент, Строка, 2); НоваяСтр.Результат = ПолучитьСодержаниеЯчейки(ТабличныйДокумент, Строка, 3); сообщить("3 - " + НоваяСтр.Сотрудник + " / " + НоваяСтр.Результат); КонецЦикла; https://postimg.cc/XXjRk1Gz Первые две - строка, третья - число | |||
| 13
    
        Гипервизор 03.08.23✎ 12:35 | 
        (12) А у вас в ТЗ какого типа колонки? Судя по ПолучитьСодержаниеЯчейки, всегда возвращается строковое значение.     | |||
| 14
    
        Ногаминебить 03.08.23✎ 13:30 | 
        (4) Я не это имел в виду. Картинку содержимого екселя (ну хотя бы верхушку). 
 И выше уже писали - под отладкой смотреть надо. | |||
| 15
    
        Масянька 03.08.23✎ 13:45 | 
        (13) 
 мВысотаТабличногоДокумента = ТабличныйДокумент.ВысотаТаблицы; ТЗизТабДока = Новый ТаблицаЗначений; ТЗизТабДока.Колонки.Вставить(1,"Код", Новый ОписаниеТипов("Строка")); ТЗизТабДока.Колонки.Вставить(2,"Сотрудник", Новый ОписаниеТипов("Строка")); ТЗизТабДока.Колонки.Вставить(3, "Результат", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 2))); // Обход строк табличного документа и заполнение таблицы значений Для Строка = 2 По мВысотаТабличногоДокумента Цикл НоваяСтр = ТЗизТабДока.Добавить(); НоваяСтр.Код = ПолучитьСодержаниеЯчейки(ТабличныйДокумент, Строка, 1); НоваяСтр.Сотрудник = ПолучитьСодержаниеЯчейки(ТабличныйДокумент, Строка, 2); НоваяСтр.Результат = ПолучитьСодержаниеЯчейки(ТабличныйДокумент, Строка, 6); сообщить("3 - " + НоваяСтр.Сотрудник + " / " + НоваяСтр.Результат + " / " + ТипЗнч(НоваяСтр.Сотрудник) + " / " + ТипЗнч(НоваяСтр.Результат)); КонецЦикла; В сообщалке (типы) - строка, число. | |||
| 16
    
        Масянька 03.08.23✎ 13:46 | 
        (14) Отладка у меня не работает (внешняя обработка).
 Верхушка - https://postimg.cc/0zzSHXCf | |||
| 17
    
        arsik гуру 03.08.23✎ 13:47 | 
        (15) Да хватит уже мучать ТЗ. Просто выведи на форму этот табличный документ и посмотри в чем косяк.     | |||
| 18
    
        arsik гуру 03.08.23✎ 13:48 | 
        (17) Ну или просто сохрани в файл и открой.     | |||
| 19
    
        Гипервизор 03.08.23✎ 13:49 | 
        (16) А в чём проблема с отладкой внешней обработки?     | |||
| 20
    
        Масянька 03.08.23✎ 13:56 | 
        (18)     ТабличныйДокумент.Прочитать(ФайлEXCELНаСервере, СпособЧтенияЗначенийТабличногоДокумента.Текст);
 ТабличныйДокумент.Записать("D:\1.mxl"); Нету файла. | |||
| 21
    
        Масянька 03.08.23✎ 13:56 | 
        (19) Не знаю. Не работает и всё.     | |||
| 22
    
        Гипервизор 03.08.23✎ 14:08 | 
        (20) Так код на сервере выполняется, там и ищите.
 (21) Отладка на сервере включена? | |||
| 23
    
        Ногаминебить 03.08.23✎ 14:14 | 
        (16) Это самая верхняя строка? После нее сразу начинаются данные? Лист только один? Убрать фильтры, подвалы и прочее, переименовать все колонки на гарантированно уникальные названия.     | |||
| 24
    
        Масянька 03.08.23✎ 14:17 | 
        (22) Нашла 🙂
 В файле mxl есть данные (как в Excel). Где отладку посмотреть? | |||
| 25
    
        arsik гуру 03.08.23✎ 14:44 | 
        (24) Значит у тебя проблема в процедуре ПолучитьСодержаниеЯчейки()     | |||
| 26
    
        Масянька 03.08.23✎ 14:47 | 
        (23) Лист один. Убрала фильтр, удалила строки после данных = на форме всего 42 строки (как в Excel), но пустые.
 Где инфа? 😣😣😣😣😣😣😣😣😣😣😣😣 | |||
| 27
    
        Масянька 03.08.23✎ 14:49 | 
        + (26) В файле mxl - копия Excel.     | |||
| 28
    
        Масянька 03.08.23✎ 14:58 | 
        Мужики!
 Спасибо! Всё получилось! PS Правда, простейшая операция (загрузка из Excel) превратилась (легким движением руки).... Кстати, можно рекомендовать, как задачу на собеседовании. | |||
| 29
    
        Гипервизор 03.08.23✎ 15:11 | 
        (28) Ни в коем случае не пишите подробности о проблеме. )     | |||
| 30
    
        arsik гуру 03.08.23✎ 15:14 | 
        +(25) Блин только сейчас заметил. Содержание - ??? СодержаниеЯчейки - ???
 Однаэс? | |||
| 31
    
        Масянька 03.08.23✎ 15:39 | 
        (29) Я не делала табличный документ, а сразу в ТЗ и по ТЗ заполнять док-т.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |