Вход | Регистрация
 

Как через оле задать отбор?

Как через оле задать отбор?
Я
   Мисти
 
21.12.15 - 23:38
Подключаюсь из 7 и 8, получила таблицу.
Как мне теперь найти строку по номеру?


Запрос = БазаОле.NewObject("Запрос");
    Запрос.УстановитьПараметр("ВыбДата", Дата1);
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    СчетФактураВыданныйДокументыОснования.Ссылка Как СФ,
    |    СчетФактураВыданныйДокументыОснования.Ссылка.Номер Как Номер,
    |    СчетФактураВыданныйДокументыОснования.Ссылка.Дата,
    |    СчетФактураВыданныйДокументыОснования.ДокументОснование Как ПП,
    |    СчетФактураВыданныйДокументыОснования.Ссылка.Контрагент Как Контрагент
    |ИЗ
    |    Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
    |ГДЕ
    |    СчетФактураВыданныйДокументыОснования.Ссылка.Дата < &ВыбДата";
    
    ТаблицаДокCOM = Запрос.Выполнить().Выгрузить();   // надо бы еще по наименованию поискать!!  ПОДОБНО
   Мисти
 
1 - 21.12.15 - 23:39
|    СчетФактураВыданныйДокументыОснования.Ссылка.Номер Как Номер, - вот этот номер у меня есть.
   Мисти
 
2 - 22.12.15 - 00:06
Отбор = БазаОле.NewObject("Структура()");
            Отбор.Вставить("Номер",НомерСФ);
            СтрокиОтбор =    ТаблицаДокCOM.НайтиСтроки(Отбор);
Такой фокус не прошел.
   hhhh
 
3 - 22.12.15 - 00:09
|ГДЕ
    |    СчетФактураВыданныйДокументыОснования.Ссылка.Дата < &ВыбДата
И СчетФактураВыданныйДокументыОснования.Ссылка.Номер = &Номер
   Мисти
 
4 - 22.12.15 - 00:11
Мне нужно потом из таблицы по порядку (или без порядка) получить все строки по номерам, запрос при каждом обращении - наверное, неправильно.
К тому же потом всё, что в этом списке окажется невостребованным - мне нужно будет удалить (это для повторной перегрузки)
   Мисти
 
5 - 22.12.15 - 00:19
Есть же правила!! Но я их не знаю.
   Чайник Рассела
 
6 - 22.12.15 - 00:23
Создай новую ТЗ, заполни ее из запроса и с ней уже работай.
   Мисти
 
7 - 22.12.15 - 00:28
Ну, так-то я умею, а прямого пути нет что ли?
   Serginio1
 
8 - 22.12.15 - 00:39
Используй внешний отчет. Преймущества отладка в реальной базе.
Используй экспортные функции для получения данных.
   Serginio1
 
9 - 22.12.15 - 00:52
   Serginio1
 
10 - 22.12.15 - 00:53
   Serginio1
 
11 - 22.12.15 - 00:55
   Мисти
 
12 - 22.12.15 - 23:07
Спасибо!
   Мисти
 
13 - 22.12.15 - 23:31
Теперь другая совсем тема! Но ее почему-то закрыли.

Проблемы 2 - во-первых номер должен содержать префикс "ВС+", помню, что "подобно", а как именно написать, чтобы только 3 знака проверялось?
Вторая проблема - дата должна совпадать, но в я из 7 к 8 подцепляюсь, у меня в 7 дата без времени, как правильно задать ограничение?
   Мисти
 
14 - 22.12.15 - 23:37
Подобно "ВС+%"?
   Serginio1
 
15 - 22.12.15 - 23:37
(11) Еще раз смотри 11. Передавай в параметрах строку, а в функции уже распарсивай.
Подобно "ВС+%"
   Serginio1
 
16 - 22.12.15 - 23:39
   Мисти
 
17 - 22.12.15 - 23:41
Запрос = БазаОле.NewObject("Запрос");
        Запрос.УстановитьПараметр("ВыбНомер", "ВС+%");
        
        Запрос.Текст = 
        "ВЫБРАТЬ
        |    ПоступлениеТоваровУслуг.Дата,
        |    ПоступлениеТоваровУслуг.Контрагент.ИНН,
        |    ПоступлениеТоваровУслуг.Контрагент.Ссылка,
        |    ПоступлениеТоваровУслуг.СуммаДокумента,
        |    ПоступлениеТоваровУслуг.Номер
        |ИЗ
        |    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        |ГДЕ
        |    ПоступлениеТоваровУслуг.Номер ПОДОБНО &ВыбНомер
        |    И ПоступлениеТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон
        |    И ПоступлениеТоваровУслуг.Контрагент.ИНН ПОДОБНО &ВыбИНН";
   Мисти
 
18 - 22.12.15 - 23:42
(16) Спасибо!
Осталось туда дату всобачить - мне нужны документы за один день и у меня, соответственно есть одна дата.
   Serginio1
 
19 - 22.12.15 - 23:44
(17) Почему не хочешь воспользоваться внешним отчетом?
Еще раз премущества это отладка в родной базе, отсутствие ограничений
   Мисти
 
20 - 22.12.15 - 23:46
У меня там уже 6000 строк понаписно, остался крошечный кусочек, не хочу ничего нового сейчас пробовать.
   GreyK
 
21 - 22.12.15 - 23:53
(17) Прочитай как дата строкой задаётся в 8ке, там вроде без подвохов, надо только добавить время.
   Serginio1
 
22 - 22.12.15 - 23:54
(20) Так то же самое, только данные получаешь из внешнего отчета. Ничего не меняется
   Serginio1
 
23 - 22.12.15 - 23:55
Дополнительные данные
   Мисти
 
24 - 22.12.15 - 23:55
(22)Вникать не хочу. Всё должно было перегрузиться еще вчера.
(21) Ну что мне сделать с Док7.ДатаДок?
   Serginio1
 
25 - 22.12.15 - 23:56
(24) Если бы вникла в 2 строчки, было бы сделано еще позавчера
   Мисти
 
26 - 23.12.15 - 00:00
Проблема только сегодня возникла
   Мисти
 
27 - 23.12.15 - 00:04
Люди добрые! Ну ночь уже!
Напишите мне эту строчку-то одну!
   Serginio1
 
28 - 23.12.15 - 00:07
ПолучитьВремя
   Мисти
 
29 - 23.12.15 - 00:09
Я уже надумала - Док7.ДатаДок-1 и Док7.ДатаДок+1
   Serginio1
 
30 - 23.12.15 - 00:17
Только учти, что в МЕЖДУ  попадают и границы. Если у тебя есть документы с минутами 00 они попадут в выборку
 
 
   Serginio1
 
31 - 23.12.15 - 00:19
Если бы выбрала внешний отчет то просто КонецДня
   Мисти
 
32 - 23.12.15 - 00:25
Это понятно!
В след. раз попробую.
   Serginio1
 
33 - 23.12.15 - 00:26
Или сделай 
И (ПоступлениеТоваровУслуг.Дата >=&ДатаНач И  ПоступлениеТоваровУслуг.Дата < &ДатаКон
)
   Мисти
 
34 - 23.12.15 - 00:26
А можно мне пример такой внешней обработки? Обожаю красть чужое!
mdv92@mail.ru
   Serginio1
 
35 - 23.12.15 - 00:32
(34) Я в отпуске. Создаешь внешнюю обработку. В модуле создаешь экспортные функции. В форме этой обрабтоки отлаживаешь эти функции, а затем вызываешь её как в 11 и в других приведенных ссылках.
   Мисти
 
36 - 23.12.15 - 00:35
Ага, понятно, спасибо.
   Serginio1
 
37 - 23.12.15 - 00:35
Например я не могу вызвать из 7 ки вычислить и свойства через []

Я в модуле обработки прописываю 2 функции

Функция ВычислитьВыражение(Выражение) Экспорт
  возврат вычислить(Выражение);    
КонецФункции

Функция ВычислитьСвойствоОбъекта(Объект,Свойство) Экспорт
  возврат Объект[Свойство];    
КонецФункции



И их вызываю 

ПутьКОбработке=ТвойПутьКepf; 
    ДляВнешнегоСоединения= Сервер.ВнешниеОбработки.Создать(ПутьКОбработке);


Если Мета="Справочник" Тогда
        Объект=ДляВнешнегоСоединения.ВычислитьВыражение("Справочники."+ВидПриемник+".СоздатьЭлемент()");    ИначеЕсли Мета="Документ" Тогда
            Объект=ДляВнешнегоСоединения.ВычислитьВыражение("Документы."+ВидПриемник+".СоздатьДокумент()");
            ДляВнешнегоСоединения.ВычислитьСвойствоОбъекта(Объект,ТЧПриемника).Добавить();
                Иначе
                Объект=ДляВнешнегоСоединения.ВычислитьВыражение("РегистрыНакопления."+ВидПриемник+".СоздатьНаборЗаписей()");
КонецЕсли;
   Мисти
 
38 - 12.01.16 - 21:05
Ну всё, создаю!
Кто такой - "сервер"?
8 у меня вызывается через БазаОле.
Предположим, я к ней подключилась
   Serginio1
 
39 - 12.01.16 - 21:25
(38) Ты Внешнюю обработку создала? Сделала экспортные функции? Отладила их в базе источнике?
Путь должен быть виден из базы ОЛе
   Мисти
 
