Имя: Пароль:
1C
1С v8
Процедура не может возвращать значение Возврат ТабДокумент<<?>>;
0 NexForZ
 
17.11.15
09:40
Подскажите пожалуйста, в чём проблема и как её исправить, сам плоховато разбираюсь в программировании 1С.
Выводит ошибку: Процедура не может возвращать значение    Возврат ТабДокумент<<?>>;
Срочно нужно, помогите пожалуйста, заранее спасибо)

Функция Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт
    
    // Получить экземпляр документа на печать
        ТабДокумент = ПечатьТ10(ИмяМакета);
    Возврат УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначенияЗК.СформироватьЗаголовокДокумента(ЭтотОбъект,Метаданные().Синоним + ИмяФормы),,ТабДокумент);
    
КонецФункции // Печать()


Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КомандировкиОрганизации_Т10";
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    
    // получаем данные для печати
    ВыборкаДляШапки   = СформироватьЗапросДляПечати("ПоРеквизитамДокумента").Выбрать();
    ВыборкаРаботники = СформироватьЗапросДляПечати("ПоТабличнойЧастиДокумента").Выбрать();

    // запоминаем области макета
    Макет = ПолучитьМакет(ИмяМакета);
    ОбластьМакетаШапка    = Макет.ПолучитьОбласть("Шапка");            // Шапка документа
    ОбластьМакетаПодвал    = Макет.ПолучитьОбласть("Подвал");            // Подвал документа
    ОбластьМакета        = Макет.ПолучитьОбласть("Работник");        // строка работника
    ОборотШапка            = Макет.ПолучитьОбласть("ШапкаОтметок");    // оборот удостоверения - отметки от прибытии-выбытии
    ОборотОтметки        = Макет.ПолучитьОбласть("Отметки");

    // выводим данные о руководителях организации
    Если ВыборкаДляШапки.Следующий() Тогда
        ОбластьМакетаШапка.Параметры.Заполнить(ВыборкаДляШапки); // Шапка документа.
        ОбластьМакетаШапка.Параметры.НазваниеОрганизации    = СокрЛП(ОбластьМакетаШапка.Параметры.НазваниеОрганизации);
        ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаДляШапки); // Для подвала.
        ОбластьМакета.Параметры.Заполнить(ВыборкаДляШапки); // область работника
        НомерДокДляПечати    = ВыборкаДляШапки.НомерДок;
    КонецЕсли;

    НомерФормы = 0;
    ПечататьПостфикс = ВыборкаРаботники.Количество() > 1;
    // Начинаем формировать выходной документ
    Пока ВыборкаРаботники.Следующий() Цикл

        // Каждый приказ на отдельной странице.
        Если ТабДокумент.ВысотаТаблицы > 0 Тогда
            ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;

        // Шапка документа.
        Если ПечататьПостфикс Тогда
            НомерФормы = НомерФормы + 1;
            ОбластьМакетаШапка.Параметры.НомерДок = НомерДокДляПечати + "/" + НомерФормы
        КонецЕсли;
        ТабДокумент.Вывести(ОбластьМакетаШапка);

        // Данные по работнику.
        ОбластьМакета.Параметры.Заполнить(ВыборкаРаботники);
        
        //уберем из табельного номера префикс
        ОбластьМакета.Параметры.ТабельныйНомер = ВыборкаРаботники.ТабельныйНомер;
        
        // в этой форме продолжительность командировки указывается без времени в пути
        ОбластьМакета.Параметры.Продолжительность = ?(ЗначениеЗаполнено(ВыборкаРаботники.ДатаОкончания),Цел((ВыборкаРаботники.ДатаОкончания - ВыборкаРаботники.ДатаНачала + 1) / мДлинаСуток) + 1 - ВыборкаРаботники.ВремяНахожденияВПути,"");
        ТабДокумент.Вывести(ОбластьМакета);

        // Подвал документа.
        ТабДокумент.Вывести(ОбластьМакетаПодвал);
        // выводим оборот удостоверения
        ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        ТабДокумент.Вывести(ОборотШапка);
        ТабДокумент.Вывести(ОборотОтметки);
        ТабДокумент.Вывести(ОборотОтметки);
        ТабДокумент.Вывести(ОборотОтметки);
        ТабДокумент.Вывести(ОборотОтметки);

    КонецЦикла;

    // если не было ни одного работника - выводим пустой бланк
    Если ТабДокумент.ВысотаТаблицы = 0 Тогда
        ТабДокумент.Вывести(ОбластьМакетаШапка);
        ТабДокумент.Вывести(ОбластьМакета);
        ТабДокумент.Вывести(ОбластьМакетаПодвал);
        // выводим оборот удостоверения
        ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        ТабДокумент.Вывести(ОборотШапка);
        ТабДокумент.Вывести(ОборотОтметки);
        ТабДокумент.Вывести(ОборотОтметки);
        ТабДокумент.Вывести(ОборотОтметки);
        ТабДокумент.Вывести(ОборотОтметки);
    КонецЕсли;

    Возврат ТабДокумент;

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

