|
1c 8.3 + c#+ dynamic | ☑ | ||
---|---|---|---|---|
0
sands74
31.08.14
✎
17:21
|
Облазил весь интернет, куцая информация вообще, не говоря про то, что в 8.3 в справке напрочь исчез раздел работы с Контрагентами.
Проблема в следующем, есть код: V83.COMConnector __v83 = new V83.COMConnector(); dynamic __c1 = __v83.Connect(@"File=C:\Data\;Usr='Администратор';pwd=''"); dynamic Контрагенты = __c1.Справочники.Контрагенты; dynamic найтиПоКоду = Контрагенты.НайтиПоКоду("123"); if (найтиПоКоду != null) { } Как можно получить (а там д.б. вроде как (int)1) в переменной найтиПоКоду. Буду признателен за ответ. |
|||
1
shuhard
31.08.14
✎
17:22
|
(0)[не говоря про то, что в 8.3 в справке напрочь исчез раздел работы с Контрагентами]
доктора в топик, срочно |
|||
2
sands74
31.08.14
✎
17:31
|
Ага, 1С:Предприятие 8.3 (8.3.5.1088),
Меню\Синтаксис помощник\Индекс, ищу Контрагент результат = нет |
|||
3
Escander
31.08.14
✎
17:33
|
(2) а теперь расскажи когда она там была
|
|||
4
sands74
31.08.14
✎
17:33
|
в c# как можно выдернуть значение результата выполнения функции НайтиПоКоду?
в if предполагается занести нового контрагента, если такого нет по коду |
|||
5
sands74
31.08.14
✎
17:35
|
2Escander
Прикольно, а я не знаю, просто в 7.7 вроде была, а мне надо контрагентов перекачать 70000 штук, из них штук 30000 уже есть. качаю из сиквела. скрипт код 1с не предлагать. |
|||
6
Escander
31.08.14
✎
17:36
|
(5) в 7.7 в справке и даже двухтомнике по макроязыку не было про Контрагентов.
|
|||
7
shuhard
31.08.14
✎
17:38
|
(5)[ качаю из сиквела. скрипт код 1с не предлагать.]
и пофиг, что в 8.х написать запрос к сиквелу через ADODB займёт 30 секунд |
|||
8
sands74
31.08.14
✎
17:42
|
2 Escander
Ну монстр тогда )) Я тупо решаю пригладные задачи, вытащил свой кусок кода, пытаюсь присандалить в c# 4.0 Не могу получить значение. Я конечно признателен, что мы стали обсуждать справку, но решение есть вообще какое-либо? Напомню: dynamic найтиПоКоду = Контрагенты.НайтиПоКоду("123"); Получить значение: найтиПоКоду Вроде как int ... |
|||
9
Аденэсниг
31.08.14
✎
17:43
|
принес попкорн
|
|||
10
sands74
31.08.14
✎
17:44
|
Внутренние скрипты не предлагать, мне надо проверить есть ли Контрагент с заданным кодом. Исходник в топе.
|
|||
11
Escander
31.08.14
✎
17:46
|
(8) ну вообще-то тут четь меньше чем немерянно тех кто это напишет на языке 1С (я-б не называл его скриптовым языком в контексте 8.*). А вот по динамиксу - это ты неудачно зашёл...
Если база на сиквеле одинэсовская, то тип поля код может быть и строковый. |
|||
12
sands74
31.08.14
✎
17:48
|
Он строковый, НайтиПоКоду("1sdfsdf23"), в делфях мне возвращает 1, в шарпе
var найтиПоКоду = Контрагенты.НайтиПоКоду("1sdfsdf23"); if (найтиПоКоду == 1) ошибка: Ошибка 22695 Не удается применить оператор "==" к операндам типа "System.__ComObject" и "int" |
|||
13
sands74
31.08.14
✎
17:52
|
2 Escander,
" ... я-б не называл его скриптовым языком ..." он такой и есть, тупо пошаговый, маш код не генерит, может свой скрипт окучивает в нечитабельность, для продвинутости, но это я могу сделать за секунду любым из алгоритмов в шарпе |
|||
14
Escander
31.08.14
✎
17:52
|
(12) скажу последний раз: тут чуть меньше чем немерянно тех кто это напишет на языке 1С (я-б не называл его скриптовым языком в контексте 8.*). А вот по динамиксу - это ты неудачно зашёл...
|
|||
15
Escander
31.08.14
✎
17:53
|
вот смотрю....
__v83.Connect(@"File=C:\Data\;Usr='Администратор';pwd=''") база точно на сиквеле? |
|||
16
Escander
31.08.14
✎
17:54
|
но если тебе религия запрещает писать на 1С - я тебе точно не помогу
|
|||
17
mikecool
31.08.14
✎
17:54
|
(0)
смотри, что метод возвращает СправочникМенеджер.<Имя справочника>.НайтиПоКоду (CatalogManager.<Имя справочника>.FindByCode) СправочникМенеджер.<Имя справочника> (CatalogManager.<Имя справочника>) НайтиПоКоду (FindByCode) Синтаксис: НайтиПоКоду(<Код>, <ПоискПоПолномуКоду>, <Родитель>, <Владелец>) Параметры: <Код> (обязательный) Тип: Число; Строка. Искомый код. Строка или число в зависимости от настроек справочника в конфигураторе. <ПоискПоПолномуКоду> (необязательный) Тип: Булево. Определяет режим поиска по полному коду. Истина - искомый код следует задавать в виде строки, состоящей из последовательности кодов по уровням справочника, разделенных символом "/". Значение по умолчанию: Ложь. <Родитель> (необязательный) Тип: СправочникСсылка. Родитель, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике. <Владелец> (необязательный) Тип: СправочникСсылка. Владелец, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике. Возвращаемое значение: Тип: СправочникСсылка.<Имя справочника>; Неопределено. Если не существует ни одного элемента с требуемым кодом, то будет возвращена пустая ссылка. Если для справочника код не задан (длина = 0), то будет возвращено Неопределено. Описание: Осуществляет поиск элемента по его коду. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). Пример: СтрокаКода = "840"; Валюты = Справочники.Валюты; НайденнаяСсылка = Валюты.НайтиПоКоду(СтрокаКода); Если НайденнаяСсылка = Валюты.ПустаяСсылка() Тогда Сообщить("Валюты """ + СтрокаКода + """ еще нет"); КонецЕсли; -------------------------------------------------------------------------------- Методическая информация |
|||
18
sands74
31.08.14
✎
17:56
|
Гм, в том то и дело что запрещает, в канторе сидят тупые сапортеры, выйдет патч, они неглядя все накатят и все, сколько раз уже было, вымораживает мозг вспоминать что где у кого и где лежало (((
|
|||
19
mikecool
31.08.14
✎
17:56
|
+17 как в дельфях он у тебя цифирь возвращал - хз, наверное какое то приведение срабатывало под тип переменной
|
|||
20
Escander
31.08.14
✎
17:57
|
(17) это про справочник Валюты - ему нужно про справочник Контрагенты... писать на "скрипте 1С" запрещает религия...
|
|||
21
mikecool
31.08.14
✎
17:58
|
(18) как это относится к внешней обработке, написанной на 1с, лежащей где тебе надо? и вообще - кто тебя допустил импортить контров в базу, если ты даже синтаксиса не знаешь?
|
|||
22
Escander
31.08.14
✎
17:58
|
(19) Boolean, если не запамятовал, приводится к Int веде и всюду (значения 0 и 1)
|
|||
23
sands74
31.08.14
✎
17:59
|
ребяты, я на несколько серверов пишу сервис, который и знать не знает что там. он имеет строку подключения к 1с, и засасывает/обновляет контрагентов.
Именно сервис, он фоновый, ничего не вызывает, а 1с вызывает именно так. |
|||
24
Escander
31.08.14
✎
17:59
|
(21) см (18) >в канторе сидят тупые сапортеры
|
|||
25
mikecool
31.08.14
✎
18:01
|
(23) напиши веб-сервис в 1с и обращайся к нему
|
|||
26
sands74
31.08.14
✎
18:02
|
Более того, сервис облачный, он высасывает свое тело откуда-то, запускается и лопатит.
Мне надо узнать есть ли гребанный Контрагент по заданному коду. Если в dynamics c# никто не может подсказать, не буду отвлекать больше ваше внимание. |
|||
27
shuhard
31.08.14
✎
18:02
|
(25) у чела классовая вражда с 1С, какой нах веб-сервис
|
|||
28
mikecool
31.08.14
✎
18:03
|
(26) спасибо за понимание, не отвлекай, будь лаской
|
|||
29
sands74
31.08.14
✎
18:09
|
2 shuhard
отнюдь, много серверов, много баз, не хочется мышой шевелить и что то запускать, в винсервисе массы процессов делаются, обновляется все на головном сервере, сателлиты скачивают бинарники, когда пришло время и работают, итог = я не трогаю 1с, и меня не трогают филиалы. |
|||
30
Xapac
31.08.14
✎
19:43
|
(0) а select-ом пробовал?
|
|||
31
Garykom
гуру
31.08.14
✎
20:04
|
(9) нее мне попкорна не хватит, пошел за пывом...
|
|||
32
Garykom
гуру
31.08.14
✎
20:09
|
Кстати и че мы так студентов нахватавшихся по верхам C#-па и лезущих потом в 1С не любим? ))
|
|||
33
Dmitry1c
31.08.14
✎
20:38
|
(-_\\
|
|||
34
zulu_mix
31.08.14
✎
20:45
|
if (найтиПоКоду != __c1.Неопределено)
|
|||
35
zulu_mix
31.08.14
✎
20:46
|
if (найтиПоКоду != Контрагенты.ПустаяСсылка())
|
|||
36
sands74
01.09.14
✎
15:41
|
2 zulu_mix
Спасибо! работает еще и так string Код = Контрагенты.НайтиПоКоду("123").Код; if (!string.IsNullOrEmpty(Код .Trim())) { .... } |
|||
37
Garykom
гуру
01.09.14
✎
16:02
|
(36) наверно будет откровением но код у контрагента может быть пустым...
притом что сам контрагент нормальный и заполнен или быть не пустым а из N числа пробелов )) |
|||
38
sands74
01.09.14
✎
16:08
|
2 Garykom
большое спасибо! учту! |
|||
39
Ненавижу 1С
гуру
01.09.14
✎
16:08
|
if (найтиПоКоду.IsEmpty()) {
} |
|||
40
Serginio1
01.09.14
✎
16:24
|
if (__c1.ЗначениеЗаполнено(найтиПоКоду){
} |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |