IT заметки

Программирование, информационные технологии

Posts Tagged ‘

1С:Предприятие 8. DBF-файл с именем больше 8 символов.

leave a comment »

Формат dbf пока ещё встречается в современном IT. Однако, вопреки заветам MS DOS, разработчики, иногда, используют в имени файла более 8 символов.

Объект XBase в 1С8 может оперировать только с файлами, у которых имя соответствует формату 8.3. Поэтому, при попытке открыть dbf-файл с именем длиной более 8 символов, возникает системная ошибка и работа с таким файлом невозможна.

Ниже приведен пример программного кода, в котором показано решение данной проблемы средствами 1С8.

//путь к файлам с данными
ПутьКФайлам="c:\";

маскаФайла="*.dbf";
дбф=Новый XBASE;
дбф.Кодировка=КодировкаXBase.ANSI;

найденныеФайлы=НайтиФайлы(ПутьКФайлам, маскаФайла);
Для Каждого файл Из найденныеФайлы Цикл
   Если файл.ЭтоКаталог() Тогда
      Продолжить;
   КонецЕсли;

   // приведение имени к формату 8.3
   //СокрЛП() на случай, если в имени появятся пробелы
   короткоеИмяФайла=СокрЛП(Лев(файл.ИмяБезРасширения, 8))+".dbf";
   полныйПутьКНовомуФайлу=КаталогВременныхФайлов()+короткоеИмяФайла;
   КопироватьФайл(файл.ПолноеИмя, полныйПутьКНовомуФайлу);

   дбф.ОткрытьФайл(полныйПутьКНовомуФайлу);
   Если дбф.Открыта() Тогда

      //...работа с файлом...

      //закрытие файла
      дбф.ЗакрытьФайл();

      //удаление временного файла с именем 8.3
      УдалитьФайлы(полныйПутьКНовомуФайлу);

   КонецЕсли;

КонецЦикла;

Written by Роман

22/12/2014 at 11:14

Опубликовано в , Программирование

Tagged with ,

1С:Предприятие 8. Движения с субконто

leave a comment »

На заметку тем, кто еще не в курсе 😉

При запросе к виртуальной таблице регистров бухгалтерии ДвиженияССубконто, не забывайте добавлять проверку на АКТИВНОСТЬ записи таблицы регистров. Например:


ВЫБРАТЬ

ХозрасчетныйДвиженияССубконто.СчетДт,

ХозрасчетныйДвиженияССубконто.СчетКт,

ХозрасчетныйДвиженияССубконто.Сумма

ИЗ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&НачДата, &КонДата, Организация = &Организация И Активность,,) КАК ХозрасчетныйДвиженияССубконто

Дело в том, что в виртуальную таблицу ДвиженияССубконто попадают и записи регистров бухгалтерии, у которых признак АКТИВНОСТЬ=ЛОЖЬ (например, пользователь временно отключил их).

Поэтому, чтобы не получить в отчет с таким запросом «отключенные пользователем» проводки, нужно обязательно проверять признак АКТИВНОСТЬ.

Written by Роман

24/03/2012 at 07:41

Опубликовано в , Программирование

Tagged with ,

1С:Предприятие 8. Итоги по иерархии в языке запросов

leave a comment »

Заметил небольшую особенность при работе с итогами по иерархии в язык запросов 1С (ИЕРАРХИЯ).

Если в качестве ключевого поля для итогов по иерархии используется простое поле запроса, типа <имяТаблицы>.<имяПоля>, то итоги по иерархии попадают в результат запроса нормально. Например:


ВЫБРАТЬ

Номенклатура.Ссылка КАК Ссылка,

Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры

ИЗ  Справочник.Номенклатура КАК Номенклатура

ИТОГИ

КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВидНоменклатуры)

ПО  Ссылка ИЕРАРХИЯ

Однако, если заменить простое поле на составное, например, при помощи конструкции «ВЫБОР КОГДА… ТОГДА…«, то итоги по иерархии не будут работать. Вместо них будут накоплены обычные итоги. Например:


ВЫБРАТЬ

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

Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры

ИЗ  Справочник.Номенклатура КАК Номенклатура

ИТОГИ

КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВидНоменклатуры)

ПО  Ссылка ИЕРАРХИЯ

Такое поведение языка запросов вполне понятно. Итоги по иерархии не могут быть построены по полю с составным типом данных (а конструкция «ВЫБОР КОГДА… ТОГДА…» подразумевает неоднозначность типа данных поля запроса).

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

Written by Роман

24/03/2012 at 07:27

Опубликовано в , Программирование

Tagged with ,

1С:Предприятие 8. Функция Формат()

leave a comment »

Это небольшое замечание будет актуально, в основном, для тех, кто перешел/переходит на платформу 8.2 с 1С:Предприятие 7.7. Дело в том, что в 7.7 функция Формат() могла принимать в качестве составляющей части года форматной строки, строку «yyyy» в разном регистре — yyyy, YYYY, YyYy — в результате год выводился правильно в любом случае. Однако в 1С:Предприятие 8.2, в функцию Формат(), в параметр форматной строки, в качестве составляющей года, нужно передовать только строку «yyyy» (или «yy» для двухзначного обозначения года) в нижнем регистре. Иначе, год не будет корректно отображен в строке с датой.

Written by Роман

25/01/2012 at 21:33

Опубликовано в , Программирование

Tagged with ,

1С:Предприятие 8. Отступ в ячейке макета.

2 комментария

При разработке печатных форм на платформе 1С:Предприятие 7.7, в случае необходимости отобразить какое-то значение с отступом от края ячейки, приходилось устанавливать тип значения в ячейке «Шаблон» и имтировать отступ значения от края при помощи пробелов перед ним.

В 1С:Предприятие 8 необходимость в данных действиях отпала, так как у области табличного документа (ячейка) появилось свойство «Отступ», которое позволяет штатными средствами выполнить данную настройку.

Свойство «Отступ» области табличного документа расположено в группе свойств «Положение» и задает отступ текста от правого или левого края ячейки в средних символах шрифта. Отступ будет применен в зависимости от горизонтального положения для этой области.

Свойство "Отступ"

Written by Роман

07/12/2011 at 19:48

Опубликовано в , Программирование

Tagged with ,