|
|||
ЭЦ
naïve 04.04.13 — 16:34 |
ГОСПОДА ! |
||
ЭЦ naïve 1 — 04.04.13 — 16:56 |
Вот так срабатывает : |
ЭЦ
04.04.13 — 16:34
ГОСПОДА !
Имеется отчет на СКД.
В схеме компоновки имеется параметр с выражением
Справочники.ПодразделенияОрганизаций.НайтиПоКоду(«000000064»)
отчет нормально работает.
Теперь надо его запустить из формы документа
//—————————-
Отчет = Отчеты.sРезультатыОпроса.Создать();
СхемаКомпоновкиДанных = Отчет.ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
ЭлтНастройки = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(«ОПРОС»);
ЭлтНастройки.Значение = Ссылка;
ЭлтНастройки.Использование = Истина;
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(«Опрос»,Ссылка);
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
//————————-
Вылетает при инициализации ПроцессораКомпоновки с диагностикой
Синтаксическая ошибка «Справочники.ПодразделенияОрганизаций.НайтиПоКоду»
В чем тут может быть?
Прошу подсказать.
<?php // Полная загрузка сервисных книжек, создан 2023-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='
Related Posts
- Получение логина и пароля техподдержки 1С из базы
- Класс для вывода отчета в Excel
- Счет-фактура для УПП
- Библиотека классов для создания внешней компоненты 1С на C#
- Акт об оказании услуг (со скидками) — внешняя печатная форма для Управление торговлей 11.1.10.86
- Прайс-лист с артикулом в отдельной колонке
33 Comments
-
Очень помогает в ситуациях, которые по-началу не поддаются объяснению )
Reply ↓
-
-
К СКД ещё только приступил, поэтому не могу вполне оценить нужность этого механизма, но нутром чую, что он очень и очень пригодится. Попробую его понять и ипользовать. Спасибо!
Reply ↓
-
В дерево отчетов попадают используемые наборы данных типа Запрос
Объединения содержат вложенные наборы данных
Наборы данных типа Объект представляются как простой запрос описания таблицы (перечислены поля)
Также платформа добавляет системные наборы данных (для построения иерархии и т.п.)
Далее идет отдельная ветка «Схема», в которой находится исходная схема КД
Reply ↓
-
В самой консоли появилась дополнительная фишка — отладка запросов с передачей параметров типа «Таблица значений». Есть, конечно, ряд ограничений (на типизацию колонок), но в целом может пригодиться.
Reply ↓
-
-
Хорошая идея и хорошая реализация. Молодец.
Reply ↓
-
(6) Спасибо и за обработку, и за ссылку на курс по СКД.
Reply ↓
-
-
отлично, будем пробовать 🙂
Reply ↓
-
Спасибо. Давно искала что-то подобное 🙂
Reply ↓
-
Пытаюсь добавить параметры из запроса, выдает ошибку {Форма.Форма.Форма(1560)}: Ошибка при вызове метода контекста (НайтиПараметры): {(56, 1)}: Синтаксическая ошибка
Reply ↓
-
на форме «Параметры» есть кнопка «Список» она в общем-то и не нужна, ведь когда выбираем значение параметра, то можем там указать, что это список значений и заполнить его. А вот если бы там была кнопка «Таблица значений» и она бы добавляла в параметр значение «Таблица значений» было бы классно.
Reply ↓
-
(12) mlv84, Синтаксическая ошибка в вашем запросе. Напишите корректный запрос — получите параметры (НайтиПараметры встроенный метод объекта Запрос)
Reply ↓
-
(13) mlv84, Таблицу значений я добавил для отладочных целей. Самостоятельный ее ввод мне, например, не очень нужен (даже ее редактирование). Это создаст кучу проблем (интерфейс, юзабилити, типизация колонок и т.д.) Но если вам это необходимо и думаете что это будет интересно сообществу — дерзайте! Выкладывайте. или напишите tezin, он может добавить этот функционал в следующих версиях.
Reply ↓
-
Serj1C пишет:
(12) mlv84, Синтаксическая ошибка в вашем запросе. Напишите корректный запрос — получите параметры (НайтиПараметры встроенный метод объекта Запрос)
Это да, прошу прощения. Запрос просто был большой. Кусочек потерялся при копировании. А таблицу значений придумала как обойти. Спасибо.
Reply ↓
-
(16) mlv84, Поделись, плиз, как придумала
Reply ↓
-
ничего сверх сложного. В моём случае в таблице значений была только одна строка. Я просто посмотрела в отладчике какие там значения. А потом в запросе их явно указала.
У меня было так:
«ВЫБРАТЬ
| ТаблицаПериодов.ДатаНачала КАК ДатаНачала,
| ТаблицаПериодов.ДатаОкончания КАК ДатаОкончания,
| ТаблицаПериодов.ГруппаНачислений
|ПОМЕСТИТЬ ИсходныеДанные
|ИЗ
| &ТаблицаПериодов КАК ТаблицаПериодов
………………..
а сделала так:
«ВЫБРАТЬ
| ДАТАВРЕМЯ(2011, 04, 01, 0,0,0) КАК ДатаНачала,
| ДАТАВРЕМЯ(2011, 04, 30, 23,59,59) КАК ДатаОкончания,
| «%ДопНачисление%» как ГруппаНасилений //У меня здесь строковое значение передавалось
КАК ТаблицаПериодов
Reply ↓
-
(18) mlv84, Да, я тоже так делаю:
Выбрать &Контрагент1 Контрагент, 15000 Сумма Поместить ТЗ
Объединить все Выбрать &Контрагент2, 20000
Объединить все Выбрать &Контрагент3, NULL
и т.д.
Reply ↓
-
Описанные функции (отладки запросов из компоновки) реализованы также в подсистеме «Инструменты разработчика» (функция Отладить, консоль компоновки данных) http://infostart.ru/public/15126/ . Там же там вы найдете много исследовательских инструментов в консоли компоновки данных, которые позволяет вам лучше понять, как устроен макет компоновки и расшифровка.
Reply ↓
-
(20) tormozit, да, ваша подсистема выше всех похвал
Reply ↓
-
UPD 29.02.2012
Обновление оригинальной консоли до последней версии + возможность редактирования параметра с типом ТаблицаЗначений (интерфейс не дружественный, юзабилити на нуле, но если сильно понадобится, то редактируется).
Reply ↓
-
Очень помогает как раз разбираюсь с СКД
Reply ↓
-
Функционал отличный. Интерфейс хотелось бы по компактнее.
Reply ↓
-
{Форма.ФормаОтладкаСКД.Форма(47)}: Ошибка при вызове метода контекста (Инициализировать)
ПроцессорКД.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
по причине: Ошибка компоновки данных
по причине: Ошибка инициализации
по причине: Ошибка в выражении
по причине: Синтаксическая ошибка «Справочники.ТехнологическиеОперации.НайтиПоКоду»
Стандартная СКД принимает выражение Параметра в таком виде. Если элемент справочника не предопределенный, его можно найти позже — ПоКоду, ну или ПоНаименованию, что хуже в случае редактирования Наименования 😉
При вызове Отладка СКД и нажатии Сформировать обработка не понимает такого выражения для Параметра.
Reply ↓
-
(25) alex_shkut, Любопытно, никогда не замечал. Баг платформы. Могу отписать на 1c@1c.ru, но не думаю, что скоро исправят.
Reply ↓
-
Возможность отлаживать отчет на СКД из формы отчета — это очень удобно. Спасибо. Имя файла в пути поправьте.
Reply ↓
-
При использовании набора данных «Объект»:
{Форма.Форма.Форма(791)}: Ошибка при вызове метода контекста (Выполнить): {(9, 2)}: Таблица не найдена «РезультатОсновногоЗапроса»
<<?>>РезультатОсновногоЗапроса КАК Таблица
РезультатОсновногоЗапроса — это имя объекта (внешнего набора данных).
Reply ↓
-
-
Вот сам и отвечаю на свой пост (25)
В Запроснике надо найти нечто похожее (не вскрывал его :))
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,ДанныеРасшифровки,Истина);
А вот описание значения Истина в конце функции:
<ВозможностьИспользованияВнешнихФункций> (необязательный)
Тип: Булево. Указывает возможность использования функции общих модулей конфигурации в выражениях компоновки данных.
Значение по умолчанию: Ложь
В моей текущей ситуации это была именно внешняя функция, но думаю, что это касается и прочих «СКД недвижковых» функций типа Справочники.НайтиПоКоду().
Мне помогло, думаю что в Запроснике этого будет достаточно, чтобы ошибка исчезла.
Нашел, где это: ФормаОтладкаСКД строка 47
имеем: ПроцессорКД.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
надо: ПроцессорКД.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных,,истина);
Reply ↓
-
(30) alex_shkut, мда, не тривиально… Ок, мотаем на ус!
Reply ↓
-
Почему Вы не пишите вначале, что это для обычных форм, я получается зря потратила стартмани!
Reply ↓
-
(32) Публикация 2011 года, на сриншотах обычное приложение…
Давайте я вам вышлю инструменты, которые использую сейчас в работе
Reply ↓
Leave a Comment
Ваш адрес email не будет опубликован. Обязательные поля помечены *
jediAlex 4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 622 |
||||||||
1 |
||||||||
Отчет СКД: не заполняются значения параметров12.11.2018, 10:37. Показов 21198. Ответов 36 Метки нет (Все метки)
Здравствуйте. Делаю отчет на СКД в собственной конфигурации 1С 8.3. суть отчета: выгрузить из регистра за период количество времени, списанное сотрудниками подразделений по дням. Вот запрос:
т.е. нужно получить информацию по всем сотрудникам из перечня подразделений и увидеть, по каким из работающих сотрудников есть списания в выбранном периоде и в какой день, а по каким — нет. Захотел присвоить значения параметров программно — чтобы их не набирать каждый раз для формирования отчета, а сразу заполнить при открытии формы. Сделал так в форме отчета:
ни один из параметров в режиме предприятия не заполняется… что не так делаю? помогите пожалуйста. Параметры отчета в СКД прилагаю. Миниатюры
__________________ 0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
12.11.2018, 10:37 |
36 |
1783 / 1208 / 437 Регистрация: 16.01.2015 Сообщений: 5,321 |
|
12.11.2018, 10:59 |
2 |
jediAlex, Все это надо делать не в модуле формы и ПриОткрытии, а в модуле объекта отчета и в ПриКомпоновкиРезультата 0 |
340 / 315 / 43 Регистрация: 20.08.2014 Сообщений: 1,242 Записей в блоге: 1 |
|
12.11.2018, 11:06 |
3 |
Попробуйте параметры устанавливать в модуле объекта в процедуре ПриКомпоновкеРезультата(). 0 |
jediAlex 4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 622 |
||||
12.11.2018, 12:04 [ТС] |
4 |
|||
сделал в модуле объекта:
ситуация та же… параметры не заполняются. Что не так опять делаю? 0 |
1117 / 671 / 195 Регистрация: 22.04.2013 Сообщений: 5,072 Записей в блоге: 1 |
|
12.11.2018, 12:29 |
5 |
а почему стандартная обработка ложь? 0 |
polax 1783 / 1208 / 437 Регистрация: 16.01.2015 Сообщений: 5,321 |
||||
12.11.2018, 16:39 |
6 |
|||
jediAlex Устанавливаешь Ложь стандартной обработке, а работаешь только с Компоновщиком. Ну изменил компоновщик, а где макет, где процессор вывода? У тебя ничего не выполняется без этого. И если эти параметры в скд установлены как пользовательские, то устанавливает параметры не в Настройках, а в ПользовательскиеНастройки. Ну и еще раз, как минимум параметры дат можно попробовать выставить на закладке Параметы макета скд Добавлено через 3 часа 50 минут
0 |
jediAlex 4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 622 |
||||
13.11.2018, 11:51 [ТС] |
7 |
|||
попробовал сделать по примеру:
в результате параметры не заполняются все равно… что не так делаю? 0 |
polax 1783 / 1208 / 437 Регистрация: 16.01.2015 Сообщений: 5,321 |
||||
13.11.2018, 12:20 |
8 |
|||
jediAlex, Не надо просто копировать мой код. Адаптируйте его к своему. Например Параметры. У меня Меняется ОДИН параметр — Стандартный отчет (на скрине &Параметр) поэтому это ОДНА строка
у вас нет стандартного отчета, у вас ДВЕ строки поэтому уже установка всего в Элементы[2] работать не может Миниатюры
0 |
1783 / 1208 / 437 Регистрация: 16.01.2015 Сообщений: 5,321 |
|
13.11.2018, 12:21 |
9 |
Куда и что ставить — пользуйтесь отладчиком и смотрите 0 |
jediAlex 4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 622 |
||||
13.11.2018, 13:39 [ТС] |
10 |
|||
ни разу не делал такой вывод отчета(программно) поэтому не пойму что и как делать в данном случае… Добавлено через 4 минуты
но при этом у меня не попадал в отчет конечный день интервала. 0 |
polax 1783 / 1208 / 437 Регистрация: 16.01.2015 Сообщений: 5,321 |
||||||||||||
13.11.2018, 22:05 |
11 |
|||||||||||
jediAlex,
Вот это правильно для моего варианта, неправильно для твоего
Замени на
А вообще ставь точку останова и смотри значение КомпоновщикНастроек.Настройки.ПараметрыДанных.Элем енты, увидишь под каким индексом что стоит 0 |
4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 622 |
|
14.11.2018, 09:37 [ТС] |
12 |
попробовал, как вы посоветовали. Параметры дат присвоились, а массив подразделений — пустое значение… что не так с этим массивом? Добавлено через 5 минут 0 |
1783 / 1208 / 437 Регистрация: 16.01.2015 Сообщений: 5,321 |
|
14.11.2018, 09:41 |
13 |
Подраздел=ПодразделенияДляОтчета(); Функция ПодразделенияДляОтчета() что возвращает? Проверяли? Дайте код этой функции Добавлено через 1 минуту 0 |
jediAlex 4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 622 |
||||||||||||
14.11.2018, 09:51 [ТС] |
14 |
|||||||||||
вот функция:
точку ставлю на строке
ставил и на строке
чтоб посмотреть, что функция дает.. останова не происходит… Добавлено через 1 минуту 0 |
1783 / 1208 / 437 Регистрация: 16.01.2015 Сообщений: 5,321 |
|
14.11.2018, 09:58 |
15 |
jediAlex, Раз параметры даты устанавливаются, значит код работает, отсюда — должна останавливаться по точке останова. Вариант один — не запущена отладка:
Сначала запускаете конфигуратор, из него запускаете программу (отладку). 0 |
4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 622 |
|
14.11.2018, 10:26 [ТС] |
16 |
отладка запущена 0 |
1783 / 1208 / 437 Регистрация: 16.01.2015 Сообщений: 5,321 |
|
14.11.2018, 10:28 |
17 |
jediAlex, выгружайте dt. Так быстрее и проще разобраться 0 |
4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 622 |
|
14.11.2018, 10:57 [ТС] |
18 |
выгрузил dt 17 МБ не прикрепляется…413 Request Entity Too Large 0 |
1783 / 1208 / 437 Регистрация: 16.01.2015 Сообщений: 5,321 |
|
14.11.2018, 11:00 |
19 |
jediAlex, Его надо загрузить на любой файлообменник и ссылку с файлообменника выложить сюда Добавлено через 44 секунды 0 |
4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 622 |
|
14.11.2018, 18:06 [ТС] |
20 |
вот ссылка на ИБ данные правлда там до апреля 2018 г — более новую не мог даже по почте отправить себе с рабочего места из-за массы ограничений. На файлообменники вообще не могу заходить. Юзер —Админ без пароля. См отчет «НаличиОтчетовСотрудников» Добавлено через 16 секунд 0 |
Отчет на СКД. Обычное приложение. В отчете параметр заполняется «конструкцией» Справочники.Бренд.НайтиПоКоду(«000000159»). Да, я тоже осуждаю этот индусский код, но на его существование есть причины. Конструкция нормально работает под полными правами, и не работает под неполными (RLS есть, но в роях, установленных у проблемного пользователя его нет). При этом даже добавление всех прав на это справочник проблему не решает. Текст сообщения об ошибке: Ошибка исполнения отчета по причине: Ошибка получения данных по причине: Функция не найдена «Справочники.Бренд.НайтиПоКоду» В чем может быть причина и какие права надо дать пользователю, чтобы отчет заработал?
при компоновке иди по коду
Уверен что дело в правах? У меня, например, отчет с таким выражением в параметрах до сих пор работает у разных пользователей. Отчет был сделан давно, на какой версии платформы уже не помню, потом я что-то там дорабатывал и попробовал изменить выражение. Так вот после сохранения измененной версии отчета он стал выдавать ошибку как у тебя. При этом предыдущая версия работает и на новой платформе. И да, у меня вообще используется «НайтиПоНаименованию».
. Не уверен, но по «симптомам» похоже именно на права. Платформа одна и та же (сейчас проверил). Захожу под пользователем с ПолныеПрава — работает. Под обычным пользователем — нет.
Может и права, у мнея работает как под полными правами так и под ограниченными. RLS нет вообще. Я не стал разбираться с этим глюком «работает — не трожь».
Попробуй: Все действия — Установить стандартные настройки
Нашел причину. Она, мягко говоря, экзотическая. Отчет строится по документам и у пользователя не было прав на «Просмотр». Добавление этого права и решило проблему. Сам я не очень понимаю, как это возможно и как это взаимосвязано, но тем не менее.
Добавление права на просмотр документа или справочника Бренды?
Документа, по которому строится отчет. На справочник право Просмотр было и добавление вообще всех прав на справочник результата не дало.
Короче очередное шаманское камлание. Метод Тыка в этот раз сработал.
Это стандартное поведение системы. Точно описано в документации, искать лень.
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
Main
Top
Interesting
500 ideas
Help
Follow us:
-
Follow us on Vkontakte
-
Follow us on Telegram
-
Follow us on Pinterest
-
Follow us on Odnoklassniki
Applications
-
iOS
-
Android
-
Huawei
PRODUCTS
-
Checklists
-
Button «Share»
-
Media program
COMMUNITY
-
Afisha LJ
-
Frank
-
Stylish merch
CHOOSE LANGUAGE
-
Privacy Policy
-
User Agreement
-
Help
LiveJournal — v.633
?
fixin
-
Readability
-
fixin
Archive
Readability
Log in
No account?
Create an account
Remember me
Forgot password
If this type of authorization does not work for you, convert your account using the link
-
fixin
November 18 2020, 15:00
Странная «Синтаксическая ошибка» в СКД с макетом
Как поборол эту странную ошибку.
Читать далее: https://geniy1s.ru/strannaya-sintaksicheskaya-oshibka-v-skd-s-maketom/
СКДслучай из практики 1с
promo
fixin
december 31, 2037 16:57
1422
ЧаВо о Фиксине для новичков (блог переехал на fixinchik.ru)
UPD: Друзья, в августе 2019 года блог переехал на http://fixinchik.ru. Welcome! Добро пожаловать в журнал Осипова Сергея Александровича, известного также как Fixin и Гений 1С. Рекомендую ознакомиться с Часто Задаваемыми Вопросами обо мне. Что я хочу в подарок — список. Мой проект «…
Всё работало хорошо, но вдруг перестало, после того, как я внес изменения в макет СКД:
При формировании отчета появлялась надпись «Синтаксическая ошибка» и всё.
Когда убрал некоторые секции, методом деструктивного исключения обнаружил, что глючит зеленая секция.
Благо, CTRL+Z сработал и вернул изменения назад (каюсь, рабочей версии отчета не было).
Вздохнул было, но потом опять ошибка возникла. И тут до меня дошло — проблема в пустых ячейках, где указан тип ячейки «Параметр», но не указано, значение какого параметра брать. Поменял тип на Текст — и все заработало.
Экие тонкости в 1С, однако!
Отчет на СКД. Обычное приложение. В отчете параметр заполняется «конструкцией» Справочники.Бренд.НайтиПоКоду(«000000159»). Да, я тоже осуждаю этот индусский код, но на его существование есть причины. Конструкция нормально работает под полными правами, и не работает под неполными (RLS есть, но в роях, установленных у проблемного пользователя его нет). При этом даже добавление всех прав на это справочник проблему не решает. Текст сообщения об ошибке: Ошибка исполнения отчета по причине: Ошибка получения данных по причине: Функция не найдена «Справочники.Бренд.НайтиПоКоду» В чем может быть причина и какие права надо дать пользователю, чтобы отчет заработал?
при компоновке иди по коду
Уверен что дело в правах? У меня, например, отчет с таким выражением в параметрах до сих пор работает у разных пользователей. Отчет был сделан давно, на какой версии платформы уже не помню, потом я что-то там дорабатывал и попробовал изменить выражение. Так вот после сохранения измененной версии отчета он стал выдавать ошибку как у тебя. При этом предыдущая версия работает и на новой платформе. И да, у меня вообще используется «НайтиПоНаименованию».
. Не уверен, но по «симптомам» похоже именно на права. Платформа одна и та же (сейчас проверил). Захожу под пользователем с ПолныеПрава — работает. Под обычным пользователем — нет.
Может и права, у мнея работает как под полными правами так и под ограниченными. RLS нет вообще. Я не стал разбираться с этим глюком «работает — не трожь».
Попробуй: Все действия — Установить стандартные настройки
Нашел причину. Она, мягко говоря, экзотическая. Отчет строится по документам и у пользователя не было прав на «Просмотр». Добавление этого права и решило проблему. Сам я не очень понимаю, как это возможно и как это взаимосвязано, но тем не менее.
Добавление права на просмотр документа или справочника Бренды?
Документа, по которому строится отчет. На справочник право Просмотр было и добавление вообще всех прав на справочник результата не дало.
Короче очередное шаманское камлание. Метод Тыка в этот раз сработал.
Это стандартное поведение системы. Точно описано в документации, искать лень.
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
jediAlex 4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
||||||||
1 |
||||||||
Отчет СКД: не заполняются значения параметров12.11.2018, 10:37. Показов 30720. Ответов 36 Метки нет (Все метки)
Здравствуйте. Делаю отчет на СКД в собственной конфигурации 1С 8.3. суть отчета: выгрузить из регистра за период количество времени, списанное сотрудниками подразделений по дням. Вот запрос:
т.е. нужно получить информацию по всем сотрудникам из перечня подразделений и увидеть, по каким из работающих сотрудников есть списания в выбранном периоде и в какой день, а по каким — нет. Захотел присвоить значения параметров программно — чтобы их не набирать каждый раз для формирования отчета, а сразу заполнить при открытии формы. Сделал так в форме отчета:
ни один из параметров в режиме предприятия не заполняется… что не так делаю? помогите пожалуйста. Параметры отчета в СКД прилагаю. Миниатюры
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
12.11.2018, 10:37 |
36 |
1876 / 1281 / 460 Регистрация: 16.01.2015 Сообщений: 5,606 |
|
12.11.2018, 10:59 |
2 |
jediAlex, Все это надо делать не в модуле формы и ПриОткрытии, а в модуле объекта отчета и в ПриКомпоновкиРезультата
0 |
340 / 315 / 43 Регистрация: 20.08.2014 Сообщений: 1,242 Записей в блоге: 1 |
|
12.11.2018, 11:06 |
3 |
Попробуйте параметры устанавливать в модуле объекта в процедуре ПриКомпоновкеРезультата().
0 |
jediAlex 4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
||||
12.11.2018, 12:04 [ТС] |
4 |
|||
сделал в модуле объекта:
ситуация та же… параметры не заполняются. Что не так опять делаю?
0 |
1186 / 725 / 211 Регистрация: 22.04.2013 Сообщений: 5,347 Записей в блоге: 1 |
|
12.11.2018, 12:29 |
5 |
а почему стандартная обработка ложь?
0 |
polax 1876 / 1281 / 460 Регистрация: 16.01.2015 Сообщений: 5,606 |
||||
12.11.2018, 16:39 |
6 |
|||
jediAlex Устанавливаешь Ложь стандартной обработке, а работаешь только с Компоновщиком. Ну изменил компоновщик, а где макет, где процессор вывода? У тебя ничего не выполняется без этого. И если эти параметры в скд установлены как пользовательские, то устанавливает параметры не в Настройках, а в ПользовательскиеНастройки. Ну и еще раз, как минимум параметры дат можно попробовать выставить на закладке Параметы макета скд Добавлено через 3 часа 50 минут
0 |
jediAlex 4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
||||
13.11.2018, 11:51 [ТС] |
7 |
|||
попробовал сделать по примеру:
в результате параметры не заполняются все равно… что не так делаю?
0 |
polax 1876 / 1281 / 460 Регистрация: 16.01.2015 Сообщений: 5,606 |
||||
13.11.2018, 12:20 |
8 |
|||
jediAlex, Не надо просто копировать мой код. Адаптируйте его к своему. Например Параметры. У меня Меняется ОДИН параметр — Стандартный отчет (на скрине &Параметр) поэтому это ОДНА строка
у вас нет стандартного отчета, у вас ДВЕ строки поэтому уже установка всего в Элементы[2] работать не может Миниатюры
0 |
1876 / 1281 / 460 Регистрация: 16.01.2015 Сообщений: 5,606 |
|
13.11.2018, 12:21 |
9 |
Куда и что ставить — пользуйтесь отладчиком и смотрите
0 |
jediAlex 4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
||||
13.11.2018, 13:39 [ТС] |
10 |
|||
ни разу не делал такой вывод отчета(программно) поэтому не пойму что и как делать в данном случае… Добавлено через 4 минуты
но при этом у меня не попадал в отчет конечный день интервала.
0 |
polax 1876 / 1281 / 460 Регистрация: 16.01.2015 Сообщений: 5,606 |
||||||||||||
13.11.2018, 22:05 |
11 |
|||||||||||
jediAlex,
Вот это правильно для моего варианта, неправильно для твоего
Замени на
А вообще ставь точку останова и смотри значение КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы, увидишь под каким индексом что стоит
0 |
4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
|
14.11.2018, 09:37 [ТС] |
12 |
попробовал, как вы посоветовали. Параметры дат присвоились, а массив подразделений — пустое значение… что не так с этим массивом? Добавлено через 5 минут
0 |
1876 / 1281 / 460 Регистрация: 16.01.2015 Сообщений: 5,606 |
|
14.11.2018, 09:41 |
13 |
Подраздел=ПодразделенияДляОтчета(); Функция ПодразделенияДляОтчета() что возвращает? Проверяли? Дайте код этой функции Добавлено через 1 минуту
0 |
jediAlex 4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
||||||||||||
14.11.2018, 09:51 [ТС] |
14 |
|||||||||||
вот функция:
точку ставлю на строке
ставил и на строке
чтоб посмотреть, что функция дает.. останова не происходит… Добавлено через 1 минуту
0 |
1876 / 1281 / 460 Регистрация: 16.01.2015 Сообщений: 5,606 |
|
14.11.2018, 09:58 |
15 |
jediAlex, Раз параметры даты устанавливаются, значит код работает, отсюда — должна останавливаться по точке останова. Вариант один — не запущена отладка:
Сначала запускаете конфигуратор, из него запускаете программу (отладку).
0 |
4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
|
14.11.2018, 10:26 [ТС] |
16 |
отладка запущена
0 |
1876 / 1281 / 460 Регистрация: 16.01.2015 Сообщений: 5,606 |
|
14.11.2018, 10:28 |
17 |
jediAlex, выгружайте dt. Так быстрее и проще разобраться
0 |
4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
|
14.11.2018, 10:57 [ТС] |
18 |
выгрузил dt 17 МБ не прикрепляется…413 Request Entity Too Large
0 |
1876 / 1281 / 460 Регистрация: 16.01.2015 Сообщений: 5,606 |
|
14.11.2018, 11:00 |
19 |
jediAlex, Его надо загрузить на любой файлообменник и ссылку с файлообменника выложить сюда Добавлено через 44 секунды
0 |
4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
|
14.11.2018, 18:06 [ТС] |
20 |
вот ссылка на ИБ данные правлда там до апреля 2018 г — более новую не мог даже по почте отправить себе с рабочего места из-за массы ограничений. На файлообменники вообще не могу заходить. Юзер —Админ без пароля. См отчет «НаличиОтчетовСотрудников» Добавлено через 16 секунд
0 |