понедельник, 24 ноября 2014 г.

Моя группа с тыренными гифочками

А я подумал, а чо бы мне не прорекламировать свою группу во вконтактике с тыренными с инета гифочками. Целых 102 человека, интересно, будет ли толк? Вот оно: не самая лучшая группа, посвященная гифкам.

Будет такой типа эксперимент.

четверг, 9 октября 2014 г.

Микро-заметка, модуль числа в 1с.

Чтобы найти модуль числа воспользуйтесь следующей штукой:

МодульЧисла = МАКС(ЧислоУКоторогоПолучитьМодуль, -ЧислоУКоторогоПолучитьМодуль);


вторник, 23 сентября 2014 г.

UP! 3D Printer mini

В общем, с некоторой толикой гордости презентую новый тэг - не так давно у меня появился 3d принтер. На самом деле давно, просто я ленивая жопа, забивающая писать про интересные штуки.
Взял я его для того, чтобы своими руками пощупать новую технологию, и, если не удастся поставить все это дело на коммерческие рельсы - продать. Как бы разницу в цене покупки/продажи я и буду считать платой за обучение.
Если коротко - он весьма компактен, печатает не шумно, не пахнет. Единственное - малая площадь рабочей поверхности ну и скорость печати - для коммерческого использования помрете на нем делать что-нибудь большое.

А рассказать я хотел о баге, связанном с печатью.

Время от времени случается глюк, когда наш принерок не может передать задание на печать. Выглядит это так: долгое время не может отправить данные с первого слоя, а потом играется забавный звук и выскакивает ошибка "Can't load motion program"

Это лечится. Берем отвертку, откручиваем и снимаем заднюю крышку (да, и не надо забывать выключить принтер из сети).
Находим на материнской плате местный аналог жесткого диска - карту памяти.


Вытаскиваем её целиком и запихиваем обратно. Прикручиваем крышку обратно и печатаем!

Я так понимаю, происходит переполнение данной карты, а программную очистку китайцы не придумали. Может, исправят в следующих версиях прошивки.

Мини-лайфхак - так как такая штука случается достаточно часто, я закрепил крышку всего на два болта - чтобы было быстрее и проще её снимать. Такие дела.

суббота, 21 июня 2014 г.

Быдло-1С. Интерактивная работа пользователя с таблицами.

Сегодня расскажу о своём недавнем случайным опытом. Вдруг кому-то поможет (на самом деле нет).
Я не знаю, как это обозвать, так что обзову «интерактивная работа пользователя с  таблицами».
Суть в следующем – понадобилась обработка, с помощью которой пользователь сможет удалять некорректные записи из регистра сведений. А так как записей с одним и тем же измерением может быть несколько, то необходимо было придумать механизм, с помощью которого пользователь смог бы интерактивно и самостоятельно выбирать и удалять записи.
Все достаточно просто (кстати, я не претендую, что у меня самое оптимальное решение, мне кажется, можно сделать проще и лучше, но я ж быдло, мне можно):
по нажатию на кнопку «прочитать регистр» запросом отбираем из регистра по некоторому условию записи, они отображаются в ТабличномПоле. Стрелочкой можем перекинуть выделенную строку в ТабличноеПоле1, и тогда уже нажать на кнопку «удалить записи» и произойдет запись этих строк из регистра.


Итого будет выглядеть как-то так:


Теперь о реализации.
В первой процедуре, где происходит запрос, выгружаем запрос в таблицу, копируем её (чтоб не парится с созданием колонок, и вообще), и очищаем. Итого имеем две одинаковые по структуре таблицы, но одну с данными, а другую – нет. Таблицы выводим в форму, в табличные поля.
                ТаблицаИсходняя      = Запрос.Выполнить().Выгрузить();//выгружаем в таблицу данные запроса
                ТаблицаНаУдаление = ТаблицаИсходняя.Скопировать();
                ТаблицаНаУдаление.Очистить();

                ТабличноеПоле         = ТаблицаИсходняя;
                ТабличноеПоле1       = ТаблицаНаУдаление;

                ЭлементыФормы.ТабличноеПоле.СоздатьКолонки();//вывели таблицу в форму в поле ТабличноеПоле

