Имя: Пароль:
1C
1С v8
Запрос, нужна консультация
0 2S
 
16.04.14
14:17
Сам запрос
ВЫБРАТЬ
    ВнешнийИсточник.Номенклатура КАК Номенклатура,
    ВнешнийИсточник.Количество
ПОМЕСТИТЬ ТаблицаНоменклатуры
ИЗ
    &ВнешнийИсточник КАК ВнешнийИсточник

ИНДЕКСИРОВАТЬ ПО
    Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
    ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток,0) КАК КоличествоОстаток10
ПОМЕСТИТЬ МатериалыОстатки10
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(
            &Период,
            Счет В (&Счет10),
            ,
            Организация = &Организация И Субконто1 В (ВЫБРАТЬ Номенклатура ИЗ ТаблицаНоменклатуры)) КАК ХозрасчетныйОстатки

ИНДЕКСИРОВАТЬ ПО
    Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ХозрасчетныйОстаткиДМ.Субконто1 КАК Номенклатура,
    ХозрасчетныйОстаткиДМ.Субконто2 КАК ДМ,
    ЕСТЬNULL(ХозрасчетныйОстаткиДМ.КоличествоОстаток,0) КАК КоличествоОстатокДМ
ПОМЕСТИТЬ МатериалыОстаткиДМ
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(
            &Период,
            Счет В (&СчетДМ),
            ,
            Организация = &Организация И Субконто1 В (ВЫБРАТЬ Номенклатура ИЗ ТаблицаНоменклатуры)) КАК ХозрасчетныйОстаткиДМ

ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    ДМ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТаблицаНоменклатуры.Номенклатура,
    ТаблицаНоменклатуры.Количество,
    МатериалыОстатки10.КоличествоОстаток10,
    МатериалыОстаткиДМ.ДМ,
    МатериалыОстаткиДМ.КоличествоОстатокДМ
ИЗ
    ТаблицаНоменклатуры КАК ТаблицаНоменклатуры
        ЛЕВОЕ СОЕДИНЕНИЕ МатериалыОстатки10 КАК МатериалыОстатки10
        ПО ТаблицаНоменклатуры.Номенклатура = МатериалыОстатки10.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ МатериалыОстаткиДМ КАК МатериалыОстаткиДМ
        ПО ТаблицаНоменклатуры.Номенклатура = МатериалыОстаткиДМ.Номенклатура
1 2S
 
16.04.14
14:18
Запрос.УстановитьПараметр("Организация", Ссылка.Организация);
    Запрос.УстановитьПараметр("Период",      Новый Граница(Ссылка.Дата, ВидГраницы.Исключая));
    Запрос.УстановитьПараметр("Счет10",      ПланыСчетов.Хозрасчетный.Материалы);
    Запрос.УстановитьПараметр("СчетДМ",      ПланыСчетов.Хозрасчетный.НайтиПоКоду("ДР.МЦ"));
    Запрос.УстановитьПараметр("ВнешнийИсточник", ТаблицаМатериалы);
2 vicof
 
16.04.14
14:20
С вас 3000 рублей за консультацию
3 2S
 
16.04.14
14:20
ТаблицаМатерилы с колонками
Ссылка,Номенклатура,Количество

Итоговый результат не возвращает значения по левым соединениям
Не соображу где косячу
4 vicof
 
16.04.14
14:21
Виды субконто в таблицах укажи. Еще 3000.
5 shuhard
 
16.04.14
14:22
(3) ни о чем
форум не будет гадать на каком счете и когда лёг остаток
6 2S
 
16.04.14
14:24
(5)данные есть, зуб даю )
(4) возможно, спасибо, сейчас попробуем )
7 vicof
 
16.04.14
14:26
ЕСТЬNULL в виртуальных таблицах это сильно
8 2S
 
16.04.14
14:27
(7) повсеместно используется в типовых решениях
9 Wobland
 
16.04.14
14:27
(8) а дай пример
10 Ненавижу 1С
 
гуру
16.04.14
14:28
(8) врешь наверное
11 2S
 
