Восстанавливать из бекапа SQL вот таким кодом. Имена базы вымышленные!
Открываете конфигуратор, потом список пользователей. В нем у же могут быть записи, а могут и не быть.
В консоле SQL выполняем код:
|
|
delete [atril_ut].[dbo].[v8users] INSERT INTO [atril_ut].[dbo].[v8users] SELECT * FROM [atril_ut_copy].[dbo].[v8users] |
Перезапись таблиц приведет к обновлению списка пользователей. Вам останется только нажать F5 для обновления списка пользователей.
Удачи!
Иногда пользователю надо давать возможность сохранять значения отбора, в случае если это необходимо. Ведь согласитесь, каждый раз при открытии обработки устанавливать параметры отбора построителя слишком «мутное» дело. Особенно, если пользователь делает это каждый раз и одно и тоже. Я как-то раз видел как девушка каждый день по несколько раз в сутки настраивала сложный отбор номенклатуры для того что бы сформировать заполнение списка товаров в обработке. В общем сложное и нудное это дело.
Я всегда предлагаю своим клиентам функцию сохранения настроек отбора построителя отчета. Это легко пишется и легко внедряется в любую обработку. Мне это ничего не стоит, а вот для пользователя это большое облегчение. При закрытии формы обработки настройка отбора записывается в хранилище, а при открытии оттуда распаковывается. В итоге пользователю ничего не надо делать. Реально удобная весчь!
Код, отвечающий за сохранение настроек отбора:
|
|
СохранитьЗначение("Обработка.РММенеджераПоОбработкеЦен.НастройкаПостроителяОтчёта", ПостроительОтчета.ПолучитьНастройки()); |
Код, отвечающий за восстановление настроек отбора:
|
|
НастройкаПостроителяОтчета = ВосстановитьЗначение("Обработка.РММенеджераПоОбработкеЦен.НастройкаПостроителяОтчёта"); Если НастройкаПостроителяОтчета <> Неопределено Тогда ПостроительОтчета.УстановитьНастройки(НастройкаПостроителяОтчета); КонецЕсли; |
Так что, беспокойтесь за своих клиентов. Они как дети, иногда не знают, что хотят, но если предложишь, то будут искренне и по-детски рады этому! 🙂
Все знают, что при просмотре большого или точнее длинного и широкого списка документов возникает проблема визуального восприятия пространства на экране: пользователю сложно в большом количестве колонок и строк определить данные в активной строке. Например, Вы выделяете в списке документ «Заказ покупателя» и хотите просмотреть его параметры, не открывая его: контрагент, договор контрагента, дата оплаты и прочее. Визуально сложно быстро обозначить границы строки в списке.

Конечно, для того что бы определить на какой строке находятся данные можно в конфигураторе для списка указать параметр: «Режим выделения строки» в «Строка», но тогда вся строка будет синей и Вы не сможете понять на какой колонке стоит курсор, а это плохо воспринимается пользователем.
Поэтому, поняв проблему, я решил все другим способом. Возможно он не идеален, но что есть, то есть. 🙂
Читать далее…
Есть код программы, который позволит в типовых конфигурациях вывести на экран отчет «Ведомость товаров на складах». В отчете можно сразу указать специфический отбор для параметров отбора.
Делается это для того, что отобразить информацию о конкретном товаре по всем складам или по одному складу. Удобно тем, что пользователю нет необходимости указывать параметры отбора.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
ОтчетРасшифровка = Отчеты.ВедомостьТоварыНаСкладах.Создать(); ОтчетРасшифровка.УстановитьНачальныеНастройки(); ОтчетРасшифровка.УниверсальныйОтчет.ОчиститьНастройкиПостроителя(); ОтчетРасшифровка.УниверсальныйОтчет.мВосстанавливатьНастройкиПриОткрытии = Ложь; ОтчетРасшифровка.УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Номенклатура"); ОтчетРасшифровка.УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Склад"); ОтчетРасшифровка.УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Регистратор"); ОтчетРасшифровка.УниверсальныйОтчет.ДобавитьОтбор("Номенклатура", Истина, ВидСравнения.Равно, ТекНоменклатура,,, Ложь); ОтчетРасшифровка.УниверсальныйОтчет.ДатаНач = ДатаНачала; // реквизит на форме обработки пользователя ФормаРасшифровки = ОтчетРасшифровка.ПолучитьФорму(); ФормаРасшифровки.Открыть(); ФормаРасшифровки.ОбновитьОтчет(); |
В параметрах есть:
1. ТекНоменклатура — номенклатура, которую надо проанализировать;
2. ДатаНачала — дата начала анализа. Можно заполнить и ДатаКон, но это по желанию.
После написания предыдущей статьи решил все-таки исправить проблему, которая возникала каждый раз когда я заходил на сервер моего клиента. Проблема была в том, что один из процессов, который выполнялись на сервере, создавал сильную нагрузку на центральный процессор и дисковый накопитель. Несложно было догадаться по наименованию процесса, а это была фраза «rmngr.exe», что это обычный кластер серверов 1С Предприятие 8.3. Ранее на этой системе не было установлено более ранних версий платформы, а потому нагрузка такого рода у них была изначально и клиент думал, что так нужно «и эта одинэс самая тупая, и екселем было проще».
В общем проблема была реально проблемная. Там стоял процессор Intel Core I5 и радости от этого не было вообще. Пользователей около 10 человек и все работали на сервере через удаленный рабочий стол. Работали они почти полгода таким образом. Настраивать саму платформу пришлось с нуля. На первые поры вроде было все нормально, но в итоге снова начинало «тупить». Как потом оказалось, виной всему было протоколирование журнала транзакций в новый формат журнала.

