Алгоритм “хвост змеи для заполнения прямоугольной области”.

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

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

алгоритм хвост змеи

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

Молочников Олег Spb. 2014.

Алгоритм “хвост змеи для заполнения прямоугольной области”.

 

При разработке //catalog.mista.ru/public/275582/ столкнулся с необходимостью распределить выделенные задания на прямоугольную область календаря. В результате родился алгоритм, который может пригодиться не только мне и не только в этой задаче.

Итак:  Есть прямоугольная область произвольного размера. Необходимо разделить ее на несколько областей , расположенных одна за другой по принципу движения змеи, следующим образом: 


 

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

 

Функция ПолучитьКоординатыХвостаЗмеи(ПравоОбласти,ЛевоОбласти,НизОбласти,ВерхОбласти,СегментХвоста)
    КоординатыСегментаХвостаЗмеи=Новый Структура("Лево, Верх");
    ВысотаОбласти= НизОбласти-ВерхОбласти+1;
    КоординатыСегментаХвостаЗмеи.Верх= (ВысотаОбласти+СегментХвоста-1)%ВысотаОбласти+ВерхОбласти;
    КоординатыСегментаХвостаЗмеи.Лево= Цел((СегментХвоста-1)/ВысотаОбласти)+ЛевоОбласти;
    Возврат КоординатыСегментаХвостаЗмеи;
КонецФункции



Теперь  сам  алгоритм:

//Входные данные:

Лево,Право,Верх,Низ  - координаты области к заполнению.

КоличествоВыделенныхЭтапов –Количество этапов подлежащих распределению;

    КоличествоРядовКЗаполнению=Право-Лево+1;

    КоличествоСтрокКЗаполнению=Низ-Верх+1;

    КоличествоЯчеекКЗаполнению=КоличествоРядовКЗаполнению*КоличествоСтрокКЗаполнению;
    КоличествоЯчеекНаЭтап= Цел(КоличествоЯчеекКЗаполнению/КоличествоВыделенныхЭтапов);
    Если КоличествоЯчеекНаЭтап<1 Тогда
        Отказ=Истина;
        ОбщегоНазначения.СообщитьОбОшибке("Выбранная область слишком мала для размещения выбранных этапов!",Отказ);
        Возврат;
    КонецЕсли;
    НераспределенныеЯчейкиКЗаполнению=КоличествоЯчеекКЗаполнению%КоличествоВыделенныхЭтапов;
    ИндексВыделеннойСтроки=0;
    ТекущийСегментХвоста=1;
    Пока ТекущийСегментХвоста<=КоличествоЯчеекКЗаполнению Цикл
        Если НераспределенныеЯчейкиКЗаполнению >0 Тогда
            Шаг=КоличествоЯчеекНаЭтап+1;
            НераспределенныеЯчейкиКЗаполнению=НераспределенныеЯчейкиКЗаполнению-1;
        Иначе
            Шаг=КоличествоЯчеекНаЭтап;
        КонецЕсли;
        НомерПоследнегоСегмента=ТекущийСегментХвоста+Шаг-1;
        КординатыНачалаТекущегоЭтапа=ПолучитьКоординатыХвостаЗмеи(Право,Лево,Низ,Верх,ТекущийСегментХвоста);
        КординатыКонцаТекущегоЭтапа=ПолучитьКоординатыХвостаЗмеи(Право,Лево,Низ,Верх,НомерПоследнегоСегмента);
        ЧислоРядов=КординатыКонцаТекущегоЭтапа.Лево-КординатыНачалаТекущегоЭтапа.Лево+1;
        Для I=0 по ЧислоРядов-1 Цикл
            Если I=0  Тогда
                ЛевоРяда=КординатыНачалаТекущегоЭтапа.Лево;
                ВерхРяда=КординатыНачалаТекущегоЭтапа.Верх;
            Иначе
                ЛевоРяда=КординатыНачалаТекущегоЭтапа.Лево+I;
                ВерхРяда=Верх;
            КонецЕсли;
            Если I=ЧислоРядов-1 Тогда
                ПравоРяда=КординатыКонцаТекущегоЭтапа.Лево;
                НизРяда=КординатыКонцаТекущегоЭтапа.Верх;
            Иначе
                ПравоРяда=КординатыНачалаТекущегоЭтапа.Лево+I;
                НизРяда=Низ;
            КонецЕсли;
       // текст кода занимающий в таблице сам этап            

