Русаков Григорий | Директор | Аналитика. Проекты и решения

«Как создавать, продвигать приложение и конкурировать с фирмой 1С на протяжении 11 лет»

Рассказ о том, как с 2007 года мне (как директору и основному разработчику) удается продвигать на рынок отраслевое решение на базе «1С:Предприятие 8», как конкурировать с самой фирмой «1С», принимать не стандартные решения и продолжать продавать продукт. Речь пойдет о системе электронного документооборота СЭД «Корпоративный документооборот», имеющей тысячи пользователей. Основные тезисы выступления: 1. Риск выхода на пустой рынок в 2007 году – раз нет решений, то возможно они не востребованы рынком? Оказалось, что востребованы. Что приносит больше денег - слабое решение на пустом рынке или отличное решение, но на рынке с большой конкуренцией? 2. Как конкурировать с фирмой «1С» на её поле? Стараемся всегда идти на шаг впереди: переход на 8.2 раньше, переход на «Такси» раньше, графический редактор значительно раньше, push-уведомления для iOS раньше и т.д. Всё это были информационные поводы для новостей. Слабое место – отсутствие методических материалов и различных книг для клиентов, но у нас меньше объем кода (в отличие от типовых продуктов фирмы 1С), проще модифицировать под себя it-специалистам клиента; 3. Продажи падают – как удержать? Стоит ли переименовать продукт для отстройки от конкурента или оставить старое наименование? Добавить ли новые подсистемы – KPI и технической поддержки? Минимизация затрат на техническую поддержку клиентов с сохранением качества. Бесплатные пожизненные обновления. Апгрейды на другие продукты. Лучшие условия для партнеров; 4. Клиенты заявляют - «А мы хотим тут новую кнопку (иначе не купим)!» Как соблюсти баланс между усложнением решения и удовлетворением конкретного клиента? Плюсы развития продукта под реальные нужды предприятий, а не под гипотетические задачи; 5. Повышать или понижать цену? Что увеличит продажи продукта? 6. Куда развиваться после 11 лет? Создание на основе продукта отдельных подсистем для программ фирмы «1С». Сертификация встраиваемых модулей в программы «1С:УТ», «1С:УНФ», «1С:Документооборот» и другие; 7. А может сделать OpenSource? Плюсы и минусы продукта в OpenSource. Дополнительная информация: Сколько вышло больших обновлений (на 8.1 для 8.2 и 8.3 такси). Расскажем были ли возражения против платного перехода на новые редакции. Одно из интересных решений – графический редактор бизнес-процессов, позволяющий создавать произвольные процессы в пользовательском режиме (не в «Конфигураторе») создан в 2010 году, фирма «1С» создала аналогичный в 2017. Изначально продукт поставляется с полностью открытым кодом, без дополнительных ключей защиты. Есть ли плюсы в такой поставке или больше минусов – приходите и всё узнаете!

Работа с MS Word из 1С "для самых маленьких"

0. Сурикат 172 12.03.16 13:30 Сейчас в теме
Данная статья - попытка собрать сведения по работе (на начальном уровне) с MS Word в одном месте. На infostart.ru и других сайтах полно похожего материала, и при наличии должной усидчивости это все можно найти. Хотелось собрать основные моменты в одном месте.

Перейти к публикации

Комментарии
Сортировка: Древо
1. maXon777 97 12.05.16 10:30 Сейчас в теме
Прекрасный обзор! Спасибо!

