• Движок форума для общения соседей по дому - удобный для мобильных устройств?

    @easycode Автор вопроса
    Sha644, может Вы и правы конечно... всегда хочется создать наиболее удобный инструмент решения проблем, пойду посмотрю что там с досками объявлений - есть ли что-то интересное в этом плане...
  • Движок форума для общения соседей по дому - удобный для мобильных устройств?

    @easycode Автор вопроса
    Sha644, это опыт, а не заблуждение! уже почти год - тонны болтовни - потому что чаты для болтовни и решения оперативных вопросов, а вот к примеру информация важная и обсуждения по конкретным темам сложно найти и увидеть, простую доску объявлений народ не хочет юзать - не удобно им с мобильных + иногда нужно хорошее голосование - которое не уйдет в бесконечную историю - а будет на виду 2-3 месяца.

    месенджеры останутся, а удобный инструмент для тематического обсуждения - станет достойной альтернативой
  • Движок форума для общения соседей по дому - удобный для мобильных устройств?

    @easycode Автор вопроса
    Надим Закиров, без push'ей, хранения авторизации в форуме - нет, это плохое начало.
    Only Android - вообще плохая история - вычеркнуть владельцев iPhone?

    тогда уж Tapatalk лучше прикрутить к какому-нибудь SMF, phpBB
  • Движок форума для общения соседей по дому - удобный для мобильных устройств?

    @easycode Автор вопроса
    Не увидел там ничего про мобильное приложение? Там его нет? Ну т.е. чтобы форумом можно было бы пользоваться через мобильное приложение?
  • Движок форума для общения соседей по дому - удобный для мобильных устройств?

    @easycode Автор вопроса
    Вы видимо дальше заголовка не прочитали и не увидели:
    Чаты в мессенджера похожи на полную свалку, где ничего нельзя найти и понять.


    месенджеры ужасны в этом смысле - в них невозможно группировать темы разговоров и потом что-либо находить...
  • При изменении размеров изображения в HTML, браузер мылит его, как побороть?

    @easycode Автор вопроса
    Дмитрий Чайников, еврика!!! спасибо! правда что там с поддержкой SVG в современных браузерах?
  • Перенести одну страницу с локального WordPress-сайта в рабочий на хостинге?

    @easycode Автор вопроса
    Otrivin, так на самом деле и поступил - оказалось самым коротким путём )
  • Перенести одну страницу с локального WordPress-сайта в рабочий на хостинге?

    @easycode Автор вопроса
    ID-шники вложений могут не совпасть, сайт на локалке устаревал всё это время - а на продакшене пополняли контент. Да и костыльно это всё.
    Я уже думаю как-то допилить экспорт/импорт родной от WordPress через XML файл - нужно как-то присобачить туда медиа-файлы рядом)
  • Переместить папку .git за пределы корневой папки сайта, но с сохранением возможности делать git pull?

    @easycode Автор вопроса
    dmitriy, ну и? альтернатива какая?
    вот есть сайт на Yii, его кодовая база уже 7 лет находится на приватном github

    сейчас внесли разрабы правки, зашли через SSH запустили .sh и в секунду всё обновилось как надо - и так уже лет 5

    какие ваши предложения?
  • Переместить папку .git за пределы корневой папки сайта, но с сохранением возможности делать git pull?

    @easycode Автор вопроса
    Lynn «Кофеман», а как еще без git pull ?
    нам же просто нужно обновлять код на сайте - с самого веб-сервера мы ничего не комитим естественно
  • 1С Бухгалтерия не создает счет при загрузке заказов с сайта?

    @easycode Автор вопроса
    У меня проект на Yii Framework 1.x, потому не обращайте внимание на Yii-код, по смыслу я думаю разберетесь где куда и что - если что пишите доп. вопросы.

    public function action1c_exchange()
    {
    
        $type = $_REQUEST['type'];
        $mode = $_REQUEST['mode'];    
        
        $options = Options::_getVal('1c_exchange', true);
    
        if ( !$_COOKIE['exchange_1c_key'] ) {
    
            if ($_SERVER['PHP_AUTH_USER']) {
                if ($_SERVER['PHP_AUTH_USER'] == $options['1с_login'] and
                    $_SERVER['PHP_AUTH_PW'] == $options['1c_password'] ) {
    
                    $exchange_1c_key = md5(mt_rand(0,100) . mktime() . 'dsfsdf45435343434');
                    Options::_update('exchange_1c_key', $exchange_1c_key);
                    
                    if ($mode == 'checkauth') {
                      echo "success\nexchange_1c_key\n$exchange_1c_key";
                      exit();
                    }
    
                } else {
                    $this->log_1c_exchange('Ошибка доступа при аунтификации!');
                    exit('Ошибка доступа! Неправильный логин или пароль!');
                }
            } else {
    
                header('WWW-Authenticate: Basic realm="My Realm"');
                header('HTTP/1.0 401 Unauthorized');
                exit(); 
            }
        } 
    
        $exchange_1c_key = Options::_getVal('exchange_1c_key');
        if ( $_COOKIE['exchange_1c_key'] != $exchange_1c_key or $exchange_1c_key == '' ) {
            $this->log_1c_exchange('Ошибка доступа: неверный ключ доступа в COOKIE!');
            echo "error\nОшибка доступа!\nНеверный ключ доступа!";
            exit();
        } 
    
        if ($type == 'sale' and $mode == 'query') {
    
            header("Content-type: text/xml; charset=utf-8");
            echo '<?xml version="1.0" encoding="utf-8"?>';
            echo '<КоммерческаяИнформация ВерсияСхемы="2.03" ДатаФормирования="' . date('Y-m-d') . '">';
    
            $condition = '`number` > 0';
    
            if ( trim($options['bill_numbers']) ) {
                $bill_numbers = explode(',', $options['bill_numbers']);
                $_numbers = array();
                if ( is_array($bill_numbers) and count($bill_numbers) ) {
                    foreach ($bill_numbers as $_number) {
                        $_number = (int) trim($_number);
                        if ( $_number > 0) 
                            $_numbers[] = $_number;
                    }
                }
                if (count($_numbers)) {
                    $condition = '`number` IN (' . implode(',', $_numbers) . ')';
                }
            } 
    
            $bills = Bills::model()->findAll(array(
                'condition'=>$condition,
                'order'=>'id DESC',
                'limit'=>$limit,
                'offset'=>$offset
            ));
    
            $doc_template = YiiBase::getPathOfAlias('application').DIRECTORY_SEPARATOR.'modules'.DIRECTORY_SEPARATOR.'bills'.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR.'bill'.DIRECTORY_SEPARATOR.'1c.php';
    
            if ( is_array($bills) and count($bills) ) {
                foreach ($bills as $bill) {
                    $_bills_numbers[] = $bill->number;
                    include($doc_template);
                }
            }
    
            echo '</КоммерческаяИнформация>';
    
            if ( is_array($_bills_numbers) and count($_bills_numbers) ) {
                $this->log_1c_exchange( "Выгрузка счетов (" . count($_bills_numbers) . "): " . @implode(', ', $_bills_numbers) );                
            } else {
                $this->log_1c_exchange( "Пустая выгрузка!"); 
            }
    
            exit();
        }
    
    
        if ($type == 'sale' and $mode == 'success') {
    
            Options::_update('exchange_1c_key', '');
    
            echo 'success';
            exit();
        }
    }


    Там инклудится $doc_template = YiiBase::getPathOfAlias('application').DIRECTORY_SEPARATOR.'modules'.DIRECTORY_SEPARATOR.'bills'.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR.'bill'.DIRECTORY_SEPARATOR.'1c.php'; - вот он:

    <Документ>
      <Ид><?php echo $bill->number; ?></Ид>
      <Номер><?php echo $bill->number; ?></Номер>
      <Дата><?php echo date('Y-m-d', strtotime($bill->date_invoice)); ?></Дата>
      <ХозОперация>Заказ товара</ХозОперация>
      <Роль>Продавец</Роль>
      <Валюта>руб</Валюта>
      <Курс>1</Курс>
      <Сумма><?php echo $bill->price * $bill->count; ?>.00</Сумма>
      <Контрагенты>
        <Контрагент>
          <Ид><?php $contragent_id = strtoupper(preg_replace('|(\S{8})(\S{4})(\S{4})(\S{4})(\S{12})|is', '$1-$2-$3-$4-$5', md5($bill->part ? $bill->part->company->id : $bill->entry_id))); echo $contragent_id; ?></Ид>
          <Наименование><?php echo $bill->entry_id ? $bill->entry->company : $bill->part->company->name; ?></Наименование>
          <Роль>Покупатель</Роль>
          <ОфициальноеНаименование><?php echo $bill->entry_id ? $bill->entry->company : $bill->part->company->name; ?></ОфициальноеНаименование>
          <ИНН><?php echo $bill->entry_id ? ( $bill->entry->id ? $bill->entry->inn : $bill->entryArch->inn) : $bill->part->company->inn; ?></ИНН>
          <КПП><?php echo $bill->entry_id ? ( $bill->entry->id ? $bill->entry->kpp : $bill->entryArch->kpp) : $bill->part->company->kpp; ?></КПП>
          <АдресРегистрации>
            <Представление><?php echo $bill->entry_id ? $bill->entry->legal_address : $bill->part->company->legal_address; ?></Представление>
            <Контакты>
              <Контакт>
                <Тип>Почта</Тип>
                <Значение><?php echo $bill->entry_id ? $bill->entry->email : $bill->part->company->email; ?></Значение>
              </Контакт>
              <Контакт>
                <Тип>Телефон</Тип>
                <Значение><?php echo $bill->entry_id ? $bill->entry->phone_numbers : $bill->part->company->phone_numbers; ?></Значение>
              </Контакт>
            </Контакты>
          </АдресРегистрации>
        </Контрагент>
      </Контрагенты>
      <Время><?php echo $bill->entry_id ? date('H:i:s', strtotime($bill->entry->created)) : date('H:i:s', strtotime($bill->part->created)); ?></Время>
      <Комментарий><?php echo Yii::app()->createAbsoluteUrl( ($bill->entry_id ? "/bills/billEdit/id/{$bill->id}/entry_id/{$bill->entry_id}" : "/bills/billEdit/id/{$bill->id}/company_id/{$bill->part->company->id}") . "?redirect=/bills/admin"); ?></Комментарий>
      <Товары>
        <Товар>
          <Ид><?php $product_id = strtoupper(preg_replace('|(\S{8})(\S{4})(\S{4})(\S{4})(\S{12})|is', '$1-$2-$3-$4-$5', md5($bill->id))); echo $product_id; ?></Ид>
          <Наименование><?php echo $bill->name; ?></Наименование>
          <БазоваяЕдиница Код="796" НаименованиеПолное="Штука" МеждународноеСокращение="PCE">шт</БазоваяЕдиница>
          <ЦенаЗаЕдиницу><?php echo $bill->price; ?>.00</ЦенаЗаЕдиницу>
          <Количество><?php echo $bill->count; ?></Количество>
          <Сумма><?php echo $bill->price * $bill->count; ?>.00</Сумма>
          <ЗначенияРеквизитов>
            <ЗначениеРеквизита>
              <Наименование>ВидНоменклатуры</Наименование>
              <Значение>Услуги</Значение>
            </ЗначениеРеквизита>
            <ЗначениеРеквизита>
              <Наименование>ТипНоменклатуры</Наименование>
              <Значение>Услуги</Значение>
            </ЗначениеРеквизита>
          </ЗначенияРеквизитов>
        </Товар>
      </Товары>
      <ЗначенияРеквизитов>
        <ЗначениеРеквизита>
          <Наименование>Статус заказа</Наименование>
          <Значение>Принят</Значение>
        </ЗначениеРеквизита>
      </ЗначенияРеквизитов>
    </Документ>


    на стороне сайта у меня вот такая вот мини-админочка для 1С обмена:
    5f1fcd92741c4331720730.png
  • 1С Бухгалтерия не создает счет при загрузке заказов с сайта?

    @easycode Автор вопроса
    Итак, я добрался до кода =)
    Постараюсь ответить на Ваши вопросы, насколько смогу:

    1) Я правильно понимаю что 1с-ка должна всего лишь иметь возможность загрузить с интернет-магазина *.xml файл, далее у себя распарсить его и добавить в свою базу данных?

    я честно говоря не знаю как там всё устроено внутри 1Ски - но 1Ске я отдаю XML-файл из своего скрипта

    2) При настройке обмена в 1с-ке, над кнопкой "Проверить подключение" есть поля "логин" и "пароль".

    Как я понял - это данные подключения 1Ски к вашему скрипту обмена информации, вы должны в своём скрипте проверять их - это чтобы никто другой не смог к Вашему скрипту подключится и забрать данные из Вашей базы.

    3) DEBUG.TXT это файл для записи в него возможных ошибок?

    да, именно так - ну и просто для логирования всего что мне нужно было в процессе

    4) При проверке подключения соединение успешное, НО это ведь только проверка, а как осуществляется сама загрузка *.xml? Нужен же пусковой механизм на стороне 1с-ки? Кнопка "Загрузить" или где-то выставляется время периодической загрузки?

    по поводу автоматической загрузки по расписанию не знаю - у меня была задача сделать ручную загрузку при нажатии кнопки Загрузить

    5) Нашёл таки кнопку "Загрузить" находится она в Продажи -> Счета покупателям, при клике по этой кнопке происходит авторизация, о чём пишется лог в файле DEBUG.TXT, но счёта не возникает. Сделал всё в точности. В чём может быть ошибка?

    сложно, сказать - давайте я вам лучше свой полный скрипт следующим комментарием вставлю и вы увидите как это всё устроено у меня (см. следующий комментарий)
  • 1С Бухгалтерия не создает счет при загрузке заказов с сайта?

    @easycode Автор вопроса
    Dmitriy2020, постараюсь ответить вам подробно в конце недели - я сейчас в командировке и нет под рукой кода
  • 1С Бухгалтерия не создает счет при загрузке заказов с сайта?

    @easycode Автор вопроса
    Dmitriy2020, добрый вечер. На 3и месяца вперед загружен работой, потому вряд ли смогу помочь. Но, вроде бы там ничего архи сложного - возможно у вас получится разобраться.
  • Как после нажатия кнопок в сообщении от Telegram-Bot'а скрыть их?

    @easycode Автор вопроса
    Влад, ответ лежал где-то здесь: https://github.com/irazasyed/telegram-bot-sdk/issu...
    но я добавлю свой ответ-примерчик, если что спрашивайте - у меня всё получилось, работает!
  • Как после нажатия кнопок в сообщении от Telegram-Bot'а скрыть их?

    @easycode Автор вопроса
    Да, изначально нашёл про это здесь: https://github.com/irazasyed/telegram-bot-sdk/issu..., но нифига не понятно как это всё использовать - пробую - не работает, после нажатия на кнопку - кнопки не удаляются...
  • Программа для стабильной записи FullHD-видео с веб-камеры в Windows?

    @easycode Автор вопроса
    Рональд Макдональд, только что попробовал - умеет, поковыряться чуть с настройками надо правда - а так всё пишет вроде норм...
  • Программа для стабильной записи FullHD-видео с веб-камеры в Windows?

    @easycode Автор вопроса
    Воу... не знал что OBS умеет писать - круто - попробую.. спасибо!
  • Нужно организовать оплату в Интернет-магазине на WooCommece через Uniteller - есть идеи?

    @easycode Автор вопроса
    Suleimanov_Ismar, честно говоря не смогу в ближайшее время помочь - очень много работы сейчас и прям дедлайны горят... но там вроде бы ничего сложного не должно быть - все параметры в настройках - по инструкции от Uniteller