arefaste/1C_Forums huggingface dataset:
Здравствуйте,подскажите как сделать проверку на группу??. К примеру:
Есть ананас, он в группе - фрукты.
Сделал обработку которая программно создает номенклатуру из екселя, есть условие при котором он проверяет, если есть уже такая номенклатура(ананас, то он ее не создает и все красиво). Но если взять другой прайс, там есть точно такая же группа - Фрукты и товар Апельсин, он мне создает дополнительную группу - фрукты.

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

Тут у меня условие на то что если стр.Колонка01 заполнена,а стр.Колонка02 нет( это цена) у группы нет колонки02, то он ее создает, не пойму как эту проверку на группу реализовать.
---
Перед созданием группы нужно сделать проверку, есть ли такая группа в справочнике

```1c
    "ВЫБРАТЬ
    | НоменклатураПоставщиков.Ссылка КАК Ссылка
    |ИЗ
    | Справочник.НоменклатураПоставщиков КАК НоменклатураПоставщиков
    |ГДЕ
    | НоменклатураПоставщиков.ЭтоГруппа = ИСТИНА
    | И НоменклатураПоставщиков.Наименование = &Наименование"
```
---
Перед созданием группы нужно сделать проверку, есть ли такая группа в справочнике

```1c
    "ВЫБРАТЬ
    | НоменклатураПоставщиков.Ссылка КАК Ссылка
    |ИЗ
    | Справочник.НоменклатураПоставщиков КАК НоменклатураПоставщиков
    |ГДЕ
    | НоменклатураПоставщиков.ЭтоГруппа = ИСТИНА
    | И НоменклатураПоставщиков.Наименование = &Наименование"
```
---
щас попробую.
---
Да, спасибо))
Доброго времени. Вопрос скорее всего глупый, но не могу понять как.
Сегодня впервые довелось поработать с хранилищем конфигурации. Добавил несколько новых объектов. Поместил в хранилище. Решил создать подчиненную подсистему существующей подсистемы, чтобы поместить эти объекты и не получается. Поле просто не активно. Пробовал захватывать и корень конфигурации и саму подсистему - бесполезно. Новую подсистему дает создать.
Посвятите безграмотного, как можно все-таки добавить подчиненную подсистему?
---
подсистема типовая ? На поддержке ?
Тогда надо настроить поддержку для нее
---
подсистема типовая ? На поддержке ?
Тогда надо настроить поддержку для нее
---
Типовая. На поддержке.
---
Здравствуйте, при захвате родительской подсистемы появляется возможность добавить подчиненную. Сам только что проверил на 8.3.12.1440. Попробуйте переподключиться к хранилищу.
---
(4) это напрямую не связано с хранилищем. Нужно разрешить редактировать типовую.
---
А это возможно сделать из хранилища, или только админ на конфигурации может сделать?
я имею ввиду включить редактирование поддержки.
---
если из этого предложения убрать "хранилище", то как будет? Вот тоже самое, только сверху еще и хранилище.
---
Уже вижу, что нет. В общем все спасибо, теперь начинаю понимать, как все это работает.
---
захватываешь корень,
идешь в конфигурация - поддержка, настройка поддержки.
находишь подсистему свою, и включаешь возможность изменения с сохранением поддержки.

У самого корня конфигурации тоже должна возможность изменения стоять.
После этого можно захватывать подсистему, и добавлять в нее подчиненную
Ребята, всем привет.

Кто знает подскажите что можно тут поделать.

Вчера пообщался с товарищем (опытным 1с-ником), но не показывал ему ещё этот отчёт. Так он сказал что отчёт нельзя строить запросом по документам, точнее это не совсем корректно и возможно что это и есть причина создавшейся ситуации с отборами.

Собственно лирическое отступление заканчиваю и перехожу прямо к делу.

Есть у нас замечательная конфигурация в ERP 2.4 на работе и в ней подрядная организация сделала доработку, связанную с врачами и с договорами. Создаются документы договоров и записываются, а затем по ним строится отчёт.

При попытке сделать отбор по реквизиту КонецДействия и ПометкаУдаления отчёт стал выводить некорректные данные.

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

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

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

Из-за того, что отбор по пометке удаления выполнялся раньше чем отбор по другому реквизиту в отчет попадали ненужные поля.

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

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

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

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

Из-за того, что отбор по пометке удаления выполнялся раньше чем отбор по другому реквизиту в отчет попадали ненужные поля.

Вот скриншот правильной настройки отборов отчета:
Формирую текст запроса в цикле. Для правильного формирования мне нужно заранее знать, является ли реквизит документа (или каталога, или ТЧ того или иного, неважно) типом План Видов Характеристик. Если в конфигураторе явно задать реквизиту тип "ПХВТакойТо", и проверить тот же реквизит на тип программно, то выдаст Описание типов, со всеми прописанными в Плане Характеристик типами, когда все что мне нужно, это знание, что вот этот реквизит имеет тип ПХВ, а в идеале и название Плана видов характеристик. Повторюсь, заранее я не знаю мой реквизит имеет просто ссылочный тип, составной тип или ПХВ, поэтому для правильного формирования запроса это мне и нужно узнать. С радостью привел бы код, но он уж совсем не информативен для поставленного вопроса.

Пытался так:
Метаданные.Документы.ДокТакойТО.ТабличныеЧасти.НазваниеТЧ.Реквизиты.НужныйРеквизитДляПРоверки.Тип

Возвращает Описание типов, а мне нужно получить "План видов характеристик такой - то".
---
Возвращает Описание типов
ОписаниеТипов.СодержитТип()

СодержитТип(<Тип>)
Параметры:

<Тип> (обязательный)

Тип: Тип.
Тип, вхождение которого проверяется.
Возвращаемое значение:

Тип: Булево.
Истина - указанный тип входит в используемые типы; Ложь - в противном случае.
Описание:

Определяет, входит ли указанный тип в используемые данным объектом типы.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Пример:

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

СодержитТип(<Тип>)
Параметры:

<Тип> (обязательный)

Тип: Тип.
Тип, вхождение которого проверяется.
Возвращаемое значение:

Тип: Булево.
Истина - указанный тип входит в используемые типы; Ложь - в противном случае.
Описание:

Определяет, входит ли указанный тип в используемые данным объектом типы.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Пример:

ПроверяемыйТип = Тип("Строка");
Если ДопустимыеТипы.СодержитТип(ПроверяемыйТип) Тогда
    Сообщить("Описание типов содержит тип " + ПроверяемыйТип);
Иначе
    Сообщить("Описание типов не содержит тип " + ПроверяемыйТип);
КонецЕсли;
в чем может быть проблема? Данные введены корректно, похожие позиции отображаются правильно
---
Решил проблему, банальная невнимательность. Если кто то тоже завязнет, вторая строчка в прайс листе формируется, если в справочнике "номенклатура" выставить флаг в истину "вести учет по доп. характеристикам"
---
В столбце 4 ? Руками сделай столбец шире.
---
такая ошибка возникает даже когда я вывожу без артикула прайс( 4 столбец это как раз артикул)
---
Решил проблему, банальная невнимательность. Если кто то тоже завязнет, вторая строчка в прайс листе формируется, если в справочнике "номенклатура" выставить флаг в истину "вести учет по доп. характеристикам"
Два документа:
 Калькуляция с реквизитом ДокументОснование тип ДокументСсылка.Расчет
 и Расчет с реквизитом ДокументОснование тип ДокументСсылка.Калькуляция

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

Как сохранить значение ссылку док калькуляции в реквизите ДокументОснование документа Расчет ?

код в модуле формы Калькуляция

```1c
    ////////////////////////////////ОТКРЫТЬ ФОРМУ ВЫБОРА 1С 8.3 ////////////////////////////////
    &НаКлиенте
    Процедура ВыбратьСуществующуюКалькуляцияНажатие(Команда)
    ПараметрыФормы = Новый Структура("РежимВыбора, ЗакрыватьПриВыборе", Истина, Истина);
    ОбработкаВыбора = Новый ОписаниеОповещения("ВыбратьЭлементКонец", ЭтаФорма,);

    ОткрытьФорму("Документ.Расчет.ФормаВыбора", ПараметрыФормы,
    ЭтаФорма, , , , ОбработкаВыбора);
    КонецПроцедуры

    &НаКлиенте
    Процедура ВыбратьЭлементКонец(Значение, ДопПараметры) Экспорт
    Если Значение = Неопределено Тогда
    Возврат;
    КонецЕсли;
    Объект.ДокументОснование = Значение;

    Модифицированность = Истина;
    УправлениеФормой(ЭтаФорма);

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

    ////////////////////////////////ОТКРЫТЬ ФОРМУ ВЫБОРА 1С 8.3 ////////////////////////////////
```
---
делаем процедурку &НаСервере или &НаСервереБезКонтекста
передаем в нее ссылку на документ основание, и ссылку на текущий документ (предварительно проверив есть ли она, или это вообще новый документ, не записанный в базу).
Далее по ссылке получаем объект.
Устанавливаем в него значение реквизита, и объект.Записать();

все
---
```1c
    &НаСервере
    //&НаКлиенте
    Процедура ВыбратьЭлементКонец(Значение, ДопПараметры) Экспорт
    Если Значение = Неопределено Тогда
    Возврат;
    КонецЕсли;
    Объект.ДокументОснование = Значение; // из док Калькуляция

    ИзменитьДокумент = Значение.ПолучитьОбъект();
    ИзменитьДокумент.ДокументОснование = Объект.Ссылка;
    ИзменитьДокумент.Записать();

    Модифицированность = Истина;
    УправлениеФормой(ЭтаФорма);

    КонецПроцедуры
```
---
делаем процедурку &НаСервере или &НаСервереБезКонтекста
передаем в нее ссылку на документ основание, и ссылку на текущий документ (предварительно проверив есть ли она, или это вообще новый документ, не записанный в базу).
Далее по ссылке получаем объект.
Устанавливаем в него значение реквизита, и объект.Записать();

все
---
```1c
    &НаСервере
    //&НаКлиенте
    Процедура ВыбратьЭлементКонец(Значение, ДопПараметры) Экспорт
    Если Значение = Неопределено Тогда
    Возврат;
    КонецЕсли;
    Объект.ДокументОснование = Значение; // из док Калькуляция

    ИзменитьДокумент = Значение.ПолучитьОбъект();
    ИзменитьДокумент.ДокументОснование = Объект.Ссылка;
    ИзменитьДокумент.Записать();

    Модифицированность = Истина;
    УправлениеФормой(ЭтаФорма);

    КонецПроцедуры
```
Из ДО подключаюсь к базе КИС по веб-сервису двумя методами, первый - получает необходимые данные, второй - редактирует данные. Мне необходимо в метод №2 добавить возожность, кроме редактирования, создания объектов.

Какие данные я передаю сейчас для редактирования объекта:
ГУИД/Имя объекта
Тип Объекта ("СправочникСсылка.Пользователи", например)
И таблицу параметров(Имя реквизита, значение рквизита, ГУИД, Тип значения реквизита)

Но теперь с помощью этого метода нужно так же создавать объекты.

```1c
    Если СозданиеОбъекта = Истина Тогда
    Попытка
    ОписаниеТипаСоздОбъекта = Новый ОписаниеТипов(Тип);
    Исключение
    Результат = Ложь;
    ТекстОшибки = ОписаниеОшибки();
    Ответ.Error = Результат;
    Ответ.DataError = ТекстОшибки;
    Возврат Ответ;
    КонецПопытки;
    ТипЗначения = ОписаниеТипаСоздОбъекта.ПривестиЗначение();
    МенеджерОбъекта = Общегоназначения.МенеджерОбъектаПоСсылке(ОписаниеТипаСоздОбъекта.ПривестиЗначение(ТипЗначения));
    Попытка
    СсылкаНаОбъект = МенеджерОбъекта.ПолучитьСсылку();
    Исключение
    Результат = Ложь;
    ТекстОшибки = ОписаниеОшибки();
    Ответ.Error = Результат;
    Ответ.DataError = ТекстОшибки;
    Возврат Ответ;
    КонецПопытки;
    КонецЕсли;
```

НО! В переменной "СсылкаНаОбъект " может быть как справочник, так и документ, отчет и т.д. У каждого из этих объектов свои методы создания. Например, у документа будет СсылкаНаОбъекта.СоздатьДокумент(), у справочника - СсылкаНаОбъект.СоздатьЭлемент() и т.д. И вот как мне различать?? есть какой-то метод??
---
Нашла метод СтрСравнить(). Сделала так:

```1c
    Позиция = СтрНайти(СсылкаНаОбъект,".");
    нСсылка = Лев(СсылкаНаОбъект,Позиция-1);

    Если СтрСравнить(Строка(СсылкаНаОбъект),"СправочникСсылка") Тогда
    СсылкаНаОбъект.СоздатьЭлемент();
    ИначеЕсли СтрСравнить(Строка(СсылкаНаОбъект),"ДокументСсылка") Тогда
    СсылкаНаОбъект.СоздатьДокумент();
    КонецЕсли;
```
---
Нашла метод СтрСравнить(). Сделала так:

```1c
    Позиция = СтрНайти(СсылкаНаОбъект,".");
    нСсылка = Лев(СсылкаНаОбъект,Позиция-1);

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

```1c
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | ЗаказНаПроизводство.РесурсПредприятия КАК Сотрудник,
    | ЗаказНаПроизводство.Мощность КАК ПроцентПремии
    |ИЗ
    | Документ.ЗаказНаПроизводство.РесурсыПредприятия КАК ЗаказНаПроизводство";
    Объект.НачислениеПремии.Загрузить(Запрос.Выполнить().Выгрузить());
```

Но вытаскивает данные из всех документов этого вида. Подскажите пожалуйста как ограничить данные текущим документом.
---
Как-то так:

```1c
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | ЗаказНаПроизводство.РесурсПредприятия КАК Сотрудник,
    | ЗаказНаПроизводство.Мощность КАК ПроцентПремии
    |ИЗ
    | Документ.ЗаказНаПроизводство.РесурсыПредприятия КАК ЗаказНаПроизводство
    |ГДЕ
    | ЗаказНаПроизводство = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка", СсылкаНаДокумент);
    Объект.НачислениеПремии.Загрузить(Запрос.Выполнить().Выгрузить());
```
---
как ограничить данные текущим документом.
(4) Да вродь написано было :-)
---
Как-то так:

```1c
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | ЗаказНаПроизводство.РесурсПредприятия КАК Сотрудник,
    | ЗаказНаПроизводство.Мощность КАК ПроцентПремии
    |ИЗ
    | Документ.ЗаказНаПроизводство.РесурсыПредприятия КАК ЗаказНаПроизводство
    |ГДЕ
    | ЗаказНаПроизводство = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка", СсылкаНаДокумент);
    Объект.НачислениеПремии.Загрузить(Запрос.Выполнить().Выгрузить());
