22 мар. 2022 г.

Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS

 Хост система - Windows 11, установлен Hyper-V. 

Гостевая система - Windows 11. 

Задача установить WSL либо Docker в гостевую Windows 11.

При попытку заупстить\установить в гостевой Windows 11 WSL либо Docker получаю

Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS

Смысл таков, для гостевой Windows 11 отключена виртуализация.

Для включения виртуализации завершаем гостевую Windows 11.

На хост системе с правами администратора в Powershell выполняю команду

Set-VMProcessor -VMName “w11” -ExposeVirtualizationExtensions $true

где "w11" это название гостевой Windows 11.


Без перезагрузки хост системы запускаю гостевую Windows 11, жду некоторое время для выполнения "конвертации" гостевой системы (при запуске будет долгий старт, в Hyper-V Manager можно увидеть процентое выполнение "конвертации").

Теперь Docker успешно запустился.

14 мар. 2022 г.

Округление в меньшую сторону \ Отсечь лишние числа 1С

 Взято с интернета

Цел(МоеЧисло * 100) / 100

Из кирилицы в латынь 1С

Процедура ОбработатьНомерДокументаИзХМЛСУчетомПрефиксаНаКирилице(_Строка)
НомерДокумента = КирВЛат(_Строка)
КонецПроцедуры

Функция КирВЛат(Слово)Экспорт
Латиница= "";
СоотвБукв = новый СписокЗначений;
//Кириллица
СоотвБукв.Добавить("й","j");
СоотвБукв.Добавить("ц","c");
СоотвБукв.Добавить("у","u");
СоотвБукв.Добавить("к","k");
СоотвБукв.Добавить("е","e");
СоотвБукв.Добавить("н","n");
СоотвБукв.Добавить("г","g");
СоотвБукв.Добавить("ш","sh");
СоотвБукв.Добавить("щ","sch");
СоотвБукв.Добавить("з","z");
СоотвБукв.Добавить("х","h");
СоотвБукв.Добавить("ъ","#");
СоотвБукв.Добавить("ф","f");
СоотвБукв.Добавить("ы","y");
СоотвБукв.Добавить("в","v");
СоотвБукв.Добавить("а","a");
СоотвБукв.Добавить("п","p");
СоотвБукв.Добавить("р","r");
СоотвБукв.Добавить("о","o");
СоотвБукв.Добавить("л","l");
СоотвБукв.Добавить("д","d");
СоотвБукв.Добавить("ж","zh");
СоотвБукв.Добавить("э""je");
СоотвБукв.Добавить("я","ya");
СоотвБукв.Добавить("ч","ch");
СоотвБукв.Добавить("с","s");
СоотвБукв.Добавить("м","m");
СоотвБукв.Добавить("и","i");
СоотвБукв.Добавить("т","t");
СоотвБукв.Добавить("ь","'");
СоотвБукв.Добавить("б","b");
СоотвБукв.Добавить("ю","ju");
СоотвБукв.Добавить("ё","jo");
//Латиница
СоотвБукв.Добавить("i","i");
СоотвБукв.Добавить("q","q");
СоотвБукв.Добавить("w","w");
СоотвБукв.Добавить("e","e");
СоотвБукв.Добавить("r","r");
СоотвБукв.Добавить("t","t");
СоотвБукв.Добавить("y","y");
СоотвБукв.Добавить("u","u");
СоотвБукв.Добавить("i","i");
СоотвБукв.Добавить("o","o");
СоотвБукв.Добавить("p","p");
СоотвБукв.Добавить("","");
СоотвБукв.Добавить("a","a");
СоотвБукв.Добавить("s","s");
СоотвБукв.Добавить("d","d");
СоотвБукв.Добавить("э","e");
СоотвБукв.Добавить("ы","i");
СоотвБукв.Добавить("f","f");
СоотвБукв.Добавить("g","g");
СоотвБукв.Добавить("h","h");
СоотвБукв.Добавить("j","j");
СоотвБукв.Добавить("k","k");
СоотвБукв.Добавить("l","l");
СоотвБукв.Добавить("z","z");
СоотвБукв.Добавить("х","x");
СоотвБукв.Добавить("c","c");
СоотвБукв.Добавить("v","v");
СоотвБукв.Добавить("b","b");
СоотвБукв.Добавить("n","n");
СоотвБукв.Добавить("m","m");
//Прочее
СоотвБукв.Добавить(" "," ");
СоотвБукв.Добавить("""","""");
СоотвБукв.Добавить("-","-");
СоотвБукв.Добавить(".",".");
СоотвБукв.Добавить(",",",");
СоотвБукв.Добавить("/","/");
СоотвБукв.Добавить("\","\");
СоотвБукв.Добавить("*","*");
СоотвБукв.Добавить("#","#");
СоотвБукв.Добавить("#","№");
СоотвБукв.Добавить("|","|");
СоотвБукв.Добавить("!","!");
СоотвБукв.Добавить("?","?");
СоотвБукв.Добавить("$","$");
СоотвБукв.Добавить("%","%");
СоотвБукв.Добавить("@","@");
СоотвБукв.Добавить("&","&");
СоотвБукв.Добавить("=","=");
СоотвБукв.Добавить("+","+");
СоотвБукв.Добавить("~","~");
СоотвБукв.Добавить("'","'");
СоотвБукв.Добавить("`","`");
СоотвБукв.Добавить(":",":");
СоотвБукв.Добавить(";",";");
СоотвБукв.Добавить("(","(");
СоотвБукв.Добавить(")",")");
СоотвБукв.Добавить("[","[");
СоотвБукв.Добавить("]","]");
СоотвБукв.Добавить("}","}");
СоотвБукв.Добавить("{","{");
//Цифры
СоотвБукв.Добавить("0","0");
СоотвБукв.Добавить("1","1");
СоотвБукв.Добавить("2","2");
СоотвБукв.Добавить("3","3");
СоотвБукв.Добавить("4","4");
СоотвБукв.Добавить("5","5");
СоотвБукв.Добавить("6","6");
СоотвБукв.Добавить("7","7");
СоотвБукв.Добавить("8","8");
СоотвБукв.Добавить("9","9");
Для а=1 по СтрДлина(Слово) Цикл
Латиница = Латиница + СоотвБукв.НайтиПоЗначению(НРЕГ(Сред(Слово,а,1)));
КонецЦикла;
Возврат ВРЕГ(Латиница)

КонецФункции 

Скопировать номенклатуру из папки источник в папку приемник

 Программный код выполняет копирование Номенклатуры из одной папки в другую с сохранением Иерархии папки источника в папке приемник.

При копировании для новой номенклатуры добавляется единица измерения и переноситься штрих код из номенклатуры источника в номенклатуру приемник.

//написано для "обычное приложение"

Процедура КнопкаВыполнитьНажатие(Кнопка)
Если Не ЗначениеЗаполнено(ПапкаИсточник) Тогда // ПапкаИсточник это реквизит формы
Сообщить("Папка источник должна быть заполнена");
Возврат
КонецЕсли;
Если Не ЗначениеЗаполнено(ПапкаПриемник) Тогда //ПапкаПриемник это реквизит формы
Сообщить("Папка приемник должна быть заполнена");
Возврат
КонецЕсли;
Запрос = Новый Запрос("ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В ИЕРАРХИИ(&Группа)
|УПОРЯДОЧИТЬ ПО
| Номенклатура.Ссылка ИЕРАРХИЯ"
);
Запрос.УстановитьПараметр("Группа", ПапкаИсточник);
//Вызываем рекурсивную процедуру, параметр "ПапкаПриемник" - это "получатель", куда будет скопирована ветка
Копировать(ПапкаПриемник,Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией));
КонецПроцедуры

Процедура Копировать(Предок,Выборка) //Рекурсивная процедура для обхода всего дерева
Если Не Предок.ЭтоГруппа Тогда //Если перетащили не на группу, то кидаем всё дерево в корень
Предок=Справочники.Номенклатура.ПустаяСсылка();
КонецЕсли;
Пока Выборка.Следующий() Цикл //Обходим все элементы и просто копируем всё подряд
//Поскольку выборка добывает нам ссылки для изменения с объекта его необходимо получить
ТекСпр = Выборка.Ссылка.ПолучитьОбъект();
элементСправочника = ТекСпр.Скопировать();
элементСправочника.Родитель=Предок;
//комментарий автора взятый из сети
//
// ** Если мы хотим запомнить откуда была скопирована номенклатура - нужно **
// ** предварительно добавить реквизит ОбразецНоменклатуры в справочник Номенклатура **
// ** типа "СправочникСсылка.Номенклатура" а затем раскомментировать следующую строку **
//элементСправочника.ОбразецНоменклатуры=ТекСпр.Ссылка;
// При желании здесь можно создавать подчинённые справочники вроде "единицы измерения"
// и сюда записывать все необходимые ссылки
Если Не элементСправочника.ЭтоГруппа Тогда
Если НЕ ЗначениеЗаполнено(элементСправочника.БазоваяЕдиницаИзмерения) Тогда
элементСправочника.БазоваяЕдиницаИзмерения = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяЕдиницаПоКлассификатору");
КонецЕсли;
КонецЕсли;
элементСправочника.Записать();
Если Не элементСправочника.ЭтоГруппа Тогда
ПроверитьЕдиницуХраненияОстатков(элементСправочника.Ссылка);
ЗаменитьВладельцаШКИсточникаНаПриемник(ТекСпр.Ссылка, элементСправочника.Ссылка)
КонецЕсли;
Сообщить("Успешно обработано объект "+ элементСправочника.Ссылка);
Если ТекСпр.ЭтоГруппа Тогда //Когда встречаем группу, то заходим внутрь и повторяем действия
Копировать(элементСправочника.Ссылка,Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией));
КонецЕсли;
КонецЦикла;
КонецПроцедуры

Процедура ЗаменитьВладельцаШКИсточникаНаПриемник(спрИсточник, спрПриемник)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Штрихкоды.Штрихкод,
| Штрихкоды.Владелец,
| Штрихкоды.ТипШтрихкода,
| Штрихкоды.ЕдиницаИзмерения,
| Штрихкоды.ХарактеристикаНоменклатуры,
| Штрихкоды.СерияНоменклатуры,
| Штрихкоды.Качество,
| Штрихкоды.ПредставлениеШтрихкода
|ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
| Штрихкоды.Владелец = &Владелец";
Запрос.УстановитьПараметр("Владелец", спрИсточник);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Попытка
НачатьТранзакцию();
//1. отвязываем ШК от Источника
нз = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
нз.Отбор.Штрихкод.Установить( ВыборкаДетальныеЗаписи.Штрихкод);
нз.Отбор.Владелец.Установить( ВыборкаДетальныеЗаписи.Владелец);
нз.Отбор.ТипШтрихкода.Установить( ВыборкаДетальныеЗаписи.ТипШтрихкода);
нз.Отбор.ЕдиницаИзмерения.Установить( ВыборкаДетальныеЗаписи.ЕдиницаИзмерения);
нз.Отбор.ХарактеристикаНоменклатуры.Установить( ВыборкаДетальныеЗаписи.ХарактеристикаНоменклатуры);
нз.Отбор.СерияНоменклатуры.Установить( ВыборкаДетальныеЗаписи.СерияНоменклатуры);
нз.Отбор.Качество.Установить( ВыборкаДетальныеЗаписи.Качество);
нз.Прочитать();
нз.Очистить();
нз.Записать();
//2. привязываем ШК Приемнику
мз = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
мз.Штрихкод = ВыборкаДетальныеЗаписи.Штрихкод;
мз.Владелец = спрПриемник;
мз.ТипШтрихкода = ВыборкаДетальныеЗаписи.ТипШтрихкода;
мз.ЕдиницаИзмерения = ВыборкаДетальныеЗаписи.ЕдиницаИзмерения;
мз.ХарактеристикаНоменклатуры = ВыборкаДетальныеЗаписи.ХарактеристикаНоменклатуры;
мз.СерияНоменклатуры = ВыборкаДетальныеЗаписи.СерияНоменклатуры;
мз.Качество = ВыборкаДетальныеЗаписи.Качество;
мз.ПредставлениеШтрихкода = ВыборкаДетальныеЗаписи.ПредставлениеШтрихкода;
мз.Записать();
ЗафиксироватьТранзакцию()
Исключение
ОтменитьТранзакцию();
Сообщить(ОписаниеОшибки())
КонецПопытки;
КонецЦикла;
КонецПроцедуры

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

Удалить последний символ с строке

 стр = Лев(стр, СтрДлина(стр)-1);

 

CopyPaste Copyright © 2017 - |- Шаблон создан O Pregador - |- Отредактирован myr4ik07