Имя: Пароль:
1C
1С v8
Как переделать из таблицы значений массив
0 ice123
 
30.11.13
17:54
Из базы 77, подключаемой на OLE на обычных формах бралась ТЗ.
На управляемом приложении подключение по OLE осуществляется на клиенте, а на клиенте таблицы значений нет. Как сформировать массив аналогичный таблице значений?
1 MKZM
 
30.11.13
18:05
Пиши в дбф и читай.
2 ice123
 
30.11.13
18:13
(1)а можно поподробнее....
3 MKZM
 
30.11.13
18:21
набери с поисковой системе 1с и дбф
4 MKZM
 
30.11.13
18:24
обычных формах бралась
а на клиенте таблицы значений нет
5 MKZM
 
30.11.13
18:25
4 - не посмотрел, что на упр. ф.
6 ice123
 
30.11.13
18:27
(4)Поэтому и пытаюсь сформировать двумерный массив аналогичный ТЗ, только не пойму как...
7 Wobland
 
30.11.13
18:28
а зачем клиенту ТЗ?
8 m-serg74
 
30.11.13
18:28
(6) массив элементы которого структуры с ключами такими как названия колонок у табл. знач.
9 MKZM
 
30.11.13
18:30
Если тз типизирована и првильные типы - проблем не должно быть вроде.
10 m-serg74
 
30.11.13
18:31
(9) проблем с чем?
11 ice123
 
30.11.13
18:32
(9)т.е. я правильно понимаю, что надо прописать все типы колонок?
12 ice123
 
30.11.13
18:32
(8) можно примерчик, хоть в 2 элемента...
13 m-serg74
 
30.11.13
18:33
(11) лучше расскажи откуда в 77 берется ТЗ? может как то подругому оттуда данные брать?
14 MKZM
 
30.11.13
18:33
Вроде в тонком нет возможности передать просто так. Нужен реквизит.
15 m-serg74
 
30.11.13
18:33
(12) можно только скажи где подгатавливать в 77 или в УФ
16 m-serg74
 
30.11.13
18:34
(14) Вы кому адресуете свои сообщения:-) неясно, может укажите
17 MKZM
 
30.11.13
18:36
(16) Не вам. Это даже никому :)
(15) Из базы 77
18 m-serg74
 
30.11.13
18:38
(17) ice123 и MKZM Вы един в двух никах?
19 ice123
 
30.11.13
18:38
(16)данные из 77 берутся по OLE-соединению, в обычных формах все загонялось в ТЗ, которое потом обрабатывалось...
сейчас надо куда-то получить данные, полученные OLE соединением, чтобы потом передать на сервер, т.к. там есть еще одна ТЗ, которая в свою очередь берется из базы 8.2, данные которой сравниваются с ТЗ, полученной из 77
20 ice123
 
30.11.13
18:39
(18) не я сам по себе...
21 MKZM
 
30.11.13
18:40
(18) Нет. Я просто напомнил заголовок.
22 MKZM
 
30.11.13
18:41
(18) Вдруг мой текст понятнее будет. )
23 ice123
 
30.11.13
18:42
(0) как вообще можно правильней реализовать следующую задачу: надо сравнить данные базы 77 и данные 8.2(управляемое приложение), наверное так правильней будет сформулировать
24 m-serg74
 
30.11.13
18:42
(20) (21) как то думаю так:
    ИсхТЗ = СоздатьОбъект("ТаблицаЗначений");
    ИсхТЗ.НоваяКолонка("Колонка1");
    ИсхТЗ.НоваяКолонка("Колонка2");
    НовТЗ = СоздатьОбъект("СписокЗначений");
    ИсхТЗ.ВыбратьСтроки();
    Пока ИсхТЗ.ПолучитьСтроку() = 1 Цикл
        НовСтр = СоздатьОбъект("СписокЗначений");
        НовСтр.ДобавитьЗначение(ИсхТЗ.Колонка1, "Колонка1");
        НовСтр.ДобавитьЗначение(ИсхТЗ.Колонка2, "Колонка2");
        НовТЗ.ДобавитьЗначение(НовСтр, "Строка" + ИсхТЗ.НомерСтроки);
    КонецЦикла;
25 m-serg74
 