16.04.14
14:28
модуль спецодежды
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ХозрасчетныйОстаткиИОбороты.Счет КАК СчетПередачи,
    |    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
    |    ХозрасчетныйОстаткиИОбороты.Субконто2 КАК ПартияМатериаловВЭксплуатации,
    |    ХозрасчетныйОстаткиИОбороты.Субконто3 КАК ФизЛицо,
    |    ХозрасчетныйОстаткиИОбороты.Подразделение КАК Подразделение,
    |    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СтоимостьНачальныйОстаток,
    |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СтоимостьКонечныйОстаток,
    |    ХозрасчетныйОстаткиИОбороты.СуммаПРКонечныйОстатокДт КАК СтоимостьПРКонечныйОстаток,
    |    ХозрасчетныйОстаткиИОбороты.СуммаВРКонечныйОстатокДт КАК СтоимостьВРКонечныйОстаток,
    |    ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт КАК КоличествоОстаток,
    |    СпецодеждаОстаткиМЦ.СчетМЦ КАК СчетМЦ,
    |    ЕСТЬNULL(СпецодеждаОстаткиМЦ.ПервоначальнаяСтоимостьКонечныйОстаток, 0) КАК ПервоначальнаяСтоимостьКонечныйОстаток,
    |    ЕСТЬNULL(СпецодеждаОстаткиМЦ.ПервоначальнаяСтоимостьПРКонечныйОстаток, 0) КАК ПервоначальнаяСтоимостьПРКонечныйОстаток,
    |    ЕСТЬNULL(СпецодеждаОстаткиМЦ.ПервоначальнаяСтоимостьВРКонечныйОстаток, 0) КАК ПервоначальнаяСтоимостьВРКонечныйОстаток,
    |    ЕСТЬNULL(" + ?(ЭтоРегламентнаяОперация, "ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт", "ТаблицаНоменклатуры.Количество") + ", 0) КАК Количество
    |ПОМЕСТИТЬ СпецодеждаОстатки
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Период, , Счет В (&СчетаУчетаСпецодежды), &ВидыСубконтоСпецодежда, Организация = &Организация"+ТекстОтбораМатериалов+") КАК ХозрасчетныйОстаткиИОбороты";
12 2S
 
16.04.14
14:29
упс, пардон )
13 2S
 
16.04.14
14:33
нет, дело не в видах субконто
14 2S
 
