Работа с 1С через OLE 8.* (V81.Application, V81.COMConnector)

Публикация № 83859

Разработка - Математика и алгоритмы

Решил серьезно заняться изучением OLE. Конечно OLE это не КД, но все же...

Попалась в интернете хорошая статья и решил ее поместить сюда. Думаю будет полезна как для начинающих, так и для продвинутых, чтобы закрепить свои знания.

Введение

При установке 1С на компьютер в реестре регистрируется ряд компонент. Это

  • V81.Application
  • V81.COMConnector
  • V81.InfoBaseList
  • V81.InfoBaseListLink
  • V81.ServerAbout
  • V81.ServerAdminScope

Данная статья рассматривает два из этих объектов V81.Application, V81.COMConnector, служащих для подключения с использованием COM-технологий к базе 1С 8.1 не зависимо от того находится ли данная база на сервере или представлена в виде файлового варианта.

Так же мы рассмотрим нюансы подключения к базе из 1C v7.7.

К данной статье будет приложен иллюстративный материал в виде конфигурации с демо-обработкой, входящей в состав данной базы, и обработка для 7.7, демонстрирующая соединение с данной базой.

Создание каркасной базы

Создадим новую конфигурацию

В ней мы создадим ПараметрСеанса МиниЛогЗапуска и глобальный модуль с атрибутами

  • Глобальный
  • Клиент
  • Сервер

Приведу код глобального модуля

#Если Клиент Тогда
Функция ВернутьТипПодключения() Экспорт
    Возврат("Клиент");
КонецФункции
#Иначе
Функция ВернутьТипПодключения() Экспорт
    Возврат("Сервер");
КонецФункции
#КонецЕсли


Функция ВернутьНеопределено() Экспорт
    Возврат Неопределено;
КонецФункции

Функция ВернутьNULL() Экспорт
    Возврат Null;
КонецФункции

Функция ВернутьИстину() Экспорт
    Возврат Истина;
КонецФункции

Функция ВернутьЛожь() Экспорт
    Возврат Ложь;
КонецФункции

Функция ВернутьСистемноеПеречисление()Экспорт
    Возврат(ВидДвиженияНакопления.Расход);
КонецФункции

Функция ВернутьПараметр(ИмяПараметра)Экспорт
    Попытка
        Зн=ПараметрыСеанса[ИмяПараметра];
    Исключение
        Возврат Неопределено;
    КонецПопытки;
    Возврат Зн;
КонецФункции

Кроме этих функций добавим функцию возвращающую по имени справочник в виде ТаблицыЗначений

Функция ЗапросКСправочнику(ИмяСправочника) Экспорт
    Попытка
        МетСпр=Метаданные.Справочники[ИмяСправочника];
    Исключение
        Возврат Неопределено
    КонецПопытки;
    Запрос=Новый Запрос;
    ТекстЗапроса="";
    ТекстЗапроса="Выбрать Спр.Ссылка,Спр.ПометкаУдаления,Спр.Предопределенный,";
    Если МетСпр.Иерархический Тогда
        ТекстЗапроса=ТекстЗапроса+"Спр.Родитель,Спр.ЭтоГруппа,";
    КонецЕсли;
    Если МетСпр.ДлинаКода<>0 Тогда
        ТекстЗапроса=ТекстЗапроса+"Спр.Код,";
    КонецЕсли;
    Если МетСпр.ДлинаНаименования<>0 Тогда
        ТекстЗапроса=ТекстЗапроса+"Спр.Наименование,";
    КонецЕсли;
    Для Каждого Рекв из МетСпр.Реквизиты Цикл
        ТекстЗапроса=ТекстЗапроса+"Спр."+Рекв.Имя+",";
    КонецЦикла;
    ТекстЗапроса=ТекстЗапроса+"Спр.Представление
    |ИЗ Справочник."+ИмяСправочника+" КАК Спр";
    Запрос.Текст=ТекстЗапроса;
    Возврат(Запрос.Выполнить().Выгрузить());
КонецФункции

Также определим процедуру в модуле внешнего соединения

Процедура ПриНачалеРаботыСистемы()
    Попытка
        ПараметрыСеанса.ПараметрСеанса1=СокрЛП(ПараметрыСеанса.ПараметрСеанса1)+"
        |Внешнее Соединение";
    Исключение
        ПараметрыСеанса.ПараметрСеанса1="Внешнее Соединение";
    КонецПопытки;
КонецПроцедуры

И процедуру в модуле приложения

Процедура ПриНачалеРаботыСистемы()
    Попытка
        ПараметрыСеанса.ПараметрСеанса1=СокрЛП(ПараметрыСеанса.ПараметрСеанса1)+"
        |Приложение";
    Исключение
        ПараметрыСеанса.ПараметрСеанса1="Приложение";
    КонецПопытки;
КонецПроцедуры

Также добавим ещё один не глобальный модуль с атрибутами

  • Клиент
  • Сервер

И с единственной функцией

Функция ВозвратСтроки() Экспорт
    Возврат("ОбщийМодуль1");
КонецФункции

Application и ComConnector сравнение соединение из 1С 8

Для исследования вызова функций не глобальных модулей Сохраняем конфигурацию, и теперь нам есть что исследовать.

Для целого ряда методов в синтаксис помощнике указанно "Не используется в модуле внешнего соединения". Это упоминание не даёт полной картины.

Объект V81.Application соответствует объекту V77.Aplication, а именно происходит загрузка сервера с интерфейсными библиотеками в режиме клиент, объект же V81.COMConnector при загрузке не имеет ничего из того что отвечает за интерфейс с пользователем, что повышает производительность при работе с внешним соединением.

Создаём обработку в нашей конфигурации, для проверки вызова наших методов.

В обработке объявляем две переменных и функцию установления соединения с базой

