Posted in 1С: Предприятие 8.х Программирование

1Cv8 Отбор в запросе ссылок <Объект не найден>

В запросе 1С можно выборочно включать поля в запрос по условию наличия или отсутствия битых ссылок:

ВЫБРАТЬ
ВЫБОР
КОГДА
Прайс.Номенклатура.Ссылка ЕСТЬ NULL
ТОГДА NULL
ИНАЧЕ Прайс.Номенклатура
КОНЕЦ КАК Номенклатура

также можно отбирать по результаты запроса по условию битой ссылки:

ГДЕ
НЕ (Прайс.Контрагент.Ссылка ЕСТЬ NULL)

Сам запрос может выглядеть примерно так:

ВЫБРАТЬ
ВЫБОР
КОГДА
Прайс.Номенклатура.Ссылка ЕСТЬ NULL
ТОГДА NULL
ИНАЧЕ Прайс.Номенклатура
КОНЕЦ КАК Номенклатура,
Прайс.Цена
ИЗ
РегистрСведений.Прайс КАК Прайс
ГДЕ
НЕ (Прайс.Контрагент.Ссылка ЕСТЬ NULL)

Posted in 1С: Предприятие 8.х Программирование

как в запросе 1Сv8 преобразовать дату в начало дня?

для преобразования даты в начало дня нужно использовать функцию запросов НАЧАЛОПЕРИОДА()


НАЧАЛОПЕРИОДА(ДокументЗаказ.Дата, ДЕНЬ)

Posted in 1С: Предприятие 8.х

Как не надо писать код в 1Сv8 и вообще в 1С

Как не надо писать код:


Если НЕ ПустаяСтрока(ТекСтрока.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.МеждународноеСокращение) Тогда       
   лUNIT = СокрЛП(ТекСтрока.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.МеждународноеСокращение);               
КонецЕсли;

ТекСтрока.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.МеждународноеСокращение это 2 подзапроса в одной строке. Этот код выполняется в цикле по табличной части и из-за этого ведется множество подзапросов к БД. Никакого кэширования сервер не производит, т.к. для него это каждый раз новые запросы по разной номенклатуре. А 1С вообще не умеет нормально кэшировать.

Кроме того, как Вы заметили эти 2 подзапроса выполняются еще и 2 раза: один в условии и один в присвоении значения. Это рост нагрузки на сервер, БД, сеть и клиента, не 2 раза на каждую строку, а в 4 раза.

как надо:


лЕдИзмENG = ТекСтрока.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.МеждународноеСокращение;
Если НЕ ПустаяСтрока(лЕдИзмENG) Тогда     
   лUNIT = СокрЛП(лЕдИзмENG);             
КонецЕсли;

Posted in 1С: Предприятие 8.х Программирование

как сформировать строку подключения к ODBC через мастер ODBC подключений

Для работы с мастером нужно использовать COM-объект DataLinks. Вот код для этого:


    Соединение = Новый COMОбъект("ADODB.Connection");
    ДатаЛ = Новый COMОбъект("DataLinks");
    Соединение.ConnectionString = Строка_Подключения;
    ДатаЛ.PromptEdit(Соединение);
    Строка_Подключения = Соединение.ConnectionString;

где Строка_Подключения это реквизит или переменная куда сохраняем строку подключения и откуда читаем строку подключения.

передача Соединение.ConnectionString строки подключения позволяет вставить все настройки строки подключения в мастер и не вводить их повторно.

Posted in 1С: Предприятие 8.х

Конкатенация (сложение) строк в запросе 1С v8


ВЫБРАТЬ
ВЫРАЗИТЬ(
  ВЫРАЗИТЬ("123" КАК Строка(15))
+
  ВЫРАЗИТЬ("789" КАК Строка(15))
КАК Строка(15)
) КАК Результат
ИЗ
Справочник.Номенклатура КАК Номенклатура

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

Posted in CSS, Boostrap HTML Wordpress

HTML CSS: как сделать так чтобы пункт меню при прокрутке к нему не залезал под зафиксированный сверху блок (меню)

внесите в таблицу стилей класс:
.ancor {display: block;content: «»; height: 100px; margin: -100px 0 0;}
укажите его для Вашего якоря:
class=»ancor»
будет выглядеть примерно так:
<a name=»3″ class=»ancor»></a>
Posted in Sublime text 3 Программирование

ST3 Sublime Text 3 конвертация кодировки, отображение кодировки в строке состояния, работа с кодировкой из строки состояния

Стандартная работа с кодировкой ведется через меню File-Reopen with encoding-нужная кодировка

