17 октября 2017

1с выпадающий список на форме списка

Вы бы хотели редактировать данные справочника непосредственно на форме списка. И при этом один из реквизитов должен заполняться значениями из другого справочника в виде выпадающего списка. Например так:


Что ж, это очень легко делается!

Речь конечно же идет об обычных формах. 

1) Для начала давайте включим возможность редактирования данных непосредственно в списке. 

Как известно на палитре свойств справочника вы можете задать способ редактирования: из списка, из диалога или обоими способами. 

"в списке" - это то, что нам нужно . Если вы выбрали вариант "обоими способами", не забудьте поставить для табличного поля, отображающего список элементов флажок "Изменять способ редактирования".


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

2) Что касается выпадающего списка.

Для полей ввода есть свойство "быстрый выбор". Оно как раз и подразумевает выбор из выпадающего списка. Но обратите внимание, что это кое что другое нежели "РежимВыбораИзСписка", где вам нужно заранее определять свой список значений. Здесь список формируется на основе данных справочника, согласно типу заполняемого реквизита.

Открываете форму списка, выделяете нужное поле ввода


На палитре ставите соответствующую галочку


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


Теперь мы добились желаемого! Всем желаю успехов в нелегком деле построения удобных интерфейсов!

19 мая 2017

Сброс парля Windows 7

Предлагается быстрый способ, как создать пользователя с правами Администратора, если таковыми вы не обладаете.

1) При включении зажимаете F8, выбираете Восстановление системы, откроется окно параметров Восстановления системы.
 
2) Выбираете Командную строку. В ней пишите 
regedit.exe
3) Откроется редактор реестра. Выберите раздел HLM и в меню файл выберите Загрузить куст.

4) Указываем файл Windows\System32\Config\system. Дайте имя куста, например 555.
5) Открываем ветку реестра HLM\555\Setup. 
6) Там редактируем два параметра: 
  • CmdLine, вводим значение cmd.exe 
  • SetupType меняем значение 0 на 2
7) Презагружаемся. Откроется командная строка с параметрами системы.

8) Далее добавляем нового администатора
net user Имя Пароль /add
net localgroup Администраторы Имя /add
net localgroup Пользователи Имя /delete
На этом все, можно входить в систему!



HKEY_LOCAL_MACHINE\888\SetupИсточник: https://www.windxp.com.ru/win7/articles45.htm
HKEY_LOCAL_MACHINE\888\SetupИсточник: https://www.windxp.com.ru/win7/articles45.htm
HKEY_LOCAL_MACHINE\888\SetupИсточник: https://www.windxp.com.ru/win7/articles45.htm
.юHKEY_LOCAL_MACHINEИсточник: https://www.windxp.com.ru/win7/articles45.htm
HKEY_LOCAL_MACHINEИсточник: https://www.windxp.com.ru/win7/articles45.htm
Выделите раздел HKEY_LOCAL_MACHINE, как показано на рисунке ниже. Затем из меню Файл выберите пункт Загрузить кустИсточник: https://www.windxp.com.ru/win7/articles45.htm
Выделите раздел HKEY_LOCAL_MACHINE, как показано на рисунке ниже. Затем из меню Файл выберите пункт Загрузить кустИсточник: https://www.windxp.com.ru/win7/articles45.htm
 

13 апреля 2017

Полезные windows команды

Узнать производителя и модель материнской платы
>wmic baseboard get manufacturer
>wmic baseboard get product
Отобразить пользователей, вошедших  в систему и узнать, как долго они простаивают
>quser
Проверка и восстановление целостности системных файлов.
sfc /scannow 

07 марта 2017

Несколько RDP сессий к Windows xp, 7, 8,10

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

Исправляем это недоразумение.

Обязательно сохраним оригинальный файл termsrv.dll. Запустим командную строку от Администратора и выполним
copy c:\Windows\System32\termsrv.dll termsrv.dll_old
Затем смотрим вашу версию. Правый клик на файле c:\Windows\System32\termsrv.dll и выберем свойства.


Скачиваем измененный файл соответствующий вашей версии