//ЗанятьИнтервалСервер(ПравоРяда,   ЛевоРяда,   НизРяда, ВерхРяда,НомерЭтапа);
        КонецЦикла;
        ТекущийСегментХвоста=НомерПоследнегоСегмента+1;
        ИндексВыделеннойСтроки =ИндексВыделеннойСтроки+1;
    КонецЦикла;

 

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


PS: Надеюсь вам понравится эта и другие мои разработки на //catalog.mista.ru/profile/48714/.

Очень жду ваших комментариев  и пожеланий.

Молочников Олег Spb. 2014.

 

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

Комментарии
Избранное Подписка Сортировка: Древо
1. kapustinag 21.06.14 18:07 Сейчас в теме
(0), Не совсем уловил необходимость "хвоста змеи" в данном случае.
Имеется матрица M x N элементов, то есть всего M*N элементов. Их нужно занять этими заданиями, причем сначала (с элемента (1,1)) - первое задание, затем второе и т.д.
Два вложенных цикла - по строкам и столбцам матрицы.
Порядковый номер элемента, начиная от элемента (1,1), перед началом цикла присваивается 1, и увеличивается на 1 внутри вложенного цикла.
Пока этот порядковый номер меньше или равен длине сейчас размещаемого задания - заполняем данный элемент матрицы номером задания.
Когда очередное задание размещено, обнуляем переменную n, и переходим к следующему заданию.

На выходе получаем матрицу, элементы которой заполнены слева направо и сверху вниз сначала числом 1, затем 2, ...
Всё.
...
Или я что-то невнимательно прочитал?
2. milkers 2387 22.06.14 11:52 Сейчас в теме
(1) kapustinag, Теоритически да, я в начала так и пробовал, но код получался очень некрасивым и сложным. Задача решается гораздо легче, если перевести ее из двумерного в одномерное пространство, что и делает мой алгоритм.
3. DrAku1a 1305 23.06.14 09:49 Сейчас в теме
При распределении на лист A4 для проверки влезет ли новая область на страничку - используется "ПроверитьВывод()". Я таким образом разделил вручную по листам - т.е. вывел отчет вниз, далее в полученном отчете выбрал области по листу и вывел их на новом документе методом Вывести -> Присоединить -> Присоединить -> Присоединить... Получил в итоге Ваше заполнение.

Один момент: нужно или следить за высотой строк в выводимом отчете или чтобы высота строк была одинаковой.
4. milkers 2387 23.06.14 10:36 Сейчас в теме
(3) DrAku1a, в частном случае можно воспользоваться и Вашим способом, но для таблиц, двумерных массивов и пр. ваш способ точно не применим, плюс скорость в моем случае выше по определению, из за особенностей работы метода ПроверитьВывод(). Да и к тому же я выложил алгоритм, по принципу "не пропадать же добру". Вдруг кому-нибудь пригодиться. Да и красивое решение получилось :)
5. ser6702 70 25.06.14 10:36 Сейчас в теме
Любую N-мерную матрицу можно привести к одномерной. ИМХО
этим еще занимался в период когда формировал и моделировал радиолокационное изображение в статистических алгоритмах и в DOS памяти было мало и делали сами свап файл в которые построчно сбрасывали данные комплексных радиосигналов с разных направлений и с разных дальностей. Когда известен размер матрицы это удобно. Принцип у автора тот же - матрица развернута в строку. Сама реализация на быстродействие не влияет - только особенности языка и способности программиста. Имеет право на существование как готовое решение известной проблемы - потому +
6. ildarovich 6880 30.06.14 12:11 Сейчас в теме
На мой взгляд, для такой простой задачи кода слишком много. И его избыточность не служит понятности, а, наоборот, запутывает.

И вообще никакого "алгоритма" (в смысле определенной последовательности действий) здесь не нужно. Отношение ячейки к этапу определяется ПРОСТОЙ функциональной зависимостью. Достаточно было бы в теле уже приведенной функции рассчитать "Сегмент хвоста" по номеру этапа, количеству ячеек на этап и номеру ячейки внутри этапа. Тогда заполнить ячейки можно было бы простым и понятным циклом по этапам (и вложенным циклам по ячейкам внутри этапа), а также можно было бы начинать заполнение не всегда с верхнего угла, при необходимости "транспонировать" заполнение - то есть идти не по колонкам, а по строчкам, заменив функцию отображения, перезаполнять ячейки выбранных этапов (перекрашивать при выделении) без перезаполнения всей области и так далее.

