четверг, 9 апреля 2009 г.
Изменения свойства предопределённости
вторник, 7 апреля 2009 г.
4ФСС, заполнение из внешних данных.
Однако внешними данными для УПП могут является только файлы xml выгруженные их ЗуП и как говорится пользователям ЗиК просьба не беспокоить.
Следующая кнопка позволяет быстро заполнить регламентированный отчет, данными импортируемыми из ЗиК
//Осуществляет ипорт данных из файлов 7.7 prb
//
Процедура КоманднаяПанельФормыИмпорт77(Кнопка)
Длг = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Длг.Заголовок = "Выберите файлы данных регламентированной отчетности";
Длг.Фильтр = "Файлы данных 7.7 (*.prb)|*.prb|Все файлы (*.*)|*.*";
Длг.Расширение = ".prb";
Длг.МножественныйВыбор=Истина;
Если Длг.Выбрать() Тогда
Текст="";
Для каждого ИмяФайла из Длг.ВыбранныеФайлы Цикл
ТекстДок=Новый ТекстовыйДокумент;
ТекстДок.Прочитать(ИмяФайла);
Текст=Текст+ТекстДок.ПолучитьТекст();
КонецЦикла;
//теперь формируем таблицу с значениями
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.IgnoreCase = Истина;
RegExp.MultiLine = Истина;
RegExp.Global = Истина;
RegExp.Pattern = "{""(N|S)"",""0"",""0"",""0"",""0"",""0"",""((?:.|\s)*?)""},""(П\d*)""}"; //ШАБЛОН РЕГУЛЯНОГО ВЫРАЖЕНИЯ
Вхождения = RegExp.Execute(Текст);
Результат=Неопределено;
Для Каждого Вхождение из Вхождения Цикл
Если Результат=Неопределено Тогда
Результат=Новый ТаблицаЗначений;
Для Колонка=1 по Вхождение.SubMatches.Count Цикл
Результат.Колонки.Добавить("Колонка"+(Колонка-1),Новый ОписаниеТипов("Строка"));
КонецЦикла;
КонецЕсли;
НоваяСтрока=Результат.Добавить();
Для каждого Колонка из Результат.Колонки Цикл
НоваяСтрока[Результат.Колонки.Индекс(Колонка)]=Вхождение.SubMatches(Результат.Колонки.Индекс(Колонка));
КонецЦикла;
Состояние(Результат.Количество());
Попытка
НоваяСтрока.Колонка1=Число(СокрЛП(НоваяСтрока.Колонка1));
Исключение
КонецПопытки;
КонецЦикла;
//заполняем печ формы
Если Не Результат=Неопределено Тогда
Для Каждого СтрокаОписанияТД из мСвойстваРазделовДекларации.Строки Цикл
ТабПоле=ЭлементыФормы["ПолеТабличногоДокумента"+СтрокаОписанияТД.ИмяСтраницы];
Для каждого Строка из Результат Цикл
Попытка
ТабПоле.Области[Строка.Колонка2].Значение=Строка.Колонка1;
Состояние(Строка.Колонка2+" - "+Строка.Колонка1);
Исключение
Конецпопытки;
КонецЦикла;
Расчет(СтрокаОписанияТД.ИмяСтраницы);
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
воскресенье, 29 марта 2009 г.
GWT, интернационализация
Здесь напишу некоторые основные моменты
Итак интернационализация в GWT может быть как статической так и динамической. Здесь расскажу о статической.
Статическая.
Для реализации создаем интерфейс, наследуемый от i18.Constants
public interface Constants extends com.google.gwt.i18n.client.Constants
{
public String const1();
public String const2();
}каждый метод этого интерфейса будет является константой. Сами константы хранятся в фалах с раcшрением .properties и именем интерфейса, для нашего случая это будут Constants.properties и родной :) Constants_ru.properties. Файл Constants_ru.properties должен быть в кодировке UTF-8. Если у Вас Eclipse тогда File-Properties
Примерно такого содержания.
const1=root
const2=Clic me
и
const1=Администратор
const2=Нажми меня
Теперь прописываем в <..>.gwt.xml наши локали.
<inherits name="com.google.gwt.i18n.I18N"/>
<extend-property name="locale" values="ru"/>
<extend-property name="locale" values="en"/>
На этом все подготовительные действия закончены.
Для использования дополнительно импортируем:
com.google.gwt.core.client.GWT, и созданный интерфейс.
constants = (Constants) GWT.create(Constants.class);//Создаем экземпляр интерфейса
Button button = new Button(constants.const2()); //создаем кнопочку с надписью "Нажми меня"
Все....
По умолчанию будет использоваться американская локализация, русскую можно получить передав в HTTP запрос значение переменной locale
http://www.example.org/myapp.html?locale=ru
или отредактировав начальный HTML
<html>
<head>
<meta name="gwt:property" content="locale=ru">
</head>
<body>
<script src="demo.app.nocache.js " />
</body>
</html>
воскресенье, 15 марта 2009 г.
Молодежь?
Может во все времена такое отношение к молодежи. Но я думаю лет через 10 будет страшно ходить в больницы, потому что там будут мои ровесники - "потребители".
суббота, 7 марта 2009 г.
Если гора не идет к Магомеду....
Прошло достаточно много времени и в один случайный день наткнулся я на замечательный сервис производства Yahoo, Pipes (не думал что у Yahoo могут быть столь перспективные вещи!!, все как то по Гуглу).
В двух словах можно почитать здесь.
Вообщем можно:
-объединять RSS;
-преобразовывать HTML в RSS;
-использовать RegExp;
И все это в графическом!!! интерфейсе. (Чем то напоминает групповую обработку в Ei).
Вообщем вещь чумовая. Особо разобраться не успел. Однако сразу вспомнился Инфострат с его RSS :)
В общем задался преобразовать новости инфостарт в RSS. И.... за 1 час лента готова. Правда не в чистом Pipes, но все равно ноги растут от туда :).
Есть несколько сайтов, которые преобразуют HTML в RSS (на основе pipes):
- http://feed43.com/ (Чемпион)
- http://www.feedity.com/
- http://www.feedyes.com/
Лента конечно имеет ряд недостатков:
1. Обновляется раз в 6 часов (мне хватает)
2. Мало информации, не хватает категорий (1cv8, 1c77 и т.д)
Думаю все таки окончательно разобраться с Pipes, и провести генерацию без посредников.

P.S. Пример ленты можно увидеть и в этом блоге, в правом фрейме, в самом низу.
вторник, 3 марта 2009 г.
ЕдиницаХранениеОстаков перенос в КД

Очередная заметка по КД. Относится к разряду частых проблем. При переносе данных из УПП например в УПП очень редко удается обойтись без перегрузки номенклатуры. Так вот если справочник номенклатура выгружать только по ссылкам (из переносимых документов) тогда поля:
- ЕдиницаХраненияОстатков;
- ЕдиницаДляОтчетов;
Есть два решения этой проблемы:
- В ПКО "Номенклатура" поставить свойство "Не запоминать выгруженные объекты". Это самый простой способ однако в этом случае при большом количестве документов (в котором есть повторяющаяся номенклатура) обмен значительно замедлится, и число данных для загрузки может многократно увеличится.
Скопировать ПКО "ЕдиницаИзмерения" назовем его ПКО "ЕдиницаИзмерения_Владелец" и в данным ПКО для ПКС "Владелец" укажем получать из входящих данных. После чего в ПКО номенклатура для данных реквизитов явно укажем правило конвертации "ЕдиницаИзмерения_Владелец" и в обработчике ПКС ПередВыгрузкой объекта передадим явно владельца
Какой вариант использовать, решать Вам.Удачи.
четверг, 1 января 2009 г.
ИМЕЮЩИЕ / HAVING
Обнаружил еще одно отличие синтаксиса запросов 1С от синтаксиса SQL, в в редко используемой конструкции ИМЕЮЩИЕ.
Предложение ИМЕЮЩИЕ позволяет накладывать условия на значения агрегатных функций. В других конструкциях языка запросов, например, в предложении ГДЕ, использовать агрегатные функции в условиях нельзя. В условии отбора ИМЕЮЩИЕ можно использовать только агрегатные функции и поля, по которым осуществляется группировка.
В синтаксисе запросов 1С нельзя указывать псевдоним поля, в этой конструкции.
ВЫБРАТЬРеализацияТоваровуслугТовары.Номенклатура,
СУММА(РеализацияТоваровуслугТовары.Количество) КАК Продано
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровуслугТовары
СГРУППИРОВАТЬ ПО
РеализацияТоваровуслугТовары.Номенклатура
ИМЕЮЩИЕ
СУММА(РеализацияТоваровуслугТовары.Количество) >= 70
Ну а соответственно в SQL можно, что очень удобно, поскольку у агрегатного поля всегда есть псевдоним.
Вот пример запроса на SQL.
SELECT
Fld16131,
Fld16132,
SUM(Fld16134) AS Fld16134Turnover
FROM AccumReg16128
WHERE Active
GROUP BY Fld16131, Fld16132
HAVING Fld16134Turnover <> 0