40 - 12.01.16 - 21:31
ПутьКОбработке=ТвойПутьКepf;

    ДляВнешнегоСоединения= Сервер.ВнешниеОбработки.Создать(ПутьКОбработке);
   Мисти
 
41 - 12.01.16 - 21:33
Serginio1, кто такой "сервер"?
Я пока пустую обработку сделала, в модуле написала ровно вот это
Функция ВычислитьВыражение(Выражение) Экспорт
  возврат вычислить(Выражение);    
КонецФункции

Функция ВычислитьСвойствоОбъекта(Объект,Свойство) Экспорт
  возврат Объект[Свойство];    
КонецФункции
Хоть мне нужно и не это, а присвоение даты.
Пока не пойму, как мне к ней подключиться.
   Serginio1
 
42 - 12.01.16 - 21:33
ДляВнешнегоСоединения= БазаОле.ВнешниеОбработки.Создать(ПутьКОбработке);
   Serginio1
 
43 - 12.01.16 - 21:34
Если тебе нужен доступ к файлам
ДляВнешнегоСоединения= БазаОле.ВнешниеОбработки.Создать(ПутьКОбработке,0);
   Мисти
 
44 - 12.01.16 - 21:43
Ага, спасибо, сейчас попробую.
            ДокОбъект.Дата =            ДляВнешнегоСоединения.УстановитьДатуВремяЮ(ДокОбъект,ч,м,с);
 а в ней -

Функция УстановитьДатуВремяЮ(Объект,чч,мм,сс) Экспорт
  Объект.Дата = Объект.Дата+ Чч*3600 + Мм*60 + Сс; 
  Возврат(Объект);
   Мисти
 
45 - 12.01.16 - 21:51
ДляВнешнегоСоединения= БазаОле.ВнешниеОбработки.Создать(ПутьКОбработке,0);
{C:\DOCUMENTS AND SETTINGS\DESKTOP\ПЕРЕГРУЗКА.ERT(7253)}: 1C:Enterprise 8.3.7.1831: Несоответствие типов (параметр номер '2')
   Serginio1
 
46 - 12.01.16 - 21:51
Да можно и просто
Процедура УстановитьДатуВремяЮ(Объект,чч,мм,сс) Экспорт
  Объект.Дата = Объект.Дата+ Чч*3600 + Мм*60 + Сс; 
КонецПроцедуры
   Serginio1
 
47 - 12.01.16 - 21:53
Сделай без второго параметра или попробуй

ДляВнешнегоСоединения= БазаОле.ВнешниеОбработки.Создать(ПутьКОбработке,"ложь");
   Мисти
 
48 - 12.01.16 - 21:57
ДляВнешнегоСоединения= БазаОле.ВнешниеОбработки.Создать(ПутьКОбработке);
{C:\DOCUMENTS AND SETTINGS\DESKTOP\ПЕРЕГРУЗКА.ERT(7253)}: 1C:Enterprise 8.3.7.1831: Ошибка подключения внешних метаданных
Файл не обнаружен 'C:\Вю..
Ложь она так, небось, не съест.
Сделала без параметра.
   Мисти
 
49 - 12.01.16 - 22:01
.epf забыла.
   Мисти
 
50 - 12.01.16 - 22:03
Значение поля "Дата" не может быть пустой датой
Залезла я в свою обработку!
Говорит, что дата пустая получается.
Изначально дата была, я проверила в отладчике.
   Serginio1
 
51 - 12.01.16 - 22:06
Ты объекту установила дату?
Сделай так
Процедура УстановитьДатуВремяЮ(Объект,Дата,чч,мм,сс) Экспорт
  Объект.Дата = Дата+ Чч*3600 + Мм*60 + Сс; 
КонецПроцедуры
   Мисти
 
52 - 12.01.16 - 22:12
ДатаЮ = Строка(Объект.Дата+ Чч*3600 + Мм*60 + Сс);
  Возврат(ДатаЮ);
- Возвращает в 7 какую-то абстрактную дату.
   Serginio1
 
53 - 12.01.16 - 22:16
(52) В семерке при сложении дат добавляется не секунда, а сутки.
А 51 не работает?
   Мисти
 
54 - 12.01.16 - 22:23
Объект.Дата = Объект.Дата+ Чч*3600 + Мм*60 + Сс;  - а так чем плохо?
   Мисти
 
55 - 12.01.16 - 22:24
Док8.Дата = Дата(гг, мм, дд, чч, юю, сс) - попробую такой фокус. Там числа или строки должны быть?
   Serginio1
 
56 - 12.01.16 - 22:36
(54) Еще раз 51 не работает?
   Serginio1
 
57 - 12.01.16 - 22:36
(55) Семерка обрубит время.
   Serginio1
 
58 - 12.01.16 - 22:37
55 числа
   Serginio1
 
59 - 12.01.16 - 22:38
Можешь и записать в во внешней обработке документ
   Serginio1
 
60 - 12.01.16 - 22:42
Я например делаю обмен из семерки в восьмерку через СериализаторXDTO. Но это другая песня
 
 
   Остап Сулейманович
 
61 - 12.01.16 - 22:43
(52) "Возвращает в 7 какую-то абстрактную дату."

Откуда и куда нужно переносить время? Из 7 в 8 или из 8 в 7?
   Остап Сулейманович
 
62 - 12.01.16 - 22:46
(57) Никто ничего не обрубит.
Дата(гг, мм, дд, чч, юю, сс) - это не семерочная функция.
   Serginio1
 
63 - 12.01.16 - 22:48
(61) Ей нужно из семерки в восьмерку передать дату со временем.

Просто уже путаюсь, где она что вызывает.
Пока речь идет о вызове во внешней обраьотке
   Serginio1
 
64 - 12.01.16 - 22:49
Веренее ей нужно установить дату в олешном 8 ном объекте
   Мисти
 
65 - 13.01.16 - 00:11
(63) да, всё правильно - из 7 подключиться к 8 и задать у перегружаемого документа дату со временем, как в 7.
   франц
 
66 - 13.01.16 - 00:32
да бери представление и парси сколько хошь - за почти месяц точно парсинг сделать можно...
   Мисти
 
67 - 13.01.16 - 00:35
ДатаЮ = Дата(Год(Объект.Дата), Месяц(Объект.Дата), День(Объект.Дата) , чч, мм, сс);
    Объект.Дата = ДатаЮ;
    Объект.Записать();
    Возврат(Объект);
- вот это написано в обработке в 8.
Не ругается, но ничего не происходит.
Всё равно время нулевое.
(66) Это новая задачка, а как "парси" я не понимаю совсем.
Фарси и то понятнее.
   франц
 
68 - 13.01.16 - 00:38
(67) parse - разбор... берешь представление документа, где есть дата со временем, и оттуда ВНЕЗАПНО вытаскиваешь нужную дату со временем, и потом его собираешь нужным образом..
   Мисти
 
69 - 13.01.16 - 00:41
СтрокаДата =               ДляВнешнегоСоединения.УстановитьДатуВремяЮ(ДокОбъект,ч,м,с);
СтрокаДата = "02.01.2015 12:05:20" - это отладчик показывает.
Вроде, то, что надо!
Или нет?
(68) Ну так я примерно этим и занимаюсь, хоть и не понимаю, что это за представление такое особенное.
Дата у меня и так есть! Проблема, чтоб в 8 через оле ее запихнуть.
   франц
 
70 - 13.01.16 - 00:44
(69) ок, скажу как всегда "все не читал, но осуждаю"... для 8 вызвать "УстановитьВремя (SetTime)" не канает?
   Мисти
 
71 - 13.01.16 - 00:46
А там можно (последним) и что-то еще, а конкретное время - нет.
   франц
 
72 - 13.01.16 - 00:47
(71) не верю... либо у тебя в 8 при записи дата на момент записи ставится..
   Serginio1
 
73 - 13.01.16 - 00:49
(67) В семерке будет нулевое. Смотри с каким временем записался документ
   Serginio1
 
74 - 13.01.16 - 00:50
в 8 рочной базе
   Мисти
 
75 - 13.01.16 - 00:52
Так я смотрела в 8! - это когда записывала там.
Последний раз - не изменилось время 00.00.00
   Serginio1
 
76 - 13.01.16 - 00:54
Значит где то еще изменяется
 Сделай возврат Строка( Объект.Дата);
   Мисти
 
77 - 13.01.16 - 00:55
Завтра, сегодня сплю уже.
   Serginio1
 
78 - 13.01.16 - 00:57
Для проверки сделай 

Функция ПолучитьДатуДок(Объект) Экспорт
возврат Строка(Объект.Дата);
КонецФункции

 Ну и проверяй
Сообщить(ДляВнешнегоСоединения.ПолучитьДатуДок(ДокОбъект);
   Serginio1
 
79 - 13.01.16 - 18:11
(0) Всё получилось?
   Мисти
 
80 - 19.01.16 - 16:54
Не-а, я бросила, занялась другими делами.
Сейчас еще раз попробую.
   Serginio1
 
81 - 20.01.16 - 10:33
Ну как успехи, А то будет время могу сам попробовать


Список тем форума
 
Здесь во втором сообщении вам дадут решение, а в двадцатом дадут правильное решение. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.