Учебники 80235
.pdf6. Сохраняем конфигурацию и переходим в пользовательский режим 1С:Предприятие. Сформируем получившийся отчет (рис. 27).
Рис. 27. Отчет «Анализ сбыта»
Проверить правильность получения данных всех отчетов.
ЛАБОРАТОРНАЯ РАБОТА № 9 ЭКСПОРТ-ИМПОРТ ДАННЫХ
1. ЦЕЛЬ РАБОТЫ
Изучение механизмов осуществления переноса данных из одной программы в другую.
39
2. КОММЕНТАРИИ ПО ВЫПОЛНЕНИЮ РАБОТЫ
Для работы с файлами в системе используются специальные процедуры и функции, можно сказать предопределенные платформой. Также можно воспользоваться специальным объектом «Файл», который предназначен для доступа к параметрам файлов или каталогов.
При работе с файлами дополнительно можно использовать следующие процедуры:
1.КопироватьФайл(<ИмяФайлаИсточника>,
<ИмяФайлаПриемника>) – копирует файл-источник в файлприемник;
2. УдалитьФайлы(<Путь>, <Маска>) – если <Маска> не указана, то удаляются все файлы и каталог <Путь> др.
Использование текстовых файлов для переноса данных
Для работы с текстами в системе используется специальный объект "Текст". Средства языка позволяют выводить строки в текстовые файлы и считывать из имеющихся файлов текст с последующим разбором его по строкам.
Работу с текстом условно можно поделить на две части: чтение текста и запись текста.
При работе с объектом типа "ЧтениеТекста" используются функции:
1.Открыть(<ИмяФайла>, <Кодировка>, <РазделительСтрок>, <КонвертируемыйРазделительСтрок>, <МонопольныйРежим>) – открывает (монопольно) текстовый файл для чтения. Обязательным является только первый параметр, остальные можно не заполнять;
2.Закрыть() – закрывает открытый текстовый файл;
3.Прочитать(<РазмерСтроки>) – считывает строку произвольной длины. Параметр «РазмерСтроки» необязательный, если он не указан, то файл читается до конца;
40
4. ПрочитатьСтроку(<Разделитель>) – считывает строку текста, ограниченную разделителем. Параметр «Разделитель» необязательный, если он не указан, то совпадает со стандартным переносом строки.
При работе с объектом типа "ЗаписьТекста" используются функции:
1.Открыть(<ИмяФайла>, <Кодировка>, <РазделительСтрок>, <Дописывать>, <КонвертируемыйРазделительСтрок>) – открывает (монопольно) текстовый файл для записи. Обязательным является только первый параметр;
2.Закрыть() – закрывает открытый текстовый файл;
3.Записать(<Строка>) – записывает строку текста в файл, разделитель за записываемой строкой не ставиться;
4.ЗаписатьСтроку(<Строка>, <Разделитель>) – записывает строку текста в файл, в конце строки записывается разделитель. Параметр «Разделитель» не обязательный, если его не указывать, то проставляется по умолчанию перенос строки.
Листинг 5. Процедура выгрузки справочника товаров в текстовый файл.
&НаКлиенте Процедура Выгрузить(Команда)
ВыгрузитьТоварыНаСервере();
КонецПроцедуры
&НаСервере Процедура ВыгрузитьТоварыНаСервере()
//Получаем данные для записи Запрос = Новый Запрос; Запрос.Текст =
"ВЫБРАТЬ
| |
Товары.Код, |
| |
Товары.Наименование, |
| |
Товары.Артикул, |
41
| |
Товары.ЕдиницаИзмерения, |
| |
Товары.ЦенаЗакупочная, |
| |
Товары.ЦенаОптовая, |
| |
Товары.СтавкаНДС |
|ИЗ |
|
| |
Справочник.Товары КАК Товары |
|ГДЕ |
|
| |
Товары.ПометкаУдаления = ЛОЖЬ |
| |
И Товары.ЭтоГруппа = ЛОЖЬ"; |
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДанных = РезультатЗапроса.Выбрать();
//Создаем файл Текст = Новый ТекстовыйДокумент();
Пока ВыборкаДанных.Следующий() Цикл
Строка = ВыборкаДанных.Код + " -- " + ВыборкаДанных.Наименование + " -- " +
ВыборкаДанных.Артикул + " -- " + ВыборкаДанных.ЕдиницаИзмерения + " -- " +
ВыборкаДанных.ЦенаЗакупочная + " -- " + ВыборкаДанных.ЦенаОптовая + " -- " +
ВыборкаДанных.СтавкаНДС; Текст.ДобавитьСтроку(Строка);
КонецЦикла;
Текст.Записать("D:\Exp_imp.txt");
Сообщить("Справочник товаров выгружен в файл D:\Exp_imp.txt");
КонецПроцедуры // ВыгрузитьТоварыНаСервере()
Результат работы:
000000001 -- |
Овощи -- |
-- кг -- |
0 -- |
0 -- |
18% |
000000002 -- |
Фрукты -- |
-- кг -- |
0 -- |
0 -- |
Без НДС |
Замечание. «ЕдиницаИзмерения» – элемент справочника ЕдиницыИзмерения, и «СтавкаНДС» - элемент справочника «СтавкиНДС». При импорте пользоваться наименованиями справочников – не корректно, т.к. наименования могут быть не уникальными. Поэтому
42
необходимо переписать процедуру экспорта таким образом, чтобы выгружались коды справочников:
Спр.ЕдиницаИзмерения.Код; Спр.СтавкаНДС.Код;
Листинг 6. Загрузка справочника из текстового файла:
&НаКлиенте Процедура Загрузить(Команда)
ЗагрузитьДанныеНаСервере(); КонецПроцедуры
&НаСервере Процедура ЗагрузитьДанныеНаСервере()
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать("D:\Exp_imp.txt");
Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл
Строка = Текст.ПолучитьСтроку(НомерСтроки); МасДанных = РазложитьСтрокуВМассивПодстрок(Строка, "
-- ");
Товары = Справочники.Товары.НайтиПоКоду(СокрЛП(МасДанных[0]));
Если НЕ ЗначениеЗаполнено(Товары) Тогда СоздатьТовар(МасДанных);
Иначе
Сообщить("Товар - " + МасДанных[1] + " в базе уже
существует");
КонецЕсли;
КонецЦикла;
КонецПроцедуры // ЗагрузитьДанныеНаСервере()
&НаСервере Процедура СоздатьТовар(МасДанных)
Товар = Справочники.Товары.СоздатьЭлемент(); Товар.Код = СокрЛП(МасДанных[0]); Товар.Наименование = СокрЛП(МасДанных[1]); Товар.Артикул = СокрЛП(МасДанных[2]); Товар.ЦенаЗакупочная = СокрЛП(МасДанных[4]); Товар.ЦенаОптовая = СокрЛП(МасДанных[5]);
43
//Единицы измерения ЕдИзм =
Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(СокрЛП(МасДанн ых[3]), Истина);
Если НЕ ЗначениеЗаполнено(ЕдИзм) Тогда Ед = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
Ед.Наименование = СокрЛП(МасДанных[3]); Ед.Записать(); ЕдИзм = Ед.Ссылка;
КонецЕсли; Товар.ЕдиницаИзмерения = ЕдИзм;
//Ставка НДС НДС =
Справочники.СтавкиНДС.НайтиПоНаименованию(СокрЛП(МасДанных[6]), Истина);
Если НЕ ЗначениеЗаполнено(НДС) Тогда Ставка = Справочники.СтавкиНДС.СоздатьЭлемент();
Ставка.Наименование = СокрЛП(МасДанных[6]); Ставка.Записать(); НДС = Ставка.Ссылка;
КонецЕсли; Товар.СтавкаНДС = НДС;
Товар.Записать();
Сообщить("Товар " + Товар.Ссылка + " добавлен в базу");
КонецПроцедуры // СоздатьТовар()
&НаСервере Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт
МассивСтрок = Новый Массив(); Если Разделитель = " " Тогда
Стр = СокрЛП(Стр); Пока Истина Цикл
Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда
МассивСтрок.Добавить(Стр); Возврат МассивСтрок;
КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = СокрЛ(Сред(Стр,Поз));
КонецЦикла;
44
Иначе
ДлинаРазделителя = СтрДлина(Разделитель); Пока Истина Цикл
Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда
МассивСтрок.Добавить(Стр); Возврат МассивСтрок;
КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = Сред(Стр,Поз+ДлинаРазделителя);
КонецЦикла; КонецЕсли;
КонецФункции
3. СОДЕРЖАНИЕ И ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1.Написать процедуру выгрузки справочника сотрудников в текстовый файл. В текстовом файле должны быть следующие поля: фамилия, имя, отчество, адрес местожительства, дата рождения.
2.Написать процедуру загрузки справочника сотрудников из текстового файла.
3.Написать процедуру выгрузки справочника сотрудников в текстовый файл. В текстовом файле должны быть следующие поля: фамилия, имя, отчество, пол, паспортные данные.
4.Написать процедуру выгрузки справочника контрагентов в текстовый файл. Выгрузке подлежат контрагенты, проживающие в городе Воронеже.
5.Написать процедуру загрузки справочника должностей из текстового файла.
6.Написать процедуру выгрузки справочника складов в текстовый файл. В текстовом файле должны быть следующие поля: наименование склада, имя материально ответственного лица.
7.Написать процедуру выгрузки справочника сотрудников и справочника складов в текстовый файл. В
45
текстовом файле должны быть следующие поля: фамилия, имя, отчество материально ответственного лица и его оклад.
8.Написать процедуру загрузки справочника контрагентов в текстовый файл.
9.Написать процедуру выгрузки справочника сотрудников в текстовый файл. В файле должны быть следующие поля: фамилия, имя, отчество, оклад, должность.
10.Написать процедуру выгрузки справочника должностей из текстового файла.
11.Написать процедуру выгрузки справочника сотрудников в текстовый файл. В текстовом файле должны быть следующие поля: фамилия, имя, отчество, дата приема на работу и стаж на текущую дату.
12.Написать процедуру выгрузки справочника сотрудников в текстовый файл. В текстовом файле должны
быть следующие поля: фамилия, имя, отчество, дата увольнения. Выгрузке подлежат только уволенные сотрудники.
13.Написать процедуру выгрузки справочника товаров в текстовый файл. В текстовом файле должны быть следующие поля: товар, артикул, цена оптовая. Выгрузке подлежат товар с единицей измерения штуки.
14.Написать процедуру выгрузки справочника сотрудников в текстовый файл. В файле должны быть следующие поля: фамилия, имя, отчество, дата рождения. Выгрузке подлежат только данные сотрудников пенсионного возраста (мужчины старше 60, женщины старше 55 лет).
15.Написать процедуру выгрузки справочника товаров в текстовый файл. В текстовом файле должны быть следующие поля: товар, артикул, цена оптовая. Выгрузке подлежат товары, введенные в диалоге.
46
ЛАБОРАТОРНАЯ РАБОТА № 10 ОПРЕДЕЛЕНИЕ РОЛИ ПОЛЬЗОВАТЕЛЯ
1. ЦЕЛЬ РАБОТЫ
Целью данной лабораторной работы изучение возможностей администрирования в среде 1С.
2. КОММЕНТАРИИ ПО ВЫПОЛНЕНИЮ РАБОТЫ
Подсистемы – это основные элементы для построения интерфейса «1С:Предприятия». Объекты конфигурации «Подсистема» позволяют выделить в конфигурации функциональные части, на которые логически разбивается создаваемое прикладное решение. Эти объекты располагаются в ветке объектов «Общие» и позволяют строить древовидную структуру, состоящую из подсистем и подчиненных им подсистем.
Подсистемы верхнего уровня являются основными элементами интерфейса, так как образуют разделы прикладного решения.
Каждый объект конфигурации может быть включен в одну или сразу несколько подсистем, в составе которых он будет отображаться.
Таким образом, наличие подсистем определяет структуру прикладного решения, организует весь пользовательский интерфейс, позволяет рассортировать различные документы, справочники и отчеты по логически связанным с ними разделам, в которых пользователю будет проще их найти и удобнее с ними работать. При этом каждому конкретному пользователю будут видны лишь те разделы, то есть та функциональность прикладного решения, которые ему нужны в процессе работы.
Пользовательским интерфейсом в системе
1С:Предприятие называется совокупность команд главного меню и панелей инструментов, доступных пользователю, которому назначен некоторый интерфейс, и предназначенных
47
для работы конкретными объектами данных, такими как документы, справочники, счета, регистры и т.д. Как правило, пользовательский интерфейс создается для определенной категории пользователей, представителям которой требуется разрешить или запретить одинаковый доступ к различным объектам структуры метаданных. Целью создания индивидуального пользовательского интерфейса является обеспечение быстрого доступа пользователя к той информации, которая необходима ему в соответствии с текущими должностными обязанностями, а также закрытие доступа к ненужной или нежелательной информации.
Права в системе 1C:Предприятие определяют перечень разрешенных для пользователя действий по работе с информационной базой. Права определяются исходя из круга обязанностей пользователя. Кроме того, права запрещают выполнение ненужных определенному работнику действий.
Подсистемы и права, назначенные пользователю, составляют роль пользователя. Можно, например, создать такого пользователя, которому разрешен только ввод документов, но запрещена работа с объектами всех других типов. Такой подход позволяет лучше организовать политику безопасности информационной системы, а также повысить качество интерфейса и производительность работы.
3. СОДЕРЖАНИЕ И ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
Подсистемы. Для удобства работы пользователей и дальнейшего распределения ролей используется механизм подсистем (в 1С появился с версии 8.2).
1. Новую подсистему «Продажи» (ветка метаданных «Общие» - «Подсистемы»). На начальной закладке можно определить наименование, синоним, картинку подсистемы. А также можно сделать данную подсистему служебной, для деления объектов для служебных целей программиста (признак «Включать в командный интерфейс») рис. 28.
48