суббота, 31 марта 2018 г.

Изменение данных объекта (РеквизитФормыВЗначение & ЗначениеВРеквизитФормы)

Чтобы обратиться к экспортной процедуре созданного объекта который еще не сохранен в базе - нужно воспользоваться методом "РеквизитФормыВЗначение"
Данные метод преобразует указанный реквизит формы в объект прикладного типа:



Даже при пустой ссылке (то есть объект еще не создан в базе) мы можем получить экспортные процедуры и переменные текущего объекта метаданных. 

воскресенье, 11 февраля 2018 г.

Запрос с нарастающим итогом

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

  1. Нужно отобрать необходимые обороты (в данном случае "Приход") из регистра и поместить их во временную таблицу к которой будем обращаться.
  2. Выбрать 2 раза получившуюся таблицу и соединить по внутреннему соединению по необходимым полям и периоду через ">="
  3. Применить необходимую группировку
  4. Упорядочить по вкусу.

Нумерация таблицы в запросе

Если в запросе необходима нумерация а подходящих полей для этого нет нужно воспользоваться следующим приемом:

(Рассмотрим на примере нумерации данных справочника контрагенты)

Нужно выбрать 2 раза одну и ту же таблицу и соединить их через внутреннее соединение по ">=" или "=<" и сгруппировать строки по количеству.



воскресенье, 4 февраля 2018 г.

Дерево значений (Выгрузка на форму из запроса)

Чтобы отобразить на форме результат запроса в дереве значений нужно :
Создать на форме элемент формы с типом - "ДеревоЗначений" и необходимые колонки с соответствующими типами:




Листинг кода выгрузки на сервере:


Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               | Номенклатура.Ссылка КАК Ссылка
               |ИЗ
               | Справочник.Номенклатура КАК Номенклатура
               |ИТОГИ ПО
               | Ссылка ИЕРАРХИЯ";
Результат = Запрос.Выполнить();
ЗначениеВРеквизитФормы(Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией), "ДеревоЗначений"); // эта конструкция и выгружает результат


воскресенье, 19 ноября 2017 г.

Пауза, задержка времени, при выполнении кода 1С

Задержку времени в 1С можно реализовать с помощью COM объекта "WScript.Shell" или на встроенном языке.

Задержка времени на встроенном языке 1С


На встроенном языке 1С можно написать цикл с проверкой даты и времени. Данный метод является более универсальным.

Процедура ПаузаПустымЦиклом(Секунды)
  
 ВремяОкончания = ТекущаяДата() + Секунды;
 Пока ТекущаяДата() <= ВремяОкончания Цикл 
 КонецЦикла;
 
КонецПроцедуры