8.х Таблица значений: индексация

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем MyNameNoName, 19 июл 2013.

  1. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    точно
  2. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Собрал все, почему то при полном соединение у меня где должны быть данные из таблицы3 пустые строки.
    Код:
    Запрос4 = Новый Запрос;
    Запрос4.Текст =
    
    "ВЫБРАТЬ
    |    Таблица.ЗаказНоменклатураНаименование,
    |    Таблица.ЗаказНоменклатураАртикул,
    |    Таблица.ЗаказНоменклатураКоличество,
    |    Таблица.ЗаказНоменклатураКод,
    |    Таблица.ЗаказНоменклатураСсылка,
    |    Таблица.СписанныеТоварыКоличество,
    |    Таблица.АналогНаименование,
    |    Таблица.АналогАртикул,
    |    Таблица.АналогКод
    |ПОМЕСТИТЬ тЗапрос1
    |ИЗ
    |    &Таблица КАК Таблица
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    Таблица3.ЗаказНоменклатураНаименование,
    |    Таблица3.ЗаказНоменклатураАртикул,
    |    Таблица3.ЗаказНоменклатураКод,
    |    Таблица3.ЗаказНоменклатураСсылка,
    |    Таблица3.СписанныеТоварыКоличество
    |ПОМЕСТИТЬ тЗапрос3
    |ИЗ
    |    &Таблица3 КАК Таблица3
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    тЗапрос1.ЗаказНоменклатураНаименование,
    |    тЗапрос1.ЗаказНоменклатураАртикул,
    |    тЗапрос1.ЗаказНоменклатураКоличество,
    |    тЗапрос1.ЗаказНоменклатураКод,
    |    тЗапрос1.ЗаказНоменклатураСсылка,
    |    тЗапрос1.СписанныеТоварыКоличество,
    |    тЗапрос1.АналогНаименование,
    |    тЗапрос1.АналогАртикул,
    |    тЗапрос1.АналогКод,
    |    тЗапрос3.ЗаказНоменклатураНаименование КАК ЗаказНоменклатураНаименование1,
    |    тЗапрос3.ЗаказНоменклатураАртикул КАК ЗаказНоменклатураАртикул1,
    |    тЗапрос3.ЗаказНоменклатураКод КАК ЗаказНоменклатураКод1,
    |    тЗапрос3.ЗаказНоменклатураСсылка КАК ЗаказНоменклатураСсылка1,
    |    тЗапрос3.СписанныеТоварыКоличество КАК СписанныеТоварыКоличество1
    |ИЗ
    |    тЗапрос3 КАК тЗапрос3
    |        ПОЛНОЕ СОЕДИНЕНИЕ тЗапрос1 КАК тЗапрос1
    |        ПО (тЗапрос1.ЗаказНоменклатураСсылка = тЗапрос3.ЗаказНоменклатураСсылка)";
    
    Запрос4.УстановитьПараметр("Таблица", Таблица);
    Запрос4.УстановитьПараметр("Таблица3", Таблица3);
    Запрос4.УстановитьПараметр("Закупка", Перечисления.ВидыВоспроизводстваНоменклатуры.Закупка);
    Таблица4 = Запрос4.Выполнить().Выгрузить();
    
  3. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а в самой таблице 3 есть данные?
  4. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Да, если отдельно выводить данные из таблицы 3 то тогда корректно выводится. Единственное в таблице 1 на три колонки больше.
  5. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    это не важно, у вас же полное соединение, а не обЪединение. А в полях из таблицы 3 вообще даннх не выводит или выводит невезде?
  6. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    А, понятно, там же не ЗаказНоменклатураНаименование а ЗаказНоменклатураНаименование1.
  7. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Еще раз спрошу. Уже спрашивал но тогда так и понял. Мне нужно чтобы столбцы ЗаказНоменклатураНаименование и ЗаказНоменклатураНаименование1 представлялись одинаково.
    Код был
    Код:
    |	тЗапрос1.ЗаказНоменклатураНаименование,
    //код
    |	тЗапрос3.ЗаказНоменклатураНаименование,
    
    теперь
    Код:
    |	ВЫБОР
    |		КОГДА тЗапрос1.ЗаказНоменклатураНаименование <> NULL
    |			ТОГДА тЗапрос3.ЗаказНоменклатураНаименование
    |		ИНАЧЕ тЗапрос1.ЗаказНоменклатураНаименование
    |	КОНЕЦ КАК ЗаказНоменклатураНаименование,
    //код
    |	тЗапрос3.ЗаказНоменклатураНаименование,
    
    Как были пустоты так и остались. Ничего не могу понять.

    Вот исходный блок:
    Код:
    |	тЗапрос1.ЗаказНоменклатураНаименование,
    |	тЗапрос1.ЗаказНоменклатураАртикул,
    |	тЗапрос1.ЗаказНоменклатураКоличество,
    |	тЗапрос1.ЗаказНоменклатураКод,
    |	тЗапрос1.ЗаказНоменклатураСсылка,
    |	тЗапрос1.СписанныеТоварыКоличество,
    |	тЗапрос1.АналогНаименование,
    |	тЗапрос1.АналогАртикул,
    |	тЗапрос1.АналогКод,
    |	тЗапрос3.ЗаказНоменклатураНаименование КАК ЗаказНоменклатураНаименование1,
    |	тЗапрос3.ЗаказНоменклатураАртикул КАК ЗаказНоменклатураАртикул1,
    |	тЗапрос3.ЗаказНоменклатураКод КАК ЗаказНоменклатураКод1,
    |	тЗапрос3.ЗаказНоменклатураСсылка КАК ЗаказНоменклатураСсылка1,
    |	тЗапрос3.СписанныеТоварыКоличество КАК СписанныеТоварыКоличество1
    |ИЗ
    |	тЗапрос3 КАК тЗапрос3
    |		ПОЛНОЕ СОЕДИНЕНИЕ тЗапрос1 КАК тЗапрос1
    |		ПО (тЗапрос1.ЗаказНоменклатураСсылка = тЗапрос3.ЗаказНоменклатураСсылка)";
    
    Проблема в том что есть два различных столбца ЗаказНоменклатураНаименование и ЗаказНоменклатураНаименование1 мне нужно их в один свести. Может вытащить таблицу и по циклу пробежаться да и все? Так проблема без проблем решается.
    В конструкторе запроса решить проблему не могу.
    Хотелось бы конечно именно в конструкторе запроса разобраться в чем же проблема.
  8. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    нужно использовать конструкцию ЕСТЬ NULL

    см. синтаксис помощник по работе с запросами

    Код:
    ...
    | ВЫБОР
    |  КОГДА тЗапрос1.ЗаказНоменклатураНаименование ЕСТЬ НЕ NULL
    |   ТОГДА тЗапрос3.ЗаказНоменклатураНаименование
    |  ИНАЧЕ тЗапрос1.ЗаказНоменклатураНаименование
    | КОНЕЦ КАК ЗаказНоменклатураНаименование
    ...
    
    Если вам нужно объединить две таблицы используйте в запросе "ОБЪЕДИНИТЬ" IMHO это решит ваши проблемы
  9. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Для примера :
    Код:
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    тЗапрос1.ЗаказНоменклатураСсылка,
    |    тЗапрос1.ЗаказНоменклатураКод,
    |    тЗапрос1.ЗаказНоменклатураНаименование,
    |    тЗапрос1.ЗаказНоменклатураАртикул,
    |    тЗапрос1.ЗаказНоменклатураКоличество,
    |    тЗапрос1.СписанныеТоварыКоличество,
    |    NULL КАК АналогНаименование,
    |    NULL КАК АналогАртикул,
    |    NULL КАК АналогКод
    |ИЗ
    |    тЗапрос3 КАК тЗапрос3
    |
    |ОБЪЕДИНИТЬ
    |
    |ВЫБРАТЬ
    |    тЗапрос1.ЗаказНоменклатураСсылка,
    |    тЗапрос1.ЗаказНоменклатураКод,
    |    тЗапрос1.ЗаказНоменклатураНаименование,
    |    тЗапрос1.ЗаказНоменклатураАртикул,
    |    тЗапрос1.ЗаказНоменклатураКоличество,
    |    тЗапрос1.СписанныеТоварыКоличество,
    |    тЗапрос1.АналогНаименование,
    |    тЗапрос1.АналогАртикул,
    |    тЗапрос1.АналогКод,
    |ИЗ
    |    тЗапрос1 КАК тЗапрос1
    |
    |";
    
  10. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Всем огромное спасибо! Очень многое узнал.
    Тему можно закрывать.
  11. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Все-таки еще один вопрос остался касаемо таблицы значений.
    Нашел информацию что столбцу можно назначить тип список значений. Как это сделать вне конструктора запроса и потом извлекать все значения от туда?
  12. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Вопрос в том, как в одну ячейку поместить значения из нескольких, с последующей возможностью извлечения их от туда.
  13. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    IMHO в виртуальную таблицу такую тз не выгрузить, поскольку тип значений в списке может быть любым, и соотв. получим сообщения о ошибке "тип значения не может быть выбран" и т.п.
  14. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Плохо, буду думать другие решения.
    А как лучше найти одинаковые значения по двум разным столбцам?
    Пробовал двойной цикл организовать ужасно долго начинает думать.
  15. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Передать колонки в ТЗ и сравнить там через ....? соединение?
  16. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    И еще вопрос: как проверить в ТЗ существует ли ячейка?
    Сравнение с Null не работает.

    Не у всех строк получилось есть ячейки
  17. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    или я вопрос не поняла, или вы фигню спросили (извините за выражение)... если в ТЗ есть строки и колонки, то обязательно есть ячейки. Может вы значение в ячейке пытаетесь получить?
  18. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Скорее всего вам нужно проверять колонку, у тз есть колекция колонок, в ней и нужно проводить проверку
    выглядит примерно так
    Код:
    Если ТЗ.Колонки.Найти(<ИмяКолонки>)  = Неопределено Тогда Возврат; КонецЕсли;
    поиск значений по тз осуществляется методом "найти()"
    см. синтаксис помощник по таблице значений, многие вопросуы отпадут ;)
  19. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Спасибо, ключевое слово Неопределено помогло!
  20. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Я нахожу строку, как ее удалить или узнать ее номер?
    Код:
    Для Каждого Элемент ИЗ Массив Цикл
    Если Таблица.Колонки.Найти("ЗаказНоменклатураСсылка") = Элемент Тогда
    //какой код здесь?
    КонецЕсли;
    КонецЦикла;
    

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