• Какие начальные требования для стажера-программиста 1с?

    @foonfyrick
    Вообще без знаний, как минимум, приглашают на собесы. Я бы перед стажировкой прочитал книгу(1С предприятие 8.3 практическое пособие разработчика), и попрактиковался бы месяцок.
    Ответ написан
    Комментировать
  • Как сделать диапазон цены в 1с?

    @twistfire92
    Python backend developer
    В обработчике ПриИзменении

    Можете завести отдельный регистр, в котором будете хранить допустимые диапазоны цен для каждой позиции. Измерение - ссылка на справочник товаров, ресурсы - минимальная и максимальная цена.
    В обработчике ПриИзменении уже проверять подходит ли новая цена под эти границы.
    Ответ написан
    Комментировать
  • Как суммировать все четные числа в массиве?

    QuayS1de
    @QuayS1de
    let arr = [1,2,3,4,5,6,7,8,9,10] 
            let sum = 0;
            for (let i=0; i < arr.length; i++){
                if (arr[i] % 2 == 0){
                    sum += arr[i];
                }
            }
            alert(sum)
    Ответ написан
    Комментировать
  • При включении автоматического обмена 1С с сайтом должна ли работать сама программа?

    Sgr_A
    @Sgr_A
    Если база файловая - тогда только когда 1С будет запущена. В серверном варианте будет работать по расписанию, если включены рег. задания.
    Ответ написан
    4 комментария
  • Почему неверно работает ReadConsole?

    @pfemidi
    Тут могло бы быть краткое описание меня
    Во-первых, не
    invoke ReadConsole, ADDR input, ADDR input_buf, 1, ADDR read, 0

    а
    invoke ReadConsole, input, ADDR input_buf, 1, ADDR read, 0

    В данном случае надо не адрес переменной, а её содержимое. Поэтому, кстати, и не читается ничего.

    Во-вторых, переменные read и written должны быть размером не db, а dd. ReadConsole возвращает DWORD, а не BYTE и само собой возвращаемое значение read забивает собой ранее полученное output, там получаются нули и поэтому ничего не выводится.

    В-третьих, судя по
    invoke ReadConsole, input, ADDR input_buf, 1, ADDR read, 0
    производится чтение ОДНОГО символа, а выводится
    invoke WriteConsoleA, output, ADDR input_buf, 3, ADDR written, 0

    почему-то три.

    Ну и чисто косметически:
    а) почему input_buf объявлен как массив DWORD? его надо объявлять как массив BYTE
    input_buf db КОЛИЧЕСТВО_БАЙТ_ПЛАНИРУЕМОЕ_ПРОЧИТАТЬ dup(?)

    б) нафига вызов Sleep? он там нафиг не нужен
    в) зачем ReadConsole, но при этом WriteConsoleA? Или все *A, или уж все функции (что IMHO лучше) все функции без *A в конце.
    Ответ написан
    4 комментария
  • Почему зависает операция в 1с?

    Mi11er
    @Mi11er
    A human...
    Запускаем дебаг, есть там замер производительности, делаем нужную операцию, анализурем, кто долго думает, правим.
    60be0bdc26f3f664418937.png
    Ответ написан
    Комментировать
  • Объясните как работает данный код в React?

    meowto16
    @meowto16
    Делаю штуки
    Это обычный нативный метод для массивов. К React'у он прямого отношения не имеет.

    Смотри по строкам:
    const [todo, setTodo] = useState([]) // todo: массив todo'шек. setTodo - сеттер, для изменения переменной todo
    
    const deleteItem = (id) => { // Объявляем функцию deleteItem, которая принимает внутрь id интересующей todo
      setTodo( // Устанавливаем новый state для переменной todo, которую объявили выше
        todo.filter(item => { // Берем текущее состояние переменной todo. 
           // filter как forEach проходится по каждому элементу массива. 
          // Принимает в себя callback вида (item, i, array), где item - текущий элемент (соответствует array[i]), текущий индекс, текущий массив (который обходим)
         // В функции callback'е ты должен вернуть булевое значение (true/false). Если true - элемент остается в массиве, если нет - убирается
          return item.id !== id // Если id элемента не равен id, который хотим удалить - оставляем элемент в массиве, иначе убираем
        })
      );


    Чтобы было более ясно вот более простой пример, без state в React:

    const products = [
      { id: 1, price: 25 },
      { id: 2, price: 50 },
      { id: 3, price: 75 },
      { id: 4, price: 100 },
      { id: 5, price: 125 },
    ]
    
    // Оставим продукты, которые только с ценой выше или равной 100
    const filteredProducts = products.filter(product => product.price >= 100) // [{ id: 4, price: 100 }, { id: 5, price: 125 }]

    }
    Ответ написан
    Комментировать
  • Как инвертировать строку в tasm?

    freeExec
    @freeExec
    Участник OpenStreetMap
    На вопрос "что у меня не работает" отвечает отладка своего кода по шагам. И поиск того место где действительность расходится с задуманным.
    Ответ написан
    Комментировать
  • Как составить запрос без подзапросов?

    rozhnev
    @rozhnev Куратор тега SQL
    Fullstack programmer, DBA, медленно, дорого
    Я не знаком с тонкостями Oracle, но Вы можете попробовать так (SQL HAVING Clause):

    select 
    	 groups.id_group, 
    	 groups.name_group, 
    	 count(distinct users.id_user) size_group
    from groups
    join users on users.id_group = groups.id_group
    group by groups.id_group, groups.name_group
    having count(distinct users.id_user) between 1 and 5
    ;


    SQL fiddle
    Ответ написан
    Комментировать
  • В чем разница между is и = в SQL 2019?

    vabka
    @vabka
    Токсичный шарпист
    IS используется тлько в условиях IS NULL и IS NOT NULL
    https://stackoverflow.com/questions/5423751/how-do...
    Ответ написан
    Комментировать
  • Как получить объект справочника по значению доп. реквизита?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Ном = Справочники.Номенклатура.НайтиПоРеквизиту("Гарантия", ЗначениеРеквизита);

    Этот способ подходит для поиска по реквизитам справочника. И он ищет только первый элемент и не годится, если их несколько.
    Но, поскольку вы пишете что вам нужно осуществить поиск по дополнительному реквизиту, то вам прийдеться писать запрос, и решение зависит от того, как в вашей конфигурации реализованы дополнительные реквизиты.
    Например, в конфигурации УНФ, дополнительные реквизиты, это элементы табличной части справочника Номенклатура. При этом "свойство", т.е. имя реквизита, в вашем случае "Гарантия", это план видов характеристик ДополнительныеРеквизитыИСведения. Запрос будет выглядеть примерно так:
    Запрос = Новый Запрос;
    	Запрос.Текст = 
    		"ВЫБРАТЬ РАЗЛИЧНЫЕ
    		|	НоменклатураДополнительныеРеквизиты.Ссылка КАК НоменклатураСсылка
    		|ИЗ
    		|	Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
    		|ГДЕ
    		|	НоменклатураДополнительныеРеквизиты.Свойство = &Свойство
    		|	И НоменклатураДополнительныеРеквизиты.Значение = &Значение";
    	
    	Запрос.УстановитьПараметр("Значение", ЗначениеГарантии);
    	Запрос.УстановитьПараметр("Свойство", СсылкаНаПВХ_Гарантия);
    	
    	РезультатЗапроса = Запрос.Выполнить();
    	
    	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    	
    	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    		// Вставить обработку выборки ВыборкаДетальныеЗаписи
    	КонецЦикла;
    Ответ написан
    Комментировать
  • Может ли самозанятый получать деньги банковским переводом от иностранной компании?

    vabka
    @vabka
    Токсичный шарпист
    Деньги можно получать любым способом - главное пересчитать всё в рубли по курсу ЦБ
    В чеке просто указываешь, что оказал услугу иностранной компании.
    Всё это описано в FAQ приложения "Мой налог".

    В случае чего - спрашивай у налоговой
    Ответ написан
    Комментировать
  • Почему не работает сортировка в мультигруппировке в Mysql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ваш запрос сначала выполняет группировку, а потом результат группировки сортирует по created_date.
    Вот только в группу могут войти несколько строк с разными значениями created_date. Какое именно из этих значений должно попасть в финальную выборку и почему?
    MySQL не гарантирует, что это значение будет из конкретной строки. И не гарантирует, что при каждом следующем запросе это значение будет из одной и той же строки.
    А начиная с версии 5.7 ваш запрос вообще может выдать ошибку, поскольку по умолчанию включён режим ONLY_FULL_GROUP_BY.
    https://dev.mysql.com/doc/refman/5.7/en/group-by-h...
    Ответ написан
    6 комментариев
  • Почему не обнуляется регистр cx?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему не обнуляется регистр cx?

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

    A1:
            push    ax
            push    cx
            push    dx
            push    di
            xor     cx, cx
    
            mov     di, 10
            mov     cx, [bx+2]

    - во-превых длина строки записана по смещению 1 в буфере, который заполняет функция 0ah прерывания 21h,
    - во-вторых, длина строки представлена одним байтом, а не словом, как ты читаешь.
    С учётом этого, код должен выглядеть вот так:
    A1:
            push    ax
            push    cx
            push    dx
            push    di
            xor     cx, cx
    
            mov     di, 10
            mov     cl, [bx+1]

    А буфер для ввода строки должен быть определён так:
    firstNum db 6,0,6 dup(?)

    Дальше, вот тут ты опять путаешь байты со словами и загружаешь в dx больше чем надо:
    .A2:
            xor     dx, dx
            mov     dx, [bx+si]
            sub     dx, '0'
            add     ax, dx

    должно быть
    .A2:
            xor     dx, dx
            mov     dl, [bx+si]
            sub     dl, '0'
            add     ax, dx


    Дальше у тебя какая-то ерунда с балансом стека:
    A1:
            push    ax
            push    cx
            push    dx
            push    di
    ...
            pop     si
            pop     di

    ты кладёшь в него одно, а снимаешь другое и в другом количестве. Но это не важно, потому что из функции A1 ты всё равно нигде не возвращаешься. Show_AX выглядит нормально.
    Ответ написан
    7 комментариев
  • Какие могут не очищаются подписки в useEffect?

    Читайте доку по useEffect
    https://reactjs.org/docs/hooks-reference.html#clea...
    Вы не освобождаете конекшн при анмаунте
    возвращайте из useEffect функцию, которая отключится от сокета
    Вот этот кусок кода у вас продолжает выполнятся после того как компонент был отмонтирован,
    console.log('Подключился к прослушиванию сообщений в user list с id: ', socket.id)
                setUsrs(dataUsers)

    вам 1) вынести его в отдельную функцию, при маунте делать socket.on(' не на анонимную функцию а на именованую
    2) При анмаунте делать socket.off если он это поддерживает
    Ответ написан
    2 комментария
  • ООП в JS отличается сильно от ООП компилируемых языков?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Принципы ООП не зависят от языка. Принципы ООП в идеологии и подходу к разработке.

    А конкретный синтаксис, терминология и техническая реализация в каждом языке немного своя, но сравнивать их отдельно, от общего синтаксиса языка - нет смысла.
    Ответ написан
    Комментировать
  • Как активировать лицензию 1С сервер на linux?

    fosihas
    @fosihas
    Автоматизации учета на 1С.
    Первоисточник
    Вот цитаты от туда...
    Активация программной лицензии может выполняться с помощью двух инструментов:
    1. Помощником активирования лицензии, который доступен в Конфигураторе с помощью команды Сервис ‑ Получение лицензии….
    2. Утилитой ring. Описание утилиты см. здесь.

    Вероятно ваше использовать п.2

    т.е.
    ● Для ОС Linux: в процессе установки создается группа grp1cv8, в которую должны входить все учетные записи пользователей данного компьютера от имени которых:
    ● исполняются процессы кластеров серверов «1С:Предприятия» в режиме демона;
    ● выполняется запуск клиентских приложений на данном компьютере.
    Следует убедиться, что у пользователей группы grp1cv8 есть доступ на запись для файлов программных лицензий. На каталог с программными лицензиями права назначаются следующим образом:
    ● Владелец каталога: root. Права: чтение и запись (rwx).
    ● Группа владельца: grp1cv8. Права: чтение и запись (rwx).
    ● Права для остальных пользователей: только чтение (r-x).
    Ответ написан
    Комментировать
  • Ошибка при синхронизации 1с бухгалтерия предприятия фрешь и 1с УНФ?

    @VirDim
    30к документов за раз это очень много для таких конфигураций во фреше, я думаю. Попробуйте выгружать порционно, по тысячи документов например
    Ответ написан
    Комментировать
  • Как создать процедуру выводящую код символа в HEX формате?

    @pfemidi
    Тут могло бы быть краткое описание меня
    Красивый хак для вывода AL именно в шестнадцатиричном виде, подсмотренный мной в далёком 1989-м году в SYMDEB.EXE и так мне в своё время понравившийся, что я его запомнил на всю жизнь. Вот слегка видоизменённый по сравнению с оригиналом из SYMDEB.EXE вариант (там использовались всякие дополнительные проверки, которые я тут выкинул). Прошу заметить -- ни одного сравнения, ни одного условного перехода!

    AL_to_HEX       proc near
            push    ax
            shr     al,4
            call    @@outNibble
            pop     ax
    @@outNubble:
            and     al,0fh
            add     al,90h
            daa
            adc     al,40h
            daa
            mov     ah,0eh
            int     10h
            ret
    AL_TO_HEX       endp
    Ответ написан
    Комментировать