1C:
// это комментарий
powershell:
# это комментарий
1C:
Цена = 100;
powershell:
$price = 100
1C:
Процедура Тест()
Цена = 100;
КонецПроцедуры
powershell:
function test() {
$price = 100
}
1C:
Перем Количество;
Перем Сумма;
Процедура Тест()
Цена = 100;
Сумма = Цена * Количество;
КонецПроцедуры
Количество = 5;
Сумма = 0;
powershell:
$quantity = 5
$amount = 0
function test() {
$price = 100
$script:amount = $price * $quantity
}
1C:
Функция Сумма(Знач Цена, Знач Количество = 1)
Возврат Цена * Количество;
КонецФункции
powershell:
function amount($price, $quantity=1) {
return $price * $quantity
}
# альтернативный вариант: параметр price можно передавать "через зад" (через конвейер)
function amount([Parameter(ValueFromPipeline)]$price, $quantity=1) {
return $price * $quantity
}
1C:
Сумма = Сумма(10)
powershell:
$amount = amount 10
# альтернативный вариант: передача первого параметра "через зад"
$amount = 10 | amount
# альтернативный вариант: передача первого параметра "через зад" и второго по имени
$amount = 10 | amount -quantity 2
1C:
Имена = Новый Массив;
Имена.Добавить("Саша");
Имена.Добавить("Маша");
powershell:
$names = @()
$names += "Саша" # очень медленное добавление элемента
$names += "Маша"
# альтернативный вариант:
$names = @("Саша", "Маша")
# альтернативный вариант:
$names = "Саша", "Маша"
# альтернативный вариант:
[Collections.Generic.List[Object]]$names = @() # эффективный динамический массив
$names.Add("Саша")
$names.Add("Маша")
1C:
Для Каждого Имя Из Имена Цикл
Сообщить(Имя);
КонецЦикла;
powershell:
foreach ($name in $names) {
Write-Host $name
}
1C:
Если Имена.Найти("Катя") <> Неопределено Тогда
Сообщить("Катя присутствует!");
КонецЕсли;
powershell:
if ($names.Contains("Катя")) {
Write-Host "Катя присутствует!"
}
1C:
Индекс = Имена.Найти("Катя");
Если Индекс <> Неопределено Тогда
Сообщить(Индекс);
КонецЕсли;
powershell:
$index = $names.IndexOf("Катя")
if ($index -ne -1) {
Write-Host $index
}
1C:
Возраст = Новый Соответствие;
Возраст["Саша"] = 18;
Возраст["Маша"] = 19;
powershell:
$age = @{}
$age["Саша"] = 18
$age["Маша"] = 19
# альтернативный вариант:
$age = @{
"Саша" = 18;
"Маша" = 19;
}
# альтернативный вариант:
$age = @{
"Саша" = 18
"Маша" = 19
}
# альтернативный вариант:
$age = @{
Саша = 18
Маша = 19
}
1C:
Для Каждого Элемент Из Возраст Цикл
Сообщить(Элемент.Ключ + ": " + Строка(Элемент.Значение));
КонецЦикла;
powershell:
foreach ($key in $age.Keys) {
Write-Host ($x + ": " + $age[$key])
}
1C:
ВозрастКати = Возвраст["Катя"];
Если ВозрастКати <> Неопределено Тогда
Сообщить(ВозрастКати);
КонецЕсли;
powershell:
$kate_age = $age["Катя"]
if ($kate_age) {
Write-Host $kate_age
}
# альтернативный вариант
$kate_age = $age["Катя"]
if ($null -ne $kate_age) {
Write-Host $kate_age
}
1C:
Если Возраст["Катя"] <> Неопределено Тогда
Сообщить(Возраст["Катя"]);
КонецЕсли;
powershell:
if ($age.ContainsKey("Катя")) {
Write-Host $age["Катя"]
}
1C:
Для Индекс = 1 По 10 Цикл
Сообщить(Индекс);
КонецЦикла;
powershell:
for ($i = 1; $i -le 10; $i++) {
Write-Host $i
}
1C:
Индекс = 0;
Пока Индекс < 10 Цикл
Сообщить(Индекс);
Индекс = Индекс + 1;
КонецЦикла;
powershell:
$i = 0
while ($i -le 10) {
Write-Host $i
$i++
}
1C:
Сотрудник = Новый Структура("Имя, Возраст", "Катя", 19);
Сообщить(Сотрудник.Имя);
powershell:
$employee = @{
name = "Катя"
age = 19
}
Write-Host employee.name
# альтернативный вариант
$employee = @{}
$employee.name = "Катя"
$employee.age = 19
Write-Host $employee.name
1C:
Сотрудник.Вставить("Пол", "Мужской");
Сообщить(Сотрудник.Пол);
powershell:
$employee.gender = "male"
Write-Host $employee.gender
# альтернативный вариант
$employee["gender"] = "male"
Write-Host $employee.gender
1C:
Имя = "Катя";
Возраст = 19;
Сообщить(СтрШаблон("%1: %2", Имя, Возраст));
powershell:
$name = "Kate"
$age = 19
Write-Host "${name}: $age" # без скобок {} будет ошибка синтаксиса из-за знака `:`
1C:
Сообщить(СтрСоединить(Имена, Символы.ПС));
powershell:
Write-Host ($names -join "`n")
1C:
Сумма = Цена * ?(Количество > 0, Количество, 1);
powershell:
$amount = $price * $(if ($quantity -gt 0) { $quantity } else { 1 })
1C:
Если Икс = 0 Или Икс = Неопределено Тогда
Сообщить("пусто")
ИначеЕсли 0 < Икс И Икс < 10 Тогда
Сообщить("от 1 до 9")
Иначе
Сообщить("меньше 0 или больше 9")
КонецЕсли;
powershell:
if ($x -eq 0 -or $null -eq $x) {
Write-Host 'пусто'
} elseif (0 -lt $x -and $x -lt 10) {
Write-Host 'от 1 до 9'
} else {
Write-Host 'меньше 0 или больше 9'
}
1C:
ЧтениеТекста = Новый ЧтениеТекста;
ЧтениеТекста.Открыть("log.txt", "UTF-8");
Сообщить(ЧтениеТекста.Прочитать());
ЧтениеТекста.Закрыть();
powershell:
Write-Host (Get-Content log.txt -Encoding UTF8) # вызов функции в выражении нужно полностью заключать в скобки
# альтернативный вариант
write (Get-Content log.txt -Encoding UTF8) # write - это синоним для Write-Host
# альтернативный вариант
Get-Content log.txt -Encoding UTF8 | Write-Host # передача первого аргумента для Write-Host "через зад"
# альтернативный вариант
Get-Content log.txt -Encoding UTF8 # результат функций по умолчанию выводится в консоль
# альтернативный вариант
cat log.txt -Encoding UTF8 # cat - это синоним для Get-Content