Имя: Пароль:
1C
 
Проблема с созданием COMОбъект под линухом....
0 mikecool
 
19.10.10
10:09
Причем - оч непонятная
Сервер 1с под линухом
Работало регламентное задание.
Начало выдавать ошибку: Ошибка при вызове конструктора (COMОбъект)
При этом - в модуле ни одного ком-объекта не создается
Выполняется выборка, формирование дбф-файла(XBase), упаковка(ЗаписьZipФайла), отправка(FTPСоединение)
Что из этого может вызывать сабж?
Какие то требования к зипу выдвигаются? или эска пользуется встроенным?
1 mikecool
 
19.10.10
10:10
то, что ком объектов под линухом не бывает - я в курсе
2 Mnemonic1C
 
19.10.10
10:10
Гы, а разме под линухом работает COM соединение? Просветите...
3 Mnemonic1C
 
19.10.10
10:11
*разве
4 mikecool
 
19.10.10
10:13
(2) а я где то про ком-соединение написал?
все производимые модулем действия я перечислил и сижу тихо фигею от результата
5 Defender aka LINN
 
19.10.10
10:13
(0) Они прямо в одной строке создаются, да?
6 Mnemonic1C
 
19.10.10
10:13
А, тьфу, у меня ещё раннее утро:) Знач он все таки где то создается
7 xReason
 
19.10.10
10:14
Так о том и речь, что человек использует штатные средства 1с, а не какие-то свои ком-объекты
8 mikecool
 
19.10.10
10:14
(7) совершенно в дырочку ) как говаривал мой препод
9 detec
 
19.10.10
10:19
Похоже топикстартер обнаружил недокументированные ограничения 1С.
ИМХО, эксплуатация серьёзных, допиливаемых конфигураций под Линуксом обречена. Взять ту же программную работу с xls и отсутствие библиотек работы с OpenOffice-файлами на Линуксе.
10 mikecool
 
19.10.10
10:34
Ошибка при вызове конструктора (COMОбъект)
по причине:
COM-объекты поддерживается только в операционных системах Windows
логично, вот только откуда?

модуль вкратце:
Функция ПолучитьПараметры()
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   Параметры = Запрос.Выполнить().Выгрузить();    
   СтруктураПараметров = Новый Структура;
   Для Каждого Параметр Из Параметры Цикл
СтруктураПараметров.Вставить(Параметр.Параметр, Параметр.Значение);
   КонецЦикла;
   _ТекущаяДата = ТекущаяДата();
   СтруктураПараметров.Вставить("Дата", _ТекущаяДата);
   Возврат СтруктураПараметров;
КонецФункции

