Я думаю многие из вас знакомы с файлом "ATT82PL" со страницы "Вопросы к аттестации" (можно скачать по ссылке http://www.1c.ru/rus/partners/training/questions.htm, либо из этой публикации). Но вот что интересно, даже те кто знает о существовании этого файла - не придают ему серьезного значения, а ведь именно он является "базой" для оценки ваших решений. Так давайте же повнимательнее взглянем на его содержание.
Перейдем сразу к п.3 Оценка результата выполнения задания. Как оценивается ваше задание? Максимальное количество баллов - 5, минимальное - 2.2, ниже 2.2 - это несдача. Экзаменатор будет вычитать из 5 (максимум) баллы за каждую допущенную ошибку. Допустим вы не успели решить задачу на Бизнес-процессы ("Задача не реализована целиком" - минус 1.5 балла) и без нужды выгрузили результат запроса в таблицу значений ("Выгрузка результата запроса в промежуточную таблицу (например, в таблицу значений) без необходимости" - минус 1 балл). Итого получается: 5 - 1.5 - 1 = 2.5, оценка "удовлетворительно" - экзамен сдан.
Список ошибок состоит 6 таблиц: общие ошибки, ошибки в Оперативном учете, ошибки в Бухгалтерском учете, ошибки в Сложных периодических расчетах, ошибки в Бизнес-процессах и управляемых формах. Рассмотрим по-порядку каждую таблицу. В скобках будет указано количество снимаемых баллов.
Общие для всех задач
Неоптимальность предлагаемого решения или невыполнение отдельных пунктов задания. Упрощение решаемой задачи. При затруднении в отношении определения упрощения или усложнения задачи рекомендуется уточнить требования у экзаменатора (0.5-3.0)
Очень важный пункт, за упрощение задачи экзаменатор имеет право сразу снять минус 3 балла, а это значит что экзамен уже не сдан (хотя на практике это редко происходит). Рекомендации: при очном сдаче – не стесняйтесь спросить у экзаменатора требования к задаче, при дистанционной сдаче – обязательно сделайте пояснительную записку, либо добавьте в код комментарии, для чего вы это делаете и что хотите получить. Много времени у вас нет, поэтому пишите кратко и по существу.
Не реализован приведенный в задании отчет (1.0)
Тут всё понятно, отчеты должны быть.
Форма приведенного в задании отчета не соответствует заданию (0.5-1.0)
Здесь имеется ввиду не форма как таковая, а то что отчет должен выводить нужные данные. А вот «красивости» отчета (колонки, заголовки, группировки) делайте когда есть время.
Механизм получения данных не соответствует заданию. Например, в задании может быть прямо указан механизм построения отчета с помощью компоновки данных, использования временных таблиц в обработке проведения документа и т.п. (1.0)
Все отчеты делайте с помощью СКД. Во всех обработках проведения используйте конструктор запроса. Единственное исключение - документ типа Приходная накладная, когда можно сделать движения обычным конструктором (это разрешается).
Получение расчетных данных не из регистра. Единственной достоверной информацией в системе учета следует считать информацию регистров. Информация из документов может рассматриваться лишь как вспомогательная и не может быть абсолютно достоверной. Например, при наличии документа (аналога ручной операции в бухгалтерском учете), позволяющего интерактивно вводить записи в регистр (3.0)
Если вы решаете задачу по оперативному учету – получайте данные из регистров накопления, по бухгалтерскому – из регистра бухгалтерии и т.д. Ни в коем случае не берите данные из документов! В реальной жизни это разрешается, а иногда даже и необходимо, на экзамене – храните информацию в регистрах и получайте её оттуда же. Например: документов может быть сегодня 3, а завтра – 30. А регистр по которому они делают движения – 1, таким образом, извлекая данные из регистра, уже не важно сколько в системе заведено документов, информация из регистра всегда будет актуальной.
Построенная в решении учетная схема принципиально не позволяет одновременно вывести в ноль все ресурсы регистра накапливающего информацию об остатках (0.5-2.0)
Ресурсы регистра (один или все) изменяются документами только "в одну сторону" (только в "+" или только в "-") (2.0)
Ресурсы регистра остатков (один или все) изменяются документами и в "+", и в "-", но движения с противоположным знаком для одного того же объекта учета выполняются с разными наборами значений измерений, что также не обеспечивает выведения остатков ресурсов «в ноль» (2.0)
Очень важные пункты. Подробнее об этом лучше узнать на курсах, приведу лишь несколько примеров:
1. Набор измерений расхода не соответствует набору измерений прихода. Например:
- приход - Товар1-Склад1-кол-во 5, сумма -10,
- расход - Товар1- кол-во 5, сумма -10, (не указан Склад1 при движении расход, а значит это совершенно «другая» запись, в регистре сейчас будет 2 записи, а должно быть 0).
2. Проблема списания копеек. Например:
приход - Товар1-Склад1-кол-во 5 – сумма -10,93
расход - Товар1- Склад1-кол-во 5 - сумма -10,92
Расход должен был вывести регистр в ноль, но этого не произошло, количество списали полностью, а сумму – нет. Формулу для списания копеек (если вы не знаете как это делается) можно найти практически в любой задаче по оперативному учету из тех что выкладывались здесь.
3. Еще один классический пример на котором попадаются новички в задачах где есть товары и услуги: в приходе нет проверки на запись услуг в регистр остатков, таким образом услуги начнут копиться в регистре. А это тоже не выведение регистра в ноль.
Всё перечисленное относится только к регистрам остатков, для регистров оборотов это не требуется.
Отсутствие в решении проверок на правильное заполнение ресурсов регистра, приводящее, например, к появлению отрицательных остатков товаров на складе. Наличие отрицательных значений ресурсов регистра допустимо, только если об этом явно сказано в задании или следует из логики учетной схемы, не противоречащей ситуации, возникающей в реальной практике ведения учета (1.0-2.0)
Есть задачи в которых предусматривается запись отрицательных значений, например 1.6 (из сборника задач), во всех остальных задачах нужно делать проверку остатков, которая в свою очередь не допустит появления отрицательных значений ресурсов в регистре.
Наличие ошибок в программном коде (0.25-3.0)
Обычно такие ошибки возникают при копипасте (скопировать-вставить), при проверке кода ошибок не возникает, а вот решение правильно не работает. В этом случае на отладку можно потратить очень много времени. Либо другой пример: вы скопировали код управляемой блокировки из одного документа в другой, но не проверили на что устанавливаете блокировку, в итоге получается что блокировка есть, но она не работает. Проверяйте каждую строку кода.
В задачах получения итоговой информации по остаткам использование информации по оборотам или наоборот (2.0)
Тут просто, если нужно получить на дату (момент) – это остатки, если за период – это обороты. Но иногда возникает затруднение, и для этих случаев есть общее правило: если вы не можете получить данные из оборотов – получайте из остатков, и наоборот.
В задачах получения итоговой информации использование прямого обращения к реальным таблицам регистра (1.5)
Берите информацию только из виртуальных таблиц, они специально были созданы для этого.
Если при проведении документа используются каким-то образом данные, считываемые из регистров, обязательно требуется предусмотреть получение таких данных на момент проведения документа (1.0)
Не используйте получение данных на Дату, только на МоментВремени(). Если нужно получить остатки с учетом движений документа, тогда используйте Границу: Новый Граница(МоментВремени()).
Конфигурация должна устойчиво работать при наличии дублей строк (номенклатуры или сотрудников или т.п.) в документах. Необходимо обеспечить корректное проведение документов при этом (0.5)
Типичный пример дубли строк в расходной накладной, если предварительно не сгруппировать строки – списание будет производиться неправильно.
Получение информации, хранящейся в информационной базе, (остатков, оборотов, данных базы, данных графика и т.п.) в цикле (2.0)
Здесь речь про запрос в цикле. Единственное место где он «разрешается» это расчет по приоритетам в задачах по сложным периодическим расчетам. Но, это достаточно специфическое место, и только условно можно сказать что там запрос в цикле.
Отсутствие значений параметров в виртуальной таблице или использование вместо них условия «ГДЕ» (2.0)
Если не задать параметры (отборы) на виртуальную таблицу – система возьмет всю таблицу целиком и начнет с ней работать, а таблица может быть очень большая. Тоже самое произойдет если использовать условие «ГДЕ» - сначала возьмется таблица целиком, и только потом к ней применится условие. То есть, и то и другое – совершенно не оптимально.
Отсутствие проверки на NULL (1.0)
Применяется при соединениях таблиц в запросах.
Использование менее эффективной методики проведения документов (1.0)
Речь о «старой» методике проведения. В случае если есть возможность использовать «новую» методику проведения – используйте её, есть нет возможности – используйте «старую». Например, при расчетах себестоимости всегда используется «старая» методика. Более подробно можно узнать на курсах, либо из книг.
Использование автоматических блокировок в транзакции или неправильное использование управляемых блокировок данных в транзакции при проведения документов (1.5)
На экзамене требуется показать умение работы с управляемыми блокировками, поэтому используйте их, и не забудьте поменять Режим управления блокировкой данных в свойстве конфигурации на Управляемый (в каркасной конфигурации стоит – Автоматический).
Оперативный учет
Задача не реализована целиком (3.0)
Автоматическая несдача экзамена.
Построение учетной схемы не на регистрах накопления (3.0)
Еще раз повторю, задачи по оперативному учету решаются на регистрах накопления, бухгалтерского – на регистре бухгалтерии, сложные периодические расчеты – на регистрах расчета (в некоторых задачах еще и на регистрах накопления – обороты).
В случае добавления новых регистров или реализации новых задач на существующих регистрах неверное определение вида регистра накопления (остатки, когда нужны обороты или наоборот) (3.0)
Изначально в каркасную конфигурации (используемую на экзамене) добавлен один регистр накопления – ОстаткиНоменклатуры (остатки). Если вы будете добавлять новый регистр, подумайте какую информацию он у вас будет хранить. Если то что не будет списываться (например продажи, их нужно просто накапливать), значит делайте вид регистра – обороты, если информация будет списываться (например заказы которые вы будете отслеживать, а потом погашать) – значит вид регистра будет остатки.
Использование итоговой информации регистров, полученной в форме документа, при его проведении (2.0)
В задаче может быть условие - вывести остатки номенклатуры в форму документа. Вы обращаетесь к регистру, извлекаете эти данные и показываете на форме. Если при проведении вы используете данные с формы – это будет грубейшей ошибкой, при проведении данные всегда должны браться непосредственно из регистра на МоментВремени(). Это гарантирует правильность полученных остатков (или оборотов).
Бухгалтерский учет
Задача не реализована целиком (3.0)
Несдача экзамена.
Построение учетной схемы не на регистрах бухгалтерии (3.0)
См.выше.
Используемая в решении учетная схема построена неправильно (0.5-2.0)
Все нужные проводки будут описаны в задании, тут будет сложно ошибиться. А вот с настройкой субконто, признаков учета счета, признаков учета субконто и т.д. – нужно быть повнимательнее.
Неверное использование принципа «двойной записи». Отсутствие двойной записи, когда она необходима или наличие в том случае, когда она не нужна. (2.0)
На экзамене всегда будет «двойная запись». Не забудьте поставить флажок «Корреспонденция» в настройках регистра бухгалтерии.
Создана лишняя аналитика (например, измерение регистра) (0.5)
О различиях между измерениями и субконто, назначение тех и других и прочее, рекомендую почитать в книге «Реализация прикладных задач в системе 1С Предприятие 8.2». По своему опыту скажу, что ни разу не использовал измерения в задачах.
У измерений и ресурсов регистра бухгалтерии неправильно расставлены флаги «балансовый» и настроены «признаки учета» (1.5)
Не реализована или реализована неправильно настройка «признаков учета субконто» (1.0)
На экзамене обязательно будут смотреть как настроены у вас ресурсы (если добавите измерения, то и на них посмотрят). Рассмотрим один пример: если вы добавите ресурс Количество и установите флаг Балансовый, учет количества будет вестись на всех счетах. А зачем вам это нужно, если количество требуется только на счете Товары например?! А потом количество у вас начнет накапливаться на тех счетах с которых оно не будет списываться, что приведёт к незакрытию счетов. Тоже самое касается и признаков учета. Более подробно об устройстве регистра бухгалтерии читайте в книге «Реализация прикладных задач в системе 1С Предприятие 8.2».
Хранение остатков в том случае, когда необходима информация только об оборотах. При построении учетной схемы использованы обычные (не оборотные) субконто или измерения регистра для хранения данных и контроля, оборотных по своей сути показателей (не требующих хранения остатков) (1.5)
Серьезная ошибка. Добавляя субконто определите требуется ли накапливать остатки в разрезе этого субконто. Если нужны только обороты – ставьте флажок «Только обороты» для вида субконто.
При получении итоговых данных из регистра бухгалтерии не учитывается корреспонденция счетов (1.5)
Один из примеров: при получении оборотов между счетами обязательно указывайте оба счета. И постарайтесь при получении данных не привязываться к типу документа, помните что экзаменатор может ввести ручную операцию и ваша схема перестанет работать.
Сложные периодические расчеты
Задача не реализована целиком (3.0)
Несдача экзамена.
Построение учетной схемы не на регистрах расчетов (3.0)
См.выше.
Неправильно настроены зависимости по вытеснению и по базе между видами расчета, использующимися в решении (1.0)
Более подробно вы познакомитесь с этим при решении расчетных задач.
Использование регистра расчета, обладающего «Периодом действия» для реализации учета по видам расчета, не обладающих «Периодом действия» (1.5)
Например, премия за период не обладающая периодом действия будет записываться регистр расчета Основные начисления (его как правило делают с периодом действия). Подобное использование видов расчета приводит к неоправданному увеличению объема базы, так как в таблице фактического периода действия (таблица для регистров расчета с периодом действия) будут создаваться дополнительные записи для этих премий. Более подробно можно узнать на курсах 1С.
Нет связи с графиком в регистре расчета или такая связь задана неверно. Например, в измерении вместо реквизита или наоборот. (1.0)
Тут довольно просто, какие измерения в регистре сведений Графики работы – такая и будет связь. Например, графики по сотрудникам – связь с измерением Сотрудник регистра расчета; графики по подразделениям – связь с измерением Подразделение РР; если графики обычные (пятидневка, шестидневка, два через два и т.д.) – связь через реквизит РР. Если графики например по подразделениям, и еще есть пятидневка для больничного – можно сделать связь с измерением Подразделение и добавить еще один ресурс в регистр сведений Графики работы; если графики по подразделениям, и еще несколько (или неизвестно сколько) других графиков (пятидневка, два через два и т.д.) – связь через реквизит РР составного типа.
Получение данных графика через таблицу регистра сведений (2.0)
Данные графика нельзя напрямую извлекать из регистра сведений, используйте виртуальную таблицу ДанныеГрафика.
В задачах получения расчетной базы неверно использована аналитика. Не используются или используются неправильно измерения регистра (1.0)
В задаче получения расчетной базы не оптимизирована скорость отбора по измерениям регистра расчета (0.5)
Правильно задавайте параметры виртуальных таблиц. Хотя обычно измерения основного и других регистров расчета полностью совпадают и с параметрами сложностей не возникает.
Получение расчетной базы через основную таблицу регистра расчета (2.0)
Для получения базы существуют специальные виртуальные таблицы, используйте их.
Неправильно настроена зависимость по ведущим видам расчета (1.0)
Ведущие – это те виды расчетов, изменение которых должно привести к перерасчету других видов расчета. Например, если есть премия от оклада, то оклад будет ведущим по отношению к премии.
Создание перерасчета в регистре, где не могут появиться данные перерасчета (1.0)
Какие нужно пересчитать виды расчета, там и нужно создавать перерасчет. Например, при изменении оклада нужно пересчитать премию, она хранится в ПВР Дополнительные начисления, этот ПВР связан с регистром Дополнительные начисления. Вот в этом регистре и нужно будет создать перерасчет.
При решении задачи перерасчетов неправильно настроены объекты перерасчета (например, измерения перерасчетов) (1.5)
Как правило там всё просто. Документ и вид расчета (которые нужно пересчитать) автоматически попадут в перерасчет, вам остается добавить измерения регистров расчета - Сотрудник (и Подразделение если есть) и данные ведущих регистров.
Получение данных для проведения расчетов на основании незаписанных или не рассчитанных данных (1.0)
Все расчеты должны проводиться на основании данных полученных из регистров расчета.
Подключение без необходимости механизма автоматической перезаписи таблицы фактического периода действия в момент занесения данных по расчетам в информационную базу (0.5)
Движения записываются в два этапа, сначала просто Записать(), потом Записать(,Истина). Если вы не подставите Истина во втором параметре (ТолькоЗапись) – включится механизм перезаписи таблицы.
В решении отсутствует механизм сторнирования записей регистра расчета при вводе вытесняющего вида расчета в текущем расчетном периоде за прошлый период при условии, что такая ситуация явно описана в задании (1.0)
Если в задаче указано что записи могут вводиться задним числом, это значит нужно предусмотреть сторно-записи.
Реализация сторнирования записей регистра расчета без использования специализированных и оптимизированных механизмов платформы (1.5)
Здесь речь идет о таблице дополнений. Сторно-записи нужно формировать на основе данных этой таблицы.
Решение задач накопления на регистре расчета (2.0)
В задачах типа 3.7 где делается надбавка в зависимости от суммы продаж подразделения, не нужно хранить сумму продажи в регистре расчета или регистре сведений. Используйте оборотный регистр накопления.
Бизнес-процессы
Задача не реализована целиком (1.5)
Это очень сложно сделать, как правило бизнес-процессы делаются первыми, за 20 минут.
В форме бизнес-процесса не отражается его текущее состояние (1.0)
В форме бизнес-процесса должна быть карта обновляемая при открытии и при нажатии на кнопку «Обновить карту БП» (название кнопки любое). Соответственно должно быть реализовано «перемещение» по карте БП.
Не реализована или работает неправильно форма списка невыполненных задач текущего пользователя системы (1.0)
Делается через отбор по исполнителю в Форме списка (неосновной). Пример можно найти в решенных задачах.
Задана персональная адресация задач без необходимости (1.0)
Персональная адресация – это адресация по фамилии. Если указано что Сидоров должен оприходовать товар (задача 4.7 из сборника), значит это персональная для Сидорова (и только него) задача.
Задана ролевая адресация задач без необходимости (1.0)
Ролевая адресация – это адресация по ролям. Ролями будут: кассир, бухгалтер, отдел закупок.
Созданы избыточные признаки адресации, как у задач, так и у регистра адресации (0.5)
Как правило всегда используется три: Исполнитель, Должность и Подразделение. В некоторых задачах можно два: Исполнитель и Должность (или Исполнитель и Подразделение).
Неверно заполнен регистр адресации (1.0)
Самая распространенная ошибка, и самая сложная часть бизнес-процессов. Если указана фамилия – заполняете в РС только сотрудника, если должность – сотрудника и должность, если должность и подразделение – сотрудника, должность и подразделение. Не смотрите на то что нарисовано в примере для задачи, это просто список сотрудников и их ролей.
Отсутствует возможность отображения полного списка задач (0.5)
Не делайте для полного списка никаких форм, он будет формироваться автоматически.
Управляемые формы
Задача не реализована целиком (1.5)
С управляемыми формами обычно всё просто, но иногда нужно кодить. Рекомендую взять на экзамен книгу Радченко "Практическое пособие разработчика", многие примеры есть в этой книге.
От автора
1. Внимательно прочитайте задание. Полностью. Обратите внимание на отчеты, они помогут вам правильно спроектировать хранение данных.
2. Реализацию (написание кода) лучше начать с "чего по-проще", например с бизнес-процессов, потом сложные периодические расчеты (возможно в них будет связь с оперучетом в виде суммы продаж подразделения), потом все остальное (оперучет, бухучет).
3. Постоянно сохраняйтесь (почаще), это позволит вам не потерять «всё что нажито непосильным трудом».
4. Если что-то не получается, не тратьте на это много времени, лучше бросьте и займитесь чем-то другим, позже вернетесь к этому месту и доделаете. Тоже самое касается тестовых данных, можно вводить их по ходу, после каждой задачи, но старайтесь отладку произвести в конце. "Красивости" тоже оставьте напоследок, в первую очередь делайте модули проведения и отчеты.
5. Очищайте движения в обработке проведения документа (при использовании "старой" методики). Вот таким образом:
Движения.Остатки.БлокироватьДляИзменения = Истина;
Движения.Остатки.Записать();
6. Почитайте про флажок "Разрешить разделение итогов" в регистрах накопления и бухгалтерии.
7. Обязательно создайте подсистемы и подчиненные подсистемы (хотя бы для одной подсистемы).
Удачи, она вам пригодится!
Рекомендуемая литература:
Радченко М. "Практическое пособие разработчика"
Хрусталева Е.Ю., Кухлевский Д.С., Козырев Д.В., Габец А.П. «Реализация прикладных задач в системе 1С Предприятие 8.2».
Бизнес-процессы для экзамена 1С: Специалист.
СПР для экзамена 1С: Специалист.