Как правильно доработать ввод на основании в расширении 1С и заменить данные в табличной части?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке расширений конфигурации 1С часто возникают задачи по изменению логики заполнения документов. Одной из частых проблем является необходимость замены стандартных данных, например, цен или номенклатуры, на специфические поля, добавленные в расширении. Рассмотрим, как грамотно реализовать такую задачу, не нарушая работу системы и сохраняя чистоту кода.

Метод дозаполнения табличной части

Вместо того чтобы пытаться полностью переписать или «заимствовать» сложный запрос типового заполнения, мы рекомендуем использовать подход дозаполнения. Суть его заключается в использовании аннотации &После для стандартной процедуры ОбработкаЗаполнения.

Рассмотрим пошагово, как это реализовать:

  1. Вызываем стандартную процедуру заполнения, чтобы система самостоятельно выполнила основную работу по связке документов.
  2. После выполнения стандартного метода, мы получаем заполненный объект, в котором можем программно скорректировать нужные нам реквизиты.

Пример реализации в модуле объекта расширения:


&После("ОбработкаЗаполнения")
Процедура ЕВ_ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
    // 1. Сначала отрабатывает типовой механизм
    // 2. После этого корректируем данные в ТЧ "Товары"
    Для Каждого ТекСтрока Из Объект.Товары Цикл
        // Допустим, нам нужно переопределить цену из нашего нового реквизита
        Если ЗначениеЗаполнено(ТекСтрока.ЦенаПоставщика) Тогда
            ТекСтрока.Цена = ТекСтрока.ЦенаПоставщика;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Этот метод является наиболее безопасным, так как он минимально инвазивен и не требует сложного манипулирования запросами в коде расширения.

Работа с кодом запросов в расширении

Если задача требует получения сложных данных, которые нельзя получить простым перебором строк, вам все же потребуется написать запрос внутри расширения. Многие программисты сталкиваются с трудностями при оформлении длинных строковых констант (необходимость добавления символов |). Разберем, как упростить этот процесс.

Использование Консоли запросов:

Не пытайтесь сразу писать сложный запрос в Конфигураторе. Сначала отладьте его во внешней Консоли запросов. Когда запрос готов и проверен, скопируйте текст запроса в буфер обмена.

Перенос текста в модуль:

Чтобы не расставлять символы переноса строк и кавычки вручную, в редакторе кода 1С существуют удобные инструменты:

Важные рекомендации по безопасности и поддержке кода

При доработке типовых документов с помощью расширений всегда помните о следующих правилах:

Придерживаясь метода пост-обработки (&После), вы обеспечиваете высокую надежность своего решения. Система сначала выполняет типовую логику, а вы лишь «подправляете» результат под свои нужды. Это исключает ошибки, связанные с неправильной передачей контекста данных при вводе на основании, и делает процесс разработки значительно быстрее.

← На главную