пятница, 23 июля 2021 г.

NoClassDefFoundError на Jvdroid

Давно ничего не писал. Однако тут поставил себе Jvdroid на телефон. Нужно было. В поездках, пока нечего делать, что-нибудь писать. Отличная кстати штука. Так вот. В maven указал зависимость opencsv. Всё компилируется. Всё запускается. Бэмс.. NotDefClassFoundError. Класс не найден. Посмотрел в target проекта - jarник зависимости вот он. Лежит в папке lib.  Думаю с библиотекой что-то. Заменил зависимость в pom.xml на apache.common.csv. Такая же история. Думаю может это из-за Android - библиотеки не совместимы с моей версией. Загрустил. Потом на pom.xml внимательно посмотрел, а там такое:

<configuration>
<archive>
<manifest>
<addClasspath>
true
</addClasspath>
<classpathPrefix>
lib/
</classpathPrefix>
</manifest>
</archive>
<archive>
<manifest>
<mainClass>
Main
</mainClass>
</manifest>
</archive>
</configuration>

Вот думаю действительно, с чего бы так. Убрал дубль секции archive/manifest - переделал на такое:

<configuration>
<archive>
<manifest>
<addClasspath>
true
</addClasspath>
<classpathPrefix>
lib/
</classpathPrefix>
<mainClass>
Main
</mainClass>
</manifest>
</archive>
</configuration>

И знаете.. Всё отлично заработало. Разработчикам  не могу написать - Huawei google-сервисы не поддерживает. Поэтому, пусть здесь подлежит. Вдруг пригодится кому. 


Лучший поставщик комплектующих

воскресенье, 4 марта 2018 г.

Нет оплаты бонусными баллами в чеке ККМ в УТ 11

Хотим запустить оплату бонусами. Столкнулись с проблемой. В "НСИ и Администрирование" -> "Настройки разделов" -> "CRM и маркетинг" -> "Маркетинг" установил галку "Оплата бонусными баллами". В результате, после настройки карт лояльности, бонусной программы и скидок и наценок, балы начали начисляться. Однако, что бы ими расплатиться специальной формы в документе "Чек ККМ" не появилось. В результате поисков обнаружилось, что дополнительно нужно включить в "НСИ и Администрирование" -> "Настройки разделов" -> "Продажи" -> "Розничные продажи" галку "Подарочные сертификаты". Тогда в чеке ККМ появляется кнопка "Смешанная оплата". При нажатии на которую, открывается форма с оплатой в том числе и бонусными баллами. После оплаты чека баллы списались корректно.

четверг, 30 марта 2017 г.

YYYY-MM-dd и yyyy-MM-dd

В чём разница: "YYYY-MM-dd" и "yyyy-MM-dd"? Тут вобщем влетел недавно. Стыд, позор и непрофессионализм. Оказывается если форматировать в Java год как "YYYY" то в конце года некоторое количество последних дней будет нумероваться не предыдущем годом, а текущим. То есть если первый день года "2017-01-01", то предыдущий день будет "2017-12-31". А что бы было нормально то дату форматировать  нужно как "yyyy-MM-dd". Век живи, век учись.



Лучший поставщик комплектующих

воскресенье, 4 декабря 2016 г.

Счет на оплату в УТ 11 BANK INFORMATION


Тут в общем оказалось, что 1С печатает счета с какой то странной шапкой. Некрасиво - вызывает озабоченность у заинтересованной публики.
Выглядит вот так:




В интернете по этой теме обнаружил только такое http://forum.infostart.ru/forum9/topic148018/ - не вдохновило. Однако тема подтолкнула к решению проблемы.
Посмотрел, что у организации от имени которой выписывается счет в "Банковских счетах", а там:




Поменял, стало быть, через "Все действия"->"Разрешить изменение реквизитов", забугорное "RUB", на родное посконное "руб.":




И, ура! Всё получилось:


Катарсис...




Лучший поставщик комплектующих

воскресенье, 16 октября 2016 г.

Пару слов о нумерации

Думал, думал и понял.

У вас огромная корпорация с кучей дочерних фирм, с распределенной региональной структурой и 200000 пользователей.

Вам нельзя генерировать логины исходя из ФИО пользователя. Только цифры. Максимум букву впереди. Причем буква должна быть одна на всех и нумерация сквозная по всем пользователям. И не выделяйте диапазоны по организациям. И не выделяйте диапазоны по региональному делению.