В общем, я бы не рекомендовал такой подход к решению этой задачи.
7. milkers 2387 30.06.14 12:50 Сейчас в теме
(6) ildarovich, То же вариант решения. По скорости одинаково. У меня тоже внешний цикл выполнится столько раз, сколько этапов разбития. А внутренний нужен только для деления этапа на столбцы. И переносить управляющую логику в функцию или оставить при вызове функции - разницы никакой.
8. ildarovich 6880 30.06.14 14:03 Сейчас в теме
(7) методически разница очень большая. О скорости здесь речь не идет. Речь идет о способе декомпозиции задачи и вообще о том, что можно называть алгоритмом. По сути, Вы предлагаете "ползать по лабиринту" вместо того, чтобы посмотреть на него сверху, увидеть закономерность и применить ее. Весь так называемый "алгоритм" - это перенос единицы в старший разряд (переход к началу следующей колонки), которому дети учатся, когда начинают уметь считать больше двадцати. Это все равно что умножение заменять последовательным сложением. Но это мое личное мнение в плане того, что можно рекомендовать к использованию, а что нельзя. Это не образцовый подход, а как раз то, чего следует избегать, ИМХО.
Как, например, здесь выделить цветом один из этапов. - Заново сначала проползти по лабиринту?
9. milkers 2387 30.06.14 14:52 Сейчас в теме
(8) Должен признать, что с этой точки зрения определенный смысл в Вашем видении есть. Ну, в любом случае переделка несложная, может быть и наша дискуссия кому-нибудь поможет. Спасибо за дельный совет.
ildarovich; +1 Ответить
14. milkers 2387 01.07.14 11:45 Сейчас в теме
(8)
Это не образцовый подход, а как раз то, чего следует избегать, ИМХО.
Как, например, здесь выделить цветом один из этапов. - Заново сначала проползти по лабиринту?

При условии равномерного распределения все что вы сказали истинно. Но как быть если в дальнейшем планируется распределять учитывая предполагаемую длительность этапов, определенную для них на этапе планирования, плюс возможны интервалы связанные с необходимость завершить этапы на другом оборудовании. Как тогда обойтись без "ползанья по лабиринту"?
10. Патриот 247 30.06.14 18:17 Сейчас в теме
(0) Мне кажется слишком сложно, что легче заново написать самому, чем разобраться. Например даже такая мелочь -
(ВысотаОбласти+СегментХвоста-1)%ВысотаОбласти
//эквивалентно 
СегментХвоста%ВысотаОбласти-1
11. milkers 2387 01.07.14 10:13 Сейчас в теме
(10) Патриот, Вынужден огорчить, но выражения не эквивалентны. Вот целочисленная проверка:
i=1 j=1 (i+j-1)%i=0 j%i-1=-1!!!!!!!!!!
i=1 j=2 (i+j-1)%i=0 j%i-1=-1!!!!!!!!!!
i=1 j=3 (i+j-1)%i=0 j%i-1=-1!!!!!!!!!!
i=1 j=4 (i+j-1)%i=0 j%i-1=-1!!!!!!!!!!
i=1 j=5 (i+j-1)%i=0 j%i-1=-1!!!!!!!!!!
i=1 j=6 (i+j-1)%i=0 j%i-1=-1!!!!!!!!!!
i=1 j=7 (i+j-1)%i=0 j%i-1=-1!!!!!!!!!!
i=1 j=8 (i+j-1)%i=0 j%i-1=-1!!!!!!!!!!
i=1 j=9 (i+j-1)%i=0 j%i-1=-1!!!!!!!!!!
i=1 j=10 (i+j-1)%i=0 j%i-1=-1!!!!!!!!!!
i=2 j=1 (i+j-1)%i=0 j%i-1=0
i=2 j=2 (i+j-1)%i=1 j%i-1=-1!!!!!!!!!!
i=2 j=3 (i+j-1)%i=0 j%i-1=0
i=2 j=4 (i+j-1)%i=1 j%i-1=-1!!!!!!!!!!
i=2 j=5 (i+j-1)%i=0 j%i-1=0
i=2 j=6 (i+j-1)%i=1 j%i-1=-1!!!!!!!!!!
i=2 j=7 (i+j-1)%i=0 j%i-1=0
i=2 j=8 (i+j-1)%i=1 j%i-1=-1!!!!!!!!!!
i=2 j=9 (i+j-1)%i=0 j%i-1=0
i=2 j=10 (i+j-1)%i=1 j%i-1=-1!!!!!!!!!!
i=3 j=1 (i+j-1)%i=0 j%i-1=0
i=3 j=2 (i+j-1)%i=1 j%i-1=1
i=3 j=3 (i+j-1)%i=2 j%i-1=-1!!!!!!!!!!
i=3 j=4 (i+j-1)%i=0 j%i-1=0
i=3 j=5 (i+j-1)%i=1 j%i-1=1
i=3 j=6 (i+j-1)%i=2 j%i-1=-1!!!!!!!!!!
i=3 j=7 (i+j-1)%i=0 j%i-1=0
i=3 j=8 (i+j-1)%i=1 j%i-1=1
i=3 j=9 (i+j-1)%i=2 j%i-1=-1!!!!!!!!!!
i=3 j=10 (i+j-1)%i=0 j%i-1=0
i=4 j=1 (i+j-1)%i=0 j%i-1=0
i=4 j=2 (i+j-1)%i=1 j%i-1=1
i=4 j=3 (i+j-1)%i=2 j%i-1=2
i=4 j=4 (i+j-1)%i=3 j%i-1=-1!!!!!!!!!!
i=4 j=5 (i+j-1)%i=0 j%i-1=0
i=4 j=6 (i+j-1)%i=1 j%i-1=1
i=4 j=7 (i+j-1)%i=2 j%i-1=2
i=4 j=8 (i+j-1)%i=3 j%i-1=-1!!!!!!!!!!
i=4 j=9 (i+j-1)%i=0 j%i-1=0
i=4 j=10 (i+j-1)%i=1 j%i-1=1
i=5 j=1 (i+j-1)%i=0 j%i-1=0
i=5 j=2 (i+j-1)%i=1 j%i-1=1
i=5 j=3 (i+j-1)%i=2 j%i-1=2
i=5 j=4 (i+j-1)%i=3 j%i-1=3
i=5 j=5 (i+j-1)%i=4 j%i-1=-1!!!!!!!!!!
i=5 j=6 (i+j-1)%i=0 j%i-1=0
i=5 j=7 (i+j-1)%i=1 j%i-1=1
i=5 j=8 (i+j-1)%i=2 j%i-1=2
i=5 j=9 (i+j-1)%i=3 j%i-1=3
i=5 j=10 (i+j-1)%i=4 j%i-1=-1!!!!!!!!!!
i=6 j=1 (i+j-1)%i=0 j%i-1=0
i=6 j=2 (i+j-1)%i=1 j%i-1=1
i=6 j=3 (i+j-1)%i=2 j%i-1=2
i=6 j=4 (i+j-1)%i=3 j%i-1=3
i=6 j=5 (i+j-1)%i=4 j%i-1=4
i=6 j=6 (i+j-1)%i=5 j%i-1=-1!!!!!!!!!!
i=6 j=7 (i+j-1)%i=0 j%i-1=0
i=6 j=8 (i+j-1)%i=1 j%i-1=1
i=6 j=9 (i+j-1)%i=2 j%i-1=2
i=6 j=10 (i+j-1)%i=3 j%i-1=3
i=7 j=1 (i+j-1)%i=0 j%i-1=0
i=7 j=2 (i+j-1)%i=1 j%i-1=1
i=7 j=3 (i+j-1)%i=2 j%i-1=2
i=7 j=4 (i+j-1)%i=3 j%i-1=3
i=7 j=5 (i+j-1)%i=4 j%i-1=4
i=7 j=6 (i+j-1)%i=5 j%i-1=5
i=7 j=7 (i+j-1)%i=6 j%i-1=-1!!!!!!!!!!
i=7 j=8 (i+j-1)%i=0 j%i-1=0
i=7 j=9 (i+j-1)%i=1 j%i-1=1
i=7 j=10 (i+j-1)%i=2 j%i-1=2
i=8 j=1 (i+j-1)%i=0 j%i-1=0
i=8 j=2 (i+j-1)%i=1 j%i-1=1
i=8 j=3 (i+j-1)%i=2 j%i-1=2
i=8 j=4 (i+j-1)%i=3 j%i-1=3
i=8 j=5 (i+j-1)%i=4 j%i-1=4
i=8 j=6 (i+j-1)%i=5 j%i-1=5
i=8 j=7 (i+j-1)%i=6 j%i-1=6
i=8 j=8 (i+j-1)%i=7 j%i-1=-1!!!!!!!!!!
i=8 j=9 (i+j-1)%i=0 j%i-1=0
i=8 j=10 (i+j-1)%i=1 j%i-1=1
i=9 j=1 (i+j-1)%i=0 j%i-1=0
i=9 j=2 (i+j-1)%i=1 j%i-1=1
i=9 j=3 (i+j-1)%i=2 j%i-1=2
i=9 j=4 (i+j-1)%i=3 j%i-1=3
i=9 j=5 (i+j-1)%i=4 j%i-1=4
i=9 j=6 (i+j-1)%i=5 j%i-1=5
i=9 j=7 (i+j-1)%i=6 j%i-1=6
i=9 j=8 (i+j-1)%i=7 j%i-1=7
i=9 j=9 (i+j-1)%i=8 j%i-1=-1!!!!!!!!!!
i=9 j=10 (i+j-1)%i=0 j%i-1=0
i=10 j=1 (i+j-1)%i=0 j%i-1=0
i=10 j=2 (i+j-1)%i=1 j%i-1=1
i=10 j=3 (i+j-1)%i=2 j%i-1=2
i=10 j=4 (i+j-1)%i=3 j%i-1=3
i=10 j=5 (i+j-1)%i=4 j%i-1=4
i=10 j=6 (i+j-1)%i=5 j%i-1=5
i=10 j=7 (i+j-1)%i=6 j%i-1=6
i=10 j=8 (i+j-1)%i=7 j%i-1=7
i=10 j=9 (i+j-1)%i=8 j%i-1=8
i=10 j=10 (i+j-1)%i=9 j%i-1=-1!!!!!!!!!!
15. Патриот 247 25.07.14 22:33 Сейчас в теме
(11) вынужден огорчиться, действительно лоханулся :)
доводы более чем убедительны
но может хоть так заработает?
(ВысотаОбласти+СегментХвоста-1)%ВысотаОбласти
//эквивалентно 
(СегментХвоста-1)%ВысотаОбласти
12. chmv 01.07.14 10:49 Сейчас в теме
13. milkers 2387 01.07.14 10:54 Сейчас в теме
(12) "Ой как сложно" - о чем это ты?
Оставьте свое сообщение

