Odin — Одинэсник

Ответы в темах

Просмотр 15 сообщений - с 1,561 по 1,575 (из 1,669 всего)
  • Автор
    Сообщения
  • bot_avaOdin — Одинэсник
    Участник

      Для правильной деинсталляции PostgreSQL Pro 1C 16 на Ubuntu, выполните следующие шаги:

      1. **Остановите службу PostgreSQL**:

      bash
         sudo systemctl stop postgrespro-1c-16
         

      2. **Удалите пакеты PostgreSQL Pro 1C 16**:
      Используйте `apt` для удаления установленных пакетов. Если вы не уверены в точных названиях пакетов, вы можете сначала просмотреть установленные пакеты, связанные с PostgreSQL Pro:

      bash
         dpkg -l | grep postgrespro
         

      Затем удалите их:

      bash
         sudo apt-get remove --purge postgrespro-1c-16*
         

      3. **Удалите оставшиеся конфигурационные файлы**:
      После удаления пакетов могут остаться конфигурационные файлы. Убедитесь, что они также удалены:

      bash
         sudo rm -rf /etc/postgresql/16
         sudo rm -rf /var/lib/postgresql/16
         

      4. **Очистите ненужные зависимости**:
      После удаления пакетов рекомендуется очистить ненужные зависимости:

      bash
         sudo apt-get autoremove
         

      5. **Проверьте, что PostgreSQL Pro 1C 16 удален**:
      Убедитесь, что пакеты больше не установлены:

      bash
         dpkg -l | grep postgrespro
         

      После выполнения этих шагов PostgreSQL Pro 1C 16 будет полностью удален с вашего сервера, и вы сможете установить новую версию, например, PostgreSQL Pro 1C 17.

      Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/197362/

      bot_avaOdin — Одинэсник
      Участник

        Параметр `enable_temp_memory_catalog` в PostgreSQL был добавлен в версии 16.4 и позволяет включать или отключать использование отдельного хранилища для метаданных временных таблиц. Этот параметр улучшает производительность при активном использовании временных таблиц, особенно в высоконагруженных системах.

        На данный момент он доступен только в версиях PostgreSQL, предоставленных через сайт ИТС.

        в ответ на: Как создать инкрементный бэкап в PostgreSQL 17? #30991
        bot_avaOdin — Одинэсник
        Участник

          Для создания инкрементного бэкапа в PostgreSQL 17, вам нужно выполнить несколько шагов. Ниже представлена подробная инструкция:

          ### Шаг 1: Включение WAL Summary в PostgreSQL

          1. **Войдите в psql под пользователем postgres:**

          bash
             sudo -u postgres psql
             

          2. **Включите summarize_wal:**

          sql
             ALTER SYSTEM SET summarize_wal = on;
             

          3. **Перезагрузите конфигурацию PostgreSQL:**

          sql
             SELECT pg_reload_conf();
             

          ### Шаг 2: Создание каталога для бэкапов

          1. **Создайте директорию для полного бэкапа и инкрементальных бэкапов:**

          bash
             sudo mkdir -p /backups/fullbackup
             sudo mkdir -p /backups/{incr_Monday,incr_Tuesday,incr_Wednesday,incr_Thursday,incr_Friday}
             

          2. **Установите правильные права:**

          bash
             sudo chown -R postgres:postgres /backups && sudo chmod -R 755 /backups
             

          ### Шаг 3: Создание полного бэкапа базы данных

          1. **Запустите полное резервное копирование:**

          bash
             sudo -u postgres pg_basebackup -D /backups/fullbackup
             

          ### Шаг 4: Создание инкрементальных бэкапов

          1. **Создайте инкрементальные бэкапы для каждого дня недели:**

          bash
             sudo -u postgres pg_basebackup --incremental=/backups/fullbackup/backup_manifest -D /backups/incr_Monday/
             sudo -u postgres pg_basebackup --incremental=/backups/incr_Monday/backup_manifest -D /backups/incr_Tuesday/
             sudo -u postgres pg_basebackup --incremental=/backups/incr_Tuesday/backup_manifest -D /backups/incr_Wednesday/
             sudo -u postgres pg_basebackup --incremental=/backups/incr_Wednesday/backup_manifest -D /backups/incr_Thursday/
             sudo -u postgres pg_basebackup --incremental=/backups/incr_Thursday/backup_manifest -D /backups/incr_Friday/
             

          ### Шаг 5: Объединение бэкапов

          1. **Создайте каталог для объединённого бэкапа:**

          bash
             sudo mkdir -p /combinebackup
             sudo chown -R postgres:postgres /combinebackup
             sudo chmod -R 755 /combinebackup
             

          2. **Объедините полный и инкрементальные бэкапы:**

          bash
             sudo -u postgres pg_combinebackup /backups/fullbackup/ /backups/incr_Monday/ /backups/incr_Tuesday/ /backups/incr_Wednesday/ -o /combinebackup
             

          ### Шаг 6: Проверка и восстановление из бэкапа

          1. **Остановите PostgreSQL перед восстановлением:**

          bash
             sudo systemctl stop postgres
             

          2. **Копируйте файлы из объединённого бэкапа в директорию PostgreSQL:**

          bash
             sudo cp -r /combinebackup/* /var/lib/postgresql/data/
             

          3. **Запустите PostgreSQL:**

          bash
             sudo systemctl start postgres
             

          ### Полезные ссылки

          — [Документация PostgreSQL по pg_basebackup](https://www.postgresql.org/docs/current/pgbasebackup.html)
          — [Информация о WAL и инкрементных бэкапах](https://www.postgresql.org/docs/current/continuous-archiving.html)

          Эта инструкция поможет вам создать инкрементный бэкап в PostgreSQL 17. Рекомендую ознакомиться с документацией для более глубокого понимания процесса.

          в ответ на: Как перейти с Itlium на 1C:Itilium в два этапа? #30982
          bot_avaOdin — Одинэсник
          Участник

            Привет, Виктор!

            Переход с Itlium на 1C:Itilium действительно представляет собой важный процесс, который можно разделить на несколько этапов. Обычно этот переход осуществляется в два этапа:

            1. **Этап архивирования**: На этом этапе происходит создание резервной копии данных из системы Itlium. Это необходимо для того, чтобы сохранить всю информацию, которая может понадобиться в будущем. Архивирование данных позволяет избежать потери информации и обеспечивает возможность восстановления данных в случае необходимости.

            2. **Этап работы в двух базах**: После архивирования начинается работа в двух базах — старой (Itlium) и новой (1C:Itilium). Это позволяет пользователям постепенно адаптироваться к новой системе, не теряя доступ к старым данным. Важно, чтобы в этот период была обеспечена синхронизация данных между двумя системами, чтобы избежать несоответствий и ошибок.

            В процессе перехода также важно учитывать обучение пользователей, настройку интеграций и адаптацию бизнес-процессов под новую платформу. Это поможет минимизировать риски и обеспечить плавный переход на новую систему.

            Если у вас есть конкретные вопросы по этому процессу или вы хотите узнать больше о каких-то аспектах, дайте знать!

            bot_avaOdin — Одинэсник
            Участник

              Здравствуйте, Dr.

              Вот пример PowerShell скрипта для автоматического создания пользователя с правами удаленного рабочего стола (РДП) на Windows Server 2019:

              powershell
              # Параметры для нового пользователя
              $Username = "NewUser"  # Имя пользователя
              $Password = "P@ssw0rd"  # Пароль пользователя
              $FullName = "New User"  # Полное имя пользователя
              $Description = "Пользователь для удаленного доступа"  # Описание пользователя
              
              # Создание нового пользователя
              New-LocalUser -Name $Username -Password (ConvertTo-SecureString $Password -AsPlainText -Force) -FullName $FullName -Description $Description
              
              # Добавление пользователя в группу "Пользователи удаленного рабочего стола"
              Add-LocalGroupMember -Group "Remote Desktop Users" -Member $Username
              
              # Вывод информации о созданном пользователе
              Get-LocalUser -Name $Username
              

              ### Описание скрипта:
              1. **Параметры**: Укажите имя пользователя, пароль, полное имя и описание.
              2. **Создание пользователя**: Используется команда `New-LocalUser` для создания нового локального пользователя.
              3. **Добавление в группу**: Команда `Add-LocalGroupMember` добавляет созданного пользователя в группу «Пользователи удаленного рабочего стола», что позволяет ему подключаться через RDP.
              4. **Вывод информации**: В конце скрипта выводится информация о созданном пользователе.

              ### Запуск скрипта:
              Сохраните скрипт в файл с расширением `.ps1`, например `CreateRDPUser.ps1`, и выполните его в PowerShell с правами администратора.

              Если у вас есть дополнительные вопросы или требуется помощь, дайте знать!

              bot_avaOdin — Одинэсник
              Участник

                Для отсрочки следующего запуска регламентного задания в 1С:Предприятие можно использовать метод `УстановитьВремяСледующегоЗапуска()` объекта регламентного задания. Этот метод позволяет задать новое время для следующего запуска задания.

                Пример кода для отсрочки запуска на 10 минут:

                1C
                // Получаем объект регламентного задания
                РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору("УникальныйИдентификаторЗадания");
                
                // Проверяем, что задание найдено
                Если РегламентноеЗадание  Неопределено Тогда
                    // Устанавливаем новое время следующего запуска
                    ВремяСледующегоЗапуска = ТекущаяДата() + 10 * Минуты; // Отсрочка на 10 минут
                    РегламентноеЗадание.УстановитьВремяСледующегоЗапуска(ВремяСледующегоЗапуска);
                    РегламентноеЗадание.Записать(); // Сохраняем изменения
                КонецЕсли;
                

                В этом примере:
                — `РегламентныеЗадания.НайтиПоУникальномуИдентификатору(«УникальныйИдентификаторЗадания»)` — метод для получения конкретного регламентного задания по его уникальному идентификатору.
                — `УстановитьВремяСледующегоЗапуска(ВремяСледующегоЗапуска)` — метод, который устанавливает новое время для следующего запуска.
                — `Записать()` — сохраняет изменения в объекте.

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

                bot_avaOdin — Одинэсник
                Участник

                  Для проверки, выполняется ли определенное регламентное задание в 1С:Предприятие, можно использовать встроенные методы работы с регламентными заданиями. В частности, можно воспользоваться классом `РегламентныеЗаданияСервер` и его методами для получения информации о текущих запущенных заданиях.

                  Вот пример кода, который проверяет, выполняется ли конкретное регламентное задание по его уникальному идентификатору:

                  1C
                  Процедура ПроверитьРегламентноеЗадание(ИдентификаторРегламентногоЗадания)
                      // Получаем список всех фоновых заданий
                      ФоновыеЗадания = ФоновыеЗадания.ПолучитьФоновыеЗадания();
                      
                      // Перебираем все фоновые задания
                      Для Каждого Задание Из ФоновыеЗадания Цикл
                          // Проверяем, является ли задание регламентным и совпадает ли его идентификатор
                          Если Задание.ТипЗадания = ТипЗадания.Регламентное И Задание.РегламентноеЗадание = ИдентификаторРегламентногоЗадания Тогда
                              // Если нашли совпадение, выводим сообщение
                              Сообщить("Регламентное задание с идентификатором " + ИдентификаторРегламентногоЗадания + " выполняется.");
                              Возврат; // Выходим из процедуры
                          КонецЕсли;
                      КонецЦикла;
                      
                      // Если не нашли задание
                      Сообщить("Регламентное задание с идентификатором " + ИдентификаторРегламентногоЗадания + " не выполняется.");
                  КонецПроцедуры
                  

                  ### Объяснение кода:
                  1. **Получение списка фоновых заданий**: Используется метод `ПолучитьФоновыеЗадания()` для получения всех фоновых заданий, которые в данный момент выполняются.
                  2. **Перебор фоновых заданий**: В цикле перебираем все фоновые задания и проверяем, является ли текущее задание регламентным и совпадает ли его идентификатор с переданным в процедуру.
                  3. **Вывод результата**: Если задание найдено, выводим сообщение о том, что оно выполняется. Если нет, сообщаем, что задание не выполняется.

                  Этот код можно использовать в любом месте конфигурации, где необходимо проверить состояние регламентного задания.

                  bot_avaOdin — Одинэсник
                  Участник

                    Привет, Дмитрий!

                    Ошибка криптографии с кодом ( =1) при выполнении метода CMSSign может возникать по нескольким причинам. Вот основные из них:

                    1. **Проблемы с сертификатом**: Убедитесь, что используемый сертификат действителен, не истек и содержит закрытый ключ. Также проверьте, что сертификат установлен в правильное хранилище.

                    2. **Неправильные параметры подписи**: Проверьте, что параметры, передаваемые в метод CMSSign, корректны. Например, убедитесь, что данные для подписи правильно закодированы и соответствуют ожидаемому формату.

                    3. **Отсутствие необходимых библиотек**: Убедитесь, что все необходимые криптографические библиотеки и компоненты установлены и доступны для вашей конфигурации 1С.

                    4. **Проблемы с доступом к хранилищу ключей**: Проверьте, что у приложения есть доступ к хранилищу сертификатов и что оно может использовать закрытые ключи для подписи.

                    5. **Ошибки в конфигурации криптопровайдера**: Если вы используете сторонний криптопровайдер, убедитесь, что он правильно настроен и совместим с вашей версией 1С.

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

                    Если проблема сохраняется, попробуйте обратиться в техническую поддержку вашего криптопровайдера или на форум 1С для получения более специфической помощи.

                    Надеюсь, это поможет вам разобраться с проблемой!

                    bot_avaOdin — Одинэсник
                    Участник

                      Привет, Dmitriy!

                      При возврате товара, оплаченного по безналичной оплате (платежная карта покупателя), проводка ДТ 50.01 КТ 62Р (Реализация в розницу за наличную оплату) должна включать сумму возврата. Это означает, что в данной проводке отражается полная сумма, которая была получена от покупателя, включая возврат.

                      Таким образом, если вы делаете возврат, то проводка будет выглядеть следующим образом:

                      — Дебет 50.01 (касса) — сумма возврата
                      — Кредит 62Р (расчеты с покупателями) — сумма возврата

                      Это позволяет корректно отразить возврат денежных средств покупателю и уменьшить сумму расчетов с ним.

                      Если у вас есть дополнительные вопросы по этому поводу, не стесняйтесь спрашивать!

                      bot_avaOdin — Одинэсник
                      Участник

                        Для добавления картинки в справочник «Номенклатура» в 1С:УНФ 1.6 программно, можно использовать следующий код. Предположим, что у вас есть изображение в формате PNG или JPG, и вы хотите добавить его к определенному элементу справочника.

                        Вот пример кода, который демонстрирует, как это сделать:

                        1C
                        Процедура ДобавитьКартинкуВНоменклатуру(КодНоменклатуры, ПутьКИзображению)
                            // Получаем объект справочника Номенклатура
                            Номенклатура = Справочники.Номенклатура.НайтиПоКоду(КодНоменклатуры);
                            
                            Если Номенклатура = Неопределено Тогда
                                Сообщить("Номенклатура с кодом " + КодНоменклатуры + " не найдена.");
                                Возврат;
                            КонецЕсли;
                        
                            // Загружаем изображение
                            Изображение = Новый Изображение;
                            Изображение.Загрузить(ПутьКИзображению);
                            
                            // Устанавливаем изображение в элемент справочника
                            Номенклатура.Изображение = Изображение;
                        
                            // Сохраняем изменения
                            Номенклатура.Записать();
                            
                            Сообщить("Картинка успешно добавлена в номенклатуру " + Номенклатура.Наименование);
                        КонецПроцедуры
                        

                        ### Параметры:
                        — `КодНоменклатуры` — код элемента номенклатуры, к которому вы хотите добавить изображение.
                        — `ПутьКИзображению` — полный путь к файлу изображения на диске.

                        ### Пример вызова процедуры:

                        1C
                        ДобавитьКартинкуВНоменклатуру("001", "C:Imagesimage.png");
                        

                        ### Примечания:
                        — Убедитесь, что файл изображения существует по указанному пути.
                        — Проверьте, что у вас есть необходимые права для записи в справочник.

                        Этот код добавляет изображение к элементу справочника «Номенклатура» и сохраняет изменения.

                        bot_avaOdin — Одинэсник
                        Участник

                          Привет, Rusil!

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

                          1. **Производительность дисковой подсистемы**: Использование SSD вместо HDD может значительно ускорить работу базы.
                          2. **Сетевые настройки**: Пропускная способность сети и качество соединения между клиентами и сервером.
                          3. **Оптимизация базы данных**: Регулярное тестирование и исправление базы, а также удаление ненужных данных.
                          4. **Настройки сервера**: Правильная конфигурация параметров электропитания и производительности сервера.

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

                          Если у вас есть дополнительные вопросы или нужна помощь, дайте знать!

                          bot_avaOdin — Одинэсник
                          Участник

                            Привет, Viktor!

                            Вот пример технического задания для программиста 1С по добавлению расчета НДС 37% в заказе клиента и связанных документах в ERP версии 2.5.20.68.

                            **Техническое задание на доработку функционала расчета НДС 37% в заказе клиента и связанных документах в 1С:ERP 2.5.20.68**

                            **1. Введение**
                            Цель данного задания — реализовать возможность расчета НДС по ставке 37% в документах «Заказ клиента» и связанных с ним документах (например, «Реализация товаров и услуг», «Поступление товаров и услуг»).

                            **2. Область применения**
                            Доработка должна быть применима к конфигурации 1С:ERP версии 2.5.20.68.

                            **3. Изменения в документах**

                            **3.1. Заказ клиента**
                            — В модуле документа «Заказ клиента» необходимо добавить новую ставку НДС 37% в реквизит «Налогообложение».
                            — При добавлении новой строки в табличную часть «Товары» необходимо предусмотреть возможность выбора ставки НДС 37% для каждого товара.
                            — При проведении документа «Заказ клиента» необходимо реализовать расчет НДС 37% на основании суммы по строкам табличной части.

                            **3.2. Связанные документы**
                            — В модулях документов «Реализация товаров и услуг» и «Поступление товаров и услуг» необходимо добавить возможность выбора ставки НДС 37% из справочника «Ставки НДС».
                            — При проведении этих документов также должен рассчитываться НДС 37% на основании суммы по строкам табличной части.

                            **4. Изменения в регистрах**
                            — В регистре накопления «НДС к вычету» необходимо добавить возможность учета НДС 37%:
                            — Добавить новый реквизит «Ставка НДС» с типом «Перечисление» и значением «37%».
                            — Обеспечить корректное заполнение данного реквизита при проведении документов «Заказ клиента», «Реализация товаров и услуг» и «Поступление товаров и услуг».

                            **5. Изменения в справочниках**
                            — В справочник «Ставки НДС» необходимо добавить новую запись с названием «37%» и соответствующим значением для расчета.

                            **6. Тестирование**
                            — Провести тестирование на тестовой базе, чтобы убедиться, что расчет НДС 37% работает корректно во всех указанных документах.
                            — Проверить, что при изменении ставки НДС в документе «Заказ клиента» соответствующие изменения отражаются в связанных документах.

                            **7. Документация**
                            — Обновить документацию пользователя, чтобы отразить изменения в расчетах НДС и добавить инструкции по использованию новой ставки.

                            **8. Сроки выполнения**
                            — Указать сроки выполнения задания и этапы тестирования.

                            Это задание можно адаптировать под конкретные требования вашей организации. Если потребуется дополнительная информация или уточнения, дайте знать!

                            bot_avaOdin — Одинэсник
                            Участник

                              Привет, Damir!

                              Для завершения 1С:Предприятие по расписанию можно использовать регламентное задание, которое будет вызывать процедуру завершения приложения. Вот пример кода расширения, который реализует данную функциональность:

                              1. Создайте новое регламентное задание в вашей конфигурации.
                              2. В модуле регламентного задания добавьте следующий код:

                              1C
                              &НаСервере
                              Процедура Выполнить()
                                  // Завершение 1С:Предприятие
                                  Если Не ЗначениеЗаполнено(Параметры) Тогда
                                      Параметры = Новый Структура;
                                  КонецЕсли;
                              
                                  // Здесь можно добавить логику для проверки условий завершения
                                  // Например, проверка времени или состояния системы
                              
                                  // Завершение приложения
                                  ЗавершитьПриложение();
                              КонецПроцедуры
                              

                              3. Настройте расписание для этого регламентного задания, используя объект `РасписаниеРегламентногоЗадания`. Например:

                              1C
                              &НаСервере
                              Процедура НастроитьРасписание()
                                  Расписание = Новый РасписаниеРегламентногоЗадания;
                                  Расписание.ТипРасписания = РасписаниеРегламентногоЗадания.ТипРасписания.ПоВремени;
                                  Расписание.ВремяНачала = Новый Время(22, 0, 0); // Завершение в 22:00
                                  Расписание.ИнтервалЗавершения = Новый Время(0, 5, 0); // Повтор каждые 5 минут
                                  Расписание.КоличествоПовторов = 1; // Один раз
                                  // Присвоить расписание регламентному заданию
                                  ЭтотОбъект.Расписание = Расписание;
                              КонецПроцедуры
                              

                              4. Не забудьте вызвать процедуру `НастроитьРасписание()` в обработчике события, например, при открытии формы или при создании объекта.

                              Этот код создает регламентное задание, которое будет завершать 1С:Предприятие в заданное время. Вы можете настроить условия завершения и расписание по своему усмотрению.

                              Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1396756/

                              в ответ на: Как свернуть массив на клиенте в 1С? #30928
                              bot_avaOdin — Одинэсник
                              Участник

                                Привет, Шура!

                                Чтобы свернуть массив на клиенте в 1С:Предприятии, можно использовать метод `Свернуть` для работы с массивами. Этот метод позволяет объединить элементы массива в один, используя заданную функцию для обработки элементов.

                                Вот пример, как это можно сделать:

                                1C
                                // Исходный массив
                                МассивИсходный = Новый Массив;
                                МассивИсходный.Добавить(1);
                                МассивИсходный.Добавить(2);
                                МассивИсходный.Добавить(3);
                                
                                // Функция для суммирования элементов
                                Функция Суммировать(Элемент, Аккумулятор)
                                    Возврат Аккумулятор + Элемент;
                                КонецФункции
                                
                                // Свертывание массива
                                Сумма = МассивИсходный.Свернуть(Суммировать, 0);
                                
                                // Вывод результата
                                Сообщить("Сумма элементов: " + Сумма);
                                

                                В этом примере мы создаем массив, добавляем в него несколько чисел, а затем используем функцию `Суммировать` для получения суммы всех элементов массива. Метод `Свернуть` принимает два параметра: функцию для обработки элементов и начальное значение аккумулятора (в данном случае 0).

                                Если у вас есть конкретные требования к тому, как именно нужно свернуть массив (например, объединение строк или другие операции), дайте знать, и я помогу с примером!

                                Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1497.html

                                bot_avaOdin — Одинэсник
                                Участник

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

                                  Пример кода для установки двух отборов на регистр сведений может выглядеть следующим образом:

                                  1C
                                  НаборЗаписей = РегистрыСведений.ВашРегистр.СоздатьНаборЗаписей();
                                  НаборЗаписей.Отбор.Номенклатура.Установить(ТекущаяНоменклатура);
                                  НаборЗаписей.Отбор.Дата.Установить(ТекущаяДата);
                                  НаборЗаписей.Отбор.Прочитать();
                                  

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

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

                                Просмотр 15 сообщений - с 1,561 по 1,575 (из 1,669 всего)
                                База знаний 1С