0

Недопустимый параметр

Недопустимое значение параметра (параметр номер ‘3’)

ДокументМенеджер.<Имя документа>.Выбрать (DocumentManager.<Имя документа>.Select) ДокументМенеджер.<Имя документа> (DocumentManager.<Имя документа>) Выбрать (Select) Синтаксис:
Выбрать(<ДатаНачала>, <ДатаОкончания>, <Отбор>, <Порядок>)
Параметры:
<ДатаНачала> (необязательный) Тип: Дата.
Дата и время начала периода выборки документов. Если параметр не указан, то выбираются все документы, начиная с самого первого документа в базе данных.
Значение по умолчанию: Пустая дата.
<ДатаОкончания> (необязательный) Тип: Дата.
Дата окончания периода выбираемых документов. Если параметр не указан, то выбираются все документы, заканчивая самым последним документом в базе данных.
Значение по умолчанию: Пустая дата. <Отбор> (необязательный) Тип: Структура.
Задает поле и значение отбора открываемой выборки. Ключ структуры описывает имя поля, а значение структуры — значение отбора по этому полю. В качестве полей для отбора могут задаваться только поля «Дата» и реквизиты документа, для которых в конфигураторе признак индексирования установлен в значение «Индексировать» или в значение «Индексировать с доп. упорядочиванием».
Важно! Структура может содержать только один элемент.
Если параметр не указан, то отбор не используется.
<Порядок> (необязательный) Тип: Строка.
Строка с именем реквизита документа, определяющая упорядочивание документов в выборке. Может быть указано поле «Дата» или имя реквизита документа, для которого признак индексирования в конфигураторе установлен в значения «Индексировать» или «Индексировать с доп. упорядочиванием». После указания имени через пробел может быть указано направление сортировки. Направление определяется: «Убыв» («Desc») — упорядочивать по убыванию, и «Возр» («Asc») — упорядочивать по возрастанию. По умолчанию выборка упорядочивается по возрастанию.
Если параметр не задан, выборка упорядочивается по хронологии документов.
Возвращаемое значение:
Тип: ДокументВыборка.<Имя документа>.
Описание:
Формирует выборку документов за определенный период. Получаемая выборка может быть упорядочена по реквизитам документа.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Пример:
Выборка = Документы.РасходнаяНакладная.Выбрать(ДатаНач, ДатаКон);

РеквизитФормыВЗначение / ЗначениеВРеквизитФормы

Admin 4 мая, 2020

Всем привет! В период майских праздников решил выделить немного времени на новую заметку и сегодня мы разберем 2 часто используемых метода формы клиентского приложения ‘РеквизитФормыВЗначение’ и ‘ЗначениеВРеквизитФормы’.

Два данных метода доступны только на сервере с контекстом формы – следовательно исполняются только под директивой ‘&НаСервере’ :

  • РеквизитФормыВЗначение – преобразовывает реквизит формы (УФ) в объект прикладного типа.
  • ЗначениеВРеквизитФормы – наоборот, преобразовывает объект прикладного типа в реквизит формы (УФ).

Если прочитать определения этих методов, то все равно не понятно, а как и для чего их использовать на практике. Но сейчас мы с этим разберемся на примерах.

Итак, один из самых частых примеров использования метода ‘РеквизитФормыВЗначение’ это когда нам из формы объекта (к примеру документа) необходимо произвести заполнение данных объекта (к примеру табличной части) с помощью процедуры, которая находится в модуле нашего объекта:

1С (Код)

В самой процедуре ‘ЗаполнитьУсловияЗакупокПоУмолчанию’ (в модуле объекта) произойдет заполнение нашего объекта, а затем мы уже отображаем их на форме с помощью метода ‘ЗначениеВРеквизитФормы(ДокументЗакупки, “Объект”)’:

1С (Код)

1 2 3 4 5 6 7 8 9 10 11 12 13 Процедура ЗаполнитьУсловияЗакупокПоУмолчанию(ПересчитатьЦены = Истина) Экспорт Если ЗначениеЗаполнено(Партнер) Тогда Комментарий = «Тест Тест +++craft1c»; //craft1c УсловияЗакупокПоУмолчанию = ЗакупкиСервер.ПолучитьУсловияЗакупокПоУмолчанию(Партнер, Новый Структура(«УчитыватьГруппыСкладов, ВыбранноеСоглашение», Истина, Соглашение)); ЦеныЗаполнены = Ложь; Если УсловияЗакупокПоУмолчанию <> Неопределено Тогда ///…. КонецПроцедуры

