Свёртка таблицы без потери данных

Публикация № 192746

Разработка - Практика программирования

15
Было в таблице значений 3 колонки, по одной группировали, по другой суммировали, а третья и потерялась... Знакомая сказка? Чтобы не плодить вспомогательные данные, эта функция сворачивает таблицу так, что в специальной колонке будут подтаблицы, хранящие "свёрнутые" куски в первозданном виде. Может быть интересно изучающим некоторые фичи СКД.

Собственно, всё упихнуто в одну функцию, и стандартная свёртка тоже. Проверено на практике, но на тестовом массиве с небольшим разнообразием. Я вот пока не очень уверен, что в любом случае будет работать - например, при каких-нибудь экзотических типах колонок или их наполнении. Но если кому пригодится, и хорошо. Как пример работы с СКД, кстати ))) 

// рИсточник - собственно объект-источник (обычно таблица значений, её имя определяется автоматически)
Функция ПоместитьРезультатСКДвТаблицуЗначений(рСКД,рКомпНастроекИлиНастройки,рИсточник="") Экспорт
Попытка
   
РезультатнаяТаблица=Новый ТаблицаЗначений;
   
//
    // исходя из типа источника
   
рНабор=рСКД.НаборыДанных.Получить(0); // основной набор
    //
   
КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных;
   
рТипГенератора=Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений");
    Если
ТипЗнч(рКомпНастроекИлиНастройки)=Тип("НастройкиКомпоновкиДанных") Тогда
       
МакетКомпоновки=КомпоновщикМакета.Выполнить(рСКД,рКомпНастроекИлиНастройки,,,рТипГенератора);
    ИначеЕсли
ТипЗнч(рКомпНастроекИлиНастройки)=Тип("КомпоновщикНастроекКомпоновкиДанных") Тогда
       
МакетКомпоновки=КомпоновщикМакета.Выполнить(рСКД,рКомпНастроекИлиНастройки.Настройки,,,рТипГенератора);
    КонецЕсли;
   
ПроцессорКД=Новый ПроцессорКомпоновкиДанных;
    Если
ТипЗнч(рНабор)=Тип("НаборДанныхОбъектСхемыКомпоновкиДанных") Тогда
       
ПроцессорКД.Инициализировать(МакетКомпоновки,Новый Структура(СокрЛП(рНабор.ИмяОбъекта),рИсточник));
    Иначе
       
ПроцессорКД.Инициализировать(МакетКомпоновки);
    КонецЕсли;
   
ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
   
ПроцессорВывода.УстановитьОбъект(РезультатнаяТаблица);
   
#Если Клиент Тогда
       
ПроцессорВывода.ОтображатьПроцентВывода=Истина;
   
#КонецЕсли
   
РезультатнаяТаблица=ПроцессорВывода.Вывести(ПроцессорКД,Истина);
    Возврат
РезультатнаяТаблица;
Исключение
   
Сообщить("ПоместитьРезультатСКДвТаблицуЗначений: ошибка: "+ОписаниеОшибки(),СтатусСообщения.ОченьВажное);
    Возврат
РезультатнаяТаблица;
КонецПопытки;
КонецФункции

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

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

    Если
мПоляСвертки.Количество()=0 и мПоляСуммы.Количество()<>0 Тогда
       
// все поля, не входящие в суммируемые, подразумеваются как свёрточные
       
рПоляСвертки=""; разд="";
        Для каждого
кол Из рТаблица.Колонки Цикл
            Если
мПоляСуммы.Найти(СокрЛП(кол.Имя))=Неопределено Тогда
               
мПоляСвертки.Добавить(СокрЛП(кол.Имя));
               
рПоляСвертки=рПоляСвертки+разд+СокрЛП(кол.Имя); разд=",";
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;

    Если
ПустаяСтрока(рИмяКолонкиАгрегатора) Тогда // режим агрегирования не используется
       
рТаблица.Свернуть(рПоляСвертки,рПоляСуммы);
    КонецЕсли;

    Если
ПустаяСтрока(рПоляСвертки)
    или
мПоляСвертки.Количество()=0
   
или ПустаяСтрока(рИмяКолонкиАгрегатора)
    Тогда Возврат
рТаблица КонецЕсли;

   
рСКД=Новый СхемаКомпоновкиДанных;
   
//
   
рИсточникДанных=рСКД.ИсточникиДанных.Добавить();
   
рИсточникДанных.Имя="ОсновнойИсточник";
   
рИсточникДанных.ТипИсточникаДанных="Local";
   
//
   
рНабор=рСКД.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
   
рНабор.Имя="ОсновнойНабор";
   
рНабор.ИмяОбъекта="ТаблицаИсточник"; // связывание с внешними данными идёт именно по нему
   
рНабор.ИсточникДанных="ОсновнойИсточник";
   
//
   
рНастройка=рСКД.НастройкиПоУмолчанию;
   
рГруппировкаКД=рНастройка.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    Для каждого
рИмяПоляСвертки Из мПоляСвертки Цикл
       
рПолеГр=рГруппировкаКД.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
       
рПолеГр.Поле=Новый ПолеКомпоновкиДанных(СокрЛП(рИмяПоляСвертки));
       
рПолеГр.ТипГруппировки=ТипГруппировкиКомпоновкиДанных.Элементы;
    КонецЦикла;
   
рГруппировкаКД.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
   
//
   
мОстающихся=Новый Массив;
   
стрОстающихся=""; разд="";
    Для каждого
кол Из рТаблица.Колонки Цикл
       
#Если Клиент Тогда
           
ОбработкаПрерыванияПользователя();
       
#КонецЕсли
       
// вносим поля в набор, это обязательно
       
рПоле=рНабор.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
       
рПоле.Заголовок=кол.Заголовок;
       
рПоле.Поле=кол.Имя;
       
рПоле.ПутьКДанным=кол.Имя;
       
рПоле.ТипЗначения=СКДиПостроители.ПолучитьОписаниеТипаБезПустых(кол.ТипЗначения);
       
// выбранные поля добавляем на уровень самой настройки, т.е. группы "Отчёт"
       
рВыбПоле=рНастройка.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
       
рВыбПоле.Заголовок=рПоле.Заголовок;
       
рВыбПоле.Поле=Новый ПолеКомпоновкиДанных(рПоле.ПутьКДанным);
       
// выясним, куда попадает эта колонка
       
Если мПоляСвертки.Найти(СокрЛП(кол.Имя))=Неопределено Тогда // она может быть и сумматорной
           
мОстающихся.Добавить(кол.Имя);
           
стрОстающихся=стрОстающихся+разд+кол.Имя; разд=",";
        КонецЕсли;
    КонецЦикла;
    Если
ПустаяСтрока(стрОстающихся) Тогда // вообще ничего, по сути, не надо
       
рТаблица.Свернуть(СокрЛП(рПоляСвертки));
        Возврат
рТаблица;
    КонецЕсли;

   
// вносим само поле-вычислитель
   
рВыражение="ВЫБОР КОГДА Уровень()=0 ТОГДА ВычислитьВыражение(""ТаблицаЗначений("+стрОстающихся+")"",,,""Текущая"",""Последняя"") КОНЕЦ";
   
рВычПоле=рСКД.ВычисляемыеПоля.Добавить();
   
рВычПоле.ПутьКДанным=СокрЛП(рИмяКолонкиАгрегатора);
   
рВычПоле.Заголовок="Таблицы";
   
рВычПоле.Выражение=рВыражение;
   
//
   
рИтПоле=рСКД.ПоляИтога.Добавить();
   
рИтПоле.Выражение=СокрЛП(рИмяКолонкиАгрегатора);
    Для каждого
рИмяПоляСвертки Из мПоляСвертки Цикл
       
рИтПоле.Группировки.Добавить(СокрЛП(рИмяПоляСвертки));
    КонецЦикла;
   
рИтПоле.ПутьКДанным=СокрЛП(рИмяКолонкиАгрегатора);
   
//
   
Для каждого рИмяПоляСуммы Из мПоляСуммы Цикл
       
рИтПоле=рСКД.ПоляИтога.Добавить();
       
рИтПоле.Выражение="Сумма("+СокрЛП(рИмяПоляСуммы)+")";
       
рИтПоле.ПутьКДанным=СокрЛП(рИмяПоляСуммы);
       
// а группировки оставим пустыми, чтобы шёл по всем
   
КонецЦикла;
   
//
   
рВыбПоле=рНастройка.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
   
рВыбПоле.Заголовок="Таблицы";
   
рВыбПоле.Поле=Новый ПолеКомпоновкиДанных(рВычПоле.ПутьКДанным);

   
рКомпоновщикН=Новый КомпоновщикНастроекКомпоновкиДанных;
   
рКомпоновщикН.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(рСКД));
   
рКомпоновщикН.ЗагрузитьНастройки(рНастройка);

   
резТаблица=СКДиПостроители.ПоместитьРезультатСКДвТаблицуЗначений(рсКД,рКомпоновщикН,рТаблица);
    Если
резТаблица.Количество()<>0 Тогда
       
послстро=резТаблица[резТаблица.Количество()-1];
        Если
ТипЗнч(послстро[СокрЛП(рИмяКолонкиАгрегатора)])<>Тип("ТаблицаЗначений") Тогда
           
резТаблица.Удалить(послстро);
        КонецЕсли;
    КонецЕсли;
   
//
   
Возврат резТаблица;
Исключение
   
Сообщить("СвернутьТаблицу, ошибка: "+ОписаниеОшибки(),СтатусСообщения.ОченьВажное);
    Возврат
рТаблица;
КонецПопытки;
КонецФункции

 

Внимание! Если у кого-то не заработает или будет работать неверно - пожалуйста, сообщите, постараюсь оперативно разобраться.

Пы.Сы. Не уверен, что за такую фиговинку имеет смысл плюсить.

 

 

15

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. AnryMc 720 01.07.13 12:51 Сейчас в теме
А зачем? Всегда можно оперировать копией ТЗ.
2. Yashazz 2905 01.07.13 13:56 Сейчас в теме
Можно. Только копия ресурс кушает, если большая, и "оперировать", т.е. искать даже по индексированной - иногда скучное дело. Я всего лишь показал альтернативу, когда "всё в одном". ))
3. EarlyBird 6 01.07.13 20:43 Сейчас в теме
жениться тебе надо
тогда будет жаль времени на всякую ненужную ботву
6. Yashazz 2905 02.07.13 12:04 Сейчас в теме
(3) Позвольте представить, моя жена: http://infostart.ru/community/profile/41675/ - и уже восемь лет вместе )))
(5) Смысл простой - и свернуть надо, и данные не потерять. А список или массив хороши, когда такая колонка одна. Если было 10 колонок, по 1-й и 3-й свернули, пятую суммировали, то, когда нужны все остальные, подтаблица удобнее списка.
smirnov.a; +1 Ответить
4. Гость 02.07.13 03:28
Как пример простой программной работы с СКД очень хорошо. Стоило преподносить публикацию именно как пример работы с СКД, тогда польза от нее очевидна.
5. batlerrett 02.07.13 07:51 Сейчас в теме
Смысл тогда сворачивать? Если нужны списки, так и надо в 3-й колонке значением список делать
7. EarlyBird 6 02.07.13 12:25 Сейчас в теме
честно говоря, пока для себя не вижу практического применения данного решения
если я что-то сворачиваю, я это сворачиваю. Если не надо сворачивать, я не сворачиваю.
Но всё же плюс, за конструктивные ответы (и красивую жену :) )
9. Yashazz 2905 02.07.13 13:41 Сейчас в теме
(7) Мне часто приходится сталкиваться, раньше делал через 2 таблицы (свёрнутая и исходная), но оперативку жалко. А так пыхтит сервер приложения, насколько я понял распределение нагрузки. И что-то мне подсказывает, что напрячь механизм СКД в этом случае более экономно, нежели крутить временные таблицы.

