8.х Результат запроса

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем ЕЛЕНА ЧЕРНЫШЕВА, 7 сен 2015.

  1. TopicStarter Overlay
    ЕЛЕНА ЧЕРНЫШЕВА
    Offline

    ЕЛЕНА ЧЕРНЫШЕВА Опытный в 1С

    Регистрация:
    2 сен 2015
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте! Помогите разобраться с вопросом. Результат запроса на выводит в таблицу значений.
    1С УПП 8.3
    код
    Код:
    Запрос = Новый Запрос;
       Запрос.УстановитьПараметр("ВидВоспроизводства",НовыйДокумент.Ссылка);
       Запрос.Текст ="ВЫБРАТЬ
       |   ЗаказНаПроизводствоМатериалы.ВидВоспроизводства,
       |   ЗаказНаПроизводствоМатериалы.Номенклатура
       |ИЗ
       |   Документ.ЗаказНаПроизводство.Материалы КАК ЗаказНаПроизводствоМатериалы
       |ГДЕ
       |   ЗаказНаПроизводствоМатериалы.ВидВоспроизводства = &ВидВоспроизводства";
       ТаблЗнач = Запрос.Выполнить().Выгрузить();
       ТаблЗнач.ВыбратьСтроку();
       Для каждого Строка ИЗ ТаблЗнач Цикл
         Результат = Строка.ВидВоспроизводстваНоменклатуры;
         Если Результат = Перечисления.ВидыВоспроизводстваНоменклатуры.Производство Тогда
           Основание = НовыйДокумент.Ссылка;     
         КонецЕсли;
         Если Результат = Перечисления.ВидыВоспроизводстваНоменклатуры.Закупка Тогда
           ОткрытьЗначение(НовыйДокумент.Ссылка);
           Прервать;
         КонецЕсли;
       КонецЦикла;
    Последнее редактирование модератором: 7 сен 2015
  2. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Запрос.УстановитьПараметр("ВидВоспроизводства",НовыйДокумент.Ссылка);

    Вид воспроизводства - это вообще то перечисление
    --- Объединение сообщений, 7 сен 2015 ---
    ВидыВоспроизводстваНоменклатуры
  3. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Что будет, если в ТаблЗнач будет штук так 100 уникальных строк?
  4. TopicStarter Overlay
    ЕЛЕНА ЧЕРНЫШЕВА
    Offline

    ЕЛЕНА ЧЕРНЫШЕВА Опытный в 1С

    Регистрация:
    2 сен 2015
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Я поменяла, выдаёт ошибку:
    {Форма.Форма.Форма(38)}: Ошибка при вызове метода контекста (Выполнить)
    ТаблЗнач = Запрос.Выполнить().Выгрузить();
    по причине:
    {(7, 52)}: Не задано значение параметра "ВидВоспроизводства"
    ЗаказНаПроизводствоМатериалы.ВидВоспроизводства = <<?>>&ВидВоспроизводства
    --- Объединение сообщений, 7 сен 2015 ---
    Там их 10 с начала должно быть, затем 8, затем 2.))
  5. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    НУ так поменяли на что?
  6. TopicStarter Overlay
    ЕЛЕНА ЧЕРНЫШЕВА
    Offline

    ЕЛЕНА ЧЕРНЫШЕВА Опытный в 1С

    Регистрация:
    2 сен 2015
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    ВидВоспроизводства на ВидыВоспроизводстваНоменклатуры.
    --- Объединение сообщений, 7 сен 2015 ---
    Мне нужно получить таблицу значений в которой будут две строчки: 1 материалы , 2 вид воспроизводства, соответственно в колонках на против каждого материала его вид воспроизводства.
  7. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    1.Я вам советую книгу по програмированию или по запросам почитать.

    2. Это я вам написал как перечисление называется.

    Вы же у себя в коде пишите Если Результат = Перечисления.ВидыВоспроизводстваНоменклатуры.Производство

    Так почему когда параметр устнавливаете то пишите просто ВидыВоспроизводстваНоменклатуры
    На до же то же
    Запрос.УстановитьПараметр("ВидВоспроизводства",Перечисления.ВидыВоспроизводстваНоменклатуры.Производство);

    3 если Вы устнавливаете отбор по виду воспроизводства в запросе, то зачем Вам проверки

    Если Результат = Перечисления.ВидыВоспроизводстваНоменклатуры.Производство

    У Вас же отбор уже будет с нужным видом
  8. TopicStarter Overlay
    ЕЛЕНА ЧЕРНЫШЕВА
    Offline

    ЕЛЕНА ЧЕРНЫШЕВА Опытный в 1С

    Регистрация:
    2 сен 2015
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Помимо ВидыВоспроизводстваНоменклатуры.Производство, есть ВидыВоспроизводстваНоменклатуры. Закупка. И мне нодо чтобы в таблице было указано какой материал куплен, а какой производится.
    --- Объединение сообщений, 7 сен 2015 ---
    А у меня выходит таблица просто с наименованием строк: номенклатура и вид воспроизводства, но не заполняются колонки.
  9. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    НУ тогда вопрос, зачем отбор в запросе по виду номенклатуры

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

    ГДЕ
    | ЗаказНаПроизводствоМатериалы.Ссылка = &ВидВоспроизводства";
    Запрос.УстановитьПараметр("ВидВоспроизводства",НовыйДокумент.Ссылка);
    --- Объединение сообщений, 7 сен 2015 ---
    почитайте книги. а то не понимаете что делаете
    ЕЛЕНА ЧЕРНЫШЕВА нравится это.
  10. TopicStarter Overlay
    ЕЛЕНА ЧЕРНЫШЕВА
    Offline

    ЕЛЕНА ЧЕРНЫШЕВА Опытный в 1С

    Регистрация:
    2 сен 2015
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Сп
    СПАСИБО Вам огромное за помощь и терпение!!! ПОЛУЧИЛОСЬ!!!
    --- Объединение сообщений, 7 сен 2015 ---
    После нажатия ок в таблице выдает ошибку:
    {Форма.Форма.Форма(42)}: Поле объекта не обнаружено (ВидВоспроизводстваНоменклатуры)
    Результат = Строка.ВидВоспроизводстваНоменклатуры;
  11. TopicStarter Overlay
    ЕЛЕНА ЧЕРНЫШЕВА
    Offline

    ЕЛЕНА ЧЕРНЫШЕВА Опытный в 1С

    Регистрация:
    2 сен 2015
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    После нажатия ок в таблице выдает ошибку:
    {Форма.Форма.Форма(42)}: Поле объекта не обнаружено (ВидВоспроизводстваНоменклатуры)
    Результат = Строка.ВидВоспроизводстваНоменклатуры;
  12. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    покажите. како код у Вас сейчас
  13. TopicStarter Overlay
    ЕЛЕНА ЧЕРНЫШЕВА
    Offline

    ЕЛЕНА ЧЕРНЫШЕВА Опытный в 1С

    Регистрация:
    2 сен 2015
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    СоздатьДокументЗаказНаПроизводство(Основание);
    НовыйДокумент = Документы.ЗаказНаПроизводство.СоздатьДокумент();
    НовыйДокумент.Дата = Основание.Дата;
    НовыйДокумент.Заполнить(Основание);
    НовыйДокумент.ЗаполнитьМатериалыПоСпецификации(НовыйДокумент.Материалы, "Материалы");
    НовыйДокумент.ДатаЗапуска = Основание.ДатаЗапуска;
    НовыйДокумент.ДатаИсполнения = Основание.ДатаИсполнения ;
    НовыйДокумент.Записать();

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

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Ну У вас же в запросе
    | ЗаказНаПроизводствоМатериалы.ВидВоспроизводства

    Тогда и
    Результат = Строка.ВидыВоспроизводстваНоменклатуры; должна быть Результат = Строка.ВидВоспроизводства;
  15. TopicStarter Overlay
    ЕЛЕНА ЧЕРНЫШЕВА
    Offline

    ЕЛЕНА ЧЕРНЫШЕВА Опытный в 1С

    Регистрация:
    2 сен 2015
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    --- Объединение сообщений, 7 сен 2015 ---
    Мне нужно сформировать из одного заказа на производство два заказа, а у меня получается,что при каждом нажатии "сформировать" формируется новый заказ на производство! Подскажите, что у меня сделано не так.
    Последнее редактирование: 7 сен 2015
  16. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Ну у вас же так и написано, никаких же проверок.

    Все банальное просто.
    Когда Вы на основании одного заказа создаете другой заказ, то у вас в документе, который создался в ТЧ продукция должна ставиться сслыка на заказ на основании котрого вы создаете. что вот этот полуфабрикат будет изготовлен под этот заказ.
    Так вот вам перед созданием документа надо проверить есть ли для данной номенклатуры и основания уже заказ или нет
  17. TopicStarter Overlay
    ЕЛЕНА ЧЕРНЫШЕВА
    Offline

    ЕЛЕНА ЧЕРНЫШЕВА Опытный в 1С

    Регистрация:
    2 сен 2015
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Я правильно Вас поняла, перед созданием Нового Документа нужно прописать проверку.
  18. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    ну принципе да.

    Вообще можно все в запросе сделать выбирать только те Материалы для которых нет заказов на производство т.е
    запрос на проверку и запросна выборку объеденить
  19. TopicStarter Overlay
    ЕЛЕНА ЧЕРНЫШЕВА
    Offline

    ЕЛЕНА ЧЕРНЫШЕВА Опытный в 1С

    Регистрация:
    2 сен 2015
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Не подскажете, как сделать , что бы при нажатии кнопки сформировать заказ на производство, создавалось сразу два заказа .
  20. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Да тут то дело не в двух заказах
    А если у Вас в ТЧ будет 3 материала которые надо производить, то 3 заказа

    Вам надо как я уже сказал надо сделать запрос в котром вы выбираете из ТЧ ту номенклатуру по котрой надо делать заказы, а затем в цикле ее обходя вызываете процедуру создания документа

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