Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/47: Рейтинг темы: голосов - 47, средняя оценка - 4.57
5 / 5 / 6
Регистрация: 12.07.2011
Сообщений: 730

Получение элемента массива из функции общего модуля в вычисляемом поле СКД

19.02.2019, 13:37. Показов 10365. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Делаю отчет в собственной конфигурации 1С 8.3 В отчете есть 2 вычисляемых поля, для расчета значений которых сделал функцию в общем модуле:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
НаСервере
Функция МаксимальнаяДатаСдачиПлан(График,Выдающийотдел) Экспорт
ЗапросДаты=Новый запрос;
МассивДат=Новый массив();
массивДат.Очистить();
Запросдаты.Текст="ВЫБРАТЬ
                 |  ЕСТЬNULL(МАКСИМУМ(ОбъектныйГрафикЗадания.ДатаВыдачиПлан), ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаВыдачиПлан
                 |ИЗ
                 |  Документ.ОбъектныйГрафик.Задания КАК ОбъектныйГрафикЗадания
                 |ГДЕ
                 |  ОбъектныйГрафикЗадания.Ссылка.Ссылка = &График
                 |  И ОбъектныйГрафикЗадания.ВыдающийОтдел = &ВыдающийОтдел
                 |  И ОбъектныйГрафикЗадания.Задание.Наименование ПОДОБНО &Наименование";
Запросдаты.УстановитьПараметр("&График",График);
Запросдаты.УстановитьПараметр("&Выдающийотдел",Выдающийотдел);
Запросдаты.УстановитьПараметр("&Наименование","%архив%");
Результат=ЗапросДаты.Выполнить().Выбрать();
Пока результат.Следующий() цикл
МассивДат.Добавить(результат.ДатаВыдачиПлан);
ЗапросФактДаты= Новый запрос;
ЗапросФактДаты.Текст="ВЫБРАТЬ
                     |  ЕСТЬNULL(МАКСИМУМ(ОбъектныйГрафикЗадания.ДатаВыдачиФакт), ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаВыдачиФакт
                     |ИЗ
                     |  Документ.ОбъектныйГрафик.Задания КАК ОбъектныйГрафикЗадания
                     |ГДЕ
                     |  ОбъектныйГрафикЗадания.Ссылка.Ссылка = &График
                     |  И ОбъектныйГрафикЗадания.ВыдающийОтдел = &ВыдающийОтдел
                     |  И ОбъектныйГрафикЗадания.Задание.Наименование ПОДОБНО &Наименование
                     |  И ОбъектныйГрафикЗадания.ДатаВыдачиПлан = &ДатаВыдачиПлан";
ЗапросФактДаты.УстановитьПараметр("&График",График);
ЗапросФактДаты.УстановитьПараметр("&Выдающийотдел",Выдающийотдел);
ЗапросФактДаты.УстановитьПараметр("&Наименование","%архив%");
ЗапросФактДаты.УстановитьПараметр("&ДатаВыдачиПлан",Результат.ДатаВыдачиПлан);
РезультатФакт=ЗапросДаты.Выполнить().Выбрать();
Пока РезультатФакт.Следующий() Цикл
Массивдат.Добавить(РезультатФакт.ДатаВыдачиФакт);   
КонецЦикла;   
КонецЦикла;   
Возврат массивДат;
КонецФункции
Далее в отчет СКД делаю вычисляемые поля, как показано во вложении. При выполнении отчета вылетает ошибка:
Ошибка выполнения отчета
по причине:
Ошибка исполнения отчета
по причине:
Ошибка в выражении "(РасчетРабочихДней.МаксимальнаяДатаСдач иПлан(График,Подразделение)[0])"
по причине:
Ожидается ) ")"
Не пойму где какой скобки не хватает? или не в скобке дело? помогите пожалуйста.
Миниатюры
Получение элемента массива из функции общего модуля в вычисляемом поле СКД  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2019, 13:37
Ответы с готовыми решениями:

Получение реквезита ТЧ из общего модуля
Доброго времени суток. Есть документ ПриходДенег. В нём ТЧ - Товары. В ТЧ есть ИтогСумма. Значение ИтогСуммы мне нужно передать в Общий...

Как прописать вызов скалярной функции в вычисляемом поле?
Здравствуйте. Подскажите как правильно прописать вызов скалярной функции в вычисляемом поле? Нужно чтобы table1.вычисляемое поле =...

1С 8.3. Вызов функции из общего модуля на тонком клиенте
Помогите пожалуйста разобраться новичку. Пытаюсь создать и вызвать функцию в общих модулях. В общем модуле создан модуль общиеФункции...

32
Тест
Эксперт 1С
383 / 162 / 57
Регистрация: 26.02.2010
Сообщений: 1,245
19.02.2019, 14:35
ну как вариант попробуйте вернуть первый элемент массива, а в СКД уберите квадратные скобки и попробуйте без них.
0
Модератор
Эксперт 1С
 Аватар для Yulunga
4137 / 944 / 265
Регистрация: 22.04.2013
Сообщений: 6,588
Записей в блоге: 1
19.02.2019, 21:05
а если написать
1C
1
ВычислитьВыражение("тут ваша функция",,,"Первая", "Первая")
?
0
Эксперт 1С
6329 / 1750 / 639
Регистрация: 16.01.2015
Сообщений: 7,282
19.02.2019, 23:53
Цитата Сообщение от jediAlex Посмотреть сообщение
РасчетРабочихДней.МаксимальнаяДатаСдачиП лан(График,Подразделение)[0]
Вот это НЕ работает.
Сделайте в общем модуле как сказал _ЕГОР_,
1C
1
Возврат массивДат[0]
а в вычисляемом поле без индекса.
0
Модератор
Эксперт 1С
 Аватар для Yulunga
4137 / 944 / 265
Регистрация: 22.04.2013
Сообщений: 6,588
Записей в блоге: 1
09.03.2021, 07:45
polax, а если это не мой общий модуль?
конкретно у меня - Массив(СтроковыеФункцииКлиентСервер.Разл ожитьСтрокуВМассивПодстрок(ФизическоеЛиц оРП, " "))[0]
u СтроковыеФункцииКлиентСервер.РазложитьСт рокуВМассивПодстрок(ФизическоеЛицоРП, " ")[0]
тож самое.
хочет скобку какуюто
0
Эксперт 1С
6329 / 1750 / 639
Регистрация: 16.01.2015
Сообщений: 7,282
09.03.2021, 09:46
Yulunga, А если
1C
1
2
М = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( ФизическоеЛицоРП, " ");
НСтр = М[0];
0
09.03.2021, 09:51

Не по теме:

Yulunga, polax, теме два года, вы чего?)