А если честно, просто захотелось побаловаться с этими функциями СКД, и всё ))
8. Const1C 02.07.13 13:01 Сейчас в теме
В семерки часто сталкиваюсь с такой задачей. Что нужно данные сохранять, после свертки. В частности при формировании группировок в отчетах. Но, ИМХО, в такой ситуации, лучше, действительно, оперировать таблицей значений. А уж если ресурсы жалко (когда, например, нужно работать с 100500 записями). Лучше использовать временные таблицы.
10. TrinitronOTV 04.07.13 17:18 Сейчас в теме
не смотря на комментарии, для меня всё равно полезно было ознакомиться, спасибо
11. AnryMc 720 04.07.13 21:48 Сейчас в теме
(10) TrinitronOTV, Кто к нам пожаловал...
12. Збянтэжаны Саўка 242 05.07.13 09:39 Сейчас в теме
(0) СКДиПостроители - это откуда? не встречал такого модуля.
13. sstar90 05.07.13 10:18 Сейчас в теме
(0) Присоединяюсь к (12)
Если это твой модуль, было бы логично выложить и его (в части, касающейся данного решения).
14. Yashazz 2905 05.07.13 12:00 Сейчас в теме
Ёлы-палы, сколько ж я ещё на эти грабли наступать буду... Ща, выложу нужные функции.
15. Збянтэжаны Саўка 242 05.07.13 14:24 Сейчас в теме
ок, ПоместитьРезультатСКДвТаблицуЗначений() уже есть, но нужна еще ПолучитьОписаниеТипаБезПустых()
16. Yashazz 2905 05.07.13 21:40 Сейчас в теме
(15) Она совсем простая и необязательная:
Функция ПолучитьОписаниеТипаБезПустых(рОписТипов) Экспорт
мТипов=Новый Массив;
Для каждого рТип Из рОписТипов.Типы() Цикл
Если рТип=Тип("Неопределено") или рТип=Тип("NULL") или рТип=Неопределено или рТип=Null Тогда Продолжить КонецЕсли;
мТипов.Добавить(рТип);
КонецЦикла;
Возврат Новый ОписаниеТипов(мТипов,рОписТипов.КвалификаторыЧисла,рОписТипов.КвалификаторыСтроки,рОписТипов.КвалификаторыДаты);
КонецФункции
17. Abadonna 3836 09.07.13 17:08 Сейчас в теме
(0)
Пы.Сы. Не уверен, что за такую фиговинку имеет смысл плюсить.

Вот именно за это плюс и поставлю ;)
18. chmv 10.07.13 13:36 Сейчас в теме
Оставьте свое сообщение

См. также

Полезные процедуры и функции для программиста 160

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Практика программирования Универсальные функции

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

07.10.2019    11504    HostHost    23       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

Специальное предложение по 1С:Документооборот 8! Промо

Оперативно навести порядок в документообороте? Легко! Воспользуйтесь специальным предложением! Внедрение за 2 недели! Фиксированная цена и гарантия результата!

Агрегатные функции СКД, о которых мало кто знает 353

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    15411    ids79    44       

Три костыля. Сказ про фокусы в коде 124

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Разработка

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    10465    YPermitin    69       

Cashback 35% при покупке 1С лицензий на счет INFOSTART.RU с 27.11 по 04.12 Промо

Оформляете заказ на 1С лицензии или конфигурации. Получаете 35% от стоимости на счет в профиле INFOSTART.RU. Выбираете сервисы и продукты на сумму кэшбэка.

Отслеживание выполнения фонового задания 143

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции Разработка

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    12592    ids79    16       

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив 261

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    17792    ids79    31       

Перенос данных КА 1.1 => ERP 2 (ЕРП) (обработка переноса документов, остатков и справочной информации из "1С:Комплексная автоматизация, ред. 1.1" в "1С:ERP Управление предприятием, ред 2"). Обновлен до КА 1.1.115.х и ERP 2.4.10.х Промо

Обработка позволяет переносить из КА 1.1 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления в случае выхода новых релизов конфигураций 1С.

29700 руб.

Фоновое выполнение кода в 1С - это просто 124

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

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

02.08.2019    12689    avalakh    21       

С 2020 года сервис «Продление поддержки конфигурации 1С:УПП» подорожает вдвое Промо

Успейте продлить поддержку УПП до повышения цен! Фирма «1С» предупредила об изменении цен на сервис «Продление поддержки конфигурации "1С:Управление производственным предприятием"». С 1 января 2020 года сервис подорожает в два раза.

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты 141

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    15952    ids79    8       

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ 155

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Инструментарий разработчика Практика программирования

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    13503    ids79    27       

1С:Предприятие через Интернет. 1С:Fresh Промо

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

Регистры сведений. За кулисами 129

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    10529    YPermitin    12       

"Меньше копипаста!", или как Вася универсальную процедуру писал 183

Статья Программист Стажер Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    9305    SeiOkami    49       

