Как сохранить данные табличного поля в табличный документ / файл Excel программно

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

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

Обработка пример табличное поле табличный документ сохранить Excel

Пример сохранения табличного поля в табличный документ не через ПКМ -> Вывести список, с автоподбором ширины по содержимому.


Как-то заказчик попросил добавить возможность сохранять табличное поле в файл Excel кнопкой, а не через контекстное меню поля. К сожалению на просторах интернета не нашел готового решения, возможно плохо искал. Правда, в инструментах разработчика от TormozIT есть подобная штука, но увидел её уже намного позже чем сделал своё. Для того, чтобы визуально было более-менее приемлемо - пришлось прикрутить расчёт ширины колонок по содержимому (источник процедуры уже, к сожалению не припомню). Америк не открыл, на оригинальность не претендую, просто делюсь примером, возможно кому-то пригодится. Не исключаю, что данное решение не самое красивое, поэтому советы и пожелания постараюсь учесть/дополнить в статье. Полученный в функции табличный документ сохранить в файл уже можно, соответственно, одной строкой текста (ТД.Записать("ИмяФайла",ТипФайлаТабличногоДокумента.XLSX)). 

Подходит для любой конфигурации на обычных формах.

Функция ТабличноеПолеВТабличныйДокумент(ТабличноеПоле)

    ТабДокумент   = Новый ТабличныйДокумент;

    ГраницаСлева  = ?(ТабличноеПоле.ВертикальныеЛинии  , Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1), Неопределено);
    ГраницаСправа = ?(ТабличноеПоле.ВертикальныеЛинии  , Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1), Неопределено);
    ГраницаСверху = ?(ТабличноеПоле.ГоризонтальныеЛинии, Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1), Неопределено);
    ГраницаСнизу  = ?(ТабличноеПоле.ГоризонтальныеЛинии, Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1), Неопределено);

    НомерСтроки = 0;

    Для Каждого Колонка Из ТабличноеПоле.Колонки Цикл

        Если Колонка.Данные = "" Тогда
            Продолжить;
        КонецЕсли;

        ИндексКолонки = ТабличноеПоле.Колонки.Индекс(Колонка);
        КолонкаТабличногоПоля = ТабДокумент.Область(, ИндексКолонки+1, , ИндексКолонки+1);
        КолонкаТабличногоПоля.ШиринаКолонки = Колонка.Ширина;

    КонецЦикла;

    Если ТабличноеПоле.Шапка Тогда

        НомерСтроки = НомерСтроки + 1;
        Для Каждого Колонка Из ТабличноеПоле.Колонки Цикл

            ИндексКолонки = ТабличноеПоле.Колонки.Индекс(Колонка);
            ОбластьЯчейки                         = ТабДокумент.Область(НомерСтроки, ИндексКолонки+1, НомерСтроки, ИндексКолонки+1);
            ОбластьЯчейки.Текст                   = Колонка.ТекстШапки;
            ОбластьЯчейки.ЦветТекста              = ?(Колонка.ЦветТекстаШапки = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветТекстаШапкиТаблицы, Колонка.ЦветТекстаШапки);
            ОбластьЯчейки.ЦветФона                = ?(Колонка.ЦветФонаШапки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветФонаКнопки, Колонка.ЦветФонаШапки);
            ОбластьЯчейки.ЦветРамки               = ?(ТабличноеПоле.ЦветРамки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветРамки, ТабличноеПоле.ЦветРамки);
            ОбластьЯчейки.Шрифт                   = Колонка.ШрифтШапки;
            ОбластьЯчейки.ГоризонтальноеПоложение = Колонка.ГоризонтальноеПоложениеВШапке;
            ОбластьЯчейки.Обвести(ГраницаСлева, ГраницаСверху, ГраницаСправа, ГраницаСнизу);

        КонецЦикла;

    КонецЕсли;

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

    Результат = Построитель.Результат;
    Выборка   = Результат.Выбрать();

    Пока Выборка.Следующий() Цикл

        НомерСтроки = НомерСтроки + 1;

        Для Каждого Колонка Из ТабличноеПоле.Колонки Цикл

            ИндексКолонки                         = ТабличноеПоле.Колонки.Индекс(Колонка);
            ОбластьЯчейки                         = ТабДокумент.Область(НомерСтроки, ИндексКолонки+1, НомерСтроки, ИндексКолонки+1);
            ОбластьЯчейки.ЦветФона                = ?(Колонка.ЦветФонаПоля.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветФонаПоля, Колонка.ЦветФонаПоля);
            ОбластьЯчейки.ЦветРамки               = ?(ТабличноеПоле.ЦветРамки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветРамки, ТабличноеПоле.ЦветРамки);
            ОбластьЯчейки.ЦветТекста              = ?(Колонка.ЦветТекстаПоля = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветТекстаПоля, Колонка.ЦветТекстаПоля);
            ОбластьЯчейки.Шрифт                   = Колонка.ШрифтТекста;
            ОбластьЯчейки.ГоризонтальноеПоложение = Колонка.ГоризонтальноеПоложениеВКолонке;
            ОбластьЯчейки.Обвести(ГраницаСлева, ГраницаСверху, ГраницаСправа, ГраницаСнизу);

            ФорматнаяСтрока = "";
            Если Колонка.Данные = "" Тогда
                ЗначениеЯчейки  = Выборка[Колонка.Имя];
                ТипКолонки      = Результат.Колонки[Колонка.Имя].ТипЗначения;
            Иначе

                ЗначениеЯчейки  = Выборка[Колонка.Данные];
                ТипКолонки      = Результат.Колонки[Колонка.Данные].ТипЗначения;
            КонецЕсли;

            Если ТипЗнч(ЗначениеЯчейки) = Тип("Число") Тогда
                КвалификаторыЧисла  = ТипКолонки.КвалификаторыЧисла;
                ФорматнаяСтрока     = "ЧЦ=" + КвалификаторыЧисла.Разрядность + "; ЧДЦ=" + КвалификаторыЧисла.РазрядностьДробнойЧасти;
            ИначеЕсли ТипЗнч(ЗначениеЯчейки) = Тип("Дата") Тогда
                КвалификаторыДаты = ТипКолонки.КвалификаторыДаты;
                Если КвалификаторыДаты.ЧастиДаты = ЧастиДаты.Дата Тогда
                    ФорматнаяСтрока = "ДФ=dd.MM.yyyy";
                ИначеЕсли КвалификаторыДаты.ЧастиДаты = ЧастиДаты.Время Тогда
                    ФорматнаяСтрока = "ДФ=HH:mm:ss";
                КонецЕсли;
            КонецЕсли;

            Если ЗначениеЗаполнено(ФорматнаяСтрока) Тогда
                ОбластьЯчейки.Текст = Формат(ЗначениеЯчейки, ФорматнаяСтрока);
            ИНаче
                ОбластьЯчейки.Текст = ЗначениеЯчейки;
            КонецЕсли;

        КонецЦикла;

    КонецЦикла;

    Если ТабличноеПоле.Подвал Тогда

        НомерСтроки = НомерСтроки + 1;
        Для Каждого Колонка Из ТабличноеПоле.Колонки Цикл

            ИндексКолонки                         = ТабличноеПоле.Колонки.Индекс(Колонка);
            ОбластьЯчейки                         = ТабДокумент.Область(НомерСтроки, ИндексКолонки+1, НомерСтроки, ИндексКолонки+1);
            ОбластьЯчейки.Текст                   = Колонка.ТекстПодвала;
            ОбластьЯчейки.ЦветТекста              = ?(Колонка.ЦветТекстаПодвала = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветТекстаПодвалаТаблицы, Колонка.ЦветТекстаПодвала);
            ОбластьЯчейки.ЦветФона                = ?(Колонка.ЦветФонаШапки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветФонаКнопки, Колонка.ЦветФонаПодвала);
            ОбластьЯчейки.ЦветРамки               = ?(ТабличноеПоле.ЦветРамки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветРамки, ТабличноеПоле.ЦветРамки);
            ОбластьЯчейки.Шрифт                   = Колонка.ШрифтПодвала;
            ОбластьЯчейки.ГоризонтальноеПоложение = Колонка.ГоризонтальноеПоложениеВПодвале;
            ОбластьЯчейки.Обвести(ГраницаСлева, ГраницаСверху, ГраницаСправа, ГраницаСнизу);

        КонецЦикла;

    КонецЕсли;

    РасчетШириныКолонок(ТабДокумент,200,150);
    Возврат ТабДокумент;

