Имя: Пароль:
1C
 
Запрос в 1С
,
0 keller85
 
30.11.16
19:06
добрый день! сижу тут бьюсь пытаюсь составить запрос.
Необходимо по части поля содержания отобрать документы. из полученных документов выделить первые 10 символов поля содержания. и уже по этим 10 символам отобрать другие документы.
Сделал вложенные запрос - выполнил первую часть задачи. 10 этих символов  выделил в отдельное поле. И уже его хотел указать в отборе для другого запроса. Но увы. не получается. Не могу уловить мысль как это сделать. ((((


ВЫБРАТЬ
    ВозвратТМЗ.Дата КАК Дата,
    ВозвратТМЗ.Регистратор КАК Регистратор,
    ВозвратТМЗ.ТМЗ КАК ТМЗ,
    ВозвратТМЗ.Код,
    ВозвратТМЗ.Количество,
    ВозвратТМЗ.Регистратор.Содержание КАК Содержание,
    ТаможенныеРасходы.Сумма,
    ТаможенныеРасходы.СубконтоДт1,
    ТаможенныеРасходы.РегистраторСодержание
ИЗ
    (ВЫБРАТЬ
        ТиповойДвиженияССубконто.Период КАК Дата,
        ТиповойДвиженияССубконто.Регистратор КАК Регистратор,
        ТиповойДвиженияССубконто.СубконтоДт1 КАК ТМЗ,
        ТиповойДвиженияССубконто.СубконтоКт1 КАК Контрагент,
        ТиповойДвиженияССубконто.СубконтоКт2 КАК Договор,
        ПОДСТРОКА(ТиповойДвиженияССубконто.Регистратор.Содержание, 1, 20) КАК Код,
        ТиповойДвиженияССубконто.КоличествоДт КАК Количество
    ИЗ
        РегистрБухгалтерии.Типовой.ДвиженияССубконто(
                &начало,
                &окончание,
                Регистратор ССЫЛКА Документ.ОперацияБух
                    И Регистратор.Содержание ПОДОБНО "%беспл%"
                    И СубконтоКт1.Наименование ПОДОБНО "%Smit%",
                ,
                ) КАК ТиповойДвиженияССубконто) КАК ВозвратТМЗ,
    (ВЫБРАТЬ
        ТиповойДвиженияССубконто.Сумма КАК Сумма,
        ТиповойДвиженияССубконто.КоличествоДт КАК КоличествоДт,
        ТиповойДвиженияССубконто.КоличествоКт КАК КоличествоКт,
        ТиповойДвиженияССубконто.Период КАК Период,
        ТиповойДвиженияССубконто.СубконтоДт1 КАК СубконтоДт1,
        ТиповойДвиженияССубконто.Регистратор КАК Регистратор,
        ТиповойДвиженияССубконто.Регистратор.Содержание КАК РегистраторСодержание
    ИЗ
        РегистрБухгалтерии.Типовой.ДвиженияССубконто(&начало, &окончание, Регистратор ССЫЛКА Документ.ОперацияБух, , ) КАК ТиповойДвиженияССубконто) КАК ТаможенныеРасходы
ГДЕ
    ТаможенныеРасходы.РегистраторСодержание ПОДОБНО ПОДСТРОКА(ВозвратТМЗ.Регистратор.Содержание, 1, 20)

УПОРЯДОЧИТЬ ПО
    Дата,
    Регистратор,
    ТМЗ
1 keller85
 
30.11.16
19:11
Проще задачу наверное поставленную рассказать... были поставки оборудования - замена дефектной. поставляли бесплатно. мои бухгалтера ставили код ящика и слово бесплатно. и бух. операциями проводили. дальше создавали еще 2-3 документа  - в них отражались расходы таможенные. в содержании этих документов только код указан ящика. мне надо товар, кол-во и сумму таможенных расходов собрать в одну таблицу. вот второй вечер колдую. небольшой ступор творческий.
2 Господин ПЖ
 
30.11.16
19:16
>мои бухгалтера ставили код ящика и слово бесплатно

навеяло

Из объяснительной записки:

12.12 на складе №4 был разгружен ламинат "..." с большим количеством брака. Пачки были отсортированы мной и подписаны, хорошие пачки "Х", а плохие пачки "П". При возврате товара поставщику, начальник склада ошибочно посчитал, что "Х" означает "х..вые", а "П" означает "п..датые", что в корне меняло ситуацию. Грузчики его поддержали и на возврат был отгружен качественный товар. Виновным в данном инциденте себя не признаю, услуги транспортной компании оплачивать отказываюсь.
3 keller85
 
30.11.16
19:17
)))) да. примерно так. а потом пусть инженер колдует как это разгрести.
4 Мимохожий Однако
 
30.11.16
19:20
Про временные таблицы слышал?
5 Живой Ископаемый
 
30.11.16
19:25
https://www.dropbox.com/s/z3931dypx7jggtf/Screenshot%202016-11-30%2018.25.19.png?dl=0
===

ВЫБРАТЬ
    "Содержание от которого нужно будет взять только первые 20 символов" КАК Содержание,
    1 КАК ДопустимУИДДокумента
ПОМЕСТИТЬ ПервыеДокументыИСТОЧНИК

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Какое то другое содержание, также бесполезное",
    2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    "Содержание от котороТУТ ПОШЛА КАКАЯ_ТО ЛАЖА" КАК Содержание,
    2 КАК ДопустимУИДДокумента
ПОМЕСТИТЬ ВТОРЫЕДокументыИСТОЧНИК

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Какое то другое содеРЖАНКА МЯТАЯ БУХАНКА",
    3
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПервыеДокументыИСТОЧНИК.ДопустимУИДДокумента,
    ПОДСТРОКА(ПервыеДокументыИСТОЧНИК.Содержание, 0, 20) + "%" КАК КРаткоеСодержание
ПОМЕСТИТЬ ПромежуточнаяТаблицаПЕРВЫХ
ИЗ
    ПервыеДокументыИСТОЧНИК КАК ПервыеДокументыИСТОЧНИК
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТОРЫЕДокументыИСТОЧНИК.ДопустимУИДДокумента,
    ПромежуточнаяТаблицаПЕРВЫХ.ДопустимУИДДокумента КАК ДопустимУИДДокумента1,
    ПромежуточнаяТаблицаПЕРВЫХ.КРаткоеСодержание,
    ВТОРЫЕДокументыИСТОЧНИК.Содержание
ИЗ
    ПромежуточнаяТаблицаПЕРВЫХ КАК ПромежуточнаяТаблицаПЕРВЫХ
        ЛЕВОЕ СОЕДИНЕНИЕ ВТОРЫЕДокументыИСТОЧНИК КАК ВТОРЫЕДокументыИСТОЧНИК
        ПО (ВТОРЫЕДокументыИСТОЧНИК.Содержание ПОДОБНО ПромежуточнаяТаблицаПЕРВЫХ.КРаткоеСодержание)
6 Живой Ископаемый
 
30.11.16
19:28
подзапросы не нужны,
нужны ВТ и левое соединение по ПОДОБНО, но в операторе соединения более длинное содержание долно быть слева, а более короткое, но с джокером - справа.
7 Живой Ископаемый
 
30.11.16
19:29
иначе не соединит, что понятно.
8 keller85
 
30.11.16
19:32
Спасибо! попробую сейчас применить советы!
9 Живой Ископаемый
 
30.11.16
19:35
только я брал первые 20
10 keller85
 
01.12.16
06:56
(9) ВЫБРАТЬ
    ВыборкаТМЗ.Регистратор КАК ВременнаяРегистратор,
    ВыборкаТМЗ.СубконтоДт1 КАК ВременнаяТМЗ,
    ПОДСТРОКА(ВыборкаТМЗ.Регистратор.Содержание, 0, 10) КАК Код