дополнительный функционал по кодировкам включая их автоопределение, можно добавить установкой плагина
EncodingHelper по ссылочке: https://github.com/titoBouzout/EncodingHelper 

устанавливается он просто: нажимаете Clone or download 

скачивается zip архив. распаковываете его в папку плагинов Sublime text 3. Папка плагинов открывается командой меню Sublime Text3: Preferences=>Browse Packages

копируете в папку плагинов содержимое архива

после этого видите в строке состояния:

по левой кнопке мыши на названии кодировки в строке состояния:

в строке состояния справа

видите меню:

меню по ЛКМ (Левой Кнопке Мыши) в строке состояния справа
в строке состояния слева
Posted in 1С: Предприятие 8.х Программирование

Как в 1Cv8 (1С: Предприятие версий 8.x) быстро создать XDTO объект, если есть шаблон результирующего XML файла?

мое мнение, что если в шаблон нужно вносить мало изменений (например это файл ответа о результатах обмена), то нужно сделать так:


стрКодировка = "Windows-1251";
ШаблонОтветаXML   = ЭтотОбъект.ПолучитьМакет("ШаблонОтветаXML");
локИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
ШаблонОтветаXML.Записать(локИмяВременногоФайла);

локЧтениеXML = Новый ЧтениеXML;
локЧтениеXML.ОткрытьФайл(локИмяВременногоФайла);
   
локФабрикаXDTO = Новый ФабрикаXDTO;
ОбXDTO = локФабрикаXDTO.ПрочитатьXML(локЧтениеXML);

шаблон можно сохранить в макетах обработки (или конфигурации) и читать через команды:


ШаблонОтветаXML   = ЭтотОбъект.ПолучитьМакет("ШаблонОтветаXML");
локИмяФайлаОтвета = ПолучитьИмяВременногоФайла("xml");
ШаблонОтветаXML.Записать(локИмяФайлаОтвета);
Posted in 1С: Предприятие 8.х Программирование

Как в 1Сv8 (1С: Предприятие версий 8.x) указать параметры XML файла, включая кодировку?


локЗаписьXML = Новый ЗаписьXML();
локЗаписьXML.ОткрытьФайл(ПолучитьИмяВременногоФайла(".xml"), "windows-1251");
//именно эта строка записывает
//&lt;?xml version="1.0" encoding="windows-1251"?>
локЗаписьXML.ЗаписатьОбъявлениеXML();

кодировка указывается строкой


локЗаписьXML.ОткрытьФайл(ПолучитьИмяВременногоФайла(".xml"), "windows-1251");

объявление параметров XML файла записывается строкой


локЗаписьXML.ЗаписатьОбъявлениеXML();
Posted in 1С: Предприятие 8.х Программирование

как в 1Сv8 (1С: Предприятие версий 8.x) быстро записать объект XDTO фабрикиXDTO в файл XML?

чтобы записать объект нужно создать объект ЗаписьXML, открыть файл в который будешь писать и вызвать у фабрики XDTO метод ЗаписатьXML() с параметрами (указываю по порядку):

  • Объект ЗаписьXML который будет осуществлять запись
  • ОбъектXDTO который будет записан в файл
  • ИмяВетки-контейнера (обрамляющий тег)

локЧтениеXML.ОткрытьФайл(стрИмяФайла);
ОбXDTO = локФабрикаXDTO.ПрочитатьXML(локЧтениеXML);
//имея некоторый объект полученный от ФабрикиXDTO, например, как я указал выше, нужно сделать так:
локЗаписьXML = Новый ЗаписьXML();
локЗаписьXML.ОткрытьФайл(ПолучитьИмяВременногоФайла(".xml"), "windows-1251");
локЗаписьXML.ЗаписатьОбъявлениеXML();
локФабрикаXDTO.ЗаписатьXML(локЗаписьXML, ОбXDTO,"Файл");
Posted in 1С: Предприятие 8.х Программирование

1C8 важно, чтобы XSD схема была в кодировке UTF-8

я загружал XSD схему в кодировке windows-1251 в CериализаторXDTO

1С8 выдавала ошибку 

Ошибка при вызове метода контекста (СоздатьФабрикуXDTO)
локФабрикаИзXSD = СоздатьФабрикуXDTO(локИмяФайлаXSD_Ответа);
по причине:
Ошибка разбора XML: — [2,21] Фатальная ошибка:
Input is not proper UTF-8, indicate encoding !
Bytes: 0xD4 0xE0 0xE9 0xEB

Сохранил XSD файл в кодировке UTF-8  и все заработало.

также эту проблему можно устранить указав в начале XSD файла тег


&lt;?xml version="1.0" encoding="windows-1251"?>
Posted in Без рубрики

1С8 Ошибка разыменования схемы XML. Почему? Есть ответ… все дело в атрибуте xmlns:xs

Я через сервис в интернете сгенерировал схему XSD и пытался ее загрузить в 1С объект:

Continue reading “1С8 Ошибка разыменования схемы XML. Почему? Есть ответ… все дело в атрибуте xmlns:xs” »
Posted in Windows Администрирование Компьютер Операционные системы (ОС)

в Winows 8/ Windows 10 не работают клавиши регулировки яркости ноутбука. Как починить/исправить?

Клавиши яркости ноутбука не работают из-за неверного драйвера монитора. Как исправить — читайте в этом материале:

Continue reading “в Winows 8/ Windows 10 не работают клавиши регулировки яркости ноутбука. Как починить/исправить?” »
Posted in Без рубрики

как минимизировать по-настоящему CSS и почему purify не подходит

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

Когда я пишу сайты я пользуюсь CSS SCSS(SASS) — мне больше нравится синтаксис SCSS. Потом естественно при записи Gulp отслеживает изменения *.scss файлов и генерирует CSS. Конечно при генерации я делаю циклы и миксины, чтобы было всё удобное под рукой. Отсюда и минус — в одном проекте классы нужны, в другом нет, а пишу я универсальные, чтобы использовать повторно. И даже в рамках одного проекта бывает что пока подбираешь верстку используешь то одни классы, то другие, но все они генерируются по одному алгоритму.

Continue reading “как минимизировать по-настоящему CSS и почему purify не подходит” »
Posted in CSS, Boostrap HTML Программирование

как работает float:left, почему блочные элементы переносятся на новую строку или как оставить элемент HTML на той же строке


блочные элементы в 1 строку через float: left
html код страницы
CSS код страницы
  1. Элемент должен являться блочным чтобы это работало, т.е. когда применено свойство float: left элемент переводится браузером в блочный (display: block)
  2. Блочные элементы по-умолчанию начинаются с новой строки. Не достаточно просто сделать элемент блочным, чтобы оставить его на той же строке.
  3. Чтобы блочный элемент оставался на той же строке нужно задать предыдущему перед ним элементу CSS стиль float: left .
  4. У родителя обоих элементов (их контейнера) должна быть задана ширина width в процентах, пикселях или чем-то еще.
  5. Эта ширина не должна быть меньше ширины обоих объектов внутри контейнера, включая их margin, padding, border.
Continue reading “как работает float:left, почему блочные элементы переносятся на новую строку или как оставить элемент HTML на той же строке” »
Posted in Битрикс Программирование

Добавление хлебных крошек в Битрикс

<?$APPLICATION->IncludeComponent(
    «bitrix:breadcrumb»,
    «breadcrumb»,
    array(
        «COMPOSITE_FRAME_MODE» => «A»,
        «COMPOSITE_FRAME_TYPE» => «AUTO»,
        «PATH» => «»,
        «SITE_ID» => «s2»,
        «START_FROM» => «1»,
        «COMPONENT_TEMPLATE» => «breadcrumb»
    ),
    false
);?>
Posted in CSS, Boostrap HTML Программирование

не видно гамбургерное меню Bootstrap

добавить в стили класс
.navbar-toggle .icon-bar{ background-color: #fff;}
Posted in CSS, Boostrap HTML

резиновая верстка на col-xx-xx Bootstrap 3

шаг этой разметки довольно большой что начинает сразу видеться на больших и маленьких экранах
к примеру фото каталога 100px на 100px задать для всех экранов col-md-2 col-xs-2… это значит что на средних экранах смотреться будет хорошо, на больших более 20′ будет разъезжаться в разные стороны а на совсем маленьких — телефонах текст описания из соседней col-xs-10 будет наезжать на фото
выход — свой стиль и прописать размеры используя свою медиа разметку
    @include BootstrapGridBreakpoint(xs) {
      height: auto;
      left:   0px;
        }
    @include BootstrapGridBreakpoint(sm) {
      height: auto;
      left:   0px;
    }
Posted in Без рубрики

твсРаботаСФайлами модуль 1с8

Функция ПолучитьРасширениеФайла(стрИмяФайла) Экспорт
	
	стрРасширениеФайла = "";
	
	ПозицияТочки = СтрДлина(стрИмяФайла);
	Пока ПозицияТочки >= 1 Цикл
		Если Сред(стрИмяФайла, ПозицияТочки, 1) = "." Тогда
			стрРасширениеФайла = Сред(стрИмяФайла, ПозицияТочки + 1);
			Прервать;
		КонецЕсли;
		ПозицияТочки = ПозицияТочки - 1;
	КонецЦикла;
	Возврат стрРасширениеФайла;
	
КонецФункции

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

// Открывает диалог выбора файла
//
// Параметры:
// стрИмяФайла - Строка - Полный путь к файлу
// Режим - РежимОткрытияФайла- (на запись, на чтение, на дозапись...)
// стрЗаголовок - Заголовок окна выбора файла
// Фильтр - маска фильтрации файлов в диалоге выбора файла
//
// Возвращаемое значение:
// нет
//
Функция ВыборИмениФайла(стрИмяФайла, Режим, стрЗаголовок = "", Фильтр = "*.*") Экспорт
	
	флВозврата = Ложь;
	СтандартнаяОбработка= Ложь;
	если Не ВыбратьФайл(стрИмяФайла, Режим, стрЗаголовок, Фильтр) тогда
		флВозврата = Ложь;
	Иначе
		флВозврата = Истина;
	КонецЕсли;
	Возврат флВозврата;
	
КонецФункции


// Проверяет по полному пути файла его существование
//
// Параметры:
// Параметр1 - Строка - Полный путь к файлу
//
// Возвращаемое значение:
// <Булево> - Возвращает Истина если файл существует
//
Функция ПроверитьСуществованиеФайла(стрПолнПутьКФайлу) Экспорт
	
	ФайлДляПроверки = Новый Файл(стрПолнПутьКФайлу);
	
	Возврат ФайлДляПроверки.Существует();
	
	
КонецФункции // ПроверитьСуществованиеФайла()

Функция СохранитьТекстВоВременныйФайл(стрТекст, стрРасширениеФайла, кодировкаФайла = "") Экспорт
	
	ЗагружаемыйФайл = Новый ТекстовыйДокумент;
	файлXML = Новый ЧтениеXML;
	
	ЗагружаемыйФайл.ДобавитьСтроку(стрТекст);
	
	стрИмяФайла = ПолучитьИмяВременногоФайла(стрРасширениеФайла);
	локКодировкаФайла = ?(кодировкаФайла = "", КодировкаТекста.UTF8, кодировкаФайла);
	ЗагружаемыйФайл.Записать(стрИмяФайла, локКодировкаФайла);
	
	Возврат стрИмяФайла;
	
КонецФункции //СохранитьТекстВоВременныйФайл()


Функция СохранитьURLВоВременныйФайл(знач стрURL, стрРасширениеФайла = "") Экспорт
	
	Если стрРасширениеФайла = "" Тогда
		стрРасширениеФайла = ПолучитьРасширениеФайла(стрURL);
	КонецЕсли;
	стрИмяФайла = ПолучитьИмяВременногоФайла(стрРасширениеФайла);
	стрСервер = твсРаботаСИнтернетом.ПолучитьСерверИзURL(стрURL);
	
	локПрокси = твсРаботаСИнтернетом.ПолучитьПрокси();
	Соединение = Новый HTTPСоединение(стрСервер,,локПрокси);
	
	HTTP_Запрос = твсРаботаСИнтернетом.СформироватьHTTPЗапрос(стрURL);
	Состояние("Загрузка: " + стрURL);
	
	Попытка
		HTTP_Ответ = Соединение.Получить(HTTP_Запрос, стрИмяФайла);
	Исключение
		Сообщить("Ошибка получения данных из Интернета по адресу: " + стрURL);
	КонецПопытки;
	
	Попытка
		Если HTTP_Ответ.КодСостояния >= 400 Тогда
			Сообщить("Код ответа сервера: " + HTTP_Ответ.КодСостояния + ". Ошибка получения данных из Интернета по адресу: " + стрURL);
			стрИмяФайла = "";
		КонецЕсли;
	Исключение
		Сообщить("Ответ не получен по адресу: " + стрURL);
	КонецПопытки;
	
	Возврат стрИмяФайла;
	
КонецФункции // СохранитьURLВоВременныйФайл()


Posted in CSS, Boostrap Google Chrome Google Crome HTML Программирование Программы

Включение фоновой отладки в браузерах Chrome

chrome://flags/

silent-debug-google-chrome

 

 

 

 

 

 

во вкладке найти Фоновый режим откладки :

silent-debug-google-chrome1

Фоновый режим отладки Mac, Windows, Linux, Chrome OS

Не показывать информационную панель, когда расширение связано со страницей с помощью API chrome debugger. Установка этого флажка позволяет выполнять отладку фоновых страниц расширений.
Включить

Ну и напоследок: «А зачем мне это нужно?»  — чтобы отключить сообщение «Включен режим отладки NetBeans при отладке веб-страниц в NetBeans