Friday, July 8, 2011

реиндексация ms sql 2008

declare @minRows int

set @minRows = 100


declare @reindexQuery nvarchar(max)


set @reindexQuery =

REPLACE(REPLACE(

cast(

(

select

'BEGIN TRY ALTER INDEX '+idx.name+' ON '+ sc.name+'.'+ t.name+

CASE

WHEN st.avg_fragmentation_in_percent > 30 THEN ' REBUILD WITH (ONLINE=ON) END TRY BEGIN CATCH ALTER INDEX '+idx.name+' ON '+ sc.name+'.'+ t.name+ ' REBUILD WITH (ONLINE=OFF) END CATCH;'

ELSE ' REORGANIZE END TRY BEGIN CATCH END CATCH;'

END as query


from sys.dm_db_index_physical_stats( DB_ID(),NULL,NULL,NULL,NULL) st

join sys.tables t on (st.object_id=t.object_id)

join sys.schemas sc on (sc.schema_id=t.schema_id)

join sys.indexes idx on (t.object_id=idx.object_id and st.index_id=idx.index_id)

join sys.partitions p on (p.index_id=idx.index_id and p.object_id=idx.object_id)

where p.rows > @minRows and st.avg_fragmentation_in_percent > 5

order by st.avg_fragmentation_in_percent desc

FOR XML PATH(''), TYPE

) as nvarchar(max))

,'',';

'),'','')


print @reindexQuery


exec (@reindexQuery)

Tuesday, July 5, 2011

Описание с сайта Гилева по установке 1С 8

http://gilev.ru/1c/mssql/index.htm

Перестройка индексов MS SQL Server

USE db1cut
GO
DECLARE @MyTable varchar(252)
DECLARE @MyIndex varchar(252)
DECLARE @DSQL varchar(8000)
DECLARE MyCursor CURSOR FOR
SELECT o.name, i.name
FROM sysobjects o INNER JOIN sysindexes i ON o.id = i.id
WHERE (o.xtype = 'U') AND (INDEXPROPERTY(i.id, i.name, 'isStatistics') = 0) AND (i.dpages > 0)
ORDER BY o.name, i.indid

OPEN MyCursor
FETCH NEXT FROM MyCursor INTO @MyTable, @MyIndex
WHILE @@FETCH_STATUS=0

BEGIN
PRINT 'Перестройка индекса '+@MyIndex+' из таблицы '+@MyTable
SET @DSQL = ' BEGIN TRY
ALTER INDEX '+@MyIndex+' ON '+@MyTable+
' REBUILD WITH (ONLINE = ON,
SORT_IN_TEMPDB = ON,
STATISTICS_NORECOMPUTE = ON)
END TRY

BEGIN CATCH ALTER INDEX '+@MyIndex+' ON '+@MyTable+
' REBUILD WITH (ONLINE = OFF,
SORT_IN_TEMPDB = ON,
STATISTICS_NORECOMPUTE = ON) END CATCH;'
EXEC(@DSQL)

FETCH NEXT FROM MyCursor INTO @MyTable, @MyIndex

END
CLOSE MyCursor
DEALLOCATE MyCursor


как всегда спасибо Гилев

Friday, April 29, 2011

Объединение таблиц значений в 1С 8.х через запрос и временные таблицы

Запрос = Новый Запрос;
Запрос.Текст = "Выбрать * ПОМЕСТИТЬ ВремТабл Из &ТабЗнач1 как ТабЗнач1;
| Выбрать * ПОМЕСТИТЬ ВремТабл1 Из &ТабЗнач как ТабЗнач;
| Выбрать * ИЗ ВремТабл ОБЪЕДИНИТЬ ВСЕ Выбрать * ИЗ ВремТабл1";

Запрос.УстановитьПараметр("ТабЗнач",ТаблицаИсточник1);
Запрос.УстановитьПараметр("ТабЗнач1",ТаблицаИсточник2);
ИтоговаяТаблица = Запрос.Выполнить().Выгрузить();

Загрузка объектов xml через XDTO

ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогОткрытияФайла.Заголовок = "Выберите файл xml";
ДиалогОткрытияФайла.Фильтр = "Формат xml(*.xml)|*.xml";
ДиалогОткрытияФайла.ПроверятьСуществованиеФайла = Истина;
Если Не ДиалогОткрытияФайла.Выбрать() тогда
возврат;
КонецЕсли;
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(ДиалогОткрытияФайла.ПолноеИмяФайла);
//прочитаем начало xml файла
Чтение.ПерейтиКСодержимому();

//прочитаем начало корневого элемента
Чтение.Прочитать();

//читаем содержимое пока текущим не станет конец корневого элемента, т.к. мы писали туда только целые элементы справочника,
//а сериализатор читает каждый из их полностью, то мы упремся именно в конец корневого
Пока Чтение.ТипУзла<>ТипУзлаXML.КонецЭлемента Цикл

//читаем очередной элемент справочника
Объект = СериализаторXDTO.ПрочитатьXML(Чтение);
Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();
//покажем что прочитали, осталось только записать объект
Сообщить(""+ТипЗнч(Объект)+" - "+Объект);
КонецЦикла;

Чтение.Закрыть();

Friday, February 25, 2011

маркет плюс, средний чек

SELECT
SAREA.SAREANAME
--,Substring([SALESTIME],1,8) as [день]
--,Substring([SALESTIME],9,2) as [час]

--,[PACKNAME] as [фискалка]

,Sum(case [SALESREFUND] when 0 then [SALESSUM] else -1*[SALESSUM] end )/100 as [Сумма]
,Sum(case [SALESREFUND] when 0 then [SALESSUM] else -1*[SALESSUM] end )/100/Count([FRECNUM]) as [среднийчек]
,Count([FRECNUM]) as [чеков]



FROM [GuidForMP].[dbo].[SALES] [sales]
left join [GuidForMP].dbo.SAREA SAREA on SAREA.SAREAID=sales.SAREAID
where Substring([SALESTIME],1,6)='201101' and SALESTAG = 2 AND SALESCANC=0 AND sales.DELFLAG=0
group by SAREA.SAREANAME
--group by SAREA.SAREANAME,Substring([SALESTIME],1,8),Substring([SALESTIME],9,2),[PACKNAME]
--order by SAREA.SAREANAME,Substring([SALESTIME],1,8),Substring([SALESTIME],9,2),[PACKNAME]

Tuesday, February 22, 2011

Игры с построителем отчета в 1с

Необходимо было сделать отчет с анализатором остатков по дням, решил долго не мучатся и сделать через ПостроительОтчета в 1С. Необходимые поля:
1. Номенклатура+артикул
2. Дни (анализ делаем за каждый день)
3. Заказано (какое количество номенклатуры было заказано за период)
4. Отгружено (Считай приходные накладные)
5. Возврат (сколько вернули)
6. Остаток товара на конец дня
7. Маленький такой анализ % возврата.

Вид картинкой:


А теперь сам код:

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
НачалоПериода = началоМесяца(ТекущаяДата());
КонецПериода = КонецДня(ТекущаяДата());
ОтчетИнициализация();

КонецПроцедуры

Процедура ПриЗакрытии()

//СохранитьЗначение("НастройкаВнешниеОбработкиВнешняяОбработка3Отчет_bc39e421-f272-414c-9c50-d1bfb9a20f26", ПостроительОтчетаОтчет.ПолучитьНастройки());

КонецПроцедуры

Процедура ДействияФормыОтчетНастройка(Кнопка)
//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПОСТРОИТЕЛЬОТЧЕТА_НАСТРОЙКА(Отчет)
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

Форма = ВнешняяОбработкаОбъект.ПолучитьФорму("ОтчетНастройка");
//ПостроительОтчетаОтчет.ИзмеренияКолонки.Добавить("Дата");
//ПостроительОтчетаОтчет.ИзмеренияКолонки.Удалить(ПостроительОтчетаОтчет.ИзмеренияКолонки[0]);
Форма.ПостроительОтчета = ПостроительОтчетаОтчет;
Настройка = ПостроительОтчетаОтчет.ПолучитьНастройки();
Если Форма.ОткрытьМодально() = Истина Тогда
ОтчетВывести();
Иначе
ПостроительОтчетаОтчет.УстановитьНастройки(Настройка);
КонецЕсли;

