Загрузка табличного документа в таблицу значений. Пять строк кода, которые изменили мир

21.05.24

Разработка - Универсальные функции

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

Вот, чтобы никогда не забыть этот код, пишу эту статью.

Вам нужно загрузить что-то (какую-то таблицу с данными) в базу из любого источника и обработать.

Очевидно, что самое простое - это дать пользователю (вы подумали, что выбрать файл, но нет) вставить данные копипастом. Вас больше не волнует, откуда будут вставляться данные: Excel, OpenOffice, GoogleTabs, из другого отчета 1С, а может все колонки будут вставляться из разных мест. Вам совершенно не интересно, в какой последовательности будут колонки, от слова "совсем". Все, что требуется от пользователя - это не менять состав колонок, которые вам потом нужно обработать.

Вы добавляете на форму ТабДок с типом Табличный документ. Не забудьте поставить ему флаг Редактирование. 

А далее идут эти волшебные 5 строк кода

    // загружаем табдок в таблицу значений
	ОбластиТаб = ТабДок.Область(1, 1, ТабДок.ВысотаТаблицы, ТабДок.ШиринаТаблицы);
	//
	Построитель = Новый ПостроительЗапроса;
	Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластиТаб);  
	Построитель.Выполнить();
	
	ТабДанные = Построитель.Результат.Выгрузить();

Вот, собственно, и все.

 

Уже на следующий день после публикации первоначальный код сократился до 3 строк.

Всем большое СПАСИБО!!!

Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());  	
	
ТабДанные = Построитель.Результат.Выгрузить();

 

Кому понравилось, ставим плюс.

Используется на платформе 8.3.23.2040.

 

Если понравилось, то ниже еще несколько моих публикаций:

1. Заказы поставщикам - отчет

2. Отчет с прогнозом на конец месяца

3. Срок выполнения заказа поставщику

4. Выполнение в фоне дополнительной обработки

5. Форма списка Заказы поставщикам с выводом состава

6. Товары на складах по срокам хранения

7. Структура подчиненности деревом

8. Загрузка из Excel (любой таблицы) в ТЧ документа

9. Панель функций

10. Анализ номенклатуры для поддержания запаса на складе

11. Ведомость расчетов с поставщиками расширенная

12. Каждому менеджеру нужен свой Excel

13. N первых плюс все остальные. Отчет, от которого невозможно оторваться

загрузка табличный документ таблица значений

См. также

Монитор заказов Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Абонемент ($m)

Простенький отчет, который считает, сколько дней прошло от даты заказа поставщику до даты Приобретения товаров и услуг в рабочих и календарных днях.

1 стартмани

12.04.2024    740    10    dimanich70    4    

3

Анализ продаж Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Абонемент ($m)

Очень часто, когда мы смотрим какие-то показатели текущего месяца, хочется понимать, на что мы можем рассчитывать к концу месяца, если все пойдет дальше такими же темпами.

1 стартмани

10.04.2024    693    1    dimanich70    0    

2

Универсальные функции Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    3446    3    John_d    11    

57

Универсальные функции Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    8892    atdonya    22    

55

Универсальные функции Программист Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    4830    ke.92@mail.ru    16    

65

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    11808    YA_418728146    7    

158
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Zombee-Nations 21.05.24 10:50 Сейчас в теме
2. leosoft 166 21.05.24 11:17 Сейчас в теме
Спасибо! Только не совсем понятно "не менять состав колонок" - почему нельзя менять?
3. dimanich70 841 21.05.24 11:49 Сейчас в теме
(2)Имеется ввиду, что если вы дальше пишите код, который обрабатывает таблицу значений, то состав колонок для вас важен.
5. Vlan 36 21.05.24 11:58 Сейчас в теме
(3) Видел вариант, когда тут же на форме для ключевых реквизитов можно проставить номер колонки. Тогда все становится более универсальным.
4. starik-2005 3062 21.05.24 11:56 Сейчас в теме
А зачем первая строка? Почему нельзя просто:
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок); 
?
8. dimanich70 841 21.05.24 12:26 Сейчас в теме
(4)Не пробовал. А сработает?
9. dimanich70 841 21.05.24 12:29 Сейчас в теме
(4)Нужна область
Прикрепленные файлы:
11. SerVer1C 785 21.05.24 12:44 Сейчас в теме
(4)
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());

вот так сработает и загрузит только те колонки, у которых в 1-й строке есть наименования.
RustIG; Bukaska; starik-2005; +3 Ответить
34. dimanich70 841 21.05.24 17:54 Сейчас в теме
(11)Спасибо. Добавил в статью вариант с 3 строчками кода.
51. RustIG 1721 21.05.24 21:26 Сейчас в теме
(11)

вот так сработает и загрузит только те колонки, у которых в 1-й строке есть наименования.

проверил - именно так и работает, как вы написали.
без наименований в первой строке - не работает!
Fallen207; +1 Ответить
6. Re:аниматор 338 21.05.24 12:13 Сейчас в теме
(4) ИМХО Заголовки столбцов. Для удобства копипаста в нужные столбцы
7. dimanich70 841 21.05.24 12:26 Сейчас в теме
10. SerVer1C 785 21.05.24 12:42 Сейчас в теме
М-Да. Инфостарт уже не тот.
crismar24; Opiumforme; d4rkmesa; Dach; RocKeR_13; siamagic; pm74; bakmistoff1977; qwinter; AlexeyPapanov; EvgeniyOlxovskiy; webester; Sakuraso; ZOMI; dendzu; headMade; +16 5 Ответить
12. ZOMI 456 21.05.24 13:03 Сейчас в теме
(10) автор с этой публикацией доклад на ИС сделает. А чего добились мы ?
vakham; serezh1a; andrey_sag; +3 Ответить
13. webester 26 21.05.24 13:38 Сейчас в теме
(12)Мне кажется автор просто прикалывается)
serezh1a; nightowl5; shard; anosin; +4 Ответить
18. starik-2005 3062 21.05.24 14:14 Сейчас в теме
(10) Да испокон веков на ИС статьи уровня 2+2 набирали больше плюсов, чем статьи уровня fx/dx.
skif-m; lmm; Oleg_nsk; headMade; pm74; +5 Ответить
27. dimanich70 841 21.05.24 15:16 Сейчас в теме
(18)
уровня fx/dx

высокий уровень почти всегда имеет специфику, которая почти никому не подходит, отсюда такой результат и имеем
Petr54-ru; +1 Ответить
33. quazare 3735 21.05.24 17:53 Сейчас в теме
(18) ты свой рейтинг на статьях 2+2 набрал? Или как?
40. starik-2005 3062 21.05.24 18:25 Сейчас в теме
(33) В основном - да))) Я периодически смотрю количество просмотров, так самая просматриваемая - это про 2+2...

Таблицы на управляемых формах: создание, расширение, управление.
Работа с интерфейсом Управляемые формы Бесплатно (free)

Как вывести результат запроса в таблицу на управляемую форму, ведь здесь нет метода "СоздатьКолонки()"? Как добавить поле ввода в табличную часть документа, если нет желания менять документ? Разбираемся...
Просмотров: 128 840
Yashazz:Я фигею. Стопицотая публикация на тему, которую можно уже смотреть в БСП и таскать оттуда; которую давно разжевали в методичках и на куче ресурсов. Нет, ажиотаж зашкаливает... неужели столько новичков, которые эти азы не знают?
82. biimmap 1989 24.05.24 16:45 Сейчас в теме
(18) у меня только одна такая статья https://infostart.ru/1c/articles/1920660/

Остальные все по-чесноку)
14. webester 26 21.05.24 13:42 Сейчас в теме
Ждем след публикацию где автор загрузил ТЗ или результат запроса в построитель отчета и получил табличный документ. И такой вау! Еще 5 строк которые опять изменили мир, что ты будешь делать, меняется этот мир все время, как не откроешь конфигуратор.
ixijixi; headMade; Dach; Arsa707; siamagic; pm74; qwinter; Xershi; kauksi; AlexeyPapanov; EvgeniyOlxovskiy; ZOMI; +12 Ответить
15. dimanich70 841 21.05.24 14:08 Сейчас в теме
(14) Я вот считаю, что все ставит на свои места рейтинг публикации. Его не купишь. И если публикацию плюсуют - значит кому-то она помогла. А если у публикации рейтинг 4, то значит не очень она хороша.
26. Xershi 1508 21.05.24 15:09 Сейчас в теме
(15) ну тут скорее специфика узкая, а спецы скупые на плюсы, а тут чисто поржать, но не все даже в курсе фичи.
Когда молод зелен был, то не знал про это. А так давно известная вещь.
28. dimanich70 841 21.05.24 15:17 Сейчас в теме
78. kembrik 10 23.05.24 13:22 Сейчас в теме
(14) Мир он завоюет если научит этот табдок без отступов формировать, убирая пустую колонку и строки САМЫМ КРАСИВЫМ СПОСОБОМ)
Артано; +1 Ответить
16. пользователь 21.05.24 14:11
Сообщение было скрыто модератором.
...
17. пользователь 21.05.24 14:14
Сообщение было скрыто модератором.
...
19. пользователь 21.05.24 14:27
Сообщение было скрыто модератором.
...
23. dimanich70 841 21.05.24 14:48 Сейчас в теме
(19)
помойку

Ребят, но почему вы думаете, что вам решать-то? Да, и поиск в ИС никто не отменял.
20. webester 26 21.05.24 14:35 Сейчас в теме
(17)Я надеюсь мы общаемся без негатива. Все сказанное моя субъективная оценка и может не совпадать с вашей и ничего страшного в этом нет. Мне кажутся вредными статьи такого плана. Потому, что они строятся по типу: "Вот вам заклинание, скажите ахалай махалай и будет вас счастье". Пользы от них не очень много. Да, решается локальная задача, но как то это крайне тупо, на каждую локальную задачу писать статью. Раз уж так впечатлил построитель, ну сделайте еще шажок то уж ну? Добавьте загрузку из экселя, с файла на диске и на форме через построитель, опишите примеры, как работает, расскажите, что первой строкой обязательно должны быть имена колонок иначе есть риск получить ошибку. Расскажите про области при загрузке данных из эксель. Можно и построитель отчета добавить тогда уж, для красоты, если есть время и желание. Есть место для творчества же? Необязательно прям все запихнуть вышеперечисленное, просто если собрался о чем поведать миру, то пусть это будет. что-то красивое, нужное большому количеству людей и грамотно оформленное. Ну не твиттер же и не тикток тут. Для публикации кусочков кода, есть пастебины. Это не указания ни в коем случае и не упрек. Просто пожелание. А количество плюсиков, тут статья про галку в винраре набрала почти 40штук, че уж там равняться...
zqzq; svbel85; ZOMI; +3 2 Ответить
21. dimanich70 841 21.05.24 14:45 Сейчас в теме
(20)
Все сказанное моя субъективная оценка и может не совпадать с вашей и ничего страшного в этом нет.

Стараюсь обращать внимание на то, что полезно для меня. Не понравилось, - прохожу мимо.
И пусть каждый сам решает, что для него нужное и красивое.
24. пользователь 21.05.24 15:02
Сообщение было скрыто модератором.
...
75. nemec 18 22.05.24 23:24 Сейчас в теме
(20) а потом ещё один шажок - обнаружь и напиши, что если в экселе вдруг больше одного листа - то метод с построителем разваливается полностью))
76. webester 26 23.05.24 05:34 Сейчас в теме
(75) Ничего не разваливается, просто чуть больше кода нужно. Листы хранятся в отдельных областях. Так даже лучше. Бывает удобно, если например пользователь указывает на каком листе данные или ему нужно дать выбор.
84. kuzyara 2059 11.06.24 07:42 Сейчас в теме
(76) вы правы, это действительно не статья, но такие публикации тоже нужны.

Не ругайте их, ибо они являются дополнительной документацией которой порой так не хватает в синтаксис-помощнике.

Простые problem-solving куски кода, которые можно скопипастить как из stackoverflow
22. RustIG 1721 21.05.24 14:47 Сейчас в теме
Тип ТабДок - это внутренний формат 1С. Для меня это важное замечание.

Если мы его получили, то можно непосредственно с ним и работать, продолжать работу с ним, например так, как описано в моих публикациях Загрузка номенклатуры из эксель

То есть, как бы не нужно его переводить в запрос, а дальше в ТаблицуЗначений.
В моей практике, мы получаем ТабДок либо для получения заранее известных настроек, просто используем их.
Либо получаем печатную форму - и заполняем ее, выводим на экран.
Либо используем как промежуточное звено - например здесь АВС анализ на управляемых формах

Формат Табличного Документа - очень распространенный формат в задачах.

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

Прошу сообщество помочь - сделать глобальный поиск - каждый в своей типовой и нетиповой конфе.

К слову сказать, ПостроительЗапроса использует в качестве Источника либо ТаблицуЗначений , либо Запрос - поиск сделал по УТ 10.3, которая у меня сейчас открыта была.
79. kembrik 10 23.05.24 13:28 Сейчас в теме
(22) получать из табдок таблицу значений очень частая задача у контентщиков например, когда в табдок на форме копипастом вставляется содержимое буфера экселевского файла, и дальше поехали грузить в справочник. Используется нечто похожее в "Универсальной загрузке из таблицы" во многих конфигурациях, например в УНФ.
25. RustIG 1721 21.05.24 15:09 Сейчас в теме
Продолжу свое исследование...
Я с ПостроителемЗапроса не работал.
Возможно на управляемых формах этот построитель уже стал атавизмом. Поскольку есть СКД.

Зато работал и часто использовал в УТ 10.3 (которая на обычных формах) - ПостроительОтчета:
                ПеребираемыеДанные = Новый ПостроительОтчета;
		ПеребираемыеДанные.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДокументСписок);
		Выборка = ПеребираемыеДанные.Результат.Выбрать();
		ПечатьРеестра(Выборка);


ДокументСписок - здесь динамический список документов реализаций.

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

Судя потому, что в справке не указан в качестве ИстоникаДанных - динамический список, то возможно это считается недокументированной возможностью.

Проверил на платформе 1С:Предприятие 8.3 (8.3.23.1865) - реестр реализаций работает, а в справке информации нет.

Прошу сообщество проверить - можно ли использовать динамический список документов в ПостроителеЗапроса - для получения таблицы значений. Если можно, тогда ПостроительЗапроса также содержит недокументированную возможность.

А так, в целом, возвращаясь к теме публикации - получаем из ТабДока область, далее ее используем в запросе, и получаем ТЗ - вопрос применимости остается открытым для меня: м.б. ДеревоЗначений - сохранить в макет - сохранить макет в ТабДок как внешний - передать в другую базу - в другой базе - легко конвертировать макет в ДеревоЗначений.
29. shard 281 21.05.24 15:56 Сейчас в теме
А хотите задачку, которую лично мне решить не удалось при таком подходе создания таблицы значений? =) Сделайте чтобы известная нам колонка табличного документа, содержащая исключительно числа, выгружалась в колонку таблицы значений содержащую числа, а не строки.
35. RustIG 1721 21.05.24 18:01 Сейчас в теме
(29)
ТЗ_1 = Новый ТаблицаЗначений;
	ТЗ_1.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
	
	ТЗ_2 = Новый ТаблицаЗначений;
	ТЗ_2.Колонки.Добавить("Сумма"); //по умолчанию Тип = Строка
	
	ТЗ_2.Добавить().Сумма = "123"; //зададим начальные данные
	ТЗ_1.Добавить(); //кол-во строк в таблицах значений д.б. одинаковыми
	
	Мас = ТЗ_2.ВыгрузитьКолонку("Сумма");
	ТЗ_1.ЗагрузитьКолонку(Мас, "Сумма"); //автоматическая конвертация строки в число
	
	Сообщить("Готово, Shard!");	

