Синтаксическая ошибка справочники видыцен доступныевидыцен

Тема: 2.3  (Прочитано 8630 раз)

0 Пользователей и 1 Гость просматривают эту тему.

http://www.youtube.com/watch?v=Zw5jCJXu7Ew

Пробовал сделать как в видео, но при формировании выскакивает ошибка «Синтаксическая ошибка «Справочники.ВидыЦен.ДоступныеВидыЦен». Никто не сталкивался?

В новой версии убрали код из прикомпоновки в выражение в параметрах!
Теперь нужно так: ПроцессорКомпоновки.Инициализировать(Макет,, ДанныеРасшифровки, Истина);


Записан


Выкладываю свой вариант отчета. Картинки получаю в одном запросе (не в цикле). Список номенклатуры в отдельной форме перед формированием отчета. В справочник «Номенклатура» добавил новую форму выбора, хотя можно и программно это делать (накладывать отбор ФайлКартинки <> ПустойСсылке на уже имеющуюся).
Не знаю, как быстро все это сделать на экзамене.


Записан



Попался на экзамене. Выкладываю в том виде, в каком делал на экзамене. Отчет добавлял в конфигурацию. Плюс вызов из формы обработки «ПрайсЛист». Оценка 5.


Записан


Тоже попался на экзамене. Использовал решение, аналогичное видео. Отчет добавлял в конфигурацию. Приняли нормально.


Записан


У кого-нибудь есть решение для 11.3 ?


Записан


Коллеги, подскажите по процессу подготовки. Смотрю вот примеры, вижу, что для решения нужно писать куски кода по обходу всех областей таблицы для выявления места для картинки, вывода самой картинки, не говоря уже о других местах, до которых я еще не добрался. Как вы запоминаете такие куски кода? Там же куча объектов, свойств и т.д. Литературой с собой на экзамене пользуетесь или в типовой решения по ходу решения смотрите?


Записан


Коллеги, подскажите по процессу подготовки. Смотрю вот примеры, вижу, что для решения нужно писать куски кода по обходу всех областей таблицы для выявления места для картинки, вывода самой картинки, не говоря уже о других местах, до которых я еще не добрался. Как вы запоминаете такие куски кода? Там же куча объектов, свойств и т.д. Литературой с собой на экзамене пользуетесь или в типовой решения по ходу решения смотрите?

Тоже задалась этим вопросом)