Ах да, не забываем вынести в глобальные переменные следующие вещи:

Перем ЗапомнитьСтроку; //расскажу ниже
Перем ЗапомнитьСтроку2; //расскажу ниже
Перем ТаблицаИсходняя; //таблица из запроса
Перем ТаблицаНаУдаление;//таблица, которую «создал» пользователь
Теперь идем в табличные поля и находим там событие «ПриАктивизацииСтроки» (см. рисунок)


В эту процедуру идет следующее:
                ТекущаяСтрока = ЭлементыФормы.ТабличноеПоле.ТекущаяСтрока;
               
                Если ТекущаяСтрока <> Неопределено Тогда //данное условие сделано для того, чтобы в случае пустой строки переменная ЗапомнитьСтроку имела тип «Неопределенно», а не «ошибка чтения значения»
                               ЗапомнитьСтроку = ТекущаяСтрока;
                Иначе
                               ЗапомнитьСтроку = Неопределено; //переменная ЗапомнитьСтроку будет перекидываться в другую таблицу
                КонецЕсли;

Ну и теперь, соответственно, событие на нажатие кнопки переноса:
Если ЗапомнитьСтроку <> Неопределено Тогда
                СтрокаТаблицыНаУдаление = ТаблицаНаУдаление.Добавить();
                ЗаполнитьЗначенияСвойств(СтрокаТаблицыНаУдаление, ЗапомнитьСтроку);//первый параметр – как можно догадаться, строка-приёмник, второй параметр – строка таблицы источника
                ТаблицаИсходняя.Удалить(ЗапомнитьСтроку);
                ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
                ЭлементыФормы.ТабличноеПоле.СоздатьКолонки();
                КонецЕсли;
Дальше я затупил и с кнопкой обратного переноса сделал точно такие же процедуры (ТабличноеПоле1ПриАктивизацииСтроки и Кнопка1 нажатие). Так как у меня выплыл какой-то косяк, то добавил переменную ЗапомнитьСтроку2.

Такие дела. Мысли вслух (но мне лениво их проверять) – полюбас можно избавится от переменной ЗапомнитьСтроку2, и, скорее всего, не обязательно при каждой итерации заново создавать на форме ТабличноеПоле и ТабличноеПоле1. Но мне лень думать.

Воюйте с 1с и побеждайте, а я пошел дальше эникеить.

P.S. Раскрашивать буковки - та еще морока.

суббота, 22 марта 2014 г.

Быдло 1с, константы и все такое.

Не знаю, было ли до этого в разборе учебника о константах (ну как - "не знаю", не помню, я слишком редко читаю учебники), но сегодня хотелось бы рассказать немного о них.
Вощем, если совсем коротко - то в константе хранится какая-либо информация, которая НИКОГДА или практически никогда не меняется. Что это может быть? Да что угодно, хоть наименование вашей организации. Но хотелось бы мне рассказать немножко другое.
Вот смотрите, вы добавляете константу в вашу учебную базу. Вы даже можете к ней обращаться через модуль и получать какую-либо инфу. Отлично. А если вам все-таки нужно переключать иногда значение константы? (например, константа имеет булевый тип значения, истина-ложь, и по клацанью на неё будет применяться какое-либо условие). А если конфигурация не ваша, а чужая? Вот кароч ответ, да в картинках!
Добавляем константу в базу данных. В данном случае она булева. Добавление - стандартное, клик правой мышкой по папочке в древе конфигурации, которая называется "Константы".


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

Вот для них создана прекрасная форма, да и с разветвлениями, и все такое. Хочу впихать свою константу в первую ветку, в "Настройка параметром учета". А просто так. Идем в конфигуратор и ищем общую форму "ОсновнаяФормаКонстант". Лежит она, как не сложно догадаться, в ветке "Основные формы".

Заходим в модуль, чтобы поглядеть, какая же обработочка будет запускаться при клацанье на *типа ссылку* "Настройка параметров учета".



