Цель лекции: научиться снабжать
В предыдущей лекции мы разрабатывали документ, которым реализуется начисление заработной платы. Несложно было заметить, что если предложить заполнить этот документ пользователю, которому незнакома наша конфигурация, у него, скорее всего, возникнут вопросы. Среди них, например, могут быть следующие:
Как правило, такая же ситуация характерна и для реально применяющихся конфигураций. Не всегда интуитивно понятно, как именно следует заполнять то или иное поле, как пользоваться теми или иными документами. Для того чтобы помочь пользователю освоить конфигурацию, научиться эффективно и правильно ей пользоваться, существует возможность включения в состав конфигурации
Для того, чтобы добавить в
(рис 2.1) Включение справочной информации в справку программыДалее следует создать главу справки, посвященную документу. Для того чтобы перейти к окну редактирования справочной информации, нужно нажать на кнопку Справочная информация, которая расположена на той же вкладке Прочее.
При нажатии на эту кнопку будет открыто окно
(рис 2.2) HTML-редактор при редактировании справкиДокумент автоматически сохраняется при закрытии.
Мы ввели в документ руководство по использованию документа, теперь посмотрим, как получить доступ к справке по документу из режима 1С:Предприятие.
Как уже было сказано, при установке флажка .
(рис 2.3) Новая глава справочной системыА именно, здесь, в дополнение к уже существующему стандартному разделу 1С:Предприятие, появляется раздел Конфигурация, который содержит нашу справку.
Получить доступ к этой информации можно и из окна документа .
(рис 2.4) Вызов справки из окна списка документовЗдесь для доступа к справке служит кнопка со значком вопроса в командной панели формы. При нажатии на эту кнопку появится окно .
(рис 2.5) Окно справочной информацииПользователь нашей конфигурации сможет получить доступ к этому разделу справки, воспользовавшись системой поиска по справке. Для этого ему нужно будет выполнить команду главного меню программы .
(рис 2.6) Результаты поиска по справкеВ обработке мы будем создавать записи
Напомним, что в справочнике ГрафикиРаботы есть реквизит Примечание. Этот реквизит, для правильной работы нашей обработки, должен будет содержать номера дней в неделе, которые мы хотим, в соответствии с выбранным графиком, установить как выходные. Так, для графика, предназначенного для шестидневной рабочей недели, мы должны будем указать в реквизите Примечание номер выходного дня. Это - воскресенье, то есть - день №7. Для пятидневного графика это будут суббота и воскресенье, то есть - дни 6 и 7.
Создадим новую обработку, назовем ее ЗаполнениеГрафиков.
На вкладке Данные добавим следующие реквизиты:
| НачалоПериода | - тип Дата, состав даты - Дата ; |
| КонецПериода | - тип Дата, состав даты - Дата ; |
| График | - тип СправочникСсылка.ГрафикиРаботы ; |
Создадим форму обработки, укажем, что реквизитам формы должны соответствовать поля ввода, рис 2.7.
(рис 2.7) Форма обработки заполнения графиковТеперь введем код, который будет выполняться при нажатии на кнопку Выполнить.
Процедура КнопкаВыполнитьНажатие(Кнопка)
ТекущаяДата = НачалоПериода;
ДлинаСутокВСекундах = 60*60*24;
Пока ТекущаяДата<=КонецПериода Цикл
ЗаписьРегистра = РегистрыСведений.РабочиеДниПоГрафику.СоздатьМенеджерЗаписи();
ЗаписьРегистра.Дата = ТекущаяДата;
ЗаписьРегистра.График = График;
ЗаписьРегистра.РабочийДень = ?(Найти(График.Примечание, ДеньНедели(ТекущаяДата))>0,0,1);
ЗаписьРегистра.Записать();
ТекущаяДата = ТекущаяДата+ДлинаСутокВСекундах;
КонецЦикла;
КонецПроцедуры
Рассмотрим особенности этого кода.
Переменная ТекущаяДата будет использована в цикле при заполнении реквизита Дата записи регистра.
Переменная ДлинаСутокВСекундах применяется для хранения количества секунд в сутках. На это значение будет увеличиваться переменная ТекущаяДата в цикле.
С помощью переменной ЗаписьРегистра мы будем создавать записи в регистре. В каждой итерации цикла создается новая запись.
Заполнение реквизитов Дата и График записи регистра вряд ли вызовет дополнительные вопросы. А вот заполнение реквизита РабочийДень потребует некоторых объяснений.
?(Найти(График.Примечание, ДеньНедели(ТекущаяДата))>0,0,1)
Здесь мы используем сокращенную форму записи оператора Если. Его можно расшифровать следующим образом: ЕСЛИ(УСЛОВИЕ, ТОГДА, ИНАЧЕ).
Если условие выполняется, вместо оператора подставляется то, что указано в разделе Тогда, если не выполняется - то, что указано в разделе Иначе.
Команда Найти(График.Примечание, ДеньНедели(ТекущаяДата))>0 позволяет проверить, есть ли в реквизите Примечание графика, по которому идет заполнение регистра, номер дня недели текущей даты, который мы получаем с помощью функции ДеньНедели. Эта функция возвращает номер дня недели - 1 - для понедельника, 2 - для вторника, и так - до 7 - для воскресенья.
В итоге, если в нашей конструкции будет проверен день, который является по графику выходным, в реквизит РабочийДень записи регистра будет записан 0, если нет - 1.
Команда Записать() записывает сформированную запись.
Команда ТекущаяДата = ТекущаяДата+ДлинаСутокВСекундах позволяет перейти к следующему дню и цикл повторяется.
Проверим правильность работы только что созданной обработки. Прежде чем запускать ее, уточним, верно ли заполнен реквизит .
(рис 2.8) Результаты работы обработки Заполнение графиковВ процессе разработки
Искать ошибки можно с помощью отладчика. При
Для того чтобы получить возможность пользоваться инструментами
(рис 2.9) Кнопка запуска конфигурации в режиме отладкиВнешне работа конфигурации в
Рассмотрим некоторые методы
Если в программе происходит ошибка, которая делает дальнейшее исполнение программы невозможным, система выдает сообщение об ошибке. Смоделируем эту ситуацию. Откроем модуль объекта для недавно разработанного документа НачислениеЗарплаты и добавим в его начало такой код, рис 2.10:
//Начало ошибочного кода НоваяПеременная=1/0; //Окончание ошибочного кода
(рис 2.10) Строка, приводящая к ошибкеТеперь запустим конфигурацию (в данный момент неважно, в каком режиме) и, откроем существующий (или создадим новый) документ НачислениеЗарплаты и попытаемся его провести. Ошибочный код находится в процедуре, которая выполняется при
Различные ошибки вызывают различные сообщения, в нашем случае можно наблюдать следующее сообщение, рис 2.11.
(рис 2.11) Окно с сообщением об ошибкеНажав на кнопку .
(рис 2.12) Подробное описание ошибкиНажатие на кнопку Закрыть позволяет проигнорировать ошибку, кнопка Конфигуратор открывает Конфигуратор, а кнопка Завершить работу завершает работу программы.
После нажатия на кнопку Конфигуратор запускается Конфигуратор, в котором открыт модуль с ошибкой, курсор установлен на ошибочной строке.
Если ошибочным окажется код, который исполняется в обычном режиме работы 1С:Предприятие, произойдет то же самое.
Удалим "ошибочный" код из текста модуля.
Мы смоделировали простую и понятную ошибку, исправить ее довольно просто. При реальной работе с конфигурациями, ошибки могут быть далеко не такими однозначными. Некоторые из них, например, неверный расчет какого-то показателя, можно обнаружить, лишь проанализировав состояние программы в том месте, где, предположительно, такая ошибка возникает. Сообщения об ошибках, подобные рассмотренному выше, а так же - появление неожиданных результатов работы программы - это сигнал для
Для того чтобы остановить выполнение программы в определенной строке, используют
Для того, чтобы установить
(рис 2.13) Точка останова в редакторе кодаНа месте щелчка появится большая красная точка - это и есть
Для того чтобы убрать
На обычной
(рис 2.14) Условие останова
(рис 2.15) Отключенная точка остановаВ модуле можно устанавливать столько
Удобным средством для управления
(рис 2.16) Список точек остановаИнструменты окна позволяют включать, отключать и удалять
Обратите внимание на то, что работать с
Когда код модуля открыт в отладчике после срабатывания
Итак, мы научились устанавливать и настраивать
После остановки программы можно быстро просматривать значения переменных, просто наводя на них курсор, рис 2.17.
(рис 2.17) Просмотр значения переменной Движение.ИсходныеДанныеВ подобном режиме можно просмотреть значения далеко не всех переменных, к этой возможности мы вернемся ниже.
После того, как программа остановлена, программист может проанализировать ее и продолжить дальнейшее исполнение. А вот здесь существует несколько альтернатив. Они доступны из меню .
(рис 2.18) Режимы исполнения модуля после остановки| Продолжить отладку | - выбор этой команды (или нажатие на F5 ) позволяет продолжить |
| Перезапустить | - эта команда нужна для перезапуска |
| Завершить | - завершает |
| Остановить | - "ручной" аналог срабатывания |
| Остановка по ошибке | - открывает окно, рис 2.19, которое позволяет задавать параметры остановки при возникновении ошибок, а так же - указывать тексты отдельных ошибок, при возникновении которых следует остановить |
(рис 2.19) Настройка остановки при возникновении ошибок| Подключение | - позволяет подключиться к так называемому предмету |
На рис 2.20 вы можете видеть часть меню Отладка, отвечающая за различные режимы пошагового (построчного) исполнения модуля после остановки. Обратите внимание на то, что при остановке выполнения модуля строка, которая будет исполнена следующей, обозначена желтой стрелочкой, которая находится там же, где расположены маркеры
(рис 2.20) Режимы пошагового исполнения модуля после остановки| Шагнуть в | - имеет смысл в том случае, если при построчном исполнении кода вы встретились с вызовом внешней процедуры (например, объявленной в общем модуле). Эта команда позволяет перейти к построчному исполнению вызываемой процедуры. Если выполнить ее для строки, в которой нет вызова внешней процедуры, код строки будет исполнен и маркер текущей строки (желтая стрелочка) переместится на следующую строку. |
| Шагнуть через | - в противоположность предыдущей команде, при встрече с вызовом внешней процедуры в отлаживаемом модуле, позволяет выполнить эту процедуру в обычном режиме и возвратиться к пошаговому выполнению отлаживаемого модуля. При выполнении строк модуля, не содержащих вызовов внешних процедур, аналогична предыдущей. |
| Шагнуть из | - если вы, отлаживая модуль, выполнили команду Шагнуть в и попали во внешнюю процедуру, но решили на каком-то этапе |
| Идти до курсора | - если сработала |
(рис 2.21) Результат выполнения команды Идти до курсора| Текущая строка | - эта команда показывает текущую строку выполнения отлаживаемого модуля - то есть ту, которая отмечена желтой стрелкой. На экране отображается окно модуля, при необходимости текст модуля прокручивается до нужной строки. |
Как мы уже говорили выше, во время прерывания работы программы на
При
Мы разместили
(рис 2.22) Точка останова в модулеВызвав окно .
(рис 2.23) Просмотр переменной в окне ВыражениеМы видим, что команда ДанныеБазы=Движение.ПолучитьБазу(Ресурсы, Измерения) записала в переменную ДанныеБазы некую таблицу значений. В окне Выражение можно просмотреть внутреннюю структуру этой таблицы, разворачивая свернутые группировки.
Для того, чтобы увидеть содержимое таблицы, можно воспользоваться кнопкой .
(рис 2.24) Просмотр переменной в окне ВыражениеЗдесь мы видим содержимое таблицы. Она содержит одну строку с индексом 0, поле Результат этой строки содержит значение 10000. В нашей программе эта строка содержит данные базы для расчета премии.
В окне Выражение можно выполнять команды встроенного языка. Например, выполним такую команду: ТипЗнч(Ресурсы). В окне мы увидим тип значения переменной Ресурсы, а именно - это массив.
Если мы хотим контролировать некоторый набор переменных (или свойств объектов), которые мы просматривали в окне Выражение, мы можем воспользоваться кнопкой этого окна Включить в табло.
Для того чтобы оценить функциональность этого инструмента, заполним документ .
(рис 2.25) Заполнение документа Начисление зарплатыВспомним, что
Включим в
ДанныеБазы[0].Результат Движение.ВидРасчета Движение.ИсходныеДанные
Ввести эти данные в
(рис 2.26) Значения переменных в табло, первая итерацияЗдесь мы видим, что на текущей итерации расчета в
(рис 2.27) Значения переменных в табло, вторая итерацияРезультаты нас так же устроили - они соответствуют ожидаемым. Если бы программа функционировала неверно - здесь могли бы быть другие данные, второй итерации цикла могло бы вообще не быть, возможны и многие другие ошибочные ситуации.
Еще один полезный инструмент, которым можно пользоваться при
(рис 2.28) Стек вызововЩелкнув мышью по строке с именем процедуры в окне Стек вызовов, можно перейти к строке в этой процедуре.
Еще одна полезная возможность отладчика заключается в
Для того, чтобы оценить "узкие места" в разрабатываемой конфигурации, можно воспользоваться инструментом .
(рис 2.29) Отчет о производительностиВ частности, нас интересует время, которое заняло выполнение операций. Сделав щелчок по строке отчета, можно перейти в модуль, в котором было выполнено действие, описанное в данной строке, рис 2.30. Здесь можно видеть информацию о времени выполнения каждой из строк.
(рис 2.30) Просмотр модуля после замера производительностиЕсли какие-либо команды занимают слишком много времени - можно задуматься об их оптимизации, о поиске альтернативных, более быстрых способов решения тех же задач.
В этой лекции мы ознакомились с приемами создания
Для данной лекции подготовлен видеоурок.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.