суббота, 10 апреля 2021 г.

Получить значение параметра СКД ПриКомпоновкеРезультата

 Чтобы определить значение параметра при ПриКомпоновкеРезультата нужно воспользоваться одним из методов: 

Листинг:

// 1 Способ получения параметра
ПараметрПериод = Новый ПараметрКомпоновкиДанных("Период");
ЗначениеПериод = Неопределено;
Для каждого Элемент ИЗ КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") 
И Элемент.Параметр = ПараметрПериод 
И Элемент.Использование Тогда
ЗначениеПериод = Элемент.Значение;
КонецЕсли;
КонецЦикла;  
// 2 Способ получения парамера (не самый оптимальный)
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
Элемент = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));
Если Элемент <> Неопределено И Элемент.Использование Тогда
ЗначениеПериод2 = Элемент.Значение;
КонецЕсли;
// 3 Способ (используется в типовых конфигурациях)
Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период");

понедельник, 7 мая 2018 г.

среда, 4 апреля 2018 г.

Раскрасить табличную часть или условное оформление табличной части

Чтобы раскрасить табличную часть документа (установить параметры условного оформления) нужно воспользоваться следующим методом в предопределенной процедуре "ПриСозданииНаСервере"

Данный метод доступен только в директиве компиляции "&НаСервере"

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

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

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



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

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

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

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

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

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

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

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

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



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

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

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




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


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


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

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

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

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


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

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

четверг, 21 сентября 2017 г.

Макет СКД как печатная форма

Макет СКД прекрасно подходит для прорисовки печатных форм.

1) Сначала нужно создать Макет СКД для объекта печати (ПКМ по объекту - добавить - макет)

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

суббота, 26 августа 2017 г.

Агрегаты оборотных регистров

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

По сути это созданные хранилища таблиц. Система анализирует запросы к ИБ и формирует оптимальный состав агрегаторов которые потом удобно использовать в отчетах/запросах что на порядок увеличивает быстродействие системы.

Настраиваются агрегаты на вкладке "данные" в регистре:


Установка границы последовательности программно

Если у последовательнотси установлено свойство "Перемещение  границы последовательности при проведении" - "Не перемещать" то у входящего документа нужно программно вызвать установку границы последовательности.

вторник, 15 августа 2017 г.

Билет 1

Оперативный учет 


Компания занимается оптовой торговлей. Поступление товара отражается документом «Приходная накладная», продажа – «Расходная накладная». Помимо продажи товара, могут оказываться дополнительные услуги, например по доставке. И услуги и товары указываются в одной табличной части.
Учет товаров ведется в разрезе складов. Поступление и продажа осуществляется с указанием склада (в шапке документа).
При проведении документа «Расходная накладная» необходимо производить списание товара со склада. В том случае, когда товара не хватает, документ проводиться не должен.
Списание себестоимости товаров должно быть организовано по партиям, в зависимости от метода списания (FIFO или LIFO), принятого в учетной политике. Значение учетной политики меняется не чаще одного раза в год. При проведении документа необходимо использовать метод, актуальный на момент проведения.

четверг, 10 августа 2017 г.

JSON (Передача данных )

Формат передачи данных через тип JSON показался мне достаточно удобным для небольших обменов.

Отправка из базы - источника:

Чтобы передать данные через JSON нужно подготовить структуру (данные которые будем передавать)


понедельник, 7 августа 2017 г.

Присоединенные файлы (доработка присоединенных файлов в конфигурациях на БСП)

Доработаем не типовой справочник Объекты строительства в конфигурации ЦРМ + УНФ (1.5.4.53). По ТЗ в нем должны хранится присоединенных файлы.

Создаем вспомогательный справочник для хранения присоединенных файлов. (я просто копировал аналогичный справочник у другого объекта и переименовал)


Реквизит "ВладелецФайла" - указываем объект к которому будем присоединять файлы.

воскресенье, 30 июля 2017 г.

"ЗначенияЗаполнения" или заполнение типовой формы данными

Чтобы заполнить типовую форму нужными значениями необходимо использовать свойство  "ЗначенияЗаполнения"


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


среда, 5 июля 2017 г.

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

Чтобы заблокировать ИС для входящих сеансов нужно использовать параметр УстановитьБлокировкуСеансов().

(используется только на сервере)

Листиг:
Блокировка = ПолучитьБлокировкуСеансов();
Блокировка.Установлена = Истина; //Установка блокировки

Блокировка.КодРазрешения = КодРазрешения;//используется для запуска ИС во время блокировки (устанавливаем в параметры запуска)
Блокировка.Конец = ВремяОкончанияБлокировки; //Время когда блокировка автоматически снимется

Если ВремяОкончанияБлокировки  = Дата("00010101") Тогда
Блокировка.Сообщение = "На входящие сеансы наложена блокировка! доступ в ИС запрещен!";
Иначе 
Блокировка.Сообщение = "На входящие сеансы наложена блокировка! доступ в ИС запрещен! Дата/Время окончания блокировки: " + Строка(ВремяОкончанияБлокировки);
КонецЕсли;

ПараметрЗапускаСОкончаниемБлокировки = "/UC " + Строка(КодРазрешения);

УстановитьБлокировкуСеансов(Блокировка);