Ранее журнал транзакций сохранялся в файл с расширением «1Cv8.lgf«, но вскоре разработчики решили изменить формат сохранения и сделали его во таким: «1Cv8.lgd«.
Для каждой базы данных журнал транзакций хранится в отдельном файле. Каталоги с файлами журналов хранятся по пути: «C:\Program Files (x86)\1cv8\srvinfo\reg_1541«. Каждая база хранится в папке с именем её идентификатор. В каждой такой папке есть папка «1Cv8Log«. И вот в этой папке хранится сам файл журнала транзакций. Читать далее…
В общем была проблема: при запуске 1С Предприятие 8.3 зависало окно программы со стороны пользователя. При том, что конфигуратор работал вроде нормально. Проблема была в том, что технология записи журнала транзакций была не совершенна и возникала ошибка, которая приводила к полному отказу работы платформы 1С Предприятие.
Исправление проблемы:
1. Остановить службу сервера 1С Предприятие в апплете служб Windows.
2. Пройти в каталог с настройками кластера серверов по пути: C:\Program Files (x86)\1cv8\srvinfo\reg_1541\. Далее найти папку с логами базы данных, которая «зависает». Определить её можно по идентификатору базы данных. Каталог с таки идентификатором будет идентичен идентификатору базы данных. Далее переместить каталог с логами базы данных в отдельный каталог.
3. Запустить службу 1С Предприятие в апплете служб Windows.
4. Убедится, что в каталоге кластера автоматически создались файлы логов.
5. Запустить платформу 1С Предприятие и начать работать.
6. Исследовать ошибку логирования на предмет ошибок дискового накопителя. Вполне может быть, что это повреждения накопителя. Это на всякий случай…
Признаться, я особо не исследовал причину появления такой проблемы. Логирование мне не было нужды хранить, а потому я просто удалил старые архивы журнала транзакций.
Парсить сайты — это всегда сложно. Написать универсальный парсер сайтов практически нереально. Я пару дней делал обработку, которая может принимать данные XML из программы Elbuz Content Creator и Elbuz PriceList Importer. Это могут быть каталог товаров, прайс лист цен поставщиков или конкурентов.
Так вот, я столкнулся с такой штукой. Если парсить сайты с помощью 1С, то это может закончится тем, что Вы не сможете это сделать из-за некоторых приколов с самим контентом. У меня произошел случай, когда в контенте попались символы BEL , DC2 , RS.
1С способна сама читать XML-файлы. Но именно с этими символами она ни в какую не хотела принимать данные. Эти символы не видны и лишь Notepad++ способен отобразить их в тексте через отображение всех символов, включая перевод каретки и прочие.
Символ BEL в недавнем времени один из самых используемых символов. Обычно, когда консоль встречала символ с кодом 7 (0x07), то выдавала звуковой сигнал.
Символ RS является разделителем записей в потоке данных. Этот символ вообще не выводится как визуальный символ, а лишь вызывает команду.
Символ DC2 — одна из команд управления устройством для чтения перфолент. Символ DC2 подает команду на включение перфоратора.
Исходя из выше написанного, можно с уверенностью сказать, что если Вы наставите этих символов в тексте описания товара, то такой текст спарсить в 1С не удастся 🙂

По идее, если брать обычный документ в 1С Предприятие, то можно добавить реквизит «Остаток» и туда заполнять каждый раз значение остатка номенклатуры на складе, но так делать неправильно: при каждом открытии документа будет осуществляться заполнение реквизита текущими значениями остатка на складе. Это приведет к тому, что документ каждый раз при закрытии придется перезаписывать, что по сути неправильно. Для этого необходимо в табличную часть добавить колонку, которая не будет связана с данными документа.
В моем примере я добавляю сразу несколько колонок про остатки для каждого склада по отдельности, включая резерв на выбранных складах в табличную часть списка подбора номенклатуры. Менеджеру удобнее видеть сразу все остатки по товарам, не прибегая к отчету «Ведомость остатков по складах» для того ,что узнать каково наличие на складе. Все сразу видно. Читать далее…
На форме элемента справочника имеется несколько реквизитов: Красный, Зеленый, Синий (число: неотрицательное, с диапазоном от 0 до 255).
При выборе цвета значения цвета в формате RGB заполняются в реквизиты элемента и записываются в справочник для хранения.
Процедура выбора цвета использует форму объекта COMОбъект(«WScript.Shell») для выбора цвета.
|
|
Шел = Новый COMОбъект("WScript.Shell"); Шел.RegWrite("HKLM\SOFTWARE\Classes\Licenses\4D553650-6ABE-11cf-8ADB-00AA00C00905\","gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj"); Диалог = Новый COMОбъект("MSComDlg.CommonDialog"); Диалог.ShowColor(); Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl"); Скрипт.language = "javascript"; Скрипт.AddObject("Диалог",Диалог); Цвет = РазложитьRGB(Скрипт.Eval("Диалог.Color")); Красный = Цвет.Красный; Зеленый = Цвет.Зеленый; Синий = Цвет.Синий; |
После выбора цвет раскладывается по принципу RGB на три составляющие в числовом выражении и записывается в реквизиты. Функция РазложитьRGB() помогает получить три числа цвета и сформировать объект Цвет(), возвращая как результат своей работы.
|
|
Функция РазложитьRGB(ЗначениеЧислом) ЦветRGB = ЗначениеЧислом; R = ЦветRGB%256; G = (Цел(ЦветRGB/256))%256; B = (Цел(ЦветRGB/(256 * 256)))%256; Возврат Новый Цвет(R,G,B); КонецФункции |