|
v7: Подскажите - как правильно написать? | ☑ | ||
---|---|---|---|---|
0
Невский Александр
16.07.11
✎
20:52
|
Пишу обработку для сверки данных по регистрам УТ 11 и ТиС 9.2, делаю через OLE
Одним из пунктов идет сверка остатков по комитентам В 7.7 написано вот так: ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ДатаНачала по ДатаКонца; |Фирма = Регистр.ПартииНаличие. Фирма, | Регистр.ПартииОтданные. Фирма, | Регистр.РеализованныйТовар.Фирма; |УпрАналитика = Регистр.ПартииНаличие. Фирма.УпрАналитика, | Регистр.ПартииОтданные. Фирма.УпрАналитика, | Регистр.РеализованныйТовар.Фирма.УпрАналитика; |ЮрЛицо = Регистр.ПартииНаличие. Фирма.ЮрЛицо, | Регистр.ПартииОтданные. Фирма.ЮрЛицо, | Регистр.РеализованныйТовар.Фирма.ЮрЛицо; |Номенклатура = Регистр.ПартииНаличие. Номенклатура, | Регистр.ПартииОтданные. Номенклатура, | Регистр.РеализованныйТовар.Номенклатура; |Комитент = Регистр.ПартииНаличие. Партия.Поставщик, | Регистр.ПартииОтданные. Партия.Поставщик, | Регистр.РеализованныйТовар.Договор.Владелец; |СтатусПартии = Регистр.ПартииНаличие. СтатусПартии, | Регистр.ПартииОтданные. СтатусПартии; |Договор = Регистр.ПартииНаличие. Партия.ДоговорПоставщика, | Регистр.ПартииОтданные. Партия.ДоговорПоставщика, | Регистр.РеализованныйТовар.Договор; |Цена = Регистр.ПартииНаличие. Партия.ЗакупочнаяЦена, | Регистр.ПартииОтданные. Партия.ЗакупочнаяЦена, | Регистр.РеализованныйТовар.Партия.ЗакупочнаяЦена; |КодОперации = Регистр.ПартииНаличие. КодОперации, | Регистр.ПартииОтданные. КодОперации;"; ТекстЗапроса = ТекстЗапроса + "КолОстаток = Регистр.ПартииНаличие. Количество, | Регистр.ПартииОтданные. Количество; |КолПродажи = Регистр.РеализованныйТовар.Количество;"; ТекстЗапроса = ТекстЗапроса + "Функция НачОстОстаток = НачОст(КолОстаток) Когда (СтатусПартии = СтатусПринятый); |Функция ПриходОстаток = Приход(КолОстаток) Когда (СтатусПартии = СтатусПринятый); |Функция РасходОстаток = Расход(КолОстаток) Когда (СтатусПартии = СтатусПринятый); |Функция КонОстОстаток = КонОст(КолОстаток) Когда (СтатусПартии = СтатусПринятый); |Условие (КодОперации <> глКО.ПередачаНаРеализацию); |Условие (КодОперации <> глКО.Перемещение); |Условие (КодОперации <> глКО.ПередачаВРозницу); |Условие (КодОперации <> глКО.ВозвратИзРозницы); |Условие (КодОперации <> глКО.ВозвратОтРеализатора);"; ТекстЗапроса = ТекстЗапроса + "Функция КонОстПродажи = КонОст(КолПродажи); |Функция НачОстПродажи = НачОст(КолПродажи); |Функция ПриходПродажи = Приход(КолПродажи); |Функция РасходПродажи = Расход(КолПродажи);"; ТекстЗапроса = ТекстЗапроса + "Группировка Комитент; |Группировка Договор; |Группировка Номенклатура; |Группировка Цена;"; Но при OLE у меня в 8.2 выходит ошибка - не нравится "СтатусПринятый" и "Перечисление" Переписал запрос вот таким образом: ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с "+"'31.12.10'"+ " по "+"'31.12.10'" +"; |Фирма = Регистр.ПартииНаличие. Фирма, | Регистр.ПартииОтданные. Фирма, | Регистр.РеализованныйТовар.Фирма; |УпрАналитика = Регистр.ПартииНаличие. Фирма.УпрАналитика, | Регистр.ПартииОтданные. Фирма.УпрАналитика, | Регистр.РеализованныйТовар.Фирма.УпрАналитика; |ЮрЛицо = Регистр.ПартииНаличие. Фирма.ЮрЛицо, | Регистр.ПартииОтданные. Фирма.ЮрЛицо, | Регистр.РеализованныйТовар.Фирма.ЮрЛицо; |Номенклатура = Регистр.ПартииНаличие. Номенклатура, | Регистр.ПартииОтданные. Номенклатура, | Регистр.РеализованныйТовар.Номенклатура; |Комитент = Регистр.ПартииНаличие. Партия.Поставщик, | Регистр.ПартииОтданные. Партия.Поставщик, | Регистр.РеализованныйТовар.Договор.Владелец; |СтатусПартии = Регистр.ПартииНаличие. СтатусПартии, | Регистр.ПартииОтданные. СтатусПартии; |Договор = Регистр.ПартииНаличие. Партия.ДоговорПоставщика, | Регистр.ПартииОтданные. Партия.ДоговорПоставщика, | Регистр.РеализованныйТовар.Договор; |Цена = Регистр.ПартииНаличие. Партия.ЗакупочнаяЦена, | Регистр.ПартииОтданные. Партия.ЗакупочнаяЦена, | Регистр.РеализованныйТовар.Партия.ЗакупочнаяЦена; |КодОперации = Регистр.ПартииНаличие. КодОперации, | Регистр.ПартииОтданные. КодОперации; |КолОстаток = Регистр.ПартииНаличие. Количество, | Регистр.ПартииОтданные. Количество; |КолПродажи = Регистр.РеализованныйТовар.Количество; |Функция НачОстОстаток = НачОст(КолОстаток) Когда (СтатусПартии.Идентификатор() = ""Т_Принятый""); |Функция ПриходОстаток = Приход(КолОстаток) Когда (СтатусПартии.Идентификатор() = ""Т_Принятый""); |Функция РасходОстаток = Расход(КолОстаток) Когда (СтатусПартии.Идентификатор() = ""Т_Принятый""); |Функция КонОстОстаток = КонОст(КолОстаток) Когда (СтатусПартии.Идентификатор() = ""Т_Принятый""); |Условие (КодОперации.Идентификатор() <> ""ПередачаНаРеализацию""); |Условие (КодОперации.Идентификатор() <> ""ПередачаВРозницу""); |Условие (КодОперации.Идентификатор() <> ""ВозвратИзРозницы""); |Условие (КодОперации.Идентификатор() <> ""ВозвратОтРеализатора""); |Функция КонОстПродажи = КонОст(КолПродажи); |Функция НачОстПродажи = НачОст(КолПродажи); |Функция ПриходПродажи = Приход(КолПродажи); |Функция РасходПродажи = Расход(КолПродажи); |Группировка Комитент; |Группировка Договор; |Группировка Номенклатура; |Группировка Цена;"; Подскажите - первый и второй запросы - отработают одинаково? И если нет - может кто переносил данные из 7.7 в 8.1 (8.2) через OLE - как это лучше сделать? |
|||
1
ДенисЧ
16.07.11
✎
20:56
|
Функция НачОстОстаток = НачОст(КолОстаток) Когда (СтатусПартии = перечисление.СтатусыПартий.СтатусПринятый);
|
|||
2
Невский Александр
16.07.11
✎
20:57
|
(1) нет ... в 8.2 ошибка выходит. так пробовал
|
|||
3
Невский Александр
16.07.11
✎
20:57
|
не нравится ему слово "Перечисление"
|
|||
4
ДенисЧ
16.07.11
✎
20:58
|
гонишь....
|
|||
5
andrewks
16.07.11
✎
20:59
|
а СтатусПринятый канэш в 8.2 задаёшь? :)
EvalExpr |
|||
6
Невский Александр
16.07.11
✎
21:02
|
(5) да, в 8.2 :)
|
|||
7
Невский Александр
16.07.11
✎
21:17
|
Подскажите пожалуйста - что я сделал не так? Переписал вот таким образом
|Функция НачОстОстаток = НачОст(КолОстаток) Когда (СтатусПартии = "+Соединение77.EvalExpr("Перечисление.СтатусыПартии.ЗначениеПоИдентификатору(""Т_Принятый"")")+"); |Функция ПриходОстаток = Приход(КолОстаток) Когда (СтатусПартии = "+Соединение77.EvalExpr("Перечисление.СтатусыПартии.ЗначениеПоИдентификатору(""Т_Принятый"")")+"); |Функция РасходОстаток = Расход(КолОстаток) Когда (СтатусПартии = "+Соединение77.EvalExpr("Перечисление.СтатусыПартии.ЗначениеПоИдентификатору(""Т_Принятый"")")+"); |Функция КонОстОстаток = КонОст(КолОстаток) Когда (СтатусПартии = "+Соединение77.EvalExpr("Перечисление.СтатусыПартии.ЗначениеПоИдентификатору(""Т_Принятый"")")+"); Выводит ошибку - {Форма.Форма.Форма(702)}: Ошибка при вызове метода контекста (Выполнить) Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда по причине: Произошла исключительная ситуация (1С:Предприятие): Функция НачОстОстаток = НачОст(КолОстаток) Когда (СтатусПартии = COMОбъект <<?>> ); Запрос[31] : Ошибка в выражении 'COMОбъект' |
|||
8
Темный Эльф
16.07.11
✎
21:21
|
(7)Соединение77.EvalExpr - возвращает COMОбъект. При конкатенации строк запроса идет преобразование к строковому типу, что и влечет за собой видимый тобой результат.
|
|||
9
ДенисЧ
16.07.11
✎
21:21
|
всё не так
|
|||
10
VladZ
16.07.11
✎
21:26
|
Хех.. Не люблю я ОЛЕ... Лучше уж прямым запросом зафигачить... И быстрее, и гемора меньше...
|
|||
11
Сияющий Асинхраль
16.07.11
✎
22:28
|
По оле в семерке работа с перечислениями несколько необычна
|
|||
12
Обработка
16.07.11
✎
22:33
|
Переноости через КД или быстрее напишешь выгрузкйо и загрузкой в текст с разделителяями.
|
|||
13
andrewks
16.07.11
✎
22:43
|
|Функция НачОстОстаток = НачОст(КолОстаток);
|Функция ПриходОстаток = Приход(КолОстаток); |Функция РасходОстаток = Расход(КолОстаток); |Функция КонОстОстаток = КонОст(КолОстаток); |Условие(СтатусПартии=Перечисление.СтатусыПартии.Т_Принятый) |
|||
14
Обработка
16.07.11
✎
22:49
|
(13) точно! не заметил код...
|
|||
15
Невский Александр
17.07.11
✎
08:19
|
(13) я вчера так писал :)
У меня в 8.2 выходит вот такая ошибка {Форма.Форма.Форма(709)}: Ошибка при вызове метода контекста (Выполнить) Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда по причине: Произошла исключительная ситуация (1С:Предприятие): Условие(СтатусПартии=Перечисление.СтатусыПартии.Т_Принятый <<?>> ); Запрос[35] : Ошибка в выражении 'Перечисление' |
|||
16
Невский Александр
17.07.11
✎
08:22
|
вроде нашел то, что нужно :)
И второй вариант в (0), рабочий судя по ветке Ошибка в запросе через ОЛЕ еще ссылку нашел Перечисления в запросе через OLE |
|||
17
Невский Александр
17.07.11
✎
09:15
|
Подскажите пожалуйста ...
Вот теперь на этот кусок ругается - |Условие (КодОперации.Идентификатор() <> ""ПередачаНаРеализацию""); |Условие (КодОперации.Идентификатор() <> ""ПередачаВРозницу""); |Условие (КодОперации.Идентификатор() <> ""ВозвратИзРозницы""); |Условие (КодОперации.Идентификатор() <> ""ВозвратОтРеализатора""); Выводит при выполнении запроса ошибки вида "Значение не предствляет собой агрегатный объект (Идентификатор): 14) 14 - это порядковый номер в перечислении, Код операции - это реквизит из регистра |
|||
18
ДенисЧ
17.07.11
✎
09:17
|
(17) на остатках нет кода операции.
|
|||
19
Невский Александр
17.07.11
✎
09:18
|
Давно я на 7.7 не писал. А как лучше обойти, чтобы не брал с пустыми кодами операциями - добавить дополнительное условие в запрос?
|
|||
20
ДенисЧ
17.07.11
✎
09:19
|
используй Когда
|
|||
21
ДенисЧ
17.07.11
✎
09:20
|
и 77 тут ни причём. в 8ке тоже не получишь реквизиты в остатках.
|
|||
22
Невский Александр
17.07.11
✎
09:51
|
Подскажите как правильно написать проверку на пустое значение? Все перепробовал, перерыл поиск - ничего не нашел ...
|
|||
23
Невский Александр
17.07.11
✎
09:52
|
(22) + в запросе 7.7
|
|||
24
andrewks
17.07.11
✎
09:54
|
ПустоеЗначение(Х)=1
|
|||
25
big
17.07.11
✎
10:20
|
лучше написать функцию в глобальном модуле посредством которой выполнять запросы непосредственно в 7-ке, возвращая результат в параметр этой же функции. Работает быстрее и результат более прогонозируем.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |