обЭксел = СоздатьОбъект(“Excel.Application”); //создаем объект
НашФайл = обЭксел.Workbooks.Open(СокрЛП(ИмяФайла)); //Открываем файл
НашЛист = НашФайл.Sheets(1); //Устанавливаем нужный лист
Знач1 = НашЛист.Cells(1,1); // Считываем значение, здесь: из первой ячейки первой строки
// Затем Знач1 сохраняем: в константе, справочнике или документе – как требуется в конфигурации
//Если нужно считать несколько значений то организуем цикл
Для i = 1 По Знач1 Цикл
Знач = НашЛист.Cells(i,1).Value;
// Затем Знач сохраняем: в константе, справочнике или документе – как требуется в конфигурации
КонецЦикла;
ОбЭксел.WorkBooks.close();
ОбЭксел.Quit();
| опубликовано: 18 Май 2009, 14:17
Иногда при ограничении прав доступа пользователям при входе в 1С возникает такое сообщение. Связано оно с тем, что пользователю «обрезали» права (слегка перестарались :) ) на отчеты, обработки и справочники, которые используются в процедуре ПриНачалеРаботыСистемы() глобального модуля, в частности на обработку «Путеводитель». Лечить можно двумя способами:
1) дать права на все объекты метаданных, использующихся в процедуре ПриНачалеРаботыСистемы() глобального модуля;
2) изменить процедуру ПриНачалеРаботыСистемы() глобального модуля таким образом, чтобы объекты метаданных, на которые у пользователя нет прав, не использовались (обходились алгоритмом «мимо»).
| опубликовано: 14 Май 2009, 14:16
Во многих конфигурациях для этого используется константа «Дата запрета редактирования». Затем в глобальном модуле прописывается процедура наподобие этой:
Процедура глПроверкаРазрешенияРедактирования(Конт) Экспорт
Если Конт.Выбран() = 1 Тогда
Если (Конт.ДатаДок <= Константа.ДатаЗапретаРедактирования) и (Конт.Форма.ТолькоПросмотр() = 0) Тогда
Конт.Форма.ТолькоПросмотр(1);
Предупреждение(“Разрешен только просмотр документа!”, 4);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
А в предопределенных процедурах ПриОткрытии() в модулях формы всех документов конфигурации нужно вставить вызов процедуры:
глПроверкаРазрешенияРедактирования(Контекст);
Если Форма.ТолькоПросмотр() = 1 Тогда
// здесь нужно написать код, делающий недоступными кнопки
// примерно так: Форма.КнопкаОК.Доступность(0);
КонецЕсли;
Существуют и более изощренные способы на запрет редактирования объектов метаданных. Один из них заключается в следующем:
1) в глобальном модуле описывается:
Перем глПользователь Экспорт;
для хранения ссылки на элемент справочника «Пользователи» для текущего пользователя;
2) в конфигурации заводится справочник «Пользователи», если он еще не заведен; прописывается автоматическая регистрация новых пользователей в этом справочнике при первом входе в 1С Предприятие, а заодно и заполнение глобальной переменной глПользователь – это делается в предопределенной процедуре ПриНачалеРаботыСистемы() глобального модуля:
Спр = СоздатьОбъект(“Справочник.Пользователи”);
Если Спр.НайтиПоКоду(ИмяПользователя(), 0)=1 Тогда
глПользователь=Спр.ТекущийЭлемент();
Иначе
Спр.Новый();
Спр.Код = ИмяПользователя();
Спр.Наименование = ПолноеИмяПользователя();
Спр.Записать();
глПользователь=Спр.ТекущийЭлемент();
Предупреждение(“Пользователь внесен в справочник пользователей! В новых документах будет фиксироваться автор!”);
КонецЕсли;
3) в справочник «Пользователи» добавляется реквизит «ДатаЗапретаРедактирования», а процедура глПроверкаРазрешенияРедактирования(Конт) из глобального модуля изменяется таким образом, чтобы сравнение шло не с константой, а с реквизитом справочника «Пользователи»:
Если (Конт.ДатаДок <= глПользователь.ДатаЗапретаРедактирования) и (Конт.Форма.ТолькоПросмотр() = 0) Тогда
Таким образом реализуется возможность запрета редактирования документов глубже разных дат для разных пользователей. Еще можно создать справочник «ПраваПользователей», подчиненный справочнику «Пользователи», и использовать его для задания всяких изощренных вариантов прав на объекты метаданных конфигурации.
| опубликовано: 11 Май 2009, 14:15