Загрузил 9880139

7 Практических занятий: Тренинг по программированию в 1С - Базовые знания

7
ПРАКТИЧЕСКИХ ЗАНЯТИЙ
ТРЕНИНГА
«ОБУЧЕНИЕ ПРОГРАММИРОВАНИЮ В 1С»
Базовые и важные знания в 1С программировании
Введение или О тонких материях в программировании
Наверное, каждый из нас испытывал такие моменты, когда ты думаешь что
жизнь удалась, что всё будет в порядке, что «сыр, который мы нашли – он
никогда не закончится)». Но суровая правда жизни диктует совсем другие
правила игры.
И так было с 1С 7.7. Ничто не предвещало беды для программиста,
освоившего 1С 7.7. Практический каждый программист на тот момент рано
или поздно, - но приходил к выводу о том – что если ты хочешь зарабатывать
свой хлеб программированием, или чем-то подобным – то тебе необходимо
переходить с Си++, с Visual Basic и DELPHI – на то, что хотят покупать люди, на
то за что они хотят платить деньги! И так было с 1С 7.7.
Почему с моей точки зрения так произошло. Бизнес диктует свои правила
игры, бизнес не хочет ждать и создавать свои уникальные разработки
программного обеспечения. Когда вы как программист Ассемблера – могли
несколько недель создавать очень небольшое и эффективное приложение,
которое (для примера) просто открывает файл и записывает туда данные, то
с приходом Объектно-ориентированного программирования, к примеру
DELPHI вы могли тратить время на создание этого файла и чтения и записи из
этого файла – уже гораздо меньше. Практически за несколько минут – вы
можете создать то, что на Ассемблере вы могли делать неделями, и затем
еще и исправлять ошибки еще неделю.
К сожалению эра DELPHI в мелких проектах, которые способен
поддерживать один программист – заканчивается. Сейчас DELPHI или Си++
это как Ассемблер в то прошлое время. Сейчас программист 1С не
задумывается о том, какой файл создается при создании какого-то объекта,
где эти данные хранятся, и как из считать из файла. Эти действия настолько
автоматизированы в 1С, что программист их даже не замечает.
Итак было с 1С 7.7, программист создающий базу данных на 1С затрачивал
в несколько десятков раз меньше времени, чем тот же программист на
DELPHI. Никого уже не волновало, сколько занимает в памяти и на диске
приложение, созданное на DELPHI и приложение созданное на 1С.
У бизнеса были свои требования – такие приложения должны
поддерживаться легко и просто, так как 1С имеет открытый код – то любой
другой программист может продолжить сопровождать созданное
приложение, причем делать это легко и просто. Проблемы с поддержкой
кода – отпадают).
Те, кто тогда засиделся в 1С 7.7, сейчас то понимают, что они упустили.
Невозможно сравнивать 1С 7.7 и 1С 8.2, но конечно же - - время идет,
появляются новые знания, новые продукты, и если вы в этой сфере – то вы
уже столкнулись с необходимостью постоянно обновлять свои знания, чтобы
хотя быть быть не впереди планеты всей (об этом уже речи нет), но быть хотя
бы на каком-то более, менее приемлемом уровне с другими.
Те из Вас, кто изучил какой-либо язык программирования наверное помнят
такие моменты, когда вы пытались что-то сделать, на это уходила уйма
времени, и казалось … что у вас ничего не получается. И хотелось в такие
моменты – всё бросить и заняться чем-нибудь другим.
НО … это как обман зрения. Изменения постепенно накапливались в
вашем «мозге», вам казалось что ничего не происходит, что это невозможно
понять и осилить, … но спустя некоторое время та же самая задачка – стала
решаться для вас быстрее чем раньше.
Еще и еще быстрее и эффективнее, чем раньше. …
Это то же, что было с 1С 8. Первая реакция при встрече – это отторжение, …
сейчас уже никто не помнит этой реакции, все мы привыкли. Дальнейшее
изучение пользовательского режима 1С 8 – это шок и раздражение. Сейчас
уже никто не помнит – «как плакали бухгалтера» когда их чуть ли не
насильно заставляли работать в 1С 7.7. Сидели вечерами…, разбирались…,
бросали заявления директору ...
Раньше вы могли получить преимущество, если вы знали 1С 7.7. Сейчас
требование о знании 1С 8 – это обычное явление.
Сейчас мы это всё забыли и кажется что это что-то привычное и обычное.
Так было и с 1С 8 – сейчас кто из нас скажет, что 1С8 – это что-то страшное и
необычное для работы? Все мы привыкли работать с ней. И так будет и
дальше.
Единственное к чему мы должны привыкнуть сейчас – это к постоянным
изменениям!
Сессия №1
Для установки 1С:Предприятия откройте папку с дистрибутивом
программы и найдите файл setup.exe и следуйте инструкциям, обычно
просто достаточно нажимать кнопку Далее и ждать дальнейших инструкций
от установщика.
После установки вы можете найти ярлык на рабочем столе
1С:Предприятие, либо в меню Пуск->Все программы(Программы для WinXP)
-> 1С Предприятие 8 -> 1С Предприятие.
Приобретите или заимейте возможность поработать
и посмотреть 1С:Предприятие 8.2 версия для
обучения программированию. Сейчас по ссылке
http://v8.1c.ru/metod/books/book.jsp?id=198–
эта
версия стоит порядка 600 руб, мы приобретали
версию для обучения через магазин bolero.
Ограничения на использование записей в базе
данных БД (порядка 100)
Сейчас мы рассмотрим базовые понятия, касающиеся общего устройства
1С 8.2.
В большинстве современных языков программирования существует некая
модель визуализации данных, поэтому это накладывает на программиста
ограничения и возможные проблемы в том, чтобы разобраться, где и что-как
лежит и зачем.
Особенно жизнь программистов испортилась  с появлением объектноориентированного программирования. К сожалению к 1С практически не
относится ни одному из названных понятий. Вроде как бы для программиста
визуально все представлено в виде объектного языка, но на самом деле 1С
скорее псевдоязык. Но мы сейчас не об этом.
Обычному программисту вот так увидевшего впервые 1С:Предприятие
бывает очень трудно понять, где как и что программируется в 1С. Структура в
1С совершенно сумасшедшая)).
Тем, кто уже сталкивался с программированием ранее – знает, что обычная
программа на любом языке состоит из текста, а сам язык программирования
обладает редактором таких текстов; также помимо редактора существует
синтаксический контроль текста, его интерпретация (то есть выполнение) и
компиляция (когда текст удобный человеку, превращается в машинный код,
удобный для выполнения процессором).
В 1С жестко прописаны те места, где вы можете программировать и
простая конфигурация (любая) содержит набор групп (объектов) уже
подготовленных к каким-либо заранее известным действиям.
Итак сейчас вам
КОНФИГУРАЦИЯ.
важно
запомнить
2
понятия.
ПЛАТФОРМА
И
Конфигурация – это то, что будем разрабатывать, обслуживать и
сопровождать мы. А Платформа является неким интерпретатором того, что
есть в конфигурации. Мы как программисты 1С всегда будем ограничены
возможностями платформы. В Платформе реализуют – реализуем и мы в
конфигураторе. Запомните еще одно – Конфигурация не может работать без
платформы, т.к. понимает файл конфигурации только Платформа 1С.
Каждая конфигурация продается (как любят говорит – распространяется)
фирмой 1С как отдельное типовое решение.
Вы наверное уже встречали такие сокращения как УТ 11, УТ 10, УПП, БП, ЗУП
– это стандартные типовые конфигурации разрабатываемые фирмой 1С или
её партнерами. УТ (Управление торговлей – более подходит для торговых
организаций, складского учета), БП – Бухгалтерия предприятия, ЗУП –
Зарплата и управление персоналом (конфигурация для начисления, расчетов
заработной платы и ведения кадрового учета), УПП – управление
производственным предприятием (включающее в себя и зарплатный,
кадровый блок + бухгалтерский учет, складские операции, бюджетирование
и планирование).
Система 1С и разработанная с ее использованием конфигурация никогда
не смогут жить друг без друга. Вы не сможете откомпилировать ваш проект и
предлагать его другим пользователям отдельно от 1С. А это накладывает на
Вас и вашу конфигурацию ряд обязанностей – а именно покупка лицензии,
установка и настройка 1С:предприятия на компьютерах пользователей. То
есть грубо говоря ваш программный продукт состоит из: дистрибутива
платформы 1С, которая занимает от 100 мб и в развернутом виде – 270 мб
или более; Покупка лицензии для конечного пользователя; и собственно
ваша конфигурация,-если написанная с нуля – порядка 1-5 Мб в начальной
стадии проекта или разработки. Но игра стоит свеч, особенно для конечного
пользователя – ведь он получает вместе с вашим проектом и доступ к
исходным текстам программы, и возможность дорабатывать вашу
конфигурацию – уже без вас; также сроки разработки для вас и для
конечного пользователя будут сокращены.
Итак как вы уже поняли пользователи работают с вашей конфигурацией в
обычном режиме, именуется он режим 1С:Предприятия – это когда
пользователь уже видит конечный результат вашего творения, где он может
уже работать и выполнять заказанные у вас действия.
Вы, как разработчик работаете в режиме Конфигуратора и для отладки
используете режим 1С:Предприятия.
Платформа 1С:Предприятия сейчас плавно эволюционирует от обычного
приложения, к интернет приложению – тонкий клиент, работа
непосредственно в окне интернет браузера, что накладывает свои отпечатки
и собственно затрудняет изучение (концепция «управляемое приложение»).
В чем трудность – ранее при программировании в 1С 8.2 до управляемого
приложения у разработчика практически не возникало необходимости
продумывать – где и как будет выполнятся его код на сервере или на
клиенте, теперь же с появлением Управляемого приложения, выполнение
таких вещей необходимо четко регламентировать, ->то есть думать над тем
выполняете ли вы код (функцию, процедуру) – на клиенте или на сервере, и
попутно с этим решать множество возникающих проблем.
В общем практика работы с 1С показала, что вам скучать не придется,
относится это к тому даже вопросу, что язык 1С:предприятия 7.7 и подходы к
программированию отличаются от языка 1С:Предприятия 8.х. Когда
поработаешь с удобствами в 1С 8, уже не хочется работать в 1С 7.7.
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ
Создание пустой конфигурации для разработки
Итак, давайте не будем долго философствовать и начнем практическое
занятие.
Откройте 1С:Предприятие щелкнув по ярлыку
Обратите внимание в появившемся окне справа на
кнопки 1-6.
В окне слева находится список информационных баз
(информационная база – конфигурации и база
данных, далее будем использовать сокращение ИБ).
1 – Запуск 1С в режиме 1С:Предприятие
2 – Запуск 1С в режиме Конфигуратора
3 – Создание ИБ, добавление ИБ в список, создание
новой группы
4 – Изменение параметров ИБ
5 – Удаление из списка группы или строки с описанием ИБ.
6 – Настройка отображения списка ИБ (слева)
Если вы недавно установили 1С, то скорее всего ваш список
информационных баз будет пуст.
Давайте создадим в этой сессии ИБ для наших дальнейших опытов и
обучения. В следующих сессиях мы продолжим работать с созданной ИБ.
Жмем кнопку(3) Добавить.
1. Соглашаемся с выбором по умолчанию (Создание новой
информационной базы) и жмем Далее>>
2. Создание ИБ без конфигурации
3. Называем
(по
вашему
усмотрению),
у
нас
Обучение
программированию.
4. На данном компьютере или на компьютере в локальной сети
5. Далее
6. Указываем местоположение ИБ, по умолчанию она создается в ваших
Документах (Мои документы) и имеет название папки InfoBase1
7. Заключительные параметры ИБ, пока не будем здесь их разбирать,
этому посвятим отдельную сессию или приложение к тренингу.
8. Готово. Ждем пока 1С создаст по умолчанию пустую ИБ с пустой
конфигурацией для разработки.
Теперь в окне с запуском 1С вы увидите новую строку Обучение
программированию, у меня там уже есть несколько различных баз, поэтому
не пугайтесь в вашем списке может присутствовать только то, что добавите в
список вы.
Дополнительные материалы, а также видео по созданию конфигурации вы можете скачать у нас на сайте
http://prof1c.kklab.ru
Сессия №2
Понятие объекта и объектно-ориентированное программирование.
Сегодня разберем такое громкое и очень важное понятие, как объектноориентированное программирование(ООП).
В качестве базового понятия языков программирования, использующих в
своей основе ООП – является Объект. Объект включает в себя множество
различных понятий и параметров – это как готовая коробка с необходимыми
методами, данными. То есть – размышляя языком кулинарии))
Можно сказать что, к примеру, чтобы приготовить пельмени необходимо
подготовить из мяса фарш, тесто (яйца, мука, соль), и вылепить из этого всего
руками заботливой хозяйки пельмени.
Есть второй вариант – это купить полуфабрикаты, - готовые замороженные
пельмени и сварить их.
Есть последний вариант – сходит в кафе и заказать готовые к применению
пельмени – вот это и будет являться в ООП объектом. Это конечно
упрощенная форма понимания объекта, но Вам должно быть более или
менее понятно.
Причем, в некоторых случаях Пельмень можно растянуть, натолкать
побольше мяса, и приготовить по другому – это будут уже Манты. Жалко что
реально из пельменей уже не могут получиться манты, но в ООП – возможно
и такое))).
Большая часть современных языков программирования обладает теми или
иными элементами ООП, а есть и языки программирования целиком и
полностью состоящие из объектов.
Еще одним важным понятием для ООП являются события, то есть грубо
говоря программа при запуске ждет каких-либо действий от пользователя и в
зависимости от этого действия выполняется тот или иной кусок кода в
программе.
Если в простых языках программирования («извиняюсь за слово
простые))») текст программы выполняется, начиная с 1 строчки, и заканчивая
последней, от начала и до конца, то в ООП выполняется какой-то базовый
блок текста программы, заданный программистом, предназначенный в
основном для загрузки настроек, подготовки программы для пользователя,
инициализацией переменных и т.д. – и далее программа ждет действий от
пользователя – если пользователь нажимает какую-либо клавишу – то
выполняется код, заданный для этой клавиши.
Такой подход применяется, к примеру, в языке программирования
Delphi. Однако это не значит, что программист не может сделать программу,
которая будет работать и без действий пользователя. Такими
самоработающими программами являются к примеру различные
планировщики, вирусы, и т.д. Программа – обычно это последовательность
команд центральному процессору, с просьбой что-то сделать. Чем сложнее
программа – тем сложнее эти обращения к центральному процессору.
Центральный процессор – это мозг компьютера, где проходят все
вычисления.
С появлением языков более дружелюбных к пользователю – обращение с
просьбами к центральному процессору стало зависеть от действий
пользователя. То есть программа ожидает, что пользователь выберет
определенную команду меню или пользователь нажмет на кнопку и в
зависимости от этого выполнится определенный список команд – для этой
кнопки или команды меню.
Если мы говорим о программах для ОС Windows то, скорее всего список
команд для центрального процессора преобразован в вид, наиболее
удобный для операционной системы и процессора, то есть попросту говоря
он либо закодирован, либо переведен в машинные коды, то есть посмотрев
на список команд в текст программы вы увидите всякие символы, которые
обычному человеческому мозгу при первом взгляде понять невозможно.
С одной стороны это улучшает взаимодействие программы и компьютера,
и с этой же стороны защищает каким-то образом ваш код от воровства
другими пользователями и программистами, но с другой стороны делает
невозможным просмотр списка команд у других программ - для Вас.
Для того чтобы из списка команд центральному процессору – получился
машиночитаемый текст программы – программа проходит компиляцию –
когда текст программы понятный для вас – заменяется на текст, понятный
нашему центральному процессору. Компиляцию можно сравнить с тем,
когда вы из различных компонентов в кулинарии, - картофель, вода,
морковь, соль, лук, мясо – приготавливаете какое-то блюдо. Компилятор из
исходных строк кода(текста программы) – создает готовую программу.
Такие языки программирования как Си и Паскаль, ассемблер в большинстве
своем имеют компиляторы для преобразования в машиночитаемый текст
программы. А вот так называемые языки для разработки сайтов – не
компилируются, а также и тексты программ написанные на 1С:предприятие
7.7, 8-8.2. То есть практически в любой момент времени – есть возможность
посмотреть исходный код текстов модулей и скриптов.
Набор инструкций на языке программирования, на «языке программистов»
часто называется алгоритмом. Алгоритм – это последовательность команд,
описывающих порядок каких-то действий.
Алгоритм, как в кулинарии
рецепт не отличаются друг от друга, но слово алгоритм чаще всего
используют для «приготовления» программ, а слово рецепт применяется
для написания каких-либо блюд.
Совершенно любой из представленных сейчас языков программирования
состоит из нескольких важных блоков, составляющих и понятий. То есть
изучая любой язык вы столкнетесь с такими понятиями, как то - объекты,
операторы, переменные и т.д. Некоторые языки предполагают только
операторы. К примеру Qbasic, под издательством Microsoft – вряд ли уже
кто-то пишет на этом языке)), представляет собой обычный текстовый
редактор, который интерпретирует выполнение написанных в тексте
слов(операторов).
Более сложные языки программирования сейчас основываются на
множестве понятий, таких как наследование, полиморфизм, объекты (так
называемое ООП – объектно ориентированное программирование), но по
сути своей работа с объектами сводится в итоге своем к банальному вводу
текстовых команд и простых операторов. (Извините за слово банальное, т.к.
для банального программирования нужен большой опыт)));
Также существует такое понятие: как контроль, синтаксический контроль и
т.п. Эта штука необходима для того чтобы интерпретатор (преобразователь)
правильно понимал то, что вы ему написали. То есть если вы напишите мама
+ папа = любовь – это будет неправильно, но вот к примеру если вы
напишите любовь = мама + папа; - будет правильно с точки зрения
интерпретатора, и с точки зрения синтаксического контроля - ошибок не
возникнет.
Переменные и операторы вот такое понятие которое встречается абсолютно
во всех языках программирования и без этого понятие не существует ни
программы ни языков )))
Переменная – это как бы коробочка, которая содержит в себе одно
значение, если значений несколько то это уже коробочка с разделами и
именуется она как Массив (array). Обычно переменная ранее была
необходима чтобы обеспечить взаимодействие пользователя и программы.
То есть пользователь вводил в переменную данные, программа их
обрабатывала и на выходе давала какой-то результат.
В различных языках программирования существуют различные подходы к
тому как засунуть в коробочку значение, и обычно применяется знак
равенства в различных его вариациях =, ==, := и т.д. Присваивание. Равенство.
Функция – обязательно возвращает какое-то значение, её функция)) и
заключается в том, чтобы взять какие-то переменные, или объекты – внутри
себя их преобразовать, с использование операторов языка
по
определенному алгоритму и выдать на выходе результат преобразований.
Алфавит языка, - простым языком говоря – это ваша точка вхождения в
любой язык программирования, - это символы которые разрешены к
использованию в языке программирования. В 1С Предприятии на этом не
заостряется внимание, т.к. используются в основном русские, английские
буквы и цифры.
Следующий важный тип параметров также относимый к любому языку
программирования – это предопределенные процедуры и функции,
ключевые слова используемые языком программирования, причем очень
важно заметить что предопределенные процедуры и функции в большинстве
языков программирования нельзя использовать в качестве переменных и
др.значений, задаваемых программистом.
Также существует и есть такое понятие как процедуры и функции
созданные пользователем, обычно их название должно отличаться от
предопределенных. Большая часть современных языков программирования
позволяет создавать пользователю
конструкции языка как
свои
функции,
используя
такие
function название функции()
result:=значение;
end;
result – т.н. псевдопеременная.
в различных языках программирования – различное описание процедур и
функций, к примеру выше приведено написание в языке Паскаль. Вот так
выглядит конструкция в языке 1С
Функция название()
Возврат значение;
КонецФункции;
Очень важно понимание предопределенных процедур и функций – это так
называемый базовый набор, коробочка предопределенных действий, из
которых вы можете составлять свою программу. Так как текст любой
программы пишется с использованием переменных, процедур и функций. 1С
знает о существовании определенных процедур и когда возникает
определенная ситуация – 1С ищет в тексте программы такую функцию и
выполняет её.
Немаловажное
значение
в
использовании
любого
языка
программирования является то, какой тип можно назначать переменным–
это типы данных языка программирования. В каком-то языке
программирования – их больше, в каком-то меньше, но суть сводиться к
следующим нескольким, в удобо-перевариваемом русском языке – это:
ЧИСЛО, СТРОКА, БУЛЕВО, ЧИСЛО С ПЛАВАЮЩЕЙ ЗАПЯТОЙ – это основные и
самые важные, другие же зависят от реализации языка программирования –
КАРТИНКА(ИЗОБРАЖЕНИЕ), ФАЙЛОВЫЙ ТИП, ДАТА, ВРЕМЯ, или ДАТАВРЕМЯ,
и в языках программирования так называемых ООП (объектных языках) –
своего рода всякая разная смесь из различных базовых типов – названная
каким либо именем и обобщающая в себе несколько различных типов.-
Справочники
Давайте познакомимся с конфигуратором более подробно. Точнее с его
внутренностями)).
Объекты.
Объект – это сущность с заранее предопределенными свойствами и
предопределенными действиями. К примеру, в языке программирования
DELPHI объект может быть уже настроен по умолчанию, и его использование
заключается во включении этого объекта (активации,active) и также задании
значений свойствам объекта. Дополнительно про объекты можно почитать в
приложении к этой сессии.
Своего рода объекты (их так называют в 1С:Предприятии) используются в
текстах программных модулей, и в реквизитах объектов возможны и
используются ссылки на другие объекты. Обращение в текстах программных
модулей зачастую происходит по прямому названию – имени объекта через
точку. К примеру Справочники.Номенклатура.
В 1С 7.7 доступ к таким объектам осуществлялся немного по-другому, с
использованием функции СоздатьОбъект(«Справочник.Номенклатура»).
Работа с объектами в 1С предполагает их создание, настройки и
использование во взаимодействии с другими объектами.
Основное различие между объектами типа Справочник и объектами типа
Документ заключается в том, что созданные в информационной базе строки
(элементы, документы) у справочников предназначены больше для хранения
справочной информации, а документы для отражения каких-то
происходящих «периодически» операций. Для того чтобы документ мог
отражать операции во времени у него всегда присутствует реквизит Дата.
Причем документ имеет свойство быть записанным, проведенным,
помеченным на удаление. Все те же свойства имеются у Справочников за
исключением проведения.
Константы содержат какую-либо постоянную информацию и в основном
предназначены для хранения настроек.
Кстати говоря, в 1С 7.7 константы имели возможность хранить в себе
информацию во времени - могли быть периодическими. В 1С 8.хх такой
подход убрали и создали для хранения периодических сведений
специальный регистр Сведений. Для каких задач необходима такая
настройка, которая позволяет хранить данные таким образом? Как вы
думаете? Ну, к примеру, главный бухгалтер предприятия – на 1 января 2011
года главным бухгалтером была Иванова Антонина Степановна, а к
15.февраля.2012 году уволилась, и главным бухгалтером стал Петров Петр
Сергеевич. Для того чтобы в настройке оставалась информация по всем
главным бухгалтерам и применяется такие объекты. При обращении и
получении информации на конкретную дату вам выдается значение, которое
соответствовало этой дате.
В предыдущей сессии мы запустили конфигуратор и теперь начинаем
знакомиться с основными кнопками панелей инструментов, которые нам
понадобятся в ходе дальнейшего изучения.
Несколько важных кнопочек на панели управления.
1. Открывает конфигурацию, окно содержит список всех объектов, т.н.
дерево объектов. Физически читает данные конфигурации.
2. Закрывает конфигурацию.
3. Обновление конфигурации базы данных. Дальше мы подробнее
рассмотрим, зачем эта кнопка необходима. (Горячая клавиша F7)
4. Открыть окно конфигурации. Предназначено для того, чтобы если вы
закрыли случайно окно с конфигурацией – чтобы его можно было
открыть снова. Никакие данные не перечитываются просто
открывается окно.
5. Запустить в режиме 1С предприятие. Начать отладку (Горячая клавиша
F5).
Так как мы только недавно создали с вами пустую конфигурацию, то для
открытия окна конфигурации воспользуйтесь кнопкой (1).
Вы увидите список объектов. Справочники,
документы,
журналы
документов,
константы,
перечисления,
отчеты,
обработки, регистры.
В целях понимания программирования и некоторых общих принципов
предлагаем вам дополнительное задание, которое находится в приложении.
Каждый справочник содержит в себе 3 программных модуля – их назначение
соответствует их использованию. (для написания текстов программ)
1. Модуль объекта
2. Модуль менеджера
3. Модуль формы документа (сколько будет форм – столько будет
модулей)
Понятие управляемое приложение и обычное приложение
Внешний вид управляемого приложения
Внешний вид обычного приложения
Для переключения режима запуска вы можете выполнить следующие
действия. Открыть конфигурацию, если она не открыта. В списке объектов
кликните два раза мышкой по названию конфигурации – «Конфигурация»
справа откроется окно Свойства. В поле основной режим запуска – выбрать
из списка Обычное приложение. Не забудьте обновить конфигурацию базы
данных.
Практическое занятие по Сессии №2 и дополнительные материалы, а также видео по созданию
справочников вы можете скачать у нас на сайте http://prof1c.kklab.ru
Сессия №3
Документы. Наш первый документ
Сегодня мы рассматриваем с вами другой немаловажный
основополагающий объект в системе 1С – это документ.
и
Документ предназначен для регистрации фактов хозяйственной жизни,
документально-оформленных операций. В отношении к бухгалтерским и
финансовым конфигурациям документ является в большинстве своем
аналогичной электронной копией документа бумажного. Так часто бывает –
Счет на оплату – печ.форма счета на оплату. Счет-фактура выд – печатная
форма счета-фактуры, Требование-накладная, Поступление товаров и услуг,
Реализация – все они содержат какие-либо важные печатные формы
документов.
Чем существенно применение документов отличается от применения
справочников. Документ ориентирован во времени, то есть имеет Дату,
номер, и упорядочен в соответствии с датой. Также в модуле документа
имеются точнее могут быть расположены предопределенные процедуры,
самая важная из них – это «ОбработкаПроведения».
В остальном с чисто программной точки зрения с документом можно
выполнять все те же действия что и со справочником.
Важные параметры и настройки документа:
Вкладка «Основные»
Имя – идентификатор документа. В текстах модулей – мы сможем работать с
конкретным документом только по его имени и обращаться к нему.
Вкладка «Данные»
Содержит 2 списка – для ввода названий реквизитов (для хранения
информации); список табличных частей, в которых значения представлены
набором строк, колонок, предназначены для хранения различных списков
информации в одном документе.
Движения, и настройки
Проведение-разрешить, запретить. – будет ли документ проводиться.
Оперативное проведение – разрешить, запретить
Удаление движений - удалять автоматически при отмене проведения,
удалять автоматически, не удалять автоматически. Эта настройка позволяет
контролировать удаление движений по документу в случае его отмены
проведения. Если автоматически – то система сама проследить об удалении
движений из регистров, в которые делает записи документ. Если вы хотите
сами позаботиться об удалении движений – тогда –не удалять
автоматически.
Формы – визуальное оформление документа, то что будет видеть
пользователь при создании, открытии документа.
Документ содержит в себе 3 программных модуля – их назначение
соответствует их использованию. (для написания текстов программ)
1. Модуль объекта
2. Модуль менеджера
3. Модуль формы документа (сколько будет форм – столько будет
модулей)
Модуль объекта – может содержать предопределенные процедуры
ОбработкаПроведения, ОбработкаЗаполнения, ПередЗаписью, ПриЗаписи.
Также 1С очень часто в типовых конфигурациях размещает здесь функцию
вывода печатной формы. Помимо предопределенных процедур –
программист может создавать свои процедуры и функции.
Модуль менеджера – может содержать в себе предопределенные
процедуры
ОбработкаПолученияДанныхВыбора,
ОбработкаПолученияФормы. Модуль менеджера позволяет расширять
функциональность объекта, а также используется в специфических случаях,
при обращении к модулю менеджера не создается объект.
Модуль формы документа – здесь будут собраны все процедуры и
функции, работающие с формой и по выбору пользователя. К примеру
действия пользователя, связанные с обработкой выбора значений в
элементе управления, процедуры – при нажатии на команды меню. Тут же в
текстах модуля формы – можно использовать вызов процедур из модуля
объекта.
Практическое занятие
Создаем первый документ – «Прием на работу», не будем пока вдаваться в
подробности настройки конкретного документа а просто добавим новый
объект «Документ» и назовем его как «ПриемНаРаботу», также в документе
на вкладке Данные добавим реквизит сотрудник – со ссылкой на справочник
сотрудники для выбора из справочника в документ ФИО сотрудника.
Важно: Запомните, т.к. реквизит Сотрудник документа «ПриемНаРаботу»
является ссылочным, то при изменении наименования (ФИО) в справочнике
– данные также изменятся во всех значениях использующих ссылку на
реквизит. Зачастую некоторые пользователи, не понимая смысла работы с
1С вместо ввода новых значений в справочник, изменяют текущее значение,
и выводят печатную формы. Бывают такие случаи)))
Теперь создаем новый реквизит Сотрудник на вкладке данные в верхней
части. Нажимаем кнопку зеленый плюс, впишите в поле Имя – название
реквизита (к этому реквизиту теперь можно будет ссылаться в программном
модуле). Выберите тип данных – СправочникСсылка.Сотрудники
Домашнее развлечение: В своей базе создайте справочник Должности,
введите несколько Должностей и создайте Новый реквизит в документе
Должность, тип данных – СправочникСсылка.Должности.
Дополнительные навыки
Итак, сегодня мы не зная операторов языка и других подробностей)
создадим свой первый небольшой код, - посмотрим как средствами языка –
сделать выборку данных из любого созданного нами справочника.
Для наших экспериментов создадим внешний отчет, и научимся
использовать внешние отчеты в 1С предприятии. Наш отчет ни какие
печатные формы использовать не будет, просто будет выводить в окне
сообщений информацию о списке сотрудников. Смотрите видео на сайте
http://prof1c.kklab.ru
1. Отчет (обычный) для обычного режима запуска
Создадим внешний отчет в конфигураторе, предварительно выбрав
Режим запуска – обычное приложение, обновить конфигурацию. Во
внешнем отчете создайте форму, перейдите в модуль формы.
В модуле формы вы видите уже заготовленную процедуру
Процедура КнопкаСформироватьНажатие(Кнопка)
// Вставить содержимое обработчика.
КонецПроцедуры
В том месте, где находится комментарий, предварительно очистив
текст с комментарием (что такое комментарий – это текст для описание
чего-либо, он не определяется как какой-либо оператор,
соверщающий действия и просто используется в качестве какой-либо
подсказки или текста, для того чтобы не забыть что вы хотели сделать)
Любой текст помеченный в начале строке // будет считаться
комментарием, даже если после этих символов будут стоят операторы
языка.
Напишем текст
Спр = Справочники.Сотрудники;
Выборка = Спр.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование);
КонецЦикла;
Общий вид созданного нами кода
Процедура КнопкаСформироватьНажатие(Кнопка)
Спр = Справочники.Сотрудники;
Выборка = Спр.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование);
КонецЦикла;
КонецПроцедуры;
Что это все обозначает:
Создали переменную Спр, которая будет содержать в себе ссылку на
объект справочник Сотрудники, тем самым получив данные к
свойствам объекта, которые вы можете увидеть сейчас написав сразу
после Спр точку Спр.
В большинстве своем такие подсказки очень хорошо помогают для
быстрого написания кода, но иногда бывают моменты когда нельзя
воспользоваться подсказкой, поэтому учитывайте этот момент.
Теперь для того чтобы получить нам возможность выборки всех
элементов справочника создадим с вами еще одну переменную с
названием Выборка = Спр.Выбрать();
Для того чтобы получить доступ к элементам справочника мы
используем цикл Следующий.
Пока
И последнее выводим теперь данные из реквизита Наименование
справочника,
используя
оператор
языка
Сообщить(«Текст
сообщения»); который выводит внизу в окно сообщений текст, в
качестве
параметра
текст
используем
данные
свойства
Выборка.Наименование. Вы можете поэкспериментировать с этим
оператором подставив в текст Сообщения следующую конструкцию.
Сообщить(«Сотрудник »+Выборка.Наименование+ «»);
В примерах текста здесь и далее
ВАЖНО: Возможности языка 1С не ограничены выбором одного
свойства и вы могли написать в тексте модуля на 1 строку меньше, к
примеру использовав такую конструкцию:
Выборка = Справочники.Сотрудники.Выбрать();
В основном, использование длинных конструкций не рекомендуется,
т.к. это увеличивает время работы программы, но если без этого не
обойтись – используйте.
2. Отчет для режима – Управляемое приложение.
Для того, чтобы создать аналогичный отчет для управляемого приложения
придется немного попотеть. Чем отличается использование режима
Управляемое приложение от обычного приложения. При использовании
управляемого приложения – необходимо четко разграничивать код по
разным участкам) – где будет выполняться код на клиенте (в клиентском
приложении) или на сервере (где лежит база данных), хотя для вас сейчас
нет разницы потому что наша база лежит с вами на том же компьютере на
котором мы запускаем клиентское приложение, но по умолчанию 1с
разделяет такие понятие и для нас запуск на отладку на этом же компьютере
где находится ИБ – одинаково, но 1С будет считать что ИБ лежит на сервере,
а запуск 1С:Предприятия происходит на клиенте.
Для того чтобы компилятору 1С дать понять что является клиентским
участком кода и выполняется на клиенте, а что будет выполняться на сервере
существуют директивы компилятора. Для выполнения процедуры на сервере
перед началом процедуры мы напишем
&наСервере
А то что будет выполняться на клиенте пишем
&наКлиенте
Отличие форм управляемых от форм обычного приложения.
Как вы уже могли заметить формы в управляемом приложении строятся по
особому отличительному принципу чем в обычном. К примеру в обычной
форме вы с легкостью можете разместить любой элемент управления, не
заморачиваясь, с использованием различных привязок. Но в управляемом
приложении «где-попало» вы не сможете разместить элемент управления –
все элементы заранее подчиняются своим особым и ведомым только им
правилам. В нашем видео вы могли заметить как на форме появилась кнопка
– а появилась она перетаскиванием из верхнего окна форма в окно с самой
формой.
Текст процедуры вы можете скопировать из текста обычной формы,
предварительно написав директиву компилятора – выполняется на сервере
(&наСервере). И далее на клиенте мы просто вызываем процедуру,
выполняющуюся на сервере. СформироватьСписок_на_Сервере();
&НаКлиенте
Процедура СформироватьСписокСотрудников(Команда)
// Вставить содержимое обработчика.
СформироватьСписок_наСервере();
КонецПроцедуры
&наСервере
Процедура СформироватьСписок_наСервере()
Спр = Справочники.Сотрудники;
Выборка = Спр.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование);
КонецЦикла;
КонецПроцедуры;
Дополнительные материалы по Сессии №3, а также видео по созданию справочников вы можете скачать
у нас на сайте http://prof1c.kklab.ru
Сессия №4
Описание основных понятий группы «Общие».
Самая интересная группа в конфигураторе, которая за последнее время, с
момента выхода версии 8.2 разрослась очень сильно)).
Общие модули
Итак, давайте начнем с Общих модулей. Общие модули – для чего. Для
небольших разработок и небольшой конфигурации – данный способ
хранения процедур и функций не очень привлекателен, но в типовых
конфигурациях без общих модулей не обходится ни один документ и
практически ни один отчет.
Общие модули содержат текст процедур и функций часто используемых во
многих объектах конфигурации, либо вызовы каких-то функций, которые
можно и нужно применять очень часто. Обращение к общим модулям из
текстов объектов происходит по названию общего модуля и через точку
обращение к процедуре или функции этого модуля.
Подсистемы
В режиме управляемого приложения концептуально изменяется
расположение элементов управления и объектов. Главное окно
1С:Предприятия 8.2 в режиме управляемого приложения представляет собой
обычное серое окно, включающее в себя разделы. Каждый раздел можно
считать рабочим местом. Каждая подсистема соответствует разделу. В нашей
конфигурации мы не использовали понятие раздел и подсистемы, но
возможно было вынести в отдельные подсистемы(разделы) объекты
конфигурации – для удобной работы пользователя.
Параметры сеанса
В принципе – можно обойтись без использования этого объекта, но если
он есть значит и нужно знать, для чего он необходим. В типовых
конфигурациях ПараметрыСеанса используются к примеру, для быстрого
получения имени текущего пользователя информационной базы. При
открытии
1С:Предприятия
в
значение
ПараметрыСеанса.ТекущийПользователь передается значение имени
текущего пользователя.
Роли
Данный объект определяет список объектов к которым пользователь этой
роли может получать доступ – на чтение, редактирование, удаление данных.
Общие реквизиты
Механизм использования общих реквизитов позволяет создать реквизит,
который может быть использован во всех объектах конфигурации.
Возможное использование
- создание реквизита организация при
многофирменном учете. Создайте общий реквизит организация – и его
можно будет использовать во всех объектах конфигурации. Смотрите видео.
Важно – доступно в режиме управляемого приложения.
Если программист хочет ограничить использование общего реквизита в
каких-либо объектах – необходимо использовать свойство Состав, в котором
указать к каким объектам применим общий реквизит.
Планы обмена
Из самого названия уже понятно, что эти объекты необходимы для обмена
данными. Содержат информацию об узлах, участвующих в обмене;
определяют состав данных, которыми будет производиться обмен.
Критерии отбора
Используются для организации отбора
хранящейся в базе по некоторым критериям.
различной
информации,
Подписки на события
Подписки на события позволяют создавать обработчики каких-либо
предопределенных событий для объектов конфигурации. К примеру
«ПриЗаписи» документа прием на работу будет выводиться сообщение
«документ записан». В качестве обработчика может выступать процедура
определенная в общем модуле. В целом механизм очень нужный, полезный
и вам следует в дальнейшем с ним ознакомиться.
Регламентные задания
Позволяют автоматически запускать и выполнять процедуры на
встроенном языке по расписанию. Для каждого регламентного задания
может быть задано расписание, в соответствии с которым регламентное
задание будет автоматически запущено на исполнение. В системе
1С:Предприятие 8 поддерживаются однократные и периодические
расписания. Можно задать дату начала и окончания выполнения, дневное,
недельное и месячные расписания. Расписание можно задать как на этапе
конфигурирования, так и на этапе выполнения (в режиме 1С:Предприятие)
Функциональные опции
Позволяет сделать настройки, которые могут использоваться или не
использоваться в зависимости от потребностей пользователя или
организации. К примеру если организация всегда ведет упрощенный
учет(УСН), то применение параметры НДС в документах не нужно. При
подключении этой опции – НДС будет виден в документах.
Параметры функциональных опций
Позволяют создавать функциональные опции, результат работы
которых задан не жестко (один раз при внедрении), а может изменяться
в зависимости от данных, хранящихся в информационной базе (в
зависимости от значения параметра функциональной опции)
Хранилища настроек
Позволяют разработчику создавать собственные механизмы хранения
настроек, в тех случаях, когда возможности стандартного механизма
хранения настроек недостаточны
Общие формы
Содержит список общих форм, которые возможно использовать в других
объектах конфигурации, вызывая из модулей. Если для некоторых объектов
вашей конфигурации есть какая-либо общая форма, к примеру, позволяющая
загружать файлы и прикреплять к документам, - то почему бы эту форму не
вынести из каждого объекта(документа или справочника) и сделать одну
общую для них формы.
Общие команды
Команда – это объект конфигурации, с помощью которого разработчик
может описывать действия, предназначенные для выполнения
пользователем. Общие команды – соответственно могут быть вызваны из
объектов конфигурации (к примеру, документов).
Группы команд
Группы команд описывают расположение команд. Категории – Панель
навигации; Панель навигации; Панель навигации формы; Панель действий;
Командная панель формы.
Интерфейсы
Описывают видимый пользователем интерфейс – меню, команды, кнопки.
Общие макеты
Печатные формы, вызываемые из других объектов.
XDTO-пакеты
XML Data Transfer Objects (XDTO). Предназначены для обмена данными
между конфигурациями с разными структурами данных, обмена данными
на основе XML схем, создание собственной системы типов и значений
для обработки произвольных данных.
Web-сервисы и WS-ссылки
Web-сервис описывается набором операций. Каждая операция может
иметь некоторое количество параметров для передачи данных Webсервису и получения возвращаемых значений. Типы параметров и
возвращаемых значений Web-сервисов описываются с помощью
механизма XDTO (XML Data Transer Objects).
WS-ссылка представляет собой WSDL описание веб-сервиса,
импортированное из указанного источника. WS-ссылка недоступна для
редактирования, однако можно просмотреть ее структуру и структуру
типов данных, которые используются для описания параметров и
возвращаемых значений.
Элементы стиля
Стиль, цветовые схемы, в дальнейшем используемые в других объектах
конфигурации. Задают Вид -> Цвет, шрифт, рамка.
Стиль
Доступен только в режиме – обычное приложение. Позволяет настраивать
стиль приложения, цвет шрифта, цвет фона, цвет вывода строк в макетах и
т.д.
Языки
Список языков в конфигурации, по умолчанию Русский, ru. Возможно
написание конфигураций для использования с другими языками. Для этого в
названиях (строках) дублируется описание на нескольких языках.
Сессия №5
Учимся выборкам с использованием операторов языка и языка запросов.
Итак, давайте сегодня потренируемся различным выборкам, а также
выборкам, построенным на языке запросов. Существует множество
различных выборок и перебор их в цикле. Выборки с использованием языка
запросов – работают быстрее, чем выборки с использованием языка 1С.
Выделим несколько важных выборок, которые нам пригодятся.
Выборка документов. Выборка строк табличных частей документов
Выборка элементов
справочников.
справочника. Выборка строк табличных
частей
Итак для того, чтобы выбрать список документов за определенный период
используйте следующий алгоритм:
ДатаН="20120101";
ДатаК="20120731";
Док = Документы.ПриемНаРаботу;
Выборка = Док.Выбрать(ДатаН,ДатаК);
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Ссылка);
КонецЦикла;
Итак, в переменную Док получаем объект документа «ПриемНаРаботу».
Затем используя свойство объекта Выбрать(ДатаС, ДатаПо) – выбираем
документы за период с «ДатаН» по «ДатаК». Т.к. документов может быть не
один и не два, то используем цикл, пока выборка будет содержать
следующий документ – выполнять цикл с выводом ссылки документа.
Обратите внимание на формат записи даты в 1С – сначала год, затем месяц и
число.
Такую выборку возможно применять, если вам необходимо построить
реестр документов, или выбрать все документы за период, с тем чтобы
прочитать какой-либо реквизит документа.
Различные варианты: Каждый документ имеет стандартные реквизиты, такие
как Дата, Номер; свойства - Проведен, ПометкаУдаления, Ссылка,
ПолучитьОбъект.
Чтобы в цикле выборки получить доступ к дате документа укажите через
точку: Выборка.Дата, также и к номеру Выборка.Номер
Для того чтобы сообщить пользователю (вывести) данные только по
проведенным документам используйте свойство Проведен, возвращает
значение либо «Истина»-если проведен, либо «Ложь»-если не проведен.
ДатаН="20120101";
ДатаК="20120731";
Док = Документы.ПриемНаРаботу;
Выборка = Док.Выбрать(ДатаН,ДатаК);
Пока Выборка.Следующий() Цикл
Если Выборка.Проведен = Истина Тогда
Сообщить(Выборка.Ссылка);
КонецЕсли;
КонецЦикла;
Теперь обратимся к выборке строк табличной части документа.
ДатаН="20120101";
ДатаК="20120731";
Док = Документы.НачислениеЗаработнойПлаты;
Выборка = Док.Выбрать(ДатаН,ДатаК);
Пока Выборка.Следующий() Цикл
Если Выборка.Проведен = Истина Тогда
ТЧСотр = Выборка.СотрудникиОрганизации;
Для каждого Стрка из ТЧСотр Цикл
Сообщить(Стрка.Сотрудник);
КонецЦикла;
КонецЕсли;
КонецЦикла;
Выводим всех сотрудников из табличной части проведенного документа
НачислениеЗаработнойПлаты. Переменная ТЧСотр содержит объекттабличную часть текущего документа выборки.
Если необходимо выбрать табличную часть какого-то заранее известного
документа, то это можно сделать так:
Док = Документы.НачислениеЗаработнойПлаты.НайтиПоНомеру(«000000001»);
ТЧСотр = Док. СотрудникиОрганизации;
Для каждого Стрка из ТЧСотр Цикл
Сообщить(Стрка.Сотрудник);
КонецЦикла;
В примерах здесь и далее мы показываем кавычку вот так «, однако в 1С кавычка – это “. Имейте это ввиду при
программировании
Справочники
Выборка элементов справочника
Спр = Справочники.Сотрудники;
Выборка = Спр.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование);
КонецЦикла;
И выборка строк табличной части элемента справочника.
Спр = Справочники.Сотрудники;
Выборка = Спр.Выбрать();
Пока Выборка.Следующий() Цикл
ТЧВидыНач = Выборка.Начисления;
Для каждого Стр из ТЧВидыНач Цикл
Сообщить(Стр.ВидНачисления);
КонецЦикла;
КонецЦикла;
Если необходим доступ к конкретному элементу справочника – то доступ
возможен при использовании следующих конструкций языка:
Спр = Справочники.Сотрудники;
ТекЭлемент
= Спр.НайтиПоКоду(«000000001»);
ТекЭлемент2 = Спр.НайтиПоНаименованию(«Иванов Иван Иванович»);
Выборки с использованием языка запросов
Для того, чтобы лучше понимать что происходит)) и смотреть результаты
запроса сразу после их выполнения используйте в своей работе т.н.
КонсольЗапросов, которую можно скачать по ссылке (разработанная под
режим управляемое приложение)
http://nashe1c.ru/materials-view.jsp?id=307
или у нас на сайте
http://prof1c.kklab.ru/ConsSel_Managed_8_2.epf
или Консоль запросов для обычного приложения, созданную Павлом
Чистовым. Можете скачать её с сайта автора http://chistov.spb.ru/publ/2-1-0-9
или у нас на сайте http://prof1c.kklab.ru/console.epf
Итак откроем консоль запросов (для управляемого приложения) из
1С:Предприятия, - не из конфигуратора.
В правой части, где можно вводить текст пишем
ВЫБРАТЬ
*
ИЗ
ДОКУМЕНТ.ПриемНаРаботу
И нажимаем кнопку «Выполнить». Тут же видим внизу окошка – результат
выполнения запроса.
Что мы сделали – мы выбрали на языке запросов * (все реквизиты)
документов ПриемНаРаботу (всех документов, имеющихся в ИБ)
Та же самая выборка что и в отчете (который мы создавали в предыдущей 8
сессии), но выполненная на языке запросов, к тому же быстрее чем при
помощи языка 1С, но … здесь мы не ограничиваем выборку и выбираем все
реквизиты и все документы, давайте будем выбирать только то, что нужно
для нашей печатной формы – давайте напишем с вами:
ВЫБРАТЬ
Ссылка,
Сотрудник
ИЗ
Документ.ПриемНаРаботу
Теперь мы ограничили выборку двумя реквизитами Ссылка(на документ) и
Сотрудник, как же теперь ограничить её еще и по дате.
ВЫБРАТЬ
Ссылка,
Сотрудник
ИЗ
Документ.ПриемНаРаботу
ГДЕ
Документ.ПриемНаРаботу.Дата Между &ДатаНачала и &ДатаОкончания
В консоле запросов на вкладке Параметры запроса нажмите кнопку
«Заполнить». Вы получите параметры из запроса «ДатаНачала» и
«ДатаОкончания»
Более подробно написание текстов на языке запросов и использование их в
текстах модулей – мы рассмотрим подробнее в следующих сессиях.
Сессия №6
Первый запрос. Язык запросов. Как использовать.
Для полного понимания работы 1С, рассмотрим язык запросов. Язык
запросов – это главное из всех знаний в 1С. Тем, кто знаком с sql – будет
намного проще разобраться в текстах запросов. Итак
Общая конструкция для создания запроса в модуле.
Запрос = Новый Запрос;
Запрос.Текст = «ТекстЗапроса»;
Результат = Запрос.Выполнить();
ТаблицаРезультата = Результат.Выгрузить();
Итак, переменная Запрос содержит объект запрос. Для того чтобы запрос
был выполнен ему необходим текст запроса. Текст запроса составляется с
использованием специального языка – языка запросов. Для тех, кто знаком с
mysql, sql, и другими разновидностями языка sql – вам будет проще
создавать запросы.
В предыдущей сессии мы рассмотрели с вами полезную обработку, такую
как консоль запросов и пробовали создать первый текст запросов.
На самом деле все очень просто. Текст запроса, созданный в консоли
запросов – практически готов для использования его в модуле. Вы видите
такую конструкцию
Запрос.Текст = «ТекстЗапроса»;
Вот сюда–то мы с вами и будем вставлять наш текст запроса, созданный
нами в консоли, немного модифицировав его.
Получаем
Запрос = Новый Запрос();
Запрос.Текст ="ВЫБРАТЬ
| *
|
| ИЗ
| Документ.ПриемНаРаботу
|
| ГДЕ
| Документ.ПриемНаРаботу.Дата Между &ДатаНачала и &ДатаОкончания";
Запрос.УстановитьПараметр("ДатаНачала",Отчет.ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания",Отчет.ДатаОкончания);
Рез=Запрос.Выполнить();
ТаблицаЗн = Рез.Выгрузить();
Когда копируем запрос из консоли, не забываем использовать знак |, для
переноса на следующую строку текста запроса, если же хотите можете
расположить весь запрос в одну строку, но во всех типовых конфигурациях,
да и не только типовых используют такое очень удобное и наглядное
написание текста запроса.
Внимание: Данное занятие мы проходим по онлайн тренингу – Обучение
программированию в 1С, если у вас есть навыки по созданию отчетов –
используйте следующий пример.
Давайте возьмем отчет, созданный нами ранее и попытаемся заменить
использование операторов языка 1с в части выборки на выборку из запроса.
Надеюсь, вы уже вставили его в конфигурацию, чтобы не дублировать работу
сначала во внешнем отчете, а затем еще и в отчете в конфигурации. Откроем
отчет и найдем в тексте то место, где мы используем выборку из документов.
Внимание: Если вы уже удалили файл внешнего отчета – сохраните отчет из
конфигурации во внешний отчет. Он нам понадобится для эксперимента.
Док = Документы.ПриемНаРаботу;
Выборка = Док.Выбрать(Отчет.ДатаНачала,Отчет.ДатаОкончания);
Пока Выборка.Следующий() Цикл
Область2.Параметры.НаименованиеДок = Выборка.Ссылка;
Область2.Параметры.Сотрудник
= Выборка.Сотрудник;
Результат.Вывести(Область2);
КонецЦикла;
Вставим наш запрос и сопутствующие операторы в текст модуля перед
строкой:
Док = Документы.ПриемНаРаботу;
И изменим текст выборки на выборку из таблицы значений, получаемой из
запроса:
Для каждого Стрка из ТаблицаЗн Цикл
Область2.Параметры.НаименованиеДок = Стрка.Ссылка;
Область2.Параметры.Сотрудник
= Стрка.Сотрудник;
Результат.Вывести(Область2);
КонецЦикла;
Имеем
с
вами
такой
вот
СформироватьОтчетНаСервере()
результат
–
текст
&наСервере
Процедура СформироватьОтчетНаСервере()
Объект = РеквизитФормыВЗначение("Отчет");
Макет
= Объект.ПолучитьМакет("Макет");
Область1 = Макет.ПолучитьОбласть("Шапка");
Область2 = Макет.ПолучитьОбласть("Данные");
Результат.Очистить();
Область1.параметры.ДатаНачала = Отчет.ДатаНачала;
Область1.Параметры.ДатаОкончания = Отчет.ДатаОкончания;
Результат.Вывести(Область1);
Запрос = Новый Запрос();
процедуры
Запрос.Текст ="ВЫБРАТЬ
| *
|
| ИЗ
| Документ.ПриемНаРаботу
|
| ГДЕ
| Документ.ПриемНаРаботу.Дата Между &ДатаНачала и &ДатаОкончания";
Запрос.УстановитьПараметр("ДатаНачала",Отчет.ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания",Отчет.ДатаОкончания);
Рез=Запрос.Выполнить();
ТаблицаЗн = Рез.Выгрузить();
Для каждого Стрка из ТаблицаЗн Цикл
Область2.Параметры.НаименованиеДок = Стрка.Ссылка;
Область2.Параметры.Сотрудник
= Стрка.Сотрудник;
Результат.Вывести(Область2);
КонецЦикла;
Результат.Показать("Отчет по документам");
КонецПроцедуры
Информация из тренинга 1С Обучение программированию
Теперь давайте всё-таки с вами убедимся, что при использовании запросов
скорость выполнения текста программы больше чем при использовании
операторов языка 1С. То есть при использовании запросов формирование
нашего отчета должно ускориться. А для этого нам понадобится первый
отчет, выполняющий выборку с использованием операторов языка и второй
который мы сейчас нарисовали и условились о том, что он лежит в нашей
конфигурации.
Итак, я проверил на время выполнения эти два отчета и оказалось, что
процедура, использующая запрос выполняется быстрее процедуры,
использующей операторы языка 1С.
Сессия №7
Функции работы со строками. Массивы. Структура и Соответствие
Очень часто в практическом программировании необходима обработка
строк, разделение строк по пробелу, запятой, сокращение строк, убрать
пробелы в начале и конце строки, заменить в строке одни символы на
другие.
Язык 1С обладает небольшим, но очень полезным набором таких
функций.
Итак какие же функции есть в 1С для обработки строк.
СтрДлина – Получить длину строки
СокрЛ - Отсекает незначащие символы, стоящие слева от первого значащего
символа в строке.
СокрП - Отсекает незначащие символы, стоящие справа от последнего
значащего символа в строке
СокрЛП - Отсекает незначащие символы, стоящие слева от первого
значащего символа в строке, и пробелы, стоящие справа от последнего
значащего символа в строке.
Лев – Выбирает первые слева символы строки
Прав – Выбирает последние справа символы строки
Сред – Выбирает строку символов, начиная с указанного номера строки, и
указанным количеством символов.
Найти – Находит вхождение искомой строки как подстроки в исходной
строке.
ВРег – Преобразует все символы строки в верхний регистр
НРег – Преобразует все символы строки в нижний регистр
Символ – Преобразует код символа в строку, содержащую символ.
КодСимвола – Получает код символа , расположенного в переданной строке,
в позиции с указанным номером.
ПустаяСтрока – Проверяет строку на наличие значащих символов.
СтрЗаменить – Находит в исходной строке все вхождения подстроки поиска и
заменяет ее на подстроку замены
СтрЧислоСтрок - Позволяет посчитать число строк в многострочной строке.
Строки в многострочной строке разделены символами перевода строк
(Символы.ПС).
СтрПолучитьСтроку – Получает строку многострочной строки по номеру.
СтрЧислоВхождений –
исходной строке.
Вычисляет число вхождений подстроки поиска в
ТРег – преобразование первого символа строки к титульному регистру.
А = «Строка»;
Длина = СтрДлина(А);
ФИО = "Иванов Иван Иванович";
Пробел = Найти(ФИО, " "); //ищем пробел
Фамилия = Сред(ФИО,1,Пробел-1); //Фамилия
ОстатокСтроки = Сред(ФИО,Пробел+1,СтрДлина(ФИО)-Пробел);
Пробел = Найти(ОстатокСтроки," "); //ищем пробел в остатке строки
Имя
= Сред(ОстатокСтроки,1,Пробел-1);
Отчество= Сред(ОстатокСтроки,Пробел+1,СтрДлина(ОстатокСтроки)-Пробел);
Сообщить("Фамилия: "+Фамилия);
Сообщить("Имя: "+Имя);
Сообщить("Отчество: "+Отчество);
Сообщить("-----------------------------");
Сообщить("Сокр(ФИО):"+Фамилия+" "+ЛЕВ(Имя,1)+"."+Лев(Отчество,1)+".");
Сообщить("Сокр:
"+Лев(Имя,1)+"."+Лев(Отчество,1)+"."+Фамилия);
Эти и дополнительные материалы а также видеоуроки вы получите на нашем
онлайн тренинге – «Обучение программированию в 1С 8.ххх».
Присоединяйтесь, мы вас ждем
http://prof1c.kklab.ru