До старта конференции

Яндекс (Yandex) Диск. Обновляйте свои внешние обработки, обработки заполнения, печатные формы и отчеты.

Обработки - Универсальные обработки

Хранить свои внешние обработки на внешнем носителе типа Yandex диска удобно, а обновлять в базах 1С еще удобней.

Всем привет!

Тем, кто постоянно дорабатывает внешние отчеты и обработки, удобно использовать внешнее хранилище этих данных. И если раньше это были переносные диски, то теперь очень удобно пользоваться сервисами типа Google Drive, Dropbox, Yandex Disk. Хранение актуальных версий своих наработок в интернете и использование синхронизации с папкой на локальном диске делает этот инструмент очень удобным.

Так чего нам не хватает в 1С? Правильно, сихронизации наработок с базой 1С. Ведь хранение отчетов и обработок в самой базе - это просто еще один способ хранения. И это то хранилище данных, которое актуально для этой базы.

Хранение своих наработок для для разных баз 1С очень удобно для с Yandex disk. Но как быстро обновить все свои наработки в конкретной базе? Идея: Зашел в дополнительную обработку, нажал кнопку и все готово.

Итак, с самого начала. По патриотическим соображениям выбирем Yandex Disk.

1. Сначала немного напрячься и получить  токен или ключ. (https://tech.yandex.ru/oauth).

В некоторых обработках (//infostart.ru/public/304373/) на infostart предлагают внутренную регистрацию, но мы не будем усложнять ситуацию. Мы делаем простое десктопное приложение.

Сначала зарегистрируйте свое приложение https://oauth.yandex.ru/client/new. Наименование любое, в правах для Yandex disk REST API укажите доступ на запись всего диска и доступ на чтение всего диска. И обязательно нажмите на ссылку Подставить URL для разработки, чтобы получить ответ в браузере.

Вам Выдадут ID и пароль. Заходите по ссылке типа https://oauth.yandex.ru/authorize?response_type=token&client_id=ID&display=popup, ID это ваш ID.

Вас просят подтвердить доступ.

И показывают пустое окошко с Вашим ключом (token). Он действителен в течение года.

2. Скачать обработку и заполнить поля настроек. Удаленный каталог создайте через вэб интерфейс или оставьте поле пустым для записи в корень.

Работа с обработкой

3. Пользоваться YandexDiskExReports83. Первая обработка работает только на 8.3 для новых типах баз типа бухгалтерии 3.0 и БСП

Вводите свой Я сделал поле token в режиме пароль, но с функцией автосохранения значения. Если кто-то будет запускать обработку вместо Вас, он Вам легко перепишет файлы. Это сделано специально, по следующей логике:

 1. Разработчик подготавливает внешний отчет или обработку

 2. Выкладывает ее на Yandex-disk

 3. В рабочей базе любой сотрудник запускает обработку YandexDiskExReports83 и нажимает кнопку "Синхронизовать"

В последней колонке можно подредактировать свои действия:

<Выгрузить> - выгрузить на yandex-disk. <Загрузить> - загрузить с yandex-disk.

Не совпадение версий определяется по контрольной сумме CRC. Приоритет в загрузке из Yandex disk.

И, конечно, лучше добавить данную обработку внуть базы и работать с ней как с дополнительной обработкой! (см. картинку)

Теперь перейдем к базам на версиях на 8.2 Бухгалтерия 2.0 или Управление Торговлей 10.3. Там где внешние доработки храняться в справочнике "Внешние обработки". Но старые версии платформы не могут сделать нам все необходимое.

Пройдемся по тем усилиям, которые необходимо предпринимать:

1. JSON. Возьмем отсюда (//infostart.ru/public/61194/). Спасибо разработчику за реализацию простого алгоритма.

2. SSL. Так как платформа 8.2 не поддерживает шифрование SSL, а поддержка включена с платформы 8.3.1, то для работы с SSL необходимо исользование платфомы не ниже 8.3.1.

Придется использовать ActiveX: ADODB.Stream, WinHttp.WinHttpRequest.5.1 и ограничиться только Windows решением. Решение получается тяжеловатым. Требует MDAC 2.5 и выше.

3. Контрольная сумма md5. Пока уберем. Будем использовать дату изменения файла записываемую в поле "комментарий  к файлу источнику" справочника "внешние обработки", хотя она там записывется на час больше.

Алгоритм достаточно простой:

1. Смотрим все наработки в справочнике "внешние обработки" и ищем их аналоги на Yandex диске.

2. Сравниваем даты изменения. Если равны - выбираем "Не трогать", если нет, то по дате изменения выбираем "Загрузить или Выгрузить".

3. Проверяем правильность колонки "действия".

4. Нажимаем кнопку "Cинхронизировать".

И третья обработка обработка - простой яндекс диск, если Вам на работе запрещают ставить Yandex Диск для Windows компьютер.

Р.S.

C Вэб-клиентом не заморачивался, там надо переделывать вызовы http через сервер.

А все началось с санкций. Как я тонко политически подошел... Точнее с запрещений. На работе запретили ставить себе на компьютер Yandex Disk. Использование подключения через WebDav http://help.yandex.ru/disk/webdav.xml не подходило по интенсивности обновлений и скорости работы. Поэтому сказал: Пора изучить Yandex Disk Rest API (https://tech.yandex.ru/disk/rest).

Документация удовлетворила, но особо понравился экспериментариум Полигон https://tech.yandex.ru/disk/poligon/. Он позволяет потестировать ваши запросы еще до момента написания кода.

Разобрался во всем этом и написал обработки.

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

Скачать файлы

Наименование Файл Версия Размер
YandexDiskExReports83.epf
.epf 13,47Kb
15.05.17
45
.epf 13,47Kb 45 Скачать
YandexDiskExReports82.epf
.epf 15,70Kb
15.05.17
23
.epf 15,70Kb 23 Скачать
YandexDisk.epf
.epf 12,12Kb
15.05.17
30
.epf 12,12Kb 30 Скачать
Версия для Вэб-клиента.
.epf 13,38Kb
15.05.17
6
.epf 13,38Kb 6 Скачать

См. также

Комментарии
1. Allexey (alex_4x) 73 15.04.15 08:50 Сейчас в теме
А под 8.2 возможно запилить такое ? под жирненького клиента ?
2. Канат Джумадылов (Fox-trot) 52 15.04.15 09:18 Сейчас в теме
3. Матвей Кудашкин (Patriot1S) 75 15.04.15 10:29 Сейчас в теме
(1) alex_4x, Работаю на этим. Но платформа 8.2 не поддерживает шифрование SSL, а поддержка включена с платформы 8.3.1, то для работы с SSL необходимо исользование платфомы не ниже 8.3.1. А по моим данным в корпоративном секторе мало кто еще перешел.
Для JSON в 8.2 есть обработки.
4. Александр Крынецкий (echo77) 742 15.04.15 21:00 Сейчас в теме
Совсем не понял на кой черт эта обработка?
Приложение дли виндовс Яндекс.Диск не решает ли те же задачи?
5. eugenie zheludkov (eugeniezheludkov) 32 16.04.15 03:14 Сейчас в теме
чет я совсем не вижу преимуществ такой разработки, читаю статью и чувствую, что автор не слышал про ГИТ и множество других систем контроля версий.
GIT позволяет делать тоже самое плюс версионирование плюс командная разработка плюс история изменений видны сразу, версии можно откатывать и плюшка от гитхаба это issues считай трекер задач. Вот к примеру мой тестовый репо: https://github.com/znsoft/external1CProgs/tree/master/src

, а закрытая разработка ведется на bitbucket.

там уже реальные вещи делаем
при помощи вот этой утилиты https://github.com/xDrivenDevelopment/precommit1c

ПС: хотя любая программа имеет право на жизнь :) извиняюсь если кого задел своим сообщением
Korolev; Quasar; EMelihoff; YPermitin; 1cWin; PrinzOfMunchen; Yashazz; +7 Ответить 1
6. Матвей Кудашкин (Patriot1S) 75 16.04.15 09:31 Сейчас в теме
(4) echo77, (5) eugeniezheludkov Предполагается что сама разработка, тестирование, контроль версий осуществляется на другом компьютере с локальной копией Яндекс.Диск.
А Обработка предназначена для быстрого обновления своих наработок у Клиента!!! Не по одной, запоминая в уме что надо обновить а сразу все вместе по нажатию одной кнопки.
m.s.moiseev; baton_pk; +2 Ответить
7. Дмитрий Котельников (kotlovD) 48 16.04.15 09:48 Сейчас в теме
Связку с ЯД можно подсмотреть в 1С:Деньги, там доступ по логину и паролю, без токенов и ограничений по периоду их использования. Кстати, и в веб клиенте работает.
8. Яков Коган (Yashazz) 2116 16.04.15 12:46 Сейчас в теме
Меня всегда забавляла наивная уверенность некоторых специалистов в двух вещах - наличии устойчивого 4G в масштабах всея Земли, и сохранности-безопасности данных, хранимых где-то в сети. Эта уверенность обычно резко проходит после двух-трёх встреч с рукояткой жизненных граблей)
SunShinne; moolex; Ali1976; PrinzOfMunchen; gutentag; Sitex; qwinter; nihfalck; +8 Ответить 3
9. Матвей Кудашкин (Patriot1S) 75 17.04.15 09:48 Сейчас в теме
(7) kotlovD, Из статьи на Инфостарте http://infostart.ru/public/304373/
"Чтобы получить access_token мы должны предварительно настроить веб-сервер и опубликовать на нем http-сервис ЯндексДеньги."
10. Матвей Кудашкин (Patriot1S) 75 17.04.15 14:22 Сейчас в теме
(8) Yashazz,
Ну по поводу безопасности в 1С я удержусь высказываться.
А вот проверить работу обработки на 3G сети по телефона - проведу тест. И другим предлагаю предоставлять информацию.
11. Матвей Кудашкин (Patriot1S) 75 20.04.15 21:38 Сейчас в теме
(8) Yashazz, Не знаю, что Вы имеете ввиду,но по 3G телефону с задержкой все работает
12. artem Петров (gonzo111) 21.04.15 11:36 Сейчас в теме
не понял какие проблемы с синхронизации через WebDav ,подождать в обработке на 5 сек дольше уже стало проблемой?
заводим ящик расшариваем папку ему с доступом на чтение, сетевой диск подключаем и отключаем в обработке и без всяких страданий с токенами
net use U: https:\\webdav.yandex.ru /User:help@sss.net password /persistent:no
13. Матвей Кудашкин (Patriot1S) 75 23.04.15 23:29 Сейчас в теме
(12) gonzo111, Так первоначальная идея сделать аналог Yandex disk, переродилась в идею обновления в отдельной базе 1C своих внешних доработок.
14. Матвей Кудашкин (Patriot1S) 75 28.04.15 18:51 Сейчас в теме
Исправил ошибку если есть поддиректории в Yandex Disk. Их не берем в таблицу.
15. Матвей Кудашкин (Patriot1S) 75 22.10.15 22:17 Сейчас в теме
Заметил что одним запросом Yandex получает только 20 элементов. Это значение по умолчанию. Если у Вас больше файлов в директории это введет к ошибкам. Поставил 100. Думаю хватить. Или лучше сделать параметром?
16. Матвей Кудашкин (Patriot1S) 75 23.10.15 17:39 Сейчас в теме
Иногда для скачивания Yandex выдает 302 и перенаправляет на другой ресурс. Доделываем.
17. Ийон Тихий (cool.vlad4) 41 23.10.15 18:07 Сейчас в теме
(8) Yashazz, ты слишком критичен. для любой разработки можно найти условия , где она либо бессмысленна, либо не будет работать. автор же не писал, что она будет работать везде. если не будет интернета, она точно работать не будет, например.
и что там с безопасностью хранения обработок в яндекс диске? (я подозреваю насколько мне позволяют мои скромные знания, что в яндекс в плане безопасности куда лучше чем в 1с и тем не менее в конфах предусмотрен обмен по почте, которая кстати на том же яндекс может быть, и ничего)
18. Александр Шакмаев (shakmaev) 331 26.10.15 17:25 Сейчас в теме
А что мешает делать вот так? Это ж WebDAV, 1С успешно справляется с этим.

Путь1 = "https://login:pass@webdav.yandex.ru/path/to/file.txt";
Путь2 = "c:\file.txt";
КопироватьФайл(Путь1, Путь2);
УдалитьФайлы(Путь1);
КопироватьФайл(Путь2, Путь1);
...Показать Скрыть

19. Александр Журавлев (apostal86) 176 28.10.15 09:11 Сейчас в теме
С самого начала не доверял облачным сервисам и не доверяю. Главным образом по тому, что пока есть Интернет, или они работают - все ОК. А как только нет сети или облако "полетело", так все, приехали. В этом плане нет ничего надежнее личной флешки или жесткого диска. Поэтому логичнее настроит обновление и проверку с них. К тому же об уровне безопасности всех этих облаков тоже пока не все известно. Крадут же фотки знаменитостей.
20. Игорь Фелькер (Brawler) 324 30.11.15 15:45 Сейчас в теме
ЦЕННИКИ НЕ ГУМАННЫЕ!!!
Нужно было бы мне лично, не качал бы вовсе!
21. Влад Влад (surikateg) 04.12.15 12:44 Сейчас в теме
(19) apostal86, облачные клиенты в папку на жестком диске файлы кладут. Отсутствие интернета повлияет только на оперативную синхронизацию.
22. Hromov Anton (hromovanton) 1 10.12.15 13:49 Сейчас в теме
(19) apostal86, НЕ согласен. Если нет интернета, то все данные и так у вас на флешке. А вот если ваша флешка сгорит, то вот тут облачные данные спасут вас от "расстрела". Проверенно на личном опыте, правда на dropbox. День работы был спасен только благодаря облачному сервис !!!
23. Матвей Кудашкин (Patriot1S) 75 21.01.16 14:31 Сейчас в теме
Уменьшил стоимость скачивания.
24. Павел С (pavel_pss) 159 26.09.16 18:07 Сейчас в теме
Спасибо за статью, очень полезно.
25. Павел С (pavel_pss) 159 26.09.16 18:10 Сейчас в теме
Может подскажешь, я сделал все до твоей строки "И показывают пустое окошко с Вашим ключом (token). Он действителен в течение года." и получил этот длинный токен, Но при вставке его в обработку пишет что не авторизован. Что я не сделал.
26. Матвей Кудашкин (Patriot1S) 75 11.10.16 11:43 Сейчас в теме
(25) pavel_pss, Сложно сказать удаленно, попробуй точно скопировать все знаки ключа и нажми кнопку обновить.
27. Роман Ложкин (webester) 23 16.05.17 10:38 Сейчас в теме
(0)Нет возможности хранить код, на гитхабе. Приходится страдать такой ерундой(вообще мысль хорошая, я уже думал в этом направлении, но как то не додумал).
28. Алексей 1 (AlX0id) 16.05.17 15:45 Сейчас в теме
29. Матвей Кудашкин (Patriot1S) 75 16.05.17 16:24 Сейчас в теме
(27) Еще раз по порядку - хранить разработку и версии большого пути можете где угодно. Github, SVN или все что Вам нравиться. Тем более что устанавливая Yandex диск на компьютере работает с ней как с локальным файлом.

Но если Вам нужно постоянно обновлять свои обработки в рабочей базе, один раз настраиваем и обновляем одним нажатием все обработки.
Теперь понятно?
30. Роман Ложкин (webester) 23 16.05.17 19:22 Сейчас в теме
(29)Просто синхронизация. Я понял. Я просто сейчас постоянно чешу репу на тему "где свежая версия обработки? у меня или у клиента? И если у клиента, то у какого?" Уже стали возникать всякие неприятные моменты. Для синхронизации есть целая куча решений и ваша проблема началась с того, что ваш любимый инструмент стал недоступен на работе. Повторюсь, сама по себе мысль отличная. Но чего то не хватает... пока не могу понять чего. Обработку скачаю на досуге обязательно, может придумаю чего нить. У нас с вами разные цели. Вы сидите на одном месте, у меня везде разные рабочие места, разное окружение, все и всегда разное. Гит отличная штука, и решил бы все вопросы, но не таскать же его на флешке... Или таскать?
31. Александр Жиличев (alexzhilichev) 141 18.05.17 11:41 Сейчас в теме
Зачем WinHttpRequest.5.1, если есть HTTPЗапрос и HTTPСоединение?
32. Роман Ложкин (webester) 23 19.05.17 21:04 Сейчас в теме
(31)Он же пишет:
2. SSL. Так как платформа 8.2 не поддерживает шифрование SSL, а поддержка включена с платформы 8.3.1, то для работы с SSL необходимо исользование платфомы не ниже 8.3.1.

Придется использовать ActiveX: ADODB.Stream, WinHttp.WinHttpRequest.5.1 и ограничиться только Windows решением. Решение получается тяжеловатым. Требует MDAC 2.5 и выше.
33. Роман Ложкин (webester) 23 24.05.17 07:36 Сейчас в теме
(0)Скачал обработку, получил токен, нажимаю "Синхронизировать", сервер отвечает 401, в чем может быть проблема? В отладчике видно, что в запросе передается указанный мной токен.
34. Роман Ложкин (webester) 23 24.05.17 08:27 Сейчас в теме
Нашел проблему, поле слишком короткое, токен не влазил целиком из-за того, что поле оформлено как пароль сразу не бросилось в глаза, что не хватает 4х символов.
35. Роман Ложкин (webester) 23 26.05.17 09:18 Сейчас в теме
Допинал обработку. Она практически нерабочая была. Какие отметил моменты:
1. Надо поправить длину реквизита. Так как видимо токены бывают разной длины и мой не влезал.
2. Непонятно, зачем вы используете реквизиты объекта а не формы это же неудобно?
3. Почему реквизиты на английском языке? Очень неудобно постоянно переключаться.
4. Нет смысла использовать конструкцию "Попытка" для того, что бы убедиться в наличии\отсутствии ключа у структуры. Гораздо проще и оптимальнее использовать метод "Свойство".
5. Лучше вынести механизм создания запроса в отдельную функцию, чем копипастить код по всей обработке. У меня получилось вот так:
&НаКлиенте
Функция ПолучитьОтветЯД(Урл, ИмяСайта = "cloud-api.yandex.net", НеФормироватьОтвет = Ложь)
	ssl1 = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено);
	HttpСоединение = Новый HTTPСоединение(ИмяСайта, 443,,,,,ssl1);
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Content-Type", "application/json");
	Заголовки.Вставить("Authorization", "OAuth "+объект.token);
	HttpЗапрос = Новый HTTPЗапрос(Урл, Заголовки);
	Если НеФормироватьОтвет Тогда
		Возврат Новый Структура("Соединение,Запрос", HttpСоединение, HttpЗапрос);
	Иначе	
		Возврат HttpСоединение.Получить(HttpЗапрос);
	КонецЕсли; 
	
КонецФункции
...Показать Скрыть

6. Из-за ошибки распарсивания строки с ссылкой, файл не скачивался. Переписал теперь функция выглядит вот так:
	Сайт = СтрЗаменить(Ссылка, "https://", ""); // убираем https://
	Поз = СтрНайти(Ссылка, "yandex.ru") + 1;
	Ресурс = Прав(Сайт, СтрДлина(Сайт)-Поз);
	Сайт = Лев(Сайт, Поз-1);
	мОтвет = ПолучитьОтветЯД(Ресурс, Сайт);
	Если мОтвет.КодСостояния = 200 Тогда
		Данные = мОтвет.ПолучитьТелоКакДвоичныеДанные(); 
		Данные.Записать(ЛокальныйКаталог+"\"+ИмяФайла);
	ИначеЕсли мОтвет.КодСостояния = 302 Тогда //Если перенаправляют - получаем оттуда	
		ПолучитьФайлПоССылке( мОтвет.Заголовки.получить("Location"), ИмяФайла);	
	КонецЕсли;
...Показать Скрыть

7. После того, как файл скачался, все равно у системы не получалось его сохранить, так как она пыталась его сохранить по пути который указан в реквизите объекта "ЛокальныйКаталог" которого не было.
8. Процедура "ИспользуемМодальность" нигде не используется.
Скорее всего она у вас была зашита куда то, вы ее вырезали сделали, что бы она стала запускаться, но почему то как работает проверять не стали. В целом я подумал, что она будет использоваться практически в таком виде. То есть прям именно в таком виде я ее и встрою в конфигурацию и буду оттуда открывать обработки. То есть обработки будут храниться локально на диске у каждого пользователя. Поправил переменную локальный каталог, добавил открытие формы обработки двойным щелчком по ней. В целом как заготовка подошло идеально. Спасибо :)
Вопрос: если я исправленную версию с указанием ссылки на эту публикацию выложу, вы будете против?
sikuda; vikad; +2 Ответить
Оставьте свое сообщение