Перем cntr,connection;
Функция ОткрытиеБазы(ТипОткрытия)
    cntr = Новый COMObject(ТипОткрытия);
    connection=Истина;
    Попытка
        Если ЭлементыФормы.Панель1.ТекущаяСтраница.Заголовок="Файловая версия" Тогда
            connection = cntr.Connect("File="""+СокрЛП(ПутьКбазе)+""";Usr="""+СокрЛП(Логин)+""";Pwd = """ + СокрЛП(Пасворд) + """;");
        Иначе
            connection = cntr.Connect("Srvr="""+СокрЛП(ИмяСервера)+""";Ref="""+СокрЛП(ИмяБазы)+""";Usr="""+СокрЛП(Логин)+""";Pwd = """ + СокрЛП(Пасворд) + """;");
        КонецЕсли;
    Исключение
        Предупреждение(ОписаниеОшибки());
        connection=Ложь;
    КонецПопытки;
    Возврат connection;
КонецФункции

В переменной открытия мы передаём либо строку "V81.Application", либо строку "V81.ComConnector"

При этом для V81.Application возвращается Истина в connection, а cntr является нашим объектом через который мы обращаемся к базе

Для ComConnector в connection возвращается объект для обращения к базе, а cntr является объектом описанным в синтаксис помощнике как COM-соединитель.

Свойства и методы COM-соединителя.
HighBoundDefault Свойство, только чтение, Тип: Число. Содержит верхнюю границу диапазона IP портов сервера кластера по умолчанию.
LowBoundDefault Свойство, только чтение, Тип: Число. Содержит нижнюю границу диапазона IP портов сервера кластера по умолчанию.
MaxConnections Свойство, только чтение, Тип: Число. Определяет максимальное число одновременно существующих объектов COM-соединение, созданных через данный COM-соединитель. Число одновременно существующих соединений включает также число соединений, находящихся в пуле COM-соединений. Значением по умолчанию 0 (число одновременно существующих объектов COM-соединение не ограничено). Устанавливать свойству не нулевое значение можно только в том случае, если сам объект COM-соединитель был создан в Multithreaded Apartment (MTA), что обеспечивает реальное функционирование самого COM-соединителя и созданных им объектов COM-соединение в многопотоковой (multithreaded) среде. Это условие соблюдается в частности, если COM-соединитель был создан в приложении ASP.NET. Если же объект COM-соединитель был создан в Singlethreaded Apartment (STA), то реально все действия с COM-соединителем и созданными им объектами COM-соединение будут выполняться в одном потоке. В этом случае, если метод Connect не сможет на первом проходе найти подходящее или создать новое COM-соединение, то выполнение этого метода зациклится, так как освободить уже, возможно, ненужное другое COM-соединение будет нельзя по той причине, что операция освобождения объекта COM-соединение должна быть выполнена в том же потоке, в котором уже выполняется метод Connect. Следует помнить, что создание COM-объектов из приложения 1C:Предприятие 8.1 выполняется из STA. Это же справедливо для большинства GUI-приложений Windows.
PoolCapacity Свойство, только чтение, Тип: Число. Максимальное количество соединений с информационной базой, которые могут одновременно находиться в пуле.
PoolTimeout Свойство, только чтение, Тип: Число. Максимальное время нахождения в пуле неиспользуемого соединения с информационной базой. После истечения этого времени неиспользуемое соединение освобождается.
RAgentPortDefault Свойство, только чтение, Тип: Число. Содержит номер IP порта агента сервера по умолчанию.
RMngrPortDefault Свойство, только чтение, Тип: Число. Содержит номер IP порта менеджера кластера по умолчанию.
Connect (Connect) Синтаксис:
Connect(<Строка соединения>)
Параметры:
<Строка соединения> (обязательный)
Тип: Строка. Строка параметров, используемая 1С:Предприятием для соединения с информационной базой. Строка соединения представляет собой набор параметров, каждый из которых является фрагментом вида: <Имя параметра=><Значение>, где Имя параметра — имя параметра, а Значение — его значение. Фрагменты отделяются друг от друга символами ';'. Если значение содержит пробельные символы, то оно должно быть заключено в двойные кавычки ("). Для файлового варианта определен параметр: File — каталог информационной базы (файловый режим); Для клиент-серверного варианта определены параметры: Srvr — имя сервера 1С:Предприятия; Ref — имя информационной базы на сервере; Для всех вариантов определены параметры: Usr — имя пользователя; Pwd — пароль и UC<Код доступа> позволяет выполнить установку соединения с информационной базой, на которую установлена блокировка установки соединений. Если при установке блокировки задан непустой код доступа, то для установки соединения необходимо в параметре /UC указать этот код доступа. Возвращаемое значение:
Тип: COM-соединение.
Описание:
Создает соединение с информационной базой 1С:Предприятия 8.1.
Устанавливает соединение с информационной базой 1С:Предприятия 8.1 и возвращает ссылку на объект COM-соединение.
Установка соединения выполняется по следующему алгоритму:
  1. COM-соединение с требуемыми параметрами ищется в пуле соединений. Если найдено, то используется оно.
  2. Если COM-соединение с требуемыми параметрами не найдено, то анализируется не исчерпан ли лимит по числу одновременно существующих соединений. Если не исчерпан, то создается новое COM-соединение.
  3. Если лимит исчерпан, но при этом в пуле имеются неиспользуемые COM-соединение, то соединение, дольше всех находящееся в пуле, удаляется и создается новое COM-соединение.
  4. Если никаким способом найти подходящее или создать новое COM-соединение не удалось, то происходит ожидание освобождения COM-соединение другим потоком, после чего весь процесс повторяется, начиная с пункта 1.
ConnectAgent(<Идентификатор>) Синтаксис:
ConnectAgent(<Идентификатор>)
Параметры:
<Идентификатор> (обязательный)
Тип: Строка. Идентификатор протокола (по умолчанию tcp), имя компьютера или IP адрес агента сервера (обязательно), номер IP порта агента сервера (по умолчанию 1540). Например, значением параметра могут быть следующие строки: «server1», «tcp://server1», «tcp://server1:1540», «server1:1540».
Возвращаемое значение:
Тип: Соединение с агентом сервера.
Описание:
Выполняет подсоединение к агенту сервера 1С:Предприятия 8.1, работающему на указанном серверном компьютере.
Примечание:
Если подсоединение невозможно, то вызывается исключение.
ConnectWorkingProcess (ConnectWorkingProcess) Синтаксис:
ConnectWorkingProcess(<Имя>)
Параметры:
<Имя> (обязательный)
Тип: Строка. Имя или IP адрес рабочего процесса, с которым должно быть установлено соединение, в формате: <протокол>://<адрес_или_имя>:<порт> Например:
testcomp
tcp://testcomp
tcp://testcomp:2354
tcp://43.73.34.11:5342.
Возвращаемое значение:
Тип: Соединение с рабочим процессом.
Описание:
Создает административное соединение с рабочим процессом кластера серверов 1С:Предприятия 8.1.


Для установки соединения с базой надо методу Connect нашего объекта передать строку соединения.

Для файловой версии данная строка содержит параметры:

  • File с указанием пути к папке с файлом базы
  • Usr с указанием имени прользователя
  • Pwd с указанием пароля прользователя

Для соединения с сервером Usr и Pwd прежние параметры, а вот вместо File два параметра Srvr с указанием имени сервера и Ref с указанием имени Базы

Вызовы из восьмёрки через Application и ComConnector

Пробуем организовать вызов функций нашей конфигурации из обработки на 8.1

Пишем процедуру вызова функций с определением, что возвращается при вызове

Процедура ОсновныеДействияФормыВызовФункции(Кнопка)
    Если Не ОткрытиеБазы("V81.Application") Тогда Возврат; КонецЕсли;
    Сообщить("Вернули неопределено? "+(cntr.ВернутьНеопределено()=Неопределено));
    Сообщить("Вернули NULL? "+(cntr.ВернутьNULL()=NULL));
    Сообщить("Вернули Истину? "+(cntr.ВернутьИстину()=Истина));
    Сообщить("Вернули Ложь? "+(cntr.ВернутьЛожь()=Ложь));
    Сообщить("Вернули параметр "+cntr.ВернутьПараметр("ПараметрСеанса1"));
    Сообщить("Не глобальный модуль "+cntr.ОбщийМодуль1.ВозвратСтроки());
    Сообщить("ТипПодключения="+cntr.ВернутьТипПодключения());
    cntr = "";
КонецПроцедуры

Рассмотрим лог сообщений:

 Вернули неопределено? истина
 Вернули NULL? истина
 Вернули Истину? истина
 Вернули Ложь? истина
 Вернули параметр Приложение
 Не глобальный модуль ОбщийМодуль1
 ТипПодключения=Клиент

Что это нам даёт?

Значения типа неопределено,NULL,Истина,Ложь передаются в соединение с базой корректно.

Модуль внешнего соединения при подключении через V81.Application не отрабатывает.

Модуль приложения при подключении через V81.Application отрабатывает.

Тип подключения, в котором мы подключаемся к базе, соответствует типу подключения клиент

Пишем аналогичную процедуру, но уже с использованием ComConnector

Процедура ОсновныеДействияФормыВызовФункции2(Кнопка)
    Если ОткрытиеБазы("V81.ComConnector")<>Ложь Тогда
        Сообщить("Вернули неопределено? "+(connection.ВернутьНеопределено()=Неопределено));
        Сообщить("Вернули NULL? "+(connection.ВернутьNULL()=NULL));
        Сообщить("Вернули Истину? "+(connection.ВернутьИстину()=Истина));
        Сообщить("Вернули Ложь? "+(connection.ВернутьЛожь()=Ложь));
        Сообщить("Вернули параметр "+connection.ВернутьПараметр("ПараметрСеанса1"));
        Сообщить("Не глобальный модуль "+connection.ОбщийМодуль1.ВозвратСтроки());
        Сообщить("ТипПодключения="+connection.ВернутьТипПодключения());
        cntr = "";connection="";
    КонецЕсли;
КонецПроцедуры

Лог сообщений у нас отличается в строчках

Вернули Параметр Внешнее Соединение
ТипПодключения=Сервер

То есть, при обращении через объект V81.ComConnector подключение осуществляется в режиме север, даже если мы подключаемся к локальной файловой базе.

Теперь попробуем обратиться к нашим объектам, ну хотя бы к V81.Application из 1С 7.7

Пишем примерно тот же код

Перем НомерЗакладки;
Перем connection,cntr;
Перем Истина,Ложь;
Функция ОткрытиеБазы(ТипОткрытия)
    cntr = СоздатьОбъект(ТипОткрытия);
    Попытка
        Если НомерЗакладки=1 Тогда
            connection = cntr.Connect("File="""+СокрЛП(ПутьКбазе)+""";Usr="""+СокрЛП(Логин)+""";Pwd = """ + СокрЛП(Пасворд) + """;");
        Иначе
            connection = cntr.Connect("Srvr="""+СокрЛП(ИмяСервера)+""";Ref="""+СокрЛП(ИмяБазы)+""";Usr="""+СокрЛП(Логин)+""";Pwd = """ + СокрЛП(Пасворд) + """;");
        КонецЕсли;
    Исключение
        Предупреждение(ОписаниеОшибки());
    КонецПопытки;
КонецФункции
Функция ВызовФункций()
    ОткрытиеБазы("V81.Application");
    Если connection=Истина Тогда
        Сообщить("Вернули неопределено= "+cntr.ВернутьНеопределено());
        Сообщить("Вернули NULL= "+cntr.ВернутьNULL());
        Сообщить("Вернули Истину= "+cntr.ВернутьИстину());
        Сообщить("Вернули Ложь= "+cntr.ВернутьЛожь());
    КонецЕсли;
    cntr = "";
КонецФункции

Истина=-1;Ложь=0;

Лог сообщений выглядит так

Вернули неопределено=
Вернули NULL=
Вернули Истину= -1
Вернули Ложь= 0

Так мы убеждаемся что Ложь соответствует 0, Истина -1, а NULL и неопределено ничего в стандартах 1Cv7.7 не возвращают

Как же отличить NULL от неопределено?

Для этого у объекта cntr в случае V81.Application и у connection в случае V81.ComConnector есть метод String

В описание данного метода сказано "Получает строковое представление значения произвольного типа".

Пробуем использовать этот метод из 7.7

Добавив в нашу Функцию ВызовФункций() несколько строк кода

Сообщить("ВернулиНеопределено="+cntr.String(cntr.ВернутьНеопределено()));
Сообщить("ВернулиNULL="+cntr.String(cntr.ВернутьNULL()));
Сообщить("ВернулиСистемноеПеречисление="+cntr.String(cntr.ВернутьСистемноеПеречисление()));

Результат в логе сообщений

ВернулиНеопределено=Неопределено
ВернулиNULL=
ВернулиСистемноеПеречисление=Расход

Так мы отмечаем, что NULL возвращается пустой строкой, неопределено строкой "Неопределено" и системное перечисление своим представлением

Итак, у нас есть конфигурация с модулем, но у неё нет метаданных.

Добавим перечисление, справочник, и три константы одну типа строка, одну типа перечисления и одну составного типа

Разбор метаданных через ОЛЕ

Добавим в обработку на 1С 7.7 и 8.1 функцию работы с метаданными

Функция РаботаСметаданными()
    ОткрытиеБазы("V81.Application");
    Если connection=Истина Тогда
        Сообщить("Версия "+cntr.Метаданные.Версия);
        Сообщить("==================Константы==================");
        Для Инд=0 по cntr.Метаданные.Константы.Количество()-1 Цикл
            Конст=cntr.Метаданные.Константы.Получить(Инд);
            Сообщить(Конст.Имя);
            Сообщить("Тип:");
            Массив = Конст.Тип.Типы();
            Типов = Массив.Количество() - 1;
            для а = 0 по Типов цикл
                сообщить(cntr.String(Массив.Получить(а)));
            конеццикла;
        КонецЦикла;
        cntr = "";
    КонецЕсли;
КонецФункции

Сохраним обработки и запустив просмотрим лог сообщений

Версия V81.Application
==================Константы==================
Константа1
Тип:
Строка
Константа2
Тип:
Справочник ссылка: Справочник1
Константа3
Тип:
Справочник ссылка: Справочник1
Перечисление ссылка: Перечисление1

Мы можем получить тип любых метаданных используя этот пример и описание работы с метаданными

Использование менеджеров для работы с данными через ОЛЕ

Мы прояснили процесс работы с метаданными, а теперь обратимся к работе с данными

Функция РаботаСБазой()
    ОткрытиеБазы("V81.Application");
    Если connection=Истина Тогда
        Стр="";
        Если ВвестиСтроку(Стр,"Наименование",40)=1 Тогда
            Эл=cntr.Справочники.Справочник1.НайтиПоНаименованию(СокрЛП(Стр));
            Если Эл.Пустая()=Истина Тогда
                Эл=cntr.Справочники.Справочник1.СоздатьЭлемент();
                Эл.Наименование=СокрЛП(Стр);
                Эл.Записать();
                Сообщить("ЗначениеВСтрокуВнутр="+cntr.ЗначениеВСтрокуВнутр(Эл.Ссылка));
                Сообщить("XMLСтрока="+cntr.XMLСтрока(Эл.Ссылка));
                Сообщить("=======XMLТипЗнч======");
                XMLРез=cntr.XMLТипЗнч(Эл.Ссылка);
                Сообщить("URIПространстваИмен="+XMLРез.URIПространстваИмен);
                Сообщить("ИмяТипа="+XMLРез.ИмяТипа);
            КонецЕсли;
            cntr.Константы.Константа3.Установить(Эл.Ссылка);
        КонецЕсли;
    КонецЕсли;
    cntr = "";
КонецФункции

В данной процедуре мы указываем наименование справочника, и если такого наименования нет, то мы создаём элемент справочника. Выводим всю информацию которую можем получить и присваиваем значение элемента справочника нашей константе

Создадим элемент и просмотрим лог сообщений

ЗначениеВСтрокуВнутр={"#",3395433c-d726-4c7e-ae3a-45f785811756,1:a68d00142a16c0f211de2d7a6de7a9eb}
XMLСтрока=6de7a9eb-2d7a-11de-a68d-00142a16c0f2
=======XMLТипЗнч======
URIПространстваИмен=
ИмяТипа=CatalogRef.Справочник1


Запросы,Конструкторы запросов и произвольные объекты 8.* через ОЛЕ

Мы использовали работу менеджеров для получения и изменения, данных базы,но более высокой производительностью в восьмёрке обладают запросы и их мы так же можем использовать.

Пишем функцию:

Функция РаботаСЗапросами()
    ОткрытиеБазы("V81.Application");
    Если connection=Истина Тогда
        Констр=cntr.NewObject("КонструкторЗапроса");
        Если Констр.ОткрытьМодально()=Истина Тогда
            ТекстЗапроса=Констр.Текст;
            cntr = "";
            ОткрытиеБазы("V81.ComConnector");
            Запрос=connection.NewObject("Запрос");
            Запрос.Текст=ТекстЗапроса;
            Рез=Запрос.Выполнить().Выгрузить();
            Таб=СоздатьОбъект("Таблица");
            Для Инд=0 по Рез.Колонки.Количество()-1 Цикл
                Кол=Рез.Колонки.Получить(Инд);
                Обл=Таб.Область("R1C"+Строка(Инд+1));
                Обл.Текст=Кол.Имя;
            Конеццикла;
            Для Инд=0 по Рез.Количество()-1 Цикл
                Стр=Рез.Получить(Инд);
                Кол=0;
                Для Кол=0 по Рез.Колонки.Количество()-1 Цикл
                    Обл=Таб.Область("R"+Строка(Инд+2)+"C"+Строка(Кол+1));
                    Обл.Текст=connection.String(Стр.Получить(Кол));
                КонецЦикла;
            КонецЦикла;
            Таб.Показать();
        Иначе
            Сообщить("!Запрос не создан");
        КонецЕсли;
    КонецЕсли;
    cntr = "";
    connection = "";
КонецФункции

В данном примере мы сначала пользуемся V81.Application, у которого есть интерфейсные библиотеки и методом NewObject (являющимся конструкцией языка 1С 8.* Новый) для вызова конструктора запроса.

Потом мы закрываем базу, и подключившись через V81.ComConnector создаём сам запрос и результат запроса в линейном порядке выводим в объект 7.7 таблица.

В принципе такой порядок использования запроса необязателен, но из ComConnector мы не сможем вызвать метод ОткрытьМодально() по причине отсутствия интерфейсных библиотек.

Проблема булева типа из 7.7 (можем передать, но не можем вернуть)

Изменим структуру нашей базы, а именно. Для Константы Константа1 изменим тип с простого типа Строка на составной Булево,Число

Разместим в глобальном модуле функцию, которая нам вернет значение в виде строки.

Так же предположим, что мы не хотим, что бы код нашей функции компилировался при запуске в режиме приложения, а хотим что бы наш код работал только в режиме внешнего соединения независимо от того подключаемся мы через V81.ComConnector или через V81.Application.

Функция РаботаСЗапросами()
    ОткрытиеБазы("V81.Application");
    Если connection=Истина Тогда
        Констр=cntr.NewObject("КонструкторЗапроса");
        Если Констр.ОткрытьМодально()=Истина Тогда
            ТекстЗапроса=Констр.Текст;
            cntr = "";
            ОткрытиеБазы("V81.ComConnector");
            Запрос=connection.NewObject("Запрос");
            Запрос.Текст=ТекстЗапроса;
            Рез=Запрос.Выполнить().Выгрузить();
            Таб=СоздатьОбъект("Таблица");
            Для Инд=0 по Рез.Колонки.Количество()-1 Цикл
                Кол=Рез.Колонки.Получить(Инд);
                Обл=Таб.Область("R1C"+Строка(Инд+1));
                Обл.Текст=Кол.Имя;
            Конеццикла;
            Для Инд=0 по Рез.Количество()-1 Цикл
                Стр=Рез.Получить(Инд);
                Кол=0;
                Для Кол=0 по Рез.Колонки.Количество()-1 Цикл
                    Обл=Таб.Область("R"+Строка(Инд+2)+"C"+Строка(Кол+1));
                    Обл.Текст=connection.String(Стр.Получить(Кол));
                КонецЦикла;
            КонецЦикла;
            Таб.Показать();
        Иначе
            Сообщить("!Запрос не создан");
        КонецЕсли;
    КонецЕсли;
    cntr = "";
    connection = "";
КонецФункции

Вызов из 77 я описывать не буду, он уже для вас довольно тривиален.

В принципе вместо напсиания данного кода мы можем, запустив восьмёрку, вычислить выражение в табло и убедиться, что

ЗначениеВстрокуВнутр(Истина)={"B",1}
ЗначениеВстрокуВнутр(Ложь)={"B",0} 

Определим функцию работы с нашей константой в обработке вызываемой из 7.7

Функция УстановитьИстина()
    ОткрытиеБазы("V81.Application");
    Если connection=Истина Тогда
        cntr.Константы.Константа1.Установить(cntr.ЗначениеИзСтрокиВнутр("{""B"",1}"));
        Сообщить(cntr.Константы.Константа1.Получить());
        Сообщить(cntr.ЗначениеВстрокуВнутр(cntr.Константы.Константа1.Получить()));
        cntr = "";
    КонецЕсли;
КонецФункции

Функция УстановитьЛожь()
    ОткрытиеБазы("V81.Application");
    Если connection=Истина Тогда
        cntr.Константы.Константа1.Установить(cntr.ЗначениеИзСтрокиВнутр("{""B"",0}"));
        Сообщить(cntr.Константы.Константа1.Получить());
        Сообщить(cntr.ЗначениеВстрокуВнутр(cntr.Константы.Константа1.Получить()));
        cntr = "";
    КонецЕсли;
КонецФункции

Функция УстановитьЧисло()
    ОткрытиеБазы("V81.Application");
    Если connection=Истина Тогда
        Чис=0;
        Если ВвестиЧисло(Чис,"Константа1",12,2)=1 Тогда
            cntr.Константы.Константа1.Установить(Чис);
            Сообщить(cntr.Константы.Константа1.Получить());
            Сообщить(cntr.ЗначениеВстрокуВнутр(cntr.Константы.Константа1.Получить()));
            cntr = "";
        КонецЕсли;
    КонецЕсли;
КонецФункции

Функция РаботаСконстантой()
    Меню=СоздатьОбъект("СписокЗначений");
    Меню.ДобавитьЗначение("УстановитьИстина()","Установить Истина");
    Меню.ДобавитьЗначение("УстановитьЛожь()","Установить Ложь");
    Меню.ДобавитьЗначение("УстановитьЧисло()","Установить Число");
    Зн="";
    Поз=0;
    Если Меню.ВыбратьЗначение(Зн,,Поз,,1)=1 Тогда
        Шаблон("["+Зн+"]");
    КонецЕсли;
КонецФункции

Рассмотрим лог сообщений после вызова всех трех вариантов функций и просмотра базы в режиме предпрития

-1
{"N",-1}
0
{"N",0}
56
{"N",56}

Какой вывод мы можем сделать из этого лога

Что тип булево возвращается стороннему приложению как число.

Мы можем установить значение булева и любого неизвестного 7.7 типа через ЗначениеИзСтрокиВнутр, но как минимум в случае с булевым типом мы не сможем его прочитать обратно иначе чем число.

Сам собой напрашивается вывод, что надо быть аккуратным при проектировании внешних функций и метаданных, проектируя их таким образом что бы мы могли одназначно опредилить по возвращенному параметру булев тип и никогда бы не смогли спутать его с числом.

Проблема времени из 7.7 (не можем передать)

Добавляем в нашу базу регистр накопления и документ регистратор и пишем в 7.7 простую функцию, формирующую движения данного документа

Функция ТипаПереносОстатков()
    Попытка
        ОткрытиеБазы("V81.ComConnector");
    Исключение
        Сообщить("Не удалось открыть базу с заданными параметрами");
        Возврат "";
    КонецПопытки;
    Стр="";
    Если ВвестиСтроку(Стр,"Справочник",50)=1 Тогда
        Спр=connection.Справочники.Справочник1.НайтиПоНаименованию(Стр);
        Если Спр.Ссылка=connection.Справочники.Справочник1.ПустаяСсылка() Тогда
            Спр=connection.Справочники.Справочник1.СоздатьЭлемент();
            Спр.Наименование=Стр;
            Спр.Записать();
        КонецЕсли;
        Док=connection.Документы.Документ1.СоздатьДокумент();
        Док.Дата=connection.ЗначениеИзСтрокиВнутр("{""D"",20081231235959}");
        Док.Реквизит1=Спр.Ссылка;
        Док.Записать();
        Движение=Док.Движения.РегистрНакопления1.ДобавитьПриход();
        Движение.Период=connection.ЗначениеИзСтрокиВнутр("{""D"",20081231235959}");
        Движение.Измерение1=Спр.Ссылка;
        Движение.Ресурс1=15;
        Док.Движения.РегистрНакопления1.Записать();
        Сообщить(connection.String(Док.Ссылка));
    КонецЕсли;
    connection = "";
    cntr = "";
КонецФункции

Рассмотрим лог сообщений

Документ1 000000001 от 31.12.2008 0:00:00

Вывод из этого лога прост. Время даже при передаче через ЗначениеИзСтрокиВнутр теряется.

Класс не существует

И в заключение - если выскакивает ошибка с "Класс не существует", значит, что не зарегистрирован COM-объект 1С:Предприятия.

Для регистрации V81.COMConnector необходимо выполнить:
regsvr32 "C:\Program Files\1cv81\bin\comcntr.dll"

Для регистрации V81.Application необходимо выполнить:
"C:\Program Files\1cv81\bin\1cv8.exe" /regserver

http://1cniku.ru/Articles/V8OLE.html

Специальные предложения

См. также

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    30566    0    ids79    40    

Партионный учет по двум количественным показателям

Математика и алгоритмы Учет ТМЦ v8 1cv8.cf Оптовая торговля, дистрибуция, логистика Россия УУ Бесплатно (free)

Особенности учета партионной системы при наличии двух количественных показателей.

26.03.2020    2347    0    lastcontra    4    

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

Математика и алгоритмы Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Предлагается ознакомиться с редким способом графического представления иерархических данных. Приводится алгоритм формирования и пример реализации.

18.02.2020    3716    0    randomus    18    

[После]Новогодние задачи

Практика программирования Математика и алгоритмы v8 Бесплатно (free)

Совсем немного времени осталось до того момента, когда отзвучат куранты, шампанское будет выпито, мандарины съедены, и даже оливье закончится. Возникнет вопрос: чем бы занять неожиданно появившееся свободное время?

30.12.2019    2583    0    Alxby    23    

Как работает серверный вызов в 1С Промо

Математика и алгоритмы v8::УФ Бесплатно (free)

Клиент-серверная архитектура заложена в платформе изначально — со времен «1С:Предприятие 8.0». Однако при разработке на 8.0 и 8.1 о разделении кода на клиентскую и серверную часть можно было не заботиться, поскольку на клиенте (на толстом клиенте) был доступен тот же функционал, что и на сервере. Всё изменилось с выходом платформы «1С:Предприятие 8.2», когда появился тонкий клиент. Теперь на клиенте доступен один функционал, на сервере — другой. Клиент и сервер «общаются» между собой с помощью серверного вызова. Конечно, это усложнило процесс разработки, но с другой стороны – можно создавать более оптимальные (быстрые) решения, поскольку все сложные задачи выполняются на сервере.

18.11.2017    51949    0    pahich    82    

Доработка конвертации данных КД2 (версии 2.1). Расширенная диагностическая информация при выгрузке по правилам из 1С 7.7 и при загрузке в 1С 7.7

Обмен данными 1С Перенос данных из 1С7.7 в 1C8.X Обмен через XML v7.7 v8 КД Бесплатно (free)

Есть очень неприятная особенность при настройке обмена по правилам КД2 в момент отладки на стороне 1С 7.7, как при выгрузке из 1С 7.7, так и при загрузке в 1С 7.7. Непонятно, в каком конкретно месте формирования или разбора данных XML файла в какой именно момент споткнулась программа (произошел сбой). Я нашел способ вывода дополнительной диагностики, теперь точно известно, на каком элементе данных XML споткнулся модуль выгрузки V77Exp.ert (модуль загрузки V77Imp.ert). Теперь отладка правил обмена на стороне 1С 7.7 стала простой, выполняется на порядок проще.

18.10.2019    4882    0    ksnik    0    

Конвертация данных из 1С 8.3 в 7.7 (версия КД 2.1). Перенос данных из 8.3 в 7.7. Создание в современной 1С 8.3 XML в формате КД2. Инструкции и примеры переноса данных из любой современной 1С 8.3 в устаревшую конфигурацию 1С 7.7, через Конвертацию данных 2

Обмен данными 1С Перенос данных из 1С7.7 в 1C8.X v7.7 v8 КД Бесплатно (free)

При переходе на новую версию 1С в период параллельной эксплуатации может возникнуть необходимость обратной конвертации данных (по правилам КД версии 2.1) из 1С:Предприятие 8.3 в 1С:Предприятие 7.7 для переноса данных из 1С:Предприятие 8.3 в 7.7. Сделать это поможет следующая инструкция по КД2 о том, как создать новую конвертацию из 8.3 в 7.7, сохранить модуль и правила загрузки данных, сделать загрузку данных. КД2.

17.10.2019    6772    0    ksnik    0    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    21578    0    YPermitin    24    

Будни автоматизации или "мне нужна программка для 3D упаковки" Промо

Практика программирования Математика и алгоритмы Оптовая торговля Оптовая торговля v8 1cv8.cf УУ Бесплатно (free)

Автоматизация отечественных предприятий, которой приходиться заниматься, это нужная и высокооплачиваемая, но довольно нервная работа. Выручает юмор. Например, при общении с требовательным клиентом можно вспомнить анекдот: "Держась руками за стену, на ногах еле стоит мужик. К нему пристает ребенок: "Ну, папа, пожалуйста, сделай мне кораблик!", папа отвечает: "Ага! - Сейчас все брошу и пойду делать тебе кораблик!". Про один такой сделанный для клиента "кораблик" и хочется рассказать. Надеюсь, совместное погружение в теплое ламповое (то есть клиентоориентированное) программирование доставит Вам положительные эмоции, да и задача попалась интересная. Поплыли?

24.03.2014    43819    0    ildarovich    116    

"Хочу универсально!" [Часть 1]

Математика и алгоритмы Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Сентябрьская серия статей про то, как начинающий разработчик Вася проходит путь от простой задачки к созданию своего механизма. На этот раз - открытие значения из текущей колонки.

02.09.2019    8805    0    SeiOkami    35    

Иерархия без "В ИЕРАРХИИ"

Математика и алгоритмы v8 Бесплатно (free)

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    10558    0    ildarovich    19    

EnterpriseData – часть 3. Загрузка данных, идентификация объектов

Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка v8 v8::УФ 1cv8.cf Бесплатно (free)

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    11929    0    ids79    7    

Приемы обработки больших данных в 1С Промо

Универсальные обработки Математика и алгоритмы Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С

07.08.2015    64412    0    tormozit    27    

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы v8 Бесплатно (free)

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    35445    4    AlbinaAAA    25    

FizzBuzz на 1С. Чем короче, тем веселее. Варианты принимаются...

Практика программирования Математика и алгоритмы Разработка v8 Бесплатно (free)

Мне было скучно, я не мог себя заставить написать ничего полезного. И читал статью на Хабре. Потом я читал комментарии, а потом... нет я не ушел смотреть котиков на ютюбе. Я решил сделать несколько решений задачки FizzBuzz на 1С, с целью "чем короче, тем лучше". Прошу сильно не пинать, это просто развлечение для вечера.

24.07.2019    4898    0    vandalsvq    16    

Управление качеством кода

Математика и алгоритмы Рефакторинг и качество кода v8 Бесплатно (free)

О SonarQube, АПК, EDT. Какие преимущества дает их использование. Для каких команд подходит.

22.07.2019    14616    0    Stepa86    33    

XDTO - это просто Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

С появлением платформы 8.1 фирма “1С” представила механизм, носящий интригующее название XML Data Transfer Objects или, если коротко - XDTO. По традиции, документирование механизма составлял тот, кто хорошо разбирался в вопросе, а стало быть опустил “и так понятные” с его точки зрения моменты. Целью данной статьи (или цикла статей, как получится) стало желание поделиться накопленным опытом. Мне кажется, многие неочевидные вещи в механизме XDTO необходимо осветить получше.

24.12.2012    281887    0    Evil Beaver    173    

Что делает "В ИЕРАРХИИ" в запросе?

Математика и алгоритмы v8 Бесплатно (free)

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    20176    0    YPermitin    34    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    42231    0    ids79    18    

Реализуем Стек, Очередь и Приоритетную очередь в 1С

Практика программирования Математика и алгоритмы v8 1cv8.cf Россия Бесплатно (free)

В статье рассматриваются способы реализации таких абстрактных структур данных, как стек, очередь и приоритетная очередь, используя готовые типы данных 1С. Выявляются "узкие" места, сложные моменты в реализации и сравнивается скорость работы.

24.06.2019    12805    0    RonX01    65    

Самоучитель языка запросов 1С. Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 v8::Запросы Бесплатно (free)

Сервис для изучения запросов 1С: "Консоль изучения запросов 1С:Предприятие 8". Теперь и с конструктором запросов!

07.05.2013    107273    0    bpc222    327    

Организация хранения промежуточных данных

Математика и алгоритмы v8 Бесплатно (free)

Организация хранения промежуточных данных в процедуре сверки.

29.05.2019    3704    0    scientes    1    

Вычисление 200 тысяч знаков числа pi

Математика и алгоритмы v8 Россия Бесплатно (free)

В статье рассматриваются возможности платформы выполнять сверхточные вычисления без использования сложных алгоритмов и внешних компонент на примере вычисления числа pi.

28.05.2019    6799    0    Oleg_nsk    96    

Регистры накопления. Виртуальные таблицы. Часть №1: Обороты

Практика программирования Математика и алгоритмы Разработка v8 1cv8.cf Бесплатно (free)

Описание работы платформы 1С:Предприятие 8.2 с виртуальной таблицей "Обороты" регистров накопления.

20.05.2019    22456    0    YPermitin    7    

Решение транспортной задачи запросом Промо

Математика и алгоритмы v8 Бесплатно (free)

Списание по двум последовательностям партий запросом (без программной обработки)

1 стартмани

30.04.2014    34211    10    bforce    22    

Даем названия переменным: как префиксы экономят наше время

Практика программирования Математика и алгоритмы Разработка v8 Бесплатно (free)

Понятные названия переменных экономят время и силы разработчика : в начале, когда мы даём названия переменным, в процессе развития разработки, когда мы "на лету" понимаем назначение той или иной переменной, в конце, когда мы передаём разработку на поддержку других программистов, сами переходя к новым разработкам

06.05.2019    5938    0    Designer1C    81    

Заметки по SQL: Срез последних - аналог запроса

Математика и алгоритмы Практика программирования v8 1cv8.cf Россия Бесплатно (free)

В статье описывается создание среза последних данных средствами классического языка запросов. Причем метод построения запроса был разработан еще во времена, когда автор работал с СУБД Oracle 9i и программировал на PL SQL. Основная идея заключается преобразовании запроса с подзапросом, в запрос без подзапроса (в примерах описывается преобразование до двух вложенных подзапросов). Запросы тестировались на реальных базах данных. Платформа - 1С:Предприятие 8.3 (8.3.10.2561).

15.01.2019    10006    0    IVC_goal    7    

Парсер запросов 1С. Часть 1: Введение, разбор математических выражений Промо

Математика и алгоритмы v8 Бесплатно (free)

Рано или поздно становится скучно решать типичные задачи, для которых придумана 1С. Голова пухнет от бухгалтерских терминов и очередных "хотелок" пользователей. Именно в такие моменты хочется гордо поднять голову, воскликнуть "Но я же программист!" и заняться чем-то интересным. В цикле статей я постараюсь доступно описать, как устроены парсеры в целом и на примере парсера языка запросов 1С. Требования к навыкам читающего: основы языка 1С, основы алгоритмизации.

1 стартмани

04.12.2013    29904    5    juntatalor    49    

Многопоточное восстановление последовательностей

Производительность и оптимизация (HighLoad) Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

Универсальный алгоритм многопоточного фонового восстановления любой последовательности.

05.12.2018    11784    0    _ASZ_    33    

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C

Математика и алгоритмы Практика программирования v8 Россия Бесплатно (free)

У многих начинающих 1С программистов часто возникают вопросы про клиент-серверное взаимодействие в 1С и чтобы разобраться в непростых механизмах платформы, необходимо понять, что же такое контекст, для чего предназначены директивы компиляции, что представляют собой контекстные/внеконтекстные вызовы и как наиболее оптимально описывать прикладные задачи в модулях управляемых форм.

23.08.2018    34804    0    Rain88    46    

Теорема номер тринадцать

Математика и алгоритмы v8 Бесплатно (free)

Использование математических методов для языка запросов.

15.03.2018    11578    0    vasilev2015    24    

Отладка правил обмена 7.7, 8 Промо

Перенос данных из 1С7.7 в 1C8.X Обмен через XML Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Отладка правил обмена всегда была для меня больной темой, пока наконец-то не разобрался. В интернете мало тем, посвященных этому, поэтому решил написать небольшую инструкцию по этому поводу. Очень надеюсь, что она будет кому-то полезна. С радостью выслушаю недочеты.

29.10.2013    50394    0    pyrkin_vanya    70    

"Взлом" теста "1С:Профессионал" методом машинного обучения

Практика программирования Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Нейронные сети – не единственная модель, реализующая принципы машинного обучения. Есть еще байесовская модель, которая математически строже и определеннее, поскольку построена на надежном фундаменте теории вероятностей. Применению байесовского вывода к решению интересной теоретической задачи и посвящена данная статья. Слово "взлом" в заголовке использовано для привлечения внимания. Речь идет исключительно о математическом методе, показанном на примере знакомой всем задачи. 

12.03.2018    18214    0    ildarovich    19    

Введение в CI для 1С

Математика и алгоритмы v8 Россия Бесплатно (free)

Значение роли тестирования при разработке ПО трудно переоценить, его применение позволяет повысить надёжность продукта и улучшить качество кода. Для продуктов для платформы 1С:Предприятие существует ряд инструментов для проведения тестирования, в том числе и от самого вендора. Но, также появились открытые инструменты, реализующие мировые практики проведения тестирования (проверки продукта), поддерживаемые сообществом. В этой статье описаны базовые принципы, которые необходимо понимать перед началом применения этих инструментов.

21.11.2017    22549    0    real_MaxA    22    

#Область ВНЕШНИЕ_ВЫЗОВЫ или MVC в 1С, библиотечность и упрощение интеграции кода

Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

Зачастую почти любой модуль в 1С содержит от одного до несметного множества вызовов других модулей. Как с этим бороться, чтобы было проще куда-то что-то переносить - в этом посте.

12.10.2017    17094    0    for_sale    58    

Кэширование COM-соединения. Три способа Промо

Практика программирования Перенос данных из 1С7.7 в 1C8.X Внешние источники данных WEB v8 Россия Бесплатно (free)

Статья о трех способах кэширования COM-соединения в 1С:Предприятии 8.x.

11.04.2013    39674    0    YPermitin    33    

Опыт переноса данных для расчета среднего из ЗиК в УПП(КА)

Перенос данных из 1С7.7 в 1C8.X Зарплата Управление персоналом (HRM) Зарплата Управление персоналом (HRM) v8 1cv8.cf БУ Бесплатно (free)

Делюсь опытом использования стандартных инструментов и методикой переноса

25.06.2017    13237    0    SITR-utyos    0    

Пишем игру Минер. Обработка событий ActiveX в 1С

Практика программирования Математика и алгоритмы v8 Россия Бесплатно (free)

Пример демонстрирует обработку событий генерируемых компонентой ActiveX в 1С.

29.05.2017    14265    0    user621724_Dimav1979    12    

Как я доступ на kb.1c.ru получал

Решение задач на 1С:Специалист Математика и алгоритмы v8 Россия Бесплатно (free)

kb.1c - база знаний по технологическим вопросам крупных внедрений и не только. В этой базе знаний собираются методики и решения технологических проблем эксплуатации 1с, check-list'ы и инструкции по настройке ПО на серверах. Какие-то из размещенных статей дублируются на ИТС. Когда я искал пути получения доступа к нему я столкнулся с проблемой: мало кто доподлинно знает как получить доступ к нему, не работая у франчайзи 1с. Я опишу путь, который прошёл я, как физическое лицо.

01.05.2017    25178    0    ikekoval    34    

Сервис для изучения методов платформы 1С:Предприятие 8. Бесплатно! Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 Бесплатно (free)

Бесплатный ON-Line сервис изучения методов платформы 1С:Предприятие 8. Подготовка к аттестации 1С:Специалист on-line! Тестовые задания по различным видам учета! Подсказки для оптимального решения!

27.06.2013    48784    0    bpc222    51    

Улучшение стандарта "Структура модуля"

Математика и алгоритмы v8 1cv8.cf Россия Бесплатно (free)

Описывается структура областей модулей, которую я использую при разработке на своих проектах. Обсуждаются недостатки стандарта 1С "Структура модуля". Предложен улучшенный подход к работе со структурой модуля.

26.03.2017    13853    0    o.nikolaev    23    

Не хватает памяти (OUT OF MEMORY) при переносе данных из 7.7

Перенос данных из 1С7.7 в 1C8.X v7.7 1С7:Бух Россия Бесплатно (free)

Увеличение используемой памяти для 1С: 7.7

22.03.2017    18344    0    Amadeuc404    11    

"Распределение в запросе" или "избавляемся от перебора"

Математика и алгоритмы Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Хороший перебор - это отсутствие перебора. Рассмотрим пример замены полного перебора запросом.

16.12.2016    32176    0    alexandersh    48    

v8: Концепция минимального изменения конфигурации для легкого обновления Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

"Лучше день потерять потом за пять минут долететь" ((с) "Крылья, ноги и хвосты") или как сделать так чтобы обновление конфигурации проходило с минимальными трудозатратами.

28.01.2013    37196    0    MarSeN    57    

Планы обмена. Квитировать или гарантировать?

Практика программирования Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Планы обмена предлагают использовать две стратегии удаления обработанных изменений: квитирование и гарантированная доставка сообщений. Как сделать правильный выбор?

12.12.2016    16387    0    zhichkin    9    

Некоторые принципы оптимизации запросов 1С (+SQL)

Математика и алгоритмы v8 Бесплатно (free)

Разработка нового функционала часто связана с созданием новых таблиц в базе и написанием запросов. Собственно, размышляя о запросах, мы и формируем в голове содержание таблиц, индексы и количество таблиц и индексов. Заранее можно уверенно рассуждать о том, какая нужна архитектура, если задачу удалось понять. На этом этапе важно привлекать свой опыт. Что же делать, если его нет? Как рассуждать о запросах и формате хранения?

17.11.2016    10242    0    ture    40    

Методика пошагового перехода из решения для платформы 7.7 "Торговля и склад" на решение для платформы 8 "Управление торговлей"

Перенос данных из 1С7.7 в 1C8.X Оптовая торговля Оптовая торговля v7.7 v8 УТ10 1С7:ТиС Оптовая торговля, дистрибуция, логистика Россия БУ УУ Бесплатно (free)

Данная статья предваряет публикацию подсистемы для одностороннего ONLINE обмена документами и справочниками между базами данных для процесса поэтапного перехода из "семерки" в "восьмерку" для случаев распределенной совместной работы большого количества пользователей, не допускающих резких скачкообразных внедрений с рисками остановки процессов продаж, поставок, доставок или складских сборок.

31.10.2016    14337    0    vugluscr1991    27    

УНФ РИБ Промо

Распределенная БД (УРИБ, УРБД) Перенос данных из 1С7.7 в 1C8.X v8 УНФ Россия Бесплатно (free)

В типовой УНФ нет РИБа. Исправляем этот недостаток, используя УТ 11 и ИТС. Статья подойдет для настойки распределенки в любой конфе на базе БСП.

16.10.2012    39074    0    ptkrzy    23    

Использование git для доработки типовых конфигураций 1С

Математика и алгоритмы v8 Беларусь Украина Россия Бесплатно (free)

Рассмотрены способы доработок типовой конфигурации 1C для различных изменений, и на картинках продемонстрирован подход к разработке с использованием git и частично с тестами.

11.10.2016    202393    0    pumbaE    31    

Оптимизация запросов 1С:Предприятие – от теории к практике

Практика программирования Математика и алгоритмы v8 Бесплатно (free)

Я давно отметил достаточно серьезный интерес сообщества к вопросам оптимизации и повышения производительности высоконагруженных систем. Общаясь с различными специалистами, обслуживающими малые и большие предприятия (торговые и производственные), я пришел к выводу, что вопросы повышения производительности интересны почти всем, вне зависимости от того, какую конфигурацию они обслуживают – большую или маленькую, измененную или без значительных изменений. В связи с этим я пришел к выводу, что стоит посвятить данный материал вопросам оптимизации запросов, поскольку именно запросы являются основным инструментом извлечения данных из системы.

07.10.2016    36489    0    bpc222    20    

Регистры сведений 1С. Как это устроено.

Математика и алгоритмы v8 Бесплатно (free)

Основная идея публикации - собрать в одном месте информацию о внутреннем устройстве такой абстрактной сущности, как "Регистр сведений 1С" и ответить на ряд вопросов: Что происходит при записи регистра в различных режимах? Что такое на самом деле "СрезПервых" и "СрезПоследних"? Как оптимально выбрать структуру регистра? Это та информация, владея которой, начинаешь лучше понимать как это работает и как правильно использовать регистры сведений.

05.08.2016    175841    0    Sergey.Noskov    156    

Переводим расширения на 8.3.8. Памятка.

Практика программирования Математика и алгоритмы v8 Россия Бесплатно (free)

Типовые конфигурации переходят на новую платформу 8.3.8 без режима совместимости. А значит нужно переделывать расширения под эти условия. В статье небольшая памятка о переводе расширения на 8.3.8

29.07.2016    45763    0    mrXoxot    12