6 дек. 2016 г.
Включенные групповые политики
А точнее подробные отчет о включенных \ отключенных групповых политиках можно получить в командной строке выполнив
GPResult /h C:\GPResult.html
Сбросить локальные политики безопасности
Для сброка выполним в командной строке
secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verboseа далее
shutdown /r
Сбросить локальные политики
Что бы сбросить локальные политики на компьютере выполним в командной строке
rd /s /q "%windir%\System32\GroupPolicyUsers"а далее
gpupdate /forceну а далее
shutdown /r
Сохранить Восстановить записки Sticky
Для сохранения записок Windows 10 нужно скопировать все содержимое папки
Соответственно, для восстановление, все скопированное замещаем возвращаем назад в папку
%HOMEPATH%\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe
Соответственно, для восстановление, все скопированное замещаем возвращаем назад в папку
%HOMEPATH%\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbweсогласившись на замену
Обновить форму автоматически 7.7
Вообще то, речь будет идти о Обработчике ожидания формы.
В задаче было поставлено обновление формы списка справочника каждые 1сек., для того, что бы "онлайн" видеть установленные фильтры на форме списка
фильтр1, фильтр2
Сначала напишем процедуру в модуле формы списка справочника, которая будет вызываться каждую 1сек. и обновлять форму списка
А теперь после всех процедур и функций, выше модуля, запустим обработчик ожидания формы, который будет вызывать процедуру ПроцедураОбработчикаОжидания каждые 1сек
В задаче было поставлено обновление формы списка справочника каждые 1сек., для того, что бы "онлайн" видеть установленные фильтры на форме списка
фильтр1, фильтр2
Сначала напишем процедуру в модуле формы списка справочника, которая будет вызываться каждую 1сек. и обновлять форму списка
Процедура ПроцедураОбработчикаОжидания() Форма.Обновить(); КонецПроцедуры
Форма.ОбработкаОжидания("ПроцедураОбработчикаОжидания",1);
Отбор в списке Справочника 7.7
Продолжая тему множественного фильтра в списке справочника, в предыдущей заметке были появились некие нюансы, которые этой заметкой хочу закрыть.
+ это будет как бы еще один вариант "множественного" фильтра в списке справочника.
Данная методика будет проста до безобразия.
Мы будем при каждом снятии или установке флажка обходить все флажки и для каждого установленного флажка будем искать в списке справочника соответствующий элемент справочника. Найденный элемент справочника мы помещаем в СписокЗначений, а далее этот перечень нужных нам элементов справочника в списке значений мы отправим в метод ИспользоватьСписокЭлементов()
+ это будет как бы еще один вариант "множественного" фильтра в списке справочника.
Данная методика будет проста до безобразия.
Мы будем при каждом снятии или установке флажка обходить все флажки и для каждого установленного флажка будем искать в списке справочника соответствующий элемент справочника. Найденный элемент справочника мы помещаем в СписокЗначений, а далее этот перечень нужных нам элементов справочника в списке значений мы отправим в метод ИспользоватьСписокЭлементов()
Функция ПолучитьСписокДокументовФильтров() АрхивТТН = СоздатьОбъект("Справочник.АрхивТТН"); СписокСТатусов = СоздатьОбъект("СписокЗначений"); СписокДокументов = СоздатьОбъект("СписокЗначений"); Если Новый = 1 Тогда СписокСТатусов.ДобавитьЗначение(Перечисление.СтатусДокумента.Новый); КонецЕсли; Если Отправлен = 1 Тогда СписокСТатусов.ДобавитьЗначение(Перечисление.СтатусДокумента.Отправлен); КонецЕсли; Если Закрыт = 1 Тогда СписокСТатусов.ДобавитьЗначение(Перечисление.СтатусДокумента.Закрыт); КонецЕсли; Если Отмена = 1 Тогда СписокСТатусов.ДобавитьЗначение(Перечисление.СтатусДокумента.Отмена); КонецЕсли; Если ПрибылоНаСкладПокупателя = 1 Тогда СписокСТатусов.ДобавитьЗначение(Перечисление.СтатусДокумента.ПрибылоНаСкладПокупателя); КонецЕсли; Если ЦПОтправлено = 1 Тогда СписокСТатусов.ДобавитьЗначение(Перечисление.СтатусДокумента.ЦПОтправлено); КонецЕсли; Если ФПОтправлено = 1 Тогда СписокСТатусов.ДобавитьЗначение(Перечисление.СтатусДокумента.ФПОтправлено); КонецЕсли; Если ВозвратТовара = 1 Тогда СписокСТатусов.ДобавитьЗначение(Перечисление.СтатусДокумента.ВозвратТовара); КонецЕсли; Если М1 = 1 Тогда СписокСТатусов.ДобавитьЗначение(Перечисление.СтатусДокумента.М1); КонецЕсли; Если М2 = 1 Тогда СписокСТатусов.ДобавитьЗначение(Перечисление.СтатусДокумента.М2); КонецЕсли; СписокСТатусов.Сортировать(0,); Для Индекс = 1 По СписокСТатусов.РазмерСписка() Цикл АрхивТТН.ВыбратьЭлементыПоРеквизиту("Статус",СписокСТатусов.ПолучитьЗначение(Индекс),,0); Пока АрхивТТН.ПолучитьЭлемент() = 1 Цикл СписокДокументов.ДобавитьЗначение(АрхивТТН.ТекущийЭлемент()); КонецЦикла; КонецЦикла; СписокДокументов.Сортировать(0,); Возврат СписокДокументов; КонецФункции
Функция УстановитьФильтры() СписокДокументов = ПолучитьСписокДокументовФильтров(); ИспользоватьСписокЭлементов(СписокДокументов); Форма.Обновить(1); КонецФункции
На вкладке Дополнительно наших флажков нужно поместить вызов функции УстановитьФильтры().
Сортировать список значений имеет смысл, так как если будем отключать\включать
фильтры не с лева на право, а наоборот или как то хаосно то увидите не приятный
результат.
Сортировать список значений имеет смысл, так как если будем отключать\включать
фильтры не с лева на право, а наоборот или как то хаосно то увидите не приятный
результат.
1 дек. 2016 г.
Множественный отобор в списке Справочника 7.7
Для реализации возможности одновременно выбора фильтров по нескольким значениям в форме списка справочника я сначала добавил флажки на форму где каждому флажку присвоил Заголовок и Идентификатор, а во вкладке Дополнительно написал такую формулу
?(Новый = 1,УстановитьФильтры(Перечисление.СтатусДокумента.Новый,1),УстановитьФильтры(Перечисление.СтатусДокумента.Новый,0))ну типа, если флажок установлен, тогда мы в функцию передаем по какому фильтру мы
будем искать элементы в списке.
А вот и самое главное
Перем АрхивТТН; Перем СписокСтатусов; Функция ПодготовитьФильтр(СтатусПоиска,ДобавитьУдалить) Если ДобавитьУдалить = 1 Тогда //добавляем АрхивТТН.ВыбратьЭлементыПоРеквизиту("Статус",СтатусПоиска,,0); Пока АрхивТТН.ПолучитьЭлемент() = 1 Цикл НайденныйЭлемент = СписокСтатусов.НайтиЗначение(АрхивТТН.ТекущийЭлемент()); Если НайденныйЭлемент= 0 Тогда //документ добавляем в список фильтров СписокСтатусов.ДобавитьЗначение(АрхивТТН.ТекущийЭлемент()); Иначе //документ уже есть в списке фильтров Продолжить; КонецЕсли; КонецЦикла; Иначе //удаляем АрхивТТН.ВыбратьЭлементыПоРеквизиту("Статус",СтатусПоиска,,0); Пока АрхивТТН.ПолучитьЭлемент() = 1 Цикл НайденныйЭлемент = СписокСтатусов.НайтиЗначение(АрхивТТН.ТекущийЭлемент()); Если НайденныйЭлемент <> 0 Тогда //элемент найден в списке фильтров СписокСтатусов.УдалитьЗначение(НайденныйЭлемент); КонецЕсли; КонецЦикла; КонецЕсли; Возврат СписокСтатусов; КонецФункции Функция УстановитьФильтры(СтатусПоиска,ДобавитьУдалить) СписокСтатусов = ПодготовитьФильтр(СтатусПоиска,ДобавитьУдалить); Если СписокСтатусов.РазмерСписка() = 0 Тогда ИспользоватьСписокЭлементов(); Иначе ИспользоватьСписокЭлементов(СписокСтатусов); КонецЕсли; КонецФункции АрхивТТН = СоздатьОбъект("Справочник.АрхивТТН"); СписокСтатусов = СоздатьОбъект("СписокЗначений");
где мы сначала объявляем переменные и присваиваем им значения Справочника где будем
искать значения и СписокЗначений куда будем ложить найденные по множественному фильтру
значения.
Далее логика такая, если флажок установлен мы по передаваемом значении флажка ищем в нашем
справочнике нужное значение и если находим то записываем найденное значение в СписокЗначений.
Плюс если мы сняли флажок тогда мы должны опять найти в Справочнике нужное нам значение
и потом по найденном значении проверить, есть ли оно в СпискеЗначений, если есть тогда удалить,
ведь мы уже не хотим иметь по данном значении (флажке) фильтр.
Только после того как заполнился СписокЗначений мы можем воспользоваться методом платформы
для отбора в списке Формы ИспользоватьСписокЭлементов(); куда нам нужно поместить список значений
с теми значениями, по которым нужно отфильтровать список, ну а если СписокЗначений наш пуст, тогда
ничего не передавая в ИспользоватьСписокЭлементов(); мы отключим все фильтры
Вот результат
Добавить новую константу в общую форму настроек констант
Обычные формы. Типовые конфигурации.
Для добавление своей константы в общую форму настроек констант через Операции-Константы
Для добавление своей константы в общую форму настроек констант через Операции-Константы
открываем свойства формы ОбщиеФормы-НастройкаПараметровУчета и в свойстве Состав добавляем нашу константу
а теперь уже в списке Форма-Размещение данных... появиться выбор добавления константы на общую типовую форму
26 нояб. 2016 г.
Строки неограниченной длинны сгруппировать в запросе
Если нужно сгруппировать в СКД поле не ограниченной длинны, тогда нужно применить функцию ВЫРАЗИТЬ() для этого поля
ВЫРАЗИТЬ(ПолеНеОграниченнойДлинны КАК Строка(200))
Использование в отборе Категорий в СКД
Конфигурация Управление Торговлей.
Постала задача в отбор отчета на СКД добавить возможность выбора из Справочники.Номенклатура категорий.
Постала задача в отбор отчета на СКД добавить возможность выбора из Справочники.Номенклатура категорий.
Для решения открываем наш запрос и в конце запроса добавляем
{ХАРАКТЕРИСТИКИ
ТИП(Справочник.Номенклатура)
ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
СвойстваОбъектов.Ссылка,
СвойстваОбъектов.ТипЗначения,
"Свойство: " + СвойстваОбъектов.Наименование КАК Наименование
ИЗ
ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
ГДЕ
СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура))
ПОЛЕКЛЮЧА Ссылка
ПОЛЕИМЕНИ Наименование
ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
ПОЛЕОБЪЕКТА Объект
ПОЛЕВИДА Свойство
ПОЛЕЗНАЧЕНИЯ Значение }
{ХАРАКТЕРИСТИКИ
ТИП(Справочник.Номенклатура)
ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
КатегорииОбъектов.Ссылка,
"Категория: " + КатегорииОбъектов.Наименование КАК Наименование
ИЗ
Справочник.КатегорииОбъектов КАК КатегорииОбъектов
ГДЕ
КатегорииОбъектов.НазначениеКатегории = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура))
ПОЛЕКЛЮЧА Ссылка
ПОЛЕИМЕНИ Наименование
ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.КатегорииОбъектов
ПОЛЕОБЪЕКТА Объект
ПОЛЕВИДА Категория
}
Взято с ссылкаПереопределить кнопку Выбора 7.7
Есть форма элемента Справочника с реквизитом типа Ссылка на Документ.РасходнаяНакладная.
Нужно при нажатии кнопки открытия этого реквизита открывался не список документов, а конкретный документ
Нужно при нажатии кнопки открытия этого реквизита открывался не список документов, а конкретный документ
Для решения в ФормеЭлемента справочника пишем
Процедура ПриНачалеВыбораЗначения(ИдентЭлемДиалога,ФСО) Если ИдентЭлемДиалога = "Док" Тогда Если ПустоеЗначение(Док) = 0 Тогда ФСО = 0; ОткрытьФорму(Док); КонецЕсли; КонецЕсли; КонецПроцедурыТеперь при нажатии на реквизит Регистратор (Док) откроется сразу форма документа,
а не список документов
Обработка нажатия формы списка 7.7
Пример, есть форма списка Справочника с несколькими колонками
В свойствах этого справочника стоит настройка Редактировать: В диалоге
мне нужно сделать так, что бы при нажатии на колонку Документ открывалась сразу форма выбранного документа, а в остальных случаях, что бы выполнялся стандартная обработка открытия объекта.
В модуле ФормыСписка пишу
Процедура ПриВыбореСтроки() Если Форма.ТекущаяКолонка() = "Док" Тогда Если ПустоеЗначение(Док) = 0 Тогда ОткрытьФорму(Док); КонецЕсли; Иначе ОбТМЦ = СоздатьОбъект("Справочник.АрхивТТН"); ОбТМЦ.НайтиПоКоду(Код,0); ОткрытьФорму(ОбТМЦ.ТекущийЭлемент()); КонецЕсли; КонецПроцедуры Форма.ОбработкаВыбораСтроки(1);
А значит, если пользователь выбрал колонку Документ (Док) то будет открыт форма документа, а если выбрал любую другую колонку тогда мы ищем из текущей строки объект по коду в нашем справочнике и открываем его.
11 нояб. 2016 г.
Назначить тип реквизиту 7.7
Есть Документ.ПКО в которого есть реквизит с типом Неопределенній
при программном заполнении реквизита этого документа прежде чем заполнить реквизит "субконто" ему нужно назначить тип, для этого
Док = СоздатьОбъект("Документ.ПКО"); //назначем реквизиту Субконтотип Справочник.Номенклатура Док.НазначитьТип("Субконто","Справочник.Номенклатура");
28 окт. 2016 г.
Добавить в контекстное меню Обычные формы
Что бы добавить в контекстное меню ("ПКМ" по Табличной части) свою команду нужно:
- На форму добавляем "Командная панель"
- "ПКМ" по добавленной на форме командной панели - добавляем команду
Вывести полное наименование в типовый отчет
Возьмем, например типовый отчет "Ведомость по товарам в розницу" конфигурации "Управление торговлей для Украины", редакция 2.3. Если зайти в выбор Поле (Группировка строк) то увидим, что Полное наименование, из справочника номенклатура никак не вытянуть, этого поля нет.
Что бы выводить Полное наименование номенклатуры нужно зайти в расширенные настройки Настроек, перейти на вкладку Дополнительные поля и уже там будет возможность из справочника Номенклатура вытянуть поле Полное наименование.
Что бы выводить Полное наименование номенклатуры нужно зайти в расширенные настройки Настроек, перейти на вкладку Дополнительные поля и уже там будет возможность из справочника Номенклатура вытянуть поле Полное наименование.
в результате получаем то что нужно
26 окт. 2016 г.
Запись xml из строки 7.7
Для сохранения хмл строки в хмл документ выполним
!ИмяВыбрФайла - это строка в виде хмл
Попытка ТекстовыйДокумент = СоздатьОбъект("Текст"); ТекстовыйДокумент.Записать("D:\1.xml"); ТекстовыйДокумент.Открыть("D:\1.xml"); ТекстовыйДокумент.ДобавитьСтроку(ИмяВыбрФайла); ТекстовыйДокумент.КодоваяСтраница(0); ТекстовыйДокумент.Записать("D:\1.xml"); Предупреждение("ОК"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки;
An invalid character was found in text content 1С 7.7
При чтении хмл файла получаю
"................ An invalid character was found in text content."
дело здесь в кодировке.
Открыл файл, изменил кодировку на WINDOWS-1251
"................ An invalid character was found in text content."
дело здесь в кодировке.
Открыл файл, изменил кодировку на WINDOWS-1251
ошибка исчезла.
Подписаться на:
Сообщения (Atom)