0
Модератор
Эксперт 1С
 Аватар для Yulunga
4137 / 944 / 265
Регистрация: 22.04.2013
Сообщений: 6,588
Записей в блоге: 1
09.03.2021, 10:32
polax, это запрос. а вот это длинное - это вычисляемая функция
GreenkA, у меня не получается. я погуглил - увидел тему на родном форуме, так и нерешённую. почему не спросить в ней же?
ответа-то нет.
0
Эксперт 1С
 Аватар для GreenkA
3065 / 2012 / 525
Регистрация: 25.06.2009
Сообщений: 6,964
09.03.2021, 11:16
Yulunga, так не прокатит, можно сделать Набор данных - объект (вместо запроса)
В модуле отчета прописать ПриКомпоновкеРезультата()
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    СтандартнаяОбработка = Ложь;
    СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    Настройки = КомпоновщикНастроек.ПолучитьНастройки(); 
    
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; 
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; 
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); 
    
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; 
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ПолучитьТаблицу(), ДанныеРасшифровки); 
    
    ДокументРезультат.Очистить();
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; 
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат); 
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Функция ПолучитьТаблицу() - экспортная, в том же модуле твоего отчета, будет описывать нужную таблицу с заданными полями. И потом в компоновке данных на вкладке Наборы данных надо будет создать аналогичную таблицу с соответствующими именами и типами Колонок.
Объект дает бОльшую свободу в получении/расчетах нужных для компоновки данных.
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
09.03.2021, 11:25
Yulunga, по индексу в скд нельзя получить значение, используй агрегатные функции
0
Модератор
Эксперт 1С
 Аватар для Yulunga
