Экзамен «1С:Специалист по платформе 1С:Предприятие 8» традиционно считается одним из самых сложных испытаний для разработчиков в экосистеме 1С. В среде специалистов регулярно циркулируют слухи о кардинальном изменении билетов, добавлении новых головоломных задач и сокращении времени на сдачу. Мы подробно проанализируем текущие изменения в структуре экзамена, разберем рекомендации методистов и детально рассмотрим две самые обсуждаемые новые задачи: «Кролики» (учет животных в разрезе характеристик) и «Гарем» (ограничение прав на уровне записей RLS).
Вокруг обновления базы экзаменационных задач всегда возникает много домыслов. Проанализируем реальное положение дел на основе официальной информации от методистов Фирмы 1С:
Эта задача вызывает наибольшие трудности из-за сложной формулировки учета характеристик в бухгалтерском учете. Рассмотрим ее подробные условия.
Организация занимается разведением животных. Для описания каждого животного используется произвольный набор характеристик, который объединяется в «Свойство». Например: кролик «мясной, крупный» или кролик «меховой, крупный, белый». «Мясной», «белый» — это конкретные характеристики, а их совокупность — это свойство. Учет в системе ведется именно в разрезе свойств.
Поступление животных отражается документом ПриходнаяНакладная, формирующим проводку:
Дт «Товары» - Кт «Поставщики» — на вес и сумму закупленных животных.
Прирост массы (откорм) пользователи отражают вручную с помощью документа Операция, который делает проводку:
Дт «Товары» - Кт «Поставщики» — на величину привеса.
Продажа оформляется документом РасходнаяНакладная:
Дт «Прибыли и убытки» - Кт «Товары» — на вес и сумму себестоимости;
Дт «Покупатели» - Кт «Прибыли и убытки» — на сумму в продажных ценах.
Себестоимость при этом должна рассчитываться как средняя по свойству номенклатуры. В финале необходимо построить отчет о продажах животных в разрезе характеристик за определенный период.
Главный подводх задачи, который часто вводит кандидатов в заблуждение — это упоминание «веса» животного. Выясним причину замешательства: многие пытаются создать дополнительный регистр накопления для учета веса или связать вес с количеством. На самом деле, как разъясняют методисты УЦ №1, вес в этой задаче выступает в роли количества для целей бухгалтерского учета. Изменение веса (привес) при откорме отражается проводкой в документе Операция, где увеличивается дебетовый остаток по сумме и количеству (весу) на счете «Товары».
Для реализации этого механизма выполним следующие шаги:
Шаг 1. Настройка Плана видов характеристик и справочников.
Создадим ПланВидовХарактеристик.ХарактеристикиНоменклатуры. В качестве типа значения характеристик укажем необходимые типы (например, булево, строка или дополнительные значения). Создадим справочник СвойстваНоменклатуры, у которого будет табличная часть СоставСвойств с реквизитами Свойство (ссылка на ПВХ) и Значение.
Шаг 2. Настройка Плана счетов и Регистра бухгалтерии.
В плане счетов Основной для счета «Товары» настроим субконто. Первым субконто должна выступать Номенклатура (справочник Номенклатура), а вторым — СвойстваНоменклатуры (справочник СвойстваНоменклатуры). По счету «Товары» обязательно должен быть включен количественный и суммовой учет. Количественный учет в данном контексте будет хранить именно вес животных.
Шаг 3. Алгоритм списания себестоимости в документе «Расходная накладная».
При проведении документа списания нам необходимо рассчитать среднюю себестоимость свойства номенклатуры. Проанализируем пример кода для расчета и проведения:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Док.Номенклатура КАК Номенклатура,
| Док.Свойство КАК Свойство,
| Док.Вес КАК Вес,
| Док.Сумма КАК Сумма
|ПОМЕСТИТЬ ВТ_Товары
|ИЗ
| &ТаблицаТоваров КАК Док
|;
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ.Номенклатура КАК Номенклатура,
| ВТ.Свойство КАК Свойство,
| ВТ.Вес КАК ВесСписываемый,
| ВТ.Сумма КАК СуммаПродажи,
| ЕСТЬNULL(Остатки.КоличествоОстатокДт, 0) КАК ВесОстаток,
| ЕСТЬNULL(Остатки.СуммаОстатокДт, 0) КАК СуммаОстаток
|ИЗ
| ВТ_Товары КАК ВТ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Основной.Остатки(&МоментВремени, Счет = &СчетТовары, ,
| (Субконто1, Субконто2) В (ВЫБРАТЬ Номенклатура, Свойство ИЗ ВТ_Товары)) КАК Остатки
| ПО ВТ.Номенклатура = Остатки.Субконто1 И ВТ.Свойство = Остатки.Subkonto2";
Запрос.УстановитьПараметр("ТаблицаТоваров", ТаблицаТоваров);
Запрос.УстановитьПараметр("МоментВремени", МоментВремени);
Запрос.УстановитьПараметр("СчетТовары", ПланыСчетов.Основной.Товары);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
// Рассчитываем себестоимость по средней цене за единицу веса
Если Выборка.ВесОстаток < Выборка.ВесСписываемый Тогда
// Выводим сообщение о нехватке товара по данному свойству
ВызватьИсключение "Недостаточно товара на складе!";
КонецЕсли;
Себестоимость = 0;
Если Выборка.ВесОстаток > 0 Тогда
Себестоимость = (Выборка.СуммаОстаток / Выборка.ВесОстаток) * Выборка.ВесСписываемый;
КонецЕсли;
// Формируем проводку Дт ПрибылиИУбытки - Кт Товары (на вес и рассчитанную себестоимость)
Проводка = Движения.Основной.Добавить();
Проводка.Период = Дата;
Проводка.СчетДт = ПланыСчетов.Основной.ПрибылиИУбытки;
Проводка.СчетКт = ПланыСчетов.Основной.Товары;
Проводка.КоличествоКт = Выборка.ВесСписываемый;
Проводка.Сумма = Себестоимость;
Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = Выборка.Номенклатура;
Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.СвойстваНоменклатуры] = Выборка.Свойство;
КонецЦикла;
Шаг 4. Построение отчета о продажах с использованием механизма характеристик в СКД.
Для вывода продаж в разрезе отдельных характеристик (например, цвета или размера) необходимо использовать встроенный в Систему компоновки данных (СКД) механизм связи с Планом видов характеристик. Рассмотрим этот шаг подробнее:
Свойство настраиваем связь с характеристиками.СвойстваНоменклатуры.СоставСвойств.Характеристика) и поле значения. Это позволит пользователю в режиме «1С:Предприятие» выбирать конкретные характеристики (например, «Цвет» или «Направление откорма») прямо в настройках отчета (группировках, отборах и колонках), а СКД автоматически выполнит транспонирование строк табличной части в колонки отчета.Эта задача относится к блоку оперативного учета и администрирования. Ее цель — проверить навыки проектирования ролей и использования механизмов ограничения доступа на уровне записей (Row-Level Security — RLS).
По условию задачи, в информационной системе ведут учет расходов на содержание наложниц арабского шейха по различным статьям затрат (одежда, питание, медицина). Ввод данных осуществляют пользователи с ролью «Евнухи». Каждый евнух имеет доступ только к определенным статьям затрат. При этом евнухи не должны иметь возможности изменять или просматривать записи прошлых периодов (вчерашние и ранее данные) — изменять исторические данные имеет право только пользователь с ролью «Шейх».
Рассмотрим по шагам, как правильно реализовать такое разграничение прав:
Шаг 1. Создание параметров сеанса и ограничение по статьям.
Создадим параметр сеанса ДоступныеСтатьиЗатрат (тип — ФиксированныйМассив или СписокЗначений), который будет заполняться при запуске системы в модуле сеанса на основе связи текущего пользователя со статьями затрат (например, через специальный регистр сведений ПраваДоступностиСтатей).
В роли Евнух для регистра накопления РасходыНаСодержание настраиваем RLS на чтение и изменение:
ГДЕ СтатьяЗатрат В (&ДоступныеСтатьиЗатрат)
Шаг 2. Ограничение по периоду редактирования.
Чтобы запретить евнухам изменять прошлые периоды, добавим условие на дату документа или период записи регистра в правилах RLS на изменение (добавление, изменение, удаление). Проанализируем структуру запроса RLS для роли Евнух:
ГДЕ СтатьяЗатрат В (&ДоступныеСтатьиЗатрат)
И Период >= НАЧАЛОПЕРИОДА(&ТекущаяДата, ДЕНЬ)
Использование конструкции НАЧАЛОПЕРИОДА(&ТекущаяДата, ДЕНЬ) гарантирует, что пользователи с этой ролью смогут вводить и корректировать документы только за текущие сутки, а все исторические проводки будут доступны им только для чтения (если это разрешено отдельным RLS на чтение) или полностью скрыты.
Для успешной сдачи экзамена в условиях комбинирования билетов и появления новых задач придерживайтесь следующих рекомендаций: