Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
15 Дек 2017, 11:43
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Заполнение документа результатом из запроса.  (Прочитано 2165 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн asdfr1

  • **
  • Сообщений: 93
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-10-28
  • Сайт: 
ПолучитьПодключениеКФайловойБД(СBase);
Соединение=ПолучитьПодключениеКФайловойБД(СBase);

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

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

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

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

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

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


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


Оффлайн asdfr1

  • **
  • Сообщений: 93
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-10-28
  • Сайт: 
ПолучитьПодключениеКФайловойБД(СBase);
Соединение=ПолучитьПодключениеКФайловойБД(СBase);

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

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

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

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

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

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


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

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

Оффлайн Vit1501

  • ****
  • Сообщений: 360
  • РЕПУТАЦИЯ: 60
  • КПД: 17%
  • Регистрация: 2010-06-05
  • Сайт: 
  • Профессия: Программист 1С
таких наворотов в коде я давно уже не видел:) Можете объяснить почему документ и справочник создаются в цикле а записываются после цикла? Получается что запишется только последний документ. Ну и не понимаю зачем получать объект элемента справочника и записывать его если мы его не меняем ( когда просто нашли его)?
Добавлено: 20 Янв 2014, 16:18

Я бы переделал структуру кода так:
 1 Получаем список номенклатуры для списания ( это ваш запрос который вы выгружаете в ТЗ)
 2 создаем документ списания
 3 начинаем цикл обхода ТЗ
    3.1 ищем номенклатуру в справочнике
    3.2 Если не нашли, то создаем новую номенклатуру, заполняем ее, записываем и переменной НайденнаяДеталь присваиваем ссылку на этот элемент справочника, если         нашли    то просто НайденнаяДеталь присваиваем ссылку на найденный элемент справочника
    3.3 Добавляем строку в табличную часть созданного документа
 4 заканчиваем цикл
 5 записываем документ

Оффлайн asdfr1

  • **
  • Сообщений: 93
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-10-28
  • Сайт: 
таких наворотов в коде я давно уже не видел:) Можете объяснить почему документ и справочник создаются в цикле а записываются после цикла? Получается что запишется только последний документ. Ну и не понимаю зачем получать объект элемента справочника и записывать его если мы его не меняем ( когда просто нашли его)?
Добавлено: 20 Янв 2014, 16:18

... документ и справочник создаются в цикле...  не досмотрел, сделал заполнение ТабЧасти отдельно в цикле и всё заработало как надо :)! СПАСИБО!


Теги:
 

Не открывает форму сохраненного документа, открывает форму нового.

Автор EHOTРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 4475
Последний ответ 13 Апр 2012, 23:26
от Vit1501
Добавление сведений в графу "основание" документа "ТОРГ-12"

Автор Ярослав1984Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 7746
Последний ответ 20 Авг 2013, 18:45
от Ярослав1984
"Не совпадают сумма документа и общая сумма по платежным ведомостям"

Автор yunovoРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 4784
Последний ответ 11 Янв 2015, 02:55
от MuI_I_Ika
При создании нового документа "Заявка на кассовый расход" Ошибка "Значение 9 поля "номер" не уникально

Автор ppkmliteРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 8518
Последний ответ 22 Ноя 2014, 04:50
от cska-fanat-kz
Фамилия руководителя в печатных формах документа "Акт сверки", "Акт об оказании"

Автор MKozzlikРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 7343
Последний ответ 03 Фев 2012, 17:27
от Dinah

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
177 Сообщений
ilyay ilyay
69 Сообщений
oleg-x
48 Сообщений
AIFrame
46 Сообщений
alex0402
44 Сообщений
andron81_81
38 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
31 Сообщений
BuhRust
30 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 818
  • Точка Скрытых: 0
  • Точка Пользователей: 12
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal