![]() |
![]() |
![]() |
|
Как через оле задать отбор? | ☑ | ||
---|---|---|---|---|
0
Мисти
21.12.15
✎
23:38
|
Подключаюсь из 7 и 8, получила таблицу.
Как мне теперь найти строку по номеру? Запрос = БазаОле.NewObject("Запрос"); Запрос.УстановитьПараметр("ВыбДата", Дата1); Запрос.Текст = "ВЫБРАТЬ | СчетФактураВыданныйДокументыОснования.Ссылка Как СФ, | СчетФактураВыданныйДокументыОснования.Ссылка.Номер Как Номер, | СчетФактураВыданныйДокументыОснования.Ссылка.Дата, | СчетФактураВыданныйДокументыОснования.ДокументОснование Как ПП, | СчетФактураВыданныйДокументыОснования.Ссылка.Контрагент Как Контрагент |ИЗ | Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования |ГДЕ | СчетФактураВыданныйДокументыОснования.Ссылка.Дата < &ВыбДата"; ТаблицаДокCOM = Запрос.Выполнить().Выгрузить(); // надо бы еще по наименованию поискать!! ПОДОБНО |
|||
1
Мисти
21.12.15
✎
23:39
|
| СчетФактураВыданныйДокументыОснования.Ссылка.Номер Как Номер, - вот этот номер у меня есть.
|
|||
2
Мисти
22.12.15
✎
00:06
|
Отбор = БазаОле.NewObject("Структура()");
Отбор.Вставить("Номер",НомерСФ); СтрокиОтбор = ТаблицаДокCOM.НайтиСтроки(Отбор); Такой фокус не прошел. |
|||
3
hhhh
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
|
Ну, так-то я умею, а прямого пути нет что ли?
|
|||
8
Serginio1
22.12.15
✎
00:39
|
Используй внешний отчет. Преймущества отладка в реальной базе.
Используй экспортные функции для получения данных. |
|||
9
Serginio1
22.12.15
✎
00:52
|
||||
10
Serginio1
22.12.15
✎
00:53
|
||||
11
Serginio1
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
|
Подобно "ВС+%"?
|
|||
15
Serginio1
22.12.15
✎
23:37
|
(11) Еще раз смотри 11. Передавай в параметрах строку, а в функции уже распарсивай.
Подобно "ВС+%" |
|||
16
Serginio1
22.12.15
✎
23:39
|
||||
17
Мисти
22.12.15
✎
23:41
|
Запрос = БазаОле.NewObject("Запрос");
Запрос.УстановитьПараметр("ВыбНомер", "ВС+%"); Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТоваровУслуг.Дата, | ПоступлениеТоваровУслуг.Контрагент.ИНН, | ПоступлениеТоваровУслуг.Контрагент.Ссылка, | ПоступлениеТоваровУслуг.СуммаДокумента, | ПоступлениеТоваровУслуг.Номер |ИЗ | Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг |ГДЕ | ПоступлениеТоваровУслуг.Номер ПОДОБНО &ВыбНомер | И ПоступлениеТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон | И ПоступлениеТоваровУслуг.Контрагент.ИНН ПОДОБНО &ВыбИНН"; |
|||
18
Мисти
22.12.15
✎
23:42
|
(16) Спасибо!
Осталось туда дату всобачить - мне нужны документы за один день и у меня, соответственно есть одна дата. |
|||
19
Serginio1
22.12.15
✎
23:44
|
(17) Почему не хочешь воспользоваться внешним отчетом?
Еще раз премущества это отладка в родной базе, отсутствие ограничений |
|||
20
Мисти
22.12.15
✎
23:46
|
У меня там уже 6000 строк понаписно, остался крошечный кусочек, не хочу ничего нового сейчас пробовать.
|
|||
21
GreyK
22.12.15
✎
23:53
|
(17) Прочитай как дата строкой задаётся в 8ке, там вроде без подвохов, надо только добавить время.
|
|||
22
Serginio1
22.12.15
✎
23:54
|
(20) Так то же самое, только данные получаешь из внешнего отчета. Ничего не меняется
|
|||
23
Serginio1
22.12.15
✎
23:55
|
Дополнительные данные
|
|||
24
Мисти
22.12.15
✎
23:55
|
(22)Вникать не хочу. Всё должно было перегрузиться еще вчера.
(21) Ну что мне сделать с Док7.ДатаДок? |
|||
25
Serginio1
22.12.15
✎
23:56
|
(24) Если бы вникла в 2 строчки, было бы сделано еще позавчера
|
|||
26
Мисти
23.12.15
✎
00:00
|
Проблема только сегодня возникла
|
|||
27
Мисти
23.12.15
✎
00:04
|
Люди добрые! Ну ночь уже!
Напишите мне эту строчку-то одну! |
|||
28
Serginio1
23.12.15
✎
00:07
|
ПолучитьВремя
|
|||
29
Мисти
23.12.15
✎
00:09
|
Я уже надумала - Док7.ДатаДок-1 и Док7.ДатаДок+1
|
|||
30
Serginio1
23.12.15
✎
00:17
|
Только учти, что в МЕЖДУ попадают и границы. Если у тебя есть документы с минутами 00 они попадут в выборку
|
|||
31
Serginio1
23.12.15
✎
00:19
|
Если бы выбрала внешний отчет то просто КонецДня
|
|||
32
Мисти
23.12.15
✎
00:25
|
Это понятно!
В след. раз попробую. |
|||
33
Serginio1
23.12.15
✎
00:26
|
Или сделай
И (ПоступлениеТоваровУслуг.Дата >=&ДатаНач И ПоступлениеТоваровУслуг.Дата < &ДатаКон ) |
|||
34
Мисти
23.12.15
✎
00:26
|
А можно мне пример такой внешней обработки? Обожаю красть чужое!
mdv92@mail.ru |
|||
35
Serginio1
23.12.15
✎
00:32
|
(34) Я в отпуске. Создаешь внешнюю обработку. В модуле создаешь экспортные функции. В форме этой обрабтоки отлаживаешь эти функции, а затем вызываешь её как в 11 и в других приведенных ссылках.
|
|||
36
Мисти
23.12.15
✎
00:35
|
Ага, понятно, спасибо.
|
|||
37
Serginio1
23.12.15
✎
00:35
|
Например я не могу вызвать из 7 ки вычислить и свойства через []
Я в модуле обработки прописываю 2 функции Функция ВычислитьВыражение(Выражение) Экспорт возврат вычислить(Выражение); КонецФункции Функция ВычислитьСвойствоОбъекта(Объект,Свойство) Экспорт возврат Объект[Свойство]; КонецФункции И их вызываю ПутьКОбработке=ТвойПутьКepf; ДляВнешнегоСоединения= Сервер.ВнешниеОбработки.Создать(ПутьКОбработке); Если Мета="Справочник" Тогда Объект=ДляВнешнегоСоединения.ВычислитьВыражение("Справочники."+ВидПриемник+".СоздатьЭлемент()"); ИначеЕсли Мета="Документ" Тогда Объект=ДляВнешнегоСоединения.ВычислитьВыражение("Документы."+ВидПриемник+".СоздатьДокумент()"); ДляВнешнегоСоединения.ВычислитьСвойствоОбъекта(Объект,ТЧПриемника).Добавить(); Иначе Объект=ДляВнешнегоСоединения.ВычислитьВыражение("РегистрыНакопления."+ВидПриемник+".СоздатьНаборЗаписей()"); КонецЕсли; |
|||
38
Мисти
12.01.16
✎
21:05
|
Ну всё, создаю!
Кто такой - "сервер"? 8 у меня вызывается через БазаОле. Предположим, я к ней подключилась |
|||
39
Serginio1
12.01.16
✎
21:25
|
(38) Ты Внешнюю обработку создала? Сделала экспортные функции? Отладила их в базе источнике?
Путь должен быть виден из базы ОЛе |
|||
40
Мисти
12.01.16
✎
21:31
|
ПутьКОбработке=ТвойПутьКepf;
ДляВнешнегоСоединения= Сервер.ВнешниеОбработки.Создать(ПутьКОбработке); |
|||
41
Мисти
12.01.16
✎
21:33
|
Serginio1, кто такой "сервер"?
Я пока пустую обработку сделала, в модуле написала ровно вот это Функция ВычислитьВыражение(Выражение) Экспорт возврат вычислить(Выражение); КонецФункции Функция ВычислитьСвойствоОбъекта(Объект,Свойство) Экспорт возврат Объект[Свойство]; КонецФункции Хоть мне нужно и не это, а присвоение даты. Пока не пойму, как мне к ней подключиться. |
|||
42
Serginio1
12.01.16
✎
21:33
|
ДляВнешнегоСоединения= БазаОле.ВнешниеОбработки.Создать(ПутьКОбработке);
|
|||
43
Serginio1
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') |
|||
46
Serginio1
12.01.16
✎
21:51
|
Да можно и просто
Процедура УстановитьДатуВремяЮ(Объект,чч,мм,сс) Экспорт Объект.Дата = Объект.Дата+ Чч*3600 + Мм*60 + Сс; КонецПроцедуры |
|||
47
Serginio1
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
|
Значение поля "Дата" не может быть пустой датой
Залезла я в свою обработку! Говорит, что дата пустая получается. Изначально дата была, я проверила в отладчике. |
|||
51
Serginio1
12.01.16
✎
22:06
|
Ты объекту установила дату?
Сделай так Процедура УстановитьДатуВремяЮ(Объект,Дата,чч,мм,сс) Экспорт Объект.Дата = Дата+ Чч*3600 + Мм*60 + Сс; КонецПроцедуры |
|||
52
Мисти
12.01.16
✎
22:12
|
ДатаЮ = Строка(Объект.Дата+ Чч*3600 + Мм*60 + Сс);
Возврат(ДатаЮ); - Возвращает в 7 какую-то абстрактную дату. |
|||
53
Serginio1
12.01.16
✎
22:16
|
(52) В семерке при сложении дат добавляется не секунда, а сутки.
А 51 не работает? |
|||
54
Мисти
12.01.16
✎
22:23
|
Объект.Дата = Объект.Дата+ Чч*3600 + Мм*60 + Сс; - а так чем плохо?
|
|||
55
Мисти
12.01.16
✎
22:24
|
Док8.Дата = Дата(гг, мм, дд, чч, юю, сс) - попробую такой фокус. Там числа или строки должны быть?
|
|||
56
Serginio1
12.01.16
✎
22:36
|
(54) Еще раз 51 не работает?
|
|||
57
Serginio1
12.01.16
✎
22:36
|
(55) Семерка обрубит время.
|
|||
58
Serginio1
12.01.16
✎
22:37
|
55 числа
|
|||
59
Serginio1
12.01.16
✎
22:38
|
Можешь и записать в во внешней обработке документ
|
|||
60
Serginio1
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) Никто ничего не обрубит.
Дата(гг, мм, дд, чч, юю, сс) - это не семерочная функция. |
|||
63
Serginio1
12.01.16
✎
22:48
|
(61) Ей нужно из семерки в восьмерку передать дату со временем.
Просто уже путаюсь, где она что вызывает. Пока речь идет о вызове во внешней обраьотке |
|||
64
Serginio1
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 при записи дата на момент записи ставится..
|
|||
73
Serginio1
13.01.16
✎
00:49
|
(67) В семерке будет нулевое. Смотри с каким временем записался документ
|
|||
74
Serginio1
13.01.16
✎
00:50
|
в 8 рочной базе
|
|||
75
Мисти
13.01.16
✎
00:52
|
Так я смотрела в 8! - это когда записывала там.
Последний раз - не изменилось время 00.00.00 |
|||
76
Serginio1
13.01.16
✎
00:54
|
Значит где то еще изменяется
Сделай возврат Строка( Объект.Дата); |
|||
77
Мисти
13.01.16
✎
00:55
|
Завтра, сегодня сплю уже.
|
|||
78
Serginio1
13.01.16
✎
00:57
|
Для проверки сделай
Функция ПолучитьДатуДок(Объект) Экспорт возврат Строка(Объект.Дата); КонецФункции Ну и проверяй Сообщить(ДляВнешнегоСоединения.ПолучитьДатуДок(ДокОбъект); |
|||
79
Serginio1
13.01.16
✎
18:11
|
(0) Всё получилось?
|
|||
80
Мисти
19.01.16
✎
16:54
|
Не-а, я бросила, занялась другими делами.
Сейчас еще раз попробую. |
|||
81
Serginio1
20.01.16
✎
10:33
|
Ну как успехи, А то будет время могу сам попробовать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |