Некоторые картинки не загружаются из РФ и РК, используйте VPN.

суббота, 11 июля 2015 г.

1С УТ 10.3 (Обычное приложение) создать кнопку "Новый счет договор"

В конфигурации УТ 10.3 нет кнопки новый счет договор как в конфигурации БП 2.0/3.0
Все приведенное ниже создавалось и проверялось на "Управление торговлей", редакция 10.3 (10.3.31.3)
Ниже представлен кусок кода, который добавляет такой функционал.
Для его использования необходимо создать кнопку на форме и привязать ее к процедуре "НовыйСДНажатие"


пятница, 10 июля 2015 г.

ATC OS7070 Блог ravenich'а: OfficeServ 7070 AA


Столкнулся тут на работе с затыкой. Нужно было заменить сообщение AA на АТС Samsung OfficeServ 7070. Мануала по этому делу естественно ни оказалось, гугление дельной информации не дало. Пришлось потратить два вечера на решение проблемы. В итоге путем перебора кодировок и параметров файлов сообщений на АТС нашли режим в котором GoldWave открыл файл с расширением 711.
Режим таков:
File type: Dialogic (vox);
Attributes: µ-Law 8000 Hz, 64 kbps, mono.
Отлично, узнали, теперь берем запись , которую нужно повесить на сообщение, редактируем, обрезаем и сохраняем.
Настройки такие (что логично):
File type: Dialogic (*.vox)
Attributes: µ-Law 8000 Hz, 64 kbps, mono.
Переименовываем файл (в моем случае 5149.711). Заходим Internet Explorer'ом на web-интерфейс АТС, находим закладку AA/VM, там находим Voice Studio. Там находим наше сообщение (5149) и жмем "Upload".
Звоним и наслаждаемся:)

Up
мои наблюдения
Для загрузки в АТС с прошивкой 4.82 (а точнее старше 4.64) используем FTP.
Для включения FTP идем в 5.13.11 пишем свой ip.
Заходим на FTP каким-нибудь менеджером admin/samsung
/mnt/nand/os7100/vm/pmt/ru_ru - сюда кидаем файл

Я конвертировал при помощи Gold Wave 5.
Из программы файл выйдет *.vox, файл нужно переименовать вместе с расширением.

среда, 8 июля 2015 г.

EXCEL Найти и покрасить в диапазоне из диапазона(ов)




Все знакомы с условным форматированием?
УФ позволяет форматировать ячейки в зависимости от их значений. Один из вариантов:
Найти в диапазоне все вхождения "БЛА".
Создаем правило для диапазона ($A$1:$A$150) с

вторник, 30 июня 2015 г.

1С получить список просроченных заказов


Процедура ПолучитьДокументыПоСтд()
 СрокОплатыСравнение = 2;// 1 - Неважно 2 - Просрочен (более чем на)
 СрокОтгрузкиСравнение = 1;// 1 - Неважно
 НаличиеРезервов = 3;// 1 - Неважно 3 - С резервами
 РазмещениеРезервов = 1; // 1 - На складах и в заказах
 СостояниеОплаты = 2;// 1 - Неважно 2 - Не оплачен полностью (неоплачен либо оплачен частично)
 СостояниеОтгрузки = 1; // 1 - Неважно
    ДатаНач = НачалоДня(ЭтотОбъект.РекДатаНач);//начало периода отбора месяцназад
 ДатаКон = КонецДня(ЭтотОбъект.РекДатаКон);//конец периода отбора месяцвперед
 ПустаяДата=Дата('00010101');
 ДатаОплаты=НачалоДня(ТекущаяДата());
 ДатаОтгрузки=НачалоДня(ТекущаяДата());
 ПричинаЗакрытияЗаказа = Справочники.ПричиныЗакрытияЗаказов.ПустаяСсылка();
 //сообщить(""+ДатаНач+" "+ДатаКон+"");

1С получить список учетных записей электронной почты по пользователю


