Имя: Пароль:
1C
1С v8
СКД: 2 регистра, две таблицы, одни параметры
0 dsdred
 
20.07.12
08:22
Стоит задача сделать отчет именно в СКД
по 2 однотипным регистрам сведений ЦенаНоменклатуры и ЦенаНоменклатуыПоставщиков вывести 2 таблицы
вывод осуществляется по заданым пользователем параметрам Номенклатура, артикул ну и тому подобное.

Без СКД понимаю как сделать с ней неврубаюсь, направте в нужное русло пожалуйста.
1 LAAry
 
20.07.12
08:37
В запросе выбираешь 2 таблицы без объединения/соединения. Выбираешь из них нужные поля. В Настройках структуры строишь 2 таблицы из разных полей с 2-я отборами: ЦенаНоменклатуры.Номенклатура = ВыборПользователя и ЦенаНоменклатуыПоставщиков .Номенклатура = ВыборПользователя.
2 dsdred
 
20.07.12
09:44
(1)
Сложность в том для меня, что параметры могут быть пустыми
Если параметр пустой то его неучитывать в выборе данных
3 Jokerman
 
20.07.12
09:48
(2) параметры вынести в отбор СКД, а у отбора в СКД есть галка "использовать"
4 dsdred
 
20.07.12
09:51
(3)
Я правельно понимаю, что после этих действий у пользователя будет возможность ввести данные параметры, но если он их не введет то запрос отработает так как будто они неучаствуют в отборе вовсе?
5 Jokerman
 
20.07.12
10:03
(4) нужно будет отреагировать на события изменения, если значение пустое, то программно убирать галку
6 Jokerman
 
20.07.12
10:03
Процедура УстановитьОтбор(ИмяПоля,Значение)
   
   ПолеОтбора = Новый ПолеКомпоновкиДанных(ИмяПоля);
   Для каждого Элемент Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
       Если Элемент.ЛевоеЗначение = ПолеОтбора Тогда
           ЭлементОтбора = Элемент;
           Прервать;
       КонецЕсли;
   КонецЦикла;
   Если ЭлементОтбора = Неопределено Тогда
       ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   КонецЕсли;
   ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
   ЭлементОтбора.ЛевоеЗначение = ПолеОтбора;
   ЭлементОтбора.ПравоеЗначение = Значение;
   ЭлементОтбора.Использование = НЕ Значение.Пустая();
   
КонецПроцедуры
7 Администратор 1С
 
20.07.12
12:40
ВЫБРАТЬ
   ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура,
   ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена,
   ЦеныНоменклатурыСрезПоследних.Цена КАК Ценапоставщика
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(Номенклатура) КАК Товар}) КАК ЦеныНоменклатурыСрезПоследних
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(, {(Номенклатура) КАК Товар}) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
       ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура
{ГДЕ
   ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Товар}
8 Администратор 1С
 
20.07.12
12:40
товар добавить в отбор СКД
9 dsdred
 
23.07.12
15:09
Сделал все гораздо проще))
3 запроса всех данных
1 по номенклатуре и 2 по регистрам

Связь через номенклатуру и отбор через нее же.
Вывод таблиц сформированых по нужным данным.

Собственно все просто получилось.