Формат файла PEG — описание, как открыть?
Файл формата PEG открывается специальными программами. Чтобы открыть данный формат, скачайте одну из предложенных программ.
Чем открыть файл в формате PEG
Тип файла: Peggle Replay File Разработчик: PopCap Games Категория: Файлы игр
Cохраненный повтор, создаваемый Peggle2D-игрой от PopCap Games. Хранит видео сыгранной игры, которое можно просматривать в программе Peggle. Им можно делиться с другими игроками.
Файлы PEG по умолчанию сохраняются в папке Program Files/PopCapGames/Peggle Deluxe/userdata/replays.
Примечание: Peggle Nights сохраняет повторы с расширением .PEGN.
Чем открыть файл в формате PEG (Peggle Replay File)
Источник: www.azfiles.ru
Расширение файла PEG
У нас есть два существующие программные обеспечения, связанные с файлами PEG (как правило это программное обеспечение от PopCap Games, известное как Peggle), и их можно отнести к категории основных типов файлов два. Традиционно эти файлы имеют формат Peggle Replay File . Расширение файла PEG указано преимущественно в категории Game Files.
Коэффициент P/E | Инвестиции в акции
Файлы PEG были обнаружены на платформах Windows, Mac и iOS. Они подходят для настольных ПК (и мобильных устройств). Рейтинг популярности данных файлов составляет «Низкий», что означает, что они не очень распространены.
Если вы хотите узнать больше о файлах PEG и программном обеспечении, с помощью которых они открываются, см. с дополнительноуюй подробную информацию далее. Кроме того, вы также можете узнать, как выполнить простое устранение неполадок при возникновении проблем при открытии файлов PEG .
Источник: www.solvusoft.com
PEG парсеры
Несколько лет назад меня кто-то спросил имеет ли смысл превести Python на PEG-парсер (или на грамматику PEG; я не помню точно кто и когда это было). Тогда я немного посмотрел на него, но так и не пришёл к какому-либо выводу, а потому и отбросил эту тему. Недавно я узнал больше о PEG (Parsing Expression Grammars, грамматике по парсингу выражений), и теперь я думаю, что это интересная альтернатива самописному генератору парсеров, который был разработан 30 лет назад, когда только начинал работать над Python. Я назвал его «pgen», и это был, наверно, первым фрагментом кода, который я написал для Python.
Содержание серии статей о PEG-парсере в Python
- PEG парсеры
- Реализация PEG парсера
- Генерация PEG парсера
- Визуализация работы PEG парсера
- Леворекурсивные PEG грамматики
- Добавление экшенов в грамматику PEG
- Мета-грамматика для PEG парсера
- Реализация остальных возможностей PEG
- PEG на Core Developer Sprint
Причина, по которой я сейчас заинтересован в парсере PEG, заключается в том, что меня несколько раздражают ограничения pgen. Он построен на собственной реализации LL(1), которая имеет ряд допущений. Например, мне не нравились грамматические правила, которые могли бы генерировать пустые строки, поэтому я запретил их. И тем самым упростил алгоритм для создания таблиц синтаксического анализа. Я также изобрёл свою собственную EBNF-подобную грамматическую нотацию, которая мне до сих пор очень нравится.
Смотрим ТВ на компе. Программа RusTV Player 3.1
Вот некоторые проблемы с pgen, которые меня раздражают. «1» в названии LL(1) подразумевает, что он анализирует только следующий токен, и это ограничивает нашу возможность создавать хорошие грамматические правила. Например, оператор Python может быть выражением или присваиванием (или чем-то другим, но все они начинаются с выделенного ключевого слова, например, if или def ). Хотелось бы описывать синтаксис с использованием нотации pgen. Обратите внимание, что это лишь упрощённый пример, представляющий собой подмножество Python, как это обычно делается при описании языкового дизайна. Это будет игрушечная грамматика, которая пригодится для дальнейшей демонстрации.
statement: assignment | expr | if_statement expr: expr ‘+’ term | expr ‘-‘ term | term term: term ‘*’ atom | term ‘/’ atom | atom atom: NAME | NUMBER | ‘(‘ expr ‘)’ assignment: target ‘=’ expr target: NAME if_statement: ‘if’ expr ‘:’ statement
Несколько слов о нотации: NAME и NUMBER являются токенами и предопределены вне грамматики. Строки в кавычках типа ‘+’ или ‘if’ также являются токенами. (Давайте отложим разговор о них на следующий раз) Правила грамматики начинаются с имени правила, за которым следует : , а далее одна или несколько альтернатив, разделенных | .
Проблема в том, что если вы опишете грамматику таким образом, то pgen не будет работать. Всё из-за того, что некоторые правила ( expr и term ) являются леворекурсивными, а он недостаточно умён, чтобы правильно обрабатывать такие ситуации. Обычно это решается переписыванием только этих правил, оставляя другие правила без изменений. Например:
expr: term (‘+’ term | ‘-‘ term)* term: atom (‘*’ atom | ‘/’ atom)*
Это раскрывает несколько возможностей EBNF в pgen: вы можете вкладывать альтернативы в круглые скобки и создавать повторения, помещая * после элемента. Так что правило для выражения expr здесь означает «это терм, за которым следует ноль или более повторений последовательности «. Эта грамматика принимает тот же язык, что и первая версия, но она опять-таки не отражает намерения дизайна языка. В частности, она не показывает, что операторы привязаны слева, а это важно, когда вы пытаетесь генерировать код.
Но есть ещё одна досадная проблема в этом примере (да и в Python тоже). Из-за разбора только одного токена анализатор не может определить, что именно он просматривает — начало выражения или присваивания. В самом начале обработки оператора синтаксический анализатор должен решить по одному лишь первому токену, какую альтернативу он разбирает. (Почему? Так работает реализация синтаксического анализа в pgen) Допустим, наша программа такова:
answer = 42
Эта программа представляется тремя токенами: NAME (со значением answer ), = и NUMBER (со значением 42 ). Единственное, о чём мы знаем в самом начале разбора — это первый токен NAME . Правило, которое мы пытаемся разобрать на данном этапе, это statement (начальный символ грамматики). Для него определены 3 альтернативы: expr , assignment и if_statement . Мы можем сразу исключить if_statement , потому что предыдущий токен не if . Но и expr , и assignment могут начинаться с токена NAME , и из-за этого pgen отклоняет нашу грамматику как неоднозначную.
Это не совсем правильно, так как технически грамматика сама по себе таковой не является; я не могу подобрать более точной формулировки, так что давайте остановимся на этой. И как pgen решает это? Он вычисляет нечто, называемое FIRST-набором для каждого правила грамматики, и если они пересекаются, то лишь тогда выбрасывает исключение.
Так разве мы не можем решить эту проблему, предоставив парсеру больший буфер просмотра? Для нашего примера достаточно второго токена предпросмотра, поскольку в этой грамматике вторым токеном присваивания должен быть = . Но в более реалистичном языке, таком как Python, вам может понадобиться неограниченный буфер, поскольку содержимое слева от токена = может быть произвольно сложным, например:
table[index + 1].name.first = ‘Steven’
В этом случае придётся разобрать уже десять токенов, прежде чем мы встретим = . Но уверяю, могут быть и более длинные выражения. Чтобы решить эту проблему в pgen, мы изменили грамматический анализатор так, чтобы он принимал и некоторые некорректные выражения, добавив дополнительную проверку в последующем проходе. Она сгенерирует ошибку SyntaxError, если не сможет сопоставить левую и правую часть. Для нашего игрушечного языка это сводится к написанию следующего:
statement: assignment_or_expr | if_statement assignment_or_expr: expr [‘=’ expr]
Квадратные скобки указывают на необязательную часть. И затем на следующем проходе компилятора (скажем, при генерации байт-кода) мы проверяем, есть ли = или нет, и, если есть, мы проверяем, что левая часть соответствует синтаксису target .
Существует аналогичная проблема и для аргументов вызовов функций. Мы хотели бы написать что-то вроде этого (опять же, в упрощённой версии синтаксиса Python):
call: atom ‘(‘ arguments ‘)’ arguments: arg (‘,’ arg) * arg: posarg | kwarg posarg: expr kwarg: NAME ‘=’ expr
Но алгоритм разбора, который бы учитывал лишь следующий токен, не может сказать парсеру, является ли NAME в начале аргументов началом posarg (поскольку expr может начинаться с NAME ) или началом kwarg . Опять же, текущий анализатор Python решает эту проблему путем определения:
arg: expr [‘=’ expr]
и затем доуточняет альтернативу в последующем проходе компилятора. (Мы даже немного ошиблись и разбирали foo((a) = 1) также, как и foo(a = 1) . Это исправлено лишь в Python 3.8)
Итак, как PEG-парсер решает эти проблемы? Используя бесконечный резервный буфер! Типичная его реализация использует так называемый packrat-парсер, который не только загружает всю программу в память перед её синтаксическим анализом, но и позволяет откатывать анализатор на произвольное количество токенов назад. Хотя термин PEG в первую очередь относится к грамматической нотации, синтаксические анализаторы, сгенерированные из грамматик PEG, обычно представляют собой синтаксические анализаторы с рекурсивным спуском и неограниченным возвратом. packrat-парсер делает эго эффективным, запоминая правила, уже разобранные для определённых позиций.
Это упрощает алгоритм, но, конечно, есть цена: память. Тридцать лет назад у меня была веская причина использовать LL(1): память была дорогой. Он (как и другие технологии, такие как LALR(1), ставшие известными благодаря YACC) используют конечный автомат и стек для эффективного построения дерева разбора.
К счастью, компьютеры, на которых работает CPython, имеют намного больше памяти, чем 30 лет назад, и хранение всего файла в памяти больше не является проблемой. Например, самый большой не тестовый файл в stdlib, который я смог найти, это _pydecimal.py , который занимает около 223kb. В мире гигабайтов это по сути ничего, что и заставило меня по-другому взглянуть на синтаксические анализаторы.
Но есть ещё одна вещь в текущем парсере CPython, которая меня беспокоит. Компиляторы являются сложными вещами, и реализация для CPython не является исключением. Хотя результат работы парсера pgen и является деревом синтаксического анализа, однако оно непосредственно не используется в качестве входных данных для генератора байт-кода: сначала оно преобразуется в абстрактное синтаксическое дерево (AST), а лишь затем этот AST компилируется в байт-код. (На самом деле там ещё сложнее, но пока не будем вдаваться в детали)
Почему бы сразу не компилировать из дерева разбора? Именно так оно и было, но около 15 лет назад мы обнаружили, что компилятор переусложнён. Так что мы выделили отдельно AST и фазу трансформации AST из дерева разбора. По мере развития Python, AST оставался более стабильным, чем парсинг, что уменьшало вероятность ошибок в компиляторе.
С AST также легче работать сторонним библиотекам, которые хотят проверять код Python. Его можно получить с помощью популярного модуля ast . Он также позволяет создавать узлы с нуля и изменять существующие, а также компилировать части в байт-код. Последнее позволило создать целую индустрию языковых расширений для Python. (Дерево разбора также доступно пользователям Python через модуль синтаксического анализа, но работать с ним гораздо сложнее; поэтому оно не так популярно)
Сейчас же я хочу объединить эти вещи и посмотреть, сможем ли мы создать новый парсер для CPython, который использует PEG и packrat для создания AST непосредственно во время синтаксического анализа. Таким образом получится опустить генерацию промежуточного дерева синтаксического анализа, что может сэкономить нам память, даже несмотря на использование бесконечного буфера для токенов. Я ещё в процессе реализации, но у меня уже есть прототип, который может скомпилировать подмножество Python в AST примерно с той же скоростью, что и текущий синтаксический анализатор CPython. Однако, он использует больше памяти, и мне кажется, что расширение подмножества на полный язык замедлит парсер PEG. Но пока я и не думал о каких-либо оптимизациях, так что продолжу работу.
Последнее преимущество перехода на PEG заключается в том, что он обеспечивает большую гибкость для дальнейшей эволюции языка. В прошлом было сказано, что ограничения LL(1) в pgen помогали грамматике Python оставаться простой. Это вполне может быть так, но у нас есть множество других процессов, чтобы предотвратить неконтролируемый рост языка (в основном процесс PEP, которому помогают очень строгие требования обратной совместимости и новая структура управления). Так что я не беспокоюсь за это.
Мне бы хотелось ещё много чего рассказать о PEG и моей реализации, но это будет уже в следующих постах после того, как я почищу код.
Лицензия на эту статью и приведенный код: CC BY-NC-SA 4.0
Источник: habr.com
Расширение файла PEG
PEG суффикс имени файла в основном используется для Peggle Replay Format файлов. Спецификация Peggle Replay Format была создана PopCap Games. Формат файла PEG совместим с программным обеспечением, которое может быть установлено на системной платформе Mac OS, Windows. PEG формат файла, наряду с #NUMEXTENSIONS # другими форматами файлов, относится к категории Файлы игр.
Самая популярная программа для обработки PEG файлов — Peggle, но пользователи могут выбирать из 1 различных программ, которые поддерживают этот формат файлов. Программное обеспечение Peggle было разработано PopCap Games, Inc., и на его официальном веб-сайте вы можете найти дополнительную информацию о файлах PEG или программном обеспечении Peggle.
Программы, которые поддерживают PEG расширение файла
Ниже вы найдете указатель программ, которые можно использовать для открытия файлов PEG, разделенных на категории 2 в соответствии с поддерживаемой системной платформой. Файлы с расширением PEG, как и любые другие форматы файлов, можно найти в любой операционной системе. Указанные файлы могут быть переданы на другие устройства, будь то мобильные или стационарные, но не все системы могут быть способны правильно обрабатывать такие файлы.
Программы, обслуживающие файл PEG
Windows
MAC OS
Как открыть файл PEG?
Отсутствие возможности открывать файлы с расширением PEG может иметь различное происхождение. К счастью, наиболее распространенные проблемы с файлами PEG могут быть решены без глубоких знаний в области ИТ, а главное, за считанные минуты. Ниже приведен список рекомендаций, которые помогут вам выявить и решить проблемы, связанные с файлами.
Шаг 1. Скачайте и установите Peggle
Проблемы с открытием и работой с файлами PEG, скорее всего, связаны с отсутствием надлежащего программного обеспечения, совместимого с файлами PEG на вашем компьютере. Решение простое, просто скачайте и установите Peggle. В верхней части страницы находится список всех программ, сгруппированных по поддерживаемым операционным системам. Если вы хотите загрузить установщик Peggle наиболее безопасным способом, мы рекомендуем вам посетить сайт PopCap Games, Inc. и загрузить его из официальных репозиториев.
Шаг 2. Убедитесь, что у вас установлена последняя версия Peggle
Вы по-прежнему не можете получить доступ к файлам PEG, хотя Peggle установлен в вашей системе? Убедитесь, что программное обеспечение обновлено. Может также случиться, что создатели программного обеспечения, обновляя свои приложения, добавляют совместимость с другими, более новыми форматами файлов. Если у вас установлена более старая версия Peggle, она может не поддерживать формат PEG. Последняя версия Peggle должна поддерживать все форматы файлов, которые совместимы со старыми версиями программного обеспечения.
Шаг 3. Свяжите файлы Peggle Replay Format с Peggle
Если у вас установлена последняя версия Peggle и проблема сохраняется, выберите ее в качестве программы по умолчанию, которая будет использоваться для управления PEG на вашем устройстве. Процесс связывания форматов файлов с приложением по умолчанию может отличаться в деталях в зависимости от платформы, но основная процедура очень похожа.
Процедура изменения программы по умолчанию в Windows
- Выберите пункт Открыть с помощью в меню «Файл», к которому можно щелкнуть правой кнопкой мыши файл PEG.
- Нажмите Выбрать другое приложение и затем выберите опцию Еще приложения
- Наконец, выберите Найти другое приложение на этом. , укажите папку, в которой установлен Peggle, установите флажок Всегда использовать это приложение для открытия PEG файлы свой выбор, нажав кнопку ОК
Процедура изменения программы по умолчанию в Mac OS
- Нажав правую кнопку мыши на выбранном файле PEG, откройте меню файла и выберите Информация.
- Перейдите к разделу Открыть с помощью . Если он закрыт, щелкните заголовок, чтобы получить доступ к доступным параметрам.
- Выберите подходящее программное обеспечение и сохраните настройки, нажав Изменить все
- Наконец, это изменение будет применено ко всем файлам с расширением PEG должно появиться сообщение. Нажмите кнопку Вперед , чтобы подтвердить свой выбор.
Шаг 4. Проверьте PEG на наличие ошибок
Если проблема по-прежнему возникает после выполнения шагов 1-3, проверьте, является ли файл PEG действительным. Вероятно, файл поврежден и, следовательно, недоступен.
1. Проверьте PEG файл на наличие вирусов или вредоносных программ.
Если PEG действительно заражен, возможно, вредоносное ПО блокирует его открытие. Немедленно просканируйте файл с помощью антивирусного инструмента или просмотрите всю систему, чтобы убедиться, что вся система безопасна. Если файл PEG действительно заражен, следуйте инструкциям ниже.
2. Убедитесь, что структура файла PEG не повреждена
Вы получили PEG файл от другого человека? Попросите его / ее отправить еще раз. Возможно, файл был ошибочно скопирован, а данные потеряли целостность, что исключает доступ к файлу. Это может произойти, если процесс загрузки файла с расширением PEG был прерван и данные файла повреждены. Загрузите файл снова из того же источника.
3. Убедитесь, что у вас есть соответствующие права доступа
Иногда для доступа к файлам пользователю необходимы права администратора. Войдите в систему, используя учетную запись администратора, и посмотрите, решит ли это проблему.
4. Убедитесь, что в системе достаточно ресурсов для запуска Peggle
Если в системе недостаточно ресурсов для открытия файлов PEG, попробуйте закрыть все запущенные в данный момент приложения и повторите попытку.
5. Проверьте, есть ли у вас последние обновления операционной системы и драйверов
Последние версии программ и драйверов могут помочь вам решить проблемы с файлами Peggle Replay Format и обеспечить безопасность вашего устройства и операционной системы. Возможно, что одно из доступных обновлений системы или драйверов может решить проблемы с файлами PEG, влияющими на более старые версии данного программного обеспечения.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла PEG мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле PEG.
Источник: www.file-extension.info
1С:Зарплата и Управление Персоналом 8
Внимание! Если вы используете «Зарплату и Управление Персоналом» редакции ниже 3.1, рассмотрите вариант перехода на актуальную версию 1С:ЗУП 3.1 на платформе 1С:Предприятие 8.3.
Программный продукт «1С:Зарплата и Управление Персоналом 8.3» (1С ЗУП 8.3) предназначен для комплексной автоматизации расчета зарплаты, кадрового учета и управления на предприятиях. Программа применяется в кадровых службах, бухгалтерии и подразделениях, занимающихся организацией работы персонала. 1С:ЗУП 8 разработана с учетом требований законодательства и международного практического опыта управления персоналом.
Программа «1С:Зарплата и Управление Персоналом 8» (1С ЗУП 8) — эффективный инструмент для проведения кадровой политики предприятий, обладающий следующими возможностями:
- планирование потребностей в персонале;
- обеспечение предприятия квалифицированными кадрами;
- расчет заработной платы персонала;
- управление компетенциями и аттестация работников;
- управление финансовой мотивацией персонала;
- эффективное планирование и учет занятости персонала;
- учет и анализ кадрового состава;
- исчисление регламентированных законодательством налогов и взносов с фонда оплаты труда;
- отражение начисленной зарплаты и налогов в затратах предприятия;
- управление денежными расчетами с персоналом, включая депонирование;
- автоматизация кадрового делопроизводства.
Поддержка принятия управленческих решений
С помощью «1С:Зарплата и Управление Персоналом 8» можно оценить:
- степень укомплектованности штатов компании в разрезе должностей и подразделений компании
- средства, необходимые для оплаты труда персонала на любой период времени
- «качество» персонала, проанализировать уровень и причины текучести кадров.
В программу также включена возможность планировать использования рабочего времени работников, в частности планирование встреч (например, совещаний) и участие работников компании в мероприятиях (как внутренних мероприятиях компании, так и во внешних). Кроме того, для успешного проведения встреч, совещаний и других внутренних мероприятий компании можно планировать использование помещений компании, в которых эти мероприятия проводятся.
Отчеты
«1С:Зарплата и Управление Персоналом 8» позволяет формировать разнообразные отчеты, такие как:
- списки кандидатов на работу, работников компании и сотрудников составляющих ее организаций;
- диаграммы, визуализирующие графики отпусков и фактическое использование отпусков работниками компании и сотрудниками составляющих ее организаций;
- диаграммы планируемой занятости работников компании;
- по планируемым фондам зарплаты работников компании;
- по плановому и фактическому состоянию штатного расписания компании и составляющих ее организаций, в том числе «штатную расстановку»;
- а также отчеты по графикам отпусков и штатному расписанию организаций по унифицированным формам Т-7 и Т-3.
Пользователь может самостоятельно задавать (настраивать) параметры группировки и критерии отбора данных в отчетах в соответствии со спецификой решаемых задач. Такие индивидуальные настройки (фактически — созданные пользователем специализированные отчеты) могут быть сохранены для дальнейшего использования.
Программный продукт «1С:Зарплата и Управление Персоналом 8.3» (1С:ЗУП 8.3) выпускается в следующих версиях:
- 1С:Зарплата и Управление персоналом 8 Базовая версия
- 1C:Зарплата и Управление персоналом 8 ПРОФ
- 1C:Зарплата и Управление персоналом 8 КОРП (ознакомительная версия)
С целью ведения бухгалтерского учета обеспечена совместная работа программы «1С:Зарплата и Управление Персоналом 8» (1С:ЗУП 8) с программой «1С:Бухгалтерия 8».
Лицензирование
Внимание! Для масштабирования и расширения количества рабочих мест Вы можете приобрести дополнительные лицензии.
Публикации и статьи
16 декабря 2022
18 ноября 2022
17 ноября 2022
10 ноября 2022
19 сентября 2022
19 сентября 2022
25 августа 2022
Состав продукта
Программный продукт «1С:Зарплата и управление персоналом 8 ПРОФ» включает:
- платформу «1С:Предприятие 8.3»;
- прикладное решение (конфигурацию) «Зарплата и управление персоналом ПРОФ»;
- комплект документации;
- регистрационную карточку и лицензионное соглашение на использование программного продукта на одном рабочем месте;
- конверт с пинкодами программной защиты;
- текущий выпуск информационно-технологического сопровождения (DVD 1С:ИТС ПРОФ),
- льготное информационно-технологическое сопровождение 1С:ИТС ПРОФ на выбор пользователя:
- бесплатно по купону в течении 3-х месяцев
- платный договор 1С:ИТС ПРОФ на 12 месяцев по цене 8 месяцев (четыре месяца бесплатно по купону)
Данный программный продукт может быть заказан с аппаратным ключом защиты (USB).
Особенности лицензирования
Программный продукт «1С Зарплата и Управление Персоналом 8» обеспечивает работу прикладного решения на одном рабочем месте в один момент времени.
Для работы в многопользовательском режиме необходимо наличие у пользователей клиентских лицензий «1С:Предприятие 8».
Для работы в клиент-серверном режиме необходимо наличие у пользователей лицензий на сервер.
Список лицензий
1С:Предприятие 8 ПРОФ. Клиентская лицензия на 1 рабочее место | 6 300 руб. | Купить 1С:Предприятие 8 ПРОФ. Клиентская лицензия на 1 рабочее место |
1С:Предприятие 8 ПРОФ. Клиентская лицензия на 5 рабочих мест | 21 600 руб. | Купить 1С:Предприятие 8 ПРОФ. Клиентская лицензия на 5 рабочих мест |
1С:Предприятие 8 ПРОФ. Клиентская лицензия на 10 рабочих мест | 41 400 руб. | Купить 1С:Предприятие 8 ПРОФ. Клиентская лицензия на 10 рабочих мест |
1С:Предприятие 8 ПРОФ. Клиентская лицензия на 20 рабочих мест | 78 000 руб. | Купить 1С:Предприятие 8 ПРОФ. Клиентская лицензия на 20 рабочих мест |
1С:Предприятие 8 ПРОФ. Клиентская лицензия на 50 рабочих мест | 187 200 руб. | Купить 1С:Предприятие 8 ПРОФ. Клиентская лицензия на 50 рабочих мест |
1С:Предприятие 8 ПРОФ. Клиентская лицензия на 100 рабочих мест | 360 000 руб. | Купить 1С:Предприятие 8 ПРОФ. Клиентская лицензия на 100 рабочих мест |
1С:Предприятие 8 ПРОФ. Клиентская лицензия на 300 рабочих мест | 1 068 000 руб. | Купить 1С:Предприятие 8 ПРОФ. Клиентская лицензия на 300 рабочих мест |
1С:Предприятие 8 ПРОФ. Клиентская лицензия на 500 рабочих мест | 1 776 000 руб. | Купить 1С:Предприятие 8 ПРОФ. Клиентская лицензия на 500 рабочих мест |
Скачать
Источник: rarus.ru