С помощью СКД формируется отчёт, который содержит в себе столбец "номер документа". Данный номер начинается с нуля (например, 0091267"). После выгрузки отчёта в exel стандартным функционалом 1c8 получается Exel файл, причём, ячейкам с числами, начинающимся с нуля, присваивается "странный формат ячейки" типа "почтовый индекс" или "АФМ". Из за этого визуально в документе Exel всё отлично, но когда нажимаешь на ячейку с таким числом, то на панели формул отображается цифра без нулей, то есть, допустим, в ячейке находится число "0001287", а если выбрать ячейку, то в панели формул будет "1287", так как и в самой ячейке при её раскрытии будет "1287". Как стандартами средствами выгрузить документ в Exel что бы этим ячейкам был присвоен формат ячейки "Текстовый"?
(1)Формат ячейки в макете, скорее всего не установлен.
Без изменения макета: перед сохранением табличного документа в формате Excel выделите нужные ячейки и задайте желаемый формат
(10) А нельзя как то настроить компоновку СКД что бы после нажатия на "Сформировать" появлялся отчёт, который имел данную колонку с уже форматом "Строка"?
Я пытался сделать в СКД:
"0"+МойНомерДокумента, но всё рано при выгрузке получается "нестандартный формат ячейки".
Если написать:
"А"+МойНомерДокумента, то уже выгружает конечно ячейки с типом "Текст", но мне не нужны символы... Почему в Табличном Документе появляется такой непонятный тип данных столбца?
(17)так происходит, потому что по-умолчанию формат ячейки - общий.
если перед двойным кликом сделать формат ячеек "Текстовый", то ничего никуда не пропадает.
1С не умеет "рулить" форматом ячеек при формировании *.XLS(X) нативным способом.
так происходит, потому что по-умолчанию формат ячейки - общий.
У меня не общий формат ячейки. Почему не пойму...
Столбец "номер документа формируется следующим образом в запросе СКД: "ПОДСТРОКА(ВтВсе.НомерСФ, 4, 8)"
(31) Всё верно вроде...
Сделал так как у Вас. Бред. если прописать "00000000001" в запросе, то выгружает общий, а если как я пишу выражение в запросе, то какой то "левый формат". Да блин, почему так то О_о Кто то знает?
(31) Выведите в отчёт значения:
"0123456789123456" в одну колонку, а во вторую "012345678912345".
В первом случае ноль не пропадёт и формат ячейки будет "Общий", а во втором ноль пропадёт, так как формат ячейки будет из разряда других форматов.
Общее правило такое: если в числе 16 и более символов, то ноли не пропадают (0000000000000001 - не пропадут), но если меньше, то ноли исчезают из за формата ячейки. Как бороться не пойму.
Мне нужно именно три ноля перед числом добавить, которое состоит из 5ти цифр, то есть общее кол-во цифр 8-мь.
Может кто подскажет? (Кроме COM-объекта)
(35) Так всё равно срезает....
Пробовал выгрузить формат "@"+НомерДокумента.
Например, выгрузилось в exel "@0000123". Делаю формат ячейки "Текстовый" - всё ок.
Делаю глобальную замену "@" на пустоту "", после чего пропадает и "@" и ноли. В ячейке остаётся только "123" при чём формат остаётся текстовый.
Что это за магия?)
(37) У Вас зелёная метка возле ячейки, а у меня ее нет. Не пойму почему так то :)
Вы просто нажали на дискету и сохранили ".xlsx" и сразу получили файл в котором в ячейках получились такие значения?
Мой файл вот:
(38)да, просто сохранил файл и открыл в Excel.
У меня так же было, пока я не создал новый отчет, но если у вас и в новом отчете так же, то тут насчет причины я уже пасс....
(43) Взял без 1с создал Exel документа. написал в ячейке "@0002", а так же установил тип ячейки "Текст".
Дальше запустил функцию екселя массовой замены и заменил "@" на ноль ("0"). В результате в ячейке текстового формата получил вместо ожидаемых "00002" значение "2", но ячейка так и осталась текстового формата.
Не понимаю почему ексель вообще так работает.
(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];
КонецПроцедуры