Утробин Михаил | Руководитель отдела внедрения 1С | Группа Компаний ЛАД

«Как не надо внедрять 1С:ERP. Развеем мифы о внедрении»

На примере 8-9 советов хочу рассказать о том, как лучше подойти к внедрению ПП 1С у себя на предприятии. МИФ 1: Внедрим и автоматизируем сразу все! МИФ 2: Учет в единой базе - это хорошо! МИФ 3: Лучший внедренец - Программист, по совместительству Администратор МИФ 4: Установим и начнем вести учет, а там разберемся! МИФ 5: Хочу максимальную функциональность ERP! МИФ 6: Лучшее время перехода на новую систему - с 1 января МИФ 7: Ввод в эксплуатацию нам не нужен, так как пользователи прошли обучение, сами разберутся МИФ 8: На поддержке сэкономим. Кто не разберется урежем премию При этом в рассказе могу добавить примеры на реальных кейсах, как это было на наших проектах. К чему привело то или иное решение, как правильно, как неправильно. В целом, при подходе используя метод "как не нужно делать", объясняется, как же все-таки на самом деле нужно внедрять проект. В этом и есть суть доклада.

Работа с Excel из 1С. Не получается программно открыть файл Excel, для редактирования пользователем.

1. Светлый ум 233 21.12.15 08:09 Сейчас в теме
	// 1) Заходим в Excel	
	Excel = Новый COMОбъект("Excel.Application");
	Excel.DisplayAlerts = 0;
	Excel.ScreenUpdating = 0;
	Excel.EnableEvents = 0;    
	Excel.Visible = 0;
	
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xls");
	ДвоичныеДанные = ПолучитьМакет("ШаблонExcel");
	ДвоичныеДанные.Записать(ИмяВременногоФайла);
	Книга = Excel.WorkBooks.Open(ИмяВременногоФайла);
	Лист = Книга.WorkSheets(1);
	
	// 2) Как-то редактируем Excel
	ШапкаОтчетаОбласть = Лист.Range("Шапка");
	ШапкаОтчетаОбласть.Find("<ДатаОтчета>").Value = Строка(Формат(СсылкаНаОбъект.ПолучитьОбъект().Дата, "ДЛФ=ДД"));
	
	// 3) Сохраняем Excel 
	Книга.SaveAs(ИмяВременногоФайла);  
	
	  
	// 4) Открываем Excel, для редактирования пользователем
	
	Excel.ReferenceStyle = 1;		//Стиль ссылок A1
	Excel.EnableEvents=Истина;		//разрешена обработка событий экселем
	Excel.visible=Истина;			//Отобразить файл.
	Excel.DisplayAlerts = Истина;
Показать
Вознаграждение за ответ
Показать полностью
Найденные решения
11. ditp 51 21.12.15 11:00 Сейчас в теме
см. вложение.

немного поменял код, также был косяк с макетом екселя, тоже поправил.
Прикрепленные файлы:
ПФ (внешняя) + Excel шаблон - Версия 3 - для infostart (1).epf
Остальные ответы
Сортировка: Древо
6. 32ops 111 21.12.15 09:36 Сейчас в теме
(1) Непонятное, что-то. Excel.visible=1 попробовать и EnableEvents,DisplayAlerts - убрать совсем - будут ли изменения?
9. Светлый ум 233 21.12.15 10:21 Сейчас в теме
(6)32ops, "Excel.visible=1 попробовать и EnableEvents,DisplayAlerts - убрать совсем"
- Попробовал, не помогло.
12. Светлый ум 233 21.12.15 11:11 Сейчас в теме
Огромное спасибо, итоговый код:
---

мИмяШаблона= "ШаблонРеестр";	
	ФайлОбработки = Новый Файл(ИспользуемоеИмяФайла);
	
	//1) Заходим в Excel	
	Excel = Новый COMОбъект("Excel.Application");
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xlsx");
	ИмяВременногоФайла2 = ПолучитьИмяВременногоФайла("xlsx");
	ДвоичныеДанные = ПолучитьМакет("ШаблонExcel");
	ДвоичныеДанные.Записать(ИмяВременногоФайла);
	Книга = Excel.WorkBooks.Open(ИмяВременногоФайла);
	Лист = Книга.WorkSheets(1);
	
	//2) Как-то редактируем Excel
	ШапкаОтчетаОбласть = Лист.Range("Шапка");
	ШапкаОтчетаОбласть.Find("<ДатаОтчета>").Value = Строка(Формат(СсылкаНаОбъект.ПолучитьОбъект().Дата, "ДЛФ=ДД"));
		
	//3) Сохраняем Excel 
	Книга.SaveAs(ИмяВременногоФайла2);  
	УдалитьФайлы(ИмяВременногоФайла);
	
	// 4) Открываем Excel, для редактирования пользователем
	Excel.Visible	= Истина;
Показать
timeforlive; +1 Ответить
14. alljoke 21.12.15 11:19 Сейчас в теме
Процедура СформироватьПФ_Excel() Экспорт
	
	мИмяШаблона= "ШаблонРеестрПлатежейТНП1";	
	ФайлОбработки = Новый Файл(ИспользуемоеИмяФайла);
	
	//1) Заходим в Excel	
	Excel = Новый COMОбъект("Excel.Application");
	Excel.DisplayAlerts = 0;
	Excel.ScreenUpdating = 0;
	Excel.EnableEvents = 0;    
	Excel.Visible = 0;
	
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xls");
	ДвоичныеДанные = ПолучитьМакет("ШаблонExcel");
	ДвоичныеДанные.Записать(ИмяВременногоФайла);
	Книга = Excel.WorkBooks.Open(ИмяВременногоФайла);
	Лист = Книга.WorkSheets(1);
	
	//2) Как-то редактируем Excel
	ШапкаОтчетаОбласть = Лист.Range("Шапка");
	ШапкаОтчетаОбласть.Find("<ДатаОтчета>").Value = Строка(Формат(СсылкаНаОбъект.ПолучитьОбъект().Дата, "ДЛФ=ДД"));
		
	//3) Сохраняем Excel 
	Книга.SaveAs(ИмяВременногоФайла);  
	//Книга.Close();
		
	//4) Открываем Excel, для редактирования пользователем
	
	Excel.ReferenceStyle = 1;		//Стиль ссылок A1
	//Excel.EnableEvents=Истина;		//разрешена обработка событий экселем
	//Книга.DisplayWorkbookTabs = True;
	
	//Excel.DisplayAlerts = Истина;
	Excel.ScreenUpdating = False;
    Лист.Visible = "xlSheetVisible";
    Excel.ScreenUpdating = True;
	Excel.visible = Истина;			//Отобразить файл.
	//Книга.Close();
   	//Excel.Quit();
	
КонецПроцедуры
Показать


Попробуйте.
Светлый ум; +1 Ответить
2. torch 13 21.12.15 09:04 Сейчас в теме
надо еще закрыть файл:
Excel.Close()
4. Светлый ум 233 21.12.15 09:29 Сейчас в теме
1) Метод объекта не обнаружен (Close)
Excel.Close();

2) Книга.Close() - отработало, но ничего не изменилось.

(2)(3) torch, не взлетело.
3. torch 13 21.12.15 09:05 Сейчас в теме
Если это не прокатит надо
Книга.Close()
5. Светлый ум 233 21.12.15 09:33 Сейчас в теме
Сейчас сделаю и выложу внешнюю обработку для отладки, может так проще подсказать будет. А то уже кучу всего перепробовал - а танцы с бубном всё не помогают.
7. alljoke 21.12.15 09:53 Сейчас в теме
10. Светлый ум 233 21.12.15 10:22 Сейчас в теме
(7)alljoke, Excel.Quit() - эта команда просто закрыла эксель, а мне нужен открытый файл Excel для редактирования.
8. Светлый ум 233 21.12.15 10:19 Сейчас в теме
Выкладываю файл внешней обработке - СсылкаНаОбъект привязана к "Реализации товаров и услуг", т.е. обработка отработает в любой типовой (у меня УПП).
Прикрепленные файлы:
ПФ (внешняя) + Excel шаблон - Версия 3 - для infostart.epf
11. ditp 51 21.12.15 11:00 Сейчас в теме
см. вложение.

немного поменял код, также был косяк с макетом екселя, тоже поправил.
Прикрепленные файлы:
ПФ (внешняя) + Excel шаблон - Версия 3 - для infostart (1).epf
13. Светлый ум 233 21.12.15 11:13 Сейчас в теме
(11) ditp, И если не трудно опишите в чем был косяк в макете?
15. timeforlive 10 21.12.15 11:24 Сейчас в теме
(13) Светлый ум, я оставлял на сайте .epf с исходным кодом по выгрузке из Excel в 1С (в том числе формирование таблицы Excel из 1С):
http://infostart.ru/public/366601/
Вдруг поможет.

Добавлю в своей публикации ссылку на эту тему. Полезно и лаконично.
Светлый ум; +1 Ответить
17. Светлый ум 233 21.12.15 13:04 Сейчас в теме
(15) timeforlive, да действительно интересная и хорошо оформленная статья, от себя выложил пару плюшек по работе с Excel - продублирую здесь:

//### Примеры работы с Excel ячейками ###

//1) Стандартное форматирование числа
// mSheet.Cells(row,i).Value=Формат(стр[мИмя],"ЧДЦ=2; ЧН=; ЧГ=0");

//2) Стандартное форматирование даты
// ШапкаОтчета.Find("<ДатаОтчета>").Value = Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy");

//3)Программная установка формул в ячейку - Excel в 1с.
а) Например, нужно посчитать сумму в столбце 8 в той же строке из столбца 1+ столбца 2.
СтрокаСФормулой = "=RC[-7]+ RC[-6]";
Лист.Cells(НомерСтроки,НомерКолонки).Formula = СтрокаСФормулой.
---------------------
б) Считаем итого по строкам:
//Шаблон формулы: "=SUM(F13:F14)";
СтрокаСФормулойИтогоОстатки = "=SUM(F" + Строка(НомерИсходнойСтрокиОстаткиОборотыExcel) +
":F" + Строка(НомерСтрокиОстаткиОборотыДляФормулы) + ")";

ТекСтрокаПодвалИтогоОстаток.Value = СтрокаСФормулойИтогоОстатки;
16. ditp 51 21.12.15 11:34 Сейчас в теме
(13) Светлый ум, насчет формата:

Я попробовал ваш макет из обработки выгрузить с расширением xls и открыть в экселе, получил ошибку формата.
Перепаковал файл, переименовал в xlsx, при попытке открытия получил опять несоответствие формата, но файл открылся.
При попытке пересохранения файла ексель предложил считать его шаблоном (xltx).
И только когда принудительно записал как xlsx, файло стало открываться без лишних вопросов.
Светлый ум; +1 Ответить
18. babys 82 07.12.17 15:07 Сейчас в теме
Подниму ветку.
А без создания временно файла никак?
19. Интерес 15.05.18 17:29 Сейчас в теме
Книга = Excel.WorkBooks.Open(ИмяФайла,,Ложь);
может это поможет
Оставьте свое сообщение
Все разделы

Вакансии


Программист 1С
Москва
зарплата от 100 000 руб. до 200 000 руб.
Полный день

Преподаватель 1С
Санкт-Петербург
Полный день

Удаленный ИТ-журналист
Санкт-Петербург
По совместительству

Программист 1С
Санкт-Петербург
зарплата от 80 000 руб. до 150 000 руб.
Полный день