arefaste/1C_Forums huggingface dataset:
Не пинайте сильно, еще новичек в это деле, прошу помощи. Необходимо в макет вывести данные Сайта и Электронной почты, все выводится, но если Сайтов или Адресов больше 1-го, то все значения заменяются на последние. Вопрос как сделать, чтобы выводились все значения сразу?

```1c
    Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока Выборка.Следующий() Цикл
    ВыборкаКИ = Выборка.Выбрать();
    Пока ВыборкаКИ.Следующий() Цикл
    Если ВыборкаКИ.Тип = АдресЭлектроннойПочты Тогда
    АдресЭлектроннойПочты = ВыборкаКИ.Представление;
    Иначе
    ВебСтраница = ВыборкаКИ.Представление;
    КонецЕсли;

    КонецЦикла;
    КонецЦикла;
```
---
накапливайте значения, а не оставляйте только одно
  АдресЭлектроннойПочты = АдресЭлектроннойПочты +";"+ ВыборкаКИ.Представление
---
накапливайте значения, а не оставляйте только одно
  АдресЭлектроннойПочты = АдресЭлектроннойПочты +";"+ ВыборкаКИ.Представление
---
Он тогда вообще не выводит, а выводит только тип данных
---
в отладчике проверяйте, что содержится в ВыборкаКИ.Представление (должна быть строка)

и перед циклом

```1c
    АдресЭлектроннойПочты = "
```
---
Да, спасибо. Уже разобрался)))
---
Еще вопрос, перед данными выводится запятая т.е " , текст, текст " Как ее убрать, чтобы только при перечислении она выводилась
---
Код свой покажите, пожалуйста?
всем доброго времени суток!ребят подскажите с решением задачи!я создал новую БД!мне нужно из старой забрать только конфигурацию!т.е. номенклатуру,все справочники я буду заполнять сам!по новой!мне нужна лишь конфигурация,как это можно сделать?
---
Выгрузить cf-ник - загрузит cf-ник
---
Правильно
---
проблема решилась этим путем!!
"решается данная проблема увеличением пакетов (Network packet Size) до максимального 32767. Такая беда только с SQL2005 на 2008 нет такой проблемы
---
Выгрузить cf-ник - загрузит cf-ник
---
Правильно. Сохраняете cf-файл. Это первый способ (2).
---
Вообщето через поставку это глупо, как потом обновлять от типовой? Через поставку от той которую использовали как исходную для поставки? Старттопику нужно создать новую базу с той конфиги которая есть. И зачем нужна поставка?
---
Если старая конфигурация была доработкой типовой конфигурации, то потом ее все равно придется ставить на поддержку.
---
Если из доработанной делается поставка, то она скорее всего отвяжется от типовой 1С. Не проверял, но с поставками работал одно время, так что от собственной поставки я бы не советовал делать СФ.
---
Конфигуратор - Конфигурация - Поставка конфигурации - Сохранить файлы поставки и обновления конфигурации - Создать файл поставки (галку оставляем) - Указываем путь сохранения - Сохраняем.
По загрузке:
Создаём чистую конфу - Конфигуратор - Конфигурация - Загрузить конфигурацию из файла
---
я вот начал делать это не правильно?
---
Правильно
---
спасибо!)
---
начал ругаться при загрузке....
---
Выполнили операцию сохранить СФ, затем из новой базы делаете загрузить СФ и вот такая ошибка? СФ где лежит на сервере? попробуйте сначала локально сделать базу, затем сделайте дт и его попробуйте загрузить...
---
1
---
Место на диске есть, стесняюсь спросить? А с правами на каталоги всё нормально?
---
место есть и справами все ок!пробую вот этот вариант,не знаю пока грузится
"решается данная проблема увеличением пакетов (Network packet Size) до максимального 32767. Такая беда только с SQL2005 на 2008 нет такой проблемы"
---
проблема решилась этим путем!!
"решается данная проблема увеличением пакетов (Network packet Size) до максимального 32767. Такая беда только с SQL2005 на 2008 нет такой проблемы
---
Если конфигурация типовая, то новую ИБ лучше создавать из шаблона, а не выгрузкой/загрузкой cf-файла.
доброго все дня ребят,хочу загрузить конфигурацию из файла,при загрузке постоянно вылетает вот эта ошибка подскажите пожалуйста,как выйти из положения

Ошибка при выполнении файловой операции 'v8srvr://server-1s-2/pp2019/configsave/ada14b12-452d-4f85-9d71-99554e8fc6c0.865dbc81-690f-45c2-adf2-f380fc357f1c.new'
по причине:
Ошибка при выполнении файловой операции 'ada14b12-452d-4f85-9d71-99554e8fc6c0.865dbc81-690f-45c2-adf2-f380fc357f1c.new'
по причине:
Соединение с сервером баз данных разорвано администратором
Microsoft SQL Native Client: TCP Provider: Удаленный хост принудительно разорвал существующее подключение.

HRESULT=80004005, HRESULT=80004005, SQLSrvr: SQLSTATE=08S01, state=1, Severity=10, native=10054, line=0
---
ну еще можно было загружать файл на том же компе , где сервер SQL крутится, я еще хотел добавить 4 пункт к своим 3
-попробуйте именно разместить файл в том компе , где SQL и 1C,
---
проблема решилась этим путем!!
"решается данная проблема увеличением пакетов (Network packet Size) до максимального 32767. Такая беда только с SQL2005 на 2008 нет такой проблемы
---
Какой у вас сервер 1С?
И еще - какой файл вы грузите?
Проверяли его загрузку в файловую базу?
---
проблема решилась этим путем!!
"решается данная проблема увеличением пакетов (Network packet Size) до максимального 32767. Такая беда только с SQL2005 на 2008 нет такой проблемы
---
ну еще можно было загружать файл на том же компе , где сервер SQL крутится, я еще хотел добавить 4 пункт к своим 3
-попробуйте именно разместить файл в том компе , где SQL и 1C,
---
In SQL Server 2005, when setting the network packet size option to 16,388 or above, it is possible that maintenance plans will fail to run. Users may also be unable to save new maintenance plans, receiving an error similar to "OLE DB error code 0x80004005 (Communication link failure)" with the SaveToSQLServer method. Editing and loading of existing maintenance plans will fail with the message: Value cannot be null. Parameter name: component (System.Design).

Соответственно, если увеличить Network packet Size до максимального 32767, то слетает, например, резервное копирование.
Каким образом реализовать загрузку данных из Exel в мобильное приложение?
И для примеров, если есть возможность, поделитесь простенькими вырезками загрузки данных из Exel через табличный документ. Написал вот это, а дальше завис:

```1c
    ФайлЗагрузки= Новый ТабличныйДокумент;
    ФайлЗагрузки.Прочитать(Каталог);
```
---
```1c
    ВсегоСтрок = ФайлЗагрузки.ВысотаТаблицы;
    ВсегоКолонок = ФайлЗагрузки.ШиринаТаблицы;
    Для НомерСтроки = 1 ПО ВсегоСтрок Цикл
    Для НомерКолонки = 1 По ВсегоКолонок Цикл
    СодержимоеЯчейки = ФайлЗагрузки.Область(НомерСтроки,НомерКолонки,НомерСтроки,НомерКолонки).Текст;
    // Тут анализ содержимого ячейки
    КонецЦикла;
    КонецЦикла;
```

Ну вот как-то так, очень упрощенно
Синтакс-помощник в помощь
---
А дальше все как во взрослом приложении: обход табличного документа по строкам/столбцам с анализом содержимого ячейки
---
Как обойти табличный документ?
---
```1c
    ВсегоСтрок = ФайлЗагрузки.ВысотаТаблицы;
    ВсегоКолонок = ФайлЗагрузки.ШиринаТаблицы;
    Для НомерСтроки = 1 ПО ВсегоСтрок Цикл
    Для НомерКолонки = 1 По ВсегоКолонок Цикл
    СодержимоеЯчейки = ФайлЗагрузки.Область(НомерСтроки,НомерКолонки,НомерСтроки,НомерКолонки).Текст;
    // Тут анализ содержимого ячейки
    КонецЦикла;
    КонецЦикла;
```

Ну вот как-то так, очень упрощенно
Синтакс-помощник в помощь
---
А где Вы нашли описание данной конструкции:

