helpf.pro
Регистрация

v8: не добавляет строки с номенклатурой

E_Migachev
22.01.2014 14:50Прочитано: 3609
Здравствуйте!
Пытаюсь заполнить документ результатом из запроса.
Код 1C v 8.х
 ПолучитьПодключениеКФайловойБД(СBase);
Соединение=ПолучитьПодключениеКФайловойБД(СBase);

Запрос=СBase.NewObject("Запрос"); //+ Выбираем ТОВАРЫ и ДОКУМЕНТЫ за период
Запрос.Текст=
///////////////////////////
ТЗ = Запрос.Выполнить().Выбрать();


Пока ТЗ.Следующий() Цикл // получаем значения ТОВАРЫ

НоменклатураСсылка =Соединение.String(ТЗ.НоменклатураСсылка);

НовыйЭлемент = Документы.СписаниеДеталей.СоздатьДокумент();
НовыйЭлемент.Дата= Дата1;
НайденнаяДеталь = Справочники.Детали.НайтиПоКоду(НоменклатураКод);
Если НайденнаяДеталь = Справочники.Детали.ПустаяСсылка() ИЛИ НайденнаяДеталь = 0 Тогда // новый
НоваяДеталь = Справочники.Детали.СоздатьЭлемент();
НоваяДеталь.Код = НоменклатураКод;
НоваяДеталь.Наименование = НоменклатураСсылка;
НоваяДеталь.Родитель = Справочники.Детали.ПустаяСсылка();
НоваяДеталь.ПометкаУдаления = Ложь;
НоваяДеталь.Записать();
Сообщить("Добавили Деталь В Справочник "+НоменклатураСсылка);
Иначе
НоваяДеталь=НайденнаяДеталь.ПолучитьОбъект();
// НЕ новый
КонецЕсли;

//Сообщить("Нашли Деталь "+НайденнаяДеталь);

СтрокаДокумента = НовыйЭлемент.Детали.Добавить();
СтрокаДокумента.Деталь= НоваяДеталь.Ссылка;

КонецЦикла; // ТЗ


НовыйЭлемент.Номер= "К"+Прав(НомерДок, 10);
Попытка
НовыйЭлемент.Записать(); //.Записать();
Исключение
Предупреждение("Не удалось записать объект """ + НовыйЭлемент + """!
|" + ОписаниеОшибки(), 60);
КонецПопытки;


НовыйЭлемент.ПолучитьФорму("ФормаДокумента").Открыть();
НоваяДеталь.Записать();

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

Разместил: asdfr1
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
22.01.2014 15:20Ответ № 1
т.к. всегда создаешь новый документ

Вот так примерно:
Код 1C v 8.х
 НовыйЭлемент = Документы.СписаниеДеталей.СоздатьДокумент();  
НовыйЭлемент.Дата= Дата1;

Пока ТЗ.Следующий() Цикл // получаем значения ТОВАРЫ
НоменклатураСсылка =Соединение.String(ТЗ.НоменклатураСсылка);
НайденнаяДеталь = Справочники.Детали.НайтиПоКоду(НоменклатураКод);

Если НайденнаяДеталь .Пустая() Тогда
НоваяДеталь = Справочники.Детали.СоздатьЭлемент();
НоваяДеталь.Код = НоменклатураКод;
НоваяДеталь.Наименование = НоменклатураСсылка;
НоваяДеталь.Родитель = Справочники.Детали.ПустаяСсылка();
НоваяДеталь.ПометкаУдаления = Ложь;
НоваяДеталь.Записать();
Сообщить("Добавили Деталь В Справочник "+НоменклатураСсылка);
Иначе
НоваяДеталь=НайденнаяДеталь.ссылка;// НЕ новый
КонецЕсли;

СтрокаДокумента = НовыйЭлемент.Детали.Добавить();
СтрокаДокумента.Деталь= НоваяДеталь.Ссылка;

КонецЦикла;
asdfr1
31.01.2014 08:49Ответ № 2
СПС )!
Подсказка: Для выделения Кода используйте (в редакторе).
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.