Показать
Прикрепленные файлы:
36. RustIG 1721 21.05.24 18:03 Сейчас в теме
(29) задача в общем случае решается именно так - надо заранее задать тип каждой колонки - это не только могут быть числовые значения, но и любой тип (пока кроме смешанного - смешанный тип не проверял)
37. qwinter 682 21.05.24 18:04 Сейчас в теме
(29) Да уж. Казалось бы программисты должны становиться все лучше и лучше, а похоже скоро написание "Привет Мир!" начнет вызывать проблему...

ТабДок.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);
41. RustIG 1721 21.05.24 18:28 Сейчас в теме
(37) а если табличный документ формата mxl ?
43. qwinter 682 21.05.24 18:45 Сейчас в теме
45. RustIG 1721 21.05.24 19:13 Сейчас в теме
(43) в mxl все значения строковые.
47. qwinter 682 21.05.24 19:58 Сейчас в теме
(45) Вы же шутите? ну скажите, что вы шутите. Пожалуйста...
Область = ТабДок.Область(1,1,1,1);
Область.СодержитЗначение = Истина;
Область.ТипЗначения = Новый ОписаниеТипов("Число");
48. RustIG 1721 21.05.24 20:30 Сейчас в теме
(47) динамический список документов - выгрузить список, сохранить в макет табличного документа. Я всегда считал, что формируемый mxl содержит только строковые значения. Я ошибаюсь?
К слову сказать вашу конструкцию можно использовать при сохранении в эксель. А вот будут ли сохранены типы значений при сохранении в формат mxl - всегда думал , что будут сохранены строковые значения. Я ошибаюсь?
Все это легко проверить через отладчик. Просто не сталкивался с подобным.
В общем, я не шучу, просто у нас разный опыт.
49. qwinter 682 21.05.24 20:50 Сейчас в теме
(48) По умолчанию да, везде строки. Но при необходимости можно и значения выводить. Меня всегда расстраивает что в СКД нельзя сделать вывод в значения, но я для себя уже написал функции где при программном выводе просто набиваешь колонки и текст в табличном документе в этих колонках преобразуется в значения.

А вот будут ли сохранены типы значений при сохранении в формат mxl - всегда думал , что будут сохранены строковые значения. Я ошибаюсь?
Ошибаетесь. Будут сохранены значения.
50. RustIG 1721 21.05.24 21:16 Сейчас в теме
(49) 1) проверил - при программной установке свойства СодержитЗначение = Истина можно указать 4 типа: число, строка, дата, булево. При сохранении в mxl - будут сохранены значения. Ладно, с этим понятно. Это может пригодиться.

Но в целом, чаще прилетают mxl разнородные - и заранее надо знать содержат они числовые значения, или проверять каждую ячейку.

А если мы из эксель загружаем значения? Будут ли загружаться в табличный документ со свойством СодержитЗначения = Истина, в числовом формате? Вот для такой конструкции:
ТабДок.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);


2) Динамич. список реализаций сохранил в mxl - сумма документа сохраняется как строка , при этом свойство ячейки СодержитЗначения = Ложь.
С этим тоже ясно - проверено, нет вопросов.
64. qwinter 682 22.05.24 10:31 Сейчас в теме
(50) Вы заблуждаетесь. Тип для значения можно указать любой. Вот пример для УТ11.
Прикрепленные файлы:
ЗначенияВТабличномДокументе.epf
54. RustIG 1721 21.05.24 21:52 Сейчас в теме
(47)
Область = ТабДок.Область(1,1,1,1);
Область.СодержитЗначение = Истина;
Область.ТипЗначения = Новый ОписаниеТипов("Число");


Вот этот код не срабатывает!

вот тестовый пример:
Процедура КнопкаВыполнитьНажатие(Кнопка) 
	
	Макет = ПолучитьМакет("Макет1");
	Область = Макет.Область(1, 1, 2, 1); //в ячейке 1
	
	Построитель = Новый ПостроительЗапроса;  
	Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Область);  
	
	ТЗ = Построитель.Результат.Выгрузить();  //результат = 1
	
	Область2 = Макет.Область(2, 1, 2, 1);
	Область2.СодержитЗначение = Истина; 
	Область2.ТипЗначения = Новый ОписаниеТипов("Число");
	Область2.Значение = 2;
	Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Область);  
	
	ТЗ = Построитель.Результат.Выгрузить(); //результат 2, но тип Строка
	
