|
COM: НайтиПоКоду | ☑ | ||
---|---|---|---|---|
0
Кокос
15.08.11
✎
16:22
|
СоединительСРабочейБазой = Новый COMObject("V82.COMConnector");;
СоединениеСРабочейБазой = СоединительСРабочейБазой.Connect(вРабочиеБазы.СтрокаСоединения+"Usr="+вРабочиеБазы.Пользователь+";"+"Pwd="+вРабочиеБазы.Пароль+";"); ЭлементДляЗаписи = Неопределено; Если Тип = "Справочник" Тогда ЭлементДляЗаписи = СоединениеСРабочейБазой.Справочники[ИмяТипа].Выбрать();//.НайтиПоКоду(СокрЛП(ЭтотОбъект.Код));// Пока ЭлементДляЗаписи.Следующий() Цикл Сообщить(ЭлементДляЗаписи["Код"]); КонецЦикла; Выбрать работает а закоментированный найтипокоду нет. В чем может быть дело?хотя вроде написано что в внешнем соединении должен работать. сейчас попробую запросом искать. |
|||
1
Кокос
15.08.11
✎
16:26
|
фигасе сегодня скорость. полминуты и уже апать надо
|
|||
2
MNS_Ротерта
15.08.11
✎
16:27
|
(0) Какая хоть ошибка-то выходит. И лучше приводите в всегда синтаксис как писали. ЭтотОбъект у него этоновый()=ложь?
|
|||
3
MNS_Ротерта
15.08.11
✎
16:28
|
(0) Может ошибка не в НайтиПоКоду, а в дальнейшем цикле?
|
|||
4
Кокос
15.08.11
✎
16:29
|
(2) ошибки вообще не выходит. смотрел в отладчике. элемент пуст тип COM но при переборе коды выводятся как надо. УТ10. Справочник Номенклатуры.
|
|||
5
Кокос
15.08.11
✎
16:31
|
(3) да я сразу в отладчике смотрел после найтиПоКоду. Причем Выбрать() все работает отлично и коды видно и все. а как только меняю на НайтиПоКоду возвращает пустой com-объект реквизиты есть но все пустое. базы идентичные. просто сделал копию и делаю тестовое соединение
|
|||
6
MNS_Ротерта
15.08.11
✎
16:32
|
(0) Если считаешь что ошибка платформы (что бывает но очень редко) сделай иначе. Запросом например, оно и быстрее будет работать по идее.
|
|||
7
hhhh
15.08.11
✎
16:33
|
(5) сокрЛП зря вставил
|
|||
8
mzelensky
15.08.11
✎
16:33
|
(5) так может его просто НЕТ?
Возьми и укажи явно присутствующий код : ЭлементДляЗаписи = СоединениеСРабочейБазой.Справочники[ИмяТипа].НайтиПоКоду("12345");// |
|||
9
Кокос
15.08.11
✎
16:33
|
(6) да не ошибка думаю. просто может какие особенности метода при внешнем соединении. вот гуру всяких спрашиваю.
|
|||
10
mzelensky
15.08.11
✎
16:33
|
(0) а еще лучше выбери запросом!
|
|||
11
Кокос
15.08.11
✎
16:34
|
(7) я и так и так пробовал. не лИзЭ.
(8) базы идентичные. он есть. сейчас попробую явно указать. |
|||
12
MNS_Ротерта
15.08.11
✎
16:34
|
(7) А как может СокрлЛП испортить впечатление?
|
|||
13
hhhh
15.08.11
✎
16:34
|
(11) иерархический справочник?
|
|||
14
eklmn
гуру
15.08.11
✎
16:35
|
Сообщить(ЭлементДляЗаписи["Code"]);
|
|||
15
Кокос
15.08.11
✎
16:36
|
(13) угу. но тестировал на корневом элементе. просто надо чтобы при записи на центральной базе цен и справочников все автоматом грузилось в рабочие. РИБ неохота юзать.
|
|||
16
Кокос
15.08.11
✎
16:36
|
(14) " "
|
|||
17
MNS_Ротерта
15.08.11
✎
16:36
|
(0) А платформа какая ради любопытсва
|
|||
18
Кокос
15.08.11
✎
16:37
|
(8) не помогло
|
|||
19
Кокос
15.08.11
✎
16:37
|
(17) 1С:Предприятие 8.2 (8.2.14.519)
|
|||
20
MNS_Ротерта
15.08.11
✎
16:39
|
(0) А исполняется где код?
Описание: Осуществляет поиск элемента по его коду. Доступность: Сервер, толстый клиент, внешнее соединение. |
|||
21
MNS_Ротерта
15.08.11
✎
16:39
|
(0) А да во внешнем соединении где то упоминалось раньше.
|
|||
22
Кокос
15.08.11
✎
16:40
|
(21) угу. извне должно быть доступно... фигня какаят :)
|
|||
23
mzelensky
15.08.11
✎
16:41
|
(0) говорю тебе - ДЕЛАЙ ЗАПРОСОМ!
|
|||
24
Кокос
15.08.11
✎
16:41
|
(23) да уже ищу. был тут где-то код на мисте
|
|||
25
Reset
15.08.11
✎
16:43
|
Не находит он у тебя код. Проверяй значение, которое ищешь. Может там число, а ты ищешь по строке.
Метод абсолютно рабочий. Запрос здесь без необходимости. |
|||
26
MNS_Ротерта
15.08.11
✎
16:44
|
(0) один знакомый знакомой который в 1С работает говорил что многое в 8.2 не отрабатывает приходиться сидеть извращаться методами которые работают пользоваться. Если вспомнить как рождалась 7.7, то там в описании были часто методы которые в палтформу не были заложены. Но позднее они появились и стали корректно работать, но в более подзних релизах платформы 7.7.
|
|||
27
mzelensky
15.08.11
✎
16:44
|
(24)
V81=Неопределено; Параметры = ("Srvr=""123""; Ref=""123""; Usr=""123""; Pwd=""123""; "); V81 = Новый COMObject("v81.ComConnector"); // пытаемся открыть базу попытка V81=V81.Connect(Параметры); исключение ДатаК=Неопределено; V81=Неопределено; Сообщить("Подключиться к базе не удалось. Проверьте правильность ввода пользователя и пароля"); возврат; конецпопытки; Запрос2 = V81.NewObject("запрос"); Запрос2.Текст = "ВЫБРАТЬ | ПРЕДСТАВЛЕНИЕССЫЛКИ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом) КАК Документ, | ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток, 0) КАК СуммаКОУТ, | ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.КоличествоДнейПоДоговору, 0) КАК Отсрочка, | ВЫБОР | КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты = &ПД | ТОГДА ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Дата, ДЕНЬ, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.КоличествоДнейПоДоговору) | ИНАЧЕ ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты, ДЕНЬ, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.КоличествоДнейПоДоговору) | КОНЕЦ КАК ДатаОплаты, | ЕСТЬNULL(РАЗНОСТЬДАТ(ВЫБОР | КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты = &ПД | ТОГДА ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Дата, ДЕНЬ, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.КоличествоДнейПоДоговору) | ИНАЧЕ ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты, ДЕНЬ, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.КоличествоДнейПоДоговору) | КОНЕЦ, &ДКДата, ДЕНЬ), 0) КАК Просрочка |ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(&ДК, ДокументРасчетовСКонтрагентом ССЫЛКА Документ.РеализацияТоваровУслуг | И ДокументРасчетовСКонтрагентом.Контрагент.код = &Контр ) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки |ГДЕ | ЕСТЬNULL(РАЗНОСТЬДАТ(ВЫБОР | КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты = &ПД | ТОГДА ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Дата, ДЕНЬ, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.КоличествоДнейПоДоговору) | ИНАЧЕ ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты, ДЕНЬ, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.КоличествоДнейПоДоговору) | КОНЕЦ, &ДКДата, ДЕНЬ), 0) > 0 | |УПОРЯДОЧИТЬ ПО | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Контрагент"; Граница=V81.NewObject("Граница", КонецДня(ДК), V81.ВидГраницы.Включая); Запрос2.УстановитьПараметр("ДК", Граница); //Дата Запрос2.УстановитьПараметр("ДКДата", КонецДня(ДК)); //Дата Запрос2.УстановитьПараметр("ПД", Дата('00010101')); Запрос2.УстановитьПараметр("Контр", Выборка.Контр.код); //Дата ВыборкаУТ= Запрос2.Выполнить().Выбрать(); Если ВыборкаУТ.Количество() >0 тогда |
|||
28
MNS_Ротерта
15.08.11
✎
16:45
|
(25) кстати вполне возможно. хотя должно было б наверное выдать Неопределено тогда уж и отработать как будто ничего не найдено?
|
|||
29
Кокос
15.08.11
✎
16:45
|
(25) базы идентичные. просто скопировал. там и там строка
|
|||
30
Кокос
15.08.11
✎
16:46
|
(27) премного благодарен
|
|||
31
Reset
15.08.11
✎
16:47
|
(29) Не бывает чудес. Может, код номенклатуры, а ищешь в складах.
|
|||
32
Кокос
15.08.11
✎
16:51
|
(31) прочитай внимательно. Методов Выбрать() и Следующий() работают. плюс смотрел сам элемент в отладчике. он Пустой() но реквизиты все номенклатурные
|
|||
33
eklmn
гуру
15.08.11
✎
16:52
|
(31) Скорее всего платформа, много на ком написано, половина не работает
|
|||
34
Reset
15.08.11
✎
16:53
|
(32) Я внимательно прочитал. Из этого и следует, что такого кода там нет, или ты его неправильно передаешь.
|
|||
35
Кокос
15.08.11
✎
16:54
|
СоединительСРабочейБазой = Новый COMObject("V82.COMConnector");;
СоединениеСРабочейБазой = СоединительСРабочейБазой.Connect(вРабочиеБазы.СтрокаСоединения+"Usr="+вРабочиеБазы.Пользователь+";"+"Pwd="+вРабочиеБазы.Пароль+";"); ЭлементДляЗаписи = Неопределено; Если Тип = "Справочник" Тогда ЗапросПоиска = СоединениеСРабочейБазой.NewObject("Запрос"); ЗапросПоиска.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Код = &ТутошнийКод"; ЗапросПоиска.УстановитьПараметр("ТутошнийКод", ЭтотОбъект.Код); //Дата ВыборкаИзСоединения = ЗапросПоиска.Выполнить().Выбрать(); Если ВыборкаИзСоединения.Количество() >0 тогда Сообщить(ВыборкаИзСоединения.Ссылка.Код); КонецЕсли; блин. не работает. не находит ничего :) |
|||
36
Кокос
15.08.11
✎
16:55
|
Сообщить(ВыборкаИзСоединения[0].Ссылка.Код);
забыл индекс поставить. но туда все равно не заходит :) |
|||
37
Кокос
15.08.11
✎
16:56
|
а. еще и выгрузить в тз надо перед индексом. но все равно результ пустойже
|
|||
38
Reset
15.08.11
✎
16:56
|
(36) Результат не зависит от того, каким пальцем давишь на кнопку.
|
|||
39
Reset
15.08.11
✎
16:56
|
Разбирайся со значением кода
|
|||
40
Кокос
15.08.11
✎
16:58
|
(39) а что с ним разбираться? я его в отладчике замечательно вижу. он такойже как в обоих базах.
|
|||
41
Reset
15.08.11
✎
16:59
|
(40) Не такой. Иначе бы находился.
|
|||
42
Reset
15.08.11
✎
17:03
|
напиши для проверки и чтобы не списывать на нечистые силы:
Выборка = СоединениеСРабочейБазой.Справочники[ИмяТипа].Выбрать(); Выборка.Следующий(); СуществующийКод=Выборка.Код; ЭлементДляЗаписи = СоединениеСРабочейБазой.Справочники[ИмяТипа].НайтиПоКоду(СуществующийКод)); |
|||
43
Кокос
15.08.11
✎
17:06
|
(42) так работает :))
|
|||
44
Кокос
15.08.11
✎
17:13
|
(42)
ЭлементДляЗаписи = СоединениеСРабочейБазой.Справочники[ИмяТипа].Выбрать();// Пока ЭлементДляЗаписи.Следующий() Цикл Если ЭлементДляЗаписи["Код"] = ЭтотОбъект.Код ТОгда Сообщить(ЭлементДляЗаписи["Код"]); КонецЕсли; КонецЦикла; действительно код не находит. скорее всего дело в идентификации. наверное не идентифицирует пользователя а там у меня RLS стоит. спасибо |
|||
45
Reset
15.08.11
✎
17:15
|
:)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |