//------------------Объявления функций: //========= 1Сv77 (OLE) : // (c) Venger Alex, Odessa, 2007 Функция гл81Сv77_СоединитьсяСБазой(oleБаза, Знач txtПараметры, Знач blnЗаставка=1) Экспорт Далее Функция гл81Сv77_СобратьСтрокуИнициализации(Знач txtПуть, Знач txtПользователь="", Знач txtПароль="") Экспорт Далее Функция гл81Сv77_СправочникСуществует(oleБаза, Знач ИдСпр) Экспорт Далее Функция гл81Сv77_РеквизитСправочникаСуществует(oleБаза, Знач ИдСпр, Знач ИдРекв) Экспорт Далее Функция гл81Сv77_РегистрСуществует(oleБаза, Знач ИдРег) Экспорт Далее Функция гл81Сv77_РеквизитРегистраСуществует(oleБаза, Знач ИдРег, Знач ИдРекв) Экспорт Далее Функция гл81Сv77_РесурсРегистраСуществует(oleБаза, Знач ИдРег, Знач ИдРес) Экспорт Далее Функция гл81Сv77_ИзмерениеРегистраСуществует(oleБаза, Знач ИдРег, Знач ИдИзм) Экспорт Далее Функция гл81Сv77_ПолучитьТипРеквизитаСправочника(oleБаза, Знач ИмяСпр, Знач ИдРекв, ТипРекв, ВидРекв, ЭтоПериодический) Экспорт Далее Функция гл81Сv77_ПолучитьСписокРеквизитовСправочника(oleБаза, Знач ИмяСпр, Знач ТолькоПериодические=0) Экспорт Далее Функция гл81Сv77_ПолучитьТипРеквизитаРегистра(oleБаза, Знач ИмяРег, Знач ИдРекв, ТипРекв, ВидРекв) Экспорт Далее Функция гл81Сv77_ПолучитьТипРесурсаРегистра(oleБаза, Знач ИмяРег, Знач ИдРес, ТипРес, ВидРес) Экспорт Далее Функция гл81Сv77_ПолучитьТипИзмеренияРегистра(oleБаза, Знач ИмяРег, Знач ИдИзм, ТипИзм, ВидИзм) Экспорт Далее //========= 1Сv77 Доп. служебн. : // (c) Sergey Popov, Usinsk, Komi, 2002, 2003 Функция гл9МодульЧисла(X) Экспорт Далее Функция гл9НормализоватьИмяКаталога(ИмяКаталога) Экспорт Далее //------------------Определения функций: //------------------------------------------------------------- // (c) Venger Alex, Odessa, 2007 // Соединиться с базой 1С:Предприятие 7.7 // Параметры: // oleБаза - ссылка на базу 1С (OLE). Ссылка должна существовать. // Получить можно исп. функцию СоздатьОбъект() с параметром: // "V1CEnterprise.Application" - версия независимый ключ // "V77.Application" - версия зависимый ключ // "V77S.Application" - версия зависимый ключ, SQL-версия // "V77L.Application" - версия зависимый ключ, локальная версия // "V77M.Application" - версия зависимый ключ, сетевая версия // txtПараметры - строка параметров инициализации (путь, пользователь, пароль) // Возможные значения ключей строки инициализации: // "/D Папка " - имя каталога(папки), где располагается БД // "/N Имя пользователя " - имя пользователя // "/P Пароль " - пароль доступа // "/M " - монопольный доступ // blnЗаставка - показывать заставку при открытии (Да=1, Нет=0) // Возвращает: 1 - успешно, 0 - нет. Функция гл81Сv77_СоединитьсяСБазой(oleБаза, Знач txtПараметры, Знач blnЗаставка=1) Экспорт // 15.11.2007 Перем Res, txtЗаставка; Res=0; txtЗаставка = "NO_SPLASH_SHOW"; txtПараметры = СокрЛП(Строка(txtПараметры)); blnЗаставка = Число(blnЗаставка); Если ТипЗначения(oleБаза)=100 Тогда //OLE._Application 100 Если blnЗаставка = 0 Тогда Res = oleБаза.Initialize(oleБаза.RMTrade, txtПараметры+"", txtЗаставка+""); Иначе Res = oleБаза.Initialize(oleБаза.RMTrade, txtПараметры+"", ""); КонецЕсли; // Так как стандарт OLE: True=-1, False=0 Res = гл9МодульЧисла(Res); КонецЕсли; Возврат Res; КонецФункции // гл81Сv77_СоединитьсяСБазой //------------------------------------------------------------- //------------------------------------------------------------- // (c) Venger Alex, Odessa, 2007 // Собирает строку инициализации, для запуска и соединения // с базой 1С (OLE), можно использовать совместно с функцией // гл81Сv77_СоединитьсяСБазой, для передачи параметра txtПараметры. // Параметры: // txtПуть - путь к базе на диске // txtПользователь - пользователь для авторизации // txtПароль - пароль пользователя для авторизации // Если пользователь и пароль не заданы, при соединении откроется // окно ввода имени пользователя и пароля. // Возвращает: строку инициализации - успешно, пустую строку - нет. Функция гл81Сv77_СобратьСтрокуИнициализации(Знач txtПуть, Знач txtПользователь="", Знач txtПароль="") Экспорт // 15.11.2007 Перем txtСтрока; txtСтрока=""; txtПуть=гл9НормализоватьИмяКаталога(txtПуть); txtПользователь=СокрЛП(Строка(txtПользователь)); txtПароль=СокрЛП(Строка(txtПароль)); Если ПустаяСтрока(txtПуть)=1 Тогда txtСтрока = txtСтрока+""; Возврат txtСтрока; Иначе txtСтрока = txtСтрока+"/D "+txtПуть+" "; КонецЕсли; Если ПустаяСтрока(txtПользователь)=0 Тогда txtСтрока=txtСтрока+"/N "+txtПользователь+" "; КонецЕсли; Если ПустаяСтрока(txtПароль)=0 Тогда txtСтрока=txtСтрока+"/P "+txtПароль+" "; КонецЕсли; txtСтрока=СокрЛП(txtСтрока); Возврат txtСтрока; КонецФункции // гл81Сv77_СобратьСтрокуИнициализации //------------------------------------------------------------- //------------------------------------------------------------- // (c) Venger Alex, Odessa, 2007 // Проверка, существует ли Справочник в конфигурации к которой // подключились (ссылка должна существовать) на основании // инфы из метаданных. // Функция возвращает 1, если существует и 0 в противном случае. // oleБаза - ссылка на конфигурацию 1С (должна существовать) // ИдСпр - Идентификатор Справочника Функция гл81Сv77_СправочникСуществует(oleБаза, Знач ИдСпр) Экспорт // 17.11.2007 Перем Res; Res=0; ИдСпр=СокрЛП(Строка(ИдСпр)); Если ТипЗначения(oleБаза)=100 Тогда //OLE._Application 100 Если oleБаза.Метаданные.Справочник(""+СокрЛП(ИдСпр)).Выбран()>0 Тогда Res=1; КонецЕсли; КонецЕсли; Возврат Res; КонецФункции // гл81Сv77_СправочникСуществует //------------------------------------------------------------- //---------------------------------------------------------------------- // (c) Venger Alex, Odessa, 2007 // Проверка, существует ли Реквизит Справочника в конфигурации к которой // подключились (ссылка должна существовать) // на основании инфы из метаданных. // Функция возвращает 1, если существует и 0 в противном случае // oleБаза - ссылка на конфигурацию 1С (должна существовать) // ИдСпр - Идентификатор Справочника // ИдРекв - Идентификатор Реквизита Функция гл81Сv77_РеквизитСправочникаСуществует(oleБаза, Знач ИдСпр, Знач ИдРекв) Экспорт // 17.11.2007 Перем Res; Res=0; ИдСпр=СокрЛП(Строка(ИдСпр)); ИдРекв=СокрЛП(Строка(ИдРекв)); Если ТипЗначения(oleБаза)=100 Тогда //OLE._Application 100 Если oleБаза.Метаданные.Справочник(""+СокрЛП(ИдСпр)).Выбран()>0 Тогда Если oleБаза.Метаданные.Справочник(""+СокрЛП(ИдСпр)).Реквизит(""+СокрЛП(ИдРекв)).Выбран()>0 Тогда Res=1; КонецЕсли; КонецЕсли; КонецЕсли; Возврат Res; КонецФункции //гл81Сv77_РеквизитСправочникаСуществует() //---------------------------------------------------------------------- //------------------------------------------------------------- // (c) Venger Alex, Odessa, 2007 // Проверка, существует ли Регистр в конфигурации к которой // подключились (ссылка должна существовать) на основании // инфы из метаданных. // Функция возвращает 1, если существует и 0 в противном случае. // oleБаза - ссылка на конфигурацию 1С (должна существовать) // ИдРег - Идентификатор Регистра Функция гл81Сv77_РегистрСуществует(oleБаза, Знач ИдРег) Экспорт // 17.11.2007 Перем Res; Res=0; ИдРег=СокрЛП(Строка(ИдРег)); Если ТипЗначения(oleБаза)=100 Тогда //OLE._Application 100 Если oleБаза.Метаданные.Регистр(""+СокрЛП(ИдРег)).Выбран()>0 Тогда Res=1; КонецЕсли; КонецЕсли; Возврат Res; КонецФункции // гл81Сv77_РегистрСуществует //------------------------------------------------------------- //---------------------------------------------------------------------- // (c) Venger Alex, Odessa, 2007 // Проверка, существует ли Реквизит Регистра в конфигурации к которой // подключились (ссылка должна существовать) // на основании инфы из метаданных. // Функция возвращает 1, если существует и 0 в противном случае // oleБаза - ссылка на конфигурацию 1С (должна существовать) // ИдРег - Идентификатор Регистра // ИдРекв - Идентификатор Реквизита Функция гл81Сv77_РеквизитРегистраСуществует(oleБаза, Знач ИдРег, Знач ИдРекв) Экспорт // 17.11.2007 Перем Res; Res=0; ИдРег=СокрЛП(Строка(ИдРег)); ИдРекв=СокрЛП(Строка(ИдРекв)); Если ТипЗначения(oleБаза)=100 Тогда //OLE._Application 100 Если oleБаза.Метаданные.Регистр(""+СокрЛП(ИдРег)).Выбран()>0 Тогда Если oleБаза.Метаданные.Регистр(""+СокрЛП(ИдРег)).Реквизит(""+СокрЛП(ИдРекв)).Выбран()>0 Тогда Res=1; КонецЕсли; КонецЕсли; КонецЕсли; Возврат Res; КонецФункции //гл81Сv77_РеквизитРегистраСуществует //---------------------------------------------------------------------- //---------------------------------------------------------------------- // (c) Venger Alex, Odessa, 2007 // Проверка, существует ли Ресурс Регистра в конфигурации к которой // подключились (ссылка должна существовать) // на основании инфы из метаданных. // Функция возвращает 1, если существует и 0 в противном случае // oleБаза - ссылка на конфигурацию 1С (должна существовать) // ИдРег - Идентификатор Регистра // ИдРес - Идентификатор Ресурса Функция гл81Сv77_РесурсРегистраСуществует(oleБаза, Знач ИдРег, Знач ИдРес) Экспорт // 17.11.2007 Перем Res; Res=0; ИдРег=СокрЛП(Строка(ИдРег)); ИдРес=СокрЛП(Строка(ИдРес)); Если ТипЗначения(oleБаза)=100 Тогда //OLE._Application 100 Если oleБаза.Метаданные.Регистр(""+СокрЛП(ИдРег)).Выбран()>0 Тогда Если oleБаза.Метаданные.Регистр(""+СокрЛП(ИдРег)).Ресурс(""+СокрЛП(ИдРес)).Выбран()>0 Тогда Res=1; КонецЕсли; КонецЕсли; КонецЕсли; Возврат Res; КонецФункции //гл81Сv77_РесурсРегистраСуществует //---------------------------------------------------------------------- //---------------------------------------------------------------------- // (c) Venger Alex, Odessa, 2007 // Проверка, существует ли Измерение Регистра в конфигурации к которой // подключились (ссылка должна существовать) // на основании инфы из метаданных. // Функция возвращает 1, если существует и 0 в противном случае // oleБаза - ссылка на конфигурацию 1С (должна существовать) // ИдРег - Идентификатор Регистра // ИдИзм - Идентификатор Измерения Функция гл81Сv77_ИзмерениеРегистраСуществует(oleБаза, Знач ИдРег, Знач ИдИзм) Экспорт // 17.11.2007 Перем Res; Res=0; ИдРег=СокрЛП(Строка(ИдРег)); ИдИзм=СокрЛП(Строка(ИдИзм)); Если ТипЗначения(oleБаза)=100 Тогда //OLE._Application 100 Если oleБаза.Метаданные.Регистр(""+СокрЛП(ИдРег)).Выбран()>0 Тогда Если oleБаза.Метаданные.Регистр(""+СокрЛП(ИдРег)).Измерение(""+СокрЛП(ИдИзм)).Выбран()>0 Тогда Res=1; КонецЕсли; КонецЕсли; КонецЕсли; Возврат Res; КонецФункции //гл81Сv77_ИзмерениеРегистраСуществует //---------------------------------------------------------------------- //---------------------------------------------------------------------- // (c) Venger Alex, Odessa, 2007 // Вычисляет тип и вид реквизита справочника в конфигурации к которой // подключились (ссылка должна существовать) из метаданных // oleБаза - ссылка на конфигурацию 1С (должна существовать) // ИмяСпр - Идентифмкатор справочника (например, Контрагенты) // ИдРекв - Идентифмкатор реквизита, информацию по которому считываем // В параметрах ТипРекв и ВидРекв возвращается строковое значение Типа и Вида реквизита // В параметре ЭтоПериодический возвращется признак =1, если периодический и =0, если нет // Функция возвращает код, как функция ТипЗначения() Функция гл81Сv77_ПолучитьТипРеквизитаСправочника(oleБаза, Знач ИмяСпр, Знач ИдРекв, ТипРекв, ВидРекв, ЭтоПериодический) Экспорт // 17.11.2007 Перем Res; //Возвращаемое значение. : код типа значения Res = 0; ТипРекв = ""; ВидРекв = ""; ЭтоПериодический = 0; Yes=0; ИмяСпр=СокрЛП(Строка(ИмяСпр)); ИдРекв=СокрЛП(Строка(ИдРекв)); Если ТипЗначения(oleБаза)=100 Тогда //OLE._Application 100 Если oleБаза.Метаданные.Справочник(""+СокрЛП(ИмяСпр)).Выбран()>0 Тогда Если oleБаза.Метаданные.Справочник(""+СокрЛП(ИмяСпр)).Реквизит(""+СокрЛП(ИдРекв)).Выбран()>0 Тогда Yes=1; ТипРекв = СокрЛП(oleБаза.Метаданные.Справочник(""+СокрЛП(ИмяСпр)).Реквизит(""+СокрЛП(ИдРекв)).Тип); ВидРекв = СокрЛП(oleБаза.Метаданные.Справочник(""+СокрЛП(ИмяСпр)).Реквизит(""+СокрЛП(ИдРекв)).Вид); ЭтоПериодический = oleБаза.Метаданные.Справочник(""+СокрЛП(ИмяСпр)).Реквизит(""+СокрЛП(ИдРекв)).Периодический; КонецЕсли; КонецЕсли; КонецЕсли; Если Yes>0 Тогда Если ВРег(ТипРекв) = ВРег("Число") Тогда Res=1; КонецЕсли; Если ВРег(ТипРекв) = ВРег("Строка") Тогда Res=2; КонецЕсли; Если ВРег(ТипРекв) = ВРег("Дата") Тогда Res=3; КонецЕсли; Если ВРег(ТипРекв) = ВРег("Перечисление") Тогда Res=10; КонецЕсли; Если ВРег(ТипРекв) = ВРег("Справочник") Тогда Res=11; КонецЕсли; Если ВРег(ТипРекв) = ВРег("Документ") Тогда Res=12; КонецЕсли; Если ВРег(ТипРекв) = ВРег("Календарь") Тогда Res=13; КонецЕсли; Если ВРег(ТипРекв) = ВРег("ВидРасчета") Тогда Res=14; КонецЕсли; Если ВРег(ТипРекв) = ВРег("Счет") Тогда Res=15; КонецЕсли; Если ВРег(ТипРекв) = ВРег("ВидСубконто") Тогда Res=16; КонецЕсли; КонецЕсли; Возврат Res; КонецФункции // гл81Сv77_ПолучитьТипРеквизитаСправочника //---------------------------------------------------------------------- //---------------------------------------------------------------------- // (c) Venger Alex, Odessa, 2007 // Прочитать список реквизитов справочника в конфигурации к которой // подключились (ссылка должна существовать) в СписокЗначений // на основании инфы из метаданных. // Дополнительно в СписокЗначений включаются : Код, Наименование, Владелец, Родитель // Возвращаемое значение: СписокЗначений // СТРОКА : ИдРеквизита // ЗНАЧЕНИЕ : ИдРеквизита // Если ТолькоПериодические>0, то в список попадают только идентификаторы периодических реквизитов Функция гл81Сv77_ПолучитьСписокРеквизитовСправочника(oleБаза, Знач ИмяСпр, Знач ТолькоПериодические=0) Экспорт // 17.11.2007 Перем Res; Res = СоздатьОбъект("СписокЗначений"); Если ТипЗначения(oleБаза)=100 Тогда //OLE._Application 100 Если oleБаза.Метаданные.Справочник(""+СокрЛП(ИмяСпр)).Выбран()>0 Тогда ТП=ЧИСЛО(ТолькоПериодические); Если ТП<=0 Тогда Тип99 = "Код"; // "?" Res.ДобавитьЗначение(Тип99,"Код"); Тип99 = "Наименование"; // "СТРОКА" Res.ДобавитьЗначение(Тип99,"Наименование"); Тип99 = "Владелец"; // "?" Res.ДобавитьЗначение(Тип99,"Владелец"); Тип99 = "Родитель"; // "?" Res.ДобавитьЗначение(Тип99,"Родитель"); КонецЕсли; Колво = oleБаза.Метаданные.Справочник(""+СокрЛП(ИмяСпр)).Реквизит(); Если Колво>0 Тогда i=0; Пока i<Колво цикл i=i+1; ЭтоПериодический = oleБаза.Метаданные.Справочник(""+СокрЛП(ИмяСпр)).Реквизит(i).Периодический; Yes99=1; Если ТП>0 Тогда Если ЧИСЛО(ЭтоПериодический)<=0 Тогда Yes99=0; КонецЕсли; КонецЕсли; //--------------------- Если Yes99>0 Тогда ИдРекв=СокрЛП(oleБаза.Метаданные.Справочник(""+СокрЛП(ИмяСпр)).Реквизит(i).Идентификатор); ТипРекв=""; ВидРекв=""; ЭтоП=0; Тип99 = СокрЛП(oleБаза.Метаданные.Справочник(""+СокрЛП(ИмяСпр)).Реквизит(i).Идентификатор); // гл81Сv77_ПолучитьТипРеквизитаИзМетаданных(oleБаза, ""+СокрЛП(ИмяСпр),ИдРекв,ТипРекв,ВидРекв,ЭтоП) Res.ДобавитьЗначение(Тип99,ИдРекв); КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецЕсли; Возврат Res; КонецФункции // гл81Сv77_ПолучитьСписокРеквизитовСправочника //---------------------------------------------------------------------- //---------------------------------------------------------------------- // (c) Venger Alex, Odessa, 2007 // Вычисляет тип и вид реквизита регистра в конфигурации к которой // подключились (ссылка должна существовать) из метаданных // oleБаза - ссылка на конфигурацию 1С (должна существовать) // ИмяРег - Идентифмкатор регистра (например, ОстаткиТоваров) // ИдРекв - Идентифмкатор реквизита, информацию по которому считываем // В параметрах ТипРекв и ВидРекв возвращается строковое значение Типа и Вида реквизита // Функция возвращает код, как функция ТипЗначения() Функция гл81Сv77_ПолучитьТипРеквизитаРегистра(oleБаза, Знач ИмяРег, Знач ИдРекв, ТипРекв, ВидРекв) Экспорт // 18.11.2007 Перем Res; //Возвращаемое значение. : код типа значения Res = 0; ТипРекв = ""; ВидРекв = ""; Yes=0; ИмяРег=СокрЛП(Строка(ИмяРег)); ИдРекв=СокрЛП(Строка(ИдРекв)); Если ТипЗначения(oleБаза)=100 Тогда //OLE._Application 100 Если oleБаза.Метаданные.Регистр(""+СокрЛП(ИмяРег)).Выбран()>0 Тогда Если oleБаза.Метаданные.Регистр(""+СокрЛП(ИмяРег)).Реквизит(""+СокрЛП(ИдРекв)).Выбран()>0 Тогда Yes=1; ТипРекв = СокрЛП(oleБаза.Метаданные.Регистр(""+СокрЛП(ИмяРег)).Реквизит(""+СокрЛП(ИдРекв)).Тип); ВидРекв = СокрЛП(oleБаза.Метаданные.Регистр(""+СокрЛП(ИмяРег)).Реквизит(""+СокрЛП(ИдРекв)).Вид); КонецЕсли; КонецЕсли; КонецЕсли; Если Yes>0 Тогда Если ВРег(ТипРекв) = ВРег("Число") Тогда Res=1; КонецЕсли; Если ВРег(ТипРекв) = ВРег("Строка") Тогда Res=2; КонецЕсли; Если ВРег(ТипРекв) = ВРег("Дата") Тогда Res=3; КонецЕсли; Если ВРег(ТипРекв) = ВРег("Перечисление") Тогда Res=10; КонецЕсли; Если ВРег(ТипРекв) = ВРег("Справочник") Тогда Res=11; КонецЕсли; Если ВРег(ТипРекв) = ВРег("Документ") Тогда Res=12; КонецЕсли; Если ВРег(ТипРекв) = ВРег("Календарь") Тогда Res=13; КонецЕсли; Если ВРег(ТипРекв) = ВРег("ВидРасчета") Тогда Res=14; КонецЕсли; Если ВРег(ТипРекв) = ВРег("Счет") Тогда Res=15; КонецЕсли; Если ВРег(ТипРекв) = ВРег("ВидСубконто") Тогда Res=16; КонецЕсли; КонецЕсли; Возврат Res; КонецФункции // гл81Сv77_ПолучитьТипРеквизитаРегистра //---------------------------------------------------------------------- //---------------------------------------------------------------------- // (c) Venger Alex, Odessa, 2007 // Вычисляет тип и вид ресурса регистра в конфигурации к которой // подключились (ссылка должна существовать) из метаданных // oleБаза - ссылка на конфигурацию 1С (должна существовать) // ИмяРег - Идентифмкатор регистра (например, ОстаткиТоваров) // ИдРес - Идентифмкатор ресурса, информацию по которому считываем // В параметрах ТипРес и ВидРес возвращается строковое значение Типа и Вида ресурса // Функция возвращает код, как функция ТипЗначения() Функция гл81Сv77_ПолучитьТипРесурсаРегистра(oleБаза, Знач ИмяРег, Знач ИдРес, ТипРес, ВидРес) Экспорт // 18.11.2007 Перем Res; //Возвращаемое значение. : код типа значения Res = 0; ТипРес = ""; ВидРес = ""; Yes=0; ИмяРег=СокрЛП(Строка(ИмяРег)); ИдРес=СокрЛП(Строка(ИдРес)); Если ТипЗначения(oleБаза)=100 Тогда //OLE._Application 100 Если oleБаза.Метаданные.Регистр(""+СокрЛП(ИмяРег)).Выбран()>0 Тогда Если oleБаза.Метаданные.Регистр(""+СокрЛП(ИмяРег)).Ресурс(""+СокрЛП(ИдРес)).Выбран()>0 Тогда Yes=1; ТипРес = СокрЛП(oleБаза.Метаданные.Регистр(""+СокрЛП(ИмяРег)).Ресурс(""+СокрЛП(ИдРес)).Тип); ВидРес = СокрЛП(oleБаза.Метаданные.Регистр(""+СокрЛП(ИмяРег)).Ресурс(""+СокрЛП(ИдРес)).Вид); КонецЕсли; КонецЕсли; КонецЕсли; Если Yes>0 Тогда Если ВРег(ТипРес) = ВРег("Число") Тогда Res=1; КонецЕсли; Если ВРег(ТипРес) = ВРег("Строка") Тогда Res=2; КонецЕсли; Если ВРег(ТипРес) = ВРег("Дата") Тогда Res=3; КонецЕсли; Если ВРег(ТипРес) = ВРег("Перечисление") Тогда Res=10; КонецЕсли; Если ВРег(ТипРес) = ВРег("Справочник") Тогда Res=11; КонецЕсли; Если ВРег(ТипРес) = ВРег("Документ") Тогда Res=12; КонецЕсли; Если ВРег(ТипРес) = ВРег("Календарь") Тогда Res=13; КонецЕсли; Если ВРег(ТипРес) = ВРег("ВидРасчета") Тогда Res=14; КонецЕсли; Если ВРег(ТипРес) = ВРег("Счет") Тогда Res=15; КонецЕсли; Если ВРег(ТипРес) = ВРег("ВидСубконто") Тогда Res=16; КонецЕсли; КонецЕсли; Возврат Res; КонецФункции // гл81Сv77_ПолучитьТипРесурсаРегистра //---------------------------------------------------------------------- //---------------------------------------------------------------------- // (c) Venger Alex, Odessa, 2007 // Вычисляет тип и вид измерения регистра в конфигурации к которой // подключились (ссылка должна существовать) из метаданных // oleБаза - ссылка на конфигурацию 1С (должна существовать) // ИмяРег - Идентифмкатор регистра (например, ОстаткиТоваров) // ИдИзм - Идентифмкатор измерения, информацию по которому считываем // В параметрах ТипИзм и ВидИзм возвращается строковое значение Типа и Вида измерения // Функция возвращает код, как функция ТипЗначения() Функция гл81Сv77_ПолучитьТипИзмеренияРегистра(oleБаза, Знач ИмяРег, Знач ИдИзм, ТипИзм, ВидИзм) Экспорт // 18.11.2007 Перем Res; //Возвращаемое значение. : код типа значения Res = 0; ТипИзм = ""; ВидИзм = ""; Yes=0; ИмяРег=СокрЛП(Строка(ИмяРег)); ИдИзм=СокрЛП(Строка(ИдИзм)); Если ТипЗначения(oleБаза)=100 Тогда //OLE._Application 100 Если oleБаза.Метаданные.Регистр(""+СокрЛП(ИмяРег)).Выбран()>0 Тогда Если oleБаза.Метаданные.Регистр(""+СокрЛП(ИмяРег)).Измерение(""+СокрЛП(ИдИзм)).Выбран()>0 Тогда Yes=1; ТипИзм = СокрЛП(oleБаза.Метаданные.Регистр(""+СокрЛП(ИмяРег)).Измерение(""+СокрЛП(ИдИзм)).Тип); ВидИзм = СокрЛП(oleБаза.Метаданные.Регистр(""+СокрЛП(ИмяРег)).Измерение(""+СокрЛП(ИдИзм)).Вид); КонецЕсли; КонецЕсли; КонецЕсли; Если Yes>0 Тогда Если ВРег(ТипИзм) = ВРег("Число") Тогда Res=1; КонецЕсли; Если ВРег(ТипИзм) = ВРег("Строка") Тогда Res=2; КонецЕсли; Если ВРег(ТипИзм) = ВРег("Дата") Тогда Res=3; КонецЕсли; Если ВРег(ТипИзм) = ВРег("Перечисление") Тогда Res=10; КонецЕсли; Если ВРег(ТипИзм) = ВРег("Справочник") Тогда Res=11; КонецЕсли; Если ВРег(ТипИзм) = ВРег("Документ") Тогда Res=12; КонецЕсли; Если ВРег(ТипИзм) = ВРег("Календарь") Тогда Res=13; КонецЕсли; Если ВРег(ТипИзм) = ВРег("ВидРасчета") Тогда Res=14; КонецЕсли; Если ВРег(ТипИзм) = ВРег("Счет") Тогда Res=15; КонецЕсли; Если ВРег(ТипИзм) = ВРег("ВидСубконто") Тогда Res=16; КонецЕсли; КонецЕсли; Возврат Res; КонецФункции // гл81Сv77_ПолучитьТипИзмеренияРегистра //---------------------------------------------------------------------- //---------------------------------------------------------------------- // (c) Sergey Popov, Usinsk, Komi, 2002, 2003 //Получить Абсолютное значение (модуль) числа Функция гл9МодульЧисла(X) Экспорт //_new_ 13.10.2003 сп_ Перем Res; Res=ЧИСЛО(X); Если Res<0 Тогда Res=Res*(-1); КонецЕсли; Возврат Res; КонецФункции //---------------------------------------------------------------------- //---------------------------------------------------------------------- // (c) Sergey Popov, Usinsk, Komi, 2002, 2003 // Проверить на корректность имя Каталога. // Возвращает "обработанное" имя каталога Функция гл9НормализоватьИмяКаталога(ИмяКаталога) Экспорт NameDir = ИмяКаталога; NameDir=СокрЛП(NameDir); Если СтрДлина(NameDir)<=0 Тогда NameDir = "A:\"; //Это если уж совсем ничего не назначено КонецЕсли; Если Прав(NameDir,1)<>"\" Тогда NameDir = NameDir+"\"; КонецЕсли; Возврат NameDir; КонецФункции //гл9НормализоватьИмяКаталога //----------------------------------------------------------------------
(OLE 1С - 1C 7.7) Функции для 1С:Предприятие 7.7 для работы с другой базой 1С.
06.01.09
Разработка - Универсальные функции
Простенькие учебные функции (с описанием) для работы с базой 1С 7.7 через OLE.
Полностью средствами 1С, т.е. не требуют никаких внешних компонент.
Пользоваться можно бесплатно:-)
Вставляете в глобальный модуль и пользуетесь.
Цель: обучение, готовая иллюстрация подходов, возможность сразу использовать или, если нужно, доработать под свои цели.
Полностью средствами 1С, т.е. не требуют никаких внешних компонент.
Пользоваться можно бесплатно:-)
Вставляете в глобальный модуль и пользуетесь.
Цель: обучение, готовая иллюстрация подходов, возможность сразу использовать или, если нужно, доработать под свои цели.