Версия для печати темы (https://pro1c.org.ua/index.php?s=1e27f2f6f1934b4fd69fe010c6b95ac3&showtopic=46347)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Помогите исправить ошибку

Автор: kanibal23 19.06.18, 14:58

есть процедура СписокПриАктивизацииСтроки

Она формирует мини отчет
строка повібору

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
    ТекСтрока = Элементы.Список.ТекущаяСтрока;    
    Если ТекСтрока = Неопределено   Тогда         
        Возврат;
    Иначе
        СписокПриАктивизацииСтрокиНаСервере(ТабДок, ТекСтрока);
    КонецЕсли;    
КонецПроцедуры


И сам код для отчета заполнения ТабДок

&НаСервереБезКонтекста
Процедура СписокПриАктивизацииСтрокиНаСервере(ТабДок, ТекСтрока)
    
    Макет = ПолучитьОбщийМакет("ДляУчетаМостерской");
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ДокументПриёмОборудования.Номер,
        |    ДокументПриёмОборудования.Дата,
        |    ДокументПриёмОборудования.Сотрудник,
        |    ДокументПриёмОборудования.Инв,
        |    ДокументПриёмОборудования.Подразделение,
        |    ДокументПриёмОборудования.МастерскиеСклады,
        |    ДокументПриёмОборудования.Модель,
        |    ДокументПриёмОборудования.НормерЗадачи,
        |    ПриёмОборудования1.ПриОсмотреВыевленоЧчто,
        |    ПроксимаCсервис.ПроведёныеРаботы КАК ПричинаОтправкиВнРем,
        |    Резерв.ПроведёныеРаботы,
        |    РезервСписания.ПроведёныеРаботы КАК ПричинаСписания,
        |    ДокументПриёмОборудования.Подразделение.ПовнаНазва,
        |    ДокументПриёмОборудования.Паломка,
        |    ДокументПриёмОборудования.Керівник,
        |    ДокументПриёмОборудования.Пользователь,
        |    ДокументПриёмОборудования.Телефон1,
        |    ДокументПриёмОборудования.Телефон2,
        |    ДокументПриёмОборудования.Телефон,
        |    Резерв.КомуРезерв,
        |    Резерв.Ссылка,
        |    ДокументПриёмОборудования.МОЛ,
        |    Резерв.Дата КАК ДатаГотовности,
        |    ПриёмОборудования1.Ссылка КАК СсылкаВыевл,
        |    ПроксимаCсервис.Ссылка КАК СсылкаСервис,
        |    Резерв.Ссылка КАК СсылкаГот,
        |    РезервСписания.Ссылка КАК СсылкаСпис,
        |    РезервСписания.Дата КАК Дата1,
        |    ДокументПриёмОборудования.Помещение,
        |    ДокументПриёмОборудования.Корпус
        |ИЗ
        |    Документ.ПриёмОборудования КАК ДокументПриёмОборудования
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриёмОборудования1 КАК ПриёмОборудования1
        |        ПО ДокументПриёмОборудования.Номер = ПриёмОборудования1.НомерРасписки
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Резерв КАК Резерв
        |        ПО ДокументПриёмОборудования.Номер = Резерв.НомерРасписки
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РезервСписания КАК РезервСписания
        |        ПО ДокументПриёмОборудования.Номер = РезервСписания.НомерРасписки
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПроксимаCсервис КАК ПроксимаCсервис
        |        ПО ДокументПриёмОборудования.Номер = ПроксимаCсервис.НомерРасписки
        |ГДЕ
        |    ДокументПриёмОборудования.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    ДокументПриёмОборудования.Номер,
        |    ДокументПриёмОборудования.Дата,
        |    ДокументПриёмОборудования.Сотрудник,
        |    ДокументПриёмОборудования.Инв,
        |    ДокументПриёмОборудования.Подразделение,
        |    ДокументПриёмОборудования.МастерскиеСклады,
        |    ДокументПриёмОборудования.Модель,
        |    ДокументПриёмОборудования.НормерЗадачи,
        |    ПриёмОборудования1.ПриОсмотреВыевленоЧчто,
        |    ПроксимаCсервис.ПроведёныеРаботы,
        |    Резерв.ПроведёныеРаботы,
        |    РезервСписания.ПроведёныеРаботы,
        |    ДокументПриёмОборудования.Паломка,
        |    ДокументПриёмОборудования.Керівник,
        |    ДокументПриёмОборудования.Пользователь,
        |    ДокументПриёмОборудования.Телефон1,
        |    ДокументПриёмОборудования.Телефон2,
        |    ДокументПриёмОборудования.Телефон,
        |    ДокументПриёмОборудования.Подразделение.ПовнаНазва,
        |    Резерв.КомуРезерв,
        |    Резерв.Ссылка,
        |    ДокументПриёмОборудования.МОЛ,
        |    Резерв.Дата,
        |    ПриёмОборудования1.Ссылка,
        |    ПроксимаCсервис.Ссылка,
        |    РезервСписания.Ссылка,
        |    Резерв.Ссылка,
        |    РезервСписания.Дата,
        |    ДокументПриёмОборудования.Помещение,
        |    ДокументПриёмОборудования.Корпус";
    
    Запрос.УстановитьПараметр("Ссылка", ТекСтрока);
    
    РезультатЗапроса = Запрос.Выполнить();
    

    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    
    ТабДок.Очистить();
    ТабДок.НачатьАвтогруппировкуСтрок();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    
    ТабДок.ЗакончитьАвтогруппировкуСтрок();

КонецПроцедуры


Работает почти как часики но загвоздка в том что если в списке стоит группировка и при выборе строки группировки выдоит ошибку

{ОбщаяФорма.УчетМастерской.Форма(128)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(43, 35)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
ДокументПриёмОборудования.Ссылка <<?>>= &Ссылка

как и где что добавить что б этой ошибки не было что бы оно не обращало внимание на строку группировки

Автор: Vofka 19.06.18, 16:00

В начале процедуры написать что-то вроде:

ТабДок.Очистить();
Если ТипЗнч(ТекСтрока) <> Тип("ДокументСсылка.ПриёмОборудования") Тогда
   Возврат;
КонецЕсли;

Автор: kanibal23 20.06.18, 6:30

Vofka @ Вчера, 17:00 * ,

Спасибо роботоет

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua