Разрабатывать эффективно возможно только за счет неуклонного и постоянного профессионального развития. Обязательно находим время на обучение! Итак, в сегодняшней подборке три интересных вопроса для разработчиков 1С: как исключить дополнительные реквизиты из списка доступных полей номенклатуры в настройках СКД; какие нюансы нужно учесть, проектируя структуру регистров в задаче по работе с заказами клиентов, на экзамене 1С:Специалист по платформе; что означает метод ПродолжитьВызов при работе с программными модулями в расширениях.
Вопрос № 1: Для каких случаев предусмотрен метод ПродолжитьВызов?
Ответ
Дело в том, что для функций нельзя использовать аннотации &Перед и &Перед, а для процедур – можно. Поэтому чтобы существовала возможность не просто полностью переопределить функцию, а выполнить еще и исходный код из основной конфигурации, реализован метод ПродолжитьВызов() .
Если же рассматривать перехват процедур, а не функций, то метод ПродолжитьВызов() может использоваться “внутри” процедуры из расширения:
&Вместо("Процедура1") Процедура Расш1_Процедура1(П1) //... ПродолжитьВызов(П1); //... КонецПроцедуры
Это аналогично использованию аннотаций &Перед и &Перед.
Разработка расширений и технологии доработки конфигураций 1С без снятия с поддержки.
Вопрос № 2: Как исключить доп.реквизиты из списка доступных полей номенклатуры в настройках СКД?
Ответ
Нет, поскольку это платформенный механизм – для справочника “Номенклатура” в конфигураторе настроены характеристики на уровне объектов метаданных. Поэтому они будут добавляться в список полей номенклатуры при работе с отчетами, динамическими списками, то есть в механизмах, базирующихся на системе компоновки данных.
Рассмотрите вариант переноса доп. реквизитов в обычные реквизиты справочника “Номенклатура”. Это должно увеличить производительность описанных действий.
Уточняющий вопрос
Ответ
В 1С:УТ ред. 11 не требуется заполнять вкладку “Характеристики” в тексте запроса набора данных. Дело в том, что в этой конфигурации настроены характеристики на уровне объектов метаданных. Например, можно в конфигураторе обратиться к справочнику “Номенклатура”, в контекстном меню выбрать пункт “Характеристики”:
Здесь указано, откуда система будет получать перечень характеристик и их значения.
СКД учитывает эту настройку, поэтому дополнительно прописывать характеристики в запросе не нужно.
Профессиональная разработка отчетов в 1С 8.3 на СКД.
Вопрос № 3: Как правильно спроектировать структуру регистров в задаче по работе с заказами клиентов на экзамене 1С:Специалист по платформе?
Заказано = КоличествоДляЗаказа.Оборот
Привезли = КоличествоДляЗаказа.Оборот – КоличествоДляЗаказа.Остаток
Отгрузили = КоличествоДляОтгрузки.Оборот.Оборот
Минус, как я понял в том, что приходится по регистру остатков брать обороты. Так? Зато можно легко строить отчеты по тому, сколько надо закупить и сколько надо отгрузить.
Дополню картинкой проведения по регистрам.
В моем случае надо сделать в один момент и расход и приход в одном регистре. Лучше делать два движения с нулем по одному из измерения или можно писать отрицательные числа. Как думаете? Математически все равно и плюс – нет лишних строк в таблице регистра.
Есть серьезный минус – невозможно нормально посчитать расход и приход из виртуальных таблиц. Все движения идут по расходу и в итоге оборот считается криво. Так делать нельзя – надо делать отдельными движениями приход и расход.
Ответ
Один регистр (минимальное количество регистров) – это вовсе не признак оптимального решения. И данный вариант – как раз из таких.
В этом варианте в регистр помещены ресурсы, относящиеся к разным показателям: количество заказанного и количество готового для отгрузки. Эти ресурсы используются в разных операциях поочередно, а не вместе, а значит, структура регистра будет “рыхлой” – с большим количеством нулей в качестве значений ресурсов. Это приведет к увеличению количества записей регистра и, возможно, к деградации производительности при обработке данных регистра.
Кроме того, объединенный регистр может ухудшить параллельность работы, тем более учитывая, что в данном случае разные ресурсы регистра могут использоваться поочередно в различных, не связанных друг с другом операциях.
Насчет “тяжести и значимости” данного недочета – многое зависит от конкретного экзаменатора. Кто-то может посчитать это не оптимальным решением и снизить оценку, кто-то может посчитать приемлемым. Но в любом случае я бы не рекомендовал такой вариант. Лучше все-таки разделить объединенный регистра на два отдельных регистра.
В целом решение рабочее, однако я не вижу принципиального отличия в лучшую сторону от предложенного в данной теме. Здесь также придется использовать обороты и получать некоторые показатели не напрямую, а вычисляя на основании других.
Движения нужно формировать так, чтобы они логически соответствовали производимой операции. Если поступление (или любое увеличение значения ресурса) – это приход. Если отгрузка (или любое уменьшение значения ресурса) – это расход. Отрицательные значения – это сторнирующие (отменяющие) операции: приход с минусом – это отмена прихода, но никак не расход; расход с минусом – это отмена расхода, но никак не приход.
Лучше придерживаться этого правила и на экзамене, и в реальной практике – и сами не запутаетесь, и экзаменатор (коллеги) смогут разобраться, что к чему.
Кроме того – да, как Вы правильно заметили, в Вашем варианте (отрицательный расход) значения Прихода и Расхода по регистру в этом случае будут искажены и не будут соответствовать тем значениями, которые подразумеваются (например, если потребуется получить всю отгрузку или все поступления за заданный период).
Насчет того, будет ли снижена оценка за подобный вариант – однозначно сказать не могу. С одной стороны, числовые значения Ваше решение будет получать правильные, но вот логически это будет неправильным.
Подготовка к аттестации 1С:Специалист по платформе 1С:Предприятие 8.3.