Изменили объект и отобразили это на форме.

Если мы на форме изменили значения реквизитов, а затем преобразовали реквизит формы ‘Объект’ в значение, то он будет содержать уже новые значения, которые мы изменили на форме (при этом объект базы данных (наш документ) – будет содержать еще старые значения):

  • ЗначениеВРеквизитФормы – получает объект, значения которого по сути взяты с формы (заполнены данными формы);
  • ПолучитьОбъект() – получает объект из базы данных.

Допустим мы можем сам программно вызвать проверку заполнения объекта (с данными формы):

1С (Код)

В результате чего для нашего объекта будет вызвана процедура из модуля объекта ‘ОбработкаПроверкиЗаполнения‘:

ОбработкаПроверкиЗаполнения.

Допустим у нас есть реквизит формы ‘ТаблицаЗначенийПроекты’, которая отображается на форме. Мы можем на сервере получить таблицу с такими же колонками и заполнить её данными, а затем преобразовать её в этот реквизит:

1С (Код)

1 2 3 4 5 6 7 8 9 10 11 12 13 &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Запрос = Новый Запрос( «ВЫБРАТЬ | Проекты.Ссылка КАК Проект |ИЗ | Справочник.Проекты КАК Проекты»); ТЗИзКода = Запрос.Выполнить().Выгрузить(); ЗначениеВРеквизитФормы(ТЗИзКода, «ТаблицаЗначенийПроекты»); КонецПроцедуры

Реквизит формы типа таблица значений.

Важный нюанс: К примеру реквизиты с типом ‘Строка’/’Число’/’Булево’ и т.д. не удастся преобразовать в прикладной объект:

Не все реквизиты можно преобразовать в объект.

Если вы все же попробуете это сделать, то получите ошибку ‘Недопустимое значение параметра (параметр номер ‘1’).’:

Недопустимое значение параметра (параметр номер ‘1’).

В общем что бы разобраться полностью с этим вопросом, можете поискать в своей конфигурации все места, где используются данные методы. И вы увидите как разработчики типовых конфигураций их применяют в своих решениях.

Так стоит обратить и еще на один важный момент:

РеквизитФормыВЗначение тип значения.

Так же данный метод ‘РеквизитФормыВЗначение’ часто используют что бы получить макет внешней обработки:

1С (Код)

1 2 3 4 5 6 7 &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОбъектОбработка = РеквизитФормыВЗначение(«Объект»); ОбъектОбработка.ПолучитьМакет(«НашКрутойМакет»); КонецПроцедуры

Многие также могут столкнуться с двумя похожими методами: ‘ДанныеФормыВЗначение’ и ‘ЗначениеВДанныеФормы’. Это в принципе аналогичные методы (как говорит нам 1с эти методы взаимозаменяемы) – вот что по этому поводу говорит 1с (статья на сайте 1с):

Использование РеквизитФормыВЗначение и ДанныеФормыВЗначение.

Единственно существенно отличие ‘ДанныеФормыВЗначение‘ от ‘РеквизитФормыВЗначение‘ ‘это то, что первый метод может использоваться на сервере без контекста формы, именно поэтому важно указывать тип данных. Очень часто этот метод используют в общих модулях:

1С (Код)

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 Функция ДанныеРезультатовПроверки(Форма) Экспорт ДанныеРезультатовСканированияАлкогольнойПродукции = Новый Структура; ДанныеРезультатовСканированияАлкогольнойПродукции.Вставить(«ДеревоМаркированнойПродукции», ДанныеФормыВЗначение(Форма.ДеревоМаркированнойПродукции, Тип(«ДеревоЗначений»))); ДанныеРезультатовСканированияАлкогольнойПродукции.Вставить(«ТаблицаНеМаркируемойПродукции», ДанныеФормыВЗначение(Форма.ТаблицаНеМаркируемойПродукции, Тип(«ТаблицаЗначений»))); ДанныеРезультатовСканированияАлкогольнойПродукции.Вставить(«ПулНеизвестныхАкцизныхМарок», ДанныеФормыВЗначение(Форма.ПулНеизвестныхАкцизныхМарок, Тип(«ТаблицаЗначений»))); ДанныеРезультатовСканированияАлкогольнойПродукции.Вставить(«АлкогольнаяПродукцияКОпределениюСправок2», ДанныеФормыВЗначение(Форма.АлкогольнаяПродукцияКОпределениюСправок2, Тип(«ДеревоЗначений»))); ДанныеРезультатовСканированияАлкогольнойПродукции.Вставить(«УпаковкиДокумента», Форма.УпаковкиДокумента); ДанныеРезультатовСканированияАлкогольнойПродукции.Вставить(«ДетализацияСтруктурыХранения», Форма.ДетализацияСтруктурыХранения); ДанныеРезультатовСканированияАлкогольнойПродукции.Вставить(«РежимПроверки», Форма.РежимПроверки); ДанныеРезультатовСканированияАлкогольнойПродукции.Вставить(«ДобавленныеУпаковки», Форма.ДобавленныеУпаковки); ДанныеРезультатовСканированияАлкогольнойПродукции.Вставить(«ДоступныеДляПроверкиУпаковки», Форма.ДоступныеДляПроверкиУпаковки); ДанныеРезультатовСканированияАлкогольнойПродукции.Вставить(«СледующийСтикерОтложено», Форма.СледующийСтикерОтложено); ДанныеРезультатовСканированияАлкогольнойПродукции.Вставить(«СохраненВыборПоМаркируемойПродукции», Форма.СохраненВыборПоМаркируемойПродукции); ДанныеРезультатовСканированияАлкогольнойПродукции.Вставить(«ДанныеВыбораПоМаркируемойПродукции», Форма.ДанныеВыбораПоМаркируемойПродукции); ДанныеРезультатовСканированияАлкогольнойПродукции.Вставить(«ШтрихкодТекущейПроверяемойУпаковки», ШтрихкодТекущейПроверяемойУпаковки(Форма)); ДанныеРезультатовСканированияАлкогольнойПродукции.Вставить(«ДанныеРанееСгенерированныхШтрихкодов», ?(ЭтоАдресВременногоХранилища(Форма.АдресПредыдущихШтрихкодов), ПолучитьИзВременногоХранилища(Форма.АдресПредыдущихШтрихкодов), Неопределено) ); Возврат ДанныеРезультатовСканированияАлкогольнойПродукции; КонецФункции

В принципе все не так уж и сложно. Особенно если пару раз использовать эти методы в своих решения. Практикуйтесь и вы все поймете!

Для более глубокого изучения 1С скачайте книгу «Разработка оперативного учёта в 1С 8.3»

Параметры отчёта в СКД – это аргументы, которые может принимать функция. Параметры нужны для того, чтобы после обработки переданной информации, функция смогла вернуть определённое значение.

В СКД параметры задаются на вкладке «Параметры». Если пользователь желает включить свойство «Автозаполнение», то параметры виртуальных таблиц, используемые внутри системы, и параметры, которые прописываются пользователем вручную в запросе, будут автоматически переданы СКД в общий список. Эти передаваемые системой параметры называются внешними. Внутренние настройки СКД самостоятельно генерируют имена всем общедоступным параметрам.

Над параметрами системы можно производить следующие действия:

  • Редактировать имя, заголовок, тип и значение;
  • Определять доступные числовые или строковые значения;
  • Определять выражение;
  • Определить параметр как доступное в СКД поле;
  • Ограничить доступ к определённому параметру;
  • Задавать параметры редактирования.

Добавление параметров через виртуальную таблицу

Добавление и настройку параметров встроенной виртуальной таблицы «РегистрыНакопления» покажем на следующем примере.

В СКД создаём внешний отчёт. Открываем схему компоновки данных. Создаём запрос, который обращается к используемой нами таблице. Добавляем в созданный запрос набор данных. После чего в конструкторе запроса выбираем регистр накопления «ТоварыНаСкладахОстаткиИОбороты».

Далее открываем диалоговое окно «Параметры виртуальной таблицы» и настраиваем необходимые параметры.

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

Параметры, созданные пользователем внутри отчёта или конструктора, называются внутренними.

Настройки СКД в отчёте будем производить на вкладке «Параметры».

В списке параметров уже содержатся два внешних параметра, переданные ранее из виртуальной таблицы.

Добавляем на вкладке «Параметры» новый параметр «Период», устанавливаем тип «СтандартныйПериод». Для параметров «НачалоПериода» и «КонецПериода» определяем функциональное выражение для расчёта и поставим запрет на редактирование параметров пользователем.