30.11.13
18:44
(23) так тогда получайте данные из 77 запоминайте, а на сервере сравнивайте с данными УФ
26 m-serg74
 
30.11.13
18:47
(17) /(15) Из базы 77/
обманщик)))
(19) говорит:
/данные из 77 берутся по OLE-соединению, в обычных формах все загонялось в ТЗ/

втаком случае на клиенте делайте массив, а данные из 77 укладывайте в Структура с нужными названиями ключей, потом все это на сервер и проверяйте
27 ice123
 
30.11.13
18:48
(26) тогда получается массив не нужен?
28 m-serg74
 
30.11.13
18:52
(27) Вы все так абстрактно описываете что я не знаю нужен или нет))) но если нужен то примерно так:

    НовТЗ = Новый Массив;
    Для Сч = 1 По СколькоНужно Цикл
        НовСтр = Новый Структура;
        НовСтр.Вставить("Колонка1", ЗначениеКолонки1Из77);
        НовСтр.Вставить("Колонка2", ЗначениеКолонки2Из77);
        НовТЗ.Добавить(НовСтр);
    КонецЦикла;
    ПровериитьНаСервере(НовТЗ);
29 ice123
 
30.11.13
18:56
(28) вот что-то подобное я и писал, а вот значение строки в этом массиве как записываться будет?
30 ice123
 
30.11.13
18:57
(28) т.е. в массиве НовТЗ
31 m-serg74
 
30.11.13
18:59
(29) что значит:
/а вот значение строки в этом массиве как записываться будет?/

        НовСтр = Новый Структура;
        НовСтр.Вставить("Колонка1", ЗначениеКолонки1Из77);
        НовСтр.Вставить("Колонка2", ЗначениеКолонки2Из77);
это типа строка

        НовТЗ.Добавить(НовСтр);

а это типа добавили строку в ТЗ, которая на самом деле массив
32 ice123
 
30.11.13
19:01
т.е. сперва в массив пишутся заголовки столбцов, а потом сами строки? или же сразу пишутся строки без заголовков, что-то я совсем запутался...
33 ice123
 
30.11.13
19:03
(31) наверное, судя по коду заголовки столбцов не надо писать...
34 m-serg74
 
30.11.13
19:03
(32) да что там путаться 5 строк кода
    НовТЗ = Новый Массив; //создаем массив вместо ранешней ТЗ
    Для Сч = 1 По СколькоНужно Цикл
        НовСтр = Новый Структура; //типа создаем строку ТЗ
        // типа заполняем поля строки
        НовСтр.Вставить("Колонка1", ЗначениеКолонки1Из77);
        НовСтр.Вставить("Колонка2", ЗначениеКолонки2Из77);
        НовТЗ.Добавить(НовСтр); // типа добавляем строку в ТЗ
    КонецЦикла;
    // типа отправляем типа ТЗ на проверку на сервер
    ПровериитьНаСервере(НовТЗ);
35 m-serg74
 
30.11.13
19:04
(33)
/наверное, судя по коду заголовки столбцов не надо писать.../

как на сервере определять будешь где что? можно конечно по номерам обращаться
36 ice123
 
30.11.13
19:05
(35)ВСЕ ДОШЛО!!! СПАСИБО ОГРОМНОЕ!!!!!!!!!!
37 m-serg74
 
30.11.13
19:06
(36) Слава Создателю!!! :-)
38 ice123
 
30.11.13
19:06
(1)ХОТЯ И ЭТО ПРЕДЛОЖЕНИЕ НЕ ЛИШЕНО СМЫСЛА, СПАСИБО ВСЕМ!!!
39 m-serg74
 
30.11.13
19:20
(38) тогда добавлю еще 5 копеек
COMОбъект (COMObject)
COMОбъект (COMObject)
Конструкторы:

По имени приложения

Описание:

Создает COM-объект (например, Word, Excel и т.д.). Методы и свойства СОМ-объектов в дальнейшем становятся доступными через данный объект.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.

доступность на сервере!!! читай данные из 77 сразу на сервере там и ТЗ можно делать и проверять сразу можно клиенту только вернешь результат проверки и все
40 ice123
 
30.11.13
19:30
(39) вот тоже напоролся на эти грабли... потом где-то на просторах интернета нашел, что OLE только на клиенте исполняется
41 ice123
 