```1c
    ФайлЗагрузки.Область(НомерСтроки,НомерКолонки,НомерСтроки,НомерКолонки)
```

В синтаксис помощнике написано "Область(<ИмяОбласти>) ", где "ИмяОбласти" - строка.
Что за "НомерСтроки,НомерКолонки,НомерСтроки,НомерКолонки". Где описано как это работает? (я проверил уже - работает)
---
СодержимоеЯчейки = ФайлЗагрузки.Область(НомерСтроки,НомерКолонки,НомерСтроки,НомерКолонки).Текст;

Нашел, туплю
Область(<НомерПервойСтроки>, <НомерПервойКолонки>, <НомерПоследнейСтроки>, <НомерПоследнейКолонки>)

Спасибо Вам за помощь!
---
На здоровье!
Выводятся данные так " , текст, текст " как убрать первую запятую? (Или любой другой символ, который будет стоять заместо запятой)

```1c
    Пока Выборка.Следующий() Цикл
    ВыборкаКИ = Выборка.Выбрать();
    АдресРез = ";
    ВебСтраница = ";
    Пока ВыборкаКИ.Следующий() Цикл
    Если ВыборкаКИ.Тип = АдресЭлектроннойПочты Тогда
    АдресРез = АдресРез + ", " + ВыборкаКИ.Представление;

    Секция2.Параметры.АдресЭлектроннойПочты = "E-mail: "+АдресРез;
    Иначе
    ВебСтраница = ВебСтраница + ", " + ВыборкаКИ.Представление;
    Секция2.Параметры.СайтОрганизации = "Сайт организации: "+ВебСтраница;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
```
---
Лишние переменные городить - не есть хорошо. Издавна эта задача решается изменением одной строчки кода:

```1c
    // АдресРез = АдресРез + ", " + ВыборкаКИ.Представление;
    АдресРез = АдресРез + ?(ПустаяСтрока(АдресРез),",", ") + ВыборкаКИ.Представление;
```
---
как вариант:

```1c
    Пока Выборка.Следующий() Цикл
    ВыборкаКИ = Выборка.Выбрать();
    АдресРез = ";
    ВебСтраница = ";
    НеПервый = Ложь;
    Пока ВыборкаКИ.Следующий() Цикл
    Если НеПервый Тогда
    АдресРез = АдресРез + ", ";
    НеПервый = Истина;
    КонецЕсли
    Если ВыборкаКИ.Тип = АдресЭлектроннойПочты Тогда
    АдресРез = АдресРез + ВыборкаКИ.Представление;

    Секция2.Параметры.АдресЭлектроннойПочты = "E-mail: "+АдресРез;
    Иначе
    ВебСтраница = ВебСтраница + ВыборкаКИ.Представление;
    Секция2.Параметры.СайтОрганизации = "Сайт организации: "+ВебСтраница;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
```
---
Лишние переменные городить - не есть хорошо. Издавна эта задача решается изменением одной строчки кода:

```1c
    // АдресРез = АдресРез + ", " + ВыборкаКИ.Представление;
    АдресРез = АдресРез + ?(ПустаяСтрока(АдресРез),",", ") + ВыборкаКИ.Представление;
```
---
АдресРез = АдресРез + ?(ПустаяСтрока(АдресРез),"",", ") + ВыборкаКИ.Представление;
Спасибо, все работает
Здравствуйте!
что-то мозг замылился уже видимо.
взял работающую ВПФ и поменял ее для другого документа. И она перестала работать. говорит недостаточно фактических параметров.
отличий от рабочей ВПФ не нахожу. в чем ошибка не пойму.
ПечатнаяФормаАкт220519.epf работает
ВнешняяПФДоговорМол.epf не работает
Конфигурация бгу 2
---
разобрался
в процедуре печать ВПФ был лишний параметр "ПараметрыПечати"
---
разобрался
в процедуре печать ВПФ был лишний параметр "ПараметрыПечати"
Возникает ошибка при компиляции программного кода 1с8 в директиве МобильноеПриложениеКлиент при обработке строки с вызовом процедуры ПоказатьОповещениеПользователя. В справке написано что данная процедура поддерживается на "мобильный клиент". Ошибка в справке или в чем проблема?
---
в справке указано "Мобильный клиент". Ошибка дается на " мобильное приложение(клиент)". Это разные клиенты.
---
Для приложения необходимо что бы было написано:
мобильное приложение(клиент) или мобильное приложение(сервер).

