основной кусок кода вот: // Удаляем старое содержимое MW = СоздатьОбъект("MetaDataWork"); ТабDst = MW.GetRefTableName(Справочник); ТекстЗапроса = "DELETE FROM " + ТабDst; SQLComm.ExecuteStatement (ТекстЗапроса);
// Поля источника СписокПолей = "Id,Code,Descr,IsFolder,IsMark,ParentId,VerStamp,"; СписокПолейSrc = СписокПолей; КолПовт = СписокПолейОбяз.РазмерСписка(); Для Поз = 1 По КолПовт Цикл Идентификатор = СписокПолейОбяз.ПолучитьЗначение(Поз); СписокПолейSrc = СписокПолейSrc + "SP" + MW.GetRefFieldId("Номенклатура",Идентификатор) + ","; КонецЦикла; СписокПолейSrc = СписокПолейSrc + "Id"; СписокПолейSrc = СтрЗаменить(СписокПолейSrc, "ParentId", """ 0 """); // Поля приемника СписокПолейDst = СписокПолей; Для Поз = 1 По КолПовт Цикл Идентификатор = СписокПолейОбяз.ПолучитьЗначение(Поз); СписокПолейDst = СписокПолейDst + "SP" + MW.GetRefFieldId(Справочник, Идентификатор) + ","; КонецЦикла; СписокПолейDst = СписокПолейDst + "SP" + MW.GetRefFieldId(Справочник, "Номенклатура") + ","; СписокПолейDst = СписокПолейDst + "SP" + MW.GetRefFieldId(Справочник, "Остаток") + ","; СписокПолейDst = СписокПолейDst + "SP" + MW.GetRefFieldId(Справочник, "ОстатокПоФирме") + ","; СписокПолейDst = СписокПолейDst + "SP" + MW.GetRefFieldId(Справочник, "Цена");
ТекстЗапросаОстаткиФирма = ТекстЗапросаПоОстаткам(1); // Запрос на вставку выборки в приемник ТекстЗапроса = "INSERT INTO " + ТабDst + " |(" + СписокПолейDst + ") |SELECT " + СписокПолейSrc + ",0.00, 0.00, 0.00 |FROM $Справочник.Номенклатура Ном |WHERE 1 = 1"; Если ТолькоСОстатками = 1 Тогда ТекстЗапроса = ТекстЗапроса; ТекстЗапроса = ТекстЗапроса + " AND | (Ном.Id IN (SELECT SOst.Id FROM (" + ТекстЗапросаОстаткиФирма + ")SOst))"; Иначе Если ПустоеЗначение(ВыбТМЦ) = 0 Тогда ТекстЗапроса = ТекстЗапроса + " AND |(Ном.ParentId = :ВыбТМЦ)"; КонецЕсли; КонецЕсли;
// Сообщить(ТекстЗапроса); SQLComm.SetTextParam ("ДатаИтогов", ДатаИтогов); SQLComm.ExecuteStatement (ТекстЗапроса);
|