Как исправить ошибку «В реализации отсутствуют услуги» при печати Акта в УТ 11.3?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В конфигурации 1С:Управление торговлей 11.3 пользователи часто сталкиваются с ситуацией, когда при попытке сформировать печатную форму Акт об оказании услуг из документа реализации система выдает сообщение: «В реализации отсутствуют услуги, печатная форма не нужна». При этом в табличной части документа визуально присутствуют позиции, которые должны быть услугами. Разберем подробно, почему это происходит и как исправить проблему несколькими способами.

Выясняем причину блокировки печатной формы

Проанализируем алгоритм работы программы. Печатная форма Акт об оказании услуг жестко завязана на реквизит ТипНоменклатуры. Если у позиции справочника Номенклатура установлен тип Товар, система игнорирует такие строки при формировании акта, даже если в названии написано «Услуга по доставке». Для программы «Товар» — это материальная ценность, которая должна отражаться в накладной (ТОРГ-12), а «Услуга» — это нематериальная операция, требующая оформления акта.

Часто ошибка возникает из-за того, что при создании карточки номенклатуры был ошибочно выбран неверный Вид номенклатуры, за которым закреплен тип Товар. После того как по этой позиции прошли первые документы, поле Тип номенклатуры в карточке становится недоступным для редактирования. Это сделано для защиты ссылочной целостности: изменение типа товара, который уже лежит на складе, на услугу может привести к серьезным ошибкам в регистрах накопления и себестоимости.

Способ 1. Разблокировка реквизитов в карточке номенклатуры

Прежде всего, попробуем стандартный механизм платформы для редактирования защищенных полей. Откроем карточку номенклатуры, которую необходимо изменить. Посмотрим в меню Еще (в верхней части формы). Выберем пункт Разрешить редактирование реквизитов.

Программа выдаст предупреждение о том, что изменение ключевых реквизитов может повлиять на данные учета. Если мы уверены в своих действиях, подтверждаем выбор. После этого поле Тип номенклатуры или Вид номенклатуры может стать доступным. Однако в конфигурациях на базе ERP-платформы (к которым относится УТ 11) этот метод часто не срабатывает для типа номенклатуры, если на элемент уже есть ссылки в базе.

Способ 2. Использование группового изменения реквизитов

Рассмотрим более мощный инструмент — стандартную обработку Групповое изменение реквизитов. Она позволяет обойти визуальные запреты формы. Пройдем по шагам:

  1. Перейдем в раздел НСИ и администрирование — Обслуживание — Корректировка данных.
  2. Выберем Групповое изменение реквизитов.
  3. В поле Выбирать элементы типа укажем Номенклатура.
  4. Нажмем Добавить условие и выберем нашу конкретную номенклатуру по наименованию или ссылке.
  5. Нажмем кнопку Дополнительные параметры и установим флаг Изменять реквизиты с установленной проверкой (иногда требуется наоборот снять все ограничения, в зависимости от версии платформы).
  6. Найдем в списке реквизит Тип номенклатуры и установим значение Услуга.
  7. Нажмем Изменить реквизиты.

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

Способ 3. Программное исправление типа через код

Если нам необходимо внести изменения программно, например, в рамках разовой обработки, мы должны учитывать специфику работы с данными формы. Посмотрим на типичную ошибку начинающих разработчиков: попытку присвоить значение напрямую Объекту в контексте формы. В управляемом приложении Объект — это ДанныеФормыСтруктура, и попытка вызвать метод Записать() или напрямую менять тип может привести к ошибке.

Проанализируем правильный алгоритм программного изменения на сервере:


&НаСервере
Процедура ИсправитьТипНоменклатурыНаСервере(СсылкаНаНоменклатуру)
    // Преобразуем ссылку в объект для возможности редактирования
    НоменклатураОбъект = СсылкаНаНоменклатуру.ПолучитьОбъект();
    
    // Устанавливаем нужный тип из перечисления
    НоменклатураОбъект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга;
    
    // Отключаем проверки при записи, если это необходимо (с осторожностью!)
    НоменклатураОбъект.ОбменДанными.Загрузка = Истина;
    
    // Записываем изменения в базу данных
    НоменклатураОбъект.Записать();
КонецПроцедуры

Если же мы находимся внутри формы самой номенклатуры, нам необходимо выполнить преобразование данных формы в прикладной объект и обратно:


&НаСервере
Процедура СменитьТипНаСервере()
    // Конвертируем данные формы в объект справочника
    ОбъектОбъект = РеквизитФормыВЗначение("Объект");
    
    // Меняем значение реквизита
    ОбъектОбъект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга;
    
    // Записываем объект
    ОбъектОбъект.Записать();
    
    // Обновляем данные формы из записанного объекта
    ЗначениеВРеквизитФормы(ОбъектОбъект, "Объект");
КонецПроцедуры

Способ 4. Создание новой карточки и замена дублей

Если редактирование существующей карточки заблокировано из-за большого количества движений за прошлые периоды, самым безопасным методом будет создание новой позиции номенклатуры с правильным типом Услуга. После создания воспользуемся обработкой Поиск и замена дублей. В качестве «правильного» элемента укажем новую услугу, а в качестве «дубля» — старый товар. Программа автоматически заменит ссылки во всех документах, включая текущую реализацию, после чего печать акта станет возможной.

Дополнительные нюансы печатных форм

Выясним еще одну деталь: иногда даже после смены типа на Услуга акт не выводится. Проверьте заполнение поля Содержание в табличной части Товары документа реализации. В УТ 11 для услуг именно текст из колонки Содержание часто является приоритетным для вывода в печатную форму. Если это поле пустое, программа может посчитать строку некорректной для печати акта.

В качестве альтернативы, если клиенту не принципиально название документа «Акт», попробуем использовать Универсальный передаточный документ (УПД). Эта форма является универсальной и позволяет выводить в одном списке и товары, и услуги, независимо от технических тонкостей типа номенклатуры в справочнике.

← На главную