Спасибо Вам за подсказку и за ссылку!
---
если судить по картинке, то вызываете вы процедуру на Сервере или МобильноеПриложение - опять же Сервер, а она работает на клиенте
т.ч. ошибка вызова, а не платформы...
---
На скриншоте не тот участок кода. Там, где прописана данная процедура казана директива компиляции:

```1c
    #Если ТонкийКлиент ИЛИ МобильноеПриложениеКлиент Тогда
```
---
Может под толстым запускаете?
Покажите тот кусок кода.
---
```1c
    &НаКлиенте
    Процедура ОбработкаВыбораКаталога(Каталог,ДополнительныеПараметры) Экспорт
    Если НЕ Каталог=Неопределено Тогда
    Если ДополнительныеПараметры="ВыгрузкаДанных" Тогда
    Если ВыгрузкаДанныхНаСервере(Каталог) Тогда
    ПоказатьОповещениеПользователя("Данные успешно выгружены!",,,,,);
    Иначе
    Сообщить("Возникла ошибка во время выгрузки данных!")
    КонецЕсли;
    //ИначеЕсли ДополнительныеПараметры="ЗагрузитьНоменклатуру" Тогда
    //-------Использовать для расширения функционала процедуры
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
```
---
в справке указано "Мобильный клиент". Ошибка дается на " мобильное приложение(клиент)". Это разные клиенты.
---
Подскажите пожалуйста, что такое "Мобильный клиент" тогда?
---
это новый вид клиента для мобильной платформы, типа web клиента адаптированный для мобильной платформы.
---
Я понял. Ярлык приложения еще с облачком. Я думал что он аналогичен веб клиенту. Буду знать.
---
https://wonderland.v8.1c.ru/blog/mobilnyy-klient/
---
Для приложения необходимо что бы было написано:
мобильное приложение(клиент) или мобильное приложение(сервер).

Спасибо Вам за подсказку и за ссылку!
---
вот
https://infostart.ru/public/1092847/
Создал вид начислений который заводят индивидуальным графиком, он переносится в табель и дальше в начисление зп. Расчитывает всё без проблем, но в РС не выводит дни\часы. Где какую настройку мог пропустить?

На скрине видно. Работа с мотором созданый вид начислений. Должно аналогично проставлять как Оплата по окладу (по часам).
---
посмотрите, как указан Учет времени у оклада и так же сделайте.
---
посмотрите, как указан Учет времени у оклада и так же сделайте.
---
о, точно, спасибо. и как сам не догадался
Удивительно сложная схема взаимосвязи:
База на 8, из которой берутся данные, коннектится к файловой базе на 1С 8 посредством веб-сервиса, в веб-сервис передаётся параметр в виде массива в, в модуле веб-сервиса, на стороне файловой базы, эти данные пишутся в файл,

Далее через КОМ происходит подключение к 1С 7.7. открывается внешняя обработка, которая файл с данными прочитывает и записывает в базу. После этого происходит аварийное завершение 1С 7.7, так как при попытке зайти в базу после выгрузки, появляется окно о необходимости проиндексировать таблицы.

Однако, при локальном взаимодействии между базой источника и локально установленной базе 1С 7.7. краша не происходить и всё корректно отрабатывает.

Вопрос, как этого избежать или предложения производить обмен по-другому?

Ограничения:
- В базе 1С 7.7. код дописать нельзя.
- Подключиться через КОМ из базы источника данных нельзя (сервак линукс)
---
спасибо, пытался, но помогло только вот это

```1c
    ПутьФайлаАварийногоВыхода=sBase+"\"+"1SUSERS.DBF";
    ФайлАварийногоВыхода=Новый XBase;
    ФайлАварийногоВыхода.ОткрытьФайл(ПутьФайлаАварийногоВыхода, , ложь);
    //Файл удастся открыть только если с ней никто не работает
    Если ФайлАварийногоВыхода.Открыта() Тогда
    ФайлАварийногоВыхода.ОчиститьФайл();
    ФайлАварийногоВыхода.Сжать();
    ФайлАварийногоВыхода.ЗакрытьФайл();
    КонецЕсли;
```
---
а как происходит закрытие внешнего отчета на 1с 7.7?
---
Скорее всего стоит в процедуре ПриОткрытии() есть форма. закрыть(), а потом ЗавершитьРаботуСистемы().т.е. форма еще не закрылась, т.к. она срабатывает потом, а система уже пытается отработать закрытие.
---
спасибо, пытался, но помогло только вот это

```1c
    ПутьФайлаАварийногоВыхода=sBase+"\"+"1SUSERS.DBF";
    ФайлАварийногоВыхода=Новый XBase;
    ФайлАварийногоВыхода.ОткрытьФайл(ПутьФайлаАварийногоВыхода, , ложь);
    //Файл удастся открыть только если с ней никто не работает
    Если ФайлАварийногоВыхода.Открыта() Тогда
    ФайлАварийногоВыхода.ОчиститьФайл();
    ФайлАварийногоВыхода.Сжать();
    ФайлАварийногоВыхода.ЗакрытьФайл();
    КонецЕсли;
```
---
Я бы немного доработал

```1c
    ПутьФайлаАварийногоВыхода=sBase+"\"+"1SUSERS.DBF";
    ФайлАварийногоВыхода=Новый XBase;
    Попытка
    ФайлАварийногоВыхода.ОткрытьФайл(ПутьФайлаАварийногоВыхода, , ложь);
    //Файл удастся открыть только если с ней никто не работает
    Если ФайлАварийногоВыхода.Открыта() Тогда
    ФайлАварийногоВыхода.ОчиститьФайл();
    ФайлАварийногоВыхода.Сжать();
    ФайлАварийногоВыхода.ЗакрытьФайл();
    КонецЕсли;
    Исключение
    Сообщить("Кто-то работает в базе");
    КонецПопытки
```
---
Идея интересная. попробую применить у себя. У меня есть сервис база. обслуживающая процессы. Иногда натыкается на монопольный режим, не мог придумать как поймать это. Поюзаю в боевом режиме. О результатах расскажу..
отчет на СКД формируется за неделю. нужно сделать удобоваримый выбор периода.
---
Решил созданием формы и передачей периода в компоновщик настроек.

```1c
    ЭтотОбъект.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаН",ЭтотОбъект.ДатаНачалаНедели);
    ЭтотОбъект.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаО",КонецНедели(ЭтотОбъект.ДатаНачалаНедели));
```
---
опишите ТЗ на удобоваримый выбор периода и чем он должен отличаться от стандартного?
---
чтобы только была 1 неделя ни больше, ни меньше.
---
Хм... а что не получается?
---
так пропишите формулу вычисления начального периода по конечному за минус неделя и не показывайте пользователю. Или наоборот, в зависимости что брать за основу.
---
Ну это увы не описание, неделя может высчитываться на момент формирования отчета и тут в принципе нет проблем, а может указываться пользователем, тут уже на ваше усмотрение, можно сделать общую форму на основе ВыбораСтандартногоПериода только с периодом неделя, или воспользоваться типовой с выбором дня и рассчитывать даты через Стандартный Период.
---
Решил созданием формы и передачей периода в компоновщик настроек.

```1c
    ЭтотОбъект.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаН",ЭтотОбъект.ДатаНачалаНедели);
    ЭтотОбъект.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаО",КонецНедели(ЭтотОбъект.ДатаНачалаНедели));
```
Бух 3.0.71.89 отчеты Руководству - Задолженность поставщикам.
По контрагенту висит долг и предоплата на одинаковую сумму т.е. бухгалтера промахнулись (у контрагента два договора) указывая правильный договор.
Ошибка с 2017 года.

Чтобы не исправлять закрытый период, можно ли так её исправлять (к чему приведет в учете ?):

на дату 31.12.2018 посмотреть долг и предоплату поставщика.
И создать два технический документа (не настоящих)
Поступление на расчетный счет, с правильным договором
Списание с расчетного счета с правильным договором
?
Или только править все документы с 2017 года?