//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПОСТРОИТЕЛЬОТЧЕТА_НАСТРОЙКА
КонецПроцедуры

Процедура ДействияФормыОтчетСформировать(Кнопка)
//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА(Отчет)
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

ОтчетВывести();

//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА
КонецПроцедуры

Процедура ОтчетВывести()
//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПОСТРОИТЕЛЬОТЧЕТА_ВЫПОЛНИТЬ(Отчет)
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
//ОтчетИнициализация();
ЭлементыФормы.ПолеТабличногоДокумента.Очистить();

ПостроительОтчетаОтчет.Параметры.Вставить("КонецПериода", КонецПериода);
ПостроительОтчетаОтчет.Параметры.Вставить("Контрагент", Контрагент);
ПостроительОтчетаОтчет.Параметры.Вставить("НачалоПериода", НачалоПериода);
ПостроительОтчетаОтчет.Параметры.Вставить("ПодразделениеКомпании", ПодразделениеКомпании);
ПостроительОтчетаОтчет.ТекстЗаголовка = "Анализ заказов по " + ПодразделениеКомпании.Наименование +Символы.ПС
+ " контрагент " + Контрагент.Наименование
+" период с  " + Формат(НачалоПериода,"ДФ=dd.MM.yyyy")+ " по " + Формат(КонецПериода,"ДФ=dd.MM.yyyy");

ПостроительОтчетаОтчет.Выполнить();
ПостроительОтчетаОтчет.РазмещениеИзмеренийВСтроках = ТипРазмещенияИзмерений.Вместе;
ПостроительОтчетаОтчет.РазмещениеРеквизитовИзмеренийВСтроках = ТипРазмещенияРеквизитовИзмерений.Отдельно;
ПостроительОтчетаОтчет.РазмещениеРеквизитовИзмеренийВКолонках = ТипРазмещенияРеквизитовИзмерений.Отдельно;

ПостроительОтчетаОтчет.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Песок);



Макет=ПостроительОтчетаОтчет.Макет;
Область = Макет.Область();
Область.ШиринаКолонки = 10;
Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
ТекущаяОбласть = Неопределено;

ТекущаяОбласть = Макет.НайтиТекст("Номенклатура", ТекущаяОбласть, Макет.Область());
Если ТекущаяОбласть <> Неопределено Тогда
ТекущаяОбласть.ШиринаКолонки  = 70;
ТекущаяОбласть.Обвести(Линия,Линия,Линия,Линия);
КонецЕсли;

ТекущаяОбласть = Макет.НайтиТекст("Артикул", ТекущаяОбласть, Макет.Область());
Если ТекущаяОбласть <> Неопределено Тогда
ТекущаяОбласть.ШиринаКолонки  = 8;
ТекущаяОбласть.Обвести(Линия,Линия,Линия,Линия);
КонецЕсли;

ТекущаяОбласть = Макет.НайтиТекст("Заказано", ТекущаяОбласть, Макет.Область());
Если ТекущаяОбласть <> Неопределено Тогда
ТекущаяОбласть.ШиринаКолонки  = 8;
ТекущаяОбласть .Обвести(Линия,Линия,Линия,Линия);
КонецЕсли;

ТекущаяОбласть = Макет.НайтиТекст("Отгружено", ТекущаяОбласть, Макет.Область());
Если ТекущаяОбласть <> Неопределено Тогда
ТекущаяОбласть.ШиринаКолонки  = 8;
ТекущаяОбласть .Обвести(Линия,Линия,Линия,Линия);
КонецЕсли;

ТекущаяОбласть = Макет.НайтиТекст("Возврат", ТекущаяОбласть, Макет.Область());
Если ТекущаяОбласть <> Неопределено Тогда
ТекущаяОбласть.ШиринаКолонки  = 8;
ТекущаяОбласть .Обвести(Линия,Линия,Линия,Линия);
КонецЕсли;

ТекущаяОбласть = Макет.НайтиТекст("Остаток", ТекущаяОбласть, Макет.Область());
Если ТекущаяОбласть <> Неопределено Тогда
ТекущаяОбласть.ШиринаКолонки  = 8;
ТекущаяОбласть .Обвести(Линия,Линия,Линия,Линия);
КонецЕсли;