Лучший поставщик комплектующих

Эффективность оборота в рознице

Тут в общем "на подумать". Стало быть есть магазин. Один из хозяев волнуется, что они покупают товар, который слабо продается. Соответственно деньги лежат на складе и не работают. Сели с ним подумали. И магазин за неделю оплачивает поставщикам сумму. Пускай Сз=186000. В 1С делаем отчет по закупкам за неделю и там как раз эту сумму показывают. А продает он за неделю на Св=454000. Это видно из отчета по прибыли из той же 1С. Причем себестоимость проданного товара Сс=259000. И вот из этого что можно заключить? Предполагаю, что на данном временном промежутке они довольно эффективно расторговывают товар. И беспокоиться хозяину нужно начинать когда Сз начнет стремиться к Сс

Лучший поставщик комплектующих

суббота, 15 октября 2016 г.

При создании номенклатуры в УТ 11.2 не активна кнопка "Заполнить наименование для печати по шаблону"

"Заполнить наименование для печати по шаблону" так называется эта кнопка. И раньше до обновления клиент ей с успехом пользовался. А сейчас она не активна. И они мучаются. Они выделяют текст. Нажимают правой клавишей мыши слово "Копировать". Щелкают на поле внизу. Нажимают правой клавишей мыши слово "Вставить". Чувствуете глубину страданий. Это физически больно наблюдать. Необходимо исправить ситуацию.
Посмотрел в "НСИ и Администрирование - Настройка параметров системы - Номенклатура". Не нашёл ничего, что бы помогло решить проблему.
Покопавшись в форме номенклатуры выяснил, что доступность этой кнопки зависела от реквизитов вида номенклатуры. Дальше было проще. Идем в "НСИ и Администрирование - НСИ - Классификаторы номенклатуры - Настройка ведения товаров" там на вкладке "Шаблоны наименований" жмём "Изменить..." в пункте "Наименование для печати". Открывается форма редактирования формулы с очень богатым функционалом. Но клиенту нужно простое копирование. Поэтому жмём на "+", что бы открыть поля номенклатуры и дважды щелкаем на "Наименование" оно попадает в нижние поле в виде [Наименование]. Далее все сохраняем. Идём создавать новый товар.  Хоп-ла-ла-лай! Кнопка активна и выполняет свои функции.



Лучший поставщик комплектующих

Почтовое сообщение по протоколу SMTP из Java с использованием SSL

Собственно нужно было послать. Из программы. С почтового ящика на Yandex. А Яндекс перешёл на SSL

Что характерно копи-паст из интернета ничего не дал. Все время вылазили исклчючения. Или письма вроде как уходили, но в ящик не приходили.
Полез сюда в раздел Programming на oracle.com. Нашёл вот такое:

Q: What are some of the most common mistakes people make when using JavaMail? A: Unfortunately, the internet is full of copy and paste programmers who don't understand the code they're using, which has resulted in a lot of unnecessarily complex and often incorrect examples. The most common mistakes are:
  • Use of Session.getDefaultInstance. Almost all code should use Session.getInstanceinstead, as described below
  • Calling the send method on a Transport instance variable. As described belowsend is a static method and ignores the Transport instance you use to call it.
  • Setting various socketFactory properties. Long, long ago JavaMail didn't have built in support for SSL connections, so it was necessary to set these properties to use SSL. This hasn't been the case for years; remove these properties and simplify your code. The easiest way to enable SSL support in current versions of JavaMail is to set the property "mail.smtp.ssl.enable" to "true". (Replace "smtp" with "imap" or "pop3" as appropriate.)
  • Using an Authenticator just to supply a username and password. There's really nothing wrong with using an Authenticator, it's just unnecessarily complex. A more straightforward approach is to call the connect method that takes a username and password when connecting to a Store. When sending a message, use the static Transport.send method that takes a username and password.
что характерно, прямо про меня.
Последовал рекомендациям и о чудо все получилось. Приведу функцию полностью как она работает у меня:
    public void sendMail(String paramTo, String paramSubject, String paramBody)
    {
        try
        {
            Properties props = new Properties();
            props.put("mail.smtp.host", "smtp.yandex.ru");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.port", "465");
            props.put("mail.smtp.ssl.enable","true");
            Session session = Session.getInstance(props);
           
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("my_mailbox@yandex.ru"));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(paramTo.trim()));
            message.setContent("This is a test", "text/plain");
            message.setSubject(paramSubject);
            message.setText(paramBody);
            Transport.send(message,"user_name", "user_password");
            System.out.println("Sent message successfully....");
        } catch (Exception mex)
        {
            System.out.println("******* ERROR sending Email *******");
            mex.printStackTrace();
        }
    }
