|
Кто может помочь 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)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |