Выгрузка в exсel УТ из формы отчёта

1. SantiouS 08.09.21 15:51 Сейчас в теме
С помощью СКД формируется отчёт, который содержит в себе столбец "номер документа". Данный номер начинается с нуля (например, 0091267"). После выгрузки отчёта в exel стандартным функционалом 1c8 получается Exel файл, причём, ячейкам с числами, начинающимся с нуля, присваивается "странный формат ячейки" типа "почтовый индекс" или "АФМ". Из за этого визуально в документе Exel всё отлично, но когда нажимаешь на ячейку с таким числом, то на панели формул отображается цифра без нулей, то есть, допустим, в ячейке находится число "0001287", а если выбрать ячейку, то в панели формул будет "1287", так как и в самой ячейке при её раскрытии будет "1287". Как стандартами средствами выгрузить документ в Exel что бы этим ячейкам был присвоен формат ячейки "Текстовый"?
Прикрепленные файлы:
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. user790708 08.09.21 16:13 Сейчас в теме
(1)Формат ячейки в макете, скорее всего не установлен.
Без изменения макета: перед сохранением табличного документа в формате Excel выделите нужные ячейки и задайте желаемый формат
5. SantiouS 08.09.21 16:14 Сейчас в теме
(3) Макета нет в СКД шаблоне.
6. user790708 08.09.21 16:16 Сейчас в теме
(5)Ну вот. Или используйте макет в СКД или программно после компоновки отчета установите форматы ячейки или вручную перед выгрузкой
7. SantiouS 08.09.21 16:18 Сейчас в теме
(6) А как программно установить формат ячеек столбца перед выгрузкой в Exel?
8. user790708 08.09.21 16:23 Сейчас в теме
(7)
https://wiki.programstore.ru/postobrabotka-otcheta-skd/

ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента; 
ПолеТабДок.Область("R4C3").ТипЗначения = ОписаниеТиповДата; //указываем тип, ранее заданный для Даты
ПолеТабДок.Область("R4C3").Значение = ТекущаяДата();
//указываем форматную строку 
//будет выглядеть как "[031120-2315]-", если текущая дата '20-11-2003 23:15:00') 
ПолеТабДок.Область("R4C3").Формат = "ДФ=[ггММдд-ЧЧмм]-";

https://its.1c.ru/db/metod8dev/content/2592/hdoc
Или вот еще попробуйте https://forum.infostart.ru/forum9/topic199632/
9. SantiouS 08.09.21 16:27 Сейчас в теме
(8) Мне нужно перед выгрузкой отчёта сделать свою "обработку" этого табличного документа?
Прикрепленные файлы:
10. user790708 08.09.21 18:12 Сейчас в теме
(9)
Мне нужно перед выгрузкой отчёта сделать свою "обработку" этого табличного документа?

Можно и так
11. SantiouS 09.09.21 07:32 Сейчас в теме
(10) А нельзя как то настроить компоновку СКД что бы после нажатия на "Сформировать" появлялся отчёт, который имел данную колонку с уже форматом "Строка"?
Я пытался сделать в СКД:
"0"+МойНомерДокумента, но всё рано при выгрузке получается "нестандартный формат ячейки".
Если написать:
"А"+МойНомерДокумента, то уже выгружает конечно ячейки с типом "Текст", но мне не нужны символы... Почему в Табличном Документе появляется такой непонятный тип данных столбца?
2. yulyapain 08.09.21 15:58 Сейчас в теме
Лист.Cells(НомерСтроки, НомерКолонки).NumberFormat = "@"
Может быть ещё так прокатит:
Лист.Cells(НомерСтроки, НомерКолонки).Value = "" + ТвоеЧисло
4. SantiouS 08.09.21 16:14 Сейчас в теме
(2) Это делается через COM объект.
Меня интересует стандартная выгрузка. как я помнимаю выгрузка табличного документа в Exel.
12. nomad_irk 76 09.09.21 08:19 Сейчас в теме
(4)Оно и так, вроде, работает корректно.
Обновить Excel до 2016 не вариант?
Прикрепленные файлы:
13. SantiouS 09.09.21 08:33 Сейчас в теме
(12) Выберите ячейку"0000000000001" и посмотрите что написано в строке формул. У меня там нулей нет, а сам формат такой ячейки АФМ.
14. nomad_irk 76 09.09.21 08:36 Сейчас в теме
(13)Я уже поэкспериментировал с другим значением, но все норм.
Прикрепленные файлы:
15. SantiouS 09.09.21 08:38 Сейчас в теме
(14) смотрите:
Прикрепленные файлы:
Пример.xlsx
16. nomad_irk 76 09.09.21 08:40 Сейчас в теме
(15)вы файл уже в Excel сохраняли перед вставкой в сообщение?
дайте "сырой" файл, сформированный 1С.
17. laperuz 47 09.09.21 08:42 Сейчас в теме
(16) Если 2 раза щелкнуть по ячейке и уйти с нее, нули пропадают, тоже проверил
18. nomad_irk 76 09.09.21 08:47 Сейчас в теме
(17)так происходит, потому что по-умолчанию формат ячейки - общий.
если перед двойным кликом сделать формат ячеек "Текстовый", то ничего никуда не пропадает.

1С не умеет "рулить" форматом ячеек при формировании *.XLS(X) нативным способом.

Только через COM можно так делать.
19. SantiouS 09.09.21 08:49 Сейчас в теме
(18) Вот исходник. Помогите что делать :(
Прикрепленные файлы:
1221212121.xlsx
20. nomad_irk 76 09.09.21 08:50 Сейчас в теме
(19)Как видите, все хорошо с номерами, лидирующие нули - на месте.

Примените формат ячеек "Текстовый" ко всей колонке с номерами документов.
Прикрепленные файлы:
22. SantiouS 09.09.21 08:52 Сейчас в теме
(20) Когда применяешь формат "Текстовый" ко всей колонке, то нули пропадают.
21. SantiouS 09.09.21 08:51 Сейчас в теме
(18)
так происходит, потому что по-умолчанию формат ячейки - общий.

У меня не общий формат ячейки. Почему не пойму...
Столбец "номер документа формируется следующим образом в запросе СКД: "ПОДСТРОКА(ВтВсе.НомерСФ, 4, 8)"
23. nomad_irk 76 09.09.21 08:52 Сейчас в теме
(21)У вас версия Excel - 2007, вероятно, в этом проблема.
24. SantiouS 09.09.21 08:53 Сейчас в теме
25. nomad_irk 76 09.09.21 08:54 Сейчас в теме
(24)У вас в (1) скриншоты с Excel 2007.
27. SantiouS 09.09.21 08:55 Сейчас в теме
(25) Это была удалёнка. Сейчас я это смотрю на личном ПК с exel 2016.
29. SantiouS 09.09.21 08:57 Сейчас в теме
(25) Я не пойму почему столбец у меня выгружает не формата "Общий", а какие то "левые форматы".
Вот отчёт СКД:
Прикрепленные файлы:
Тест.erf
31. nomad_irk 76 09.09.21 09:04 Сейчас в теме
(29)Прошу пардону, вижу у себя формат АФМ и такое же поведение при изменении формата на "Текстовый".

Есть предположение, что на машине, где формируется файл, в настройках ОС, локализация не Russian-RU.
32. SantiouS 09.09.21 09:08 Сейчас в теме
(31) Всё верно вроде...
Сделал так как у Вас. Бред. если прописать "00000000001" в запросе, то выгружает общий, а если как я пишу выражение в запросе, то какой то "левый формат". Да блин, почему так то О_о Кто то знает?
Прикрепленные файлы:
33. SantiouS 09.09.21 09:25 Сейчас в теме
(31) если написать вместо "0000000000000001" значение "012345678", то снова будет в Exel ноль пропадать.
34. SantiouS 09.09.21 09:42 Сейчас в теме
(31) Выведите в отчёт значения:
"0123456789123456" в одну колонку, а во вторую "012345678912345".
В первом случае ноль не пропадёт и формат ячейки будет "Общий", а во втором ноль пропадёт, так как формат ячейки будет из разряда других форматов.
Общее правило такое: если в числе 16 и более символов, то ноли не пропадают (0000000000000001 - не пропадут), но если меньше, то ноли исчезают из за формата ячейки. Как бороться не пойму.
Мне нужно именно три ноля перед числом добавить, которое состоит из 5ти цифр, то есть общее кол-во цифр 8-мь.
Может кто подскажет? (Кроме COM-объекта)
35. nomad_irk 76 09.09.21 09:48 Сейчас в теме
(34)Сделал новый отчет. Работает корректно. Подозреваю, проблема в горизонтальном положении.
Прикрепленные файлы:
Тест1.erf
36. SantiouS 09.09.21 10:13 Сейчас в теме
(35) Так всё равно срезает....
Пробовал выгрузить формат "@"+НомерДокумента.
Например, выгрузилось в exel "@0000123". Делаю формат ячейки "Текстовый" - всё ок.
Делаю глобальную замену "@" на пустоту "", после чего пропадает и "@" и ноли. В ячейке остаётся только "123" при чём формат остаётся текстовый.
Что это за магия?)
Прикрепленные файлы:
37. nomad_irk 76 09.09.21 10:25 Сейчас в теме
(36)не срезает. Я не знаю, что это за магия такая.....5-ый уровень - не меньше :)
Прикрепленные файлы:
38. SantiouS 09.09.21 10:36 Сейчас в теме
(37) У Вас зелёная метка возле ячейки, а у меня ее нет. Не пойму почему так то :)
Вы просто нажали на дискету и сохранили ".xlsx" и сразу получили файл в котором в ячейках получились такие значения?
Мой файл вот:
Прикрепленные файлы:
111111.xlsx
39. nomad_irk 76 09.09.21 11:02 Сейчас в теме
(38)да, просто сохранил файл и открыл в Excel.
У меня так же было, пока я не создал новый отчет, но если у вас и в новом отчете так же, то тут насчет причины я уже пасс....
40. SantiouS 09.09.21 11:08 Сейчас в теме
(39) А что значит новый отчёт?
41. nomad_irk 76 09.09.21 11:24 Сейчас в теме
(40)я приложил отчет в (35). Он создан с нуля мной.
42. SantiouS 09.09.21 11:27 Сейчас в теме
(41) Формирую Ваш отчёт. Получил такое в двух разных версиях Exel:
ПС: не помогло :) Я не пойму, остаётся получается только через COM-объект делать.
Прикрепленные файлы:
43. nomad_irk 76 09.09.21 11:27 Сейчас в теме
(42)видимо, да :)
барабашка :)
44. SantiouS 09.09.21 12:55 Сейчас в теме
(43) Взял без 1с создал Exel документа. написал в ячейке "@0002", а так же установил тип ячейки "Текст".
Дальше запустил функцию екселя массовой замены и заменил "@" на ноль ("0"). В результате в ячейке текстового формата получил вместо ожидаемых "00002" значение "2", но ячейка так и осталась текстового формата.
Не понимаю почему ексель вообще так работает.
45. SantiouS 10.09.21 08:56 Сейчас в теме
(43) Что бы не делать с нуля свою выгрузку, то пришлось написать дополнительную обработку, которая дорабатывала бы файл Exel...

&НаКлиенте
Процедура Обработать(Команда)
	Если Не ЗначениеЗаполнено(ПутьКФайлу) Тогда
		Сообщить("[Ошибка] Выберите файл и повторите попытку!");
		Возврат;
	КонецЕсли; 
	
	Попытка
		Excel = Новый COMОбъект("Excel.Application");
	Исключение
		Возврат;
	КонецПопытки;
	
	Excel.Workbooks.Open(Сокрлп(ПутьКФайлу)); 
	//9 колонка
	//со 2й строки
	НеНайденКонецФайла=Истина;
	НомерСтроки=2;
	Пока НомерСтроки<2000 Цикл
		Если Число((Excel.Cells(НомерСтроки,10).Value))>0 Тогда 
			рез = СтрЗаменить(СокрЛП(Excel.Cells(НомерСтроки,9).Value),Символы.НПП,"");
			Если рез="" Тогда
				НеНайденКонецФайла=Ложь;
				Прервать;
			КонецЕсли; 
			новРер = Прав("000000000" + рез,8);
			Excel.Cells(НомерСтроки,9).NumberFormat = "@";  
			Excel.Cells(НомерСтроки,9).Value = новРер;
		КонецЕсли;
		НомерСтроки=НомерСтроки+1;
	КонецЦикла; 	
	//Excel.DisplayAlerts = 0; Excel.Workbooks.Close(); Excel = 0;    
	Excel.Visible = 1;  
	Сообщить("Файл обработан и открыт для проверки/сохранения в Exel");
КонецПроцедуры

&НаКлиенте
Процедура ВыбратьФайл(Команда)
	ДиалогОткрытие = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	ДиалогОткрытие.МножественныйВыбор=Ложь;
	ДиалогОткрытие.Показать(Новый ОписаниеОповещения("РезультатВыбораФайла",ЭтаФорма));
КонецПроцедуры

&НаКлиенте
Процедура РезультатВыбораФайла(ВыбранныеФайлы,ДополнительныеПараметры) Экспорт
	Если ВыбранныеФайлы=Неопределено Тогда
		Сообщить("[Ошибка] Файл не был выбран. Операция отменена.");
		Возврат;
	КонецЕсли;
	ПутьКФайлу=ВыбранныеФайлы[0];
КонецПроцедуры
Показать
26. SantiouS 09.09.21 08:54 Сейчас в теме
(23) Это из за того что формат ячейки не "Общий" а из раздела "Все форматы". Посмотрите:
Прикрепленные файлы:
28. nomad_irk 76 09.09.21 08:56 Сейчас в теме
(26)Что будет, если удалить формат "0000000" из списка форматов?
30. SantiouS 09.09.21 08:58 Сейчас в теме
(28) Тогда нули пропадают перед числом, а формат ячейки становиться "общий.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот