Имя: Пароль:
1C
1С v8
Как убрать из Отчёта обращение к серверу??
0 M-comp
 
01.08.14
17:07
Помогите плиз! Есть Форма Отчёт ДвижениеТовараПоШтрихкоду, зачем то эта форма обращается к серверу(в Модуле прописано что надо обращатся к SQL серверу) как от этого избавиться? Как сделать что бы этот отчёт обращался к этой базе?
1 Wobland
 
01.08.14
17:07
взять и переписать
2 mikecool
 
01.08.14
17:07
Запрос.ИспользоватьSQL(0)
3 Лефмихалыч
 
01.08.14
17:10
в каком-то дятлоинкубаторе выпускной
4 H A D G E H O G s
 
01.08.14
17:11
Дятлы встануть на крыло...
5 H A D G E H O G s
 
01.08.14
17:13
(0) В макет выводиться Ссылка, а не ее представление, все просто.

Если же УправляемаяФорма - то он обращается к серверу 1С за новыми порциями живительного XDTO куска, как говорит Малышева - это нормально!
6 M-comp
 
01.08.14
17:16
я вообще нигде не учился,сам учусь,так бы не спрашивал!У вас всё просто ,а мне сложно
7 ДенисЧ
 
01.08.14
17:17
(3) (4) Не.. Не надо обижать...
Эту благородную птицу...
8 Franchiser
 
гуру
01.08.14
17:18
Это пятничная ветка?
9 Franchiser
 
гуру
01.08.14
17:19
"в Модуле прописано что надо обращатся к SQL серверу" так прямо и прописано???
10 M-comp
 
01.08.14
17:19
Процедура ОсновныеДействияФормыОсновныеДействияФормыВыполнить(Кнопка)