//Отправитель - СправочникСсылка.Пользователи
//УчетнаяЗапись - Реквизит формы
//Подпись -  - Реквизит формы
//Результат выполнения - последняя итерация цикла
Функция НайтиУЗЗапросом(Отправитель)
  НайтиУчетнуюЗапись=Новый Запрос;
  НайтиУчетнуюЗапись.Текст="ВЫБРАТЬ
                           | УчетныеЗаписиЭлектроннойПочты.Ссылка
                           |ИЗ
                           | Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты
                           |ГДЕ
                           | УчетныеЗаписиЭлектроннойПочты.ДоступКУчетнойЗаписи.Пользователь = &Пользователь"; 
  НайтиУчетнуюЗапись.УстановитьПараметр("Пользователь",Отправитель);
  СписокУЗ=НайтиУчетнуюЗапись.Выполнить().Выбрать();
  Если СписокУЗ.Количество()>0 Тогда
   Сообщить(СписокУЗ.Количество());
   Пока СписокУЗ.Следующий() Цикл
    УчетнаяЗапись=СписокУЗ.Ссылка;
    Подпись=СписокУЗ.Ссылка.ТекстПодписи;
    КонецЦикла;
  Иначе
   Сообщить("УЗ не найдена!!!!")
  КонецЕсли;
КонецФункции


//Вариант 1С, выдает УЗ по-умолчанию
УчетнаяЗаписьПользователя=УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(СсылкаНаПользователя, "ОсновнаяУчетнаяЗапись");

//Также в 1С есть функция возвращающая список доступных УЗ
//ОбщиеМодули.УправлениеЭлектроннойПочтой.ПолучитьДоступныеУчетныеЗаписи(ТекущийПользователь)
//Сами читаем, и пытаемся понять что оно делает


пятница, 26 июня 2015 г.

1С Вычесть рабочие дни на основе ПК (НеВЗапросе)



//Процедура возвращает массив рабочих дней за два месяца
Процедура ЗапросКалендаря()
 ЗапросКалендаря=Новый Запрос;
 ЗапросКалендаря.Текст="ВЫБРАТЬ
               | РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
               |ИЗ
               | РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
               |ГДЕ
               | РегламентированныйПроизводственныйКалендарь.Пятидневка = 1
               | И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= &НачалоПериода
      | И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря <= &КонецПериода";
 ЗапросКалендаря.УстановитьПараметр("НачалоПериода",ДобавитьМесяц(ТекущаяДата(),-1)); //НачалоПериода
 ЗапросКалендаря.УстановитьПараметр("КонецПериода",ДобавитьМесяц(ТекущаяДата(),1)); //КонецПериода

  Период=ЗапросКалендаря.Выполнить().Выбрать();
  ДваМесяцаРабочихДней=Новый Массив;
  Пока Период.Следующий() Цикл
   ДваМесяцаРабочихДней.Добавить(Период.ДатаКалендаря);
  КонецЦикла; 
КонецПроцедуры

//Использование
Процедура ПолучитьТриДняНазад()
 ОткатитьНазадНа=3;//3 дня
 Сообщить(НачалоДня(ДваМесяцаРабочихДней[ДваМесяцаРабочихДней.Количество()-ОткатитьНазадНа-1]))
КонецПроцедуры


//Вариант самой 1С (нашел в форме отбора просроченных заказов)
Процедура ДниПросрочки()
 ОткатитьНазадНа=3;//3 дня
 //Пытаемся учитывать только рабочие дни по календарю
 ПолучитьДаты = Новый Запрос;
  ПолучитьДаты.Текст = 
  "ВЫБРАТЬ РАЗРЕШЕННЫЕ
  | РегламентированныйПроизводственныйКалендарь.Год
  |ИЗ
  | РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
  |ГДЕ
  | РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачГода И &КонГода";
  
 ПолучитьДаты.УстановитьПараметр("НачГода",НачалоГода(ТекущаяДата()));
 ПолучитьДаты.УстановитьПараметр("КонГода",КонецГода(ТекущаяДата()));
 
 ПолучилиДаты = ПолучитьДаты.Выполнить();
 Если ПолучилиДаты.Пустой() Тогда
   ТребуемаяДатаОплаты=НачалоДня(ТекущаяДата()-24*60*60*ОткатитьНазадНа);
   //ТребуемаяДатаОтгрузки=НачалоДня(ТекущаяДата()-24*60*60*ОткатитьНазадНа);
  Иначе
   ТребуемаяДатаОплаты=ЗаполнениеДокументов.ОпределитьДату(НачалоДня(ТекущаяДата()),-ОткатитьНазадНа);
   //ТребуемаяДатаОтгрузки=ЗаполнениеДокументов.ОпределитьДату(НачалоДня(ТекущаяДата()),-ОткатитьНазадНа);
 КонецЕсли;
 Сообщить(ТребуемаяДатаОплаты);
КонецПроцедуры


//КалендарныеДни - функция, разберетесь сами
Функция ПолучитьДень(ИсходнаяДата, КоличествоПрибавляемыхДней)
 
 Запрос = Новый Запрос("
 |ВЫБРАТЬ 
 |ДОБАВИТЬКДАТЕ(&ИсходнаяДата, ДЕНЬ, &Количество) как Дата");

 Запрос.УстановитьПараметр("ИсходнаяДата", ИсходнаяДата); 
 Запрос.УстановитьПараметр("Количество", КоличествоПрибавляемыхДней); 
 Возврат Запрос.Выполнить().Выгрузить()[0].Дата; 
КонецФункции 

1С интерактивно нажать кнопку на форме


//Для обычного приложения, работает только на открытой форме. Проверено на платформе 8.2, УТ 10.3
Процедура ИнтерактивноНажатьКнопку(Кнопка, ФормаКнопки) Экспорт
    // Удостоверимся что есть права на нажатие
    // Кнопка
    стрОшибка = "";
    Попытка
        Если Кнопка.Видимость = Ложь Тогда
            стрОшибка = стрОшибка + ", Невидима";
        КонецЕсли;    
    Исключение
    КонецПопытки;    
    Попытка
        Если Кнопка.Доступность = Ложь Тогда
            стрОшибка = стрОшибка + ", Недоступна";
        КонецЕсли;    
    Исключение
    КонецПопытки;    
    Если стрОшибка <> "" Тогда
        стрОшибка = Сред(стрОшибка, 3)+" кнопка, которую требуется нажать";
        ВызватьИсключение(стрОшибка);
    КонецЕсли;    
    
    Если ТипЗнч(Кнопка) = Тип("КнопкаКоманднойПанели") Тогда
        Действие = Кнопка.Действие;
    ИначеЕсли ТипЗнч(Кнопка) = Тип("Кнопка") Тогда    
        Действие = Кнопка.ПолучитьДействие("Нажатие");
    КонецЕсли;    
    буфДействие = ФормаКнопки.ПолучитьДействие("ПриПовторномОткрытии");
    ФормаКнопки.УстановитьДействие("ПриПовторномОткрытии", Действие);
    Попытка
        // собственно вызов нажатия кнопки
        ФормаКнопки.Открыть();
        ФормаКнопки.УстановитьДействие("ПриПовторномОткрытии", буфДействие);
    Исключение    
        ФормаКнопки.УстановитьДействие("ПриПовторномОткрытии", буфДействие);
        ВызватьИсключение;
    КонецПопытки;    
КонецПроцедуры

Процедура ОткрытьИЗапустить()
    ЗакрытиеЗаказаДокумент=документы.ЗакрытиеЗаказовПокупателей.СоздатьДокумент();
    ФормаДокумента=ЗакрытиеЗаказаДокумент.ПолучитьФорму("ФормаДокумента");
    ФормаДокумента.Открыть();
    ИнтерактивноНажатьКнопку(ФормаДокумента.ЭлементыФормы.КоманднаяПанельЗаказы.Кнопки.ПодменюЗаполнить.Кнопки.ДействиеЗаполнить,ФормаДокумента);
КонецПроцедуры

понедельник, 22 июня 2015 г.

Все об 1С: Как в 1с 8 Получить список подчиненных документов

Все об 1С: Как в 1с 8 Получить список подчиненных документов:


Функция ПолучитьСписокПодчиненныхДокументов(ДокументОснование) Экспорт
        
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                   |    СтруктураПодчиненности.Ссылка
                   |ИЗ
                   |    КритерийОтбора.СвязанныеДокументы(&ЗначениеКритерияОтбора) КАК СтруктураПодчиненности";
    
    Запрос.УстановитьПараметр("ЗначениеКритерияОтбора", ДокументОснование);
    Возврат Запрос.Выполнить().Выгрузить();
    
КонецФункции
//Функция возвращает ТаблицуЗначений
//Обходим ее Для Каждого Из Цикл

понедельник, 15 июня 2015 г.

1С Из двух семерок одна распределенная восьмерка


Картинок не будет, мне лень ;-)

Есть:
Две базы "Бухгалтерский учет 4.5" (7.70.538) - одна для менеджера (заводит продажи), одна для бухгалтера (заводит продажи и покупки)

Задача:

  1. Сделать одну базу БП 2.0/3.0
  2. Перекинуть данные за I-II квартал. 
  3. Сделать так, чтобы бухгалтер и менеджер могли работать с базой "одновременно" (физически они находятся в разных точках города).

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

пятница, 29 мая 2015 г.

1С Автоматическое обновление Типовых конфигураций 1с

Бодрого времени!

С месяц назад один из моих клиентов кинул мне ссылку на сайт Алексея Карманова, многие из Вас знакомы с работами этого Человека. Ссылка конкретно вела на ... подождите, собираюсь с духом ... на "Обновлятор 1С".
Наверно я в раю....
Различные поделки в этой области не в новинку, например это или ЭТО о_О...
У кого-то ценник задран, у кого-то продукт сырой, или создан под конкретные задачи.

Ну так вот, читаю описание:

  1. Поддержка большинства типовых конфигураций
  2. Сам качает обновки, или не качает ;-)
  3. Поддержка различных релизов платформ (ну кроме 7)
  4. Делает РК базы
  5. Планировщик
  6. Может написать письмишко
  7. БЕСПЛАТНО
Ну и т.д., ух, качаю.
Первая проверка прошла успешно, проверял на релизе 8.2 БП 2, версии думаю не актуальны, аппаратный ключ. Дальше поехали 8.3 БП 3 Базовая программная лицензия...упс...нежданчик случился.
Написал автору...

На прошлой  неделе выходит новая версия, с изменениями:
  1. Поддержка разных платформ в одном пакете (указываем разные шаблоны под каждую таблицу)
    N.B. Используемые версии должны находится в одной папке, я решил проблему при помощи симлинка (mklink /D to from)
  2. Поддержка и аппаратной и программной лицензии, требует разовой настройки
  3. Указание ключей запуска
    При использовании и аппаратных и программных лицензий вылезает окошко
    Отключается просто, в настройках базы указываем доп параметр /UseHwLicenses- для использования программной и /UseHwLicenses+ для аппаратной. Этот ключ можно использовать и в обновляторе
  4. Программа сама определяет последнюю версию платформы
  5. Можно указать папку для обновлений, программа качает обновление 1 раз, и использует его во всех случаях.
И т.д., я описал те изменения, которые меня интересовали. 

Данный продукт меня порадовал, равно как и общение с создателем (не просто же так появились некоторые пункты в истории изменений ;-)  )

пятница, 15 мая 2015 г.

Боооольшой человечек

Детская фантазия меня убивает, особенно если сохранена симметрия

  1. "Это такой специальный инструмент"
  2. Телефон
  3. Тачка
  4. Не знаю что это



Псевдобзор флешек с aliexpress


Решил прикупить пару флешек для работы (загрузочные).

Зашел на сайт Citilink`a,Ulmart`a, ценник не ах, отправился на aliexpress, оооо прям аттракцион невиданной щедрости. Заказал 4 флешки:

  1. NoName 64Gb
  2. NoName 8Gb x 2
  3. NoName 16Gb
Суммарно они мне обошлись почти в 1000Р

воскресенье, 10 мая 2015 г.

OpenCart 2.x прокрутка вверх при добавлении в корзину

У большинства версий  движка OC на стандартном шаблоне есть неприятная плюшка - прокрутка страницы вверх при добавлении в корзину,закладки, сравнения, очень раздражает.

В интернете есть несколько советов о том, как выключить прокрутку, и создать вывод сообщения (на 2.х сообщение не работает). Также можно найти модули.

А я решил сделать другой вариант - при нажатии на кнопку "Купить" изменяется слово в этой кнопке, на "В корзине".
Логика проста, в тег:
<button></button>
В файле шаблона (category.tpl,search.tpl & etc) помещаем
<label></label>

суббота, 9 мая 2015 г.

MS Srv2k8 R2 std переезд с Intel на AMD

Не люблю я рэйд-массивы, малейшая ошибка - массиву с данными пиши прощай...

Встала задача перенести сервер с Intel`ской материнки, на AMD (A88X), т.е. оставить только:

  1. массив из 2х ЖД
  2. БП
  3. корпус
Все остальное под замену.
Сервер был установлен на аппаратном зеркальном рэйд массиве из 2х ЖД по 1Тб.
Проверил IDE контроллер, установлен стандартный.
Переставил диски на новую платформу, и машинка завелась. Но, открыв "Управление дисками" я увидел:
Диск отключен из-за конфликта подписей с другим диском, находящимся в сети
О_О,

Ubuntu Не грузиться DomU xen



Была у меня "CRM" - OTRS, спокойно жила себе на domU Xen`a.
Так как машинка много места не занимает, то была она создана при помощи xen-tools и лежала на img образах. Приятненько так ютилась вместе с другими в home, который в "/", который всего 20Gb. И вот настал страшный день, корень забит, а именно home почти 20Gb. Ничего не работает.