Процедура ПрайсЛист() Экспорт
   
   СтруктураПараметров = ПолучитьПараметры();
   
   Если Не (ЗначениеЗаполнено(СтруктураПараметров.АдресФТП) И ЗначениеЗаполнено(СтруктураПараметров.Контрагент)
       И ЗначениеЗаполнено(СтруктураПараметров.ПрайсЛист) И ЗначениеЗаполнено(СтруктураПараметров.БазовыйТипЦен)
       И ЗначениеЗаполнено(СтруктураПараметров.ОсновнойПоставщик)) Тогда
       ЗаписатьОшибку("Не установлен один из обязательных реквизитов Адрес ФТП, Контрагент для обмена, тип выгружаемых в прайс-лист цен, базовый тип цены, основной поставщик.");
       Возврат
   КонецЕсли;
   
   Запрос = Новый Запрос;
   // выборка данных              

   ТаблицаПолей = Новый ТаблицаЗначений;
   ТаблицаПолей.Колонки.Добавить("Имя");
   ТаблицаПолей.Колонки.Добавить("Тип");
   ТаблицаПолей.Колонки.Добавить("Длина");
   ТаблицаПолей.Колонки.Добавить("Точность");
   
   Строка = ТаблицаПолей.Добавить(); //код товара
   Строка.Имя = "ID_MED";        Строка.Тип = "N";        Строка.Длина = 11;        Строка.Точность = 0;
   Строка = ТаблицаПолей.Добавить(); //наименование товара
   Строка.Имя = "MED_NAME";    Строка.Тип = "C";        Строка.Длина = 255;        Строка.Точность = 0;
   Строка = ТаблицаПолей.Добавить(); //наименование поставщика
   Строка.Имя = "MANUF";        Строка.Тип = "C";        Строка.Длина = 255;        Строка.Точность = 0;
   Строка = ТаблицаПолей.Добавить(); //предлагаемое количество
   Строка.Имя = "QUANT";        Строка.Тип = "N";        Строка.Длина = 11;        Строка.Точность = 2;
   Строка = ТаблицаПолей.Добавить(); //цена товара за упаковку
   Строка.Имя = "COST";        Строка.Тип = "N";        Строка.Длина = 11;        Строка.Точность = 2;
   Строка = ТаблицаПолей.Добавить(); //срок годности
   Строка.Имя = "WORK_LIFE";    Строка.Тип = "D";        Строка.Длина = 0;        Строка.Точность = 0;
   Строка = ТаблицаПолей.Добавить(); //количество в упаковке
   Строка.Имя = "PACKING";        Строка.Тип = "N";        Строка.Длина = 15;        Строка.Точность = 2;
   Строка = ТаблицаПолей.Добавить(); //цена производителя без ндс
   Строка.Имя = "COST_MNF";    Строка.Тип = "N";        Строка.Длина = 11;        Строка.Точность = 2;
   Строка = ТаблицаПолей.Добавить(); //ставка НДС производителя
   Строка.Имя = "NDS_MNF";        Строка.Тип = "N";        Строка.Длина = 5;        Строка.Точность = 2;
   Строка = ТаблицаПолей.Добавить(); //Цена госреестра для ЖНВЛС
   Строка.Имя = "COST_REEST";    Строка.Тип = "N";        Строка.Длина = 11;        Строка.Точность = 2;
   Строка = ТаблицаПолей.Добавить(); //Код товара(в данном случае - штрихкод)
   Строка.Имя = "ID_SUP";        Строка.Тип = "N";        Строка.Длина = 13;        Строка.Точность = 0;
   
   КаталогВыгрузки = КаталогВременныхФайлов();
   Таблица = Новый XBase;
   ПоляТаблицы = Таблица.поля;
   Для Каждого СтрокаПолей Из ТаблицаПолей Цикл
       ПоляТаблицы.Добавить(СтрокаПолей.Имя, СтрокаПолей.Тип, СтрокаПолей.Длина, СтрокаПолей.Точность);
   КонецЦикла;
   Таблица.Кодировка = КодировкаXBase.OEM;
   
   ИмяФайла = "prr" + Формат(СтруктураПараметров.Дата, "ДФ=ddMM");
   Таблица.СоздатьФайл(КаталогВыгрузки + ИмяФайла + ".dbf");
   
   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
       Таблица.Добавить();
       ЗаполнитьЗначенияСвойств(Таблица, Выборка);
       Таблица.Записать();
   КонецЦикла;
   Таблица.ЗакрытьФайл();
   
   ЗаписатьИнформацию("Сформирован файл прайс-листа");
   
   //упакуем и отправим выгрузку
   Попытка
       ЗИП = Новый ЗаписьZipФайла(КаталогВыгрузки + ИмяФайла + ".zip");
       ЗИП.Добавить(КаталогВыгрузки + ИмяФайла + ".dbf");
       ЗИП.Записать();
       ЗаписатьИнформацию("Файл прайс-листа упакован в архив");
   Исключение
       ЗаписатьОшибку("Не удалось упаковать файл прайс-листа в архив, " + ОписаниеОшибки());
   КонецПопытки;
   
   Попытка
       ФТП = ПолучитьФТПСоединение(СтруктураПараметров);
       ФТП.Записать(КаталогВыгрузки + ИмяФайла + ".zip", ФТП.ТекущийКаталог() + "/" + ИмяФайла + ".zip");
       ЗаписатьИнформацию("Файл прайс-листа размещен на фтп-сервере");
   Исключение
       ЗаписатьОшибку("Не удалось поместить файл прайс-листа на ФТП-сервер, " + ОписаниеОшибки());
   КонецПопытки;
   
КонецПроцедуры

Функция ПолучитьФТПСоединение(СтруктураПараметров)
   
   Возврат Новый FTPСоединение(СтруктураПараметров.АдресФТП, ,СтруктураПараметров.ЛогинФТП,
   ?(ЗначениеЗаполнено(СтруктураПараметров.ПарольФТП), СокрЛП(СтруктураПараметров.ПарольФТП),""), , Истина);
   
КонецФункции
11 mikecool
 
19.10.10
10:36
судя по записи в журнале "Сформирован файл прайс-листа" и последующей ошибке - проблема с зипом
Как на встроенный зип повлиять можно?
12 Ненавижу 1С
 
гуру
19.10.10
10:40
что меняли на серваке?
13 mikecool
 
19.10.10
10:42
(12) ничего, он уже месяца три как не тронутый стоит...
14 H A D G E H O G s
 
19.10.10
10:42
(11) Да ну нафиг.
15 H A D G E H O G s
 
19.10.10
10:43
Ничего тут такого серьезного, того, чего бы сама 1С не запрограммировала - нет
16 H A D G E H O G s
 
19.10.10
10:43
Ищите глубже
17 mikecool
 
19.10.10
10:44
(14) кого нафик?
с какого перепугу записьзип под линухом пытается ком-объект поднять
на всякий платформа 8.2.11.229
18 mikecool
 
19.10.10
10:44
нужен ли вообще установленный зип  системе?
19 mikecool
 
19.10.10
10:45
+18 в системе?*
20 H A D G E H O G s
 
19.10.10
10:45
(18) Думаю, нет
21 Defender aka LINN
 
19.10.10
11:10
Учу искать ошибку по номеру строки. Дорого.
22 mikecool
 
19.10.10
11:18
(21) натолкнул,
вот только прикол в том, что ошибка указывает на строку
с Таблица.Записать();
при этом - файл дбф создан, сообщение это подтверждает и наличие в папке тоже
темпы на сервере?
23 mikecool
 
19.10.10
12:53
почистили темпы, ребутнули - не помогло
не могу найти - где сервер 1с под линухом держит копию конфиги
хелп ми