Идем в эту обработку (ИзменениеНастроекУчета) и глядим там нашу форму.
В данном конкретном случае каждая ссылка вела на свою страничку. Так что я просто создал еще одну страничку и разместил там свою константу. Добавление странички - правый клик по полю и выбор команды "Добавить страницу"




Вроде бы константу добавили, можно радоваться?


Но нет, при запуске в режиме Предприятия окошко константы будет недоступно. Плак-плак.



Поле константы серое, константу нельзя изменить, константа недоступна!
Возвращемся в конфигуратор, находим данную форму, кликаем правым кнопком мыши по указанной области, команда "Свойства".


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


Называется состав констант, как ни странно, по первой константе в его списке. Поэтому можно тупить и не сразу его найти. Но, нажав на три точки в уголке, откроется списочек, где мы добавим свою константочку.


Ура, все работает!




Данный пост отвечает на следующие вопросы:
Не работает константа
Константа недоступна для изменения
Как добавить константу в состав констант
Не работает константа на форме констант

Ну, а чтобы в посте были ответы и на другие вопросы - напишу 42.

четверг, 13 марта 2014 г.

Шутки-шуточки

А еще я иногда пишу шутки и выступаю на местных стендапах. Не смешно, зато про войну.

Что мы можем благодаря дружбе:

Только благодаря дружбе ты можешь получить алкоголизм и цирроз печени в 25.
Только с друзьями (и алкоголем) ты внезапно становишься самым юморным, ловким и смелым (на самом деле нет).
Только с друзьями тебе дадут 12 лет там, где тебе одному дали бы 5.
Только благодаря друзьям ты легко можешь забыть о старых проблемах, так как появятся новые.
Только благодаря дружбе вы стали замечать, что когда вокруг вас собирается пять человек, ваша ладонь автоматически приобретает форму стакана.
Только благодаря друзьям ты сможешь узнать, что вся твоя любимая музыка – говно.
Только благодаря дружбе ты точно знаешь, где твои любимые диски с фильмами, флешки, и 200 рублей. У Ванька, Лехи и Костяна, где им быть то еще!
Только благодаря общению с друзьями ты знаешь, где в твоем районе самый дешевый круглосуточный алко-магазин.
Только благодаря друзьям ты знаешь, что в жигули шестой модели влазит 7 человек.
Только с друзьями вы можете обсудить картины айвазовского во время антракта на скрипичном концерте. А вечером ужраться в говно.
Только благодаря друзьям ты можешь сказать «Мам, я иду на ночь готовиться к экзамену на всю ночь к Вовке.  Будем учить матан». Даже тогда, когда мама знает, что вовку отчислили. И он в армии. И на самом деле его зовут Серега.
Только с друзьями ты можешь быть талантливым музыкантом, ни будучи при этом ни талантливым, ни музыкантом.
Только благодаря друзьям у тебя есть железная причина не готовиться к экзаменам: а че, вон Некит не готовится же, мне то тогда чего переживать.
Только благодаря друзьям ты можешь узнать телефонный номер отделения милиции.
Только благодаря друзьям ты знаешь, что ты и твои проблемы – ничтожны. Вот сделаешь что нибудь, а тебе так снисходильно «это фигня. А вот у меня….»
Только благодаря друзьям ты понимаешь, что кататься на тележке из супермаркета, в принципе, неплохая идея.
Только благодаря друзьям ты знаешь, что талант таки можно пропить.

воскресенье, 9 марта 2014 г.

1С-ное.(Заметки быдло-ученика-погромиста), 22 занятие

Иногда я начинаю себя ругать из-за того, что я такой ленивый. Но быстро перестаю - лень.

Занятие 22 посвящено ролям. И тут я даже немножко расскажу смищные истории из своей практики, посвященные ролям (на самом деле нет).

Для чего предназначен объект конфигурации Роль?
Роль предназначена для организации интерфейса прикладного решения и для разграничения прав и действий отдельных пользователей.

Как создать роль, используя подсистемы конфигурации?



Развернуть ветвь Общие – правый клик по Роли (рис.1).  Далее можно настроить ограничения к различным объектам конфигурации (рис.2)


рис.1

рис.2



Как создать список пользователей системы и определить их права?
На главной командной панели заходим в Сервис – Администрирование – Пользователи.
Появится список пользователей (рис.3). Добавить нового пользователя можно, жмакнув по
. На основной закладке пишем различные данные про пользователя, на закладке «прочее» - предоставляем права (рис.4).
рис.3
рис.4


Чем аутентификация средствами 1С: Предприятия отличается от аутентификации операционной системы?

Как следует из названия, при аутентификации средствами 1с пользователю требуется вводить логин/пароль непосредственно в системе 1с. В случае аутентификации средствами операционной системы вводить ничего не нужно, так как 1с определит, под каким пользователем запущена ОС, обратится к своему внутреннему списку пользователей, и если найдет соответствующую запись, осуществит вход с данными правами.
Чаще всего аутентификация по ОСи происходит, если 1с виртуализирована. Что это значит? Что физически сервер и клиенты одинески находятся физически не у вас под носом, а в другом месте. На своем компьютере вы запускаете удаленное подключение, на котором уже идет подключение к 1с.

А теперь истории из практики. Если заниматься поддержкой 1с, то часты случаи, когда пользователи жалуются, что мол такой то документ не проводится, такой то отчет не формируется. Часто такое бывает из-за того, что разработчики поставили такому-то пользователю права на документ, а на регистр, который, собственно, и отражает проводки документа, забыли. Зайдите в журнал регистрации действий и поглядите на данного пользователя, как он проводит документ - тот недоступный регистр и отобразится в журнале, с формулировкой "нарушение прав пользователя".
Гораздо печальнее, когда разработчики ставят ограничения на роли в коде - тогда только отладчиком глядеть, где, когда и какое ограничение прав стоит, непосредственно в модуле требуемого документа/отчета.

суббота, 25 января 2014 г.

1С-ное.(Заметки быдло-ученика-погромиста), 20-21 занятие

Куку, епта!

Для чего предназначены регламентные задания?
Регламентное задание – последовательность действий, описанных с помощью встроенного языка, с возможностью установки расписания, в соответствии с которым задание будет автоматически запущено на исполнение.
Как задать расписание для автоматического запуска заданий?
Находим в древе конфигурации штучку «Регламентные задания» и правым кликом создаем.
Чтобы установить расписание, жмакаем на ссылку «Открыть» напротив «Расписание» (рис.1)

рис.1


Как обеспечить запуск заданий по расписанию в файловом варианте работы?

Для файлового режима необходимо создать спецобработку, которая будет висеть в толстом клиенте и выполнять эти самые задания.

Занятие 21.
Для чего предназначен документ для ввода начальных остатков и как его создать?
Ну как бы предполагается, что возможен вариант, что 1С внедряется в уже счуществующую фирму, где уже есть какой-то документооборот, товары на складе, работники бухают и т.д. И нужно, чтобы в регистрах такие данные существовали.
Создается такой документ – как и все в 1с, правым кликом. Разве что для этого документа нужно запретить проведение.
Как программно изменить значение регистра при вводе начальных остатков?
Мне вообще странно, что в данной теме не рассказали о такой возможности, как тупо обработкой добавить в регистр данные, не создавая никаких документов. Поэтому вот пример: есть команда РегистрыСведений.ИмяВашегоРегистра.СоздатьНаборЗаписей(); - почитайте про неё на досуге, как с её помощью можно изменять/удалять/модифицировать данные любого регистра.
А в самом занятии нам предлагается рассмотреть возможность программно изменять какие-либо параметры либо в модуле формы объекта, либо в модуле объекта.

В каких случаях использовать модуль формы, а в каких – модуль объекта для размещения обработчиков событий?
Если подразумевается возможность программно модифицировать тот или иной объект, то необходимо пользоваться  модулем объекта, так как при программной записи документа форма жи не открывается, и все ваши ухищрения пойдут коту под хвост. Такие дела.