Яндекс карта : вывод точек на карту Пример о том,как вывести яндекс карту на форму и далее работать с ней:
Основной HTML код карты хранится в макете:
Код VBS <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Примеры. Геокодирование.</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://api-maps.yandex.ru/1.1/index.xml?key=ANpUFEkFAAAAf7jmJwMAHGZHrcLKDsbEqEVjEUtCmufxQMwAAAAAAAAAAAAvVrubVT4btztbduoIgTLAeFILaQ==" type="text/javascript" ></script>
<script type="text/javascript" >
var router;
var myPoints = new Array ();
var myRouts = new Array ();
var strOpen = "OPEN" ;
var strKontr = "Kontragent" ;
var t = new YMaps.Template(
YMaps.Templates.add("my#template" , t);
var KopdinatShirota = 0 ;
var KopdinatDolgota = 0 ;
var UID_Zakaza = "" ;
/*vstavkaStiley;
var map, geoResult;
YMaps.jQuery(function () {
map = new YMaps.Map(YMaps.jQuery("#YMapsID" )[0 ]);
map.setCenter(new YMaps.GeoPoint(37.62 , 55.75 ), 12 );
});
function showAddress (value, contrag, Styles, UID) {
var geocoder = new YMaps.Geocoder(value, {results: 1 , boundedBy: map.getBounds()});
YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {
if (this.length()) {
geoResult = this.get (0 );
var point = new YMaps.GeoPoint(geoResult._point.__lng, geoResult._point.__lat);
var placemark = new YMaps.Placemark(point, {style: Styles});
placemark.name = UID;
placemark.description = contrag;
myPoints.push(placemark);
map.addOverlay(placemark);
return placemark;
}else {
}
});
YMaps.Events.observe(geocoder, geocoder.Events.Fault, function (geocoder, error ) {
alert("Произошла ошибка: " + error );
return null ;
})
}
function showAddressCoord (shirota, dolgota, contrag, Styles, UID) {
var point = new YMaps.GeoPoint(dolgota, shirota);
var placemark = new YMaps.Placemark(point, {style: Styles});
placemark.name = UID;
placemark.description = contrag;
myPoints.push(placemark);
map.addOverlay(placemark);
return placemark;
}
function removeAllOverlays (map) {
map.removeAllOverlays();
}
function AddRoute(wayPoint1, wayPoint2) {
if (myRouts.length>0 ) {lastRouter = myRouts[myRouts.length-1 ]; map.removeOverlay(lastRouter)};
var myRouter = new YMaps.Router([wayPoint1, wayPoint2], [], {viewAutoApply: true });
map.addOverlay(myRouter);
YMaps.Events.observe(myRouter, myRouter.Events.Success, function (myRouter) {
myRouter.getWayPoint(0 ).setIconContent(
myRouter.getWayPoint(1 ).setIconContent(
dlMar = myRouter.getDistance()/1000 ;
document.title =
});
myRouts.push(myRouter);
return true ;
}
function mapRazmer(map, SentrSh, SentrDlg, razmer) {
map.setCenter(new YMaps.GeoPoint(SentrSh, SentrDlg), razmer);
}
function changeStyle(numTochki, imStyle){
var restoreDefault = true ;
tochka = myPoints[numTochki];
tochka.setOptions({style: imStyle}, restoreDefault);
point = tochka.getCoordPoint();
map.setCenter(new YMaps.GeoPoint(point.__lng, point.__lat), 12 );
map.redraw();
return tochka.description;
}
</script>
</head>
<body //~~onload~~>
<div id="YMapsID" style="width:100%;height:100%" ></div>
</form>
</body>
</html>
Код вывода карты:
Код 1C v 8.х
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Макет = ПолучитьМакет( "Макет" ) ;
КодХТМЛ = Макет. ПолучитьТекст( ) ;
СтрокаСтиляНачальная = "var BurG = new YMaps.Style();
|BurG.iconStyle = new YMaps.IconStyle();
|BurG.iconStyle.offset = new YMaps.Point(-12, -12);
|BurG.iconStyle.href = "" http://www.burgerking.ru/favicon.ico"" ;
|BurG.iconStyle.size = new YMaps.Point(20, 20);
|BurG.hideIcon = false;
|BurG.balloonContentStyle = new YMaps.BalloonContentStyle("" my#template"" );" ;
СтрокаСтиляИтоговая = "" ;
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| ВидыОбъектов.Ссылка,
| ВидыОбъектов.ПутьКИконке,
| ВидыОбъектов.Код
|ИЗ
| Справочник.ВидыОбъектов КАК ВидыОбъектов
|ГДЕ
| ВидыОбъектов.ПометкаУдаления = ЛОЖЬ" ;
Результат = Запрос. Выполнить( ) ;
ВыборкаДетальныеЗаписи = Результат. Выбрать( ) ;
Пока ВыборкаДетальныеЗаписи. Следующий( ) Цикл
времСтрокаСтиля = СтрокаСтиляНачальная;
времСтрокаСтиля = стрЗаменить( времСтрокаСтиля, "BurG" , "s" + Строка( ВыборкаДетальныеЗаписи. код) ) ;
времСтрокаСтиля = стрЗаменить( времСтрокаСтиля, "http://www.burgerking.ru/favicon.ico" , сокрЛП( ВыборкаДетальныеЗаписи. ПутьКИконке) ) ;
СтрокаСтиляИтоговая = СтрокаСтиляИтоговая + времСтрокаСтиля + символы. ПС;
КонецЦикла ;
СтрокаСтиляИтоговая = СтрокаСтиляИтоговая + СтрокаСтиляНачальная + символы. ПС;
КодХТМЛ = стрЗаменить( КодХТМЛ, "/*vstavkaStiley;" , СтрокаСтиляИтоговая) ;
путьККаталогуКартинок = СтрЗаменить( КаталогПрограммы( ) , "\" , "/" ) ;
КодХТМЛ = СтрЗаменить( КодХТМЛ, "C:/" , путьККаталогуКартинок) ;
ЭлементыФормы. Карта. УстановитьТекст( КодХТМЛ) ;
табАдресов = получитьтабАдресов( ) ;
табУникальныхАдресов = табАдресов. скопировать( ) ;
табУникальныхАдресов. свернуть( "Уник" ) ;
тзДанных = табАдресов. скопировать( ) ;
табАдресов. очистить( ) ;
Для Каждого стр из табУникальныхАдресов Цикл
Отбор = Новый Структура( ) ;
Отбор. Вставить( "Уник" , стр. Уник) ;
Строки = тзДанных. НайтиСтроки( Отбор) ;
НовСтр = табАдресов. добавить( ) ;
НовСтр. уник = стр. уник;
Если Строки. Количество( ) > 0 Тогда
для Каждого тздстр из Строки Цикл
НовСтр. Адрес = тздстр. Адрес;
НовСтр. КД = тздстр. КД;
НовСтр. КШ = тздстр. КШ;
НовСтр. ВидОбъекта = тздстр. ВидОбъекта;
НовСтр. Наименование= Строка( НовСтр. Наименование) + Строка( тздстр. Наименование) + "; " ;
КонецЦикла ;
КонецЕсли ;
КонецЦикла ;
ЭлементыФормы. табАдресов. СоздатьКолонки( ) ;
ВыборМасштаба = "50%" ;
ВыборРегиона = "Москва" ;
ЭлементыФормы. Надпись24 . Заголовок = "Точек: " + Строка( табАдресов. количество( ) ) ;
КонецПроцедуры
Процедура ОсновныеДействияФормыОсновныеДействияФормыВыполнить(Кнопка)
Всего= Строка( табАдресов. Количество( ) ) ; н= 0 ;
Для каждого строкаАдреса Из табАдресов Цикл
н= н+ 1 ; Состояние( "Вывод " + Строка( н) + " из " + Всего) ;
УИД_Дока = Строка( н) ;
имяСтиля = "s" + Строка( строкаАдреса. ВидОбъекта. код) ;
Попытка
Если ЗначениеЗаполнено( строкаАдреса. КД) Тогда
ВызовФункции = "showAddressCoord(" + сокрЛП( строкаАдреса. КШ) + ", " + сокрЛП( строкаАдреса. КД) + ", '" + сокрЛП( строкаАдреса. адрес) + "', " + имяСтиля + ", '" + сокрЛП( строкаАдреса. ВидОбъекта. наименование) + "')" ;
Иначе
ВызовФункции = "showAddress('" + сокрЛП( строкаАдреса. адрес) + "', '" + сокрЛП( строкаАдреса. адрес) + "', " + имяСтиля + ", '" + сокрЛП( строкаАдреса. ВидОбъекта. наименование) + "')" ;
КонецЕсли ;
ЭлементыФормы. Карта. Document. parentWindow. eval( ВызовФункции) ;
исключение
Сообщить( "Точка с адресом " + сокрЛП( строкаАдреса. адрес) + " не может быть отбражена на карте!" ) ;
конецПопытки
КонецЦикла ;
ТочкиНеСозданы = Ложь ;
ЭлементыФормы. Карта. ПолучитьТекст( ) ;
КонецПроцедуры
Процедура Кнопка1Нажатие(Элемент)
если ЭлементыФормы. ВыборРегиона. значение = "Москва" Тогда
СтрокаКоординат = "37.64, 55.76, " ;
ИначеЕсли ЭлементыФормы. ВыборРегиона. значение = "Тверь" Тогда
СтрокаКоординат = "35.90, 56.83, " ;
ИначеЕсли ЭлементыФормы. ВыборРегиона. значение = "Балашиха" Тогда
СтрокаКоординат = "37.97, 55.82, " ;
Иначе
СтрокаКоординат = "37.64, 55.76, " ;
конецесли ;
Если ВыборМасштаба = "" тогда
возврат ;
конецесли ;
числоМасштаба = Число( Лев( ВыборМасштаба, стрдлина( ВыборМасштаба) - 1 ) ) ;
числоМасштаба = числоМасштаба + 5 ;
ВыборМасштаба = строка( числоМасштаба) + "%" ;
ТекущийМасштаб = Строка( Цел( ( числоМасштаба/ 125 ) * ( 20 ) + 4 ) ) ;
если стрДлина( ТекущийМасштаб) = 1 тогда
ТекущийМасштаб = "0" + ТекущийМасштаб;
конецесли ;
ЭлементыФормы. Карта. Document. parentWindow. eval( "mapRazmer(map," + СтрокаКоординат + ТекущийМасштаб + ")" ) ;
КонецПроцедуры
Пример обратного геокодирования - получение координат по адресу:
Код 1C v 8.х Процедура ПолучитьКоординаты() Экспорт
Яндекс = Новый HTTPСоединение( "geocode-maps.yandex.ru" , , , , , Истина ) ;
ВременныйФайл = КаталогВременныхФайлов( ) + "Yandex_geocode_" + СокрЛП( Новый УникальныйИдентификатор) ;
Попытка
Яндекс. Получить( "/1.x/?geocode=" + Адрес + "&results=1" , ВременныйФайл) ;
Исключение
Сообщить( "Ошибка при попытке геокодировать по яндексу адрес: " + Адрес) ;
Сообщить( ОписаниеОшибки( ) ) ;
Возврат ;
КонецПопытки ;
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML. ОткрытьФайл( ВременныйФайл) ;
ПостроительDOM = Новый ПостроительDOM;
ДокументДОМ = ПостроительDOM. Прочитать( ЧтениеXML) ;
СписокText = ДокументДОМ. ПолучитьЭлементыПоИмени( "text" ) ;
СписокPos = ДокументДОМ. ПолучитьЭлементыПоИмени( "pos" ) ;
Если ( СписокText. Количество( ) = 0 ) ИЛИ ( СписокPos. Количество( ) = 0 ) Тогда
Возврат ;
КонецЕсли ;
Для ъ = 0 по СписокText. Количество( ) - 1 Цикл
Координаты = СписокPos[Ъ]. ТекстовоеСодержимое;
Разделитель = Найти( Координаты, " " ) ;
Широта = Число( Сред( Координаты, Разделитель + 1 ) ) ;
Долгота = Число( Лев( Координаты, Разделитель - 1 ) ) ;
Если Широта = 0 ИЛИ Долгота = 0 Тогда
Продолжить;
КонецЕсли ;
КД = Долгота;
КШ = Широта;
КонецЦикла ;
КонецПроцедуры
Обработка вырванная из конфигурации: YandexMap.rar
Можно ее использовать как макет для создания обработки под свои требования.
Пример автоматизации в котором это использовалось.
Категория:
Географическая схема Как запретить создание документа копированием? Бывает, нужно программно запретить копирование документа , в данной статье несколько способов реализации этого:
Код 1C v 8.2 УП Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если НЕ Параметры. ЗначениеКопирования. Пустая( ) Тогда
Отказ = Истина ; СтандартнаяОбработка = Ложь ;
КонецЕсли ;
КонецПроцедуры
В перед открытием
Код 1C v 8.х Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Если ЭтоНовый( ) Тогда
Если ЗначениеЗаполнено( ПараметрОбъектКопирования) Тогда
Если ПараметрОбъектКопирования. Дата < Дата( "20100101000000" ) Тогда
Отказ = Истина ;
Сообщить( "Копирование документов заданного периода запрещено. Операция прервана" ) ;
КонецЕсли ;
КонецЕсли ;
КонецЕсли ;
КонецПроцедуры
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Если ЭтаФорма. ПараметрОбъектКопирования = Неопределено Тогда
Иначе
Отказ = Истина ;
КонецЕсли ;
КонецПроцедуры
запретить в форме Списка или Журнала в событии "перед началом добавления".
Код 1C v 8.х Процедура ДокументСписокПередНачаломДобавления(Элемент, Отказ, Копирование)
Если копирование = истина тогда
отказ = Истина .
КонецЕсли ;
КонецПроцедуры
Категория:
Документы Добавление поддержки нестандартного штрих-кода в обработке ПечатьЭтикеток Обработка
ПечатьЭтикеток использует компоненту "1С:Печать штрихкодов"(доступную на диске ИТС) для печати штрих-кодов(далее ШК). Эта компонента поддерживает следующие типы штрих-кодов: EAN8, EAN13, EAN128, Code39, Code128.
Что делать если на предприятии используется отличный ШК, например Interleave 2 of 5, для которго есть системный шрифт @IDAutomationSHI25M, используемый для вывода ШК на экран или на принтер.
Рассмотрим как проще всего добавить поддержку этого типа ШК в обработке
ПечатьЭтикеток .
Первым делом скопируем общий макет Этикетка в макет для вывода нашего штрих-кода ЭтикеткаInterleave. В этом макете надо удалить элемент управления, связанный с компонентой "1С:Печать штрихкодов". И оформить центральное поле как параметр табличного документа ШтрихКод, выводимый шрифтом @IDAutomationSHI25M.
Далее разрешаем запуск обработки даже с неустановленной компонентой т.к. для вывода нашего ШК компонента не нужна. Для этого комментируем строчку в модуле формы обработки:
Код 1C v 8.х Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Попытка
КомпонентШК = Новый COMОбъект( "V8.Barcod.1" ) ;
Макет = ПолучитьОбщийМакет( "Этикетка" ) ;
ЭтикеткаОбласть = Макет. ПолучитьОбласть( 1 , 1 , 4 , 2 ) ;
ЭтикеткаОбласть. Рисунки. Штрихкод. Объект. Сообщение = "1111111111116" ;
Исключение
Сообщить( "Компонента 1С:Печать штрихкодов не установлена на данном компьютере!
|Возможна печать только штрих-кодов Interleave!" , СтатусСообщения. Важное) ;
КонецПопытки ;
КонецПроцедуры
В общем модуле УправлениеРозничнойТорговлей также есть место проверки на компоненту
Код 1C v 8.х #Если Клиент Тогда
Процедура ПечатьЭтикеток(Товары = Неопределено) Экспорт
В обработке есть место, где выполняется проверка типа ШК. Наш ШК сейчас не пройдет проверку и печать выполнена не будет. Чтоб печать выполнялась необходимо исправить функцию в общем модуле УправлениеРозничнойТорговлей.
Код 1C v 8.х
Функция ПолучитьЗначениеТипаШтрихкодаДляЭУ(ТипКода) Экспорт
Перем Значение;
Если ТипКода = ПланыВидовХарактеристик. ТипыШтрихкодов. EAN8 Тогда
Значение = 0 ;
ИначеЕсли ТипКода = ПланыВидовХарактеристик. ТипыШтрихкодов. EAN13 Тогда
Значение = 1 ;
ИначеЕсли ТипКода = ПланыВидовХарактеристик. ТипыШтрихкодов. EAN128 Тогда
Значение = 2 ;
ИначеЕсли ТипКода = ПланыВидовХарактеристик. ТипыШтрихкодов. Code39 Тогда
Значение = 3 ;
ИначеЕсли ТипКода = ПланыВидовХарактеристик. ТипыШтрихкодов. Code128 Тогда
Значение = 4 ;
ИначеЕсли ТипКода = ПланыВидовХарактеристик. ТипыШтрихкодов. Interleave20FS Тогда
Значение = 100 ;
Иначе
Значение = - 1 ;
КонецЕсли ;
Возврат Значение;
КонецФункции
Мы на завершающем этапе, вносим изменения непосредственно в обработку.
Код 1C v 8.х Процедура Печать(ТаблицаТоваров) Экспорт
флВремЕстьInterleave = Ложь ;
флВремЕстьНеInterleave = Ложь ;
Для Каждого СтрокаИзСписка Из ТаблицаТоваров Цикл
Если СтрокаИзСписка. ТипШтрихкода = ПланыВидовХарактеристик. ТипыШтрихкодов. Interleave20FS Тогда
флВремЕстьInterleave = Истина ;
Иначе
флВремЕстьНеInterleave = Истина ;
КонецЕсли ;
Если флВремЕстьInterleave и флВремЕстьНеInterleave Тогда
Предупреждение( "В списке одновременно встречаются штрих-коды несовместимых типов,
|Штрих-коды Interleave необходимо печатать отдельно от остальных!" ) ;
Возврат ;
КонецЕсли ;
КонецЦикла ;
Таб = Новый ТабличныйДокумент;
Таб. ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Этикетка" + СокрЛП( ИмяКомпьютера( ) ) ;
Если флВремЕстьInterleave Тогда
Макет = ПолучитьОбщийМакет( "ЭтикеткаInterleave" ) ;
Иначе
Макет = ПолучитьОбщийМакет( "Этикетка" ) ;
КонецЕсли ;
Если Не флВремЕстьInterleave Тогда
РисунокШтрихкод = ЭтикеткаОбласть. Рисунки. Штрихкод;
КонецЕсли ;
Если Не флВремЕстьInterleave Тогда
РисунокШтрихкод. Расположить( ОбластьШтрихкод) ;
КонецЕсли ;
Если УправлениеРозничнойТорговлей. ПроверитьШтрихКод( СтрокаИзСписка. ШтрихКод,
СтрокаИзСписка. ТипШтрихкода) Тогда
Если флВремЕстьInterleave Тогда
ЭтикеткаОбласть. Параметры. Установить( 0 ,
СформироватьШтрихКодДляМакетаЭтикеткаInterleave( СтрокаИзСписка. ШтрихКод) ) ;
ЭтикеткаОбласть. Области. ОбластьШтрихкод. Шрифт =
Новый Шрифт( ЭтикеткаОбласть. Области. ОбластьШтрихкод. Шрифт, , РезмерШрифтаInterleave) ;
Иначе
Попытка
ЭтикеткаОбласть. Рисунки. Штрихкод. Объект. ТипКода = ТипКода;
ЭтикеткаОбласть. Рисунки. Штрихкод. Объект. Сообщение = СтрокаИзСписка. ШтрихКод;
Исключение
КонецПопытки ;
КонецЕсли ;
Последний штрих это добавить регулятор размера шрифта (в коде переменная РезмерШрифтаInterleave) на форму обработки:
источник Категория:
Штрих-код (barcode) Реализация расшифровки в Системе Компоновки Данных. Продолжая свой цикл заметок про СКД, сегодня я хотел бы поподробнее остановиться на расшифровке.
В СКД расшифровка представляет собой всплывающее меню (по двойному клику на ячейке), содержащие доступные пользователю действия, такие как открытие ссылки на элемент, упорядочивание, группировка, оформление и пр. Здесь я приведу примеры решения наиболее распространенных задач, связанных с расшифровкой, таких как:
1. Ограничение доступных действий;
2. Добавление в меню своего произвольного действия;
3. Добавление в меню различных действий, в зависимости от ячейки, для которой выполняется расшифровка.
Вся работа с расшифровкой, выполняется в событии ОбработкаРасшифровки. Что бы получить доступ к этому событию, необходимо сначала сгенерировать основную форму отчета. Затем ПолеТабличногоДокумента > Свойства > События.
Итак, задача №1. Постановка:
Необходимо доступные действия для пользователя ограничить только: открытием элемента, упорядочиванием и оформлением.
Решение:
Код 1C v 8.х Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
Перем ВыполненноеДействие;
СтандартнаяОбработка= Ложь ;
ОбработкаРасшифровки= Новый ОбработкаРасшифровкиКомпоновкиДанных( ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных( СхемаКомпоновкиДанных) ) ;
ДоступныеДействия= Новый Массив;
ДоступныеДействия. Добавить( ДействиеОбработкиРасшифровкиКомпоновкиДанных. Оформить) ;
ДоступныеДействия. Добавить( ДействиеОбработкиРасшифровкиКомпоновкиДанных. ОткрытьЗначение) ;
ДоступныеДействия. Добавить( ДействиеОбработкиРасшифровкиКомпоновкиДанных. Упорядочить) ;
Настройки= ОбработкаРасшифровки. Выполнить( Расшифровка, ВыполненноеДействие, ДоступныеДействия) ;
Если Настройки< > Неопределено Тогда
КомпоновщикНастроек. ЗагрузитьНастройки( Настройки) ;
ЭлементыФормы. Результат. Очистить( ) ;
СкомпоноватьРезультат( ЭлементыФормы. Результат, ДанныеРасшифровки) ;
КонецЕсли ;
КонецПроцедуры
Задача №2. Постановка:
Необходимо добавить в меню свое действие, открывающее основную форму элемента, содержащегося в ячейке, для которой выполняется расшифровка.
Решение:
Код 1C v 8.х Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
Перем ВыполненноеДействие;
СтандартнаяОбработка= Ложь ;
ОбработкаРасшифровки= Новый ОбработкаРасшифровкиКомпоновкиДанных( ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных( СхемаКомпоновкиДанных) ) ;
ДополнительныеДействия= Новый СписокЗначений;
ДополнительныеДействия. Добавить( "Действие1" , "Дополнительное действие 1" ) ;
Настройки= ОбработкаРасшифровки. Выполнить( Расшифровка, ВыполненноеДействие, , ДополнительныеДействия) ;
Если Настройки< > Неопределено Тогда
КомпоновщикНастроек. ЗагрузитьНастройки( Настройки) ;
ЭлементыФормы. Результат. Очистить( ) ;
СкомпоноватьРезультат( ЭлементыФормы. Результат, ДанныеРасшифровки) ;
Иначе
Если ВыполненноеДействие= "Действие1" Тогда
ВыполнитьДействие1 ( Расшифровка) ;
КонецЕсли ;
КонецЕсли ;
КонецПроцедуры
В процедуре ВыполнитьДействие1(Расшифровка) получаем ПараметрРасшифровки для выбранной ячейки и открывает основную форму:
Код 1C v 8.х Процедура ВыполнитьДействие1(Расшифровка)
Ссылка= ДанныеРасшифровки. Элементы[Расшифровка]. ПолучитьПоля( ) [0 ]. Значение;
Ссылка. ПолучитьФорму( ) . Открыть( ) ;
КонецПроцедуры
Задача №3. Постановка:
Необходимо в зависимости от колонки, для которой выполняется расшифровка, добавлять свои действия: для «Поле1» - «Действие1», для «Поле2» - «Действие2».
Решение:
Код 1C v 8.х Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
Перем ВыполненноеДействие;
СтандартнаяОбработка= Ложь ;
ОбработкаРасшифровки= Новый ОбработкаРасшифровкиКомпоновкиДанных( ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных( СхемаКомпоновкиДанных) ) ;
ДополнительныеДействия= Новый СписокЗначений;
Если ДанныеРасшифровки. Элементы[Расшифровка]. ПолучитьПоля( ) [0 ]. Поле= "Поле1" Тогда
ДополнительныеДействия. Добавить( "Действие1" , "Дополнительное действие 1" ) ;
ИначеЕсли ДанныеРасшифровки. Элементы[Расшифровка]. ПолучитьПоля( ) [0 ]. Поле= "Поле2" Тогда
ДополнительныеДействия. Добавить( "Действие2" , "Дополнительное действие 2" ) ;
КонецЕсли ;
Настройки= ОбработкаРасшифровки. Выполнить( Расшифровка, ВыполненноеДействие, , ДополнительныеДействия) ;
Если Настройки< > Неопределено Тогда
КомпоновщикНастроек. ЗагрузитьНастройки( Настройки) ;
ЭлементыФормы. Результат. Очистить( ) ;
СкомпоноватьРезультат( ЭлементыФормы. Результат, ДанныеРасшифровки) ;
Иначе
Если ВыполненноеДействие= "Действие1" Тогда
ВыполнитьДействие1 ( Расшифровка) ;
ИначеЕсли ВыполненноеДействие= "Действие2" Тогда
ВыполнитьДействие2 ( Расшифровка) ;
КонецЕсли ;
КонецЕсли ;
КонецПроцедуры
Как видите, ничего сложного здесь нет!
Источник
При использовании в типовой конфигурации:
Код 1C v 8.х
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
Если ДанныеРасшифровки. Элементы. Получить( Расшифровка) . ПолучитьПоля( ) [0 ]. Поле = "ДокументОприходования" Тогда
Док = ДанныеРасшифровки. Элементы. Получить( Расшифровка) . ПолучитьПоля( ) . Найти( "ДокументОприходования" ) . Значение;
Если ТипЗнч( Док) = Тип( "ДокументСсылка.ПоступлениеТоваровУслуг" ) Тогда
СтандартнаяОбработка = Ложь ;
Предупреждение( Док. Комментарий) ;
Возврат ;
КонецЕсли ;
КонецЕсли ;
ТиповыеОтчеты. СтандартнаяОбработкаРасшифровкиТиповогоОтчета( ОтчетОбъект, ЭтаФорма, Расшифровка, СтандартнаяОбработка) ;
КонецПроцедуры
Категория:
Схема Компоновки Данных Отправка отчетов из 1С по электронной почте (E-Mail) Автоматическая генерация отчета "Анализ заказов поставщикам"
Отчет анализ заказов является штатным отчетом конфигурации 1С Управление производственным предприятием. Обработка для генерации отчета, рассматриваемая в данной статье, позволяет программно создать и настроить форму отчета, запустить его выполнение. Полученный результат сохраняется в файл Microsoft Excel (XLS, XLSX) и может быть отправлен по электронной почте.
Предлагаемое решение состоит из трех файлов: Скачивать файлы может только зарегистрированный пользователь!
service.vbs служит для запуска 1С предприятия и генерации отчета;
emailer.vbs - VBS скрипт предназначен для отправки результатов выполнения запроса отчета на указанный при настройке адрес электронной почты;
rep_email.epf - сама внешняя обработка для генерации отчета, выполняющая настройки отображаемых показателей, группировок строк и столбцов, установки требуемых отборов отчета, обеспечивает выполнение запроса и формирования табличного документа по макету отчета и сохранение сформированного отчета в XLS файл.
Запуск отчета выполняется посредством VBS файла (vbscript) при помощи "Назначенных заданий". VBS программа обеспечивает запуск приложения 1С, устанавливает соединение с сервером 1С и передает управление внешней обработке через экспортную функцию ReportNow(), размещенную в общем модуле обработки по генерации отчета. Пример VBS Script для выполнения внешней обработки 1С из командной строки:
Код VBS
Set v81 = CreateObject ("V81.Application" )
res = v81.Connect("Srvr=Server1C;Ref = db1C;Usr=User1C;Pwd=Password1C" )
res = v81.ExternalDataProcessors.Create("C:\1C\Service\rep_email.epf" ).ThisObject.Report()
v81.Exit (false )
WScript.Sleep(5000 )
Dim WshShell
Set WshShell = WScript.CreateObject ("WScript.Shell" )
WshShell.Run "C:\1C\ Service\emailer.vbs"
VBS E-Mail скрипт для отправки готового отчета в формате Excel создает новое электронное письмо на заданный адрес, в теле письма указывает пояснение к отчету, а в качестве вложения прикрепляет файл, создание и наполнение информацией которого была произведена при запуске service.vbs
Код VBS
Const cdoSendUsingPickup = 1
Const cdoSendUsingPort = 2
Const cdoAnonymous = 0
Const cdoBasic = 1
Const cdoNTLM = 2
Set objMessage = CreateObject ("CDO.Message" )
objMessage.Subject = "Ежедневный отчет Анализ заказов поставщикам"
objMessage.From = "" "Генератор отчетов" " "
objMessage.To = "email@domain.org; recv@domain.net; last@domain.ru"
objMessage.TextBody = "JSC AUTO SERVICE. Please find Orders reporting in attachment." & vbCRLF & _
"------------------------------------------" & vbCRLF & _
"Best regards, Auto report service" & vbCRLF & _
"Support line: it@domian.ru" & vbCRLF
objMessage.AddAttachment "C:\1C\Service\ЗаказыПоставщику.xls"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing" ) = 2
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver" ) = "mail.domain.ru"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ) = cdoBasic
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername" ) = "report@domain.ru"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword" ) = "youpassword"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport" ) = 25
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl" ) = False
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout" ) = 60
objMessage.Configuration.Fields.Update
objMessage.Send
Внешняя обработка по запуску отчета "Анализ заказов поставщику" состоит из двух процедур. Первая - "ReportNow() Экспорт" служит для определения входной точки передачи управления от VBS к 1С. Вторая - "ОткрытьОтчетПоИмени()" - выполняет действия по настройке критериев отбора отчета, группировке строк и столбцов, определению состава количественных показателей. Данный способ вызова отчетов стандартной конфигурации широко применяется в различных формах 1С, и по мере развития конфигурации может быть позаимствован как минимум из нескольких форм списка справочников (Контрагенты, Номенклатура и т.д.). Исходный код первой функции: >
Код 1C v 8.х Процедура ReportNow() Экспорт
ОткрытьОтчетПоИмени( "АнализЗаказовПоставщикам" ) ;
КонецПроцедуры
Сохранение отчета из 1С в Excel
Процедура формирования формы отчета принимает в качестве параметра название объекта метаданных конфигурации, в данном случае - "АнализЗаказовПоставщикам". Очевидно, что в зависимости от типа отчета процедура будет меняться пропорционально используемым реквизитам. В рассматриваемом примере добавляется отбор по контрагенту. Для своего ключевого поставщика заменить значение искомого наименования на нужное.
Код 1C v 8.х Процедура ОткрытьОтчетПоИмени(НазваниеОтчета) Экспорт
Отчет = Отчеты[НазваниеОтчета]. Создать( ) ;
Форма = Отчет. ПолучитьФорму( , , ) ;
Форма. Открыть( ) ;
Отчет. УстановитьНачальныеНастройки( ) ;
ТекОтбор = Отчет. УниверсальныйОтчет. ПостроительОтчета. Отбор. ДоговорКонтрагентаВладелец;
ТекОтбор. Использование = Истина ;
ТекОтбор. Значение = Справочники. Контрагенты. НайтиПоНаименованию( "Поставщик" ) ;
ТекОтбор. ВидСравнения = ВидСравнения. Равно;
Отчет. УниверсальныйОтчет. ПостроительОтчета. Отбор. Добавить( "ОсталосьОтгрузитьЕдиницОтчетов" ) ;
ТекОтбор1 = ОтчетОстатки. УниверсальныйОтчет. ПостроительОтчета. Отбор. ОсталосьОтгрузитьЕдиницОтчетов;
ТекОтбор1 . Использование = Истина ;
ТекОтбор1 . Значение = 0 ;
ТекОтбор1 . ВидСравнения = ВидСравнения. Больше;
Отчет. СостояниеОтгрузкиПоЗаказу = истина ;
Отчет. НеОтгружено = Истина ;
Отчет. ОтгруженоЧастично = Истина ;
Отчет. СформироватьОтчет( ФормаОтчета. ЭлементыФормы. ПолеТабличногоДокументаРезультат) ;
мПутьШаблон= "C:\1C\Service" ;
мФайлШаблон= "ЗаказыПоставщику.xls" ;
ИмяФайла = мПутьШаблон + "\" + мФайлШаблон;
Если Не ИмяФайла = Неопределено Тогда
Форма. ЭлементыФормы. ПолеТабличногоДокументаРезультат. СохранятьСвойстваОтображения = Истина ;
Форма. ЭлементыФормы. ПолеТабличногоДокументаРезультат. Записать( ИмяФайла, ТипФайлаТабличногоДокумента. XLS97) ;
КонецЕсли ;
ФормаОтчета. Закрыть( ) ;
КонецПроцедуры
Для того, чтобы отладить обработку в режиме 1С:Предприятие, запущенного из конфигуратора можно создать экранную форму обработки и разместить в ней следующую процедур автоматического запуска отлаживаемого отчета:
Код 1C v 8.х Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Отказ = истина ;
ОткрытьОтчетПоИмени( "АнализЗаказовПоставщикам" ) ;
КонецПроцедуры
Надеемся, что успешная комбинация внешней обработки для запуска отчета по расписанию и vbscript поможет в автоматизации бизнеса вашего предприятия. Данная редакция настроек больше ориентирована на менеджера поставщика для вашей компании, что отслеживать взаимное движение товаров и документов.
Источник
Руководство компании, хочет получать оперативную сводку продаж по фирме Категория:
Работа с Интернет, Почтой (Mail), FTP СКД и Сводная таблица В СКД - набор данных Объект. Имя объекта - Табл
Табл - это Таблица Значений, которую я получаю из внешнего файла
В форме отчета, в процедуре
ПередОткрытием() есть следующий код:
Код 1C v 8.х ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных. Вставить( "Табл" , Табл) ;
СхемаКомпоновкиДанных = ПолучитьМакет( "ОсновнаяСхемаКомпоновкиДанных1" ) ;
Настройки = СхемаКомпоновкиДанных. НастройкиПоУмолчанию;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета. Выполнить( СхемаКомпоновкиДанных, Настройки) ;
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных. Инициализировать( МакетКомпоновки, ВнешниеНаборыДанных) ;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода. УстановитьДокумент( ЭлементыФормы. Результат) ;
ПроцессорВывода. Вывести( ПроцессорКомпоновкиДанных) ;
ИсточникСводнойТаблицы = Новый ИсточникДанныхСводнойТаблицыКомпоновкиДанных;
ИсточникСводнойТаблицы. УстановитьСхему( СхемаКомпоновкиДанных) ;
ЭлементыФормы. Результат. ВстроенныеТаблицы. СводнаяТаблица1 . ИсточникДанных = ИсточникСводнойТаблицы;
ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных( СхемаКомпоновкиДанных) ;
КомпоновщикНастроек. Инициализировать( ИсточникНастроек) ;
ИсточникСводнойТаблицы. УстановитьНастройки( КомпоновщикНастроек. Настройки) ;
Нужно сделать набор данных - запрос и оставить код, который выше, после "Затем добавляю строки по выводу СКД:" и все прекрасно выводится в сводной таблице
ПодводныйТаракан Категория:
Схема Компоновки Данных Как Копировать Документ, имея ссылку источник? Код 1C v 8.х
ДокументКопия = ИсходныйДокумент. Скопировать( ) ;
ДокументКопия. Дата = РабочаяДата;
ДокументКопия. Записать( ) ;
При применении метода Скопировать() все реквизиты нового документа получают свои значения из переменной ИсходныйДокумент. Исключение составляют значения реквизитов Дата и Проведен.
Поэтому, если копирование документа не сопровождается
открытием его формы, дату нового документа лучше установить самостоятельно.
В нашем примере в качестве значения реквизита Дата устанавливаем дату, которую обычно используют для
Категория:
Документы