8.х Заполнение документа результатом из запроса,1C8.2, обычное приложение

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

  1. TopicStarter Overlay
    asdfr1
    Offline

    asdfr1

    Регистрация:
    18 июн 2011
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте!
    Пытаюсь заполнить документ результатом из запроса.
    Код:
    ПолучитьПодключениеКФайловойБД(СBase);
    Соединение=ПолучитьПодключениеКФайловойБД(СBase);[/size][/font][/color]
    [color=#585858][font=Tahoma][size=3]Запрос=СBase.NewObject("Запрос");	 //+ Выбираем ТОВАРЫ и ДОКУМЕНТЫ за период
    Запрос.Текст=
    ///////////////////////////
    ТЗ = Запрос.Выполнить().Выбрать();[/size][/font][/color]
    [color=#585858][font=Tahoma][size=3]	
    Пока ТЗ.Следующий() Цикл	 // получаем значения ТОВАРЫ
    
    НоменклатураСсылка		=Соединение.String(ТЗ.НоменклатураСсылка);[/size][/font][/color]
    [color=#585858][font=Tahoma][size=3]НовыйЭлемент = Документы.СписаниеДеталей.СоздатьДокумент();
    НовыйЭлемент.Дата=  Дата1;
    НайденнаяДеталь = Справочники.Детали.НайтиПоКоду(НоменклатураКод);
    Если НайденнаяДеталь = Справочники.Детали.ПустаяСсылка() ИЛИ НайденнаяДеталь = 0 Тогда   //  новый
    НоваяДеталь = Справочники.Детали.СоздатьЭлемент();  
    НоваяДеталь.Код = НоменклатураКод;
    НоваяДеталь.Наименование = НоменклатураСсылка;
    НоваяДеталь.Родитель = Справочники.Детали.ПустаяСсылка();
    НоваяДеталь.ПометкаУдаления = Ложь;  
    НоваяДеталь.Записать();
    Сообщить("Добавили Деталь В Справочник  "+НоменклатураСсылка);
    Иначе
    НоваяДеталь=НайденнаяДеталь.ПолучитьОбъект();
    //  НЕ новый
    КонецЕсли;[/size][/font][/color]
    [color=#585858][font=Tahoma][size=3]//Сообщить("Нашли Деталь  "+НайденнаяДеталь);[/size][/font][/color]
    [color=#585858][font=Tahoma][size=3]СтрокаДокумента = НовыйЭлемент.Детали.Добавить();
    СтрокаДокумента.Деталь= НоваяДеталь.Ссылка;[/size][/font][/color]
    [color=#585858][font=Tahoma][size=3]КонецЦикла; // ТЗ[/size][/font][/color]
    
    [color=#585858][font=Tahoma][size=3]   НовыйЭлемент.Номер=  "К"+Прав(НомерДок, 10);
    Попытка
    НовыйЭлемент.Записать(); //.Записать();
    Исключение
    Предупреждение("Не удалось записать объект """ + НовыйЭлемент + """!
    |" + ОписаниеОшибки(), 60);
    КонецПопытки;
    
    
    НовыйЭлемент.ПолучитьФорму("ФормаДокумента").Открыть();
    НоваяДеталь.Записать();



    и упорно добавляет одну позицию в табличную часть документа "Детали" и ошибкой номер документа не уникальный.
  2. nickpugachev
    Offline

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

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    вынесите строку
    Код:
    НовыйЭлемент = Документы.СписаниеДеталей.СоздатьДокумент();
    перед циклом, а то у вас в цикле создаются документы, а записывается последний

    ругается на неуникальность номера документа потому что есть уже документ с таким номером
  3. TopicStarter Overlay
    asdfr1
    Offline

    asdfr1

    Регистрация:
    18 июн 2011
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    ...в цикле создаются документы... не досмотрел, сделал заполнение ТабЧасти отдельно в цикле и всё заработало как надо [​IMG]! СПАСИБО!

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