Очень понравился подход с программным заполнением таблицы путем добавления строк!
2. GOOD256 74 12.05.16 13:52 Сейчас в теме
3. pvl_mksv 19 12.05.16 14:25 Сейчас в теме
4. gradi 12.05.16 16:44 Сейчас в теме
В ворд2013 глюков с DOCVARIABLE не замечал.
7. Сурикат 172 12.05.16 23:17 Сейчас в теме
(4) gradi,
На небольших документов действительно все хорошо работает (на небольших я имею ввиду несколько десятков страниц). Когда количество приближается к 100 возможно непонятное поведение параметров. По использованию полей во мне больше говорит пользователь, который в свое время много с ними мучился =)
5. DJDUH 18 12.05.16 17:14 Сейчас в теме
Самая "засада" MSWord - это вставить значение в шейпы или иные надписи и картинки - сколько не игрался так и не получилось, найти выход - находит нужное, а значение вставить фига(
8. Сурикат 172 12.05.16 23:22 Сейчас в теме
(5) DJDUH,
К сожалению или к счастью с таким не сталкивался =)
Могу только посоветовать покурить MSDN в части свойств и методов указанных вами коллекций. Если получиться, дайте знать. Добавлю к публикации =) Ну или сами созреете для написания кратенького гайда =)
9. gradi 13.05.16 13:15 Сейчас в теме
(5) DJDUH, у вас не получалось именно вставить значение или добиться его отображения в документе?
6. director04 3537 12.05.16 20:25 Сейчас в теме
Поставил плюс за краткость. И хотел бы еще одни плюс за заголовок.
Хотя,... есть тут пара засранцев, которые обязательно нагадят, что де "все это всем давно известно..."
Спасибо, плюс
10. nni93 13.05.16 15:30 Сейчас в теме
11. AndMax 3 17.05.16 14:43 Сейчас в теме
Коротко и красиво, спасибо, +
12. stilet 50 18.05.16 11:05 Сейчас в теме
Подскажите, может кто нибудь сталкивался - как изменить цвет фона у какого нибудь набора символов (скажем двух или трех слов)
13. Сурикат 172 18.05.16 11:36 Сейчас в теме
(12) stilet, а он у вас все время разный?
15. v3rter 18.05.16 12:27 Сейчас в теме
(12) stilet, если выделенного текста желтым, то
Selection.Range.HighlightColorIndex = wdYellow
adhocprog; +1 Ответить
14. v3rter 18.05.16 12:24 Сейчас в теме
Базовый метод работы с Word - записываем макрос с нужными действиями, читаем его, читаем хелп к нужным командам, чистим макрос от лишних действий и параметров, копируем в 1С, добавляя "ДокументВорд." перед командами.

По поводу параметров - был и есть старый дедовский метод, когда параметр вставлялся в виде текста типа [Мой_параметр], {Мой_параметр}, [{(%%Мой_параметр%%)}] - на выбор, затем командной поиска и замены самого ворда параметры меняются на значения.

Кстати, проверяли: Application.Visible = False вначале и Application.Visible = True в конце действий ускоряет или нет?
Zhilyakovdr; gradi; monkbest; +3 Ответить
20. Сурикат 172 22.05.16 14:09 Сейчас в теме
(14) v3rter,
Application.Visible = False вначале и Application.Visible = True в конце действий не ускоряет процесс. Проверил =)
16. sudmorsh 54 18.05.16 16:18 Сейчас в теме
Очень полезно, спасибо ;)
17. v3rter 18.05.16 16:40 Сейчас в теме
Записал в ворде макрос замены текста во всем документе, кроме колонтитулов.

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "что"
.Replacement.Text = "на что"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.EscapeKey
Показать

Возможно, будет полезен.

Из хелпа:
WdReplace
Constant Value
wdReplaceAll 2
wdReplaceNone 0
wdReplaceOne 1
Сурикат; +1 Ответить
18. monkbest 97 19.05.16 08:07 Сейчас в теме
(17) v3rter, зачем искать в цикле?
я делаю так
ТекДок.Content.Find.Execute("%параметр%,,,,,,,,,"мой текст",2);

меняет сразу во всем документе, работает гораздо быстрее, чем искать в цикле
gigapevt; Сурикат; +2 Ответить
19. v3rter 19.05.16 10:04 Сейчас в теме
(18) monkbest, ну так я на это и намекал. Ждём от автора версию 2.0
21. isanka 23.05.16 14:02 Сейчас в теме
Спасибо за труды.
Для старта очень познавательно.
Вопрос.
как прочитать текст содержащийся в полученной таблице ?
и как заполнять таблицы в ворде данными не переписывая строки самой таблицы, а просто заполняя ее данными?
(пробовала заполнять в цикле (Таблица.Cell(ИндексСтрока+1,ИндексСтолбец+1).Range().InsertAfter(Текст),
так очень долго, да и местами таблицы уже частично заполнены, может есть возможность загрузить данные в таблицу с заранее известным количеством строк и столбцов?
или это из области фантастики?)


23. Сурикат 172 23.05.16 18:12 Сейчас в теме
(21) isanka,
Мне другие способы не знакомы. Можно заполнять же только некоторые ячейки. Обращение по номеру строки/столбца это позволяет.
Поищите как word с ADO дружит =) В Excel ADO дает неплохой прирост производительности. Если найдете, дайте знать =) Добавим в публикацию =))
24. v3rter 24.05.16 16:16 Сейчас в теме
(21) isanka, Попробуйте Таблица.Cell(ИндексСтрока+1,ИндексСтолбец+1).Range().Text или Таблица.Cell(ИндексСтрока+1,ИндексСтолбец+1).Range.Text