ПОМЕСТИТЬ ТаблицаТМЗ
ИЗ
    РегистрБухгалтерии.Типовой.ДвиженияССубконто(
            &НачалоПериода,
            &КонецПериода,
            Регистратор ССЫЛКА Документ.ОперацияБух
                И Регистратор.Содержание ПОДОБНО "%беспл%",
            ,
            ) КАК ВыборкаТМЗ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТаможенныеПлатежи.Период КАК Период,
    ТаможенныеПлатежи.Регистратор КАК Регистратор,
    ТаможенныеПлатежи.СубконтоДт1 КАК ТМЗ,
    ТаможенныеПлатежи.Сумма КАК Сумма,
    ТаможенныеПлатежи.КоличествоДт КАК Количество,
    ТаможенныеПлатежи.Регистратор.Содержание КАК Содержание
ИЗ
    ТаблицаТМЗ КАК ТаблицаТМЗ
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Типовой.ДвиженияССубконто(&НачалоПериода, &КонецПериода, Регистратор ССЫЛКА Документ.ОперацияБух, , ) КАК ТаможенныеПлатежи
        ПО (ТаможенныеПлатежи.Регистратор.Содержание ПОДОБНО ТаблицаТМЗ.Код)
11 keller85
 
01.12.16
06:58
запрос отдельно проверяю временной таблицы - данные выбирает правильные. а при соединении пустую таблицу выдает (((
12 keller85
 
01.12.16
07:01
я пробовал условие соединения поставить этих полей ТаможенныеПлатежи.Регистратор.Содержание ТаблицаТМЗ.Код без ПОДОБНО  1с выдал ошибку что нельзя сравнить поля неограниченной длины либо несовместимых типов
13 keller85
 
01.12.16
07:03
может в этом и закрыта собака...может это некорректно так писать: ТаможенныеПлатежи.Регистратор.Содержание ПОДОБНО ТаблицаТМЗ.Код)
14 keller85
 
01.12.16
07:10
блин это знак забыл... "%" изначально когда подстроку выделял. буду копать дальше )
15 Живой Ископаемый
 
01.12.16
10:43
так что накопал?
16 keller85
 
08.12.16
20:09
(15) Все спасибо огромное! Получилось по этому отчету. Как Вы подсказали  - так и сделал.
17 keller85
 
08.12.16
20:11
(15) )))) я тут бьюсь с новой проблемой.

Ситуация такая: в 2013 году проводили свертку базы - сейчас база разделена до 2013 и после. Встал вопрос об отчете по незавершенному строительству. На начало года сальдо просто суммой без разбивки по статьям затрат естественно. если обороты есть - то и статья затрат есть. бухи хотят чтоб на начало период сумма была по статьям разбита.
Статья затрат - оборотное субконто. Решил собрать обороты с начала учета до даты отчета. Хотел так: собрать обороты от начала учета (либо просто дату указать) до даты начала отчета. и собрать обороты за период отчета и соединить и получить отчет. на бумаге все было хорошо. как дошло дело до реализации... проблемы с оборотами периода отчета.
18 keller85
 
08.12.16
20:12
такой запрос соорудил:

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

СГРУППИРОВАТЬ ПО
    ТиповойОбороты.Субконто2,
    ТиповойОбороты.Субконто3,
    ТиповойОбороты.Субконто1
;

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

СГРУППИРОВАТЬ ПО
    ТиповойОбороты.Субконто2,
    ТиповойОбороты.Субконто3,
    ТиповойОбороты.Субконто1,
    ТиповойОбороты.СуммаОборотДт
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОборотыДоНачалаПериода.Субконто1,
    ОборотыДоНачалаПериода.Субконто2,
    ОборотыДоНачалаПериода.Субконто3,
    ОборотыДоНачалаПериода.ОборотДоПериода,
    ОборотыПериод.ОборотПериод
