[РЕШЕНО] ВПФ Комплектация ОС

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Svet42, 18 сен 2014.

  1. TopicStarter Overlay
    Svet42
    Offline

    Svet42 Опытный в 1С

    Регистрация:
    19 окт 2013
    Сообщения:
    200
    Симпатии:
    1
    Баллы:
    29
    Всем добрый день! БП 2.0, с справочнику ОС добавлена табЧасть комплектация с наименованием и кол-вом, и ВПФ Комплектация. Выдает ошибку индекс находится за границами массива. Ниже приведена функция.

    Код:
    Функция ПечатьОС(ИмяМакета)
     
        Макет = ЭтаОБработка.ПолучитьМакет(ИмяМакета);
     
        Шапка = Макет.ПолучитьОбласть("Шапка");
        ОбластьСТрока = Макет.ПолучитьОбласть("Строка1");
        Шапка1 = Макет.ПолучитьОбласть("Шапка1");
        ПодвалСтраницы2 = Макет.ПолучитьОбласть("ПодвалСтраницы2");
    //ШапкаРазделов1и2  = Макет.ПолучитьОбласть("ШапкаРазделов1и2");
        //ШапкаРаздела3     = Макет.ПолучитьОбласть("ШапкаРаздела3");
        //СтрокиРаздела3    = Макет.ПолучитьОбласть("СтрокиРаздела3");
        //ШапкаРаздела4     = Макет.ПолучитьОбласть("ШапкаРаздела4");
        //СтрокаРаздела4    = Макет.ПолучитьОбласть("СтрокаРаздела4");
        //ПодвалСтраницы1   = Макет.ПолучитьОбласть("ПодвалСтраницы1");
        //ШапкаРазделов5и6  = Макет.ПолучитьОбласть("ШапкаРазделов5и6");
        //СтрокаРазделов5и6 = Макет.ПолучитьОбласть("СтрокаРазделов5и6");
        //ШапкаРаздела7_1   = Макет.ПолучитьОбласть("ШапкаРаздела7_1");
        //ШапкаРаздела7_2   = Макет.ПолучитьОбласть("ШапкаРаздела7_2");
        //ПодвалСтраницы2   = Макет.ПолучитьОбласть("ПодвалСтраницы2");
     
        ТабДок = Новый ТабличныйДокумент;
        ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ОсновныеСредства_ОС6_2003";
     
        //Последние сведения об ОС
        Запрос = Новый Запрос();
        Запрос.УстановитьПараметр("Ссылка", Ссылка);
        Запрос.УстановитьПараметр("ОсновноеСредство", Ссылка);
        Запрос.УстановитьПараметр("ДатаСведений", Новый Граница(РабочаяДата, ВидГраницы.Включая));
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ОсновныеСредстваИЛ_Комплектующие.Ссылка,
        |    ОсновныеСредстваИЛ_Комплектующие.Комплектующая,
        |    ОсновныеСредстваИЛ_Комплектующие.Количество,
        |    ОсновныеСредстваИЛ_Комплектующие.НомерСтроки,
        |    ОсновныеСредстваИЛ_Комплектующие.Ссылка.АдресМестонахождения,
        |    ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ИнвентарныйНомер
        |ИЗ
        |    Справочник.ОсновныеСредства.ИЛ_Комплектующие КАК ОсновныеСредстваИЛ_Комплектующие
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних(&ДатаСведений, ОсновноеСредство = &ОсновноеСредство)  КАК ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних
        |        ПО ОсновныеСредстваИЛ_Комплектующие.Ссылка = ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство
        |ГДЕ
        |    ОсновныеСредстваИЛ_Комплектующие.Ссылка = &Ссылка";
     
        ЗапросТовары = Запрос.Выполнить().Выгрузить();
     
        Место = РегистрыСведений.МестонахождениеОСБухгалтерскийУчет.СрезПоследних(РабочаяДата, Новый Структура("ОсновноеСредство", Ссылка));
        ЗапросТоварыШапка = Запрос.Выполнить().Выбрать();
        ЗапросТоварыШапка.Следующий();
        Шапка.Параметры.Заполнить(ЗапросТоварыШапка);
        Шапка.Параметры.АдресМестонахождения    =Место[0].Местонахождение;
        Шапка.Параметры.Ссылка    =Ссылка;
        ТабДок.Вывести(Шапка);
        ТабДок.Вывести(Шапка1);
        Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
            ОбластьСТрока.Параметры.Заполнить(ВыборкаСтрокТовары);
            ТабДок.Вывести(ОбластьСТрока);
        КонецЦикла; 
            ТабДок.Вывести(ПодвалСтраницы2);
       
        ТабДок.АвтоМасштаб = Истина;
        ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
        ТабДок.ПолеСверху = 0;
        ТабДок.ПолеСнизу = 0;
     
        Возврат ТабДок;
     
    КонецФункции // ПечатьОС6_2003(ДатаСведений) 
    Прошла отладчиком. Вообщем ругается на 65 строку Шапка.Параметры.АдресМестонахождения =Место[0].Местонахождение; Подскажите пожалуйста, как можно побороться с этой ошибкой. Всем огромное спасибо за уделенное мне время и внимание. Буду рада любому совету.
    Последнее редактирование модератором: 18 сен 2014
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    быдлокодера леской за гениталии, блин.....

    Код:
    Если ЗначениеЗаполнено(Место) Тогда
    Шапка.Параметры.АдресМестонахождения =Место[0].Местонахождение;
    КонецЕсли;
    Svet42 нравится это.
  3. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Оформляйте код тегами!
    В следующий раз выставлю предупреждение, ибо уже не первый раз замечаю за вами подобное.
    Svet42 нравится это.
  4. TriviumFan
    Offline

    TriviumFan Опытный в 1С Заблокирован

    Регистрация:
    19 мар 2013
    Сообщения:
    92
    Симпатии:
    15
    Баллы:
    29
    А разве метод СрезПоследних() менеджера РС возвращает не таблицу значений?
    Мне кажется, что нужно
    Код:
    Если Место.Количество() Тогда
      Шапка.Параметры.АдресМестонахождения =Место[0].Местонахождение;
    КонецЕсли;
    
    Svet42 нравится это.
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    все верно, тока он может вернуть пустую ТЗ, а проверки на это нет и просто берется строка по индексу из ТЗ - на этом и ошибка.
    ваш код работать тоже не будет - вывалится в ошибку преобразования типов данных, либо в то, что нельзя сравнивать значения разных типов данных
    Svet42 нравится это.
  6. TriviumFan
    Offline

    TriviumFan Опытный в 1С Заблокирован

    Регистрация:
    19 мар 2013
    Сообщения:
    92
    Симпатии:
    15
    Баллы:
    29
    Всегда пользуюсь им, а теперь он не работает?)
    Svet42 нравится это.
  7. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    проверил - работает.....хвала 1С :)
    снимаю шляпу :)
    Последнее редактирование: 18 сен 2014
    Svet42 нравится это.
  8. TriviumFan
    Offline

    TriviumFan Опытный в 1С Заблокирован

    Регистрация:
    19 мар 2013
    Сообщения:
    92
    Симпатии:
    15
    Баллы:
    29
    Кажется, это практически в любом языке работает.
    Любое число (кроме нуля) в выражении условия всегда возврат истину :p
    Svet42 нравится это.
  9. TopicStarter Overlay
    Svet42
    Offline

    Svet42 Опытный в 1С

    Регистрация:
    19 окт 2013
    Сообщения:
    200
    Симпатии:
    1
    Баллы:
    29
    Простите, торопилась, обещаю исправиться)
  10. TopicStarter Overlay
    Svet42
    Offline

    Svet42 Опытный в 1С

    Регистрация:
    19 окт 2013
    Сообщения:
    200
    Симпатии:
    1
    Баллы:
    29
    Ребят, спасибочки большое ошибка ушла, но вот теперь комплектация не печатается, я прошла отладчиком и получается, что вот в этом кусочке у нас заполняется комплектация, но вот какие то печатаются, а какие то нет. И не пойму чего в этом кусочке не так?
    Код:
     Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
            ОбластьСТрока.Параметры.Заполнить(ВыборкаСтрокТовары);
            ТабДок.Вывести(ОбластьСТрока);
  11. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.975
    Симпатии:
    397
    Баллы:
    104
    ЗапросТовары, видимо, пустая.
    Svet42 нравится это.
  12. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Именно в этом куске кода ошибки нет.
    Ошибка может быть в том, что ТЗ "ЗапросТовары" содержит либо пустые строки, либо строки, в которых пустые колонки, значения которых должны быть выведены в табличный документ.
    Svet42 нравится это.
  13. TopicStarter Overlay
    Svet42
    Offline

    Svet42 Опытный в 1С

    Регистрация:
    19 окт 2013
    Сообщения:
    200
    Симпатии:
    1
    Баллы:
    29
    а вот и сама ВПФ.

    Вложения:

  14. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    реально быдлокодеры писали ВПФ......

    Хм, согласно запроса, результатом будут только такие комплектующие из ТЧ "Комплектующие" элемента ОС, о которых есть информация в регистре сведений "ПервоначальныеСведенияОСБухгалтерскийУчет", проще говоря, комплектующие должны быть приняты к учету правильно.

    Я не знаю, по какой причине так сделано, но можно попробовать сделать ЛЕВОЕ соединение вместо ВНУТРЕННЕГО - это позволит выводить все комплектующие из ТЧ, независимо от наличия информации о них в регистре сведений.
    Svet42 нравится это.
  15. TopicStarter Overlay
    Svet42
    Offline

    Svet42 Опытный в 1С

    Регистрация:
    19 окт 2013
    Сообщения:
    200
    Симпатии:
    1
    Баллы:
    29
    Спасибо большое, левое соединение сделать в запросе функции печати?
  16. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    да, там один запрос вроде, в доп. форме, в функции "Печать...."
    Svet42 нравится это.
  17. TopicStarter Overlay
    Svet42
    Offline

    Svet42 Опытный в 1С

    Регистрация:
    19 окт 2013
    Сообщения:
    200
    Симпатии:
    1
    Баллы:
    29
    Спасибо большое, заработало! Все заработало! Печатается все на ура! Низкий вам поклон) ОГРОМНОЕ СПАСИБО! Еще раз извиняюсь, что не оформила код тегом) Сделала ЛЕВОЕ СОЕДИНЕНИЕ и Оп-ЛЯ!
  18. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Ничего страшного:), красивую девушку тяжело наказать:)
    Svet42 нравится это.
  19. TopicStarter Overlay
    Svet42
    Offline

    Svet42 Опытный в 1С

    Регистрация:
    19 окт 2013
    Сообщения:
    200
    Симпатии:
    1
    Баллы:
    29
    -Happy-

Поделиться этой страницей