Перем ТбТаб,ТбКонтрагенты,ТбПериоды;
    Если не ЗначениеЗаполнено(ВыбНоменклатура) и не ЗначениеЗаполнено(ВыбШтрихкод) Тогда
        Предупреждение("Не указан штриход или Номенклатура");
        Возврат;
    КонецЕсли;
        
    
    
    ТбБаза=новый ТаблицаЗначений;
    ТбБаза.Колонки.Добавить("code");
    ТбБаза.Колонки.Добавить("doc");
    ТбБаза.Колонки.Добавить("contr");
    ТбБаза.Колонки.Добавить("sklad");
    ТбБаза.Колонки.Добавить("codenom");
    
    Тб=новый ТаблицаЗначений;
    Тб.Колонки.Добавить("СерийныйНомер");
    Тб.Колонки.Добавить("Дат");
    Тб.Колонки.Добавить("Прим");
    Тб.Колонки.Добавить("Период");
    Тб.Колонки.Добавить("Контрагент");    
    Тб.Колонки.Добавить("Товар");    
    Тб.Колонки.Добавить("Сумма");    

    ИмяСервера="main";
    ИмяБазы=?(ФЛПрипейд,"pri","bas");
    стрПодключения = "driver={SQL Server};server=main;User Id='sa';Password='19216801sql';database="+ИмяБазы+";trusted_connection=no";
    
    АДОДБКоннект = Новый COMОбъект("ADODB.Connection");
    АДОДБКоннект.ConnectionTimeOut =300;
    АДОДБКоннект.CursorLocation = 2;    //adUseServer
    Попытка
        АДОДБКоннект.Open(стрПодключения);
        //Сообщить("Соединение с SQL-сервером " + ИмяСервера + " осуществлено в "+ТекущаяДата());
    Исключение
        
        Предупреждение("Невозможно установить соединение с SQL-сервером " + ИмяСервера+ ОписаниеОшибки());
        АДОДБКоннект.Close();
        Возврат;
    КонецПопытки;
    
    Command = Новый COMОбъект("ADODB.Command");
    Command.ActiveConnection = АДОДБКоннект;
    
    _us=ИмяПользователя();
    
    //*---- удалить врем данные
    ТекстЗапроса = "delete from uscode where us='"+_us+"'";
    Command.CommandText      = ТекстЗапроса;
    RecordSet = Command.Execute();
    
    ТекстЗапроса = "SELECT * FROM sn where CHARINDEX(SUBSTRING(doc,9,2),'ПО/ПЕ/РЕ')>0 ";
    
    Если ЗначениеЗаполнено(ВыбНоменклатура) Тогда
        Если ВыбНоменклатура.ЭтоГруппа Тогда
            //ТекстЗапроса=ТекстЗапроса+" and ([codenom]='"+СокрЛП(ВыбНоменклатура.Код)+"' )";
        Иначе
            ТекстЗапроса=ТекстЗапроса+" and ([codenom]='"+СокрЛП(ВыбНоменклатура.Код)+"' )";
        КонецЕсли    
    КонецЕсли;    
    
    //*---- удалить врем данные
    Если ЗначениеЗаполнено(ВыбШтрихкод) Тогда
        текст = Новый ТекстовыйДокумент;
        _СерийнНомер=СокрЛП(ВыбШтрихкод);
        _Строка="";    
        _Строка=_Строка+СтрЗаменить(_us,";","")+";";
        _Строка=_Строка+СтрЗаменить(_СерийнНомер,";","");
        Текст.ДобавитьСтроку(_Строка);
        
        ИмяCSV=КаталогВременныхФайлов()+_us+".csv";
        Текст.Записать(ИмяCSV,КодировкаТекста.OEM);             
        
        Состояние("Выполняется SQL запрос .....");
        
        ТекстЗапросаУдаление = "BULK INSERT uscode FROM '"+ИмяCSV+"' WITH (CHECK_CONSTRAINTS,DATAFILETYPE='widechar',FIELDTERMINATOR=';', ROWTERMINATOR='\n',KEEPIDENTITY,TABLOCK);";
        Command.CommandText      = ТекстЗапросаУдаление;
        RecordSet = Command.Execute();
        
        ТекстЗапроса=ТекстЗапроса+" and ([code] in (select [code] from ["+ИмяБазы+"].[dbo].[uscode] where us='"+_us+"'))";

        //ТекстЗапроса = "SELECT * FROM sn where CHARINDEX(SUBSTRING(doc,9,2),'ПО/ПЕ/РЕ')>0 and ([code] in (select [code] from ["+ИмяБазы+"].[dbo].[uscode] where us='"+_us+"')) order by code";
    Конецесли;    
    ТекстЗапроса=ТекстЗапроса+" order by code";
    
    Command.CommandText      = ТекстЗапроса;
    RecordSet = Command.Execute();
    
    УдалитьФайлы(КаталогВременныхФайлов(),_us+".csv");
    
    Состояние("Выполняется обработка SQL запроса .....");
    
    пока не RecordSet.eof Цикл
        ОбработкаПрерыванияПользователя();
        
        Если ФлПеремещения или ФлРеализация или ФлПоступления Тогда
            _ок=Ложь;
            Если ФлПеремещения и Сред(RecordSet.fields("Doc").value,9,2)="ПЕ" Тогда
                _ок=Истина;
                Если ЗначениеЗаполнено(ВыбСкладКому) Тогда
                    Если Найти(ВРЕГ(RecordSet.fields("Contr").value),ВРЕГ(ВыбСкладКому.Наименование))=0 Тогда
                        _ок=Ложь;
                    КонецЕсли;    
                КонецЕсли;    
            КонецЕсли;
            Если ФлРеализация и Сред(RecordSet.fields("Doc").value,9,2)="РЕ" Тогда
                _ок=Истина;
                Если ЗначениеЗаполнено(ВыбКонтрагент) Тогда
                    Если Найти(ВРЕГ(RecordSet.fields("Contr").value),ВРЕГ(ВыбКонтрагент.Наименование))=0 Тогда
                        _ок=Ложь;
                    КонецЕсли;    
                КонецЕсли;    
            КонецЕсли;
            Если ФлПоступления и Сред(RecordSet.fields("Doc").value,9,2)="ПО" Тогда
                _ок=Истина;
                Если ЗначениеЗаполнено(ВыбПоставщик) Тогда
                    Если Найти(ВРЕГ(RecordSet.fields("Contr").value),ВРЕГ(ВыбПоставщик.Наименование))=0 Тогда
                        _ок=Ложь;
                    КонецЕсли;    
                КонецЕсли;    
            КонецЕсли;
            Если не _ок Тогда
                RecordSet.movenext();
                Продолжить;
            КонецЕсли;
        КонецЕсли;
        
        Тбстр=ТбБаза.Добавить();
        Тбстр.code=RecordSet.fields("code").value;
        Тбстр.doc=RecordSet.fields("Doc").value;
        Тбстр.Contr=RecordSet.fields("Contr").value;
        Тбстр.Sklad=RecordSet.fields("Sklad").value;        
        Тбстр.codenom=RecordSet.fields("codenom").value;        
        RecordSet.movenext();
    КонецЦикла;
    ТбБаза.Сортировать("code");
    
    ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    // печать производится на языке, указанном в настройках пользователя
    КодЯзыкаПечать = Локализация.ПолучитьЯзыкФормированияПечатныхФорм(УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "РежимФормированияПечатныхФорм"));
    Макет.КодЯзыкаМакета = КодЯзыкаПечать;
    
    // Заголовок
    ВыбДокумент="";
    ВыбСклад="";
    Область=Макет.ПолучитьОбласть("Заголовок");
    Область.Параметры.ПечНоменклатура=ВыбНоменклатура;
    Область.Параметры.ПечШтрихкод=ВыбШтрихкод;
    Область.Параметры.ПечДок=ВыбДокумент;
    Область.Параметры.ПечСклад=ВыбСклад;
    Область.Параметры.НачДата=Формат(НачПериода,"ДФ=dd.MM.yyyy");
    Область.Параметры.КонДата=Формат(КонПериода,"ДФ=dd.MM.yyyy");
    ТабДок.Вывести(Область);
    Ном=0;
    Для Каждого СтрТбСтр из ТбБаза Цикл
        Ном=Ном+1;
        Состояние("Вывод таблицы: "+Ном+" из "+ТбБаза.Количество()+" строк .....");
        ОбработкаПрерыванияПользователя();
        НоменклатураСсылка=Справочники.Номенклатура.НайтиПоКоду(СтрТбСтр.codenom);
        Если НоменклатураСсылка=Справочники.Номенклатура.ПустаяСсылка() Тогда
            Сообщить("Не найден товар с кодом :"+СтрТбСтр.codenom);
        КонецЕсли;    
        
        
        ВидДок="";
        Если  Сред(СтрТбСтр.doc,9,2)="ПО" Тогда
            ВидДок="Поступление";
        ИначеЕсли  Сред(СтрТбСтр.doc,9,2)="ПЕ" Тогда
            ВидДок="Перемещение";            
        ИначеЕсли  Сред(СтрТбСтр.doc,9,2)="РЕ" Тогда
            ВидДок="Реализация";            
        КонецЕсли;
        НомерДок=Сред(СтрТбСтр.doc,11);
        ДатаДокСтр=Сред(СтрТбСтр.doc,7,2)+"."+Сред(СтрТбСтр.doc,5,2)+"."+Сред(СтрТбСтр.doc,1,4);
        ДатаДок=Дата(Прав(ДатаДокСтр,4)+Сред(ДатаДокСтр,4,2)+Сред(ДатаДокСтр,1,2));
        ПечДокумент=ВидДок+" № "+НомерДок+" от "+ДатаДокСтр;
        
        ДокОбъект=0;
        Если  Сред(СтрТбСтр.doc,9,2)="ПО" Тогда
            ДокОбъект=Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(НомерДок,ДатаДок);
        ИначеЕсли  Сред(СтрТбСтр.doc,9,2)="ПЕ" Тогда
            ДокОбъект=Документы.ПеремещениеТоваров.НайтиПоНомеру(НомерДок,ДатаДок);
        ИначеЕсли  Сред(СтрТбСтр.doc,9,2)="РЕ" Тогда
            ДокОбъект=Документы.РеализацияТоваровУслуг.НайтиПоНомеру(НомерДок,ДатаДок);
        КонецЕсли;
        
        
        Область=Макет.ПолучитьОбласть("Строка");
        Область.Параметры.ПечНоменклатура=НоменклатураСсылка;
        Область.Параметры.ПечШтрихкод=СтрТбСтр.code;
        Область.Параметры.ПечДокумент=ПечДокумент;
        Область.Параметры.ПечОтКуда=СтрТбСтр.Sklad;
        Область.Параметры.ПечКуда=СтрТбСтр.Contr;
        Область.Параметры.Расшифровка=ДокОбъект.Ссылка;
        
        ТабДок.Вывести(Область);
    КонецЦикла;                                    

    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.АвтоМасштаб = Истина;
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;      
    
    ТабДок.Показать("Движения по штрихкоду","");      
КонецПроцедуры
11 Franchiser
 
гуру
01.08.14
17:20
так это самописка?!
12 ДенисЧ
 
01.08.14
17:21
Ну и зачем это, спрашивается, убирать, если он берёт данные не из 1с, а из другой какой-то базы?
13 _fvadim
 
01.08.14
17:22
в свете (10) ответ на (0) - никак
14 _fvadim
 
01.08.14
17:22
оно оттуда данные для отчёта берёт
15 M-comp
 
01.08.14
17:22
самописка,но не моя,мне писали для другой базы,а теперь я хочу для своей применить,но что бы она у моей базы спрашивала,или это надо всё заного писать?
16 Wobland
 
01.08.14
17:22
(12) всё просто: в другую базу данные попадают из этой
17 Franchiser
 
гуру
01.08.14
17:23
Поздравляю, теперь все знают пароли твоей базы
18 ДенисЧ
 
01.08.14
17:23
(15) Да.
(16) неа.
19 M-comp
 
01.08.14
17:24
пусть знают,если им от этого легче))
20 M-comp
 
01.08.14
17:24
это не пароли ,а ерунда никому не нужная
21 Franchiser
 
гуру
01.08.14
17:25
(19) ну, поменяй логин и пароль в строке подключения, может взлетит
22 M-comp
 
01.08.14
17:25
(21)на какой?))
23 hhhh
 
01.08.14
17:26
(20) ну, выкинь этот отчет. Ты его где-то стырил, что ли?
24 M-comp
 
01.08.14
17:26
на пароль от чего?
25 M-comp
 
01.08.14
17:27
(23)взял с другой базы
мне нужен он ,я бы не парился,мне надо что бы я мог отслеживать по штрихам что и куда уходит
26 _fvadim
 
01.08.14
17:29
в базе походу штрихкоды к номенклатуре хранятся, и, походу, ещё обновляются из csv файла перед формированием отчёта.
27 hhhh
 
01.08.14
17:29
(25) зачем вам нужен отчет по SQL-ной базе? Совсем головы нет что ли?
28 Franchiser
 
гуру
01.08.14
17:30
ну у тебя 1с в клиент-серверном режиме? тогда ты должен знать пароль на SQL если в файловом режиме - не взлетит.
29 M-comp
 
01.08.14
17:31
(28)не ,не в серверном,обычная 1с
30 Franchiser
 
гуру
01.08.14
17:31
где ты это взял, в сети?
31 Franchiser
 
гуру
01.08.14
17:31
Минимум тебе нужно установить sql сервер
32 M-comp
 
01.08.14
17:32
(25) мне не нужен отчёт по SQL базе, мне нужен отчёт для моей самой обычной базе, я всего лишь хочу по штрихкоду отслеживать движение товара
33 Wobland
 
01.08.14
17:32
(32) и поэтому ты решил угостить нас каким-то левым кодом, да?
34 _fvadim
 
01.08.14
17:32
(32) шк в 1с хранятся?
35 _fvadim
 
01.08.14
17:33
(31) а потом обо**ать и сжечь.
36 M-comp
 
01.08.14
17:33
(33) я не сильно шарю,можно сказать что вообще не шарю,я переписываю всякие лёгкости под себя,думал что и тут получится легко,но не тут то было...
37 M-comp
 
01.08.14
17:33
(34) да
38 _fvadim
 
01.08.14
17:34
(37) Тебе придётся писать отчёт с нуля. Этот для болванки не годится.
39 _fvadim
 
01.08.14
17:35
там всё завязано на данных, получаемых с левого sql-сервера
40 M-comp
 
01.08.14
17:36
(39) Спасибо,ясный и чёткий ответ
Тема закрыта,всем СПАСИБО
41 Franchiser
 
гуру
01.08.14
17:36
Попробуй отчет "конструктор отчета" или "конструктор запроса", он больше тебе подходит.