ТекущаяОбласть = Макет.НайтиТекст("ПроцентВозврата", ТекущаяОбласть, Макет.Область());
Если ТекущаяОбласть <> Неопределено Тогда
ТекущаяОбласть.ШиринаКолонки  = 0;
ТекущаяОбласть.Видимость=Ложь;

КонецЕсли;

ПостроительОтчетаОтчет.Макет = Макет;



ПостроительОтчетаОтчет.Вывести(ЭлементыФормы.ПолеТабличногоДокумента);
ЭлементыФормы.ПолеТабличногоДокумента.ФиксацияСверху=5;
ЭлементыФормы.ПолеТабличногоДокумента.ФиксацияСлева=3;
//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПОСТРОИТЕЛЬОТЧЕТА_ВЫПОЛНИТЬ
КонецПроцедуры

Процедура ОтчетИнициализация()
//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПОСТРОИТЕЛЬОТЧЕТА_ИНИЦИАЛИЗАЦИЯ(Отчет)
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Текст = "";
СчДней=Формат(НачалоПериода,"ДФ=yyyyMMdd");
ДатаЦикла=КонецДня(НачалоПериода);

Текст =
"ВЫБРАТЬ
|   &Д"+СчДней+" КАК Период,
|   ПартииТоваровКомпанииОстатки.Номенклатура,
|   ПартииТоваровКомпанииОстатки.Номенклатура.Артикул Как Артикул,
|   ПартииТоваровКомпанииОстатки.КоличествоОстаток КАК Остаток
|   ПОМЕСТИТЬ ТемпОст
|ИЗ
|   РегистрНакопления.ПартииТоваровКомпании.Остатки(&Д"+СчДней+",СкладКомпании.Подразделение=&ПодразделениеКомпании И Партия.Контрагент=&Контрагент) КАК ПартииТоваровКомпанииОстатки
|   ";

ПостроительОтчетаОтчет.Параметры.Вставить("Д"+СчДней, началоПериода);
Пока ДатаЦикла <= КонецПериода  Цикл

ДатаЦикла=КонецДня(ДатаЦикла+2);
СчДней = Формат(ДатаЦикла,"ДФ=yyyyMMdd");

Текст = Текст +
"
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
|   &Д"+СчДней+" КАК Период,
|   ПартииТоваровКомпанииОстатки.Номенклатура,
|   ПартииТоваровКомпанииОстатки.Номенклатура.Артикул,
|   ПартииТоваровКомпанииОстатки.КоличествоОстаток
|ИЗ
|   РегистрНакопления.ПартииТоваровКомпании.Остатки(&Д"+СчДней+",СкладКомпании.Подразделение=&ПодразделениеКомпании И Партия.Контрагент= &Контрагент) КАК ПартииТоваровКомпанииОстатки
|";
ПостроительОтчетаОтчет.Параметры.Вставить("Д"+СчДней, ДатаЦикла);
КонецЦикла;
СчДней= Формат(КонецПериода,"ДФ=yyyyMMdd");
Текст = Текст+
"
|;
|ВЫБРАТЬ
|   ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ЗаказПоставщикуТовары.Ссылка.Дата, ДЕНЬ), ДЕНЬ, 1) КАК Дата,
|   ЗаказПоставщикуТовары.Номенклатура КАК Номенклатура,
|   ЗаказПоставщикуТовары.Номенклатура.Артикул КАК Артикул,
|   СУММА(ЗаказПоставщикуТовары.Количество) КАК Заказано,
|   СУММА(0) КАК Отгружено,
|   СУММА(0) КАК Возврат,
|   СУММА(0) КАК Остаток,
|   СУММА(0) КАК ПроцентВозврата
|ИЗ
|   Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
|ГДЕ
|   ЗаказПоставщикуТовары.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
|   И ЗаказПоставщикуТовары.Ссылка.Контрагент = &Контрагент
|   И ЗаказПоставщикуТовары.Ссылка.Проведен
|   И ЗаказПоставщикуТовары.Ссылка.ПодразделениеКомпании = &ПодразделениеКомпании
|
|СГРУППИРОВАТЬ ПО
|   ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ЗаказПоставщикуТовары.Ссылка.Дата, ДЕНЬ), ДЕНЬ, 1),
|   ЗаказПоставщикуТовары.Номенклатура,ЗаказПоставщикуТовары.Номенклатура.Артикул
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|   НАЧАЛОПЕРИОДА(ПоступлениеТоваровТовары.Ссылка.Дата, ДЕНЬ),
|   ПоступлениеТоваровТовары.Номенклатура,
|   ПоступлениеТоваровТовары.Номенклатура.Артикул,
|   СУММА(0),
|   СУММА(ПоступлениеТоваровТовары.Количество),
|   СУММА(0),
|   СУММА(0),
|   СУММА(0)
|ИЗ
|   Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
|ГДЕ
|   ПоступлениеТоваровТовары.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
|   И ПоступлениеТоваровТовары.Ссылка.Контрагент = &Контрагент
|   И ПоступлениеТоваровТовары.Ссылка.Проведен
|   И ПоступлениеТоваровТовары.Ссылка.ПодразделениеКомпании = &ПодразделениеКомпании
|
|СГРУППИРОВАТЬ ПО
|   НАЧАЛОПЕРИОДА(ПоступлениеТоваровТовары.Ссылка.Дата, ДЕНЬ),
|   ПоступлениеТоваровТовары.Номенклатура,ПоступлениеТоваровТовары.Номенклатура.Артикул
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|   НАЧАЛОПЕРИОДА(ВозвратПоставщикуТовары.Ссылка.Дата, ДЕНЬ),
|   ВозвратПоставщикуТовары.Номенклатура,
|   ВозвратПоставщикуТовары.Номенклатура.Артикул,
|   СУММА(0),
|   СУММА(0),
|   СУММА(ВозвратПоставщикуТовары.Количество),
|   СУММА(0),
|   СУММА(0)
|ИЗ
|   Документ.ВозвратПоставщику.Товары КАК ВозвратПоставщикуТовары
|ГДЕ
|   ВозвратПоставщикуТовары.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
|   И ВозвратПоставщикуТовары.Ссылка.Контрагент = &Контрагент
|   И ВозвратПоставщикуТовары.Ссылка.Проведен
|   И ВозвратПоставщикуТовары.Ссылка.ПодразделениеКомпании = &ПодразделениеКомпании
|
|СГРУППИРОВАТЬ ПО
|   НАЧАЛОПЕРИОДА(ВозвратПоставщикуТовары.Ссылка.Дата, ДЕНЬ),
|   ВозвратПоставщикуТовары.Номенклатура,ВозвратПоставщикуТовары.Номенклатура.Артикул
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|   НАЧАЛОПЕРИОДА(ТемпОст.Период, ДЕНЬ),
|   ТемпОст.Номенклатура,
|   ТемпОст.Артикул,
|   СУММА(0),
|   СУММА(0),
|   СУММА(0),
|   СуММА(ТемпОст.Остаток),
|   СУММА(0)
|ИЗ
|   ТемпОст КАК ТемпОст
|СГРУППИРОВАТЬ ПО
|   НАЧАЛОПЕРИОДА(ТемпОст.Период, ДЕНЬ),
|   ТемпОст.Номенклатура, ТемпОст.Артикул
|
|УПОРЯДОЧИТЬ ПО
|   Дата,
|   Номенклатура
|ИТОГИ
|   СУММА(Заказано),
|   СУММА(Отгружено),
|   СУММА(Возврат),
|   ВЫразить(Среднее(Остаток) КАК ЧИсло(12,2)) КАК Остаток,
|   ВЫбор КОгда СУММА(Отгружено)=0 тогда 0 ИНАЧЕ Выразить(СУММА(Возврат)/СУММА(Отгружено)*100 КАК Число(12,2)) КОНЕЦ КАК ПроцентВозврата
|ПО
|   ОБЩИЕ,
|   Дата,
|   Номенклатура ИЕРАРХИЯ";
ПостроительОтчетаОтчет.Текст = Текст;
ПостроительОтчетаОтчет.ЗаполнитьНастройки();
ПостроительОтчетаОтчет.ЗаполнениеРасшифровки = ВидЗаполненияРасшифровкиПостроителяОтчета.ЗначенияГруппировок;
ПостроительОтчетаОтчет.ТекстЗаголовка = "Анализ заказов по " + ПодразделениеКомпании.НаименованиеПолное +Символы.ПС +" период с  " + Формат(НачалоПериода,"ДФ=dd.MM.yyyy")+ " по " + Формат(КонецПериода,"ДФ=dd.MM.yyyy");
//Настройка = ВосстановитьЗначение("НастройкаВнешниеОбработкиВнешняяОбработка3Отчет_bc39e421-f272-414c-9c50-d1bfb9a20f26");
//  Если Настройка <> Неопределено Тогда
//      ПостроительОтчетаОтчет.УстановитьНастройки(Настройка);
//  КонецЕсли;

