• Как подружить 1C и Python?

    Alexeytur
    @Alexeytur
    Мы тягаем данные напрямую из SQl Server. Конечно это не труъ метод. В MS SQL Server Managment Studio нужно создать юзера с права на чтение таблиц 1С. Потом открыть доступ на сервер на порт SQl Server. И подключаться из любого ЯП через драйвер.
    Получить структуру хранения можно обработкой вида:
    &НаСервере
    Функция ПолучитьСтруктуруХраненияБазыДанныхНаСервере()
    	СтруктураБД = ПолучитьСтруктуруХраненияБазыДанных();
    
    	Для каждого СтрокаТаблицы Из СтруктураБД Цикл
    		Сообщить(СтрокаТаблицы.ИмяТаблицы + " = " + СтрокаТаблицы.ИмяТаблицыХранения);
    		Для каждого СтрокаПоля Из СтрокаТаблицы.Поля Цикл
    			Сообщить("     "+СтрокаПоля.ИмяПоля + " = " + СтрокаПоля.ИмяПоляХранения);
    		КонецЦикла;
    	КонецЦикла;
    
    КонецФункции

    Единственное, в БД таблицы 1С имеют названия вида Document942.VT3711, а некоторые в БД разбиты на несколько таблиц.
    Ответ написан
    1 комментарий
  • Почему в некоторых случаях не работает логический оператор "And"?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    bool(pr.append(float(row['Цена,руб.'])) == False
    так что вторая проверка даже не стартует, т.к. первая вернула False

    https://docs.python.org/3/library/stdtypes.html#bo...
    This is a short-circuit operator, so it only evaluates the second argument if the first one is true.
    Ответ написан
    1 комментарий
  • Как переименовать ключ в словаре с помощью цикла for или while?

    @PavelMos
    Изменение значение по ключу =изменения значения
    Изменения ключа = создание нового ключа, с удалением или без удаления старого. По задаче, как понимаю, старый нужно удалять

    def KeyLen(d1):
        d2=d1.copy() #надо копировать один объект (словарь) в другой, т.к. если присвоить через =, то при измененении первого будет меняться и второй
        for k1 in d1.keys():
            k2=k1+str(len(k1))
            d2[k2]=d1[k1]
            del d2[k1]
        return (d2)
    Ответ написан
    1 комментарий