Задать вопрос
  • Как найти реальный касса атол на ком портах?

    igolets
    @igolets
    Программист C#, MSSQL
    В документации написано:
    Чтобы узнать состояние соединения, нужно использовать метод isOpened(). Результат метода не отражает текущее состояние подключения - если с ККТ была разорвана связь, то метод все так же будет возвращать true, но методы, выполняющие какие-либо операции над ККТ, будут возвращать ошибку LIBFPTR_ERROR_NO_CONNECTION.


    Так что я бы только на этот параметр не опирался, а сделал запрос
    fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_STATUS);
    Ответ написан
    Комментировать
  • Как распечатать чек через API Атол?

    igolets
    @igolets
    Программист C#, MSSQL
    В целом код выглядит вполне корректным.

    На счёт замечаний про 3 обязательных поля в конце — по ФФД1.2 добавилась обязательная отправка параметра 2108, остальные я указываю всегда. Причём, если ФФД не обновили до 1.2, то параметр 2108 отправлять нельзя. Но эти ошибки должны вылезти только при отправке а ОФД, не на этапе формирования чека. 1212 я отправляю всегда.

    Повторюсь, я проверил свой код, я отправляю данные те же.

    Я бы проверил варианты в таком порядке:
    1. Поскольку у меня клиенты печатают без НДС, я не шлю налог. Попробуйте посчитать налог вручную и отправить явно из своего кода для каждой позиции и в итогах.
    2. Альтернативно — попробуйте отправить то же самое с булками, но с нулевой ставкой налога.
    3. Попробуйте отправить те же данные из родной утилиты.
    4. Посмотрите низкоуровневый лог работы C:\Users\User\AppData\Roaming\ATOL\drivers10\ там могут быть подсказки.
    5. Ещё можно посмотреть а утилите Тест драйвера «Информация о ККТ»\ «Тип запроса» «34 – Фатальные ошибки».
    Ответ написан
    Комментировать
  • Как организовать бэкап фото с телефонов и файлов с компьютера?

    igolets
    @igolets
    Программист C#, MSSQL
    Я сам лично не разворачивал, но если руки доберутся собрать машину для бакапов для дома, то планирую попробовать такое:
    1. На железку поставить операционку от Synology (https://pikabu.ru/story/nas_server_na_lyubom_zhele...)
    2. Бакапить картинки, например, так https://kb.synology.com/ru-ru/SRM/help/DSfile/iPhone или https://www.bobcloud.net/how-to-backup-iphone-to-s...
    Ответ написан
    Комментировать
  • Возможно ли решить по другому вывод информации?

    igolets
    @igolets
    Программист C#, MSSQL
    Пока напрашивается взять табличку, отсортировать по колонке Время и по таймеру вычислять разницу времени и пробегать по таблице, пока не найдем первое значение, которое будет больше текущего. Это и будет искомая строка. Таблицу можно прописать прямо в коде, можно во внешнем файле или БД и грузить при запуске.

    Вдогонку. Выше вижу в комментарии "difference обновляется каждую секунду" — это не совсем так. Значение difference вычисляется по тику таймера. Таймер не будет срабатывать точно раз в секунду. Всегда будет небольшая погрешность, даже если настроить его срабатывать 100 раз в секунду, то будут моменты, что по факту сработало 99 или 101 раз. Правил я как-то чужой код, где программа вычисляла, сколько времени прошло с прошлого вызова и суммировала эти промежутки. В итоге набегало порядка 7% разницы.
    Ответ написан
    Комментировать
  • Как научиться декомпозиции в ООП?

    igolets
    @igolets
    Программист C#, MSSQL
    Могу предложить два пути (их в идеале можно/нужно) совместить:
    1. Правильные книжки ("библия" по теме — книжка Гради Буча https://www.academia.edu/36807105/OBJECT_ORIENTED_..., ещё ссылка https://github.com/gowthamanniit/Java/blob/master/...)
    2. Найти работу, где это можно применить. В идеале — в немаленькой конторе, где есть практика code review, чтобы получать регулярную обратную связь по своей работе.
    Ответ написан
    Комментировать
  • Возможно ли сделать сертификат Code Sign физ лицу в 24 году?

    igolets
    @igolets
    Программист C#, MSSQL
    1. Тут вопрос цены. Открыть ИП без движения и т.п. — примерно 50тыр в год, на ИП можно и сертификат организации сделать. Либо делать Comodo, но его только через посредников (в личку могу написать, с кем работал)
    2. Российских удостоверяющих центров, которые выпускают сертификаты подписи кода нет. Я писал запрос в Минцифры, ответили "Возможность выдачи сертификатов подписи кода в данный момент прорабатывается на базе НУЦ". Остаются только иностранные УЦ, из них у нас работают только GlobalSign, у них, вроде, физлицам сертификаты не делают. Остальные через посредников.
    3. Сорян, не знаю. Встречный вопрос — EV физлицам вообще делают? :)
    Ответ написан
  • Почему не открывается после сборки?

    igolets
    @igolets
    Программист C#, MSSQL
    Моя процедура поиска ошибки такая:
    1. Запустить не из студии, а из каталога bin, чтобы убедиться, что студия не влияет на это.
    2. Установить у себя и запустить
    3. Сравнить архитектуру процессора
    4. Сравнить каталог с установленной программой на целевой машине и каталог bin на девелоперской
    5. Посмотреть EventLog на целевой машине, там может быть ругань на отсутствие файла или на ошибку доступа
    6. В program.cs весть код main() обуть в try-catch и показывать содержимое эсепшена на экран, или писать в темп каталог.


    Наиболее вероятные причины сбоев:
    1. Не установлен .net нужной версии
    2. Запуск сборки х64 на х32
    3. Не установлены сторонние библиотеки
    4. Не доставлена одна из сборок
    5. Один из файлов в процессе сборки установщика побился
    6. Что-то прописано в конфиге, но требует настроки на целевой машине (строка подключения, например)
    7. Недостаточно доступа у юзера на целевой машине
    Ответ написан
    Комментировать
  • Как разрешить доступ к MS SQL (named instance) серверу за WIndows Firewall?

    igolets
    @igolets
    Программист C#, MSSQL
    Пробовали подключаться телнетом на заданный порт (1433)? Я этот метод использую для точечной проверки наличия доступа.
    У меня обычно процедура такая — включаю на сервере доступ по TCP-IP, задаю порт 1433, открываю его на firewall. После этого простая универсальная проверка, не требующая дополнительного ПО — это telnet <адрес> 1433, потом Excel.

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

    Что ещё (кроме telnet) я бы посоветовал проверить:
    1. Есть ли в firewall инструменты проверки, "что пошло не так". Например, VipNet такое умеет.
    2. На клиентской машине запустить CliConfg.exe и посмотреть, может, какие-то настройки на машине откуда-то взялись. Например, настроен алиас, который в явном виде использует named pipes.
    3. Можно выключить firewall, открыть подключение и посмотреть в netstat, как именно клиент подключился.
    4. Сделать пинг по имени и убедиться, что используется IPv4
    5. Попробовать подключение по IP вместо имени.
    6. Включить на сервере SQL Browser и открыть соответствующий порт. Иногда помогает :)
    Ответ написан
    Комментировать
  • Почему 0,5 округляется до чётного числа?

    igolets
    @igolets
    Программист C#, MSSQL
    Я когда-то даже написал на эту тему статью.

    https://habr.com/ru/articles/801899/
    Ответ написан
    Комментировать
  • Как сделать кнопку Инфо?

    igolets
    @igolets
    Программист C#, MSSQL
    Есть такой проект, FontAwesome, в основном его используют для веба, но есть библиотеки для десктопа. Например, вот https://awesome-inc.github.io/FontAwesome.Sharp/

    Эта библиотека предлагает свой набор контролов (появляется в тулбоксе в виде отдельной группы).
    Вот такое можно сделать:
    659fa5230f7f5417068805.png
    Ответ написан
    Комментировать
  • Что стоит учить с или c++ или c#?

    igolets
    @igolets
    Программист C#, MSSQL
    На C/C++ имеет смысл смотреть в случаях:
    1. Если есть в планах разрабатывать ПО, которое работает с железом на низком уровне.
    2. Если есть в планах разрабатывать высокопроизводительное ПО.
    3. Если есть в планах разрабатывать ультра-портируемое ПО.
    4. Если есть желание разобраться как ПО на любом другом языке переводится в машинный код и как его оптимизировать.

    В остальном эти языки требуют относительно высокой дисциплины от разработчика, т.к. предоставляют широкие возможности для доступа к железу/памяти (ошибок).

    Касательно C# — я бы сказал, что он похож скорее на Java, чем на C. Как минимум, внутренней логикой. Его хорошо использовать для разработки разного рода прикладного ПО, быстрой разработки, обучения — много готовых инструментов, прощает многие ошибки. Ещё для обучения хорош Pascal — его создавали специально для этих целей.

    Учить C# рекомендую по экзаменационным курсам Microsoft — в них довольно последовательное изложение, покрывающее все существенные темы. Для C# это "Exam Ref 70-483 Programming in C#" (сам экзамен отменён с 2021, но знания особо не устарели ;) книжку в виде PDF можно найти в поиске за пару минут).

    И ещё момент — в вопросе явно не было указана степень знакомства с темой, но от себя рекомендую уделить пристальное внимание структурам данных и алгоритмам. Без этих знаний преобразовать задачу в код будет очень сложно и больно от изобретаемых велосипедов.
    Ответ написан
    Комментировать
  • Какой хостинг выбрать для ТГ бота на .Net?

    igolets
    @igolets
    Программист C#, MSSQL
    Как опцию предлагаю рассмотреть бессерверный бот. До какого-то количества вызовов вообще будет бесплатно.
    https://habr.com/ru/articles/752658/
    Ответ написан
    Комментировать
  • Как найти работающую от сети замену смартфону?

    igolets
    @igolets
    Программист C#, MSSQL
    Тут Infinix Note 30 недавно презентовали. Там обещают функцию питания в обход батареи.
    Ответ написан
    Комментировать
  • Как к триггеру привязать делегат?

    igolets
    @igolets
    Программист C#, MSSQL
    Триггеры, к сожалению, напрямую не предназначены для вызова кода. Но код можно вызывать косвенно. Навскидку могу привести следующие варианты:
    1. DataTrigger может биндится через конвертер, соответственно, будет вызываться код конвертера с передачей данных из модели. Пример https://itecnote.com/tecnote/c-wpf-calling-method-...
    2. EventTrigger может запускать TriggerAction. Можно написать свой TriggerAction и этот код будет вызываться по триггеру. Пример https://putridparrot.com/blog/a-simple-wpf-trigger...
    3. Ну и по-простому можно триггером выставлять свойство контрола, а изменение свойства обрабатывать обработчиком.
    Ответ написан
    Комментировать
  • Стоит ли переписывать старый проект на .NET6 (на голом энтузиазме)?

    igolets
    @igolets
    Программист C#, MSSQL
    Я бы предложил попробовать скушать этого слона по частям, а не замахиваться на переписывание всего с сразу.
    По мере появления новых задач локально (в тех местах, которые уже затронуты изменениями) приводить код в порядок — добавлять асинхронность, приводить в порядок типы, обновлять библиотеки.
    Собственно, на .Net6 свет клином не сошёлся, плохой код (как и хороший) можно писать на любой версии
    Ответ написан
    Комментировать
  • Почему не могу добавить компонент в Win Form?

    igolets
    @igolets
    Программист C#, MSSQL
    Обычно контрол в панели появляется если открыт дизайнер подходящий (по версии .Net и т.п.).
    Ответ написан
    Комментировать
  • Почему Студия игнорирует настройки gitignore?

    igolets
    @igolets
    Программист C#, MSSQL
    Файл .gitignore с точкой впереди названия?
    Он лежит в одной папке с папкой .git?
    Если другим клиентом пользоваться (TortoiseGit/Sourcetree), там тоже показываются файлы из игноров?
    Ответ написан
    Комментировать
  • Как обеспечить зависимость от проекта другого решения в visual studio?

    igolets
    @igolets
    Программист C#, MSSQL
    Вопрос сформулирован немного скомкано, поэтому отвечу кратко.
    Вот я уже отвечал на похожий вопрос https://qna.habr.com/q/1201580#answer_2231234
    Ответ написан
  • Имеет ли смысл использовать паттерн MVVM в приложении Winforms?

    igolets
    @igolets
    Программист C#, MSSQL
    1. WPF немного адаптирован для MVVM, но это не обязательно — масса примеров в родной документации не использует никакого MVVM. Так что я бы не связывал выбор использования MVVM с WPF.
    2. Есть готовые библиотеки для WinForms, которые умеют делать легкий MVVM. Лично я, например, работал с DevExpress и на мой взгляд, из коробки он дает даже больше, чем WPF (например, есть встроенные сервисы работы с попап окнами). Так что использовать MVVM на WinForms не сложнее, чем на WPF.
    3. И раз мы отделили вопрос MVVM от WPF/WF, нужно принципиально решать вопрос использовать ли MVVM в конкретном проекте.
    4. И, собственно, вопрос использование MVVM имеет плюсы и минусы. Плюсы — сопротивление хаосу при массированных изменениях кода, уменьшение человеческого труда при тестировании. Минусы — больше кодинга (накладные расходы на раздельную реализацию VM + юнит-тесты), не устраняет ручное тестирование до конца. Использовать MVVM без юнит-тестов смысла особо не вижу — кодить больше, выгоды никакой.


    Лично мое мнение — если нужна простая утилита «для себя», которую один раз написали и не трогают, я бы писал быстро (без MVVM и тестов). А если её будут менять, в том числе другие разработчики, а цена ошибки — деньги (например, если админятся данные клиентов по контрактам), то лучше MVVM и тесты.
    Ответ написан
    Комментировать