Установка периода при использовании механизма стандартного периода выглядит следующим образом:

Настройки СКД предоставляют возможность скрывать или отображать параметры отчёта. Для этого на вкладках «Включать в доступные поля» и «Ограничение доступности» можно поставить или убирать флажок, чтобы активизировать данные свойства.

Внешние функции у внутренних параметров в СКД

При построении запроса в СКД внутри него можно использовать штатные функции языка запросов. Кроме того, в СКД можно определять дополнительные функции. Функции задаются формулами. Это может быть операция над числами, строками, датами. Формула может содержать булевское выражение или агрегатную функцию для выполнения некоторого действия над набором данных.

Чтобы добавить функцию, нужно на вкладке параметры выбрать колонку «Выражение». Отобразятся все функции, встроенные в систему. С помощью данных функций можно вычислять выражения, добавлять дату, месяц, год, различные периоды, рассчитывать суммы продаж, назначать формат выражению и многое другое. В СКД можно передавать в функции параметры, а можно использовать функцию без параметров.

Использование встроенных функций в конструкторе запросов и передача этим функциям параметров даёт возможность значительно упростить работу с отчётом СКД. Вызванные внешние функции позволяют рассчитать необходимое значение, не написав не единой строчки программного кода.

Инфо-Бухгалтер 8: Типовые ошибки

Типовые ошибки при первой установке программы.

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

Ниже приведены проблемы и способы решения часто задаваемых вопросов.

В файл будет постоянно добавляться новая информация об ошибках и решениях…

Ошибки BDE.

Проблема:

При запуске программы выскакивает сообщение: «Не установлен или испорчен БДЕ».

Как правило не получается установить BDE в автоматическом режиме из-за повышенной защиты учетной записи.

Решение:

Требуется скачать файл установки BDE с нашего сайта или установить BDE с диска.

Ссылка на скачивание: http://www.ib.ru/wiki/2007

Установка BDE с диска: Для установки BDE с диска следует выполнить следующие шаги:

1) Запустить установку с диска и выбрать пункт Установка BDE 5.01

Рис. 1: Установка BDE с диска.

  • Следовать указаниям по установке.

Проблема:

При запуске программы выскакивают сообщения следующего характера:

Неверное значение параметра … Как правило их появляется много, все они связаны с неправильной настройкой BDE.

Решение:

Для начала все эти ошибки надо пропустить нажимая на OK.

После этого выводится окно с предложением исправить некоторые параметры автоматически. Нажимаем ИСПРАВИТЬ. Но 2 параметра автоматически изменить не получается, поэтому следует сделать следующее:

  • Зайти в «Панель управления».

    Windows 7\XP – Пуск — Панель Управления.

Windows 8 – а) Переместите курсор в верхний или нижний правый угол рабочего

стола. Когда появится панель меню, нажмите Параметры (Settings).

б) НажмитеПанель управления (Control Panel).

    • 2) Зайти в утилиту BDE администратор.

      Рис. 2: Параметры BDE

3) Развернуть в левом столбце поля System – Formats – Date.

Изменить значение поля MODE с нуля на 1.

Изменить значение поля SEPARATOR со слеша на точку.

Закрыть BDE и согласиться с сохранением параметров.

4) Бывают ситуации когда после внесения изменений при попытке сохранить параметры, BDE зависает, связанно это с повышенной безопасностью учетной записи.

Для исправления необходимо зайти в

Панель управления — Учетные записи пользователей — Изменение параметров контроля учетных записей. И опустить ползунок в нижнее положение. Затем запустить BDE с правами администратора непосредственно из папки, где установлен BDE.

Папка — С:\Program Files /Borland/Common Files/BDE.

Кликнуть по ярлыку правой кнопкой мышки и Запустить от имени администратора…

После этого внести изменения описанные выше.

Блок зарплата.

Проблема:
При расчете бланка 1.1 Расчет заработной платы выдает ошибку Для индексной переменной «коэфШкалыВыч» не определено значение…

Рис. 3: Ошибка расчета Заработной платы

Решение:

Ошибка возникает при отсутствии заполненого справочника Шкалы Вычетов

Для исправления необходимо зайти в

Зарплата/Кадры — Зарплата — Настройки — Шкала Вычетов.

Данный справочник будет пуст, необходимо добавить 2 записи(F7):

а) Первая Сумма = 0 Коэффициент = 1

б) Вторая Сумма = 40000 Коэффициент = 0

Рис. 4: Шкала вычетов

После этого можно производить расчет заработной платы.

Проблема:

Бланк 2.1: Расчет страховых взносов.

Выдается ошибка “ Для индексной переменной Налог не определенно значение индексной переменной для индекса 51/ПЕНС/СНЕТ.”

Решение:

Ошибка связана с неправильной установкой тарифа (51) для УСН.

Необходимо установить 52 тариф, для этого:

а) Зайти в Зарплата/Кадры — Зарплата — Служебные — Смена тарифов для типов.

б) Установить для типов работников 52 тариф (УСН).

Можно производить расчет страховых взносов.

Проблема:

При заполнении карточки общих данных выскакивает ошибка Invalid Parametr…

Обычно ошибка появляется при первой установке программы, что связанно с усиленной

защитой системы.

Решение:

Есть три способа:

1) Перенести папку PROJECT из рабочей программы (если у вас уже есть установленная программа)

2) Выполнить установку заново, предварительно отключив на время антивирус и в панели управления — учетные записи пользователей — изменить параметры контроля опустив

ползунок в нижнее положение.

3) Зайти в программе Установка — Определения.

Удалить запись Конфигурация, перезапустить программу.

Проблема:

При попытке расчитать бланк 2.1 Выдает сообщение «Не найдено поле FOND».

Данная ошибка связана с повреждением таблицы Тарифов.

Решение:

1) Переключить расчетные периоды, сначала выставить 2011 затем 2012 и наконец вернуться к текущему периоду. ( Не всегда приводит к восстановлению таблицы).

2) Скопировать файл zp_cfg37.dbf, который лежит в директории программы DATA/ZP/ZPCFG

из ранее установленной программы.(Если не единственная копия программы).

3) Установить новую программу и перенести zp_cfg37.dbf из нее.

Дано: 1С (в данном примере конфигурация 1С:Университет ПРОФ), платформа 8.3.10. Создано расширение, в котором к документу добавлен новый макет. В модуле менеджера документа есть процедура, формирующая печатную форму на базе макета. Необходимо было заменить данную процедуру (при помощи директивы расширения «&Вместо») и заменить вызов встроенного макета на наш, добавленный в расширение.
Проблема: при вызове добавленного макета в момент его печати в режиме «1С:Предприятие» возникала ошибка при получении макета:
{ЗаявлениеПоступающегоРасширение Документ.ЗаявлениеПоступающего.МодульМенеджера(176)}: Ошибка при вызове метода контекста (ПолучитьМакет)
Макет = Документы.ЗаявлениеПоступающего.ПолучитьМакет («Расш1_МакетЗаявлениеПоступающего»);
по причине:
Недопустимое значение параметра (параметр номер ‘1’)


Код, вызывающий ошибку:

Варианты решения:
1. Добавить функцию, выполняемую на сервере, которая вызовет добавленный макет из документа:
&НаСервере

Функция ПолучитьМакетЗаявленияИзРасширения() Макет = Документы.ЗаявлениеПоступающего.ПолучитьМакет («Расш1_МакетЗаявлениеПоступающего»); Возврат Макет; КонецФункции

А затем из заменяемой процедуры вызвать эту функцию:

(как оказалось этот способ не нужен. Причину читайте ниже)
2. Другой вариант — перенести макеты в общие и следующей командой вызвать (получить) макет из «Общие макеты»:
Макет = ПолучитьОбщийМакет («Расш1_МакетЗаявлениеПоступающего»);

——
Видимо это всё-таки какой-то глюк платформы (протестировано на 8.3.10.2252 и 8.3.10.2299), но если просто добавить пустой макет в общие макеты в расширении, то команда, ранее вызывавшая ошибку (ПолучитьМакет из макета документа без допфункций на сервере), начинает нормально работать. При удалении пустого общего макета, команда вызова макета из документа снова вызывает ошибку (даже если вынесена в функцию на сервере, как показано в способе 1).
Т.е. если всё-таки хочется сделать макеты нормально в документе (ожидая, что когда-нибудь этот глюк исправят), то нужно сделать макет-заглушку в общих макетах. Например:

При этом, если в расширении добавлено несколько макетов к документу, то «заглушки» достаточно только одной.

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *