Сорокин Сергей | Ведущий программист 1С | МоскоуСофт

«Трейдинг криптовалют и его автоматизация на 1С»

1. Инвестирование в фондовый рынок или в криптовалюты. * Стоит ли инвестировать и как не потерять свои вложения? * В чем отличие операций на фондовом рынке и операций с криптовалютами? * Криптовалюты – это пузырь или нет? 2. Что такое трейдинг и почему Вам, возможно, не надо им заниматься? * Невозможно доказать или опровергнуть существование формализованных правил совершения сделок, которые долгосрочно могут приносить прибыль. * Информационный шум, который провоцирует вас на принятие азартных решений вместо следования своей торговой стратегии. 3. Особенности трейдинга криптовалют. * Возможно, лучшей работающей стратегией является Buy&Hold, но нужно быть готовым к тому, что ждать придется годы. * Есть риск банкротства самой криптовалютной биржи. 4. Автоматизация трейдинга на 1С * Какие ограничения платформы 1С нужно учитывать при разработке торгового робота? * Какие преимущества платформы 1С позволяют реализовывать свои идеи быстро и создавать надежное ПО? 5. Необходимый функционал программы-робота на примере нашей разработки «Криптобот» * Встроенная защита от принятия эмоциональных, необдуманных решений * Конструктор стратегии в пользовательском режиме. * Тестирование на исторических данных. * Широкий спектр поддерживаемых стратегий. * Расширение функционала через добавление своих параметров и удобное добавление новых бирж.

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

Программирование - Универсальные функции

Поиск свободного кода для создания штрих-кода, одним запросом по оригинальной методике, с возможностью выбора границ для разграничения кодов ( например для распределенных баз или подразделений. Принцип поиска состоит в создании таблицы свободных кодов и ее клона сдвинутого на 1.

Принцип поиска состоит в создании таблицы свободных кодов и ее клона сдвинутого на 1.

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

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

  таблица   таблица  
  основная   клон  
Граница 1 0      
  1 = 1  
  2 = 2  
  3 = 3  
  8 <> 4 Свободный код
  9 = 9  
  13 <> 10 Свободный код
      14  
         
Граница 2 10000      
  10001 = 10001  
  10002 = 10002  
  10003 = 10003  
  10004 = 10004  
  10997 <> 10005 Свободный код
  10998 = 10998  
  10999 = 10999  
  20001 <> 11000 Свободный код
      20002  
         
////////////////////////////////////////////////////////////////////////
// Функции для конфигурации УНФ

Функция ПолучитьДляШтучногоТовараПоследнийКодЧислом(ПрефиксШтучного = "20", ПрефиксПодразделения = "00",МинимальныйКодЧислом = 0) Экспорт
    
     Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    0 КАК ПолеЧисло,
        |    ""0"" КАК ПолеСтрока
        |ПОМЕСТИТЬ ЗначенияЦифр
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    1,
        |    ""1""
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    2,
        |    ""2""
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    3,
        |    ""3""
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    4,
        |    ""4""
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    5,
        |    ""5""
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    6,
        |    ""6""
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    7,
        |    ""7""
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    8,
        |    ""8""
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    9,
        |    ""9""
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ПОДСТРОКА(ШтрихкодыНоменклатуры.Штрихкод, 5, 1) КАК Поле7о,
        |    ПОДСТРОКА(ШтрихкодыНоменклатуры.Штрихкод, 6, 1) КАК Поле6о,
        |    ПОДСТРОКА(ШтрихкодыНоменклатуры.Штрихкод, 7, 1) КАК Поле5о,
        |    ПОДСТРОКА(ШтрихкодыНоменклатуры.Штрихкод, 8, 1) КАК Поле4о,
        |    ПОДСТРОКА(ШтрихкодыНоменклатуры.Штрихкод, 9, 1) КАК Поле3о,
        |    ПОДСТРОКА(ШтрихкодыНоменклатуры.Штрихкод, 10, 1) КАК Поле2о,
        |    ПОДСТРОКА(ШтрихкодыНоменклатуры.Штрихкод, 11, 1) КАК Поле1о,
        |    ПОДСТРОКА(ШтрихкодыНоменклатуры.Штрихкод, 12, 1) КАК Поле0о
        |ПОМЕСТИТЬ Разряды
        |ИЗ
        |    РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
        |ГДЕ
        |    ШтрихкодыНоменклатуры.Штрихкод ПОДОБНО &ФорматШтрихкода
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ЗначенияЦифр0.ПолеЧисло + ЗначенияЦифр1.ПолеЧисло * 10 + ЗначенияЦифр2.ПолеЧисло * 100 + ЗначенияЦифр3.ПолеЧисло * 1000 + ЗначенияЦифр4.ПолеЧисло * 10000 + ЗначенияЦифр5.ПолеЧисло * 100000 + ЗначенияЦифр6.ПолеЧисло * 1000000 + ЗначенияЦифр7.ПолеЧисло * 10000000 КАК ЧисловоеЗначение
        |ПОМЕСТИТЬ Занятые
        |ИЗ
        |    Разряды КАК Разряды
        |        ЛЕВОЕ СОЕДИНЕНИЕ ЗначенияЦифр КАК ЗначенияЦифр0
        |        ПО Разряды.Поле0о = ЗначенияЦифр0.ПолеСтрока
        |        ЛЕВОЕ СОЕДИНЕНИЕ ЗначенияЦифр КАК ЗначенияЦифр1
        |        ПО Разряды.Поле1о = ЗначенияЦифр1.ПолеСтрока
        |        ЛЕВОЕ СОЕДИНЕНИЕ ЗначенияЦифр КАК ЗначенияЦифр2
        |        ПО Разряды.Поле2о = ЗначенияЦифр2.ПолеСтрока
        |        ЛЕВОЕ СОЕДИНЕНИЕ ЗначенияЦифр КАК ЗначенияЦифр3
        |        ПО Разряды.Поле3о = ЗначенияЦифр3.ПолеСтрока
        |        ЛЕВОЕ СОЕДИНЕНИЕ ЗначенияЦифр КАК ЗначенияЦифр4
        |        ПО Разряды.Поле4о = ЗначенияЦифр4.ПолеСтрока
        |        ЛЕВОЕ СОЕДИНЕНИЕ ЗначенияЦифр КАК ЗначенияЦифр5
        |        ПО Разряды.Поле5о = ЗначенияЦифр5.ПолеСтрока
        |        ЛЕВОЕ СОЕДИНЕНИЕ ЗначенияЦифр КАК ЗначенияЦифр6
        |        ПО Разряды.Поле6о = ЗначенияЦифр6.ПолеСтрока
        |        ЛЕВОЕ СОЕДИНЕНИЕ ЗначенияЦифр КАК ЗначенияЦифр7
        |        ПО Разряды.Поле7о = ЗначенияЦифр7.ПолеСтрока
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    &МиНЧисло
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    Занятые.ЧисловоеЗначение КАК ЧисловоеЗначение
        |ПОМЕСТИТЬ ФЗанятые
        |ИЗ
        |    Занятые КАК Занятые
        |
        |СГРУППИРОВАТЬ ПО
        |    Занятые.ЧисловоеЗначение
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ФЗанятые.ЧисловоеЗначение + 1 КАК ЧисловоеЗначение
        |ПОМЕСТИТЬ Плюс1
        |ИЗ
        |    ФЗанятые КАК ФЗанятые
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ ПЕРВЫЕ 1
        |    Плюс1.ЧисловоеЗначение КАК ЧисловоеЗначение
        |ИЗ
        |    Плюс1 КАК Плюс1
        |        ЛЕВОЕ СОЕДИНЕНИЕ ФЗанятые КАК ФЗанятые
        |        ПО Плюс1.ЧисловоеЗначение = ФЗанятые.ЧисловоеЗначение
        |ГДЕ
        |    ФЗанятые.ЧисловоеЗначение ЕСТЬ NULL
        |    И Плюс1.ЧисловоеЗначение > &МиНЧисло
        |
        |УПОРЯДОЧИТЬ ПО
        |    ЧисловоеЗначение";
    
    Запрос.УстановитьПараметр("ФорматШтрихкода", ПрефиксШтучного + ПрефиксПодразделения + "_________"); // РегистрыСведений.ШтрихкодыНоменклатуры.ФорматВесовогоШтрихкода(ПрефиксВесовогоТовара));
    Запрос.УстановитьПараметр("МиНЧисло",МинимальныйКодЧислом ); 
    
    КодЧислом = Запрос.Выполнить().Выгрузить()[0].ЧисловоеЗначение -1;
    
    Возврат    КодЧислом;
    
КонецФункции

Тестировалась на УНФ 1.6.13.58.

В файле примеры для 1с Розница и 1с УНФ подходит для любого релиза.

Скачать файлы

Наименование Файл Версия Размер
Поиск свободного штрих кода одним запросом по оригинальной методике. :
.epf 5,28Kb
08.06.18
0
.epf 5,28Kb Скачать

См. также

Комментарии
1. Константин Лавров (Kott01) 4 20.06.18 15:23 Сейчас в теме
Что явилось причиной отказа от штатного формирования штрихкодов?
2. Алексей Бакханд (BackHand001) 19 20.06.18 20:57 Сейчас в теме
(1)Штатное формирование ищет наибольший код, и если у вас после кода 10, случайно попадает код 90000 , штатная выдаст 90001, а эта функция выдаст 11.
Если у Вас два компьютера в распределенной базе, штатно они будут присваивать одинаковые коды, разным товарам. На одной из распределенных баз, этой функции можно передать нижний предел например: 100000 и она выдаст 100001. на другой базе без предела выдаст 11.
С Уважением, Алексей.
3. Алексей Харламов (RocKeR_13) 380 20.06.18 21:38 Сейчас в теме
(2) для РИБа же есть префиксы штрихкодов на узлах
4. Алексей Бакханд (BackHand001) 19 20.06.18 23:46 Сейчас в теме
(3)Да есть, но есть еще и производство, в котором уже масса товара получила свои штрих коды по стандартной технологии и на предыдущих релизах. И там они уже имеют вид:
20 99867 43434К,
Ваши предложения, в студию.
С Уважением, Алексей.
Оставьте свое сообщение