Имя: Пароль:
1C
1С v8
Довести до ума кусок кода
0 kuza_87
 
22.02.13
20:43
Есть кусок кода:
Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Номенклатура,
       |    СУММА(СпецификацииНоменклатурыИсходныеКомплектующие.Количество * ОтчетПроизводстваЗаСменуПродукция.Количество) КАК Количество,
       |    СпецификацииНоменклатурыИсходныеКомплектующие.ЕдиницаИзмерения,
       |    ОтчетПроизводстваЗаСменуПродукция.Ссылка КАК Ссылка
       |ИЗ
       |    Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
       |        ПОЛНОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСменуПродукция
       |        ПО СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка = ОтчетПроизводстваЗаСменуПродукция.Спецификация
       |ГДЕ
       |    ОтчетПроизводстваЗаСменуПродукция.Ссылка.ПометкаУдаления = ЛОЖЬ
       |    И ОтчетПроизводстваЗаСменуПродукция.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
       |    И ОтчетПроизводстваЗаСменуПродукция.Спецификация В(&Спецификация)
       |
       |СГРУППИРОВАТЬ ПО
       |    СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура,
       |    СпецификацииНоменклатурыИсходныеКомплектующие.ЕдиницаИзмерения,
       |    ОтчетПроизводстваЗаСменуПродукция.Ссылка
       |
       |УПОРЯДОЧИТЬ ПО
       |    Ссылка";

   Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
   Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
   Запрос.УстановитьПараметр("Спецификация", СпецификацияНоменклатуры);

   Результат = Запрос.Выполнить();

   Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл
   Док = Выборка.Ссылка.ПолучитьОбъект();
   НоваяСтрока = Док.Материалы.Добавить();
   НоваяСтрока.Номенклатура = Выборка.Номенклатура;
   НоваяСтрока.ЕдиницаИзмерения = Выборка.ЕдиницаИзмерения;
   НоваяСтрока.Номенклатура = Выборка.Номенклатура;
   НоваяСтрока.Количество = Выборка.Количество;
   Док.Записать(РежимЗаписиДокумента.Проведение);
   Сообщить(Док);    
       
КонецЦикла;

Вот код. Суть такова: Выполняется запрос, который собирает материалы. Потом он должен эти материалы записать в табличную часть материалы документа "отчет производства за смену" (Конфигурация УПП). Как мне оптимизировать код чтобы он не перезаписывал документ каждый раз после добавления строки в таб часть, а перезаписывал бы после того как добавил все записи с таб часть по документу (предварительно очистив таб часть)?
1 H A D G E H O G s
 
22.02.13
20:45
Во имя твоей же (а еще более - учетной безопасности) - убрать руки от клавиатуры и не трогать конфигуратор. Еще лучше будет - попросить твоего начальника удалить тебя из пользователей, имеющих доступ к редактированию конфигурации.
2 mikecool
 
22.02.13
20:48
исправлю за 5000р
3 DirecTwiX
 
22.02.13
20:50
...
Итоги по ссылке сделай, а потом обходи по группировкам
4 rotting
 
22.02.13
20:51
напиши так:
Док = Выборка.Ссылка.ПолучитьОбъект();

Пока Выборка.Следующий() Цикл
   
   НоваяСтрока = Док.Материалы.Добавить();
   НоваяСтрока.Номенклатура = Выборка.Номенклатура;
   НоваяСтрока.ЕдиницаИзмерения = Выборка.ЕдиницаИзмерения;
   НоваяСтрока.Номенклатура = Выборка.Номенклатура;
   НоваяСтрока.Количество = Выборка.Количество;
   
       
КонецЦикла;
Док.Записать(РежимЗаписиДокумента.Проведение);
Сообщить(Док);
5 Homer
 
22.02.13
20:57
(3) ты не его начальник?
6 undertaker
 
22.02.13
21:07
что то мне кажется что полное соединение в запросе ни к чему....
7 Serg_1960
 
22.02.13
21:08
Если это УПП, то материалы по спецификациям запросом не получишь. Точнее сказать, получишь, но запрос будет правильно работать только для самых простейших, элементарных спецификаций.

(офф)
Для полных спецификаций, где на выходе несколько различных изделий - не работает; для спецификаций на одно изделие, но указанное на N-количество - не работает; на спецификация с формулами расчета количества, с "основным сырьём, с... далее не буду перечислять - лень напала :)
Основная теорема систематики: Новые системы плодят новые проблемы.