воскресенье, 29 мая 2016 г.

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

Очень муторная тема, которую, несомненно, стоит как-нибудь потом рассмотреть отдельно. Ну а пока – только ответы на вопросы.

понедельник, 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. Раскрашивать буковки - та еще морока.