Тащемта всё.



Лучший поставщик комплектующих

воскресенье, 4 сентября 2016 г.

Пропадает подключаемое оборудование в 1С

Собственно, симптомы:


  1. Подключился по RDP; 
  2. Зашёл в 1С (у нас УТ 11); 
  3. Настроил оборудование;
  4. Всё работает;
  5. Вышел из 1С; 
  6. Вышел из RDP сессии;
  7. Снова подключился по RDP;
  8. Зашёл в 1С;

Ан оборудования, то и нет!!!

Всё дело в том, что Windows Server (у нас 2012) все время меняет идентификатор клиента и генерирует новый при каждом новом подключении одного и того же пользователя по RDP. Вылечил в итоге так:

  1. Удалил пользователя Windows Server прямо из консоли lusrmgr.msc;
  2. Удалил папку пользователя в каталоге Users (это больше для красоты, что бы место не занимало);
  3. Создал пользователя заново.

Генерировать новые идентификаторы пользователя сервер перестал.

Причем если просто удалить папку с профилем пользователя не удаляя самого пользователя Windows Server, то ничего не меняется и идентификаторы продолжают генерироваться при каждом новом входе по RDP (хотя, может это только при наших настройках).

Лучший поставщик комплектующих

понедельник, 18 июля 2016 г.

вторник, 3 мая 2016 г.

Имя учетной записи в OIM



Есть на вкладке "Accounts" (Учетые записи) профиля пользователя такой столбец как "Account Name" (Имя учетной записи). Вот при создании очередного коннектора, за каким-то хреном, в этом столбце после реконсиляции нативных учетных записей из целевой системы, появилось ФИО пользователя вместо его логина.
Перерыл все. Понапресоздавал формы в Design Console. Пересоздал формы в консоли администратора. Полез в метаданные. Все как всегда по барабану.
Дело оказалось в настройке "Map Descriptive Field". Этакая незаметная кнопка в форме процесса. При нажатии на нее открывается одноименная форма. Так вот, оказывается, необходимо выделить соответствующее поле в этой  форме в папке "Pocess data for..." и нажать кнопку с дискетой, тем самым сохранив настройки. После этого в поле "Account Name" появляется логин пользователя.

среда, 28 октября 2015 г.

12705: Cannot access NLS data files or invalid environment specified

NetBeans 8.0.2.
Windows 10 x64

При попытке создать соединение через драйвер ojdbc7 появляется ошибка

невозможно соединиться с jdbc:oracle:thin:@localhost:1521:XE с помощью oracle.jdbc.OracleDriver (ORA-00604: error occurred at recursive SQL level 1 ORA-12705: Cannot access NLS data files or invalid environment specified )

В файле

C:\Program Files\NetBeans 8.0.2\etc\netbeans.conf

в строке

netbeans_default_options

в кавычки необходимо добавить опцию

-J-Duser.region=US

Это решает проблему. Если вместо US поставить RU то проблема остаётся.


Похожая проблема при запуске приложения на сервере GlassFish

Severe:   Local Exception Stack:
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: Connection could not be allocated because: ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified


Тут она решается правкой конфигурационного файла домена

..\glassfish\domains\domain1\config\domain.xml

в секции

<java-config ="classpath-suffix="" debug-options="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9009" system-classpath">

нужно вставить опцию

<jvm-options>-Duser.region=US</jvm-options>

и перезапустить сервер


суббота, 3 октября 2015 г.

Планшет DIGMA Plane 9.7 3G 8Gb Wi-Fi, 3G, Android 5.1, белый [ps9770mg]

Купил 1 апреля



Через 3 недели


И понеслось:



Заявление №1

Результат №1

Заявление №2

Результат №2

Заявление №3

Результат №3


вторник, 29 сентября 2015 г.

MS SQL через SQL Developer 4.0.2.15



Как советуют в этих ваших интернетах не получилось. Точнее получилось наполовину.
 