КонецПроцедуры

Показать


Значение в ячейке меняется, но в ТЗ попадает строковое значение "2", а не число.
В чем проблема?
Прикрепленные файлы:
ТестМакетов.epf
57. shard 281 22.05.24 01:16 Сейчас в теме
(54) вот именно: при явном указании содержимого как в (47) - не работает и оставляет именно строкой. Платформа 8.3.22.1750 если что. В чем проблема - смогут ответить только те, кто знает как этот метод работает изнутри, имхо. Можно даже обобщить утверждение: на выходе результирующей таблицы значений тип значения колонок всегда строковый.
Пожалуй прикреплю пример чтения макета для УФ
Прикрепленные файлы:
тест чтения макета построителем УФ.epf
61. qwinter 682 22.05.24 09:50 Сейчас в теме
(57) Все прекрасно работает)
Прикрепленные файлы:
тест чтения макета построителем УФ(1).epf
62. shard 281 22.05.24 10:05 Сейчас в теме
(61) макет только выглядит весьма странно и значения в ячейках вручную не меняются. А при сбросе флажка "содержит значение" содержимое очищается.
63. qwinter 682 22.05.24 10:11 Сейчас в теме
(62)
значения в ячейках вручную не меняются
Ограничение конфигуратора. В пользовательском виде все отлично меняется.
Прикрепленные файлы:
тест чтения макета построителем УФ(1).epf
67. shard 281 22.05.24 11:39 Сейчас в теме
(63) Благодарю, добрый человек! Редактировать табличный документ макета через предприятие не догадался. Вот об этой фиче отдельную статью можно писать точно. Или включить в эту.
80. kembrik 10 23.05.24 13:33 Сейчас в теме
(67) В табличном документе можно делать всякое интересное, например делать полноценный выбор из списка, в том числе и ссылочные типы, рисовать нажимаемые кнопки и делать красивую форму документа с шапкой и полноценной ТЧ куда можно даже добавлять строки и взаимодействие.
46. RustIG 1721 21.05.24 19:14 Сейчас в теме
(43)например, вы смотрите таблицу в отчете пдф, в таблице цифры, вы понимаете , что это числа, но формат записи в пдф строковый.
30. qwinter 682 21.05.24 16:32 Сейчас в теме
Зануда on:
Тут целая лишняя строка кода. Автору минус за не понимание сути и обучению глупости.
Построитель.Выполнить();
RustIG; dimanich70; ZOMI; +3 Ответить
32. dimanich70 841 21.05.24 17:41 Сейчас в теме
(30)
Тут целая лишняя строка кода.

Спасибо. Добавил в статью вариант с 3 строчками кода.
39. RustIG 1721 21.05.24 18:18 Сейчас в теме
(32) если ИсточникДанных изменится, то у вас Результат не изменится.
Судя по справке, первый ваш вариант более правильный - Процедура Выполнить() лишь выставляет признак того, что при получении Результата надо обновить данные из ИсточникаДанных.
Я сужу только по справке - не проверял и не тестил. Вопрос открыт.
38. RustIG 1721 21.05.24 18:10 Сейчас в теме
(30) вот как об этом можно узнать? спецкурсы пройти? или отладчиком?
в справке, к примеру написано скудно - прикладываю скрины.

очень много инфы на ИТС https://its.1c.ru/db/metod8dev#content:2240:hdoc:_top:построитель%20запроса

к примеру, что Источником может быть объект:

ТаблицаЗначений,
РезультатЗапроса,
ОбластьЯчеекТабличногоДокумента,
Табличная часть,
РегистрНакопленияНаборЗаписей,
РегистрСведенийНаборЗаписей,
РегистрБухгалтерииНаборЗаписей,
РегистрРасчетаНаборЗаписей.

Для того чтобы построитель отчета выводил отчет для произвольного источника данных, достаточно установить описание источника данных в свойство построителя ИсточникДанных.

Вообще на ИТС написано в чем разница Построителей: запроса и отчета., какие нюансы есть пр использовании оных.

И что пример использования построителя отчета с произвольным источником данных можно найти в универсальной обработке "Консоль анализа журнала регистрации".
Прикрепленные файлы:
42. qwinter 682 21.05.24 18:43 Сейчас в теме
(38) Выполнить() предназначен для выполнения запроса к базе данных. Мы выполняем запрос к базе данных? Нет.
При изменении источника данных результат изменится, потому что преобразование из исходных данных в данные запроса происходит при создании описания источника данных, что на мой взгляд понятно из его названия.

Здравый смысл наше все)
52. RustIG 1721 21.05.24 21:40 Сейчас в теме
(30) проверил код - работает без процедуры Выполнить()
Процедура КнопкаВыполнитьНажатие(Кнопка) 
	
	Построитель = Новый ПостроительЗапроса;
	
	Макет = ПолучитьМакет("Макет1");
	Область = Макет.Область(1, 1, 2, 2); //в ячейке 1
	
	Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Область);  
	//Построитель.Выполнить();
	
	ТЗ = Построитель.Результат.Выгрузить(); //результат = 1
	
	
	Макет = ПолучитьМакет("Макет2");
	Область = Макет.Область(1, 1, 2, 2); //в ячейке 2
	Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Область);  
	//Построитель.Выполнить();
	
	ТЗ = Построитель.Результат.Выгрузить(); //результат = 2
	
КонецПроцедуры

Показать
31. quazare 3735 21.05.24 17:11 Сейчас в теме
Я так понимаю, что обычный люд опасается всяких построителей…

У меня где-то был некий отчет (обработка), где я строю в макете скд запросом - некий готовый «набор данных»

А затем, использую этот набор данных в своих целях - в качестве таблицы или дерева

Где-то примерчик на канале был….
44. RustIG 1721 21.05.24 19:12 Сейчас в теме
(42) судя по справке , нет. Я скрины приложил.
Преобразование не происходит в момент описания. Судя по справке. Ладно, я позже отладчиком пройдусь. Я думал, что вы сами отладчиком проверили.
53. dimanich70 841 21.05.24 21:47 Сейчас в теме
Да, а говорили тема не очень. Не ожидал такого отклика. Спасибо, всем.
55. starik-2005 3062 21.05.24 22:29 Сейчас в теме
(53)
Не ожидал такого отклика.
Да все угорают просто )))
biimmap; d4rkmesa; qwinter; shard; +4 Ответить
56. dimanich70 841 21.05.24 23:00 Сейчас в теме
58. muskul 22.05.24 04:08 Сейчас в теме
Классно и полезно что бы тут кто не говорил.
60. пользователь 22.05.24 07:55
Сообщение было скрыто модератором.
...
59. пользователь 22.05.24 07:55
Сообщение было скрыто модератором.
...
65. spyke 143 22.05.24 10:50 Сейчас в теме
(53) На самом деле эта тема была описана в далеком 2017 году
https://infostart.ru/1c/tools/714988/
И так же было описано но для УФ за неделю до вашего поста
https://infostart.ru/1c/tools/2106068/
RustIG; RocKeR_13; +2 Ответить
71. RocKeR_13 1345 22.05.24 13:23 Сейчас в теме
(65) И еще вот тут было: https://infostart.ru/1c/tools/1411881/

И вот каждый раз кучу плюсов набирают... По кругу ходим, товарищи: забыли - вспомнили - плюсанули)))
RustIG; spyke; +2 Ответить
66. biimmap 1989 22.05.24 11:01 Сейчас в теме
Не сочтите за хейтерство... !!!

Но я тогда могу свою публикацию https://infostart.ru/1c/tools/2068196/
раздербанить штук на 20. Ибо эти "волшебные" строки где-то там используются.

Ещё больше удивляет реакция сообщества (цифровые показатели статьи)... Как говорится, победителей не судят)))
d4rkmesa; +1 Ответить
70. dimanich70 841 22.05.24 13:04 Сейчас в теме
(66)Да, твою статью надо под пивко с рыбкой читать.
68. JOJ73 22.05.24 11:57 Сейчас в теме
В случае если первая строка табличной части заполнена данными, а не названием колонок, то
для корректного отображения имен колонок в итоговой таблице значений рекомендую добавить строку в табличную часть, пример для загрузки из файла Excel:

ТабДок= Новый ТабличныйДокумент;
	
ТабДок.Прочитать(<Файл>);
	
ТабДок.ВставитьОбласть(ТабДок.Область("R1"), 
                                            ТабДок.Область("R2"),ТипСмещенияТабличногоДокумента.ПоГоризонтали);
	
ТабДок.Область(1, 1).Текст = "ИмяКолонки1";
ТабДок.Область(1, 2).Текст = "ИмяКолонки2";
...

Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());  
ТабДанные = Построитель.Результат.Выгрузить();
....
Показать


А вообще согласен с 22 , зачем выгружать в ТЗ , если уже есть ровно такая же структура.
69. axelerleo 343 22.05.24 12:27 Сейчас в теме
Не люблю черные ящики. А чтение ТабДока построителем - именно черный ящик, на который мало как можно повлиять.
Например, попробуйте указанным подходом прочитать вот такую табличку:

колонка 1 2_колонка 3_колонка
дата строка число
01.01.2024 01_01 1

так что в любом случае без предварительной нормализации данных к какому-то стандарту или без постобработки зачастую не обойтись.
73. biimmap 1989 22.05.24 18:53 Сейчас в теме
(69)
Не люблю черные ящики. А чтение ТабДока построителем - именно черный ящик, на


У Вас появился шанс написать статью об этом))) И показать всем класс, как читать Excel. Тема то не раскрыта)))))
dimanich70; spyke; axelerleo; +3 Ответить
74. axelerleo 343 22.05.24 22:32 Сейчас в теме
(73) Да статей на эту тему вагон и маленькая тележка :)
У меня есть статья на сайте, не сочтите за рекламу, там как раз разные варианты рассмотрены, в т.ч. и через построитель
https://1c.alexcode.ru/zagruzka-dannyh-v-1s-iz-excel/
А так-то приходилось такой изврат загружать, врагу не пожелаешь.
например, pdf-файл, распознанный онлайн-сервисом в виде excel, в котором колонки/строки могут быть объединены в очень интересные сочетания, и один лист надо динамически разобрать на несколько ТЗ.
Ну или файл excel, где все таблицы на одном листе, и надо динамически определять их по заголовкам
Или еще вот вспомнил - плоская таблица excel - каталог номенклатуры - а в ней группы и подгруппы выделены цветом, и надо по цветам было разобрать структуру иерархии :)

Не все пользователи и заказчики готовы тратить свое время на нормализацию данных :)
72. kser87 2454 22.05.24 18:23 Сейчас в теме
Класс, можно попробовать
81. le_ 241 24.05.24 10:14 Сейчас в теме
А что будет, когда табличный документ содержит объединенные строки и (или) колонки (ячейки)?
83. starik-2005 3062 24.05.24 17:16 Сейчас в теме
(81)
объединенные строки и (или) колонки
В них продублируется то, что в объединении.
85. igor_1c 18 15.06.24 18:42 Сейчас в теме
внешняя обработка с макетом : таблица две колонки
выдало ошибку , потом выяснилось что нужно указать макет
в итоге полная форма выглядит так

ОбъектОбработки = РеквизитФормыВЗначение("Объект");
 ТабДок = ОбъектОбработки.ПолучитьМакет("Макет");
 
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());  	
	
ТабДанные = Построитель.Результат.Выгрузить();
86. vechiy 35 21.06.24 19:31 Сейчас в теме
А если при "выгрузить" следующая ошибка?
"ожидается выражение "ВЫБРАТЬ""
87. uribur 155 23.07.24 14:08 Сейчас в теме
Старый материал, в новом обличии, но все равно поставлю в избранное , так как приходится постоянно гуглить этот отрезок кода ))
Оставьте свое сообщение