ИЗ
    ОборотыДоНачалаПериода КАК ОборотыДоНачалаПериода
        ПОЛНОЕ СОЕДИНЕНИЕ ОборотыПериод КАК ОборотыПериод
        ПО ОборотыДоНачалаПериода.Субконто1 = ОборотыПериод.Субконто1
19 keller85
 
08.12.16
20:14
Но поле "Оборот период" неправильно выводит/считает. отдельно запросы проверяю - норма. соединение делаю.. на начало периода норма. а за период - как бы объяснить...
выбираю к примеру обороты 2012-2013. и 2014. если по объекту строительства за период 2012 в разрезе статей затрат нормально суммы выходят. то за 2014 если была одна статья к примеру а 2012-2013 - 9. в общем 10 должно быть в отчете. вот сумма по этой одной статье по всем 10 статьям прописывается. то есть увеличивается кратно кол-ву статей за 2012-2013 гг. Что-то я я где-то накосячил. А где (((
20 keller85
 
08.12.16
20:23
заправка картриджа    239 196,41    83 275,90
заработная плата    105 420 947,52    83 275,90
земельный налог    695 602,00    83 275,90
изготовление правоуд-х док-в, прочая документация    
    20 000,00    83 275,90
Имущественный налог    24 647 985,00    83 275,90
канцелярские товары    847 279,39    83 275,90
лабораторные услуги    100 139,29    83 275,90
21 Злопчинский
 
08.12.16
21:59
(17) ты хоть укаеайся но сальдотпо оборотным субконто смысла не имеет иипоэтому его нет
22 keller85
 
09.12.16
22:29
(21) Нет. Я справился с этим вопросом.
23 keller85
 
09.12.16
22:32
ВЫБРАТЬ
    ТиповойОбороты.Субконто1 КАК ОбъектСтроительства,
    ТиповойОбороты.Субконто2 КАК СтатьяЗатрат,
    СУММА(ТиповойОбороты.СуммаОборот) КАК СальдоНаНачалоПериода,
    СУММА(0) КАК СуммаОборотДт,
    0 КАК СуммаОборотКт,
    0 КАК СальдоНаКонецОтчета
{ВЫБРАТЬ
    ОбъектСтроительства.*,
    СтатьяЗатрат.*,
    СальдоНаНачалоПериода,
    СуммаОборотДт}
ИЗ
    РегистрБухгалтерии.Типовой.Обороты(&НачПериодаОбороты, &КонПериодаОбороты, , Счет = &Счет, &ВидыСубконто, , , ) КАК ТиповойОбороты
{ГДЕ
    ТиповойОбороты.Субконто1.*,
    ТиповойОбороты.Субконто2.*,
    ТиповойОбороты.СуммаОборот КАК СуммаОборотДо,
    (0) КАК СуммаОборот}

СГРУППИРОВАТЬ ПО
    ТиповойОбороты.Субконто2,
    ТиповойОбороты.Субконто1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ТиповойОбороты.Субконто1,
    ТиповойОбороты.Субконто2,
    СУММА(0),
    СУММА(ТиповойОбороты.СуммаОборотДт),
    СУММА(ТиповойОбороты.СуммаОборотКт),
    СУММА(ТиповойОбороты.СуммаОборот)
ИЗ
    РегистрБухгалтерии.Типовой.Обороты(&НачПериода, &КонПериода, , Счет = &Счет, &ВидыСубконто, , , ) КАК ТиповойОбороты
{ГДЕ
    ТиповойОбороты.Субконто1.*,
    ТиповойОбороты.Субконто2.*,
    (0) КАК СуммаОборотДо,
    ТиповойОбороты.СуммаОборотДт КАК СуммаОборот}

СГРУППИРОВАТЬ ПО
    ТиповойОбороты.Субконто1,
    ТиповойОбороты.Субконто2