Всё это гуглится, но не на русском: https://msdn.microsoft.com/ru-ru/library/office/ff821612.aspx
22. Сурикат 172 23.05.16 18:10 Сейчас в теме
Приношу извинения за небольшие проблемы с форматированием =(( Подвел новый редактор.
25. freud 2 23.11.16 19:54 Сейчас в теме
windows 10 + ms office
1c выдает

ОбъектВорд = Новый COMОбъект("Word.Application")


Не удалось создать объект.
Возможно, отсутствует соответствующее приложение.

в чем причина
26. sssss_aaaaa_2011 23.11.16 20:33 Сейчас в теме
(25) В том, что последние версии оффиса не имеют СОМ-объектов.
27. Сурикат 172 25.11.16 08:38 Сейчас в теме
(25)А где выполняется код? на сервере или на клиенте?
28. HalfZer0 16 02.06.17 12:43 Сейчас в теме
Я требую больше версий слова Стурктура, то есть Струкутра, то есть... ааааа!!!
maXon777; +1 Ответить
29. fish249 03.08.17 09:35 Сейчас в теме
30. MiniGrad2014 10.08.17 21:47 Сейчас в теме
Не помещая документ в макет можно напрямую заполнять поля шаблона ворда?
31. Tanis 29.09.17 09:53 Сейчас в теме
Доброе утро!

Как раз очень нужный вопрос.

Подскажите, плиз. Выполнение заполнения шаблона происходит на стороне клиента (пользователя) или на сервере?

Если есть вариант заполнять именно на сервере, то как это можно реализовать?

Спасибо!
32. Сурикат 172 29.09.17 12:06 Сейчас в теме
На сервере можно заполнять только в том случае, если стоит на нем Word. Иначе только ковыряние в XML.
33. Tanis 29.09.17 15:07 Сейчас в теме
Да. Поставили туда специально Ворд.

А как осуществить это? подскажите, пожалуйста.

Как передать макет на сервер, до его получения пользователем?

Спасибо!
34. tjurikov_ivan 162 29.09.17 15:20 Сейчас в теме
(33) В 1С ДО заполнение шаблонов на сервере происходит через фоновое задание
35. user697645_gonchar.m 29.09.17 15:23 Сейчас в теме
36. Сурикат 172 29.09.17 16:25 Сейчас в теме
Эм...
У вас 1с ДО?

Можно и без фонового задания.
Сохраняете в двоичные данные, а на сервере получаете.

Если нужно пользовательский макет, то двоичные данные сериализуются
37. Tanis 29.09.17 17:13 Сейчас в теме
Хм....

Тогда еще вопрос, а как сохранить этот шаблон в двоичные данные, для передачи на сервер?

Макет сделан как Актив документ.

Word = ЭтотОбъект.ПолучитьМакет("ШаблонВорда").Получить();

При этом сразу ошибка, что мол нет программы....
38. Сурикат 172 29.09.17 17:45 Сейчас в теме
А зачем вам макет active document, если можно сразу сделать двоичные данные и передавать на сервер?
Ведь вы все равно его для заполнения будете на диск сохранять =)
39. Tanis 29.09.17 19:10 Сейчас в теме
Так макет же является - актив документ.

В данном случае сохранение используется. Но могу сказать, что можно воспользоваться без сохранения. )))))
40. Сурикат 172 30.09.17 12:25 Сейчас в теме
(39)

Не используйте актив документ =) Это достаточно ущербная вещь, использование которой не дает никаких преимуществ, а добавляет только проблем.
41. Tanis 30.09.17 18:12 Сейчас в теме
Добрый вечер!

А чем они стали ущербные ((((

Что предлагаете? Держать шаблон на диске или вообще перетаскивать в макет?

Спасибо!
42. Сурикат 172 30.09.17 20:01 Сейчас в теме
Ущербные потому что править их довольно-таки тяжело, неудобный интерфейс. Возможно я что-то не знаю или это субъективно...
Предлагаю редактировать в Word и держать в макете с типом двоичные данные.
43. artms 133 27.10.17 09:07 Сейчас в теме
44. bondar_vy@mail.ru 08.02.18 12:23 Сейчас в теме
Коллеги, добрый день. Столкнулся с тем что в ЗУП 3.1 платформа 8.3.10.2667 при загрузке шаблона word 2013 не подтягиваются колонтитулы и рисунки. Может нужны какие-то специальные настройки в 1С или в word? Подскажите пожалуйста.
45. user610319_r.pasha.serg 20.02.18 10:54 Сейчас в теме
Спасибо за статью. Очень полезно
46. AlexeyK1 14 20.03.18 13:42 Сейчас в теме
А что же самых маленьких не учим с пеленок за собой убирать?
надо бы добавить уничтожение объектов и файлов.
а так статья хорошая )))

РS а то как открывать учим
//Разумеется, получение COM-объекта нужно поместить в попытку. Мало ли, что-то пойдет не так.

а как в Исключении прибить и почистить нет
47. Сурикат 172 20.03.18 14:21 Сейчас в теме
(46)
Я как-то верю в умные указатели...
Думаете не стоит? =)

Спасибо за замечание =)
48. Forrest_Gump 23.03.18 09:21 Сейчас в теме
Подскажите а чем могут быть "тормоза"???...
простенький шаблон договора 6 страниц... 30 параметров для замены...
Прикрепленные файлы:
49. pchelov 16.04.18 16:59 Сейчас в теме
Метод "Execute" имеет ограничение на длину значения для замены в 255 символов, если будет больше, то появляется исключение. Я написал небольшую процедуру для выполнения замены частями:

Процедура ВыполнитьЗаменуСОграничениемДлиныСтроки(вхДокументВорд, вхШаблонЗамены, вхЗначение)

// Замена значений в ворде имеет ограничение на длину в 255 символов.
// Разобьем значение на куски по 255 знаков

МаксДлинаСтроки = 255;

ИДШаблона = "@"+СтрЗаменить(Новый УникальныйИдентификатор, "-", "");

МаксДлинаСтроки = МаксДлинаСтроки-СтрДлина(ИДШаблона);

ТекШаблон = Строка(вхШаблонЗамены);
НеРазбитоеЗначение = Строка(вхЗначение);

МассивЧастейСтроки = Новый Массив;

Пока СтрДлина(НеРазбитоеЗначение)>0 Цикл

ЧастьНужнойДлины = Лев(НеРазбитоеЗначение, МаксДлинаСтроки);

МассивЧастейСтроки.Добавить(ЧастьНужнойДлины);

НеРазбитоеЗначение = Сред(НеРазбитоеЗначение, МаксДлинаСтроки+1, МаксДлинаСтроки);

КонецЦикла;

Для Каждого ЧастьСтроки Из МассивЧастейСтроки Цикл

вхДокументВорд.Application.Selection.Find.Execute(ТекШаблон,,,,,,,,, ЧастьСтроки+ИДШаблона, 1);

ТекШаблон = ИДШаблона;

КонецЦикла;

вхДокументВорд.Application.Selection.Find.Execute(ТекШаблон,,,,,,,,, "", 1); // Зачистим остатки шаблона

КонецПроцедуры
Оставьте свое сообщение
Все разделы

Вакансии

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

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

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

Консультант-аналитик 1С
Москва
зарплата до 160 000 руб.
Полный день

Удаленный бизнес-аналитик 1С
Санкт-Петербург
Временный (на проект)