16.04.14
14:33
собственно сама функция
Функция ПодготовитьТаблицуПеремещенияСписанияТМЦДрагоценныхМеталлов(ТаблицаМатериалы, Отказ) Экспорт
    
    Ссылка = ТаблицаМатериалы[0].Ссылка;
    Склад  = ?(ТипЗнч(Ссылка) = Тип("ДокументСсылка.ПеремещениеТоваров"), Ссылка.СкладОтправитель, Ссылка.Склад);
    
    Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("Организация", Ссылка.Организация);
    Запрос.УстановитьПараметр("Период",      Новый Граница(Ссылка.Дата, ВидГраницы.Исключая));
    Запрос.УстановитьПараметр("Счет10",      ПланыСчетов.Хозрасчетный.Материалы);
    Запрос.УстановитьПараметр("СчетДМ",      ПланыСчетов.Хозрасчетный.НайтиПоКоду("ДР.МЦ"));
    
    ВидыСубконто10 = Новый Массив;
    ВидыСубконто10.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
        
    ВидыСубконтоДМ = Новый Массив;
    ВидыСубконтоДМ.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
    ВидыСубконтоДМ.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ДрагоценныеМеталлы);
    
    Запрос.УстановитьПараметр("ВидыСубконтоДМ",      ВидыСубконтоДМ);
    Запрос.УстановитьПараметр("ВидыСубконто10",      ВидыСубконто10);
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ВнешнийИсточник.Номенклатура КАК Номенклатура,
    |    ВнешнийИсточник.Количество
    |ПОМЕСТИТЬ ТаблицаНоменклатуры
    |ИЗ
    |    &ВнешнийИсточник КАК ВнешнийИсточник
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    Номенклатура
    |;
    |";
    Запрос.УстановитьПараметр("ВнешнийИсточник", ТаблицаМатериалы);
    ТекстОтбораМатериалов = " И Субконто1 В (ВЫБРАТЬ Номенклатура ИЗ ТаблицаНоменклатуры)";
    
    Запрос.Текст = Запрос.Текст + "
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
    |    ХозрасчетныйОстатки.КоличествоОстаток КАК КоличествоОстаток10
    |ПОМЕСТИТЬ МатериалыОстатки10
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Остатки(
    |            &Период,
    |            Счет В (&Счет10),
    |            &ВидыСубконто10,
    |            Организация = &Организация"+ТекстОтбораМатериалов+") КАК ХозрасчетныйОстатки
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    Номенклатура
    |;
    |";
    Запрос.Текст = Запрос.Текст + "
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ХозрасчетныйОстаткиДМ.Субконто1 КАК Номенклатура,
    |    ХозрасчетныйОстаткиДМ.Субконто2 КАК ДМ,
    |    ХозрасчетныйОстаткиДМ.КоличествоОстаток КАК КоличествоОстатокДМ
    |ПОМЕСТИТЬ МатериалыОстаткиДМ
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Остатки(
    |            &Период,
    |            Счет В (&СчетДМ),
    |            &ВидыСубконтоДМ,
    |            Организация = &Организация"+ТекстОтбораМатериалов+") КАК ХозрасчетныйОстаткиДМ
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    Номенклатура,
    |    ДМ
    |;
    //ОБЩИЙ ЗАПРОС
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ТаблицаНоменклатуры.Номенклатура,
    |    ТаблицаНоменклатуры.Количество,
    |    МатериалыОстатки10.КоличествоОстаток10,
    |    МатериалыОстаткиДМ.ДМ,
    |    МатериалыОстаткиДМ.КоличествоОстатокДМ
    |ИЗ
    |    ТаблицаНоменклатуры КАК ТаблицаНоменклатуры
    |        ЛЕВОЕ СОЕДИНЕНИЕ МатериалыОстатки10 КАК МатериалыОстатки10
    |        ПО ТаблицаНоменклатуры.Номенклатура = МатериалыОстатки10.Номенклатура
    |        ЛЕВОЕ СОЕДИНЕНИЕ МатериалыОстаткиДМ КАК МатериалыОстаткиДМ
    |        ПО ТаблицаНоменклатуры.Номенклатура = МатериалыОстаткиДМ.Номенклатура";
    
    ТаблицаПеремещенияСписанияМатериалы = Запрос.Выполнить().Выгрузить();

    
КонецФункции
15 vicof
 
16.04.14
14:34
ПланыСчетов.Хозрасчетный.НайтиПоКоду("ДР.МЦ") - сокращение от дерьмецо?
Ну ты уже каждый запрос по отдельности отлаживал, да?
16 2S
 
16.04.14
14:35
(15) ты чего такой дерзкий?
17 Wobland
 
16.04.14
14:37
(16) эх ты.. а ещё вон какую полоску отрастил
18 vicof
 
16.04.14
14:39
(16) Чо, уже поинтересоваться нельзя?
19 2S
 
16.04.14
14:39
(18) ДР.МЦ - драгоценные металлы по материальным ценностям
20 vicof
 
16.04.14
14:40
(19) Спасибо, интерес удовлетворен. Но материальные потребности нет)
21 vicof
 
16.04.14
14:45
А почему вид границы - исключая?
22 2S
 
16.04.14
14:46
(21) не в этом суть проблемы
23 vicof
 
16.04.14
14:49
(22) По-моему суть проблемы в том, что один из присутствующих в ветке не хочет отладить запрос и установить isnull в последней таблице.
24 Wobland
 
16.04.14
14:49
(23) ты знал! это я
25 2S
 
16.04.14
15:10
ну что, умники, ошибку скажете? на поверхности она
26 Ёпрст
 
гуру
16.04.14
15:13
Типы не совпадают поди да ?..
чего там за запрос к внешнему источнику то ?
27 2S
 
16.04.14
15:15
Епрст, тебе скажу )
Счет В ИЕРАРХИИ
28 vicof
 
16.04.14
15:17
(27) Извини, телепатия сломалась.
Программист всегда исправляет последнюю ошибку.