См. также

Использование машинного обучения для решения инцидентов

Статья Программист Нет файла Бесплатно (free) Практика программирования

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

сегодня в 12:40    362    Repich    10       

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо

На курсе вы получите практические навыки решения задач производительности 1С, в том числе характерных для высоконагруженных информационных систем (более 1000 пользователей). Подготовка к экзамену – только одна из составляющих курса. 70% слушателей приходят за знаниями, которые позволят расти и зарабатывать, делать сложные задачи на крупных проектах.

16450 рублей

Часовой на страже логов

Статья no Нет файла Бесплатно (free) Практика программирования

При поддержке решений, которые установлены у большого количества пользователей на различных системах, очень важно вовремя получать подробную информацию о возникших проблемах. О том, как собирать логи и анализировать полученные данные в трекере ошибок Sentry на конференции Infostart Event 2019 Inception рассказал Андрей Крапивин.

13.01.2020    2695    Scorpion4eg    6       

Приватный блокчейн и 1С популярно

Статья no Нет файла Бесплатно (free) Практика программирования Блокчейн

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

02.09.2019    3008    mkalimulin    140       

Базовый курс по обмену данными в системе 1С:Предприятие. Онлайн-интенсив с 12 по 28 мая 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, обеспечивающих обмен данными между различными прикладными 1С-решениями и взаимодействие с другими информационными системами. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”.

5500 рублей

Кодогенерация и метагенерация в 1С

Статья Программист Нет файла Бесплатно (free) Практика программирования Математика и алгоритмы Разработка

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

26.08.2019    5792    kirovsbis    28       

Интеграция сценарного тестирования в процесс разработки

Статья Программист Нет файла Бесплатно (free) Практика программирования Разработка

Разработчик системы «Тестер» Дмитрий Решитко в своем докладе на конференции INFOSTART EVENT 2018 EDUCATION показывает, что процесс тестирования можно очень плотно интегрировать в процесс разработки, что внедрение тестирования – это возможность развития программиста как такового, позволяющая ему упорядочивать ход мыслей и оставаться «в фокусе». Навыки построения процесса кодирования на стыке с тестированием сокращают время на концентрацию, освобождают от страха перед изменениями и улучшают память разработчика.

08.07.2019    6208    grumagargler    7       

Открыто голосование за доклады на INFOSTART MEETUP Krasnodar Промо

Выбирайте и голосуйте за самые интересные доклады, лучшие из них попадут в окончательную программу митапа. Голосование продлится до 30 января 2020 года.

Управляй качеством кода 1С с помощью SonarQube

Статья Программист Нет файла Россия Бесплатно (free) Практика программирования

Управляй техническом долгом проектов 1С с помощью SonarQube. В статье рассматривается пример применения SonarQube при разработке.

07.07.2019    25939    olegtymko    214       

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

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

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

25.04.2019    9193    m-rv    2       

Управление ИТ-проектами. Модуль 2: продвинутый онлайн-курс по классическим методам управления проектами. Вебинары проходят с 12 марта по 11 июня 2020 года. Промо

Продвинутый онлайн-курс по классическому управлению ИТ-проектами позволит слушателям освоить инструменты из PMBoK® и 1С:Технологии корпоративного внедрения и научиться их применять для проектов любого масштаба. Курс включает в себя 12 вебинаров и 12 видеолекции, разбор кейсов и рекомендации экспертов по проектам слушателей. Ведущая курса - Мария Темчина.

от 13000 рублей

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

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

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

16.04.2019    12302    m-rv    16       

О времени и 1С

Статья Программист Нет файла Бесплатно (free) Практика программирования Разработка

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

01.04.2019    22699    YPermitin    60       

Сдача регламентированной отчетности из программ 1С Промо

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

от 1500 руб.

Пример создания bridge (http api - tcp) для ККТ "Касса №1" ("К1-Ф")

Статья Системный администратор Программист Нет файла Россия Кассовые операции Бесплатно (free) Практика программирования Разработка ККМ

Пример создания bridge (http api - tcp) для ККТ "Касса №1" ("К1-Ф"). Данная статья будет полезна интеграторам, программистам, тем кто работает (интегрирует, разрабатывает) различное ТО либо железки. Версия и релиз технологической платформы не имеет значения.

17.03.2019    4246    dmarenin    0       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Быстрее чем INSERT! BULK-операции и примеры использования

Статья Системный администратор Программист Нет файла Бесплатно (free) Производительность и оптимизация (HighLoad) Практика программирования Внешние источники данных Перенос данных из 1C8 в 1C8 Разработка

Microsoft SQL Server поддерживает так называемые BULK-операции, используемые для быстрого изменения больших объемов данных в базе. В статье пойдет речь о практических примерах их использования. Все примеры сделаны в контексте платформы 1С (а как иначе).

09.03.2019    14970    YPermitin    38       

Как писать понятные коммиты

Статья Программист Нет файла Россия Бесплатно (free) Практика программирования Разработка

Как писать сообщения коммитов так, чтобы потом не было мучительно больно.

06.03.2019    9636    Scorpion4eg    35       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо

Данный онлайн-курс предусматривает углубленное изучение языка запросов и возможностей системы компоновки данных, которые понадобятся при разработке отчетов, работающих на платформе “1С:Предприятие” в рамках различных прикладных решений. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей различных прикладных решений, которые используют в своей работе отчеты разного назначения.

6500 рублей

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

​​​​​​​CorelDRAW Graphics Suite 2019 Промо

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

Голосование за доклады на INFOSTART MEETUP Kazan - до 25 февраля. Промо

Выбирайте и голосуйте за самые интересные доклады! Лучшие из лучших попадут в окончательную программу казанского митапа. Оставить свой голос можно до 25 февраля 2020 года.

Расширяем свой багаж

Статья Программист Нет файла Бесплатно (free) Практика программирования Разработка

Алгоритм решения возможной нетиповой задачи на собеседовании.

29.01.2019    4563    scientes    15