Перенесли /home/xen/domains. Вроде норм, но не тут то было OTRS не грузится, в консоли стопорится на:
xen begin running /scripts/init-bottom ... done

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

Ответ:
в конфигурационном файле root выставить в rw, загрузится и выполнить fsck.
После "ro" и вуале ))))


_________________________________________________________________________________
Все действия Вы выполняете на собственный страх и риск.

воскресенье, 26 апреля 2015 г.

OSW7 Горячие клавиши

Название программы
Действие Комбинация
ОС Windows (7 and LATER)
Открыть проводник Win+E
Открыть поиск в отдельном окне Win+F
Запуск программы из панели задач до 9 Win+(1-9)
Свернуть все окна Win+D/Win+M
Вверх - разворачивает окно на весь экран
вниз - восстанавливает
два раза вниз - сворачивает окно
вправо или влево - разворачивает окно на полэкрана
Win+Стрелка
Управление проектором Win+P
Run Win+R
Управление панелью задач с клавиатуры Win+T
Центр спец.возможностей Win+U
Блокировка ПК Win+L
Центр мобильных возможностей Win+X
Управление панелью уведомлений с клавиатуры Win+B
Открыть меню Пуск Ctrl+Esc
Вызвать диспетчер задач Ctrl+Shift+Esc
Все знают Ctrl+Alt+Del
Переключение между окнами Alt+Tab
Создать новую папку. Ctrl+Shift+N
Переименовать файл/папку F2
Закрыть окно Alt+F4
Стандартные (для большинства программ)
Новый файл Ctrl+N
Вставить Ctrl+V
Копировать Ctrl+C
Вырезать Ctrl+X
Печать Ctrl+P
Жирным Ctrl+B
Подчеркивание Ctrl+U
Курсив Ctrl+I
Открыть файл Ctrl+O
Перейти к строке Ctrl+G
Поиск в файле Ctrl+F
Переход к следующему найденому F3
Добавление в комбинацию клавиши шифт может изменить порядок, например Shift+F3 - предыдущий найденый элемент/строка Shift+HotKey
Найти и заменить Ctrl+H
Переключение между вкладками/окнами одной программы Ctrl+Tab
Сохранить файл Ctrl+S
Шаг назад Ctrl+Z
Шаг вперед Ctrl+Y
Выделить все Ctrl+A
Закрыть текущий файл/вкладку Ctrl+W
Активирует мнею Файл Alt
Переход между элементами формы (кнопки, поле ввода) Tab
Назад для интернет браузера, и файловых программ (проводник/filezilla/TC) Backspace
Браузер - новая вкладка (не все) Ctrl+T
Открыть закрытую вкладку (аналог Ctrl+Z) Ctrl+Shift+T
Новое окно в режиме инкогнито (проверено на Chrome) Ctrl+Shift+N
Excel
Зачеркнуть текст Ctrl+5
Добавить ячейку/строку/стобец Ctrl++
Удалить ячейку/строку/стобец Ctrl+-
Редактировать ячейку F2
Выделить ячейки в направлении до первой пустой Ctrl+Shift+стрелка
Перевод строки в ячейке Alt+Enter
Word
Надстрочный знак Ctrl++
Подстрочный знак Ctrl+=
Увеличить кегль Ctrl+]
Уменьшить кегль Ctrl+[
Лево Ctrl+L
Центр Ctrl+E
Право Ctrl+R
Отступ Tab


Можно долго писать, часть горячих клавиш работает в редакторе писем Gmail (Ctrl+b/u/i, а Ctrl+[/] управляет отступами), но это долго и не надо.

У большинства программ есть подсказки на основные клавиши )))

пятница, 24 апреля 2015 г.

"Ноутбучная история"

Давным давно, почти три года назад звонит мне знакомая, со старой работы:
-"Привет, я разбила матрицу на своем нетбуке, за сколько его на запчасти возьмут?"
-", от 1000 до 1500Р, могу забрать"

Как добрый человек купил его за 1500Р. Мдаа, она забыла сказать, что какой-то бобёр отгрыз кусок корпуса о_О....
Да, нетбук - Acer Aspire Happy2