четверг, 29 мая 2014 г.

Как отключить автозагрузку DevExpress CodeRush при старте Visual Studio

Ситуация 
Visual Studio сильно тормозит при загрузке из-за CodeRush.

Решение
Помогла статья https://www.devexpress.com/Support/Center/Question/Details/Q390681

Если в двух словах и по русски
Заходите в настройки CodeRush
Выставляете в дропдауне снизу уровень "Эксперт"

В левой панели выбираете Core/Startup  (опция Startup появляется только при выставлении уровня "Эксперт")
И ставите галочку  "Load manually" (Загружать вручную)

Тогда CodeRush не будет загружаться автоматически при старте студии

вторник, 27 мая 2014 г.

Visual Studio 2012 переход ASP.NET MVC проекта на Razor 3

Как в студии

по простому: установите пакет Microsoft.AspNet.Mvc

и замените 2 на 3 в вебконфиге там где встречается слово WebPages

ссылка по теме: http://stackoverflow.com/questions/19102831/how-to-install-asp-net-mvc-5-in-visual-studio-2012

среда, 21 мая 2014 г.

Инструкции по обновлению, вставке или удалению из хранилища затронули непредвиденное число строк ({0})

Окружение

Visual Studio 2012
EF 5
MS SQL Server 2008

При добавлении записи в таблицу возникает ошибка

Инструкции по обновлению, вставке или удалению из хранилища затронули непредвиденное число строк ({0}). Сущности могли быть изменены или удалены с момента их загрузки. Обновите записи диспетчера ObjectStateManager

Как искал

В русскоязычном сообществе почти ничего не нашел

нашел занятный сайт - переводчик ошибок
http://finderr.net/clr/ru/%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8-%D0%BF%D0%BE-%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8E-%D0%B2%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B5-%D0%B8%D0%BB%D0%B8-%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D1%8E-%D0%B8%D0%B7-%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D0%BB%D0%B8%D1%89%D0%B0-%D0%B7%D0%B0%D1%82%D1%80%D0%BE%D0%BD%D1%83%D0%BB%D0%B8-%D0%BD%D0%B5%D0%BF%D1%80%D0%B5%D0%B4%D0%B2%D0%B8%D0%B4%D0%B5-/17429932

Далее искал уже по ошибке

Store update, insert, or delete statement affected an unexpected number of rows ({0}). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries.

Свел возможные варианты решения

1. Вы не указываете значение первичного ключа при записи.
Проверьте. если дейстительно первичный ключ нулл - задайте его явно (часто ребята забывают возвращать его из формы, или при database сценарии указывают это поле как пропускаемое)

если у вас этот вариант - смотрите ссылки
http://rpelepei.blogspot.com/2010/05/0.html
или
http://stackoverflow.com/questions/1836173/entity-framework-store-update-insert-or-delete-statement-affected-an-unexpec

2. Ошибки многопользовательской работы
http://stackoverflow.com/questions/1836173/entity-framework-store-update-insert-or-delete-statement-affected-an-unexpec

3. Побочные эффекты триггеров

http://stackoverflow.com/questions/6819813/solution-for-store-update-insert-or-delete-statement-affected-an-unexpected-n

http://stackoverflow.com/questions/5820992/error-when-inserting-into-table-having-instead-of-trigger-from-entity-data-frame

http://www.britishdeveloper.co.uk/2010/06/entity-framework-optimisticconcurrencye.html

У меня был третий вариант. опишу поподробнее:
Сразу оговорюсь, что игра с SET NOCOUNT ON/OFF мне не помогла.
Также не помог фиктивный  селект в конце триггера.

Таблица заказов ORDER
на ней висит триггер на Insert.
Триггер в свою очередь вызывал хранимую процедуру (синхронизация с таблицей пользователей) в которой делалась выборка из заказа (ORDER) которая не возвращала записей.
Оказалось этот селект и мешал Entity Framework'у нормально работать.

Что сделал: я переделал логику так чтобы не было пустых селектов из исходной таблицы



среда, 14 мая 2014 г.

Outlook: Сбой при регистрации библиотеки макрокоманд VB

Окружение

Windows 8.1,
установил Outlook2013

Проблема

Outlook при запуске выдает сообщение:

Сбой при регистрации библиотеки макрокоманд VB. Установите ее заново или выполните команду Regsvr32.exe Vbscript.dll для регистрации

Что НЕ помогло

Несколько раз сносил/ставил/восстанавливал Outlook, менял версии 64 на 32-разрядные.
Все без толку.

Суть проблемы и Решение

Оказалось, проблема в том, что некоторые программы, в том числе Outlook не могут работать, когда папка профиля пользовтаеля названа по русски (если быть точнее - с использованием символов Unicode).

Соответственно, Windows называет так папку, если вы указали русское имя пользователя
В проводнике Windows Показывает эту папку как
C:\Пользователи\Ваня 

Но на самом деле папка называется так
C:\Users\Ваня

(имя "Ваня" взял для примера, у вас может быть "Олег" или "Маша")