Записан



  1. 1С:Розница 2.2. Отчет «Ведомость по товарам на складах». Хотел переделать отчет, чтобы выводил номенклатуру с картинками. Переделал — заработало. Но потом решил добавить как вариант отчета ибо с картинками на порядки дольше формируется отчет. И отчет перестал работать.

    Проблема в процедуре в модуле отчета. Почти весь код я взял из похожей обработки и переделал под себя:

    Функция ВывестиИзображениеВОбластиТД(ДанныеКартинки, ТД, Область)
       Изображение = ТД.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
       Изображение.РазмерКартинки = РазмерКартинки.АвтоРазмер;
       Индекс = ТД.Рисунки.Индекс(Изображение);
       ТД.Рисунки[Индекс].Картинка = Новый Картинка(ДанныеКартинки, Истина);
       ТД.Рисунки[Индекс].Расположить(Область);
       Возврат ТД.Рисунки[Индекс];
    КонецФункции
    
    Процедура ВывестиИзображениеЭлементаНоменклатуры(ТД, ЭлементСправочника, Область, ШиринаКолонкиИзображения)
       УстановитьПривилегированныйРежим(Истина);
       Если ЭлементСправочника.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
         СтуктураРег = РегистрыСведений.ПрисоединенныеФайлы.Получить(Новый Структура("ПрисоединенныйФайл", ЭлементСправочника));
         ДанныеКартинки = СтуктураРег.ХранимыйФайл.Получить();
       Иначе
         ДанныеКартинки = ?(ЗначениеЗаполнено(ЭлементСправочника.Том.ПолныйПутьWindows), ЭлементСправочника.Том.ПолныйПутьWindows, ЭлементСправочника.Том.ПолныйПутьLinux)
           + ЭлементСправочника.ПутьКФайлу;
       КонецЕсли;
       УстановитьПривилегированныйРежим(Ложь);  
       Рисунок = ВывестиИзображениеВОбластиТД(ДанныеКартинки, ТД, Область);
       Область.АвтоВысотаСтроки = Ложь;
       Область.ВысотаСтроки = ШиринаКолонкиИзображения * 1.31 / 0.3759;// Среднее значение пункта 1 пункт = 0.3759 мм (по Wiki)
       Область.Расшифровка = ЭлементСправочника;
       Рисунок.ЦветЛинии = Область.ЦветРамки;
    КонецПроцедуры
    
    Функция ВернутьКоличествоКолонки(КоллекцияЭлементовВыбора)
       КоличествоКолонок = 0;
       Для Индекс = 0 По КоллекцияЭлементовВыбора.Количество() - 1 Цикл
         Если КоллекцияЭлементовВыбора[Индекс].Использование Тогда
           КоличествоКолонок = КоличествоКолонок + 1;
         КонецЕсли;
       КонецЦикла;
       Возврат КоличествоКолонок;
    КонецФункции
    
    Функция ВернутьЗначениеПараметраНастройкиСКД(КоллекцияЭлементовНастройки, ИмяНастройки, ЗначениеПоУмолчанию = Неопределено)
       Настройка = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяНастройки);
       Если Настройка = Неопределено Тогда Возврат ЗначениеПоУмолчанию; КонецЕсли;
       НастрокаПоИД = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Настройка.ИдентификаторПользовательскойНастройки);
       Если Не ЗначениеЗаполнено(НастрокаПоИД.Значение) Тогда
         Если Не ЗначениеПоУмолчанию = Неопределено Тогда
           НастрокаПоИД.Значение = ЗначениеПоУмолчанию;
         КонецЕсли;
       КонецЕсли;
       Возврат ?(НастрокаПоИД.Использование, НастрокаПоИД.Значение, ЗначениеПоУмолчанию);
    КонецФункции
    
    ////////////////////////////////////////////////////////////////////////////////
    // ОБРАБОТЧИКИ СОБЫТИЙ
    
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
      
       ПараметрВидыЦен  = ОбщегоНазначенияРТКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек.ФиксированныеНастройки, "ВидыЦен");
       //ПараметрВидыЦен.Значение = Справочники.ВидыЦен.ДоступныеВидыЦен();
       ПараметрВидыЦен.Значение = Справочники.ВидыЦен.НайтиПоНаименованию("Розничная");
       ПараметрВидыЦен.Использование = Истина;
      
       СегментыВызовСервера.ВключитьОтборПоСегментуНоменклатурыВСКД(КомпоновщикНастроек);
      
       //§
       СтандартнаяОбработка = Ложь;
       ИмяКолонкиИзображения = "Изображение";
       ДокументРезультат.Очистить();
      
       ОбщегоНазначенияРТ.ВывестиДатуФормированияОтчета(ДокументРезультат);
      
       КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
       //Получаем параметры отчета
       ШиринаКолонкиИзображения = ВернутьЗначениеПараметраНастройкиСКД(КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы, "ШиринаКолонкиИзображения", 20); //В средних символах
      
       ПолеИзображения = СхемаКомпоновкиДанных.НаборыДанных.ТоварыНаСкладах.Поля.Найти(ИмяКолонкиИзображения);
      
       Если Не ПолеИзображения = Неопределено Тогда
         ОформлениеМинимальнойШириныКолонки = СхемаКомпоновкиДанных.НаборыДанных.ТоварыНаСкладах.Поля.Найти(ИмяКолонкиИзображения).Оформление.Элементы.Найти("МинимальнаяШирина");
         ОформлениеМинимальнойШириныКолонки.Использование = Истина;
         ОформлениеМинимальнойШириныКолонки.Значение = ШиринаКолонкиИзображения;
       КонецЕсли;
      
       Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);
       ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
       ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
       ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
       ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
       ПроцессорВывода.НачатьВывод();
       Пока Истина Цикл
         ЭлементРезультата = ПроцессорКомпоновки.Следующий();
         Если ЭлементРезультата = Неопределено Тогда Прервать;КонецЕсли;
         ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
         Если ЭлементРезультата.ЗначенияПараметров.Количество() = 0 Тогда Продолжить; КонецЕсли;
        
         Для Каждого ЭлементПараметра Из ЭлементРезультата.ЗначенияПараметров Цикл
           Если ТипЗнч(ЭлементПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
             Поля = ДанныеРасшифровки.Элементы[ЭлементПараметра.Значение].ПолучитьПоля();
             Для Каждого Поле Из Поля Цикл
               Если ТипЗнч(Поле.Значение) = Тип("СправочникСсылка.НоменклатураПрисоединенныеФайлы") Тогда
                 Если Поле.Значение.Пустая() Тогда Продолжить; КонецЕсли;
                 //Поиск номера колонки, с нужным именем ИмяКолонкиИзображения, для таки вывода изображения
                 Для НомерКолонки = 1 По ДокументРезультат.ШиринаТаблицы Цикл
                   Расшифровка = ДокументРезультат.Область(ДокументРезультат.ВысотаТаблицы, НомерКолонки, ДокументРезультат.ВысотаТаблицы, НомерКолонки).Расшифровка;
                   Если Расшифровка = Неопределено Тогда Продолжить; КонецЕсли;
                   Поля = ДанныеРасшифровки.Элементы.Получить(Расшифровка).ПолучитьПоля();
                   Если Поля.Найти(ИмяКолонкиИзображения) = Неопределено Тогда Продолжить; КонецЕсли;
                   ОбластьИзображения = ДокументРезультат.Область(ДокументРезультат.ВысотаТаблицы, НомерКолонки);
                   ВывестиИзображениеЭлементаНоменклатуры(ДокументРезультат, Поле.Значение, ОбластьИзображения, ШиринаКолонкиИзображения);
                 КонецЦикла;
               КонецЕсли;
             КонецЦикла;
           КонецЕсли;
         КонецЦикла;
       КонецЦикла;
       ПроцессорВывода.ЗакончитьВывод();
      
    КонецПроцедуры

    Подскажите, где косяк?


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Добавление параметра в отчете

Я
   LittlePumpkin

05.08.20 — 12:33

Здравствуйте. Делаю отчет, хочу чтобы значение параметра по умолчанию было одним из элементов справочника.

В поле «Параметры» для моего параметра прописываю выражение «Справочники.ВидыЦен.НайтиПоНаименованию(«ВП Базовая 2019″)».

Но при попытке сформировать отчет выдает «Синтаксическая ошибка Справочники.ВидыЦен.НайтиПоНаименованию».

Скрины здесь: https://imgur.com/a/MR4j2hB

В чем проблема?

   LittlePumpkin

1 — 05.08.20 — 12:34

А при попытке задать значение в разделе «Значение» предлагает только предопределенные элементы справочника.

  

Галахад

2 — 05.08.20 — 12:51

Не работает так. Только кодом, при открытии формы, например.

TurboConf — расширение возможностей Конфигуратора 1С

FannuSun

1 / 1 / 0

Регистрация: 11.01.2019

Сообщений: 16

1

1C 8.x

Синтаксическая ошибка «ВЫБОР»

21.01.2019, 06:47. Показов 4651. Ответов 7

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

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
41
42
ВЫБРАТЬ
ОтпускПоУходуЗаРебенком.Ссылка, 
КОЛИЧЕСТВО ( ОтпускПоУходуЗаРебенком.Сотрудник) КАК Сотрудник,
ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоПолутораЛет,
ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоТрехЛет,
Кадровая история сотрудниковСрезПоследних.Подразделение,
ОтпускПоУходуЗаРебенком. ДатаОкончанияПособияДоПолутораЛет, 
ОтпускПоУходуЗаРебенком. ДатаОкончанияПособияДоТрехЛет 
ВЫБОР 
КОГДА
ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоПолутораЛет = ИСТИНА
И ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоТрехЛет = ИСТИНА
ТОГДА "" До 1.5 лет""
ИНАЧЕ 
ВЫБОР 
КОГДА ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоПолутораЛет = ИСТИНА
И ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоТрехЛет = ЛОЖЬ
ТОГДА "" До 1.5 лет""
ИНАЧЕ 
ВЫБОР 
КОГДА ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоПолутораЛет = ЛОЖЬ
И ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоТрехЛет = ИСТИНА
ТОГДА "" До 3 лет""
ИНАЧЕ """"
КОНЕЦ;
ИЗ Регистра селений.КадроваяИсторияСотрудников.СрезПоследних (&ДатаПериода) как КадроваяИсторияСотрудниковСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтпускПоУходуЗаРебенком КАК ОтпускПоУходуЗаРебенком
ПО КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = ОтпускПоУходуЗаРебенком.Сотрудник
ГДЕ КадроваяИсторияСотрудниковСрезПоследних.Организация =& Организация
И КадроваяИсторияСотрудниковСрезПоследних.Подразделение В ИЕРАРХИИ (& Подразделение)
И (
ОтпускПоУходуЗаРебенком.ДатаОкончанияПособияДоПолутораЛет >=&ДатаПериода
ИЛИ ОтпускПоУходуЗаРебенком.ДатаОкончанияПособияДоТрехЛет >= &ДатаПериода)
СГРУППИРОВАТЬ ПО 
 
ОтпускПоУходуЗаРебенком.Ссылка, 
КОЛИЧЕСТВО ( ОтпускПоУходуЗаРебенком.Сотрудник) КАК Сотрудник,
ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоПолутораЛет,
ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоТрехЛет,
Кадровая история сотрудниковСрезПоследних.Подразделение,
ОтпускПоУходуЗаРебенком. ДатаОкончанияПособияДоПолутораЛет, 
ОтпускПоУходуЗаРебенком. ДатаОкончанияПособияДоТрехЛет;

Выдает ошибку «Синтаксическая ошибка «ВЫБОР»». Пожалуйста, объясните что здесь неправильно



0



1188 / 727 / 211

Регистрация: 22.04.2013

Сообщений: 5,352

Записей в блоге: 1

21.01.2019, 08:45

2

говорящая за себя тема. молодец. долго наверно придумывал
посмотри СП про «выбор» — чем он заканчивается?
ну и тут можно сделать попроще вроде. не надо стока выборов



0



1 / 1 / 0

Регистрация: 11.01.2019

Сообщений: 16

21.01.2019, 09:06

 [ТС]

3

Я просто не знал, как описать проблему в теме. Выбор заканчивается КОНЕЦом



0



Phil

Эксперт 1С

434 / 305 / 92

Регистрация: 28.05.2014

Сообщений: 1,247

21.01.2019, 11:09

4

Так?

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ВЫБОР 
КОГДА
ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоПолутораЛет = ИСТИНА
И ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоТрехЛет = ИСТИНА
ТОГДА "" До 1.5 лет""
 
ВЫБОР 
КОГДА ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоПолутораЛет = ИСТИНА
И ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоТрехЛет = ЛОЖЬ
ТОГДА "" До 1.5 лет""
 
ВЫБОР 
КОГДА ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоПолутораЛет = ЛОЖЬ
И ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоТрехЛет = ИСТИНА
ТОГДА "" До 3 лет""
 
КОНЕЦ;



0



1188 / 727 / 211

Регистрация: 22.04.2013

Сообщений: 5,352

Записей в блоге: 1

21.01.2019, 12:16

5

Phil, а зачем ты опять пишешь выбор ?
выбор когда иситна и истина тогда 1.5
когда истина и ложь тогда 1.5
когда лож и истина тогда 3
иначе дупель-пусто
конец

увидел.

Не по теме:

я так понимаю, что вариант лож + лож не рассматривается.
если он не существует — в предпоследней строке (перед конецом) можно написать «иначе 3»



0



1 / 1 / 0

Регистрация: 11.01.2019

Сообщений: 16

21.01.2019, 12:27

 [ТС]

6

А разве Иначе мы не используем?



0



Phil

Эксперт 1С

434 / 305 / 92

Регистрация: 28.05.2014

Сообщений: 1,247

21.01.2019, 13:51

7

Yulunga,

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ВЫБОР 
 
КОГДА
ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоПолутораЛет = ИСТИНА
И ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоТрехЛет = ИСТИНА
ТОГДА "" До 1.5 лет""
 
КОГДА ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоПолутораЛет = ИСТИНА
И ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоТрехЛет = ЛОЖЬ
ТОГДА "" До 1.5 лет""
 
КОГДА ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоПолутораЛет = ЛОЖЬ
И ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоТрехЛет = ИСТИНА
ТОГДА "" До 3 лет""
 
КОНЕЦ

копипаст…



0



Dethmontt

22.01.2019, 14:10


    1C 8.x Синтаксическая ошибка «ВЫБОР»

Не по теме:

Цитата
Сообщение от Yulunga
Посмотреть сообщение

я так понимаю, что вариант лож + лож не рассматривается.
если он не существует — в предпоследней строке (перед конецом) можно написать «иначе 3»

Иначе «Вечно!!!»



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

22.01.2019, 14:10

Для заданого 0<=n<=200.Расматриваемого как возраст человека,вывести фразу вида: «Мне 21 год», «Мне 32 года», «мне 12 лет».
МОЙ ВОЗРАСТ. Для заданого 0&lt;=n&lt;=200.Расматриваемого как возраст человека,вывести фразу вида: &quot;Мне…

Cоздать ссылку на реквизит «Наименование» справочника «Специалисты» из справочника «ЗаявкаНаОбучениеКлиентов»
Пожалуйста, подскажите. Необходимо создать ссылку на реквизит &quot;Наименование&quot; справочника…

Кто может поделиться конфигурацией и базой для «общепита» или «ресторана», хочу потестить
Кто может поделиться конфигурацией и базой для 1с предприятие общепит или ресторан, хочу потестить.

DVD-диском от книги «Профессиональная разработка в системе «1С: Предприятие 8″ в двух томах»
Добрый день, товарищи! Есть такая книга:

У кого есть от нее DVD? Поделитесь, пожалуйста, если у…

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

Или воспользуйтесь поиском по форуму:

8

Вот текст запроса

ВЫБРАТЬ
	              |	ЦеныНоменклатурыСрезПоследних.Цена,
	              |	ЦеныНоменклатурыСрезПоследних.Валюта,
	              |	ЦеныНоменклатурыСрезПоследних.ВидЦены,
	              |	ЦеныНоменклатурыСрезПоследних.Номенклатура,
	              |	ЦеныНоменклатурыСрезПоследних.Характеристика
	              |ИЗ
	              |	РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
	              |ГДЕ
	              |	ЦеныНоменклатурыСрезПоследних.ВидЦены В(&ТипЦен)
	              |	И ЦеныНоменклатурыСрезПоследних.Номенклатура В(&Номенлатуры)"

Запрос построено на конструкторе запросов.

Текст ошибки

{Форма.ГлавнаяФорма.Форма(206)}: Ошибка при вызове метода контекста (Выполнить)
	ТабЗначРезультат = Запрос.Выполнить().Выгрузить();
по причине:
{(4, 2)}: Синтаксическая ошибка "ИЗ"
<<?>>ИЗ


  • Вопрос задан

    более трёх лет назад

  • 2216 просмотров

Ошибка синтаксиса языка запроса.
Вам нужно определится с тем, что вы используете. Если работаете с физической таблицей, то источник = РегистрСведений.ЦеныНоменклатуры. Если хотите виртуальную таблицу срезу последних, то даже не обязательно задавать время среза и условие (которое вы запихнули в секцию ГДЕ), но обязательно указать круглые кавычки!

ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Цена,
| ЦеныНоменклатурыСрезПоследних.Валюта,
| ЦеныНоменклатурыСрезПоследних.ВидЦены,
| ЦеныНоменклатурыСрезПоследних.Номенклатура,
| ЦеныНоменклатурыСрезПоследних.Характеристика
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены В(&ТипЦен) и Номенклатура В(&Номенлатуры)) КАК ЦеныНоменклатурыСрезПоследних»

Пригласить эксперта


  • Показать ещё
    Загружается…

06 июн. 2023, в 20:24

3500 руб./за проект

06 июн. 2023, в 20:08

100 руб./за проект

06 июн. 2023, в 20:05

150 руб./за проект

Минуточку внимания

  

ЭЦ

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Класс для вывода отчета в Excel
  • Счет-фактура для УПП
  • Библиотека классов для создания внешней компоненты 1С на C#
  • Акт об оказании услуг (со скидками) — внешняя печатная форма для Управление торговлей 11.1.10.86Акт об оказании услуг (со скидками) — внешняя печатная форма для Управление торговлей 11.1.10.86
  • Прайс-лист с артикулом в отдельной колонке

33 Comments

  1. Очень помогает в ситуациях, которые по-началу не поддаются объяснению )

    Reply

  2. К СКД ещё только приступил, поэтому не могу вполне оценить нужность этого механизма, но нутром чую, что он очень и очень пригодится. Попробую его понять и ипользовать. Спасибо!

    Reply

  3. В дерево отчетов попадают используемые наборы данных типа Запрос

    Объединения содержат вложенные наборы данных

    Наборы данных типа Объект представляются как простой запрос описания таблицы (перечислены поля)

    Также платформа добавляет системные наборы данных (для построения иерархии и т.п.)

    Далее идет отдельная ветка «Схема», в которой находится исходная схема КД

    Reply

  4. В самой консоли появилась дополнительная фишка — отладка запросов с передачей параметров типа «Таблица значений». Есть, конечно, ряд ограничений (на типизацию колонок), но в целом может пригодиться.

    Reply

  5. Хорошая идея и хорошая реализация. Молодец.

    Reply

  6. (6) Спасибо и за обработку, и за ссылку на курс по СКД.

    Reply

  7. отлично, будем пробовать 🙂

    Reply

  8. Спасибо. Давно искала что-то подобное 🙂

    Reply

  9. Пытаюсь добавить параметры из запроса, выдает ошибку {Форма.Форма.Форма(1560)}: Ошибка при вызове метода контекста (НайтиПараметры): {(56, 1)}: Синтаксическая ошибка

    Reply

  10. на форме «Параметры» есть кнопка «Список» она в общем-то и не нужна, ведь когда выбираем значение параметра, то можем там указать, что это список значений и заполнить его. А вот если бы там была кнопка «Таблица значений» и она бы добавляла в параметр значение «Таблица значений» было бы классно.

    Reply

  11. (12) mlv84, Синтаксическая ошибка в вашем запросе. Напишите корректный запрос — получите параметры (НайтиПараметры встроенный метод объекта Запрос)

    Reply

  12. (13) mlv84, Таблицу значений я добавил для отладочных целей. Самостоятельный ее ввод мне, например, не очень нужен (даже ее редактирование). Это создаст кучу проблем (интерфейс, юзабилити, типизация колонок и т.д.) Но если вам это необходимо и думаете что это будет интересно сообществу — дерзайте! Выкладывайте. или напишите tezin, он может добавить этот функционал в следующих версиях.

    Reply

  13. Serj1C пишет:

    (12) mlv84, Синтаксическая ошибка в вашем запросе. Напишите корректный запрос — получите параметры (НайтиПараметры встроенный метод объекта Запрос)

    Это да, прошу прощения. Запрос просто был большой. Кусочек потерялся при копировании. А таблицу значений придумала как обойти. Спасибо.

    Reply

  14. (16) mlv84, Поделись, плиз, как придумала

    Reply

  15. ничего сверх сложного. В моём случае в таблице значений была только одна строка. Я просто посмотрела в отладчике какие там значения. А потом в запросе их явно указала.

    У меня было так:

    «ВЫБРАТЬ

    | ТаблицаПериодов.ДатаНачала КАК ДатаНачала,

    | ТаблицаПериодов.ДатаОкончания КАК ДатаОкончания,

    | ТаблицаПериодов.ГруппаНачислений

    |ПОМЕСТИТЬ ИсходныеДанные

    |ИЗ

    | &ТаблицаПериодов КАК ТаблицаПериодов

    ………………..

    а сделала так:

    «ВЫБРАТЬ

    | ДАТАВРЕМЯ(2011, 04, 01, 0,0,0) КАК ДатаНачала,

    | ДАТАВРЕМЯ(2011, 04, 30, 23,59,59) КАК ДатаОкончания,

    | «%ДопНачисление%» как ГруппаНасилений //У меня здесь строковое значение передавалось

    КАК ТаблицаПериодов

    Reply

  16. (18) mlv84, Да, я тоже так делаю:

    Выбрать &Контрагент1 Контрагент, 15000 Сумма Поместить ТЗ

    Объединить все Выбрать &Контрагент2, 20000

    Объединить все Выбрать &Контрагент3, NULL

    и т.д.

    Reply

  17. Описанные функции (отладки запросов из компоновки) реализованы также в подсистеме «Инструменты разработчика» (функция Отладить, консоль компоновки данных) http://infostart.ru/public/15126/ . Там же там вы найдете много исследовательских инструментов в консоли компоновки данных, которые позволяет вам лучше понять, как устроен макет компоновки и расшифровка.

    Reply

  18. (20) tormozit, да, ваша подсистема выше всех похвал

    Reply

  19. UPD 29.02.2012

    Обновление оригинальной консоли до последней версии + возможность редактирования параметра с типом ТаблицаЗначений (интерфейс не дружественный, юзабилити на нуле, но если сильно понадобится, то редактируется).

    Reply

  20. Очень помогает как раз разбираюсь с СКД

    Reply

  21. Функционал отличный. Интерфейс хотелось бы по компактнее.

    Reply

  22. {Форма.ФормаОтладкаСКД.Форма(47)}: Ошибка при вызове метода контекста (Инициализировать)

    ПроцессорКД.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);

    по причине: Ошибка компоновки данных

    по причине: Ошибка инициализации

    по причине: Ошибка в выражении

    по причине: Синтаксическая ошибка «Справочники.ТехнологическиеОперации.НайтиПоКоду»

    Стандартная СКД принимает выражение Параметра в таком виде. Если элемент справочника не предопределенный, его можно найти позже — ПоКоду, ну или ПоНаименованию, что хуже в случае редактирования Наименования 😉

    При вызове Отладка СКД и нажатии Сформировать обработка не понимает такого выражения для Параметра.

    Reply

  23. (25) alex_shkut, Любопытно, никогда не замечал. Баг платформы. Могу отписать на 1c@1c.ru, но не думаю, что скоро исправят.

    Reply

  24. Возможность отлаживать отчет на СКД из формы отчета — это очень удобно. Спасибо. Имя файла в пути поправьте.

    Reply

  25. При использовании набора данных «Объект»:

    {Форма.Форма.Форма(791)}: Ошибка при вызове метода контекста (Выполнить): {(9, 2)}: Таблица не найдена «РезультатОсновногоЗапроса»

    <<?>>РезультатОсновногоЗапроса КАК Таблица

    РезультатОсновногоЗапроса — это имя объекта (внешнего набора данных).

    Reply

  26. Вот сам и отвечаю на свой пост (25)

    В Запроснике надо найти нечто похожее (не вскрывал его :))

    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,ДанныеРасшифровки,Истина);

    А вот описание значения Истина в конце функции:

    <ВозможностьИспользованияВнешнихФункций> (необязательный)

    Тип: Булево. Указывает возможность использования функции общих модулей конфигурации в выражениях компоновки данных.

    Значение по умолчанию: Ложь

    В моей текущей ситуации это была именно внешняя функция, но думаю, что это касается и прочих «СКД недвижковых» функций типа Справочники.НайтиПоКоду().

    Мне помогло, думаю что в Запроснике этого будет достаточно, чтобы ошибка исчезла.

    Нашел, где это: ФормаОтладкаСКД строка 47

    имеем: ПроцессорКД.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);

    надо: ПроцессорКД.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных,,истина);

    Reply

  27. (30) alex_shkut, мда, не тривиально… Ок, мотаем на ус!

    Reply

  28. Почему Вы не пишите вначале, что это для обычных форм, я получается зря потратила стартмани!

    Reply

  29. (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. суть отчета: выгрузить из регистра за период количество времени, списанное сотрудниками подразделений по дням. Вот запрос:

1C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
ВЫБРАТЬ     Сотрудники.Наименование КАК ФамилияИмяОтчество,     Сотрудники.Подразделение.Наименование + ЕСТЬNULL(Сотрудники.МаркерПодразделения.Наименование, "") КАК Подразделение,     ОтработаноЧасовОстаткиИОбороты.ПериодДень КАК ДатаОтчета,     ЕСТЬNULL(ОтработаноЧасовОстаткиИОбороты.КоличествоЧасовРасход, 0) КАК ЧасовВОтчете ИЗ     Справочник.Сотрудники КАК Сотрудники         ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОтработаноЧасов.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), , Авто, , ) КАК ОтработаноЧасовОстаткиИОбороты         ПО Сотрудники.Ссылка = ОтработаноЧасовОстаткиИОбороты.Сотрудник.Ссылка ГДЕ     Сотрудники.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусСотрудника.Работает)     И Сотрудники.Подразделение В(&МассивПодразделений)     И ОтработаноЧасовОстаткиИОбороты.Регистратор ССЫЛКА Документ.ЕжедневныйОтчет   УПОРЯДОЧИТЬ ПО     Подразделение

т.е. нужно получить информацию по всем сотрудникам из перечня подразделений и увидеть, по каким из работающих сотрудников есть списания в выбранном периоде и в какой день, а по каким — нет. Захотел присвоить значения параметров программно — чтобы их не набирать каждый раз для формирования отчета, а сразу заполнить при открытии формы. Сделал так в форме отчета:

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 41 42 43 44 45 46 47 
&НаСервере Функция ПодразделенияДляОтчета() Экспорт МассивПодразделений=Новый массив; МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000001"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000003"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000004"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000005"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000006"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000007"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000008"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000009"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000010"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000011"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000012"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000013"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000020")); Возврат МассивПодразделений;   КонецФункции    &НаСервере Процедура ПриОткрытииНаСервере()     // Вставить содержимое обработчика.     ПараметрСКД = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("МассивПодразделений");    ПараметрСКД.Использование = Истина;    ПараметрСКД.Значение  = ПодразделенияДляОтчета();     ПараметрНачалоПериода = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода");    ПараметрНачалоПериода.Использование = Истина;    Если ДеньНедели(ТекущаяДата()) >1 И ДеньНедели(ТекущаяДата()) <6 тогда    ПараметрНачалоПериода.Значение  = Текущаядата()-86400; иначе Если ДеньНедели(ТекущаяДата()) =1 тогда    ПараметрНачалоПериода.Значение  = Текущаядата()-3*86400; КонецЕсли; КонецЕсли;  ПараметрОкончаниеПериода = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ОкончаниеПериода");    ПараметрОкончаниеПериода.Использование = Истина;    Если ДеньНедели(ТекущаяДата()) >1 И ДеньНедели(ТекущаяДата()) <6 тогда    ПараметрОкончаниеПериода.Значение  = Текущаядата()-86400; иначе Если ДеньНедели(ТекущаяДата()) =1 тогда    ПараметрОкончаниеПериода.Значение  = Текущаядата()-3*86400; КонецЕсли; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ)     ПриОткрытииНаСервере(); КонецПроцедуры

ни один из параметров в режиме предприятия не заполняется… что не так делаю? помогите пожалуйста. Параметры отчета в СКД прилагаю.

Миниатюры

Отчет СКД: не заполняются значения параметров
 

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

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

сделал в модуле объекта:

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 
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка=Ложь; ПараметрСКД = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("МассивПодразделений");    ПараметрСКД.Использование = Истина;    ПараметрСКД.Значение  = ПодразделенияДляОтчета();     ПараметрНачалоПериода = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода");    ПараметрНачалоПериода.Использование = Истина;    Если ДеньНедели(ТекущаяДата()) >1 И ДеньНедели(ТекущаяДата()) <6 тогда    ПараметрНачалоПериода.Значение  = Текущаядата()-86400; иначе Если ДеньНедели(ТекущаяДата()) =1 тогда    ПараметрНачалоПериода.Значение  = Текущаядата()-3*86400; КонецЕсли; КонецЕсли;  ПараметрОкончаниеПериода = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ОкончаниеПериода");    ПараметрОкончаниеПериода.Использование = Истина;    Если ДеньНедели(ТекущаяДата()) >1 И ДеньНедели(ТекущаяДата()) <6 тогда    ПараметрОкончаниеПериода.Значение  = Текущаядата()-86400; иначе Если ДеньНедели(ТекущаяДата()) =1 тогда    ПараметрОкончаниеПериода.Значение  = Текущаядата()-3*86400; КонецЕсли; КонецЕсли;   КонецПроцедуры

ситуация та же… параметры не заполняются. Что не так опять делаю?

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 минут
Вижу сложности. Вот нашел у себя пример. Мне нужно было перенести в нестандартную обработку пользовательские настройки (параметры и отбор), с просто настройками — по аналогии.

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 
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)       СтандартнаяОбработка = Ложь;     КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных;     ДН = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0].Значение.ДатаНачала;     ДО = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0].Значение.ДатаОкончания;     КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Значение.ДатаНачала = ДН;     КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Значение.ДатаОкончания = ДО;     Для каждого Эл Из КомпоновщикНастроек.Настройки.Отбор.Элементы  Цикл             Поле = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Эл.ИдентификаторПользовательскойНастройки);     Эл.Использование =  Поле.Использование;     Эл.ВидСравнения = Поле.ВидСравнения;     Эл.ПравоеЗначение = Поле.ПравоеЗначение;     Эл.ПредставлениеПользовательскойНастройки = Поле.ПредставлениеПользовательскойНастройки;             КонецЦикла;         Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, ЭтотОбъект.КомпоновщикНастроек.Настройки, ДанныеРасшифровки);     ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;     ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);     ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;     ПроцессорВывода.УстановитьДокумент(ДокументРезультат);     ПроцессорВывода.Вывести(ПроцессорКомпоновки);     ДокументРезультат.ПоказатьУровеньГруппировокСтрок(1); // Сворачиваем группировки второго уровня вложенности     КонецПроцедуры

0

jediAlex

4 / 4 / 4

Регистрация: 12.07.2011

Сообщений: 622

13.11.2018, 11:51

 [ТС]

7

попробовал сделать по примеру:

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 
СтандартнаяОбработка = Ложь;     КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных;      Если ДеньНедели(ТекущаяДата()) >1 И ДеньНедели(ТекущаяДата()) <6 тогда    ДН  = Текущаядата()-86400; иначе Если ДеньНедели(ТекущаяДата()) =1 тогда    ДН  = Текущаядата()-3*86400; КонецЕсли; КонецЕсли; Если ДеньНедели(ТекущаяДата()) >1 И ДеньНедели(ТекущаяДата()) <6 тогда    ДО  = Текущаядата()-86400; иначе Если ДеньНедели(ТекущаяДата()) =1 тогда    ДО  = Текущаядата()-3*86400; КонецЕсли; КонецЕсли; Подраздел=ПодразделенияДляОтчета();     //Подраздел=КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0].Значение.МассивПодразделений;     КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Значение.ДатаНачала = ДН;     КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Значение.ДатаОкончания = ДО;     КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Значение.МассивСотрудников = Подраздел;     Для каждого Эл Из КомпоновщикНастроек.Настройки.Отбор.Элементы  Цикл         Поле = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Эл.ИдентификаторПользовательскойНастройки);     Эл.Использование =  Поле.Использование;     Эл.ВидСравнения = Поле.ВидСравнения;     Эл.ПравоеЗначение = Поле.ПравоеЗначение;     Эл.ПредставлениеПользовательскойНастройки = Поле.ПредставлениеПользовательскойНастройки;         КонецЦикла;         Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, ЭтотОбъект.КомпоновщикНастроек.Настройки, ДанныеРасшифровки);     ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;     ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);     ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;     ПроцессорВывода.УстановитьДокумент(ДокументРезультат);     ПроцессорВывода.Вывести(ПроцессорКомпоновки);     ДокументРезультат.ПоказатьУровеньГруппировокСтрок(1); // Сворачиваем группировки второго уровня вложенности

в результате параметры не заполняются все равно… что не так делаю?

0

polax

1783 / 1208 / 437

Регистрация: 16.01.2015

Сообщений: 5,321

13.11.2018, 12:20

8

jediAlex, Не надо просто копировать мой код. Адаптируйте его к своему. Например Параметры. У меня Меняется ОДИН параметр — Стандартный отчет (на скрине &Параметр) поэтому это ОДНА строка

1C
1 
КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2]

у вас нет стандартного отчета, у вас ДВЕ строки поэтому уже установка всего в Элементы[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 минуты
ОкончаниеПериода — параметр, который задается пользователем и используется для расчета конца периода. Я пробовал без этого обойтись — сразу в условии запроса писал
….

1C
1 
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОтработаноЧасов.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Авто, , ) КАК ОтработаноЧасовОстаткиИОбороты

но при этом у меня не попадал в отчет конечный день интервала.

0

polax

1783 / 1208 / 437

Регистрация: 16.01.2015

Сообщений: 5,321

13.11.2018, 22:05

11

jediAlex,

1C
1 
Извини в 13 уехал на работу в 21 приехал, раньше никак

Вот это правильно для моего варианта, неправильно для твоего

1C
1 2 3 4 
 //Подраздел=КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0].Значение.МассивПодразделений;     КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Значение.ДатаНачала = ДН;     КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Значение.ДатаОкончания = ДО;     КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Значение.МассивСотрудников = Подраздел

Замени на

1C
1 2 3 4 
 //Подраздел=КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0].Значение.МассивПодразделений;     КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0].Значение = ДН;     КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[3].Значение = ДО;     КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Значение = Подраздел

А вообще ставь точку останова и смотри значение КомпоновщикНастроек.Настройки.ПараметрыДанных.Элем енты, увидишь под каким индексом что стоит

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

Цитата
Сообщение от jediAlex
Посмотреть сообщение

Подраздел=ПодразделенияДляОтчета();

Функция ПодразделенияДляОтчета() что возвращает? Проверяли? Дайте код этой функции

Добавлено через 1 минуту
Где ставили точку останова? Сначала запускаете конфигуратор, из него запускаете программу (отладку). Есть подозрение что сделали наоборот

0

jediAlex

4 / 4 / 4

Регистрация: 12.07.2011

Сообщений: 622

14.11.2018, 09:51

 [ТС]

14

вот функция:

1C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 
Функция ПодразделенияДляОтчета() Экспорт МассивПодразделений=Новый массив; МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000001"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000001"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000003"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000004"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000005"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000006"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000007"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000008"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000009"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000010"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000011"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000012"));         МассивПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("000000013")); Возврат МассивПодразделений;   КонецФункции

точку ставлю на строке

1C
1 
КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Значение = Подраздел;

ставил и на строке

1C
1 
Подраздел=ПодразделенияДляОтчета();

чтоб посмотреть, что функция дает.. останова не происходит…

Добавлено через 1 минуту
код справочника — в виде строки

0

1783 / 1208 / 437

Регистрация: 16.01.2015

Сообщений: 5,321

14.11.2018, 09:58

15

jediAlex, Раз параметры даты устанавливаются, значит код работает, отсюда — должна останавливаться по точке останова. Вариант один — не запущена отладка:

Цитата
Сообщение от polax
Посмотреть сообщение

Сначала запускаете конфигуратор, из него запускаете программу (отладку).

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 секунд
https://my-files.ru/z56the

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

LiveJournal

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С. Рекомендую ознакомиться с Часто Задаваемыми Вопросами обо мне. Что я хочу в подарок — список. Мой проект «…

Синтаксическая ошибка ВЫБРАТЬ при выполнении запроса

Синтаксическая ошибка «ВЫБРАТЬ»<?> ВЫБРАТЬ возникает в 1С, когда в тексте запроса идут его блоки в подряд без разделения между собой.

Синтаксическая ошибка ВЫБРАТЬ

Рис.1 Скриншот ошибки «Выбрать»

Например, в случаях:

  • объединения запросов, когда подзапросы должны отделяться служебными словами «ОБЪЕДИНИТЬ» или «ОБЪЕДИНИТЬ ВСЕ«
  • два запроса идущие в подряд для последующей выборки методом ВыбратьПакет(): требуется их разделение » ; «
  • последующая выборка из временной таблицы: также необходимо разделение » ; «
  • неверный синтаксис во вложенном запросе в конструкции ГДЕ Значение В (Выбрать ссылка из Справочники.ПримерСправочника): доступно только сравнение » В ()«, а не «=«, «>» и прочее

Замечу, что такая ошибка возникает при ручной правке текста, поскольку при формировании  конструктором запроса, он вставляет разделители самостоятельно:

Разделение подзапросов

Цифры в начале ошибки (на рисунке — 386,1) —  это номер строки в запросе. При большом тексте  такая информация поможет быстрее локализовать ошибку.

Поведение системы

Выполнение запроса прерывается, но система продолжает работать

Об идеалах нации можно судить по ее рекламе.

Всё работало хорошо, но вдруг перестало, после того, как я внес изменения в макет СКД:

При формировании отчета появлялась надпись «Синтаксическая ошибка» и всё.

Когда убрал некоторые секции, методом деструктивного исключения обнаружил, что глючит зеленая секция.

Благо, CTRL+Z сработал и вернул изменения назад (каюсь, рабочей версии отчета не было).

Вздохнул было, но потом опять ошибка возникла. И тут до меня дошло — проблема в пустых ячейках, где указан тип ячейки «Параметр», но не указано, значение какого параметра брать. Поменял тип на Текст — и все заработало.

Экие тонкости в 1С, однако!

Понравилась статья? Поделить с друзьями:
  • Синтаксические ошибки примеры и исправления таблица
  • Синтаксические ошибки презентация
  • Синтаксические ошибки культура речи
  • Синтаксические ошибки книга
  • Синтаксические ошибки иностранцев