Функция СформироватьЗапросДляПечати(Режим)

    Запрос = Новый Запрос;

    // Установим параметры запроса
    Запрос.УстановитьПараметр("ДокументСсылка",    Ссылка);
    Запрос.УстановитьПараметр("ДатаДокумента",    Дата);

    Если Режим = "ПоРеквизитамДокумента" Тогда

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

    ИначеЕсли Режим = "ПоТабличнойЧастиДокумента" Тогда

        Запрос.УстановитьПараметр("Организация",     Организация);
        Запрос.УстановитьПараметр("ГоловнаяОрганизация", ОбщегоНазначенияЗК.ГоловнаяОрганизация(Организация));
        Запрос.УстановитьПараметр("Ссылка",     Ссылка);
        
        Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    КомандировкиОрганизацииРаботники.НомерСтроки,
        |    КомандировкиОрганизацииРаботники.Сотрудник.Физлицо КАК Физлицо,
        |    КомандировкиОрганизацииРаботники.Сотрудник КАК Сотрудник,
        |    КомандировкиОрганизацииРаботники.ФизЛицо.Пол КАК ФизЛицоПол,
        |    КомандировкиОрганизацииРаботники.ДатаНачала,
        |    КомандировкиОрганизацииРаботники.ДатаОкончания,
        |    КомандировкиОрганизацииРаботники.ОсвобождатьСтавку,
        |    КомандировкиОрганизацииРаботники.Цель,
        |    КомандировкиОрганизацииРаботники.ИсточникФинансирования,
        |    КомандировкиОрганизацииРаботники.НапомнитьПоЗавершении,
        |    КомандировкиОрганизацииРаботники.ВремяНахожденияВПути,
        |    КомандировкиОрганизацииРаботники.Сотрудник.Код КАК ТабельныйНомер
        |ПОМЕСТИТЬ ВТСотрудники
        |ИЗ
        |    Документ.КомандировкиОрганизаций.РаботникиОрганизации КАК КомандировкиОрганизацииРаботники
        |ГДЕ
        |    КомандировкиОрганизацииРаботники.Ссылка = &ДокументСсылка
        |    И (НЕ КомандировкиОрганизацииРаботники.Сторно)
        |
        |ИНДЕКСИРОВАТЬ ПО
        |    Сотрудник";
        Запрос.Выполнить();
        
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ЕСТЬNULL(ФИОФизЛиц.Фамилия + "" "" + ФИОФизЛиц.Имя + "" "" + ФИОФизЛиц.Отчество, КомандировкиОрганизацииРаботники.Сотрудник.Наименование) КАК Работник,
        |    ЕСТЬNULL(ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид.Наименование + "", серия "" + ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия + "", №"" + ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер, """") КАК РеквизитыПаспорта,
        |    КомандировкиОрганизацииРаботники.НомерСтроки КАК НомерСтроки,
        |    КомандировкиОрганизацииРаботники.ФизЛицоПол,
        |    КомандировкиОрганизацииРаботники.ДатаНачала,
        |    КомандировкиОрганизацииРаботники.ДатаОкончания,
        |    КомандировкиОрганизацииРаботники.ВремяНахожденияВПути,
        |    КомандировкиОрганизацииРаботники.Цель,
        |    ВЫБОР
        |        КОГДА Работники.ПериодЗавершения <= КомандировкиОрганизацииРаботники.ДатаНачала
        |                И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
        |            ТОГДА Работники.ПодразделениеОрганизацииЗавершения
        |        ИНАЧЕ Работники.ПодразделениеОрганизации
        |    КОНЕЦ КАК ПодразделениеРаботника,
        |    ВЫБОР
        |        КОГДА Работники.ПериодЗавершения <= КомандировкиОрганизацииРаботники.ДатаНачала
        |                И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
        |            ТОГДА Работники.ДолжностьЗавершения
        |        ИНАЧЕ Работники.Должность
        |    КОНЕЦ КАК Должность,
        |    КомандировкиОрганизацииРаботники.ИсточникФинансирования,
        |    КомандировкиОрганизацииРаботники.ТабельныйНомер
        |ИЗ
        |    ВТСотрудники КАК КомандировкиОрганизацииРаботники
        |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |            СписокДат.Сотрудник КАК Сотрудник,
        |            Работники.ПодразделениеОрганизации.Наименование КАК ПодразделениеОрганизации,
        |            Работники.Должность.Наименование КАК Должность,
        |            Работники.ПодразделениеОрганизацииЗавершения.Наименование КАК ПодразделениеОрганизацииЗавершения,
        |            Работники.ДолжностьЗавершения.Наименование КАК ДолжностьЗавершения,
        |            Работники.ПериодЗавершения КАК ПериодЗавершения
        |        ИЗ
        |            (ВЫБРАТЬ
        |                РаботникиВнутри.Сотрудник КАК Сотрудник,
        |                МАКСИМУМ(РаботникиВнутри.Период) КАК ДатаПоследнегоИзменения
        |            ИЗ
        |                РегистрСведений.РаботникиОрганизаций КАК РаботникиВнутри
        |                    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСотрудники КАК КомандировкиОрганизаций
        |                    ПО РаботникиВнутри.Период <= КомандировкиОрганизаций.ДатаНачала
        |                        И РаботникиВнутри.Сотрудник = КомандировкиОрганизаций.Сотрудник
        |            
        |            СГРУППИРОВАТЬ ПО
        |                РаботникиВнутри.Сотрудник) КАК СписокДат
        |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК Работники
        |                ПО СписокДат.ДатаПоследнегоИзменения = Работники.Период
        |                    И СписокДат.Сотрудник = Работники.Сотрудник) КАК Работники
        |        ПО КомандировкиОрганизацииРаботники.Сотрудник = Работники.Сотрудник
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(
        |                &ДатаДокумента,
        |                ФизЛицо В
        |                    (ВЫБРАТЬ
        |                        Сотрудники.Физлицо
        |                    ИЗ
        |                        ВТСотрудники КАК Сотрудники)) КАК ФИОФизЛиц
        |        ПО КомандировкиОрганизацииРаботники.Сотрудник.Физлицо = ФИОФизЛиц.ФизЛицо
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних(
        |                &ДатаДокумента,
        |                ФизЛицо В
        |                    (ВЫБРАТЬ
        |                        Сотрудники.Физлицо
        |                    ИЗ
        |                        ВТСотрудники КАК Сотрудники)) КАК ПаспортныеДанныеФизЛицСрезПоследних
        |        ПО КомандировкиОрганизацииРаботники.Сотрудник.Физлицо = ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо
        |
        |УПОРЯДОЧИТЬ ПО
        |    НомерСтроки";

    Иначе
        Возврат Неопределено;
        
    КонецЕсли;

    Возврат Запрос.Выполнить();

КонецФункции // СформироватьЗапросДляПечати()
1 Горогуля
 
17.11.15
09:41
проблема в том, что процедура не может возвращать значение. в принципе
2 Горогуля
 
17.11.15
09:41
а функция может
3 butterbean
 
17.11.15
09:41
(0) переделай процедуру в функцию
4 ДенисЧ
 
17.11.15
09:41
Значение может возвращать только функция. А не процедура.
Поэтому тебе придётся немного разобраться в программировании
5 sapphire
 
17.11.15
09:46
Функция Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт
    
    // Получить экземпляр документа на печать

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



Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КомандировкиОрганизации_Т10";
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    
    // получаем данные для печати

    ВыборкаДляШапки   = СформироватьЗапросДляПечати("ПоРеквизитамДокумента").Выбрать();
    ВыборкаРаботники = СформироватьЗапросДляПечати("ПоТабличнойЧастиДокумента").Выбрать();

    // запоминаем области макета

    Макет = ПолучитьМакет(ИмяМакета);
    ОбластьМакетаШапка    = Макет.ПолучитьОбласть("Шапка");            // Шапка документа

    ОбластьМакетаПодвал    = Макет.ПолучитьОбласть("Подвал");            // Подвал документа

    ОбластьМакета        = Макет.ПолучитьОбласть("Работник");        // строка работника

    ОборотШапка            = Макет.ПолучитьОбласть("ШапкаОтметок");    // оборот удостоверения - отметки от прибытии-выбытии

    ОборотОтметки        = Макет.ПолучитьОбласть("Отметки");

    // выводим данные о руководителях организации

    Если ВыборкаДляШапки.Следующий() Тогда
        ОбластьМакетаШапка.Параметры.Заполнить(ВыборкаДляШапки);// Шапка документа.

         ОбластьМакетаШапка.Параметры.НазваниеОрганизации    = СокрЛП(ОбластьМакетаШапка.Параметры.НазваниеОрганизации);
        ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаДляШапки);// Для подвала.

        ОбластьМакета.Параметры.Заполнить(ВыборкаДляШапки);// область работника

        НомерДокДляПечати    = ВыборкаДляШапки.НомерДок;
    КонецЕсли;

    НомерФормы = 0;
    ПечататьПостфикс = ВыборкаРаботники.Количество() > 1;
    // Начинаем формировать выходной документ

    Пока ВыборкаРаботники.Следующий() Цикл

        // Каждый приказ на отдельной странице.

        Если ТабДокумент.ВысотаТаблицы > 0 Тогда
            ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;

        // Шапка документа.

        Если ПечататьПостфикс Тогда
            НомерФормы = НомерФормы + 1;
            ОбластьМакетаШапка.Параметры.НомерДок = НомерДокДляПечати + "/" + НомерФормы
        КонецЕсли;
        ТабДокумент.Вывести(ОбластьМакетаШапка);

        // Данные по работнику.

        ОбластьМакета.Параметры.Заполнить(ВыборкаРаботники);
        
        //уберем из табельного номера префикс

        ОбластьМакета.Параметры.ТабельныйНомер = ВыборкаРаботники.ТабельныйНомер;
        
        // в этой форме продолжительность командировки указывается без времени в пути

        ОбластьМакета.Параметры.Продолжительность = ?(ЗначениеЗаполнено(ВыборкаРаботники.ДатаОкончания),Цел((ВыборкаРаботники.ДатаОкончания - ВыборкаРаботники.ДатаНачала + 1) / мДлинаСуток) + 1 - ВыборкаРаботники.ВремяНахожденияВПути,"");
        ТабДокумент.Вывести(ОбластьМакета);

        // Подвал документа.

        ТабДокумент.Вывести(ОбластьМакетаПодвал);
        // выводим оборот удостоверения

        ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        ТабДокумент.Вывести(ОборотШапка);
        ТабДокумент.Вывести(ОборотОтметки);
        ТабДокумент.Вывести(ОборотОтметки);
        ТабДокумент.Вывести(ОборотОтметки);
        ТабДокумент.Вывести(ОборотОтметки);

    КонецЦикла;

    // если не было ни одного работника - выводим пустой бланк

    Если ТабДокумент.ВысотаТаблицы = 0 Тогда
        ТабДокумент.Вывести(ОбластьМакетаШапка);
        ТабДокумент.Вывести(ОбластьМакета);
        ТабДокумент.Вывести(ОбластьМакетаПодвал);
        // выводим оборот удостоверения

        ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        ТабДокумент.Вывести(ОборотШапка);
        ТабДокумент.Вывести(ОборотОтметки);
        ТабДокумент.Вывести(ОборотОтметки);
        ТабДокумент.Вывести(ОборотОтметки);
        ТабДокумент.Вывести(ОборотОтметки);
    КонецЕсли;

    //Возврат ТабДокумент;
    ТабДокумент.Показать();// :)))))))))))))))
КонецПроцедуры

Функция СформироватьЗапросДляПечати(Режим)

    Запрос = Новый Запрос;

    // Установим параметры запроса

    Запрос.УстановитьПараметр("ДокументСсылка",    Ссылка);
    Запрос.УстановитьПараметр("ДатаДокумента",    Дата);

    Если Режим = "ПоРеквизитамДокумента" Тогда

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

    ИначеЕсли Режим = "ПоТабличнойЧастиДокумента" Тогда

        Запрос.УстановитьПараметр("Организация",     Организация);
        Запрос.УстановитьПараметр("ГоловнаяОрганизация", ОбщегоНазначенияЗК.ГоловнаяОрганизация(Организация));
        Запрос.УстановитьПараметр("Ссылка",     Ссылка);
        
        Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    КомандировкиОрганизацииРаботники.НомерСтроки,
        |    КомандировкиОрганизацииРаботники.Сотрудник.Физлицо КАК Физлицо,
        |    КомандировкиОрганизацииРаботники.Сотрудник КАК Сотрудник,
        |    КомандировкиОрганизацииРаботники.ФизЛицо.Пол КАК ФизЛицоПол,
        |    КомандировкиОрганизацииРаботники.ДатаНачала,
        |    КомандировкиОрганизацииРаботники.ДатаОкончания,
        |    КомандировкиОрганизацииРаботники.ОсвобождатьСтавку,
        |    КомандировкиОрганизацииРаботники.Цель,
        |    КомандировкиОрганизацииРаботники.ИсточникФинансирования,
        |    КомандировкиОрганизацииРаботники.НапомнитьПоЗавершении,
        |    КомандировкиОрганизацииРаботники.ВремяНахожденияВПути,
        |    КомандировкиОрганизацииРаботники.Сотрудник.Код КАК ТабельныйНомер
        |ПОМЕСТИТЬ ВТСотрудники
        |ИЗ
        |    Документ.КомандировкиОрганизаций.РаботникиОрганизации КАК КомандировкиОрганизацииРаботники
        |ГДЕ
        |    КомандировкиОрганизацииРаботники.Ссылка = &ДокументСсылка
        |    И (НЕ КомандировкиОрганизацииРаботники.Сторно)
        |
        |ИНДЕКСИРОВАТЬ ПО
        |    Сотрудник";
        Запрос.Выполнить();
        
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ЕСТЬNULL(ФИОФизЛиц.Фамилия + "" "" + ФИОФизЛиц.Имя + "" "" + ФИОФизЛиц.Отчество, КомандировкиОрганизацииРаботники.Сотрудник.Наименование) КАК Работник,
        |    ЕСТЬNULL(ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид.Наименование + "", серия "" + ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия + "", №"" + ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер, """") КАК РеквизитыПаспорта,
        |    КомандировкиОрганизацииРаботники.НомерСтроки КАК НомерСтроки,
        |    КомандировкиОрганизацииРаботники.ФизЛицоПол,
        |    КомандировкиОрганизацииРаботники.ДатаНачала,
        |    КомандировкиОрганизацииРаботники.ДатаОкончания,
        |    КомандировкиОрганизацииРаботники.ВремяНахожденияВПути,
        |    КомандировкиОрганизацииРаботники.Цель,
        |    ВЫБОР
        |        КОГДА Работники.ПериодЗавершения <= КомандировкиОрганизацииРаботники.ДатаНачала
        |                И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
        |            ТОГДА Работники.ПодразделениеОрганизацииЗавершения
        |        ИНАЧЕ Работники.ПодразделениеОрганизации
        |    КОНЕЦ КАК ПодразделениеРаботника,
        |    ВЫБОР
        |        КОГДА Работники.ПериодЗавершения <= КомандировкиОрганизацииРаботники.ДатаНачала
        |                И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
        |            ТОГДА Работники.ДолжностьЗавершения
        |        ИНАЧЕ Работники.Должность
        |    КОНЕЦ КАК Должность,
        |    КомандировкиОрганизацииРаботники.ИсточникФинансирования,
        |    КомандировкиОрганизацииРаботники.ТабельныйНомер
        |ИЗ
        |    ВТСотрудники КАК КомандировкиОрганизацииРаботники
        |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |            СписокДат.Сотрудник КАК Сотрудник,
        |            Работники.ПодразделениеОрганизации.Наименование КАК ПодразделениеОрганизации,
        |            Работники.Должность.Наименование КАК Должность,
        |            Работники.ПодразделениеОрганизацииЗавершения.Наименование КАК ПодразделениеОрганизацииЗавершения,
        |            Работники.ДолжностьЗавершения.Наименование КАК ДолжностьЗавершения,
        |            Работники.ПериодЗавершения КАК ПериодЗавершения
        |        ИЗ
        |            (ВЫБРАТЬ
        |                РаботникиВнутри.Сотрудник КАК Сотрудник,
        |                МАКСИМУМ(РаботникиВнутри.Период) КАК ДатаПоследнегоИзменения
        |            ИЗ
        |                РегистрСведений.РаботникиОрганизаций КАК РаботникиВнутри
        |                    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСотрудники КАК КомандировкиОрганизаций
        |                    ПО РаботникиВнутри.Период <= КомандировкиОрганизаций.ДатаНачала
        |                        И РаботникиВнутри.Сотрудник = КомандировкиОрганизаций.Сотрудник
        |            
        |            СГРУППИРОВАТЬ ПО
        |                РаботникиВнутри.Сотрудник) КАК СписокДат
        |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК Работники
        |                ПО СписокДат.ДатаПоследнегоИзменения = Работники.Период
        |                    И СписокДат.Сотрудник = Работники.Сотрудник) КАК Работники
        |        ПО КомандировкиОрганизацииРаботники.Сотрудник = Работники.Сотрудник
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(
        |                &ДатаДокумента,
        |                ФизЛицо В
        |                    (ВЫБРАТЬ
        |                        Сотрудники.Физлицо
        |                    ИЗ
        |                        ВТСотрудники КАК Сотрудники)) КАК ФИОФизЛиц
        |        ПО КомандировкиОрганизацииРаботники.Сотрудник.Физлицо = ФИОФизЛиц.ФизЛицо
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних(
        |                &ДатаДокумента,
        |                ФизЛицо В
        |                    (ВЫБРАТЬ
        |                        Сотрудники.Физлицо
        |                    ИЗ
        |                        ВТСотрудники КАК Сотрудники)) КАК ПаспортныеДанныеФизЛицСрезПоследних
        |        ПО КомандировкиОрганизацииРаботники.Сотрудник.Физлицо = ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо
        |
        |УПОРЯДОЧИТЬ ПО
        |    НомерСтроки";

    Иначе
        Возврат Неопределено;
        
    КонецЕсли;

    Возврат Запрос.Выполнить();