КонецФункции

// Процедура - Расчет ширины колонок
//
// Параметры:
//  ТабличныйДокумент            -  ТабличныйДокумент -     Табличный документ, в котором будет перерасчитана ширина колонок
//  МаксимальноеКоличествоСтрок  - Число -      Максимальное количество строк, которые будут использованы для расчета ширин колонок
//  МаксимальнаяШиринаКолонки    - Число -      Ограничение максимальной ширины колонки
//
Процедура РасчетШириныКолонок(ТабличныйДокумент,МаксимальноеКоличествоСтрок,МаксимальнаяШиринаКолонки)

    Перем КонечнаяСтрока, НачальнаяСтрока, ТекущаяКолонка, ТекущаяСтрока, НачалоДанных;
    Перем ОбластьШапки, ОбластьПодвала;
    Перем ШиринаКолонки, ТекстЯчейки, НомерСтрокиТекста;
    Перем ШириныКолонок;

    // Массив, в который будут помещаться ширины колонок
    ШириныКолонок = Новый Массив;

    // Инициализируем начальные строки
    НачальнаяСтрока = 0;
    НачалоДанных = 0;

    КонечнаяСтрока = НачальнаяСтрока + МаксимальноеКоличествоСтрок;
    // Ограничим конечную строку
    КонечнаяСтрока = Мин(КонечнаяСтрока, ТабличныйДокумент.ВысотаТаблицы);

    // Переберем все колонки
    Для ТекущаяКолонка = 1 По ТабличныйДокумент.ШиринаТаблицы Цикл

        МаксимальнаяШиринаТекстаЯчейки = 0;
        // Переберем строки, которые будут использованы для расчета ширин колонок
        Для ТекущаяСтрока = НачальнаяСтрока По КонечнаяСтрока Цикл
            ШиринаКолонки = 0;
            // Получим область текущей ячейки
            ОбластьЯчейки = ТабличныйДокумент.Область(ТекущаяСтрока, ТекущаяКолонка);

            ТекстЯчейки = ОбластьЯчейки.Текст;
            // Для каждой строки из текста ячейки рассчитаем количество символов в строке
            Для НомерСтрокиТекста = 1 По СтрЧислоСтрок(ТекстЯчейки) Цикл
                ШиринаТекстаЯчейки = СтрДлина(СтрПолучитьСтроку(ТекстЯчейки, НомерСтрокиТекста));

                Если ШиринаТекстаЯчейки > МаксимальнаяШиринаТекстаЯчейки Тогда
                    МаксимальнаяШиринаТекстаЯчейки = ШиринаТекстаЯчейки;
                КонецЕсли;

                ШиринаКолонки = Макс(ШиринаКолонки, МаксимальнаяШиринаТекстаЯчейки);
            КонецЦикла;

            Если ШиринаКолонки > МаксимальнаяШиринаКолонки Тогда
                // Ограничим ширину колонки
                ШиринаКолонки = МаксимальнаяШиринаКолонки;
            КонецЕсли;

            Если ШиринаКолонки <> 0 Тогда
                // Ширина колонки рассчитана
                // Определим, сколько ячеек по ширине используется в области для текущей ячейки
                КоличествоКолонок = ОбластьЯчейки.Право - ОбластьЯчейки.Лево;

                // Переберем все ячейки, расположенные в области
                Для НомерКолонки = 0 По КоличествоКолонок Цикл
                    Если ШириныКолонок.ВГраница() > ТекущаяКолонка - 1 + НомерКолонки Тогда
                        // В массиве ширин колонок уже был элемент для текущей колонки
                        Если ШириныКолонок[ТекущаяКолонка - 1 + НомерКолонки] = Неопределено Тогда
                            // Значение ширины колонки еще не было установлено
                            ШириныКолонок[ТекущаяКолонка - 1 + НомерКолонки] = ШиринаКолонки / (КоличествоКолонок + 1);
                        Иначе
                            // Значение ширины колонки уже было установлено
                            // Вычислим максимум ширины колонки
                            ШириныКолонок[ТекущаяКолонка - 1 + НомерКолонки] =
                            Макс(ШириныКолонок[ТекущаяКолонка - 1 + НомерКолонки], ШиринаКолонки / (КоличествоКолонок + 1));
                        КонецЕсли;
                    Иначе
                        // В массиве ширин колонок еще не было элемента для данной колонки
                        // Добавим элемент в массив ширин колонок
                        ШириныКолонок.Вставить(ТекущаяКолонка - 1 + НомерКолонки, ШиринаКолонки / (КоличествоКолонок + 1));
                    КонецЕсли;
                КонецЦикла;

            КонецЕсли; // Конец Условия ШиринаКолонки <> 0

        КонецЦикла;    // Конец цикла перебора строк
    КонецЦикла;    // Конец цикла перебора колонок

    // Переберем все элементы в массиве вычисленных ширин колонок
    Для ТекущаяКолонка = 0 По ШириныКолонок.ВГраница() Цикл
        Если ШириныКолонок[ТекущаяКолонка] <> Неопределено Тогда
            // Ширина колонок установлена
            // Установим ширину области ячеек
            ТабличныйДокумент.Область(, ТекущаяКолонка +1, НачалоДанных, ТекущаяКолонка + 2).ШиринаКолонки = ШириныКолонок[ТекущаяКолонка] + 1;
        КонецЕсли;
    КонецЦикла;

КонецПроцедуры

 

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 3261 04.06.20 11:17 Сейчас в теме
Ну воистину следующей будет публикация "Как вывести сообщение пользователю" или "Как перебрать элементы массива".
2. Jimbo 7 04.06.20 12:16 Сейчас в теме
Многабукфниасилил

Зачем это фсё, кроме - ТД.Записать("ИмяФайла",ТипФайлаТабличногоДокумента.XLSX) ???
3. Yashazz 3261 04.06.20 12:39 Сейчас в теме
(2) ну, тут ещё применяется Построитель (правда, впервые это было 15 лет назад в первых 10.3), так что некая ценность в публикации есть)
4. rpashkovsky 19 04.06.20 13:16 Сейчас в теме
(3)Спасибо за столь противоречивый комментарий, а также идеи для новых статей :D
5. Yashazz 3261 04.06.20 13:23 Сейчас в теме
(4) Дык, зато честно) И потом, что вы и я знаете, другие могут не знать, так штааа... может это мне кажется баяном, а людям пригодится.
rpashkovsky; +1 Ответить
6. rpashkovsky 19 04.06.20 14:12 Сейчас в теме
(2) ТД нужно изначально откуда-то взять
7. Jimbo 7 04.06.20 14:30 Сейчас в теме
(6) ТабДокумент = Новый ТабличныйДокумент; // вот и взяли , остальное какое то шаманство с бубном
8. rpashkovsky 19 04.06.20 14:32 Сейчас в теме
(7) Между табличным полем и табличным документом разницы нет? Ок...
Оставьте свое сообщение

См. также

3 онлайн-курса по 1С-программированию: обмен данными, расчетные задачи и бухгалтерские задачи с 12 мая по 8 июля 2020 г. Промо

Практика программирования v8 Бесплатно (free)

Пакет из 3-х курсов по 1С-программированию. Основная цель - сформировать у слушателей практические навыки, связанные с реализацией задач обмена для прикладных решений, работающих на платформе “1С:Предприятие”, а также с разработкой прикладных решений, предназначенных для автоматизации расчета заработной платы и задач бухгалтерского учета.

22.04.2020    4512    23    Infostart    2    

Программная работа с настройками СКД

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

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    18927    0    ids79    26    

[СКД] Программное создание схемы компоновки данных

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

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    18380    0    John_d    22    

Последовательности событий. Шпаргалка

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    13311    0    kuzyara    33    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    35424    0    unichkin    45    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    14560    0    YPermitin    72    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    6696    0    Sibars    19    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    28089    0    Yashazz    45    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    27862    0    tormozit    100    

[Шпаргалка] Программное создание элементов формы

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

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

06.09.2019    39439    0    rpgshnik    62    

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

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

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

05.09.2019    41611    0    ids79    54    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    24306    0    YPermitin    24    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    75358    0    tormozit    129    

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

Практика программирования v8 Бесплатно (free)

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

03.09.2019    23034    0    YPermitin    80    

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

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

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

17.08.2019    28165    0    ids79    16    

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

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

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

08.08.2019    64849    0    ids79    40    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

11.07.2007    46238    0    tormozit    38    

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

Практика программирования v8 1cv8.cf Бесплатно (free)

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

02.08.2019    29197    0    avalakh    22    

Разбираемся с параметрами редактирования СКД

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

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    19632    0    json    12    

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

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

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

26.07.2019    48596    0    ids79    11    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    42209    0    tormozit    74    

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

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

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

17.07.2019    31352    0    ids79    27    

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

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

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

09.07.2019    23750    0    YPermitin    13    

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

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

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

04.07.2019    17631    0    SeiOkami    50    

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

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

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

25.04.2019    15343    0    m-rv    2    

Работа с настройками системы компоновки данных

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

Варианты отчетов, работа с настройками вариантов: структура группировок, поля отчета, отборы, сортировка, условное оформление, другие настройки, настройки отображения диаграмм.

02.07.2019    38270    0    ids79    10    

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

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

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

25.06.2019    45805    0    ids79    21    

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

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

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

11.06.2019    22774    0    dmurk    144    

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

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

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

16.04.2019    19119    0    m-rv    17    

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

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

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

16.05.2019    38308    0    YPermitin    30    

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

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

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

11.05.2019    26495    0    Eret1k    23    

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

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

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

07.04.2019    31962    0    ellavs    126    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    28755    0    m-rv    21    

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

Практика программирования v8 Бесплатно (free)

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

28.03.2019    25200    0    ellavs    88    

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

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

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

14.03.2019    28770    0    YPermitin    53    

Ошибки при работе с хранилищем конфигурации и способы их решения

Практика программирования v8 Бесплатно (free)

В статье собраны наиболее распространенные ошибки при работе с хранилищем конфигурации и способы их обхода и решения.

01.03.2019    33556    0    Смешной 1С    27    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

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

05.12.2017    26802    0    itriot11    34    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

Практика программирования Vanessa Automation v8 Россия Бесплатно (free)

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    20064    0    Vladimir Litvinenko    27    

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

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

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

03.02.2019    34485    0    ids79    9    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    73325    0    Serginio    108    

EnterpriseData – часть 2. Процесс выгрузки данных

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    24706    0    ids79    31    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    37754    0    ids79    72    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    32332    0    ids79    40    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    34137    0    ids79    40    

Программное заполнение пользовательских параметров и отборов СКД

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

Публикация представляет из себя краткие примеры того, как можно заполнять параметры СКД программно так, чтобы все параметры и отборы были доступны в быстрых настройках и в обычных (типовых) настройках параметров и отборов СКД.

13.11.2018    41182    0    Unk92    21    

Тестер: частые вопросы Промо

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    27435    0    grumagargler    26