Имя: Пароль:
1C
1С v8
v8: СКД проблемы с расчетом итогов при СОЕДИНЕНИИ двух таблиц.
0 LLIaMaH
 
07.03.12
07:09
Использую такой запрос в СКД.

Поля Регистратор и ПериодСекунда выбраны везде и помечены в настройках полей СКД (период 1 и 2), все поля остатков тоже помечены как Количество НачОст или КонОст.

В таком виде запрос нормально отрабатывается СКД когда настроены группировки Контрагент/Номенклатура/Регистратор. Проблемы с остатками в различном виде проявляются когда начинаешь играться с группировками в настройках компановки, например убираешь группировку "Регистратор".

Хотелось бы большей гибкости от СКД именно для такого отчета по двум таблицам остатков. Если отдельно взять запрос из первых двух, формирующих виртуальные таблицы и создать на его основе отчет в СКД, то СКД номрально отрабатывает при любой настройке группировок, но когда я пытаюсь СОЕДИНИТЬ результаты то ничего не получается.

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ОстаткиТМЦ.Контрагент,
   ОстаткиТМЦ.Номенклатура,
   ОстаткиТМЦ.Регистратор,
   ОстаткиТМЦ.ПериодСекунда,
   ОстаткиТМЦ.КоличествоШтукНачальныйОстаток,
   ОстаткиТМЦ.КоличествоШтукКонечныйОстаток,
   ОстаткиТМЦ.КоличествоШтукПриход,
   ОстаткиТМЦ.КоличествоШтукРасход
ПОМЕСТИТЬ Остатк_РН
ИЗ
   РегистрНакопления.ОстаткиТМЦ.ОстаткиИОбороты(, , Авто, Движения, ) КАК ОстаткиТМЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Остатк_РН.Контрагент,
   Остатк_РН.Номенклатура,
   Остатк_РН.Регистратор,
   Остатк_РН.КоличествоШтукНачальныйОстаток,
   Остатки_РБ.КоличествоНачальныйОстаток,
   Остатк_РН.КоличествоШтукПриход,
   Остатки_РБ.КоличествоОборотДт,
   Остатк_РН.КоличествоШтукРасход,
   Остатки_РБ.КоличествоОборотКт,
   Остатк_РН.КоличествоШтукКонечныйОстаток,
   Остатки_РБ.КоличествоКонечныйОстаток,
   Остатк_РН.ПериодСекунда
ИЗ
   Остатк_РН КАК Остатк_РН
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Остатки_РБ КАК Остатки_РБ
       ПО Остатк_РН.Номенклатура = Остатки_РБ.Номенклатура
           И Остатк_РН.Регистратор = Остатки_РБ.Регистратор
1 LLIaMaH
 
07.03.12
08:43
Попробовал варинт без ПОМЕСТИТЬ, соеденение напрмую таблиц остатковИоборотов, результат тотже самый, еслив настройках компановки начать играться с группировками начинает выдавать какие попало итоги.

ВЫБРАТЬ
   ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Контрагент,
   ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Номенклатура,
   ХозрасчетныйОстаткиИОбороты.Регистратор КАК Документ,
   ОстаткиТМЦ.КоличествоШтукНачальныйОстаток,
   ОстаткиТМЦ.КоличествоШтукПриход,
   ОстаткиТМЦ.КоличествоШтукРасход,
   ОстаткиТМЦ.КоличествоШтукКонечныйОстаток,
   ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток,
   ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт,
   ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт,
   ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток,
   ХозрасчетныйОстаткиИОбороты.ПериодСекунда
ИЗ
   РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , Авто, Движения, Счет = &Счет, , ) КАК ХозрасчетныйОстаткиИОбороты
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТМЦ.ОстаткиИОбороты(, , Авто, Движения, ) КАК ОстаткиТМЦ
       ПО ХозрасчетныйОстаткиИОбороты.Субконто2 = ОстаткиТМЦ.Номенклатура
           И ХозрасчетныйОстаткиИОбороты.Регистратор = ОстаткиТМЦ.Регистратор
