Имя: Пароль:
1C
1С v8
Вытащить месяц из даты в СКД
0 DJ Anthon
 
01.09.13
17:57
пытаюсь разобраться с подстрокой и выразить, но даже гугл говорит, что такого в скд нет и не будет. и функции ВРЕГ тоже не хватает. как можно поизвращаться?

нужна вот такая конструкция, но не компилится из-за последней строчки (((

            ТОГДА ЖурналУчетаСчетовФактур.СчетФактура.Учреждение.Префикс
+ ПОДСТРОКА(ЖурналУчетаСчетовФактур.СчетФактура.Контрагент.НаименованиеПолное, 1, 1) + "0000"
+ Месяц(ЖурналУчетаСчетовФактур.СчетФактура.Дата)
1 Нуф-Нуф
 
01.09.13
17:58
начни с того что хочешь получить
2 DJ Anthon
 
01.09.13
18:01
я хочу получить "04" из 01.04.2013
но дату ни в какой формат преобразовать не получается
3 Wobland
 
01.09.13
18:12
вычисляемое поле предлагать?
4 DJ Anthon
 
01.09.13
18:18
(3) нет, мне это надо не печатать, эта подстрока участвует в дальнейшем запросе-алгоритме.
5 DJ Anthon
 
01.09.13
18:19
(3) смотрю сейчас, я с скд не сталкивался сильно до этого, теперь нужно очень интересный алгоритм запихать в один запрос, ищу способы...
6 Wobland
 
01.09.13
18:23
(5) не нужно
7 DJ Anthon
 
01.09.13
18:28
(6) вообще задача такая: надо некоторые счета-фактуры из журнала счетов-фактур сгруппировать в одну счет-фактуру с общим номером, но ссылкой на первую счет-фактуру из этой группы. с помощью кода я это сделал двумя вставками в стандартный журнал, а теперь журнал переписан на УФ и там СКД сразу же выводит полученную в результате запроса таблицу в табличный документ без кода. как можно поправить эту таблицу перед выводом в табличный документ?
8 Wobland
 
01.09.13
18:29
(7) при компоновке данных
9 Wobland
 
01.09.13
18:30
(8) *результата
10 Wobland
 
01.09.13
18:31
(7) а что такое журнал? обыкновенный отчёт?
11 DJ Anthon
 
01.09.13
18:32
вот такой там код

        МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиДляКомпоновкиМакета, ДанныеРасшифровкиОбъект);
        //Создадим и инициализируем процессор компоновки
        ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
//        ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);
        
        ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровкиОбъект, Истина);
        
        ДанныеРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиОбъект,ПараметрыОтчета.УникальныйИдентификатор);
        
        //Создадим и инициализируем процессор вывода результата
        ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
        ПроцессорВывода.УстановитьДокумент(Результат);
        
        //Обозначим начало вывода
        ПроцессорВывода.НачатьВывод();
        
        ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);


где тут компоновка? в нее уже входит табличный документ.

(10)
журнал полученных и выставленных счетов-фактур в БГУ - да, обычный отчет на скд
12 Wobland
 
01.09.13
18:34
>СхемаКомпоновкиДанных
вот тут компоновка
13 DJ Anthon
 
01.09.13
18:38
я просто хотел сделать по-людски - все в запросе, но видимо, так сделать не получится. ибо придется писать вложенный запрос, ищущий и суммирующий эти счет-фактуры. вот такой код был в нормальном отчете (не на скд):

    Для каждого СтрокаТЧ из ТабЧасть Цикл
        УчетНДС.ЗаполнитьСтрокуТаблицыСчетаФактуры(СтрокаТЧ, ОбластьМакетаСтрока, СтруктураШапки.Дата, ДатаСменыФормы, СтруктураШапки.ПричинаНалогообложения);
//Anthon -<
        Если Группировать Тогда
            Если (.....) Тогда
                Запрос = Новый Запрос;
                Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                               |    СУММА(Док.СуммаДокумента) КАК СуммаДокумента,
                               |    СУММА(Док.СуммаНДС) КАК СуммаНДС,
                               |    Док.СтавкаНДС КАК СтавкаНДС
                               |ИЗ
                               |    Документ.НДС_СчетФактураВыданный КАК Док
                               |ГДЕ
                               |    Док.Учреждение = &Учреждение
                               |    И Док.Контрагент = &Контрагент
                               |    И (Док.Дата МЕЖДУ &НачДата И &КонДата)
                               |
                               |СГРУППИРОВАТЬ ПО
                               |    СтавкаНДС";
                              
                Запрос.УстановитьПараметр("НачДата", НачалоМесяца(Дата));
                Запрос.УстановитьПараметр("КонДата", КонецМесяца(Дата));
                Запрос.УстановитьПараметр("Учреждение", Учреждение.Ссылка);
                Запрос.УстановитьПараметр("Контрагент", Контрагент.Ссылка);
                ТаблицаРезультат = Запрос.Выполнить().Выгрузить();
                Для Каждого Строка Из ТаблицаРезультат Цикл
                    УчетНДС.ЗаполнитьСтрокуТаблицыСчетаФактуры(СтрокаТЧ, ОбластьМакетаСтрока, СтруктураШапки.Дата, ДатаСменыФормы, СтруктураШапки.ПричинаНалогообложения);
                    ОбластьМакетаСтрока.Параметры.Стоимость = Строка.СуммаДокумента - Строка.СуммаНДС;
                    ОбластьМакетаСтрока.Параметры.СуммаНДС = Строка.СуммаНДС;
                    ОбластьМакетаСтрока.Параметры.СтавкаНДС = ?(ЗначениеЗаполнено(Строка.СтавкаНДС), Строка.СтавкаНДС, Перечисления.СтавкиНДС.БезНДС);
                    ОбластьМакетаСтрока.Параметры.Цена = ОбластьМакетаСтрока.Параметры.Стоимость / ?(СтрокаТЧ.Количество = 0, 1, СтрокаТЧ.Количество);
                    ОбластьМакетаСтрока.Параметры.Всего = Строка.СуммаДокумента;
                    ТабДокумент.Вывести(ОбластьМакетаСтрока);
                КонецЦикла;
                
            КонецЕсли;
        КонецЕсли;
//Anthon ->

(12)
ну я не могу в ней найти таблицу с результатами запроса (((
можно пример какой-нибудь?
14 Wobland
 
01.09.13
18:44
(13) при чём тут (0)?
15 Armando
 
01.09.13
18:48
Используй выражение представления
16 Wobland
 
01.09.13
18:51
(15) у меня сложилось впечатление, что он по этому делу группировать хочет
17 DJ Anthon
 
01.09.13
18:52
(14) я в запросе хотел сформировать номер новой счет-фактуры, которая должна заменить некоторые другие счета-фактуры.

вот тот второй кусок кода

    Если Группировать Тогда
        КК = Контрагент.НаименованиеПолное;
        Если (...) Тогда
            ОбластьМакетаШапка.Параметры.Номер = Учреждение.Префикс + Лев(ВРЕГ(КК), 1) + "0000" + (Месяц(Дата));
            ОбластьМакетаШапка.Параметры.Дата = КонецМесяца(Дата);
        КонецЕсли;
    КонецЕсли;



(14) добавил вычислимое поле, как в запросе его указать? говорит, поле не найдено...

(15) где использовать? в запросе?
18 DJ Anthon
 
01.09.13
18:52
(16) да, хотел по этому номеру группировать, ну или по счет-фактуре...
19 Wobland
 
01.09.13
18:55
(18) группировать можно и по вычисляемым полям
20 Wobland
 
01.09.13
18:57
даже не поленился проверить. конкатенирует и группирует.
"прф"+"Ж"+"0000"+Строка(Месяц(Поле1))
21 DJ Anthon
 
01.09.13
19:03
(20) что-то я уперся в кучу проблем (( может, все-таки есть способ подправить таблицу после выполнения запроса?
22 DJ Anthon
 
01.09.13
19:03
ну или подменить ее
23 Wobland
 
01.09.13
19:05
(22) я даже умею свою ТЗ делать и отдавать её в СКД
24 DJ Anthon
 
01.09.13
19:08
(23) пожалуйста, подскажите как?
25 Wobland
 
01.09.13
19:09
(24) минут 5 потратил на поиск готового. на память, есессно, не расскажу
26 DJ Anthon
 
01.09.13
19:10
http://1cskd.ru/2011/10/peredacha-tablicy-znachenij-v-skd-nabor-dannyx-obekt/

наверное, через внешние наборы данных, да?
27 Wobland
 
01.09.13
19:13
(26) как-то так, да
28 DJ Anthon
 
01.09.13
19:38
(27) ну вот создал свой набор данных, передаю в него таблицу, а в макет все равно выводится первый набор данных. его что, надо удалить?
29 DJ Anthon
 
01.09.13
19:41
(27) ага, все, догнал, спасибо!