Имя: Пароль:
1C
1С v8
Кто может помочь c OLE?
,
0 novichok20
 
13.01.15
09:26
ПутьКБазе = путьКБД1с7;
Если НЕ ЗначениеЗаполнено(ПутьКБазе)Тогда
Режим = РежимДиалогаВопрос.ОК;
Ответ = Вопрос("Не указан каталог" , Режим, 0);
Если Ответ = КодВозвратаДиалога.ОК Тогда
Возврат;
КонецЕсли;
КонецЕсли;
Пользователь = "пользователь";//пользователь базы 7.7
Пароль = "1";
МонопольныйРежимOLE = ""; // " /m";
ЗапускБезЗаставки = 1;
База = Новый COMОбъект("V1CEnterprise.Application");
СтрокаПодключения = "/D"""+СокрЛП(ПутьКБазе)+""" /N"""+СокрЛП(Пользователь)+""" /P"""+СокрЛП(Пароль)+"""";
РезультатПодключения = База.Initialize(База.RMTrade,СтрокаПодключения,?(ЗапускБезЗаставки = 1,"NO_SPLASH_SHOW",""));
Если НЕ РезультатПодключения Тогда
Сообщить("Не удалось произвести подключение к информационной базе");
КонецЕсли;
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Дата",,"ДатаД");
ТЗ.Колонки.Добавить("Представление", Новый ОписаниеТипов("СправочникСсылка.ВидыСпектаклей"),"Представление");
ТЗ.Колонки.Добавить("Продавец",Новый ОписаниеТипов("СправочникСсылка.ВидыНоменклатуры"),"Продавец");
ТЗ.Колонки.Добавить("билет",Новый ОписаниеТипов("СправочникСсылка.ВидыБСО"),"билет");
ТЗ.Колонки.Добавить("кол",Новый ОписаниеТипов("Число"),"кол");
ТЗ.Колонки.Добавить("сум",Новый ОписаниеТипов("Число"),"сум");
ДокТам =База.CreateObject("Документ.Продажа");
ДокТам.ВыбратьДокументы(ДатаНачала,ДатаКонца);
пока ДокТам.ПолучитьДокумент() = 1 цикл
ДокТам.ВыбратьСтроки();
пока ДокТам.получитьстроку() = 1 цикл
Стр = ТЗ.Добавить();
Стр.Представление = ДокТам.Концерт.Наименование;
//Стр.ДатаД =Н;
//ТЗ.ДатаД = ДокТам.ДатаДок;
//////представление
СпрСпект = База.CreateObject("Справочники.ВидыСпектаклей");
СпрСпект.ВыбратьЭлементы();
//Сообщить("_1_"+ДокТам.Концерт.ID);
Если НЕ ЗначениеЗаполнено(ДокТам.Концерт.ИД) = 1 тогда
Сообщить("Мероприятие с ID "+СокрЛП(ДокТам.Концерт.ИД)+" не найденно");
иначе
Если СпрСпект.НайтиПоКоду(ДокТам.Концерт.ИД) = 1 тогда
ТЗ.Представление =СпрСпект.ТекущийЭлемент();
иначе
Сообщить("Мероприятие с ID "+ДокТам.Концерт.ИД+" не найденно");
Конецесли;
Конецесли;
Выдает ошибку на СпрСпект = База.CreateObject("Справочники.ВидыСпектаклей")?
1 novichok20
 
13.01.15
09:29
Процедура Выполнить
ПутьКБазе = путьКБД1с7;
Если НЕ ЗначениеЗаполнено(ПутьКБазе)Тогда
Режим = РежимДиалогаВопрос.ОК;
Ответ = Вопрос("Не указан каталог" , Режим, 0);
Если Ответ = КодВозвратаДиалога.ОК Тогда
Возврат;
КонецЕсли;
КонецЕсли;
Пользователь = "пользователь";//пользователь базы 7.7
Пароль = "1";
МонопольныйРежимOLE = ""; // " /m";
ЗапускБезЗаставки = 1;
База = Новый COMОбъект("V1CEnterprise.Application");
СтрокаПодключения = "/D"""+СокрЛП(ПутьКБазе)+""" /N"""+СокрЛП(Пользователь)+""" /P"""+СокрЛП(Пароль)+"""";
РезультатПодключения = База.Initialize(База.RMTrade,СтрокаПодключения,?(ЗапускБезЗаставки = 1,"NO_SPLASH_SHOW",""));
Если НЕ РезультатПодключения Тогда
Сообщить("Не удалось произвести подключение к информационной базе");
КонецЕсли;

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Дата",,"ДатаД");
ТЗ.Колонки.Добавить("Представление", Новый ОписаниеТипов("СправочникСсылка.ВидыСпектаклей"),"Представление");
ТЗ.Колонки.Добавить("Продавец",Новый ОписаниеТипов("СправочникСсылка.ВидыНоменклатуры"),"Продавец");
ТЗ.Колонки.Добавить("билет",Новый ОписаниеТипов("СправочникСсылка.ВидыБСО"),"билет");
ТЗ.Колонки.Добавить("кол",Новый ОписаниеТипов("Число"),"кол");
ТЗ.Колонки.Добавить("сум",Новый ОписаниеТипов("Число"),"сум");

ДокТам =База.CreateObject("Документ.Продажа");
ДокТам.ВыбратьДокументы(ДатаНачала,ДатаКонца);
пока ДокТам.ПолучитьДокумент() = 1 цикл
ДокТам.ВыбратьСтроки();
пока ДокТам.получитьстроку() = 1 цикл
Стр = ТЗ.Добавить();
СпрСпект = База.CreateObject("Справочники.ВидыСпектаклей");
СпрСпект.ВыбратьЭлементы();

Если НЕ ЗначениеЗаполнено(ДокТам.Концерт.ИД) = 1 тогда
Сообщить("Мероприятие с ID "+СокрЛП(ДокТам.Концерт.ИД)+" не найденно");
иначе
Если СпрСпект.НайтиПоКоду(ДокТам.Концерт.ИД) = 1 тогда
ТЗ.Представление =СпрСпект.ТекущийЭлемент();
иначе
Сообщить("Мероприятие с ID "+ДокТам.Концерт.ИД+" не найденно");
Конецесли;
Конецесли;
КонецПроцедуры;


Выдает ошибку на СпрСпект = База.CreateObject("Справочники.ВидыСпектаклей")?
2 hhhh
 
13.01.15
09:30
а разве в 77 так пишут? "Справочники.ВидыСпектаклей" ??
3 Cube
 
13.01.15
09:34
(0) "База = Новый COMОбъект("V1CEnterprise.Application");"
Чё за хня?

Почему не так?
База = Новый COMОбъект("V77.Application");


"СпрСпект = База.CreateObject("Справочники.ВидыСпектаклей");"
Не верно. Тиши так:
СпрСпект = База.CreateObject("Справочник.ВидыСпектаклей");
4 Ёпрст
 
13.01.15
09:37
(3) это не хня, это нормальная строка подключения, "ключенезависимая"
5 Cube
 
13.01.15
09:38
(4) Да? А что значит "ключенезависимая"?
6 Ёпрст
 
13.01.15
09:40
(5)
V1CEnterprise.Application - версия независимый ключ;
V77.Application - версия зависимый ключ;
V77S.Application - версия зависимый ключ, SQL версия;
V77L.Application - версия зависимый ключ, локальная версия;
V77M.Application - версия зависимый ключ, сетевая версия.
7 novichok20
 
13.01.15
09:41
Это я исправил
СпрСпект = База.CreateObject("Справочник.ВидыСпектаклей");
работает и так
База = Новый COMОбъект("V1CEnterprise.Application");
и так
База = Новый COMОбъект("V77.Application");
ругаеться

{Обработка.ПереносОстатков.Форма.Форма.Форма(74)}: Ошибка при вызове метода контекста (CreateObject)
             СпрСпект = База.CreateObject("Справочник.ВидыСпектаклей");
по причине:
Произошла исключительная ситуация (1С:Предприятие): Неудачная попытка создания объекта (Справочник.ВидыСпектаклей): 0
8 Cube
 
13.01.15
09:42
(6) V1CEnterprise.Application это как 1cestart у снеговика?))
9 1Сергей
 
13.01.15
09:43
(7) там точно есть такой справочник?
10 Ёпрст
 
13.01.15
09:43
(7) Справочник.ВидыСпектаклей хоть есть в оле базе то ?
11 Ёпрст
 
13.01.15
09:44
(8) типа того, не зависит от версии короче (сетевая/скуль и т.д..)
12 Fish
 
13.01.15
09:46
(7) Либо (9), либо у пользователя нет прав на создание справочника.
13 1Сергей
 
13.01.15
09:49
(12) в семёрке пофиг. Там права проверяются только при интерактивной работе
14 dk
 
13.01.15
09:49
(12) в коде права не проверяются
скорее всего не удалось в 1с 7 залогиниться
в журнале регистрации 1с 77 есть входе ОЛЕшного юзера?
15 Ёпрст
 
13.01.15
09:49
максимум, у пользователя нет прав на оле-аутомейшен
16 hhhh
 
13.01.15
09:54
(14) ну вот же

ДокТам =База.CreateObject("Документ.Продажа");

сработало
17 dk
 
13.01.15
09:57
точно, просто каша какая-то - форум коряво код без тэгов показывает
18 novichok20
 
13.01.15
09:57
вот я де...
целый день вчера убил не к тем справочника подключался
подключился)
но теперь другая проблема в тз заполняеться только кол и сум а Представление и Продавец пусто(


    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Дата",,"ДатаД");            
    ТЗ.Колонки.Добавить("Представление", Новый ОписаниеТипов("СправочникСсылка.ВидыСпектаклей"),"Представление");        
    ТЗ.Колонки.Добавить("Продавец",Новый ОписаниеТипов("СправочникСсылка.ВидыНоменклатуры"),"Продавец");
    ТЗ.Колонки.Добавить("билет",Новый ОписаниеТипов("СправочникСсылка.ВидыБСО"),"билет");
    ТЗ.Колонки.Добавить("кол",Новый ОписаниеТипов("Число"),"кол");
    ТЗ.Колонки.Добавить("сум",Новый ОписаниеТипов("Число"),"сум");
                                                        
    ДокТам =База.CreateObject("Документ.Продажа");                                    
    ДокТам.ВыбратьДокументы(ДатаНачала,ДатаКонца);
    пока ДокТам.ПолучитьДокумент() = 1 цикл
        ДокТам.ВыбратьСтроки();
        пока ДокТам.получитьстроку() = 1 цикл
         Стр =  ТЗ.Добавить();
        
             СпрСпект = База.CreateObject("Справочник.Концерт");
            СпрСпект.ВыбратьЭлементы();           
             Если  НЕ ЗначениеЗаполнено(ДокТам.Концерт.ИД) = 1 тогда  
                     Сообщить("Мероприятие с ID "+СокрЛП(ДокТам.Концерт.ИД)+" не найденно");
             иначе    
                 Если СпрСпект.НайтиПоКоду(ДокТам.Концерт.ИД) = 1 тогда
                     Стр.Представление =СпрСпект.ТекущийЭлемент();
                 иначе    
                     Сообщить("Мероприятие с ID "+ДокТам.Концерт.ИД+" не найденно");
                 Конецесли;
             Конецесли;
            
            
            СпрРеализ = База.CreateObject("Справочник.Контрагенты");
            СпрРеализ.ВыбратьЭлементы();           
            Если НЕ ЗначениеЗаполнено(ДокТам.МОЛотправитель.ИД) = 1 тогда  
                Сообщить("Реализатор с ID "+ДокТам.МОЛотправитель.ИД+" не найденно");
            иначе    
                Если СпрРеализ.НайтиПоКоду(ДокТам.МОЛотправитель.ИД) = 1 тогда
                    Стр.Продавец =СпрРеализ.ТекущийЭлемент();
                иначе    
                    Сообщить("Реализатор с ID "+ДокТам.МОЛотправитель.ИД+" не найденно");
                Конецесли;
            Конецесли;
            Стр.кол = ДокТам.КолМест;
            Стр.сум = ДокТам.Сумма;                          
            
        Конеццикла;
    Конеццикла;
    
    ЭлементыФормы.ТЗ.Значение = ТЗ;
    ЭлементыФормы.ТЗ.СоздатьКолонки();
19 1Сергей
 
13.01.15
09:59
(18) почитай основы работы по ОЛЕ
20 Ёпрст
 
13.01.15
10:01
(18) ясен пень, вот тут же бред полный:

Стр.Представление =СпрСпект.ТекущийЭлемент();

как ты себе представляешь заполнение колонки с типом
СправочникСсылка.ВидыСпектаклей
элементом оле базы СпрСпект = База.CreateObject("Справочник.Концерт");
???
21 Ёпрст
 
13.01.15
10:02
мот того, будешь искать объекты СправочникСсылка.ВидыСпектаклей в базе приёмнике, по коду/реквизиту из базы источника ?...
22 hhhh
 
13.01.15
10:10
(18) как-то у вас

СпрРеализ = База.CreateObject("Справочник.Контрагенты");

а продавец

ТЗ.Колонки.Добавить("Продавец",Новый ОписаниеТипов("СправочникСсылка.ВидыНоменклатуры"),"Продавец");

то есть вы контрагента в вид номенклатуры пытаетесь впихнуть.
23 novichok20
 
13.01.15
10:51
я немного переделал
представление и продавец в тз попадают
но проблема я не знаю как вытянуть сумму и количество
из ТЧ
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Дата",Новый ОписаниеТипов("Строка"),"ДатаД");            
    ТЗ.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"),"Представление");        
    ТЗ.Колонки.Добавить("Продавец",Новый ОписаниеТипов("Строка"),"Продавец");
    ТЗ.Колонки.Добавить("билет",Новый ОписаниеТипов("Строка"),"билет");
    ТЗ.Колонки.Добавить("кол",Новый ОписаниеТипов("Число"),"кол");
    ТЗ.Колонки.Добавить("сум",Новый ОписаниеТипов("Число"),"сум");
                                                        
    ДокТам =База.CreateObject("Документ.Продажа");                                    
    ДокТам.ВыбратьДокументы(ДатаНачала,ДатаКонца);
    пока ДокТам.ПолучитьДокумент() = 1 цикл
        ДокТам.ВыбратьСтроки();
         Стр =  ТЗ.Добавить();
         Стр.Представление = ДокТам.Концерт.Наименование;
         Стр.Продавец = ДокТам.МОЛотправитель.Наименование;
         Стр.кол = "";
         Стр.сум = "";
    Конеццикла;
    
    ЭлементыФормы.ТЗ.Значение = ТЗ;
    ЭлементыФормы.ТЗ.СоздатьКолонки();
24 hhhh
 
13.01.15
10:59
Стр.Кол = ДокТам.Кол;
25 dk
 
13.01.15
11:11
сумма и кол-во в шапке или в табличной части?
26 Ёпрст
 
13.01.15
11:15
(23) строка как продавец, это не есть гуд.
27 novichok20
 
13.01.15
11:19
сумма и кол в таб.части документа.я пробывал через журнал документа Стр.Кол = ДокТам.Кол но ни шиша(
28 dk
 
13.01.15
11:21
ТЗ_Там = ДокТам.ВыгрузитьТабличнуюЧасть();
Стр.Кол = ТЗ_Там.Итог("Кол");
--------
либо
Стр.Кол = ДокТам.Итог("Кол");
если галка итоги на нужных колонках есть
29 Ёпрст
 
13.01.15
11:29
(27) Это, строки документа "ТАМ" хотя бы перебирай, что ле..
это , для начала
30 Ёпрст
 
13.01.15
11:29
(28) работает и без галки "Итог", если "умеючи"
31 dk
 
13.01.15
11:31
(30) колись )
32 Ёпрст
 
13.01.15
11:33
(31) ВыбратьСтроки()..воткни эту строку перед этим, и.. Итог по колонке будет работать всегда, в не зависимости от галки (фича такая)
33 novichok20
 
13.01.15
11:47
не работает через итог(
я так понимаю надо выгружать всю тч и как то с ней возиться
34 Serginio1
 
13.01.15
11:50
Проще использовать Внешний Отчет с ОткрытьФормуМодально и передачей параметров во втором параметре

БД.ОткрытьФормуМодально("Отчет",Параметры,ПутьКОтчету);

И через параметры не только передавать но и получать возвращаемые данные
35 novichok20
 
13.01.15
13:34
Все всем спасибо сделал)
36 Ёпрст
 
13.01.15
13:38
(33) см (29)
Ошибка? Это не ошибка, это системная функция.