В 2019 поправить каждый неправильный документ (исправить договор).
---
Есть же специальный документ для этого - корректировка долга.
---
Есть же специальный документ для этого - корректировка долга.
---
Спасибо за правильный и быстрый ответ!
8.2 УТ 10.3
Подскажите, возможно ли как-то посмотреть, проведен ли документ "Реализация товаров и услуг" на основании заказа?
---
Можно.
В табличной части "Товары" документа "Реализация товаров и услуг" есть реквизит "Заказ покупателя".
Если реализация вводится на основании него, то туда заполняется ссылка на документ-основание.
На форму он тоже выведен.
---
Откройте структуру подчиненности и посмотрите.
В заказе есть кнопочка АНАЛИЗ. Там вообще видно, что отгружено а что нет, что в резерве.
---
Можно.
В табличной части "Товары" документа "Реализация товаров и услуг" есть реквизит "Заказ покупателя".
Если реализация вводится на основании него, то туда заполняется ссылка на документ-основание.
На форму он тоже выведен.
---
Спасибо!
Добрый день.
Задача: Вычесть из даты указанное количество месяцев.

```1c
    ВЫБОР
    КОГДА ВрПеремещение.СрокПеремещение ЕСТЬ NULL
    ТОГДА ВрПередача.СрокПередача
    ИНАЧЕ ВрПеремещение.СрокПеремещение
    КОНЕЦ КАК СрокЭксплуатации
    ДОБАВИТЬКДАТЕ(&Дата, МЕСЯЦ, СрокЭксплуатации*(-1)) КАК ОстатокСрока
```

Получаю ошибку:

```1c
    Поле не найдено "СрокЭксплуатации"
    ДОБАВИТЬКДАТЕ(&Дата, МЕСЯЦ, <<?>>СрокЭксплуатации*(-1)) КАК ОстатокСрока
```

Подскажите пожалуйста, как сделать правильно?
---
нельзя в поле ссылаться на другое поле. Запрос выполняется сразу и может выбирать поля только из источника (таблиц).
Если хотите использовать поле, то вместо самого поля подставляете весь код получения этого поля.

```1c
    ВЫБОР
    КОГДА ВрПеремещение.СрокПеремещение ЕСТЬ NULL
    ТОГДА ВрПередача.СрокПередача
    ИНАЧЕ ВрПеремещение.СрокПеремещение
    КОНЕЦ КАК СрокЭксплуатации
    ДОБАВИТЬКДАТЕ(&Дата, МЕСЯЦ, (ВЫБОР
    КОГДА ВрПеремещение.СрокПеремещение ЕСТЬ NULL
    ТОГДА ВрПередача.СрокПередача
    ИНАЧЕ ВрПеремещение.СрокПеремещение
    КОНЕЦ)*(-1)) КАК ОстатокСрока
```

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

```1c
    ВЫБОР
    КОГДА ВрПеремещение.СрокПеремещение ЕСТЬ NULL
    ТОГДА ВрПередача.СрокПередача
    ИНАЧЕ ВрПеремещение.СрокПеремещение
    КОНЕЦ КАК СрокЭксплуатации
    ДОБАВИТЬКДАТЕ(&Дата, МЕСЯЦ, (ВЫБОР
    КОГДА ВрПеремещение.СрокПеремещение ЕСТЬ NULL
    ТОГДА ВрПередача.СрокПередача
    ИНАЧЕ ВрПеремещение.СрокПеремещение
    КОНЕЦ)*(-1)) КАК ОстатокСрока
```

Или предварительно поместить запрос с первым полем во временную таблицу и потом выбирать это поле из временной таблицы.
Доброго времени!

Есть две таблицы: Таб1 (Колонка1 ..... Колонка31) и Таб2 (Колонка1.....Колонка15) либо Таб2 (Колонка15.....Колонка31).

Необходимо в зависимости от условия, в Таб1 подменить значения колонок 1....15 либо 15...31.

Как это сделать в запросе? или лучше тупо перебором?
---
Почитайте про ЗаполнитьЗначенияСвойств();

Можно указать какие свойства (у Вас названия колонок) заполнять, или наоборот какие исключать.
---
собираем все варианты в одну таблицу

