Программист 1с
twitter email rss
  • Home
  • Полезности
    • Мобильное приложение курьера
    • MailChimp + УТ 11.
    • 1с-sms
    • Pharma-MPD
    • Зуботехническая лаборатория
  • Блог
  • Партнеры
  • Команда
    • Услуги
    • Опыт
    • Отзывы
    • Контакты
  • Поддержка
    • Инструкция
    • Redmine

Печать с мобильного приложения 1с

on 06.10.2014in 1Сtags: 1с, Мобильное приложение, Печатьwith 6 комментариев






В рамках разработки мобильного приложения кладовщика столкнулись с необходимостью печати этикеток для обклейки заказа. В данном посте я поделюсь подходами, которые удалось реализовать для решения поставленной задачи. Так как задача решалась постепенно с разным набором оборудования получилось в результате два метода:

  1. Отправка на печать через запущенную сессию 1с на компьютере.
  2. Отправка на печать с мобильного приложения.

В обоих методах используется генерация этикетки на стороне центральной базы. Такой подход был принят с учетом условий:

  • Этикетка на заказ должна печататься всегда одинаковая;
  • Кладовщик не всегда следит за необходимостью обновить конфигурацию в мобильном приложении;
  • Процесс приема заказов подразумевает наличие соединения мобильного приложения с центральной базой.

Read More →

Открываем яндекс-навигатор из мобильного приложения 1с

on 22.09.2014in 1Сtags: 1с, Мобильное приложение, Навигаторwith 4 комментария






Добрый день.

Мобильная платформа 1с не стоит на месте за что большая благодарность и уважение разработчикам. Благодаря появлению объекта ЗапускПриложенияМобильногоУстройства в мобильной платформе 1с у нас появилась возможность запускать сторонние приложения на устройстве, передавая при этом необходимую информацию. Пользуясь такой возможностью в мобильном приложении курьера добавили функцию открытия яндекс-навигатора из формы заказа. Данная функция позволяет строить маршрут от текущего месторасположения пользователя к точке доставки заказа.

Как это работает можно посмотреть на видео:

Сохраняем word и pdf документ из 1с

on 04.09.2014in 1Сtags: 1с, Печатьwith 4 комментария






LogoПользователю потребовалось создавать файл договора с контрагентом программно из 1с. В результате должны формироваться файлы word и pdf. Все данные для договоров уже были у нас в справочниках (наименование, дата договора, номер договора и т.д). Задача сводится к формированию готовых файлов на основании шаблона word-документа. Для заполнения шаблона данными было принято правило: параметры, которые подлежат в тексте шаблона замене заключаются в квадратные скобки [  ].

Для обращения к файлу используем COMОбъект Word.Application. Для сохранения файла в pdf формат решено было использовать возможности самого wordа.  Ниже код, который из хранилища значений получает шаблон, производит замену параметров и сохраняет файлы. Данный код должен находится в модуле объекта, так как для получения значения параметра используется метод Вычислить().


ДанныеМакета = Справочники.ДоговорыСКонтрагентами.МакетДоговора.Получить();
ИмяФайла = "D:\file.docx";
ИмяФайлаПДФ = "D:\file.pdf";
ДанныеМакета.Записать(ИмяФайла);

MSWord = Новый COMОбъект("Word.Application");
MSWord.Visible = Ложь;
MSWord.Documents.Open(ИмяФайла);
Документ = MSWord.Application.Documents(1);
Документ.Activate();
ТекстМакета = Документ.Content.Text;
//Получим массив параметров
МассивПараметров = РазбитьСтроку(ТекстМакета, "[", "]");
ТаблицаЗначенийПараметров = Новый ТаблицаЗначений;
ТаблицаЗначенийПараметров.Колонки.Добавить("НазваниеПараметра");
ТаблицаЗначенийПараметров.Колонки.Добавить("ПреобразованноеЗначение");
Для Каждого ТекПараметр Из МассивПараметров Цикл
Попытка
СсылкаНаОбъект = Вычислить(ТекПараметр);
СтрПреобразование = ТаблицаЗначенийПараметров.Добавить();
СтрПреобразование.НазваниеПараметра = ТекПараметр;
СтрПреобразование.ПреобразованноеЗначение = СсылкаНаОбъект;
Исключение
Сообщить("Невозможно интерпретировать параметр ["+ ТекПараметр+ "]");
КонецПопытки;
КонецЦикла;
//Заменим названия параметров на значения
Замена = Документ.Content.Find;
Для Каждого ТекСтрока Из ТаблицаЗначенийПараметров Цикл
Попытка
Замена.Execute("["+ ТекСтрока.НазваниеПараметра +"]", , , , , , , , , ТекСтрока.ПреобразованноеЗначение, 2);
Исключение
Сообщить("Невозможно преобразовать параметр ["+ ТекСтрока.НазваниеПараметра +"]");
КонецПопытки;
КонецЦикла;