30.11.13
19:31
(39) кстати переписывал уже НаСервере вызов 77 и получение данных, выдавалась ошибка
42 m-serg74
 
30.11.13
19:31
(40) /вот тоже напоролся на эти грабли/

не работает?
43 ice123
 
30.11.13
19:34
(40) не работает...
у меня вылетало на этих строках:
в7 = Новый COMОбъект("V1CEnterprise.Application");
        _открыта = в7.initialize(в7.RMTrade, СокрЛП(ПараметрыПодключения.ПараметрыБД), "NO_SPLASH_SHOW");
44 ice123
 
30.11.13
19:35
(43)если я ничего  не путаю...
45 m-serg74
 
30.11.13
19:40
(44) наверное потому что у 7ки нет коннектора а только аппликэйшн((( это с 8ка с 8кой наверное можно с сервера соединяться
46 m-serg74
 
30.11.13
19:44
не правильно
Новый COMОбъект("V1CEnterprise.Application");
47 m-serg74
 
30.11.13
19:45
вот пишут что соединяется просто в другом месте накосячено

http://forum.infostart.ru/forum26/topic92516/
48 m-serg74
 
30.11.13
19:47
(43) + к (46)
База=Новый COMОбъект("V77.Application");
СтрокаПодключения = "/D"""+СокрЛП("\\server\1C\")+""" /N"""+СокрЛП("user")+""" /P"""+СокрЛП("pass")+"""";
Открыта=База.Initialize(База.RMTrade,СтрокаПодключения,"NO_SPLASH_SHOW");
49 ice123
 
30.11.13
19:50
вот блин, а мне попалось другое обсуждение...http://www.1c-pro.ru/topic25236.html
(48)СПАСИБО! ПОПРОБУЮ ПОПРАВИТЬ, МОЖЕТ И ПРАВДА ЗАРАБОТАЕТ!
50 m-serg74
 
30.11.13
19:52
(49) ну чувак пишет что у него работает
51 m-serg74
 
30.11.13
19:53
(49) так правильно зачем сом создавать на клиенте и передавать на сервер, если можно сразу и создать и пользовать на сервере
52 ice123
 
30.11.13
19:55
(50) мне по тексту этого обсуждения http://www.1c-pro.ru/topic25236.html попалась фраза, что это соединение не выполняется на сервере...
53 m-serg74
 
30.11.13
19:57
(52) надо будет на всякий случай завтра тоже ради знаний попробовать)))
54 ice123
 
30.11.13
20:04
(53) еще раз спасибо за помощь, а то последнее время во что-нибудь упрешься с управляемыми формами и никто на форуме не хочет помочь, обхамят и все...
55 ice123
 
30.11.13
20:35
в7 = Новый COMОбъект("V1CEnterprise.Application");  поправил на "V77.Application" перенес все процедуры и функции связанные с вызовом базы 77 на сервер, все заработало, так что действительно COMОбъекты работают и на клиенте и на сервере!!!
56 m-serg74
 
30.11.13
21:02
(55) я тоже проверил))) пашет))) правда все таки почитал и получается клиент с комом + передача полученных данных на сервер все ж более надежно, так как сервер может быть не виндовым, там говорят СОМ+ может не быть, х64 тоже вроде может косячиться... и т.п. неизвестность

а еще заметил что лучше потратить время на Выгрузить в файл из 7ки(ХМЛ или другой какой), а потом его Загрузить в 8ку и делай что хочешь...
57 ice123
 
30.11.13
21:37
(56)Спасибо, тоже буду иметь ввиду по поводу выгрузить и загрузить заново
58 hhhh
 
30.11.13
22:32
(57) лучше всё-таки не мудрить, создать тз на форме, а на клиенте она будет видна как ДанныеФормыКоллекция. И вот в эту коллекцию на клиенте всё из 7.7 переписать. И никаких файлов не надо.
59 m-serg74
 
01.12.13
14:21
(58) /И никаких файлов не надо./

я писал "универсально", а не "всегда надо делать только так"

бывает что одна база в одном месте, а другая совсем в другом, например Центр и Филиал, КОМ будет через инет работать? А файл будет точно...