```1c
    Выбрать
    1 КАК НомерТ,
    Т1.Поле1 КАК Поле1,
    ...
    Т1.Поле15 КАК Поле15 ,
    NULL КАК Поле16,
    ...
    NULL КАК Поле31
    ПОМЕСТИТЬ ВтНаперстки

    Из &T1 КАК Т1

    ОБЪЕДИНИТЬ ВСЕ

    Выбрать
    2 КАК НомерТ,
    Т2.Поле1 КАК Поле1,
    ...
    Т2.Поле15 КАК Поле15 ,
    NULL КАК Поле16,
    ...
    NULL КАК Поле31

    Из &T2 КАК Т2

    ОБЪЕДИНИТЬ ВСЕ

    Выбрать
    3 КАК НомерТ,
    NULL КАК Поле1,
    ...
    Т3.Поле15 КАК Поле15 ,
    Т3.Поле16 КАК Поле16,
    ....
    Т3.Поле31 КАК Поле31

    Из &T3 КАК Т3
```

и кручу, верчу - не запутать хочу
---
Почитайте про ЗаполнитьЗначенияСвойств();

Можно указать какие свойства (у Вас названия колонок) заполнять, или наоборот какие исключать.
---
собираем все варианты в одну таблицу

```1c
    Выбрать
    1 КАК НомерТ,
    Т1.Поле1 КАК Поле1,
    ...
    Т1.Поле15 КАК Поле15 ,
    NULL КАК Поле16,
    ...
    NULL КАК Поле31
    ПОМЕСТИТЬ ВтНаперстки

    Из &T1 КАК Т1

    ОБЪЕДИНИТЬ ВСЕ

    Выбрать
    2 КАК НомерТ,
    Т2.Поле1 КАК Поле1,
    ...
    Т2.Поле15 КАК Поле15 ,
    NULL КАК Поле16,
    ...
    NULL КАК Поле31

    Из &T2 КАК Т2

    ОБЪЕДИНИТЬ ВСЕ

    Выбрать
    3 КАК НомерТ,
    NULL КАК Поле1,
    ...
    Т3.Поле15 КАК Поле15 ,
    Т3.Поле16 КАК Поле16,
    ....
    Т3.Поле31 КАК Поле31

    Из &T3 КАК Т3
```

и кручу, верчу - не запутать хочу
---
С ЗУПом в РСБУ только так, не накрутишь не поешь )))))))
Столкнулся с проблемой при использовании РАЗНОСТЬДАТ в запросе.

```1c
    ВЫБРАТЬ РАЗНОСТЬДАТ(&Д1, &Д2, ГОД)
```

Д1=01.12.1973
Д2=25.07.2019

На выходе получается 46, а должно быть 45.

Вот здесь можно проверить: Калькулятор дней
---
Решение:

```1c
    ВЫБРАТЬ РАЗНОСТЬДАТ(&Д1, &Д2, ГОД) - ВЫБОР
    КОГДА ДЕНЬГОДА(&Д1) > ДЕНЬГОДА(&Д2) ТОГДА 1
    ИНАЧЕ 0
    КОНЕЦ
```
---
В качестве третьего параметра можно использовать следующие значения: Секунда, Минута, Час, День, Месяц, Квартал, Год. При расчете результата функция игнорирует единицы измерения, которые меньше, чем указанная в данном параметре единица.
Т.е. даты будут такие:
Д1=01.01.1973
Д2=01.01.2019
Разность будет равно именно 46.
---
а должно быть

(1)Не должно, разность дат работает именно так. Считайте в днях, а дальше уже сами определяйтесь: по среднему, частому или високосному количеству, что для вас есть год.
---
Решение:

```1c
    ВЫБРАТЬ РАЗНОСТЬДАТ(&Д1, &Д2, ГОД) - ВЫБОР
    КОГДА ДЕНЬГОДА(&Д1) > ДЕНЬГОДА(&Д2) ТОГДА 1
    ИНАЧЕ 0
    КОНЕЦ
```
Есть внешняя печатная форма для зуп 3.1, шаблон на word заполняется данными из 1с.
Все работает замечательно.
Но надо, чтобы данные заполнялись в вордовском документе курсивом. Как это сделать? Подскажите, пожалуйста.
---
В самом шаблоне поменять. Где параметр заполняется.
---
В самом шаблоне поменять. Где параметр заполняется.
---
спасибо.