• Как добавить новый реквизит в План Видов Расчета в Расширении?

    @Dementor
    программист, архитектор, аналитик
    Не могу понять в чем дело. Как быть?

    Подтверждаю наличие этой ошибки в версии 8.3.22
    (возможно и в более поздних - нет под рукой для проверки)

    Как быть?

    1. Написать письмо на v8@1c.ru с описанием воспроизведения и номером вашего активного договора ИТС (иначе не зарегистрируют). Вам дадут номер ошибки, по которому сможете отслеживать статус исправления. Возможно починят в ближайшем 8.3.26
    2. Включить возможность редактирования в настройках поддержки основной конфигурации и добавить недостающий реквизит. Распространенная практика править структуру в основной конфе, а логику выносить в расширения, каждое из которых будет видеть новый реквизит.
    3. Добавить в расширении регистр сведений с измерениями как в вашем регистре расчета и с нужными реквизитами. При записи набора записей по регистру расчета делать синхронную запись в новый регистр сведений. В точке использования (отчет? динамический список формы?) добавить левое соединение с новым регистром.
    Ответ написан
    1 комментарий
  • Каков план личностного развития 1С программиста с нуля?

    @helycopternicht
    1) 1С Предприятие 8.2. Практическое пособие разработчика - это самая первая книжка которую знают все ОдинЭсники - получите необходимую основу подкрепленную практикой
    2) Дальше нужно прочитать и подкрепить практикой книгу - Конфигурирование и Администрирование для более глубокого понимания как там все работает
    3) Делаем самостоятельно практические задачи. Например (Товаро-оборот, Касса-Банк, Зарплата, Производство). ТЗ можно поискать в интернете.
    4) Пытаемся устроиться в контору стажером
    5) На работе дадут много новых и полезных навыков - так что дальше только общие советы
    Дальнейшие пункты нужны скорее после того как устроитесь на работу
    Обязательно очень хорошо разобраться с запросами это ой как сильно поможет.
    Обязательно получите хотя бы азы бухгалтерии - это тоже очень пригодится в работе
    Никогда не унывайте =)
    Ответ написан
    8 комментариев
  • Как правильно использовать сервисы и репозитории в web приложении?

    @kuftachev
    Yii2 и Laravel используют Active Record вместо Entity и Repository, то есть описание данных и доступ к ним.

    Service - это слой в котором у Java выполняется бизнес-логика, хотя у .Net часто прямо в моделях. (Первое называют анемичными моделями, кто-то рассматривает это как правильную архитектуру, кто-то как антипаттерн).

    Это я к тому, что в архитектуре больше философии, чем инженерии.

    В общем, не заморачивайтесь. Если у Вас просто CRUD, то нет смысла плодить кучу абстракций и нужно использовать Active Record и запросы через него в контроллере.

    Если запросы сложнее и это уже связано с доменной областью, то пишем в Active Query у Yii2 и методы под каждую ситуацию, чтобы при замене логики не искать по всему коду. Но это а том случае, если именно приложение, а не конкретного action.

    Если какая-то простая логика, типа сложить два числа, то можно прямо в самом Active Record, если уже что-то сложнее, то выноситься в уровень Service про который Вы и спрашивали. Тогда он будет запрашивать у Active Record, а Controller будет работать с Service.

    Repository даёт абстракцию над хранилищем, но я бы не использовал его с Yii2. Тоже очень неоднозначная штука, то что в Java почему-то называют Repository, на самом деле является просто DAO, при этом в .Net используют настоящие Repository.

    Главное правило, если кода много и начинаете в нем теряться, нужно думать о том, как его разделить. Остальное с опытом!
    Ответ написан
    Комментировать
  • Как из файла txt записать в Dictionary?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Не используйте File.ReadAllLines и подобные, это ошибка и вы не умеете правильно с ним работать, что бы его так использовать. Исправленный код:

    string fileTagsPath = $@"{AppDomain.CurrentDomain.BaseDirectory}tags\{имя файла}.txt";
    using (StreamReader reader = new StreamReader(fileTagsPath))
    {
        while (!reader.EndOfStream)
        {
            string line = reader.ReadLine();
            string[] lineParts = line.Split(", ");
            replacements.Add(lineParts[0], lineParts[1]);
        }
    }
    Ответ написан
    5 комментариев
  • В чём отличие между middleware и фильтрами в .Net?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    Middleware работают на уровне запросов, а фильтры на уровне слоя MVC, применяются для контроллеров, actions.
    Ответ написан
    2 комментария
  • Какой шаблон проекта выбрать при написании телеграмм бота Visual Studio 2022?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    А что такое API? Это просто сервер, куда вы будете делать HTTP запросы и получать информацию. Как разница, откуда вы будете делать HTTP запрос используя HttpClient. Ваш шаблон просто будет показывать, как вы это собираетесь выводить пользователю.

    Хотите простенькую программу? Делайте Console Application
    Хотите минимальный, но рабочий GUI? Делайте на Windows Forms/WPF
    Хотите, что бы вашей программой пользовались на телефоне? Можете делать на Xamarin.NET или MUI
    Хотите, что бы ваша программа была доступна без скачивания? Делайте на asp.net mvc
    Хотите, что бы ваша программа была в интернете и имела красивый и быстрый UI? Можете сделать на asp.net web api и прикрепить туда в качестве клиента React, Angular или Vue.js
    Не хотите делать переадресация трафика через API? Можете сделать только на React, Angular или Vue.js
    Хотите быстрый GUI в браузере, но не хотите отходить от технологий Microsoft? используйте asp.net Blazor
    Ответ написан
    Комментировать
  • Cannot convert return expression of type, C# generic method, как вернуть конкретный тип?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    как можно вернуть конкретный тип значения без изменения сигнатуры?

    В данном случае - никак.
    T - это generic параметр для подстановки во время компиляции. Он означает конкретный тип.
    Так как никаких ограничений на него не выставлено, то считается, что может в него быть вставлено абсолютно что-угодно. Но возвращаемые значения должны уметь конвертироваться в этот возвращаемый тип, например, если T - long, то ParseInt сработает, т.к. int конвертируется к long (неявно и явно), а DateTime к long просто так нет. А теперь вместо T подставь byte или какой-нибудь класс и подумай - можно ли int к этому классу сконвертировать.

    Пишу парсер

    Когда я писал свой парсер, то делал базовый класс с абстрактным свойством, которое показывает что это за тип, и для каждого возможного значения - отдельный класс, который наследуется от базового. Чтобы понимать, что в результате пришло - смотрю на это поле.

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

    Например, так можно

    enum TokenType
    {
        Int,
        Decimal,
        DateTime,
    }
    
    public abstract class ParseResult
    {
          public abstract TokenType Type { get; }
    }
    
    public class IntParseResult: ParseResult
    {
           public override TokenType Type => TokenType.Int;
           public int Value { get; }
           IntParseResult(int value)
           {
                 Value = value;
            }
    }
    
    public class DecimalParseResult: ParseResult
    {
           public override TokenType Type => TokenType.Decimal;
           public decimal Value { get; }
           DecimalParseResult(decimal value)
           {
                 Value = value;
            }
    }
    
    public class DateTimeParseResult: ParseResult
    {
           public override TokenType Type => TokenType.DateTime;
           public DateTime Value { get; }
           DateTimeParseResult(DateTime value)
           {
                 Value = value;
            }
    }
    
    public interface IParser
    {
              ParseResult Parse(string str);
    }
    
    public class IntParser: IParser
    {
            public ParseResult Parse(string str) => ParseInt(str);
    }
    
    public class DecimalParser: IParser
    {
            public ParseResult Parse(string str) => ParseDecimal(str);
    }
    
    public class DateTimeParser: IParser
    {
            public ParseResult Parse(string str) => ParseDateTime(str);
    }
    
    public static class MyParser
       {
           private static IParser GetParserFor(string str) { /* .... */ };
           public static ParseResult Parse(string str)
           {
                  var parser = GetParserFor(str);
                  return parser.Parse(str);
           }
       }


    Я рекомендую убрать этот статический парсер и вынести решение о том какой парсер использовать выше по иерархии вызовов, либо пересмотреть логику парсинга, т.к. просто посмотреть на строку и понять как парсить - не самое эффективное решение.
    Ответ написан
    Комментировать
  • Как организовать передачу файлов с FTP сервера?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Самый простой и удобный способ - поднять рядом с ftp http-сервер. Можно даже с паролем (http basic auth).
    Ответ написан
    1 комментарий
  • Как начать писать собственный API?

    yesbro
    @yesbro
    Думаю, помогаю думать
    Для начала напиши документацию на апи. Какие методы будут, по каким протоколом (GET|POST|DELETE|PUT|PATCH) надо обращаться. Какие параметры передадаются. Какие данные будут в ответе, в какой формат. Можешь прям сделать примеры. Плюс еще надо какие ошибки будет возвращать твой апи.

    После этого станет намного проще :)
    Ответ написан
    8 комментариев
  • Как изменить кодировку базы данных после создания?

    mindtester
    @mindtester
    http://iczin.su/hexagram_48
    Базу данных нельзя заблокировать монопольно для выполнения операции.

    а если так? (предварительно убедившись в отсутствии других соединений к zk updated спасибо Константин Цветков .. хотя при закрытой базе, на сколько помню, прокатило бы )) :
    use master
    GO
    ALTER DATABASE zk COLLATE Chinese_PRC_CI_AS

    ps
    Collation - это таблица сопоставления
    а что вы хотели? перекодировки на лету?.. это именно знание как сортировать по каким то национальным правилам (для индексов upd и разумеется запросов с Ordered).. но это не контроль контента, и тем более не правка его
    Ответ написан
    2 комментария
  • Как начать изучать ASP.NET Core?

    @intolighter
    Я изучал, читая официальную документацию раздела веб приложения. В процессе этого я реализовал приложение - маркетплейс, которое хотел показать в качестве тестового компании. Я не люблю читать книги по фреймворкам, т. к. автор может рекомендовать вещи, которые разработчики. порицают.
    Ответ написан
    Комментировать
  • Как начать изучать ASP.NET Core?

    QuiShimo
    @QuiShimo
    Держу путь на бекэнд :)
    Привет!

    Из тех, что есть в продаже, можно обратить внимание на эти книги:
    • Язык программирования C# 9 и платформа .NET 5: основные принципы и практики программирования, 10-е издание - тут есть некоторые основы и глава посвященная ASP.NET

    • ASP.NET Core 3 с примерами на C# для профессионалов, 8-е издание | Фримен Адам


    Я пока не так глубоко в них зашел, но по стилю изложения там очень много практических примеров и кода отображено. Троелсен очень помог в свое время разобраться с ООП на примерах.

    UPD: из-за того, что переводы затягиваются, книги/курсы на русском обычно отстают от актуальных версий ЯП и фреймворков.

    Также, для практики можно прорешивать тестовые задания, которые присылают для отбора на стажировки/вакансии. Один из таких сборников можно найти здесь: https://github.com/Hexlet/ru-test-assignments
    Ответ написан
    4 комментария