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

вторник, 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

понедельник, 23 марта 2015 г.

1с 8.3 Поиск по нескольким реквизитам в справочнике

Стояла задача найти Конрагента в справочнике по ИНН и КПП (кто знает, что такое обособленное подразделение, поймет). Логика проста - найти по ИНН, сверить КПП, если нет добавить.

Найдено=Справочники.Контрагенты.НайтиПоРеквезиту("ИНН",ИскомыйИНН);
Если Найден=Справочники.Контрагенты.ПустаяСсылка() Тогда

суббота, 14 марта 2015 г.

OSW7 Имя сбойного приложения printisolationhost.exe

Встала тут тривиальная задача - выкинуть старый компьютер с ХР на борту и поставить неттоп с семеркой. Ничего сложного, пока я не столкнулся с Canon i-sensys 3010.

Девайс нужно было подключить к новому ПК и расшарить по сети. Все работало и на локальной машине и на сетевых (Win XP x86), кроме одной, ноутбука директора (на борту Win 7 Pro x64). Печатать ни в какую не хотел.

Симптомы:
Из клиентской очереди документы улетали моментально, в очереди сервера не появлялись.
Но, если зайти с клиентской машины на "сервер" и открыть расшаренный принтер, то видел следующую картину - документ зависает в состоянии "Постановка в очередь печати" секунд на 30, а потом исчезает. Соответственно ничего не печатается.
Полез в журнал и вижу там сабж, а имя сбойного модуля ntdll.dll.

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

Решение:
Установка русской локали решила проблему О_О

воскресенье, 8 марта 2015 г.

Клал я тут плитку ...

Клал я тут плитку (керамогранит) на пол, все как обычно,выбора не было.
Пара заметок на следующий раз, коего, надеюсь, не будет:
1. Первая плитка, самая главная, ее нужно класть по уровню во всех проекциях.
2. На не ровном полу рекомендуется наносить клей и на плитку и на пол,с применением зубчатого шпателя,  соответственно класть рисунком крест на крест
3. Расстояние от стены до плитки должно быть не менее И не более толщины выбранного шва
4. Шов не должен быть слишком большим, чаще всего толщина шва составляет 1-2мм
5. После того как распределили клей по полу, уберите клей крючком по краю граничащих плиток,дабы излишки могли выйти.
6. До высыхания клея зачистите шов,например крючком, если клей уже засох,то можно использовать шпатель,крючок или зачистку для шва (наиболее приспособленный инструмент, на рабочей поверхности имеет крошку), правда изначально он предназначен для удаления затирки ;-)