Нарушена структура индексов таблицы CJ1196
Нарушена структура индексов таблицы CJ1238
Нарушена структура индексов таблицы CJ447
Нарушена структура индексов таблицы CJ757
Пришлось столкнуться с этой ошибкой. Честно говоря, я был поражен отсутствием подробной инструкции по решению данной проблемы в интернете. Эта ошибка возникает на платформе 7.7 при использовании компоненты "расчет" (или проще говоря, когда есть расчет зарплаты) при работе с Microsoft SQL Server 2000. Причем при входе в монопольном режиме ошибка исчезает, но при попытке входа нескольких пользователей появляется опять. Причиной появления такой ошибки является смена платформы 1С Предприятия на более новую версию (в моем случае это был 27 релиз платформы), а база данных на SQL сервере была загружена более старой версией. У меня она возникла при не значительном изменении конфигурации. А именно, в состав конфигурации был добавлен один дополнительный отчет, который никак не был связан с зарплатной частью. По данным найденным, в сети я понял, что проблема связана с несоответствием файла 1cv7.dds и фактической структурой данных на SQL Server-е. Обычно файл 1cv7.dds можно перегенерировать. Для этого его нужно переместить из папки базы данных 1с, сделать незначительные изменения в конфигурации и сохранить их. Один из вариантов это зайти в конфигуратор и добавить пробел в название конфигурации или еще один Конфигуратор-Конфигурация-Открыть конфигурацию-Развернуть ветку конфигурации "Виды расчетов"-Встать на любой вид расчета-Нажать на нем правую кнопку мышки-В выпавшем меню выбрать Упорядочить.-После этого в заголовке окна после слова Конфигурация должная появиться Звездочка "*". Затем нажимаем Ctrt+S или нажимаем на дискетку. Соглашаемся со всеми вопросами. Пробуем закрыть конфигуратор и запустить предприятие в "не монопольном" режиме. Если не помогло. Заходим еще раз конфигуратор. В меню администрирование выбираем выгрузить данные. Затем в заходим в Enterprise manager SQL сервера. Отключаем базу данных (Detach database). Создаем новую базу в SQL с тем же именем. Можно и в той же папке, но тогда нужно убрать файлы базы SQL. Но и в конце концов снова зайти в конфигуратор и загрузить данные. При этом стоит обновить все Платформы 1С предприятия до последней версии.
вторник, 2 августа 2011 г.
среда, 27 июля 2011 г.
Контроль переписки в Postfix или Big Brother watching you
Иногда, необходимо контролировать переписку определенных сотрудников или же всех сотрудников. Т.е. чтобы при отправке письма пользователем, его почта доставлялась как обычно адресату, а также дублировалось письмо в определенный ящик.
Для доставки копии ВСЕХ сообщений (входящих и исходящих) на указанный адрес (поддерживается с Postfix v.2.1) добавляем в /etc/postfix/main.cf добавляем вот такой вот параметр:
always_bcc = address
где address - мыло ящика, куда необходимо дублировать ВСЕ месаджи от ВСЕХ
Для контроля определенных сотрудников необходимо использовать таблицы соответствия отправителя/получателя с адресами доставки копий сообщений sender_bcc_maps = type:table и recipient_bcc_maps = type:table
Рассмотрим 2 варианта реализации - на основе файлов (индексированных карт hash) и базы данных MySQL.
Способ с использованием индексированных hash карт
Мы можем контролиривать, что хотим получить в результате - копировать на определенный ящик только отправляемые пользователем сообщения или только входящие, а может и то и другое.
Для копирования исходящих сообщений:
Создаем файл /etc/postfix/sender_bcc. Внутрь помещаем правило о том с чьего мала и куда слать копию:
user@mydomain.ru backup@mydomain.ru
user2@mydomain.ru backup@mydomain.ru
Добавляем в main.cf мапу на этот файл:
sender_bcc_maps = hash:/etc/postfix/sender_bcc
Индексируем:
#>postmap /etc/postfix/sender_bcc
Перезагружаем постфикс и любуемся копированием исходящей почты :).
По аналогии в /etc/postfix/recipient_bcc создаем правило для копирования входящей почты:
user@mydomain.ru backup@mydomain.ru
user2@mydomain.ru backup@mydomain.ru
И опять же добавляем в main.cf мапу на этот файл:
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc
Индексируем:
#>postmap /etc/postfix/recipient_bcc
ВАЖНО!!! Если в последствии в файлы /etc/postfix/recipient_bcc и /etc/postfix/sender_bcc вносятся изменения - необходимо перестраивать их хэш (периндексировать):
#>postmap /etc/postfix/recipient_bcc
#>postmap /etc/postfix/sender_bcc
Способ с использованием MySQL
Подразумевается, что уже используется MySQL совместно с Postfix для хранения учетных записей, транспорта и т.д.
Создаем таблицу bcc-ей в базе данных:
#>mysql -p mail
mysql>CREATE TABLE IF NOT EXISTS bcc (
id int(10) unsigned NOT NULL auto_increment,
sender varchar(128) NOT NULL default '',
recipient varchar(128) NOT NULL default '',
copy varchar(128) NOT NULL default '',
PRIMARY KEY (id)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
В /etc/postfix/ создаем файлы sender_bcc.cf:
user = mail_admin
password = mailadminpass
dbname = mail
query = SELECT copy FROM bcc WHERE sender = '%s'
hosts = 127.0.0.1
и recipient_bcc.cf:
user = mail_admin
password = mailadminpass
dbname = mail
query = SELECT copy FROM bcc WHERE recipient = '%s'
hosts = 127.0.0.1
В /etc/postfix/main.cf добавляем:
sender_bcc_maps = mysql:/usr/local/etc/postfix/sender_bcc.cf
recipient_bcc_maps = mysql:/usr/local/etc/postfix/recipient_bcc.cf
Перезапускам Postfix для применения изменений. Изменения данных в таблице MySQL bcc применяются без перезапуска Postfix.
Избавляемся от дублирования сообщений bcc_maps
Чтобы не происходило дублирования почты при использовании bcc_maps в /etc/postfix/master.cf следует добавить строчку перед conten_filter. Т.е. должно быть где-то так:
smtp inet n - n - - smtpd
-o content_filter=
-o receive_override_options=no_address_mappings
Замечание! Если на серваке крутится несколько виртуальных доменов, и надо "копировать" переписку только с одного домена, то в качестве sender или recipient необходимо указывать маску. Например, @mydomen1.com
Жопиздан:)
среда, 20 июля 2011 г.
Подключение принтеров HP в Ubuntu
Есть замечательная приблуда HPLIP (можно качнуть с оф. сайта HP). Вроде и подключаются через нее принтера, и вроде даже работать должны, но есть нюанс: HPLIP не умеет подключать расшаренные принтера. Поэтому предлагаю использовать foo2zjs.
Это замечательный Linux драйвер для принтеров, работающих по протоколу ZjStream. Его работой очень доволен...
ВАЖНО!!! НЕ надо ставить foo2zjs из стандартных репозиториев. Необходимо качать свежую сборку с оф сайта. Приступим-с:
Get:
$wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz
Unpack:
$tar zxf foo2zjs.tar.gz
$cd foo2zjs
Compile:
$make
Get extra files from the web, such as .ICM profiles for color correction, and firmware. Select the model number for your printer:
$./getweb cpwl # Get Minolta Color PageWorks/Pro L .ICM files
$./getweb 2200 # Get Minolta 2200 DL .ICM files
$./getweb 2300 # Get Minolta 2300 DL .ICM files
$./getweb 2430 # Get Minolta 2430 DL .ICM files
$./getweb 1000 # Get HP LaserJet 1000 firmware file
$./getweb 1005 # Get HP LaserJet 1005 firmware file
$./getweb 1018 # Get HP LaserJet 1018 firmware file
$./getweb 1020 # Get HP LaserJet 1020 firmware file
$./getweb 1025 # Get HP LaserJet Pro CP1025nw .ICM files
Install driver, foomatic XML files, and extra files:
$su OR $sudo make install
#make install
(Optional) Configure hotplug (USB; HP LJ 1000/1005/1018/1020):
#make install-hotplug OR $sudo make install-hotplug
(Optional) If you use CUPS, restart the spooler:
#make cups OR $sudo make cups
Все! Запускаем system-config-printer и подключаем принтера (как локальные, так и шаровые).
Жопиздан:)
четверг, 14 июля 2011 г.
Организация VPN сервера в Ubuntu
Устанавливаем VPN сервер:
Далее ковыряем конфиг /etc/pptpd.conf, чтобы получилось вот такое:
Теперь ковырнем конфиг опций /etc/ppp/pptpd-options:
$sudo apt-get install pptpd
Ок. Демон установился и запустился. По-умолчанию, демон слушает TCP-порт 1723 и использует протокол GRE (он же протокол 47) . Разрешаем на фаерволе входящие подключения на этот порт по этому протоколу (IPTABLES =/sbin/iptables, если кто забыл:)) ):
$IPTABLES -A INPUT -p gre -s 0/0 -j ACCEPT $IPTABLES -A OUTPUT -p gre -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A INPUT -p tcp -s 0/0 --dport 1723 j ACCEPTили через shorewall, /etc/shorewall/rules добавляем:
ACCEPT net fw tcp 1723 GRE(ACCEPT) net fw
Далее ковыряем конфиг /etc/pptpd.conf, чтобы получилось вот такое:
option /etc/ppp/pptpd-options #noipparam logwtmp bcrelay eth0options - путь, где лежит конфиг опций; ВАЖНО!!! должно быть закаментировано! noipparam - если опция активна, то клиенту не будет передаваться его IP; logwtmp - позволяет передавать PPTP-серверу лог аутентификации пользователей через стандартную функцию logwtmp (нужна для отладки); bcrelay - разрешить передачу VPN-клиентам широковещательных пакетов с внутреннего интерфейса eth0; localip - ip нашего VPN сервера; remoteip - диапазон ip, выдаваемых клиентам.localip 10.177.36.3 remoteip 10.177.36.10-15
Теперь ковырнем конфиг опций /etc/ppp/pptpd-options:
name pptpd auth refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 proxyarp nodefaultroute logfile /var/log/pptpd.log lock nobsdcompname - имя сервера (должно совпадать с параметром server в /etc/ppp/chap-secrets см. описание ниже); auth - требовать от клиента обязательной аутентификации; refuse-pap,refuse-chap,refuse-mschap - не принимать подключения от клиентов использующих ненадежные протоколы проверки пароля (pap, chap, ms chap v1); require-mschap-v2 - требовать от клиентов наиболее (на сегодняшний день) надежный протокол проверки пароля; require-mppe-128 - использовать механизм шифрования с 128-битным ключем; proxyarp - директива серверу работать с локальной сетью не используя маскарадинг (используется если клиентам выдаются ip-адреса из локальной подсети); nodefaultroute - не менять клиентам маршрут по-умолчанию (что б при установки соединения не отваливались интернеты) ВАЖНО!!!!! Не смотря на nodefaultroute, под Windows при установке VPN все равно маршрут по-умолчанию становиться на VPN, чтобы этого не происходило идем в свойства VPN соединения → Сеть → Протокол TCP/IP → Свойства → Дополнительно, там снимаем галку "Использовать основной шлюз в удаленной сети". logfile - куда писать логи; nobsdcomp - явное указание серверу, что компьютер работает под осью отличной от BSD (OpenBSD, FreeBSD).
Добавляем пользователей в /etc/ppp/chap-secrets:
# client server secret IP addresses test pptpd testpass test1 pptpd test1pass 10.177.36.10
Таким образом мы создали пользователя "test" с паролем "testpass" и пользователя "test1" с паролем "test1pass" c явным указанием ему получать ip-адрес "10.177.36.10".
Перезапускаем демона:
$sudo /etc/init.d/pptpd restart
Все! VPN-сервер готов к работе.
Если VPN-сервер работает за NAT-том, то еще необходимо организовать к нему проброс. На VPN-сервере разрешаем форвард пакетов:
$sudo mcedit /proc/sys/net/ipv4/ip_forwardи туда пишем:
net.ipv4.ip_forward=1
потом выполняем:
$sudo sysctl -p
Ну и, собственно проброс... На шлюзе в /etc/shorewall/rules добавляем:
DNAT net loc:10.177.36.3 tcp 1723 DNAT net loc:10.177.36.3 47
На этом настройка завершена...
А если все подключается, но ничего не работает, то вполне возможно нужно изменить размер MTU, таким образом, чтобы он был меньше MTU соединения с провайдером. Например, вы подключаетесь к провайдеру с MTU=1400 (см. в настройках роутера), тогда для своего VPN сервера нужно задать меньшее значение, например 1300. Для этого идем в /etc/ppp/pptpd-options и дописываем:
mru 1300 mtu 1300
ПОЛЕЗНЫЕ ССЫЛКИ:
Жопиздан:) (с) Job Is Done
четверг, 14 апреля 2011 г.
Установка принтера Canon LBP 3010 в ubuntu 9.04 +
Качаем необходимые дрова для принтера вот отсюда http://software.canon-europe.com/
Ставим драйвера в таком порядке (версия драйвером может отличаться):
1. cndrvcups-capt_2.20-1_i386.deb
2. cndrvcups-common_2.20-1_i386.deb
Далее рестартуем CUPS:
$sudo /etc/init.d/cups restart
Регистрируем принтер в системе. Смотрим какой ppd файл соответствует нашему принтеру https://help.ubuntu.com/community/HardwareSupportComponentsPrinters/CanonPrinters?highlight=%28%28CanonCaptDrv190%29%29 и
собственно регистрируем его:
$sudo /usr/sbin/lpadmin -p LBP3010 -m CNCUPSLBP3050CAPTK.ppd -v ccp:/var/ccpd/fifo0
Регистрируем usb - соединение принтера:
$sudo /usr/sbin/ccpdadmin -p LBP3010 -o /dev/usb/lp0
в ответ должны получить что то типа:

значит все гуд.
Вот теперь для нормальной работы принтера нужно подправить файл ccpd:
$sudo mcedit /etc/init.d/ccpd
файл должен содержать только:
# startup script for Canon Printer Daemon for CUPS (ccpd)
### BEGIN INIT INFO
# Provides: ccpd
# Required-Start: $local_fs $remote_fs $syslog $network $named
# Should-Start: $ALL
# Required-Stop: $syslog $remote_fs
# Default-Start: 2 3
# Default-Stop: 0 1 4 5 6
# Description: Start Canon Printer Daemon for CUPS
### END INIT INFO
DAEMON=/usr/sbin/ccpd
LOCKFILE=/var/lock/subsys/ccpd
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=ccpd
DESC="Canon Printer Daemon for CUPS"
test -f $DAEMON || exit 0
. /lib/lsb/init-functions
case $1 in
start)
log_begin_msg "Starting $DESC: $NAME"
start-stop-daemon --start --quiet --exec $DAEMON
log_end_msg $?
;;
stop)
log_begin_msg "Stopping $DESC: $NAME"
start-stop-daemon --stop --quiet --oknodo --exec $DAEMON
log_end_msg $?
;;
status)
echo "$DESC: $NAME:" `pidof $NAME`
;;
restart)
log_begin_msg "Restarting $DESC: $NAME"
start-stop-daemon --stop --quiet --oknodo --exec $DAEMON
sleep 1
start-stop-daemon --start --quiet --exec $DAEMON
log_end_msg $?
;;
*)
echo "Usage: ccpd {start|stop|restart|status}"
exit 1
;;
esac
exit 0
сохраняем и перезапускаем canon`вского демона:
$sudo /etc/init.d/ccpd restart
Теперь, чтобы принтер работал и после перезагрузки системы, выполняем:
$sudo update-rc.d ccpd defaults 50
Валим, напоследок, стандартный принтер, найденый системой.
Жопиздан (с) Job Is Done
вторник, 12 апреля 2011 г.
Сохранить установленный deb пакет из системы
Иногда, необходимо сохранить установленный deb пакет из системы. Делается это просто. Ставим dpkg-repack:
и выполняем команду:
На выходе имеем свежесобранный пакет в текущем каталоге.
$sudo apt-get install dpkg-repack
и выполняем команду:
$sudo dpkg-repack <имя необходимого пакета>
На выходе имеем свежесобранный пакет в текущем каталоге.
Жопиздан (с) Job Is Done
среда, 16 марта 2011 г.
Запретить apt-get обновлять конкретный пакет Ubuntu
Иногда возникает необходимость отказаться от обновления некоторых пакетов. Через ГУЙ это не составляет никаких проблем. например, через sinaptic. Но, часто, обновление и установка пакетов проходит в терминале. Захолдить пакет для apt-get можно так:
$ echo "<полное название пакета> hold" | sudo dpkg --set-selections
<полное название пакета> — можно узнать так:
$ dpkg --get-selections | grep <название пакета>
Чтобы снова разблокировать пакет, необходимо выполнить туже команду, только параметр hold заменить на install
Подписаться на:
Сообщения (Atom)