```
---
СсылкаНаДокумент Может тогда лучше сразу Объект.Ссылка;
---
Мы же не знаем контекста исполнения кода, модуль объекта или формы, управляемая или неуправляемая. Или вообще какая-то внешняя обработка.
---
Все увидел. В коде есть Объект. Да можно сразу "Объект.Ссылка".
---
В зависимости от того где этот запрос выполняется, проверить на то что ссылка уже есть:
Если Не Объект.Ссылка.Пустая() Тогда

КонецЕсли;

иначе получим ничего, а возможно имеет смысл получить данные именно объекта?
---
Спасибо огромное за помощь, смог сделать только немного поменяв код:

```1c
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | ЗаказНаПроизводствоРесурсыПредприятия.РесурсПредприятия КАК Сотрудник,
    | ЗаказНаПроизводствоРесурсыПредприятия.Мощность КАК ПроцентПремии
    |ИЗ
    | Документ.ЗаказНаПроизводство.РесурсыПредприятия КАК ЗаказНаПроизводствоРесурсыПредприятия
    |ГДЕ
    | ЗаказНаПроизводствоРесурсыПредприятия.Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
    Объект.НачислениеПремии.Загрузить(Запрос.Выполнить().Выгрузить());
```

Пробовал так же сразу через
```1c
    ЗаказНаПроизводствоРесурсыПредприятия.Ссылка = Объект.Ссылка
```
 Но выдавало ошибки.
---
Строка "ЗаказНаПроизводствоРесурсыПредприятия.Ссылка = Объект.Ссылка" не имеет смысла. Если использовать в тексте запроса, то "Объект.Ссылка" применяться не может, должен быть, например, параметр "&Ссылка". Если использовать эту строку в коде, то "ЗаказНаПроизводствоРесурсыПредприятия.Ссылка" не отработает, в коде нету переменной "ЗаказНаПроизводствоРесурсыПредприятия".
Здравствуйте.
Вопрос на 5 минут на обычных формах, а на управляемых - никак не могу решить:((

Всего то нужно вывести колонку "код" в форму подбора.

В конфигураторе на форме колонка есть, но в пользовательском режиме отстутсвует.

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

Появляется колонка только в случае, если закомментировать ПодборТоваровСервер.ПриСозданииФормыПодбораНаСервере(ЭтаФорма);

Да, в этой процедуре запрос видоизменяется, но даже из нее он выходит с колонкой "код".

Видимость колонок прослеживаю конфигуратором до конца этой процедуры - "истина".

Предполагаю что собака порылась в КомпоновщикНастроек, но не могу понять где именно
---
в общем в кэше видимо было было дело... больше не знаю на что грешить. 3 дня мучений, потом почистил кэш и начал все сначала и получилось - просто вытащил и все заработало. вопрос закрыт
---
права полные
---
в общем в кэше видимо было было дело... больше не знаю на что грешить. 3 дня мучений, потом почистил кэш и начал все сначала и получилось - просто вытащил и все заработало. вопрос закрыт
Всем привет.

Помогите пожалуйста решить задачу. Никак не удается написать код с требуемым результатом((

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

Буду благодарен, даже за подсказку))

Спасибо.
---
```1c
    Слово = ";
    Если ВвестиЗначение(Слово, "Введите некоторое слово") Тогда
    Длина = СтрДлина(Слово);
    Для Сч = 0 По Длина-1 Цикл
    Сообщить(Прав(Слово, Длина-Сч) + " " + Лев(Слово, Длина-Сч));
    КонецЦикла;
    КонецЕсли;
```
---
Пробел между словами можешь убрать, если не нужен.
---
```1c
    Слово = ";
    Если ВвестиЗначение(Слово, "Введите некоторое слово") Тогда
    Длина = СтрДлина(Слово);
    Для Сч = 0 По Длина-1 Цикл
    Сообщить(Прав(Слово, Длина-Сч) + " " + Лев(Слово, Длина-Сч));
    КонецЦикла;
    КонецЕсли;
```
---
второе слово уменьшайте
слово на одну букву справа, пока не останется одна буква. Откуда взялось второе слово?
---
Второго слова по сути нету, это отражение единственного введенного слова.

С помощью метода
```1c
    Сообщить(Прав(Слово, Длина-Сч) + " " + Лев(Слово, Длина-Сч));
```

программа показывает одно слово два раза, чтобы отобразить уменьшение и справа и слева, одновременно

Я так понял))))
---
Пробел между словами можешь убрать, если не нужен.
---
Спасибо. Реально выручил
---
Есть еще одна задачка, которую я не смог самостоятельно решить.

Выведите 12 месяцев используя цикл Для......Цикл и функцию Формат.
---
Получилось)))

Для к=1 по 12 цикл
Сообщить(Формат(Дата(2009, к, 1), "ДФ=ММММ"));
---
а как решить данную задачу...

Задайте интерактивно две даты. Первая дата должна быть ранее второй, если это не так,
то сообщайте об этом пользователю. Выведите все даты с
первой по последнюю, кроме субботы и воскресенья
---
```1c
    ПерваяДата = '00010101';
    ВтораяДата = '00010101';

    Если ВвестиДату(ПерваяДата, "Введите первую дату", ЧастиДаты.Дата)
    И ВвестиДату(ВтораяДата, "Введите вторую дату", ЧастиДаты.Дата) Тогда

    Если ПерваяДата > ВтораяДата Тогда
    Сообщить("Первая дата больше второй даты!");
    Иначе
    ТекДата = НачалоДня(ПерваяДата) - 86400;
    ТекДата = ПерваяДата - 86400;

    Пока ТекДата<ВтораяДата Цикл
    ТекДата = ТекДата + 86400;

    Если ДеньНедели(ТекДата) = 6
    ИЛИ ДеньНедели(ТекДата) = 7 Тогда
    Продолжить;
    КонецЕсли;

    Сообщить(ТекДата);
    КонецЦикла;
    КонецЕсли;
    КонецЕсли;
```
---
Доброе. Есть программисты, желающие помочь? Конфигурация УТ 10.3. Добавить пару кнопок в РМК и так, по мелочи..
Здравствуйте!

Необходимо собрать остатки из реальной таблицы. Правильно ли у меня получилось?

```1c
    |ВЫБРАТЬ
    | ВТ2.Сотрудник,
    | ВТ2.ДатаНачалаОтпуска,
    | СУММА(ВЫБОР
    | КОГДА РасчетыСПерсоналом.Сумма ЕСТЬ NULL
    | ТОГДА 0
    | КОГДА РасчетыСПерсоналом.ВидДвижения =
    | ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
    | ТОГДА -РасчетыСПерсоналом.Сумма
    | ИНАЧЕ РасчетыСПерсоналом.Сумма
    | КОНЕЦ) КАК Сумма
    |ИЗ
    | ВТ2 КАК ВТ2
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСПерсоналом КАК
    | РасчетыСПерсоналом
    | ПО ВТ2.Сотрудник = РасчетыСПерсоналом.Сотрудник
    | И (ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ВТ2.ДатаНачалаОтпуска, МЕСЯЦ), ГОД,
    | -1) <= РасчетыСПерсоналом.ПериодРегистрации)
    | И (НАЧАЛОПЕРИОДА(ВТ2.ДатаНачалаОтпуска, МЕСЯЦ) >=
    | РасчетыСПерсоналом.ПериодРегистрации)
    | И (РасчетыСПерсоналом.Активность)
    |
    |СГРУППИРОВАТЬ ПО
    | ВТ2.ДатаНачалаОтпуска,
    | ВТ2.Сотрудник
```
---
Да
---
Да
---
Спасибо большое!
Всем привет. Программно вывожу на табличный документ рисунок, а он обрезается как на скриншоте (правая и нижняя стороны).

В чём может быть дело?
---
Реквизит с координатами имел длину 2.
---
Размер картинки какой установлен ?
---
Тут такое дело... Это всё состоит из прямых и у всех разные размеры.
---
Как это состоит из прямых ? Сколько же там таких рисунков ?)
Какой-то обработкой рисуется чтоль
---
Да, обработкой. Их неприлично много. 4354, но мне кажется что проблема не в этом.
---
тогда в коде разбираться только
---
В коде всё красиво. Координаты в коде не соответствуют изображению. Они выходят за рамки.
---
Сместил координаты чтобы было обрезано только с двух сторон. Откуда берутся эти невидимые стены?
---
Реквизит с координатами имел длину 2.