ПостроительОтчетаОтчет.ИзмеренияСтроки.Очистить();
ПостроительОтчетаОтчет.ИзмеренияКолонки.Очистить();
ПостроительОтчетаОтчет.ИзмеренияСтроки.Добавить("Номенклатура","Номенклатура",ТипИзмеренияПостроителяОтчета.Иерархия);
ПостроительОтчетаОтчет.ИзмеренияКолонки.Добавить("Дата");
//ПостроительОтчетаОтчет.ИзмеренияСтроки.Удалить(ПостроительОтчетаОтчет.ИзмеренияСтроки[0]);
//ПостроительОтчетаОтчет.ИзмеренияКолонки.Добавить("Дата");
//ПостроительОтчетаОтчет.ИзмеренияКолонки.Удалить(ПостроительОтчетаОтчет.ИзмеренияКолонки[0]);
//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПОСТРОИТЕЛЬОТЧЕТА_ИНИЦИАЛИЗАЦИЯ
КонецПроцедуры

Процедура ВыбПериодНажатие(Элемент)
НастройкаПериода = Новый НастройкаПериода;
НастройкаПериода.УстановитьПериод(НачалоПериода, ?(КонецПериода='0001-01-01', КонецПериода, КонецДня(КонецПериода)));
НастройкаПериода.РедактироватьКакИнтервал = Истина;
НастройкаПериода.РедактироватьКакПериод = Истина;
НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
Если НастройкаПериода.Редактировать() Тогда
НачалоПериода = НастройкаПериода.ПолучитьДатуНачала();
КонецПериода = НастройкаПериода.ПолучитьДатуОкончания();
КонецЕсли;
ОтчетИнициализация();
КонецПроцедуры

Процедура НачалоПериодаПриИзменении(Элемент)
ОтчетИнициализация();
КонецПроцедуры

Процедура КонецПериодаПриИзменении(Элемент)
ОтчетИнициализация();
КонецПроцедуры




Основная задача отчета построить шахматкой данные за период в днях.
Основные сложности, это
1. Получить остатки за каждый день
2. Заставить построитель всегда работать правильно со строками и колонками
3. Нормализация ширины колонок.

Friday, February 18, 2011

Работа с выбором дат в 1С запросе, если даты могут быть пустыми

&ТекущаяДата МЕЖДУ ВЫБОР
КОГДА ДоговорыВзаиморасчетов.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ТОГДА НАЧАЛОПЕРИОДА(&ТекущаяДата, ГОД)
ИНАЧЕ ДоговорыВзаиморасчетов.ДатаНачала
КОНЕЦ И ВЫБОР
КОГДА ДоговорыВзаиморасчетов.ДатаКонца = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ТОГДА КОНЕЦПЕРИОДА(ДоговорыВзаиморасчетов.ДатаКонца, ГОД)
ИНАЧЕ ДоговорыВзаиморасчетов.ДатаКонца
КОНЕЦ

Wednesday, July 7, 2010

motorola ap-5131

Установка motorola ap-5131
1. Для того что бы сбросить пароль необходимо подключиться через com port. Использовал putty.
1.1. В программе putty устанавливал следующие значения:





















не забываем про кодировку


1.2. После подключения вынимаем с AP кабель сети(он же питания) и вставляем его обратно. И сразу же смотрим в putty:


1.3. Жмем в течении 3 минут ESC

1.4. Сбрасываем пароль: passwd default

1.5. Перегружаем систему: reset system

1.6. После перезагрузки вводим пользователя admin пароль symbol или motorola

1.7. После установки нового пароля смотрим, что же твориться в системе командой summary
1.8. Вот теперь изучив настройки пробуем подключится к точке через броузер

1.9. Подключаем кабель ккомпьютору и к точке WAN

1.10. Устанавливаем настройку сетевой карты на компе
1.11. Не забыть установить Java

1.12. Стучимся с броузера по https://10.1.1.1

1.13. И дальше уже по документации









Wednesday, March 24, 2010

По ИНН расчет день рождений и пола

- 1-5 числа количество дней с 1 января 1900 года по день рождения человека.
- 6-9 порядковый номер среди всех граждан страны, родившихся в этот день, присваивается исходя из региона налоговой, выдавшей ИНН, причем 9 цифра четная - жен. нечетная - муж.
- 10 - контрольная, как в штрих-коде, как вычисляется - не знаю.

Sunday, October 11, 2009

Задумался на транслитерацией

Транслитерация — Википедия
ГОСТ российский
по госту перегоняем:
а|б|в|г|д|е|ё|ж|з|и|й|к|л|м|н|о|п|р|с|т|у|ф|х|ц|ч|ш|щ|ъ|ы|ь|э|ю|я
a|b|v|g|d|e|yo|zh|z|i|j|k|l|m|n|o|p|r|s|t|u|f|h|cz|ch|sh|shh|''|y'|'|e'|yu|ya

Thursday, August 27, 2009

Небольшой скриптик в помощь сис админам на java script по работе с 1С

//Скрипт разработан для замены долбаного ручного труда!
// При использования скрипта прошу обратить внимание на \ <- она должна быть повторяющейся, не спрашивайте меня почему, это особенность языка
// Также прошу учесть всяких умников, недопустимо использование пробелов в полном наименовании каталога базы данных 1с.

var pathbaseArray = new Array(); //описываем пути к базе данных
var username = "counter"; // Пользователь
var userpass = "bynthghbpf"; //пароль
var runin1c = "ОткрытьФорму(\"Обработка\",2,\"\\\\space.digma\\office\\Departments\\АСУ\\master\\ПроверкаИЗагрузкаВСКЛпропущенныхНакладных.ert\")"; //Строка запуска в 1с

pathbaseArray[0] = "c:\\1cbases\\77test\\";

for (var i = 0; i < pathbaseArray.length; i++) {

var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.GetFolder(pathbaseArray[i]);
var v7 = WScript.CreateObject("V77.Application");

v7.Initialize(v7.RMTrade, "/D" + pathbaseArray[i] +" /N" + username + " /P" + userpass, "NO_SPLASH_SHOW");
var result = v7.EvalExpr(runin1c);
WScript.Echo("Скрипт выполнен по базе данных:"+f.path+". Результат выполнения:"+result);
v7 = "";
result = "";


}
WScript.Echo("Скрипт завершен");

Monday, June 29, 2009

Настройка и ускорение SQL 2005 для 1С

После установки 2005й версии
нужно выполнить ряд настроек
1. Выключить проверку сертификатов:
http://msmvps.com/blogs/gladchenko/archive/2007/01/16/497463.aspx
EXEC sp_fulltext_service 'verify_signature', 0;
GO
2. Указать фиксированный объем памяти
3. Обновить версию до SP3 (>=9.0.4035), т.к. изменена работа оптимизатора запросов
4. Использовать только х64 редакцию (2005й лучше реализует преимущества на больших объемах данных), а версия Enterprise "умеет делать параллельное выполнение индексирования". На небольших объемах данных и количестве пользователей разница не существенна.
5. Проинсталировать Perfomance Dashboard (с SP2)
6. Региональные настройки (кодовая страница) SQL должны соответствовать рег.настройкам Windows Server
7.Иногда бывает полезным выключать служебную трассировку:
select * from fn_trace_getinfo(0)
exec sp_configure 'show advanced options', 1
reconfigure with override
exec sp_configure 'default trace enabled', 0
reconfigure with override
Незнание у IT-специалистов этих тонкостей создает ложное представление о возможностях СУБД

взято у http://www.gilev.ru/1c/mssql/SQL2005vs2000.htm за что большая благодарность