2 Omskdizel
 
07.03.12
09:25
Ну дак соедини через СКД. Оно более корректно это делает.
3 LLIaMaH
 
07.03.12
10:11
(2) В смысле через СКД, создать два набора данных и обединить? Пока не думал над этим ибо не умею :)
4 LLIaMaH
 
11.03.12
11:28
Сделал через Набор данных объединенеие. Два запроса к таблицам в наборе Объединение. Теперь обратная ситуация. Если манипулировать разрезами без учета измерения регистратор то все показывает правильно, если подключить регистратор то пропадает начальный и конечный остаток остаток по регистру бухгалтерии. Если в выбранные поля добавить поле ПериодСекунда и выводить его как допЗаписи, то после регистратора выводиться две строки с датой и временем одна из которых с остатком на конец начлао по регистру накопления другая по регистру бухгалтерии, но в граппировке по регистратору остатки по БухРегистру не фигурируют, а обороты есть.
5 el-gamberro
 
11.03.12
11:38
Закладку "Компоновка данных" в конструкторе видел? А она есть :))
6 el-gamberro
 
11.03.12
11:38
И убери автозаполнение :)
7 LLIaMaH
 
11.03.12
11:45
(5) Помедленее я записываю. :)

В конструкторе запроса? Для чего мне закладка кмпановки данных, определить поля для компановки? Вроде как автозаполнение номрально заполняет, какие поля ненужные в моем случае будут а какие оставить?
8 LLIaMaH
 
11.03.12
11:56
Если убрать Поле ПериодСекунда из Набора данных Объединение, то все равно не получается остаток на начало-конец по Регистру бухгалтерия, но если в настройках варианта отчета, после группировки Регистратор добавить Детальные записи, то после каждого документа в отчете появляется пустая строчка в которой фигурируют Остатки на начало конец по Регистру Бухгалтерии, но почему то в суммировании итогов по измерениям они не учавствуют.
9 SanGvin
 
11.03.12
12:53
Я писал отчет на СКД для сравнения бух и упр учета в КА.

запрос в СКД выглядит след. образом

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

надеюсь, это как-то поможет
10 LLIaMaH
 
11.03.12
13:20
так у меня в (1) такой вариант и есть. В принцепе такой вариант рабочий, но хочу правильно получать остатки для различных вариантов группировок, например если убрать группировку по номенклатуре оставить только контров и документы или только контров и номенклатуру или номенклатра/регистратор. Под каждый такой вариант нада свой запрос делать, разные варианты параметра соединения ПО. Нафига тогда СКД нужна если она не делает отчет гибче, забить запрос и нарисовать жесткую таблицу я могу и просто руками.
11 LLIaMaH
 
11.03.12
13:31
При этом отдельно запросы к таблице регистра накопеления напрмиер работают отлично какаие бы группировки и как я невыводил.
12 Omskdizel
 
11.03.12
14:07
На вкладке Компоновка данных как раз и можно задать параметры, аналогичные параметрам для виртуальных таблиц. И не только их. Т.е. если ты объединяешь средствами СКД, а не запроса, то вот по той вкладочке надо лазить обязательно, она твоя всё...
13 Omskdizel
 
11.03.12
14:09
И вообще, мой тебе совет. Может и есть где в Инете, ибо выкладывалось свободно - есть курс по СКД от spec8.ru, там все очень подробно, очень понятно и как раз с примером о твоем случае и с нюансами, почему такое лучше делать через СКД рассказывается. Добудь, не пожалеешь.
14 LLIaMaH
 
12.03.12
05:52
(12) Заработал вариант с временными таблцами из (0) после установки в закладке компановка данных необходимых полей.

(13) Курс отсматриваю уже.
Закон Брукера: Даже маленькая практика стоит большой теории.