Перенос данных БП 2.0 => УТ 11 / КА 2 / ERP 2 (перенос остатков, документов и справочников из "1С:Бухгалтерия предприятия 8", ред. 2.0 в "1С:Управление торговлей 8", ред.11 / КА 2 / ERP 2). Обновлено до УТ 11.4.10.х, КА 2.4.10.х, ERP 2.4.10.х! Промо

Перенос позволяет загрузить в УТ 11 / КА 2 / ERP 2 документы за выбранный период, справочную информацию и остатки по счетам бух. учета. Переносятся остатки денежных средств, взаиморасчетов, остатки товаров и материалов на складах. Переносятся девятнадцать основных видов документов за выбранный период и вся нормативно-справочная информация. Есть фильтр по организации. Если нужно переносить что-то дополнительно, то обычно бесплатно дорабатываю правила (перед покупкой согласуйте необходимые доработки).

29700 руб.

Создание отчетов с помощью СКД - основные понятия и элементы 216

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования Математика и алгоритмы

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    23621    ids79    17       

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017 179

Статья Программист Нет файла v8 v8::Запросы Бесплатно (free) Практика программирования Разработка

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    13571    dmurk    134       

Перенос данных БП 3.0 => УТ 11 / КА 2 / ERP 2 (ЕРП) (перенос остатков, документов и справочной информации из "1С:Бухгалтерия предприятия 8", ред.3.0). Обновлено до БП 3.0.73.х, УТ 11.4.10.х, КА 2.4.10.х., ERP 2.4.10.х! Промо

Переносятся документы за выбранный период, справочная информация и остатки по счетам бух. учета в программу УТ 11 / КА 2 / ЕРП 2 (ERP). Переносятся все возможные виды операций ввода остатков на нужную дату. Есть отбор по периоду переноса документов и фильтр по организации, доступен выбор даты ввода остатков. Если нужно переносить что-то дополнительно, то обычно бесплатно добавляем это в перенос . Смотрите видеодемонстрацию со звуком - советами по переносу и рекомендациями настройки программ.

29700 руб.

Регистры накопления. Структура хранения в базе данных 178

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    21027    YPermitin    27       

Выполнение внешней обработки в фоновом задании 149

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    12923    Eret1k    23       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Выгрузка документа по условию 5

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Разработка

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    7312    m-rv    2       

Как прикрутить ГУИД к регистру сведений 23

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8 Разработка

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

16.04.2019    9870    m-rv    16       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

О расширениях замолвите слово... 195

Статья Программист Стажер Нет файла v8 Бесплатно (free) Практика программирования Разработка

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    18862    ellavs    125       

Git-репозитории для 1С-кода (опыт использования при небольших проектах) 202

Статья Программист Стажер Нет файла v8 Windows Бесплатно (free) Практика программирования Разработка

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    15095    ellavs    83       

Перенос данных УТ 10.3 => УТ 11 / КА 2 / ERP 2 (ЕРП 2) (документы, остатки и справочная информация из "1С:Управление торговлей, ред. 10.3" в УТ 11 / КА 2 / ERP 2). Обновлен до УТ 10.3.56.х, УТ 11.4.10.х, КА 2.4.10.х и ERP 2.4.10.х! Промо

Уже более 100 компаний приобрели перенос и выполнили переход на УТ 11 / КА 2 / ERP 2 с помощью нашей разработки! Обработка перехода с УТ 10.3 на УТ 11 / КА 2 / ERP 2 позволяет перенести не только остатки на указанную дату (как типовой перенос), но и все возможные документы за выбранный период. При выходе новых релизов этих программ оперативно выпускаем обновление обработки. Предоставляем техническую поддержку. Можем сделать бесплатный тестовый перенос!

29700 руб.

Трюки с внешними источниками данных 166

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    15838    YPermitin    52       

Вакансия Автор новостных обзоров на тему 1С и бухучета, По совместительству Промо

Редакция Infostart.ru будет рада сотрудничеству с 1С-специалистом, умеющим и любящим излагать свои мысли в письменной форме. Если вы работали в IT-изданиях или имеете опыт ведения технологического блога/канала/группы, если сможете сделать обзор обработок из каталога infostart.ru/public/all/, то у вас большое преимущество.

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS) 173

Статья Программист Нет файла v8 v8::Права Бесплатно (free) Практика программирования БСП (Библиотека стандартных подсистем) Роли и права

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    19106    ids79    9