КонецФункции// СформироватьЗапросДляПечати()
6 NexForZ
 
17.11.15
09:49
Спасибо)
Правда теперь с остальными ошибками придется разбираться)
7 ДенисЧ
 
17.11.15
09:51
(6) Для начала нужно разобраться с главной ошибкой...
Но она, увы, не поддаётся корректировке
8 sapphire
 
17.11.15
09:51
(7) Та лана, Ден, молодо-зелено, забуреет исчо
9 aleks_default
 
17.11.15
09:52
(6)да, вот незадача, теперь не спишешь все на глюк платформы
10 NexForZ
 
17.11.15
09:53
(7) А о какой ошибке речь?
11 Горогуля
 
17.11.15
09:54
(10) в ДНК. не слушай его, его (6) не убедило в обратном ;)
12 aleks_default
 
17.11.15
09:54
(10) зря ты это спросил...
13 DDwe
 
17.11.15
10:07
Мне вот интересно, чем руководствуются люди когда задают вопрос как в (0)?  Причем пишет " сам плоховато разбираюсь в программировании 1С", это видимо подразумевает, что в остальном программировании он замечательно разбирается.
14 Горогуля
 
17.11.15
10:13
(13) они ничем не руководствуются, это неразвитость разума. у меня, к примеру, ребёнка начинает названивать маме, когда обувь не может найти. надо знать, что обувь можно взять и поискать, а текст ошибки прочитать и понять. пройдёт с годами
15 DDwe
 
17.11.15
10:15
(14) Или не пройдет.... тоже вероятно.
16 Горогуля
 
17.11.15
10:19
(15) у меня интернетов не было, мне было проще ;)