//Сохраним в word
Документ.Save();
//Сохраним в pdf
Документ.SaveAs(ИмяФайлаПДФ, 17);

MSWord.Application.Quit();

Печать для Укрпочты

on 01.09.2014in 1Сtags: 1с, Служба доставкиwith No Comments






logoДанная обработка позволит формировать печатные формы для Укрпочты .

Обработка может работать как в толстом клиенте так и управляемом приложении. Обработка запускается как внешняя обработка и данные про доставку вводятся вручную. Если вам надо печатать доставки на основании заказов в 1с, тогда потребуется интеграция механизмов данной обработки в вашу конфигурацию.

ukrpost1
  • ukrpost1
  • ukrpost2
  • ukrpost3

  Печать документов для Укрпочты (140,9 KiB, 490 скачиваний)

Слияние форматированных документов

on 28.08.2014in 1Сtags: 1с, Форматированный документwith No Comments






email_htmlПриветствую.

Для ускорения работы логистов курьерской службы реализовывалась задача формирования email на основании шаблона. Этот функционал используется в случае ответа пользователем на однотипные вопросы по доставке заказов. Так как в 1с-конфигурации письма отправляются в html-формате я столкнулся с необходимостью соединить два форматированных документа. Первый форматированный документ это сам текст шаблона, а второй — подпись пользователя, которая должна быть во всех письмах. На помощь в этой задаче приходит следующий код:

Процедура СоединитьФорматированныеДокументы(ИсходныйДокумент,ДокументПолучатель)
Для Каждого Параграф Из ИсходныйДокумент.Элементы Цикл
НовыйПараграф = ДокументПолучатель.Элементы.Добавить();
НовыйПараграф.ГоризонтальноеПоложение = Параграф.ГоризонтальноеПоложение;
НовыйПараграф.МеждустрочныйИнтервал = Параграф.МеждустрочныйИнтервал;
НовыйПараграф.Отступ = Параграф.Отступ;
НовыйПараграф.ТипПараграфа = Параграф.ТипПараграфа;
Для Каждого ЭлементПараграфа Из Параграф.Элементы Цикл
Если Тип(ЭлементПараграфа) = Тип("ТекстФорматированногоДокумента") Тогда
НовыйТекст = НовыйПараграф.Элементы.Добавить(ЭлементПараграфа.Текст);
НовыйТекст.НавигационнаяСсылка = ЭлементПараграфа.НавигационнаяСсылка;
НовыйТекст.ЦветТекста = ЭлементПараграфа.ЦветТекста;
НовыйТекст.ЦветФона = ЭлементПараграфа.ЦветФона;
НовыйТекст.Шрифт = Новый Шрифт(ЭлементПараграфа.Шрифт);
ИначеЕсли Тип(ЭлементПараграфа) = Тип("ПереводСтрокиФорматированногоДокумента") Тогда
НовыйПараграф.Элементы.Добавить(, Тип("ПереводСтрокиФорматированногоДокумента"));
ИначеЕсли Тип(ЭлементПараграфа) = Тип("КартинкаФорматированногоДокумента") Тогда
НоваяКартинка = НовыйПараграф.Элементы.Добавить(ЭлементПараграфа.Картинка, Тип("КартинкаФорматированногоДокумента"));
НоваяКартинка.НавигационнаяСсылка = ЭлементПараграфа.НавигационнаяСсылка;
НоваяКартинка.Ширина = ЭлементПараграфа.Ширина;
НоваяКартинка.Высота = ЭлементПараграфа.Высота;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры

Процедура СформироватьПоШаблону(Команда)
РезультатВыбора = ПолучитьФорму("Справочник.ШаблоныПисем.ФормаВыбора").ОткрытьМодально();
Если РезультатВыбора <> Неопределено Тогда
//Очистим содержимое
ТекстПисьмаФорматированныйДокумент.Удалить();
//Добавим шаблон
СоединитьФорматированныеДокументы(РезультатВыбора.ФорматированныйДокументШаблона,ТекстПисьмаФорматированныйДокумент);
//Добавим подпись
СоединитьФорматированныеДокументы(Подпись,ТекстПисьмаФорматированныйДокумент);
КонецЕсли;
КонецПроцедуры

API службы доставки meest-express. Поиск города

on 26.08.2014in 1Сtags: 1с, API, Служба доставкиwith 4 комментария






logo340x340В рамках одного проекта появилась возможность поработать со службой доставки Мист-Експресс. Хочется отметить хорошую содержательную документацию по API. В данном посте опишу общие принципы работы с API данной службы доставки и для примера возьму метод City, который используется для поиска городов в базе Мист-Експресс.
Вся работа с API данной службы доставки происходит посредством отправки xml-запросов на сервер по адресу http://api1c.meest-group.com/services/1C_Query.php. Для метода city xml должен выглядеть таким образом:

LOGIN
Region
DescriptionRU like 'Черкассы'

sign

Во всех запросах sign это подпись, которая форимруется по правилу: md5 ( login + password + function + where). Для формирования xml-запроса будем использовать объект ЗаписьXML платформы 1с: Предприятие. Отправку xml-запроса на сервер службы доставки будем проводить с помощью объекта HTTPСоединение.

Для формирования md5 в 1с будем использовать следующий код:

Функция MD5Eng(КодируемаяСтрока)Экспорт
оMD5 = Новый COMОбъект("System.Security.Cryptography.MD5CryptoServiceProvider");
оEnc = Новый COMОбъект("System.Text.UTF8Encoding");
оStr = Новый COMОбъект("System.Text.StringBuilder");

Массив = оEnc.GetBytes_4(КодируемаяСтрока);
Массив = оMD5.ComputeHash_2(Массив);
КолЭлементовМассива = Массив.GetLength();
Для Ит = 0 ПО КолЭлементовМассива - 1 Цикл
оStr.AppendFormat("{0:x02}", Массив.GetValue(Ит));
КонецЦикла;

оMD5 = NULL;
оEnc = NULL;

Возврат оStr.ToString();
КонецФункции // MD5Eng()

Пример поиска города по строке «Черкас»:
Form

Весь код можно посмотреть в обработке-примере. В обработке прописаны данные тестового клиента и функция для поиска города по первым символам. Обработку можно скачать тут:

  meest_express_city.epf (9,8 KiB, 687 скачиваний)

Потоковое сканирование в решении рутинных задач

on 18.08.2014in 1Сtags: 1с, Сканированиеwith 5 комментариев






Представим себе такой процесс в компании. Каждое утро сотрудник приходит в офис, берёт кучу распечатанных из 1с документов и уходит на целый день в «поля». По окончанию работы в офисе появляются подписанные документы, по которым надо оператору проставить выполнение документа в базе учёта 1с. Чтобы помочь в автоматизации данного действия можно предложить использовать следующее:

  • штрих-кодирование распечатанных документов, по которым предполагается выполнение какого-го либо действия в будущем.
  • необходимо у пользователя 1с искать в базе документ по штрих-коду.

Когда документов много и операции по отметке выполнения однотипные  поэлементный поиск будет тормозить работу оператора. В таком случае можно предложить использовать потоковое сканирование. Сотрудник подписанные документы кладёт в сканер с механизмом автоподачи. Сканер помещает отсканированные изображения в сетевую папку. Пользователь 1с по окончанию работы со сканером запускает распознавание штрих-кодов из папки с отсканированными озображениями с последующим выводом списка документов на экран.

Чтобы распознать штрих-коды с изображений можно воспользоваться компонентой документооборота. Ниже код по распознаванию с использование данной компоненты.

&НаСервере
Функция РаспознатьШтрихКодОдногоФайла(ИмяФайлаКартинки, ПрерватьПроцессСканирования)
ШагСканирования = 10;
Если КомпонентаРаспознаванияШтрихкодов = Неопределено Тогда
ПодключитьКомпоненту();
КонецЕсли;
СтрокаВозврата = КомпонентаРаспознаванияШтрихкодов.РаспознатьШтрихкоды(ИмяФайлаКартинки, ШагСканирования);
Если Найти(СтрокаВозврата, "Error.") = 1 Тогда // есть ошибка
СтрокаОшибкиКомпоненты = Сред(СтрокаВозврата, СтрДлина("Error.") + 1);
ТекстОшибки = "Ошибка распознавания штрихкода:" + СтрокаОшибкиКомпоненты;
Сообщить(ТекстОшибки);
Возврат Неопределено;
КонецЕсли;

Возврат СтрокаВозврата;
КонецФункции

Далее по полученным штрих-кодам необходимо найти владельцев и работать уже с ссылочными данными. По ссылочным данным уже можно понять какой алгоритм необходимо запускать для того или иного объекта. По результатам внедрения такого подхода могу сказать что он существенно сокращает время обрабатываемой информации, поступающей от сотрудников.
scan

Выводим печатную форму документа в браузер из 1с

on 11.08.2014in 1Сtags: 1с, API, web-сервисwith No Comments






Приветствую. В рамках поддержки API курьерской службы появилась необходимость открывать печатную форму 1с-документа в браузере без входа в саму конфигурацию. Ниже приведу общий подход реализации данной задачи, может кому-то будет интересно.

Исходными данными будет признак, по которому мы будем искать документ для печати, например, номер документа.

На стороне 1с нам понадобится создать web-сервис, который на вход будет принимать номер документа и отдавать двоичные данные pdf-файла. Возвращаемый тип: string (http://www.w3.org/2001/XMLSchema)
На стороне web-сервера сознаём php-файл, который будет выводить данные файла, полученные из 1с.

Код в 1с:

Функция Print(number)
НайденныйДокумент = Документы.ЗаказПокупателя.НайтиПоНомеру(number);
ТабДок = Документы.ЗаказПокупателя.Печать(НайденныйДокумент);
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("pdf");
ТабДок.Записать(ИмяВременногоФайла,ТипФайлаТабличногоДокумента.PDF);
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла);
Возврат Base64Строка(ДвоичныеДанные);
КонецФункции

Код в php:

'user', 'password'=> 'password', "cache_wsdl"=> WSDL_CACHE_MEMORY, "trace" => 1,"exceptions" => 1));
$result = $client->Print(array("number" => $_REQUEST["number"]));
try {
echo base64_decode($result->return);
}
catch (Exception $e)
{echo $e->getMessage();
return;
}
?>

Работа с изображениями в мобильном приложении 1с

on 03.04.2014in 1Сtags: 1с, Изображения, Мобильное приложениеwith No Comments






android_fileВо время работы мобильных сотрудников возникают спорные ситуации, которые было бы неплохо подтвердить графической информацией. Например, курьер доставляет заказ, а внутри во время вскрытия его клиентом оказывается бракованный товар. Курьер фотографирует заказ и во следующего обмена изображения становятся доступными в центральной базе.

Для работы с изображениями, аудио- и видеозаписями в мобильной платформе есть общий объект конфигурации СредстваМультимедиа. У данного объекта есть методы для проверки поддержки создания записи устройством и сам метод формирования записи.
Read More →

Локатор местонахождения мобильных сотрудников

on 31.03.2014in 1Сtags: 1с, Карты, Мобильное приложениеwith 7 комментариев






location-iconВ рамках проекта автоматизации доставки решали задачу написания gps-мониторинга мобильных сотрудников. Заказчик покупать оборудование не захотел и было решено написать решение с использованием мобильной платформы 1с. Задача включает в себя следующий функционал:

  1. Показывать текущее месторасположение сотрудника на карте. Допустимая точность — 30 минут.
  2. Показать маршрут, который совершил курьер за выбранный период.

Данные о месторасположении мобильных сотрудников надо хранить на стороне центральной базы. В связи с этим в 1с-конфигурацию был добавлен web-сервис, который принимает координаты в базу.

Так как в проекте уже использовалась мобильная платформа 1с источником данных о местонахождении решили использовать её.  Использование мобильной платформы имеет одно ограничение — приложение не запускается как служба. Это приводит к следующему эффекту: как только приложение выгружается пользователем из памяти мы перестаём принимать данные о текущих координатах в центральную базу. С учетом специфики работы мобильного пользователя данное ограничение не было критическим для решения, так как по принципу работы сотрудника он обращается к мобильному приложению достаточно часто.
Read More →

Page 4 of 12« First...«23456»10...Last »

Новости

  • Работаем с Opendatabot из 1с
  • Сокращаем ссылки в 1с
  • Загрузка данных из Google spreadsheet в 1с
  • Формирование скриншотов сайтов в 1с
  • Удаление старой номенклатуры

Подписка

Copyright © 2019 danila.org.ua
Умные решения для вашего бизнеса