Улучшение регистра курсов валют в v8

Публикация № 17055

Разработка - Практика программирования

Небольшая доработка регистра сведений "Курсы валют" для более удобного использования его в запросах.
Регистр курсов валют в стандартных конфигурациях 1С прост и понятен любому программисту. Но он имеет одно существенное неудобство - его сложно использовать в запросах в соединении с другими таблицами из-за того, что в общем случае курс валюты устанавливается не на каждый календарный день. Если на какую-то дату курс не установлен, должен браться курс на предыдущую дату, что на языке запросов громоздко выглядит и долго исполняется.

Для примера возьмем таблицу документов "Заявка" с реквизитами Дата, Сумма, Валюта, и представим, что нам нужно вывести список заявок с суммами, пересчитанными в рубли по курсу на дату каждой заявки.

У проблемы есть четыре решения:

1. Предварительный расчет
---------------------------------

В документ "Заявка" добавляется реквизит "СуммаРуб", которая расчитывается и заполняется при записи заявки.
Такой вариант вполне применим и даже предпочтителен для ряда частных случаев, но универсальным не является. Кроме того, если курс по каким-либо причинам менялся после записи документа (например, документ имеет плановый характер и введен будущей датой), необходимо будет перезаписать документ для обновления рублевой суммы.

2. Административные методы
---------------------------------

Необходимо обеспечить, чтобы в регистр курсов курсы заносились на каждый календарный день. То есть курс вводится в регистр не только на дату, когда он установлен, но и на все последующие даты, для которых он действует.
Тогда решение задачи будет очень простым:
ВЫБРАТЬ
  Дата, Сумма, Заявки.Валюта, Сумма*Курс КАК СуммаРуб
ИЗ
  Документ.Заявка КАК Заявки
  ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК Курсы
  ПО (Заявки.Валюта = Курсы.Валюта) И
     (Заявки.Дата = Курсы.Период)

Однако, как и все административные методы, этот чувствителен к человеческому фактору и соблюдению регламента. Также, он не решает вопрос, если сушествуют документы, введенные будущими датами (например, плановые заявки).

3. Хитрый запрос
---------------------------------

Используем двойное соединение с регистром курсов для получения действующего курса на каждую дату:
ВЫБРАТЬ
  Дата, Сумма, ЗаявкиСДатамиКурсов.Валюта, Сумма*Курс КАК СуммаРуб
ИЗ
  (ВЫБРАТЬ
    Ссылка, Дата, Сумма, Заявки.Валюта, МАКСИМУМ(Курсы1.Период) КАК ДатаКурса
  ИЗ
    Документ.Заявка КАК Заявки
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК Курсы1
    ПО (Заявки.Валюта = Курсы1.Валюта) И
       (Заявки.Дата >= Курсы1.Период)
  СГРУППИРОВАТЬ ПО
    Ссылка, Дата, Сумма, Заявки.Валюта) КАК ЗаявкиСДатамиКурсов
  ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК Курсы2
  ПО (ЗаявкиСДатамиКурсов.Валюта = Курсы2.Валюта) И
     (ЗаявкиСДатамиКурсов.ДатаКурса = Курсы2.Период)

Этот теоретически работающий запрос может выполняться очень долго.

4. Доработка регистра курсов
---------------------------------

Именно этому варианту посвящена данная статья. Доработка регистра заключается в добавлении индексированного реквизита "СледующийПериод", в котором для каждой записи будет храниться дата следующего курса (то есть дата, начиная с которой текущая запись перестает действовать), а также добавление кода в модуль регистра курсов валют для автоматического заполнения нового реквизита.
Решение задачи получается почти таким же простым и быстрым, как и в варианте 2:
ВЫБРАТЬ
  Дата, Сумма, Заявки.Валюта, Сумма*Курс КАК СуммаРуб
ИЗ
  Документ.Заявка КАК Заявки
  ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК Курсы
  ПО (Заявки.Валюта = Курсы.Валюта) И
     (Заявки.Дата >= Курсы.Период) И
     (Заявки.Дата < Курсы.СледующийПериод)


Наибольшие сложности этого метода связаны с доработкой модуля регистра курсов валют для автоматической поддержки актуальности служебного реквизита "СледующийПериод". Когда в регистр добавляется новая запись следует:
1. Определить СледующийПериод для добавляемой записи.
2. Скорректировать СледующийПериод для уже существующей записи, стоящей по хронологии перед добавляемой записью.

Cледующий код решает эту задачу (его необходимо добавить в процедуру "ПриЗаписи" модуля регистра курсов):

  // Подготовимся к заполнению поля "Следующий период": определим область пространства измерений,
  //которые подвергаются изменениям
  ОтборДатаМин = Неопределено; ОтборДатаМакс = Неопределено; ОтборВалюта = Неопределено;
  Если не ОбменДанными.Загрузка Тогда
    Если Замещение Тогда
      ОтборДатаМин = ?(Отбор.Период.Использование, Отбор.Период.Значение, '00010101');
      ОтборДатаМакс = ?(Отбор.Период.Использование, Отбор.Период.Значение, '39991231');
      ОтборВалюта = ?(Отбор.Валюта.Использование, Отбор.Валюта.Значение, Неопределено);
    ИначеЕсли Количество() > 0 Тогда
      ТЗ = Выгрузить();
      ТЗ.Сортировать("Период");
      ОтборДатаМин = ТЗ[0].Период;
      ОтборДатаМакс = ТЗ[ТЗ.Количество()-1].Период;
      ТЗ.Свернуть("Валюта");
      ОтборВалюта = ТЗ.ВыгрузитьКолонку("Валюта");
    КонецЕсли;
  КонецЕсли;
  // Заполнение поля "Следующий период": находим все записи, попавшие в изменяемый период,
  // и для каждой определяем дату следующего курса
  Если ОтборДатаМин <> Неопределено Тогда
    Записи = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
    Записи.ОбменДанными.Загрузка = Истина;
    РЗ = оВыполнитьЗапрос("ВЫБРАТЬ
         |  Период, Валюта, Курс, Кратность, СледующийПериод
         |ИЗ
         |  РегистрСведений.КурсыВалют КАК КурсыВалют
         |ГДЕ
         |  СледующийПериод = &ПустаяДата
         |  ИЛИ (Период <= &ДатаМакс И (Период >= &ДатаМин ИЛИ СледующийПериод >= &ДатаМин)
         |  " + ?(ОтборВалюта = Неопределено, "", ?(ТипЗнч(ОтборВалюта) = Тип("Массив"),
            "И Валюта В (&Валюта)", "И Валюта = &Валюта")) + ")",
         Новый Структура("ДатаМин, ДатаМакс, Валюта, ПустаяДата",
                         ОтборДатаМин, ОтборДатаМакс, ОтборВалюта, '00010101'));
    Выборка = РЗ.Выбрать();
    Пока Выборка.Следующий() Цикл
      Зн = оВыполнитьЗапросВСкаляр("ВЫБРАТЬ ПЕРВЫЕ 1
                     |  Период КАК Период
                     |ИЗ
                     |  РегистрСведений.КурсыВалют КАК КурсыВалют
                     |ГДЕ
                     |  Валюта = &Валюта И Период > &Период
                     |УПОРЯДОЧИТЬ ПО
                     |  Период",
                     Новый Структура("Валюта, Период", Выборка.Валюта, Выборка.Период));
      Зн = ?(Зн = NULL, '39991231', Зн);
      Если Зн <> Выборка.СледующийПериод Тогда
        Записи.Очистить();
        Записи.Отбор.Период.Установить(Выборка.Период);
        Записи.Отбор.Валюта.Установить(Выборка.Валюта);
        Запись = Записи.Добавить();
        Запись.Период = Выборка.Период;
        Запись.Валюта = Выборка.Валюта;
        Запись.Курс = Выборка.Курс;
        Запись.Кратность = Выборка.Кратность;
        Запись.СледующийПериод = Зн;
        Записи.Записать(Истина);
      КонецЕсли;
    КонецЦикла;
  КонецЕсли;


P.S. В коде используются две вспомогательные функции (оВыполнитьЗапрос и оВыполнитьЗапросВСкаляр):

// Функция выполняет произвольный запрос
//
// Параметры
//  ТекстЗапроса – Строка
//  Параметры    – Структура – параметры запроса
//
// Возвращаемое значение:
//  РезультатЗапроса
//
Функция оВыполнитьЗапрос(ТекстЗапроса, Параметры = Неопределено) Экспорт
  Перем Запрос, Зн;
  Запрос = Новый Запрос(ТекстЗапроса);
  Если Параметры <> Неопределено Тогда
    Для каждого Зн из Параметры Цикл
      Запрос.УстановитьПараметр(Зн.Ключ, Зн.Значение)
    КонецЦикла;
  КонецЕсли;
  Возврат Запрос.Выполнить()
КонецФункции

// Функция выполняет произвольный запрос и возвращает значение из 
// первой строки и первой колонки результата.
// Имеет смысл, применяя эту функцию, использовать в тексте запроса конструкцию
// "ВЫБРАТЬ ПЕРВЫЕ 1"
//
// Параметры
//  ТекстЗапроса – Строка
//  Параметры    – Структура – параметры запроса
//
// Возвращаемое значение:
//  Значение из первой строки и первой колонки результата запроса.
//  Если результат запроса пустой, возвращается NULL
//
Функция оВыполнитьЗапросВСкаляр(ТекстЗапроса, Параметры = Неопределено) Экспорт
  Перем Выборка;
  Выборка = оВыполнитьЗапрос(ТекстЗапроса, Параметры).Выбрать(ОбходРезультатаЗапроса.Прямой);
  Возврат ?(Выборка.Следующий(), Выборка[0], NULL);
КонецФункции

// Функция выполняет произвольный запрос и выгружает его результат в таблицу значений
//
// Параметры
//  ТекстЗапроса – Строка
//  Параметры    – Структура – параметры запроса
//
// Возвращаемое значение:
//  ТаблицаЗначений
//
Функция оВыполнитьЗапросВТаблицу(ТекстЗапроса, Параметры = Неопределено) Экспорт
  Возврат оВыполнитьЗапрос(ТекстЗапроса, Параметры).Выгрузить(ОбходРезультатаЗапроса.Прямой)
КонецФункции

// Функция выполняет произвольный запрос и выгружает первую колонку его результата
// в массив
//
// Параметры
//  ТекстЗапроса – Строка
//  Параметры    – Структура – параметры запроса
//
// Возвращаемое значение:
//  Массив
//
Функция оВыполнитьЗапросВМассив(ТекстЗапроса, Параметры = Неопределено) Экспорт
  Возврат оВыполнитьЗапросВТаблицу(ТекстЗапроса, Параметры).ВыгрузитьКолонку(0)
КонецФункции

// Функция выполняет произвольный запрос и выгружает первую колонку его результата
// в список значений
//
// Параметры
//  ТекстЗапроса – Строка
//  Параметры    – Структура – параметры запроса
//
// Возвращаемое значение:
//  Список значений
//
Функция оВыполнитьЗапросВСписок(ТекстЗапроса, Параметры = Неопределено) Экспорт
  Перем Рез;
  Рез = Новый СписокЗначений;
  Рез.ЗагрузитьЗначения(оВыполнитьЗапросВМассив(ТекстЗапроса, Параметры));
  Возврат Рез
КонецФункции




Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 6050 18.11.07 21:43 Сейчас в теме
2. Gorky 19.11.07 07:29 Сейчас в теме
Да. Мне тоже такой метод посоветовал приятель, который сейчас работает в Канаде. Общий смысл такой, что надо кроме ДатаНачала в регистре сведений ставить ДатаКонца. Если бы это было реализовано на уровне платформы, то вообще проблем бы с запросами не было. Тем более, что делается это элементарно.
3. a.v.petuhov 19.11.07 11:10 Сейчас в теме
Но он имеет одно существенное неудобство - его сложно использовать в запросах в соединении с другими таблицами из-за того, что в общем случае курс валюты устанавливается не на каждый календарный день. Если на какую-то дату курс не установлен, должен браться курс на предыдущую дату, что на языке запросов громоздко выглядит и долго исполняется.

Может я совсем ничего не понял, но есть ведь виртуальная таблица "СрезПоследних". Она и возвращеает ближайший курс на указанную дату. Зачем тогда все ЭТО?
4. Skylark 66 19.11.07 15:55 Сейчас в теме
(3) +1
Я тоже впомнил про "срез последних". Или мы чего-то не догоняем - или автор осрамился.
5. _Reset 19.11.07 18:00 Сейчас в теме
пример просто приведен не совсем "наглядный".
проблемы обычно возникают когда надо вывести список заявок за разные даты и курсы валют.
тогда срезпоследних не покатит
6. clappa 898 20.11.07 00:56 Сейчас в теме
(3,4) Не, ребята, вы не поняли. СрезПоследних возвращает курс на одну конкретную дату, переданную в качестве параметра. А если нужно получить курсы на каждую дату в запросе, тогда он вам не поможет.
7. Yasen 03.01.08 20:36 Сейчас в теме
Решение интересное, спасибо
8. PRoman 73 07.09.10 09:24 Сейчас в теме
Удивительное рядом. Спасибо! :)
9. Il 24 03.05.12 07:07 Сейчас в теме
Хорошее решение! Пока база небольшая не заметно было. Спасибо за идею
10. Arxxximed 9 04.08.16 12:27 Сейчас в теме
Интересно, а нафига тогда после этой статьи, все равно слишком популярны статьи типа срез последних на каждую дату? И про пункт 3.Хитрый запрос: я насколько понял при срезе последних, как раз платформа доработатывает запрос к базе вот таким хитрым запросом, или что то типо того
Оставьте свое сообщение

См. также

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    37819    unichkin    74    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

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

30.08.2020    7988    quazare    33    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    30898    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    26603    John_d    22    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    31018    tormozit    100    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    20283    kuzyara    38    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    17702    YPermitin    72    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    8828    Sibars    19    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    78525    tormozit    131    

Полезные процедуры и функции для программиста

Практика программирования Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

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

07.10.2019    30963    HostHost    40    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    35823    Yashazz    50    

О программе Postman для тестирования API и для чего она нужна 1С-нику

Практика программирования Программное обеспечение (software) v8 Бесплатно (free)

Для чего нужна программа Postman для тестирования API и какая от него польза для 1С-программиста.

24.09.2019    12758    budidich    28    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

11.07.2007    49077    tormozit    42    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    55884    rpgshnik    63    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    52768    ids79    54    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    30202    YPermitin    24    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    45530    tormozit    74    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    26097    YPermitin    80    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    32866    ids79    16    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    91846    ids79    56    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    16206    m-rv    2    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

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

02.08.2019    38815    avalakh    25    

Разбираемся с параметрами редактирования СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    25820    json    15    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    65839    ids79    12    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    20596    m-rv    17    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    37436    ids79    27    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    26986    YPermitin    14    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    19977    SeiOkami    50    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

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

01.06.2018    31339    m-rv    21    

Работа с настройками системы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Варианты отчетов, работа с настройками вариантов: структура группировок, поля отчета, отборы, сортировка, условное оформление, другие настройки, настройки отображения диаграмм.

02.07.2019    51449    ids79    17    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    55629    ids79    25    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    25957    dmurk    146    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Вариант решения задач с проведением по типовым регистрам нетиповыми регистраторами. Зачем - чтобы при сравнении конфигурации не обращать внимание на свойства регистров и исключить вероятность допущения горькой оплошности при обновлении информационных баз, заменив типы регистраторов основной конфигурации типами конфигурации поставщика. Для программных продуктов, имеющих в своем составе метаданных документ "Корректировка регистров"("Корректировка записей регистров").

05.12.2017    28513    itriot11    34    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    45487    YPermitin    30    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    36268    ellavs    126    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    27869    ellavs    90    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    77194    Serginio    110    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    32431    YPermitin    53    

Ошибки при работе с хранилищем конфигурации и способы их решения

Практика программирования v8 Бесплатно (free)

В статье собраны наиболее распространенные ошибки при работе с хранилищем конфигурации и способы их обхода и решения.

01.03.2019    42551    Смешной 1С    30    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

Практика программирования Vanessa Automation v8 Россия Бесплатно (free)

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    22899    Vladimir Litvinenko    27    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    35735    ids79    40    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    42157    ids79    9    

Тестер: частые вопросы Промо

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    29603    grumagargler    28    

EnterpriseData – часть 2. Процесс выгрузки данных

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    27741    ids79    31    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

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

14.12.2018    42926    ids79    72    

Ускоряем 1С: модули с повторным использованием возвращаемых значений Промо

Практика программирования v8 Бесплатно (free)

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

04.09.2017    53591    m-rv    61    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    38269    ids79    42    

Программное заполнение пользовательских параметров и отборов СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

13.11.2018    51057    Unk92    25