4137 / 944 / 265
Регистрация: 22.04.2013
Сообщений: 6,588
Записей в блоге: 1
09.03.2021, 11:25
GreenkA
фигово
у меня доработка кемтосделанного
он делал в СКД на закладке "Макеты".
а у меня туго с этим.
просто не получилось.
попробовал параметр макета ФамилияРП сказать, что оно выражение Лев(ФизическоеЛицоРП, СтрНайти(ФизическоеЛицоРП," "))
но опять ругается - не знает пока что, что такое Лев
хныки
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
09.03.2021, 11:29
Цитата Сообщение от Yulunga Посмотреть сообщение
но опять ругается - не знает пока что, что такое Лев
Yulunga, ставь платформу 8.3.20 и будет знать что такое Лев()

Добавлено через 46 секунд
https://wonderland.v8.1c.ru/bl... _id=206437
0
Модератор
Эксперт 1С
 Аватар для Yulunga
4137 / 944 / 265
Регистрация: 22.04.2013
Сообщений: 6,588
Записей в блоге: 1
09.03.2021, 11:31
угу, даже для ознакомления нет такой - можно 18 или 19
20 это наверно года через два
щязтокаг?
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
09.03.2021, 11:47
Yulunga,
1. Функции общего модуля
2. Как предложила очаровательная GreenkA, подготовь ТЗ и скорми СКД
0
Эксперт 1С
6329 / 1750 / 639
Регистрация: 16.01.2015
Сообщений: 7,282
09.03.2021, 14:18

Не по теме:

Ого как дискуссия развилась пока я по работе катался. И... речь оказывается про СКД )))


Цитата Сообщение от Yulunga Посмотреть сообщение
Лев(ФизическоеЛицоРП, СтрНайти(ФизическоеЛицоРП," "))
Расстрою еще больше. Даже установив 8.3.20, Лев() получишь, а вот СтрНайти вряд ли.
А вообще язык СКД оч похож на язык запросов, но есть и отличия Материал ИТС по языку СКД
0
Модератор
Эксперт 1С
 Аватар для Yulunga
4137 / 944 / 265
Регистрация: 22.04.2013
Сообщений: 6,588
Записей в блоге: 1
09.03.2021, 16:32
написал Имямодуля.ПолучитьСловоИзСтрокиСРазделит елем(ФизическоеЛицоРП, " ", 1)
в модуле имямодуля написал
1C
1
2
3
4
&НаСервере
Функция ПолучитьСловоИзСтрокиСРазделителем(ВходнаяСтрока, Разделитель, НомерСлова) Экспорт
    Возврат СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Входнаястрока, Разделитель)[НомерСлова - 1];
КонецФункции
и, когда запускаю отчёт, то когда он приходит внутрь этой функции, то входнаястрока == нульль.

Не по теме:

блин превратили фигню в квест

0
Эксперт 1С
 Аватар для GreenkA
3065 / 2012 / 525
Регистрация: 25.06.2009
Сообщений: 6,964
09.03.2021, 16:39
Цитата Сообщение от Yulunga Посмотреть сообщение
и, когда запускаю отчёт, то когда он приходит внутрь этой функции, то входнаястрока == нульль.
вероятно в запросе нет обработки NULL значений?
Кстати, что насчет функции СтрРазделить(<Строка>, <Разделитель>, <ВключатьПустые>) ? Без вызова общего модуля
0
Модератор
Эксперт 1С
 Аватар для Yulunga
4137 / 944 / 265
Регистрация: 22.04.2013
Сообщений: 6,588
Записей в блоге: 1
09.03.2021, 16:53
GreenkA, ))))
хорошо. поменяю. тем более в справке написано зелёным по белому
// В случаях, когда разделителем является строка из одного символа, и не используется параметр СокращатьНепечатаемыеСимволы,
// рекомендуется использовать функцию платформы СтрРазделить.

но от этого на вход не начнут приходить ненулллльные значения
0
Эксперт 1С
 Аватар для GreenkA
3065 / 2012 / 525
Регистрация: 25.06.2009
Сообщений: 6,964
09.03.2021, 17:00
Yulunga, обрабатывай их в запросе и в общий модуль передавай только заполненные строки, можно прописать ВЫБОР КОГДА ТОГДА прямо в Вычисляемом поле
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
10.03.2021, 00:03
Цитата Сообщение от polax Посмотреть сообщение
а вот СтрНайти вряд ли.
огорчу, СтрНайти() теперь будет доступен даже в запросе )))

Добавлено через 3 минуты
Язык запросов

В язык запросов добавляются функции:
  • Строка(String) – преобразует значение в примитивного типа в строку с учетом национальных установок.
  • Тригонометрические функции Sin, Cos, Tan, ASin, ACos, ATan (все вычисления производятся в радианах)
  • Exp - вычисляет результат возведения основания натурального логарифма (числа e) в степень
  • Log - вычисляет натуральный логарифм числа.
  • Log10 - вычисляет десятичный логарифм числа.
  • Pow - вычисляет возведение в степень.
  • Sqrt – вычисляет квадратный корень.
  • Окр(Round) - округляет исходное число до нужной разрядности
  • Цел(Int) - вычисляет целую часть переданного числа, полностью отсекая дробную часть.
  • ДлинаСтроки(StringLength) – вычисляет длину строки.
  • СокрЛ(TrimL) – отбрасывает незначащие пробелы слева.
  • СокрП(TrimR) – отбрасывает незначащие пробелы справа.
  • СокрЛП(TrimAll) – отбрасывает незначащие пробелы слева и справа.
  • Лев(Left) – получает первые слева символы строки.
  • Прав(Right) – получает первые справа символы строки.
  • СтрНайти(StrFind) – находит первую позицию подстроки в строке (без учета регистра).
  • ВРег(Upper) – преобразует все символы строки в верхний регистр.
  • НРег(Lower) – преобразует все символы строки в нижний регистр.
  • СтрЗаменить(StrReplace) – заменяет все вхождения подстроки на другую подстроку (без учета регистра).
  • РазмерХранимыхДанных(StoredDataSize) – возвращает размер данных в байтах, которые занимают данные параметра.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.03.2021, 00:03
Помогаю со студенческими работами здесь

Ошибка в вычисляемом поле
Здравствуйте! 1.Подскажите, почему в . в поле не вычисляется сумма? 2. Как лучше реализовать обновление поля со списком в . после...

Выражение в вычисляемом поле
Помогите, пожалуйста, с выражением в вычисляемом поле. В методических указаниях написано именно так, но конфигуратор выдает синтаксическую...

Ошибка в вычисляемом поле
Помогите, пожалуйста, раньше не сталкивалась с вычисляемыми полями. Что ему не нравится в построенном мною выражении ?

Выражение в вычисляемом поле 1c
Помогите, пожалуйста, с выражением в вычисляемом поле. В методических указаниях написано именно так, но конфигуратор выдает синтаксическую...

Убрать рубли в вычисляемом поле
Здравствуйте, у меня есть ADOTAble с вычисляемыми полями, там при расчетах автоматом проставляются рубли. Не подскажите, как их убрать?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru