Телеграм канал додатку WP Sales
Багато людей питають мене як знайти свіжу інформацію про наш додаток для менеджерів продажу WP Sales, а отже прийдеться і тут опублікувати посилання на наш інформаційний Телеграм канал.
На каналі викладаємо:
- Невеликі пояснення по функціоналу додатку WP Sales.
- Новини по розробці.
- Додаткові налаштування по інтеграціям.
- Спілкування по майбутнім функціям додатку.
Заходьте та підписуйтесь на Телеграм канал, аби не пропустити останні новини!
Вышло новое приложение для сбора заказов. Информация в шапке блога. Скачать можно по приглашению или по специальной ссылке. Пишите в ЛС, если Вы желаете присоединится к тестированию.
Восстановление поврежденного лог-файла базы SQL
Я уже пару раз встречал ошибку, когда база данных работает и вроде бы все нормально. Модель восстановления у базы данных «Простая», но очистка файла логов не происходит. И делаешь полный бекап и журнала транзакций, но сокращение не происходит. В итоге куча данных просто остается на системном диск, а копия базы в архиве просто громадных размеров. Зачастую при простой модели восстановления файлы логов журнала транзакций никому не нужны и их можно было удалить, но не получается.
Я перепробовал кучу вариантов за весь период своей практики и только недавно нашел код, который это делает быстро и безо всяких проблем. Для это надо просто открепить базу данных и сделать присоединение с полным перестроением файла логов. Ну типа с эмуляцией, что файл логов поврежден и его надо исправить. Он вроде бы и нормальный, но мы говорим серверу, что он поврежден.
В итоге файл логов восстанавливается как пустой и новый с нулевым размером и правильным хешем. Тем самым прикрепляется уменьшенный размер базы данных за счет нулевого размера файла логов базы данных.
Инструкция по работе простая:
1. Отсоединяем базу данных с удалением используемых сеансов подключений.
2. Удаляем или перемещаем большой и старый файл логов на резервный диск.
3. Файл базы остается на старом месте.
4. В запросе примера укажите старое расположение файла базы данных *.mdf
5. Выполняем присоединение с помощью запроса.
1 2 3 4 5 6 |
USE master; CREATE DATABASE [utp] ON (FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\utp.mdf') FOR ATTACH_FORCE_REBUILD_LOG; GO |
В примере у меня база данных называется «utp», но вам надо подставить свое имя, которое имеет база. Ну, и проследите что бы путь к ней тоже был правильным. Удачи!
Разработка ПО на Flutter (Dart)
Я уже несколько месяцев нормально так начал заниматься созданием приложений для Android и iOS. Но тут как всегда при начале обучения приходится записывать и запоминать много информации. Решил выкладывать сюда все то. что нашел полезного для начинающего разработчика.
- App Icon Generator. Создание комплекта иконок для приложения из одной нормальной большой картинки. Закинули туда картинку, а получили целый архив на разные устройства.
- Launcher icon generator. Классный ресурс по созданию иконок из шаблона. Тест и картинки ну короче попробуйте сами… 🙂
- Material Icons. Комплект бесплатных материальных векторных иконок. Старайтесь как начинающий разработчик использовать пока что только их. Они масштибируемые и это будет красиво работать на всех устройствах. тем более что там их тысячи на все случаи жизни.
- Material Design Colors. Список цветов и палитр с цветовыми раскладками. Берите и используйте. Оно того стоит.
- https://www.mockaroo.com. Сайт для генерации данных в формате JSON. С его помощью можно создать структуру файла обмена между разными системами. Можно сделать свой шаблон и сохранить. Далее этот код можно использовать для генерации класса в языке Dart. Объекты позволят Вам хранить данные в списках. Например можно создать объект документа «Заказ покупателя». Далее храните, изменяйте, редактируйте и манипулируйте как угодно.
- https://javiercbk.github.io/json_to_dart. Сайт для создания класса в я зыке Dart. Вставляем сюда код данных JSON и сайт сделает целый кусок кода для использования в ваших программах.
- https://app.quicktype.io/#l=dart. Сайт для генерации классов на языке Dart. Очень хороший сайт , который экономит кучу времени. 🙂
- http://json.parser.online.fr/ Сайт для анализа JSON файлов
Дальше будет больше…
Печать акциза на фискальном аппарате Екселлио FP-280
В общем была проблема, что после обновления драйвера устройства фискальник все равно не печатал номер акцизной марки, как это требовалось по законам Украины.
В итоге перезвонив во все компании, я нашел решение: надо было ввести технологические коды в окне программы RROinit.exe.
Надо ввести вместо существующих в поле ввода.Поле ввода находиться: вкладка «Касові операції» — Поле ввода [CMD, DATA] — ввести код и нажать кнопку «>> >>». Потом будет окошко типа answer, то просто нажимаем ок.
Код: 43, A1
Вот и все. После этого надо переделать код обработки обслуживания на похожий как у меня. Получается что надо заполнять реквизит объекта драйвера для каждой строки печати.
Пример указываю ниже, может кому-то поможет. Замечу, что тут еще важна налоговая группа, которую Вы используете. У меня она всегда 6, а потому была прописана вручную прямо в коде.
Код УКТВЕД всегда должен быть без неразрывных пробелов! Иначе просто не печатает.
Код акциза это английские буквы. Так как в офисах используются иногда в разрыв клавиатуры, то надо делать транслитерацию на английские буквы. А то бывает, что у пользователя русская или украинская раскладка включена и она будет сканировать английский код, а в окно программы попадут русские буквы как на клавиатуре. 🙂
Как освободить память SQL Server?
Начитался я в свое время статей в англоязычном сегменте Интернета и пришел к выводу, что реконфигурация сервера под меньший объём памяти — это единственный способ хоть как-то уменьшить аппетиты сервера SQL после тяжелого рабочего дня.
Выполняется запрос каждые сутки ночью без разъединения сеансов 1С:Предприятия или перезагрузки экземпляра SQL сервера. Я пока что не видел с этим каких-то проблем во время работы пользователей. Но тестирование на «живых людях» еще идет и пока что результат позитивный.
Можно использовать этот метод, но пока что когда они не работают. Освобождение памяти происходит один раз ночью по регламенту методом выполнения T-SQL инструкции, что как бы само по себе правильно. 🙂
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
-- yarsort.com.ua -- Очистка памяти SQL сервера -- Включение отображения дополнительных параметров системной хранимой процедуры sp_configure sp_configure 'show advanced options', 1; GO RECONFIGURE; -- Подтверджение изменения конфигурации GO -- Временно уменьшаем размер максимальной памяти SQL сервера -- Рекомендуется ставить его в 2 GB. Так избежим ошибок рестарта, если они понадобятся. -- Максимальная память сервера: 2147483647MB Минимальная память сервера: 128MB (256MB) sp_configure 'max server memory', 2048; -- 2GB GO RECONFIGURE; -- Подтверджение изменения конфигурации GO -- Ждем пару секунд или минут. Ставим вручную опытным путем. WAITFOR DELAY '00:00:05'; GO -- Возвращаем максимальный размер памяти SQL сервера. -- Ставим размер не на полный размер памяти сервера, а за минусом 3GB от общего объема. sp_configure 'max server memory', 8192; -- 8GB GO RECONFIGURE; -- Подтверджение изменения конфигурации GO |
Программный переворот картинки в 1С
Я помню в 2014 году была ситуация. когда надо было делать переворот картинки на форме. Программа выгружала картинку иногда не в такой пропорции как надо было и в итоге запарился делать вручную этот разворот. В итоге родился мелкий скрипт для утилиты nconvert.exe
В архиве сама утилита, но можно скачать новую из официального источника и сам файл запуска на языке VBS.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
'Rotate image after printing 'Author: Stryzhakov Yaroslav '26.05.14 Option Explicit Dim objArgs, WshShell Set objArgs = WScript.Arguments If objArgs.Count = 0 Then MsgBox "This script needs a parameter!" WScript.Quit End If Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Exec "C:\nconvert.exe -overwrite -rotate 90 -c 7 " & objArgs(0) WScript.Quit |
Утилита: Скачать
Сжатие и очистка логов всех файлов баз данных
Генерация кода для сжатия файлов баз данных. Код генерирует в сообщениях текст для выполнения запроса.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
USE MASTER print '*****************************************' print '************ Czyścik LDF ****************' print '*****************************************' declare @isql varchar(2000), @dbname varchar(64), @logfile varchar(128), @recovery_model varchar(64) declare c1 cursor for SELECT d.name, mf.name as logfile, d.recovery_model_desc --, physical_name AS current_file_location, size FROM sys.master_files mf inner join sys.databases d on mf.database_id = d.database_id --where recovery_model_desc <> 'SIMPLE' and d.name not in ('master','model','msdb','tempdb') and mf.type_desc = 'LOG' and d.state_desc = 'online' open c1 fetch next from c1 into @dbname, @logfile, @recovery_model While @@fetch_status <> -1 begin print '----- OPERATIONS FOR: ' + @dbname + ' ------' print 'CURRENT MODEL IS: ' + @recovery_model select @isql = 'ALTER DATABASE ' + @dbname + ' SET RECOVERY SIMPLE' print @isql exec(@isql) select @isql='USE ' + @dbname + ' checkpoint' print @isql exec(@isql) select @isql='USE ' + @dbname + ' DBCC SHRINKFILE (' + @logfile + ', 1)' print @isql exec(@isql) select @isql = 'ALTER DATABASE ' + @dbname + ' SET RECOVERY ' + @recovery_model print @isql exec(@isql) fetch next from c1 into @dbname, @logfile, @recovery_model end close c1 deallocate c1 |
Перенос файлов базы данных tempdb на сервере MSSQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
USE master GO ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'F:\SQL_tempdb\tempdb.mdf') GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'F:\SQL_tempdb\templog.ldf') GO ALTER DATABASE tempdb MODIFY FILE (NAME = temp2, FILENAME = 'F:\SQL_tempdb\tempdb_mssql_2.ndf') GO ALTER DATABASE tempdb MODIFY FILE (NAME = temp3, FILENAME = 'F:\SQL_tempdb\tempdb_mssql_3.ndf') GO ALTER DATABASE tempdb MODIFY FILE (NAME = temp4, FILENAME = 'F:\SQL_tempdb\tempdb_mssql_4.ndf') GO ALTER DATABASE tempdb MODIFY FILE (NAME = temp5, FILENAME = 'F:\SQL_tempdb\tempdb_mssql_5.ndf') GO ALTER DATABASE tempdb MODIFY FILE (NAME = temp6, FILENAME = 'F:\SQL_tempdb\tempdb_mssql_6.ndf') GO |