В моем случае нужно так:


  1. Копируем jtds-1.2.jar в папку sqldeveloper\jdbc\lib (как раз этого в интернетах не нашел, а без этого в моем случае не работало);
  2. Tools -> Preferenses -> Database -> Third Party JDBC Driver;
  3. Add Entry;
  4. Указываем файл скопированный на шаге 1;
  5. Select;
  6. Ok;
  7. Перезагружаем SQL Developer;
  8. Хоп! Ла-лай-лай! В свойствах соединений появилась вкладка SQLServer.
 


Барахолка в Железнодорожном

Лучший поставщик комплектующих

воскресенье, 21 июня 2015 г.

Backup базы данных MSSQL на сетевой диск


Собственно сам бэкап базы данных Trade1

BACKUP DATABASE Trade1
   TO DISK = '\\sqlsrv\Backup\201507140039.Bak';
GO


Проверка бэкапа:

restore verifyonly DATABASE Trade1
   FROM DISK = '\\main\Backup\201507140039.Bak';
GO


Восстановление:

restore DATABASE Trade1
   FROM DISK = 'e:\Backup\201507140039.Bak';
GO


или так, если восстановить нужно в другое место:

restore  DATABASE Trade1
   FROM DISK = 'e:\Backup\201507140039.Bak'
   WITH RECOVERY,
   MOVE 'Trade1' TO 'e:\SQLBase\Trade1\Trade1.mdf',
   MOVE 'Trade1_log' TO 'e:\SQLBase\Trade1\Trade1_log.ldf'
GO

Но как обычно есть, блядь, грабли. Если MSSQL сервер запущен под пользователем "NT Service\MSSQLSERVER", то это естественно не работает.
Вышел из положения так:

  1. Создал на машине, на которую делал бэкап, пользователя SQLGlobalUser с правами только на папку куда производится бэкап;
  2. На машине на которой крутится SQL сервер создал такого же пользователя и внес его группу администраторов;
  3.  Службу SQL сервера запускаю от имени этого пользователя; 
  4. Пароли и пользователя SQLGlobalUser одинаковые на двух машинах. 
После перезагрузки службы SQL сервера все заработало.



Лучший поставщик комплектующих

четверг, 27 ноября 2014 г.

IIS 8.5



Развлекался тут собственно
На сервере Windows 2012 развернул сайт, а он мне

Bad Request - Invalid Hostname


HTTP Error 400. The request hostname is invalid.









причем по барабану localhost в адресной строке или IP-адрес.




Оказалось в привязках к вебсайту нужно оставлять незаполненным значение "Имя узла"



и даже брандмауэр настраивать не надо




[16.12.2014]
Собственно перешел с XML на БД естественно MS SQL Express 2014 (в данное время я люблю Microsoft - после Oracle (и не из-за баз последнего)). На локальном компе все хорошо: сайт отображается. Закидываю на сервер - ошибка:


[Win32Exception (0x80004005): Не удается найти указанный файл]

[SqlException (0x80131904): При установлении соединения с SQL Server произошла ошибка, связанная с сетью или с определенным экземпляром. Сервер не найден или недоступен. Убедитесь, что имя экземпляра указано правильно и что на SQL Server разрешены удаленные соединения. (provider: SQL Network Interfaces, error: 52 - Не найден компонент Local Database Runtime. Проверьте, что сервер SQL Server Express правильно установлен и использование компонента Local Database Runtime включено.)]
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +6564850
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +815
...ну и так далее


Перелазил, сука, все. Полез раздавать права на папку вебсервера пользователям DefaultAppPool. Причем, что характерно, такого юзера в винде нет. Его нужно искать хитрым способом: вводить в форму стандартного поиска такую штуку

IIS APPPOOL\DefaultAppPool


Однако это не помогло.
Оказывается нужно было ConnectionString поменять с
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\MainDB.mdf;Integrated Security=True;Connect Timeout=30" providerName="System.Data.SqlClient"


на


connectionString="Data Source=.\SQLEXPRESS;AttachDbFileName=|DataDirectory|\MainDB.mdf;Integrated Security=True;User Instance=True;Connect Timeout=30" providerName="System.Data.SqlClient"










Барахолка в Железнодорожном

Лучший поставщик комплектующих

понедельник, 10 ноября 2014 г.

УТ 11. Платформа 8.3

Синхронизация с бухгалтерией

При синхронизации с Бухгалтерией у пользователя под которым происходит обмен должны быть права:

  • Администратор
  • Администрирование
  • Запуск внешнего соединения
  • Полные права
Если не будет "Полные права", то создание синхронизации вываливается с ошибкой "Нарушение прав доступа"


ЧекККМ. Назначение продавца по умолчанию.
В настройках текущего рабочего места (Администрирование->РМК и оборудование->Настройки РМК для текущего рабочего места) нужно снять галку с опции "Менеджер торгового зала" в группе "Кто может быть продавцом"

Помощник продаж. Подразделение по умолчанию.
Указать в справочнике Пользователи в текущем пользователе его подразделение и перезайти в программу.

Включение модальных окон. Ждем до 2015 года.
Enable deprecated web platform features for a limited time
Data type:
List of strings
Windows registry location:
Software\Policies\Chromium\EnableDeprecatedWebPlatformFeatures
Mac/Linux preference name:
EnableDeprecatedWebPlatformFeatures
Supported on:
  • Chromium (Linux, Mac, Windows) since version 37
  • Chromium OS (Chromium OS) since version 37
  • Chromium (Android) since version 37
Supported features:
Dynamic Policy Refresh: Yes, Per Profile: Yes
Description:
Specify a list of deprecated web platform features to re-enable temporarily. This policy gives administrators the ability to re-enable deprecated web platform features for a limited time. Features are identified by a string tag and the features corresponding to the tags included in the list specified by this policy will get re-enabled. If this policy is left not set, or the list is empty or does not match one of the supported string tags, all deprecated web platform features will remain disabled. While the policy itself is supported on the above platforms, the feature it is enabling may be available on fewer platforms. Not all deprecated Web Platform features can be re-enabled. Only the ones explicitly listed below can be for a limited period of time, which is different per feature. The general format of the string tag will be [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. As reference, you can find the intent behind the Web Platform feature changes at http://bit.ly/blinkintents.
  • "ShowModalDialog_EffectiveUntil20150430" = Enable ShowModalDialog API through 2015.04.30
Example value:
Windows:
Software\Policies\Chromium\EnableDeprecatedWebPlatformFeatures\1 = "ShowModalDialog_EffectiveUntil20150430"
Linux:
["ShowModalDialog_EffectiveUntil20150430"]
Mac:
<array>
  <string>ShowModalDialog_EffectiveUntil20150430</string>
</array>
Back to top

Эквайринг
При создании договора эквайринга обязательно нужно указать банковский счет. Иначе при создании элемента справочника "Эквайринговые терминалы" не будет возможности выбрать опцию "Касса ККМ". Опция "Касса" будет выбирать кассу организации. А опция "Касса ККМ" не даст выбрать кассу ККМ  

Ссылки полезные
Таблица транзакций Штрих-М Кассир


Лучший поставщик комплектующих

суббота, 3 мая 2014 г.

Не найден необходимый драйвер для дисковода оптических дисков

Да-с. На ноутбуке HP Pavilion m6-1040er. Пытался установить Windows 7 c флэшки. Всё загружается. А потом бах. Сообщение. Не найден необходимый драйвер для дисковода оптических диск. Оказывается, на сем ноутбуке есть USB разъемы с обозначением SS (надеюсь это Super Speed) и один без такого значка. Вот в такой, без значка воткнул, и ошибка ушла.


Лучший поставщик комплектующих

пятница, 25 апреля 2014 г.

Scheduled Tasks в OIM11gR2

Таблица в которой находятся сами задачи QRTZ92_JOB_DETAILS она связана с таблицей QRTZ92_TRIGGERS по полю JOB_NAME.

Вот кто они после этого? Имя задачи не поменяешь.


Лучший поставщик комплектующих

пятница, 21 февраля 2014 г.

Планшетный компьютер DIGMA Plane 7.0 3G tt702m 8Gb Wi-Fi, 3G

Купил сие чудо в Ситилинке.

История занимательная - обошёлся мне в 80 руб. Сдал поломавшийся за три месяца 3Q Q-Pad QS0728C, который в сравнении с дигмой отличается в лучшую сторону только IPS матрицей, у T7702m матрица TFT, что видно сразу. В всем остальном - небо и земля. Digma однозначно лучше.

GFXBench дал ему 72 попугая

Инженерное меню можно запустить так:
*#*#3646633#*#* набираем в звонилке


Лучший поставщик комплектующих