Windows 8.1 (64bit)
v6.3.9600.16384
от v6.3.9600.16384 до v6.3.9600.17095
от v6.3.9600.17095 до v6.3.9600.17415

Windows 10 x64

v10.0.10240.16384 
до v10.0.10586.0 

Если хочется все исправить своими руками, то копируем свой файл  termsrv.dll из папки c:\Windows\System32\ на рабочий стол. Открываете его любым hex редактором, например этим бесплатным HxD. И заменяете байты в указанной строчке.
В первой колонке значение, которое должно быть, во второй оригинальное.

Windows 7 SP1 64bit:
173C0: B8 8B
173C1: 00 87
173C2: 01 38
173C3: 00 06
173C5: 90 00
173C6: 89 39
173C8: 38 3C
173CC: 90 0F
173CD: 90 84
173CE: 90 EB
173CF: 90 C2
173D0: 90 00
173D1: 90 00
176FA: 00 01
5AD7E: EB 74
Для Windows 8.1 (64bit) заменяем целиком строку
 
в v6.3.9600.16384
строчку
8B 81 38 06 00 00 39 81 3C 06 00 00 0F 84 1B 70 00 00
на
B8 00 01 00 00 89 81 38 06 00 00 90 90 90 90 90 90 90

в 6.3.9600.16384 to 6.3.9600.17095
строчку
39 81 3C 06 00 00 0F 84 9E 31 05 00
на
B8 00 01 00 00 89 81 38 06 00 00 90

6.3.9600.17095 to 6.3.9600.17415
строчку
39 81 3C 06 00 00 0F 84 D3 1E 02 00
на
B8 00 01 00 00 89 81 38 06 00 00 90
 Воспользуемся инструментом замены с типом шестнадцатеричные значения



После замены сохраняете изменения.

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



Далее останавливаете службу удаленного рабочего стола


Заменяем файл termsrv.dll на скаченный или измененный.

Еще нужно изменить значение ключа в реестре HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\fSingleSessionPerUser на 0!

И снова запускаем службу!

Подключаемся и радуемся! Теперь локального пользователя не выкидывает из системы!

Для Windows XP
1) Редактируем файл
termsrv.dll (SP2 5.1.2600.2180) 295,424 bytes
128BB: 75 -> 74
217D3: 8B -> 33
217D4: C7 -> C0
2192D: 8B -> 33
2192E: C7 -> C0
225B7: 54 -> 20
termsrv.dll (SP3 5.1.2600.5512) 295,424 bytes
22A17: 74 -> 75
22A69: 7F -> 90
22A6A: 16 -> 90
2) Заменять файл в директории  C:\Windows\System32\ нужно в безопасном режиме, поскольку по умолчанию включена защита системных файлов (System File Protection). Для этого перезагрузите компьютер с зажатой F8, выберите безопасный режим.
3) Добавить ключи реестра
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Terminal Server\Licensing Core]
EnableConcurrentSessions”=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
EnableConcurrentSessions”=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
AllowMultipleTSSessions”=dword:00000001


4) Далее Пуск -> Выполнить, gpedit.msc. В окне редактора групповой политики Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Служба терминалов. Включите Ограничение количества подключений и установите количество подключений равное 3 или более.
5) Перезагружайтесь и подключайтесь!


02 февраля 2017

1С галочки для табличного поля

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

Делается очень просто! Для этого вы добавляете новую колонку, через контекстное меню.


Называете ее "Отметка". Выбираете элемент управления Флажок.


Затем создаете реквизит ОтмеченныеСтроки с типом СписокЗначений, в нем будем хранить какие строки отметили.

У табличного поля задействуем два события, первое ПриВыводеСтроки, сробатывает всякий раз, когда система выводит строку табличного поля и ПриИзмененииФлажка, когда пользователь изменяет состояние флажка в колонках табличного поля.


 В этих процедурах нужно написать следующее
Процедура ТабличноеПоле1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
  ОформлениеСтроки.Ячейки.Отметка.ОтображатьФлажок = Истина;
  Если ОтмеченныеСтроки.НайтиПоЗначению(ДанныеСтроки.Ссылка) =   Неопределено Тогда
    ОформлениеСтроки.Ячейки.Отметка.Флажок = Ложь;
  Иначе
    ОформлениеСтроки.Ячейки.Отметка.Флажок = Истина;
  КонецЕсли;
КонецПроцедуры
Здесь мы отображаем флажок в ячейке и выводим его значение согласно списку значений.

Процедура ТабличноеПоле2ПриИзмененииФлажка(Элемент, Колонка)
   Если Колонка.Имя = "Отметка" Тогда
     НайденныйЭлемент =  ОтмеченныеСтроки.НайтиПоЗначению(Элемент.ТекущаяСтрока);
      Если НайденныйЭлемент = Неопределено Тогда
        ОтмеченныеПользователи.Добавить(Элемент.ТекущаяСтрока);
      Иначе
        ОтмеченныеПользователи.Удалить(НайденныйЭлемент);
      КонецЕсли;
   КонецЕсли;
КонецПроцедуры
Обрабатываем только колонку Отметка. Если в списке значений уже есть строка, по которой кликнули, то ее удаляем, это означает снятие галочки. И наоборот, если текущей строки нет - добавляем.

В дополнение было бы весьма удобно реализовать механизмы отметить и снять все галочки! Располагаете на форме командную панель, на ней две кнопки. По нажатию на одной выполняете процедуру:
Процедура КоманднаяПанельДействиеОтметитьВсе(Кнопка)
   Выборка = Справочники.Пользователи.Выбрать();
   Пока Выборка.Следующий() цикл
     ОтмеченныеСтроки.Добавить(Выборка.Ссылка);
   КонецЦикла;
   ЭтаФорма.Обновить();
КонецПроцедуры
Здесь в цикле перебираются все записи (в данном случае это справочник пользователи, поэтому перебираем выборку) и добавляются с список значений ОтмеченныеСтроки. После выполняется перерисовка формы.

Для снятия всех галочек достаточно выполнить Очистку списка значений ОтмеченныеСтроки.
Процедура КоманднаяПанельДействиеСнятьВсе(Кнопка)
    ОтмеченныеПользователи.Очистить();
    ЭтаФорма.Обновить();
КонецПроцедуры
В итоге у вас получится вот такая табличная часть с дополнительной колонкой Отметка, где выбираются нужные строки, они будут попадать в список значений ОтмеченныеСтроки. И в дальнейшем, перебирая ОтмеченныеСтроки сможете производить с ними какие либо действия! Над таблицей есть две кнопки, установить все галочки и снять!

Успехов, терпения и удачных решений!

25 января 2017

1С Поле выбора

Если вы с толкнулись с проблемой, что поле ввода, а точнее поле выбора с галочкой РежимВыбораИзСписка не отображает данные привязанного реквизита. То скорее всего вы неправильно заполняете список значений. Есть одна особенность при работе с этим элементом!


Посмотрите на свой код, если вы создаете новый список значений, а потом присваиваете его свойству СписокВыбора.

СписокЗн = Новый СписокЗначений;
СписокЗн.Добавить(0, "Безналичный");
СписокЗн.Добавить(1, "Наличный");
ЭлементыФормы.ВидДоговораНалБезнал.СписокВыбора = СписокЗн;
То имейте в виду, что это не верно! Надо работать непосредственно со списком значений, который находится в свойстве СписокВыбора!
СписокЗн = ЭлементыФормы.ВидДоговораНалБезнал.СписокВыбора;
СписокЗн.Добавить(0, "Безналичный");
СписокЗн.Добавить(1, "Наличный");
Либо использовать функцию ЗагрузитьЗначения()
СписокЗн = Новый СписокЗначений;
СписокЗн.Добавить(0, "Безналичный");
СписокЗн.Добавить(1, "Наличный");
ЭлементыФормы.ВидДоговораНалБезнал.СписокВыбора.ЗагрузитьЗначения(СписокЗн.Выгрузить() )

18 января 2017

Windows's life hacks

1) Меняем язык ввода  при входе в систему по умолчанию для ввода пароля.
Открываем ветку реестра: 
HKEY_USERS\.DEFAULT\Keyboard Layout\Preload
там есть два ключа
00000409 - английская
00000419 - русская
порядок следования определяет какой будет первым.