Решение: сделать так, чтобы папка профиля пользователя была названа с использванием только английских букв

Есть несколько путей решения

1. Полностью переустановить систему, и назвать нового пользователя английским именем.

2. Сменить имя папки профиля пользователя на английское

Пример для Windows 7 с использованием загрузочного диска
http://sos.mirtesen.ru/blog/43556428021/Izmenenie-papki-polzovatelya-v-Windows-7

Пример для Windows 8 с использованием другого пользователя с правами администратора
http://www.youtube.com/watch?v=jwl4YJlAx-A


Честно говоря я в спешке полностью переустановил систему, т.к. ноутбук был новый, данных особо не было.

PS: Никогда! Никогда! не называйте пользователя Windows русскими буквами!

Ссылки по теме

Обсуждение Outlook 2013 failed to start in Windows 8.1
http://answers.microsoft.com/en-us/office/forum/office_2013_release-outlook/outlook-2013-failed-to-start-in-windows-81/0c01712d-6f82-4e27-b331-61491730b215

Заметка в базе знаний Microsoft
Errors when you start Outlook, and your Windows user account contains Unicode characters
http://support.microsoft.com/kb/961100/en-us



среда, 30 апреля 2014 г.

Run Script On Multiple MS SQL DataBases

Problem

Run script on multiple MS SQL Server Databases (in My Case it is MS SQL Server 2008 databases)


Solution

I've write simple app to solve this problem.
Main idea: set the list of database connections and run script on each database from list

It's pretty simple, but very usefull for me.

Download

How to use

1. Fill database list
Fill the database list in file ConnectionStrings.txt
Format
host|dbname|user|password

One database info per line

2. Set the script
copy your script into file script.txt

3. Run Run.bat
That's all. All databases from ConnectionStrings.txt will be updated by script from script.txt


Feedback

Please, leave feedback in comments to this post

See also
Question on forums
http://www.dbforums.com/microsoft-sql-server/1621678-best-mssql-management-tools.html

discussions on stackoverflow
http://stackoverflow.com/questions/1461955/sql-server-execute-batch-t-sql-script-on-multiple-databases/27794906#27794906
http://stackoverflow.com/questions/3306218/run-script-on-multiple-dbssql-server

Накатить скрипт на несколько MS SQL баз

Задача

"Накатить" скрипт на несколько MS SQL баз (в моем случае MS SQL Server 2008)

Решение

Сделал простое приложение, которым и хочу здесь поделиться
Что делает приложение: накатывает скрипт на базы по списку

Скачать


Инструкция

1. Настроить список баз
задаете список баз в файле ConnectionStrings.txt
формат файла: список строк вида: 

host|dbname|user|password

по одной строке на базу

2. Указать скрипт
вносите SQL-скрипт в файл script.txt

3. Запустить Run.bat
Это все: скрипт из файла script.txt выполнится на всех базах из списка, который вы задали в файле ConnectionStrings.txt


Обратная связь

Пожелания/предложения оставляйте в комментариях к посту

См. также
Тема на форуме: обработка нескольких баз
http://www.dbforums.com/microsoft-sql-server/1621678-best-mssql-management-tools.html

обсуждение темы на stackoverflow
http://stackoverflow.com/questions/1461955/sql-server-execute-batch-t-sql-script-on-multiple-databases/27794906#27794906
http://stackoverflow.com/questions/3306218/run-script-on-multiple-dbssql-server

пятница, 14 марта 2014 г.

Битрикс 1С - не выгружаются нулевые остатки

Окружение

Битрикс 14 (14.0.14)
1С 8.2 (8.2.17.153) конфигурация Управление Торговлей для Украины 2.3 (2.3.18.1)

Проблема

В битрикс не выгружается информация о том что у товара нулевой остаток.
Т.е.е Если остаток больше нуля - битрикс его отображает после выгрузки.
Но если в 1С товара на остатках нет, то при выгрузке товара в битрикс информация об остатках не обновляется (остается тот остаток, который был до "нулевого").

Исследование

По этому вопросу наткнулся на ветку
https://dev.1c-bitrix.ru/community/forums/forum26/topic53668/
в ней и натолкнулся на идею.
На момент исследования решения не было

Решение

(подходит для тех, кто не боится поправить конфигурацию 1С)

В
Обработка.Обмен с сайтом.

Поправил функцию

ЗаполнитьСписокЗначенийПредложения

Там было такое условие

Если Остаток > 0 Тогда
  ДобавитьУзелCML(СписокЗначенийCML, "Количество", ФорматЗначенияДляCML(Остаток, ФорматКоличества));
КонецЕсли;

То есть при нулевом остатке в файл экспорта не попадала никакая информация
Я поправил его на такой вид (новый код выделил зеленым)

Если Остаток > 0 Тогда
  ДобавитьУзелCML(СписокЗначенийCML, "Количество", ФорматЗначенияДляCML(Остаток, ФорматКоличества));
иначе
  ДобавитьУзелCML(СписокЗначенийCML, "Количество", "0");
КонецЕсли;